From e655c061333b0aee6433a82b8b9a298cf4a83695 Mon Sep 17 00:00:00 2001 From: Akhmed Ibragimov Date: Wed, 5 Jun 2024 19:30:32 +0300 Subject: [PATCH] Create API methods for manipulating with block elements (#135) * create API methods for manipulating with block elements * get Element implemnted * finish API of elements * add new API object Elements and Blocks * remove elements API from editor.blocks * Publish - @yoopta/editor@4.5.0 - @yoopta/accordion@4.5.0 - @yoopta/blockquote@4.5.0 - @yoopta/callout@4.5.0 - @yoopta/code@4.5.0 - @yoopta/embed@4.5.0 - @yoopta/file@4.5.0 - @yoopta/headings@4.5.0 - @yoopta/image@4.5.0 - @yoopta/link@4.5.0 - @yoopta/lists@4.5.0 - @yoopta/paragraph@4.5.0 - @yoopta/video@4.5.0 - @yoopta/action-menu-list@4.5.0 - @yoopta/link-tool@4.5.0 - @yoopta/toolbar@4.5.0 * add carousel block options --- package.json | 2 +- packages/core/editor/package.json | 5 +- .../core/editor/src/UI/BlockOptions/utils.ts | 3 +- .../editor/src/components/Editor/Editor.tsx | 1 + .../editor/src/components/Editor/utils.ts | 20 +- .../{transforms => blocks}/createBlock.ts | 34 +- .../decreaseBlockDepth.ts | 0 .../{transforms => blocks}/deleteBlock.ts | 12 +- .../{transforms => blocks}/duplicateBlock.tsx | 0 .../{transforms => blocks}/focusBlock.ts | 0 .../editor/{transforms => blocks}/getBlock.ts | 0 .../increaseBlockDepth.ts | 0 .../core/editor/src/editor/blocks/index.ts | 27 + .../{transforms => blocks}/insertBlock.ts | 0 .../{transforms => blocks}/insertBlocks.ts | 0 .../{transforms => blocks}/moveBlock.ts | 0 .../{transforms => blocks}/splitBlock.ts | 0 .../{transforms => blocks}/toggleBlock.ts | 2 +- .../{transforms => blocks}/updateBlock.ts | 5 +- .../src/editor/elements/createElement.ts | 96 + .../src/editor/elements/deleteElement.ts | 33 + .../editor/src/editor/elements/getElement.ts | 18 + .../src/editor/elements/getElementChildren.ts | 16 + .../src/editor/elements/getElementEntry.ts | 43 + .../src/editor/elements/getElementPath.ts | 24 + .../editor/elements/getParentElementPath.ts | 24 + .../core/editor/src/editor/elements/index.tsx | 21 + .../src/editor/elements/isElementEmpty.ts | 37 + .../src/editor/elements/updateElement.ts | 53 + packages/core/editor/src/editor/index.tsx | 22 +- .../src/editor/transforms/getBlockElement.ts | 1 - .../editor/transforms/updateBlockElement.ts | 45 - packages/core/editor/src/editor/types.ts | 15 +- .../core/editor/src/handlers/onKeyDown.ts | 52 +- packages/core/editor/src/index.ts | 3 + .../src/plugins/SlateEditorComponent.tsx | 35 +- .../src/plugins/extenstions/withInlines.ts | 2 +- packages/core/editor/src/plugins/types.ts | 2 +- .../core/editor/src/utils/blockElements.ts | 50 +- .../core/editor/src/utils/editorBuilders.ts | 24 +- packages/core/exports/package.json | 2 +- .../yoopta-chatGPT-assistant/package.json | 2 +- packages/core/yoopta-renderer/package.json | 2 +- packages/development/package.json | 3 +- .../customPlugins/Accordion/Accordion.tsx | 55 + packages/development/src/pages/dev/index.tsx | 473 ++-- packages/marks/package.json | 4 +- .../marks/rollup.config-1717602759865.cjs | 117 + packages/plugins/accordion/README.md | 11 + packages/plugins/accordion/package.json | 41 + packages/plugins/accordion/rollup.config.js | 10 + packages/plugins/accordion/src/index.ts | 12 + .../plugins/accordion/src/plugin/index.tsx | 140 ++ packages/plugins/accordion/src/react-svg.d.ts | 6 + .../src/renders/AccordionItemContent.tsx | 25 + .../src/renders/AccordionItemHeading.tsx | 125 + .../accordion/src/renders/AccordionList.tsx | 7 + .../src/renders/AccordionListItem.tsx | 11 + packages/plugins/accordion/src/styles.css | 17 + packages/plugins/accordion/src/types.ts | 13 + packages/plugins/accordion/tsconfig.json | 14 + packages/plugins/blockquote/package.json | 7 +- .../plugins/blockquote/src/ui/Blockquote.tsx | 7 +- packages/plugins/callout/package.json | 7 +- packages/plugins/callout/src/ui/Callout.tsx | 7 +- .../callout/src/ui/CalloutBlockOptions.tsx | 9 +- packages/plugins/code/package.json | 7 +- packages/plugins/code/src/ui/Code.tsx | 2 +- packages/plugins/embed/package.json | 7 +- .../plugins/embed/src/providers/Twitter.tsx | 13 +- packages/plugins/embed/src/ui/Embed.tsx | 16 +- .../plugins/embed/src/ui/EmbedComponent.tsx | 4 +- .../embed/src/ui/EmbedLinkUploader.tsx | 9 +- packages/plugins/file/package.json | 7 +- packages/plugins/file/src/ui/File.tsx | 1 - packages/plugins/file/src/ui/FileUploader.tsx | 15 +- packages/plugins/headings/package.json | 7 +- .../headings/src/plugin/HeadingOne.tsx | 9 +- .../headings/src/plugin/HeadingThree.tsx | 1 - .../headings/src/plugin/HeadingTwo.tsx | 9 +- packages/plugins/image/package.json | 5 +- .../plugins/image/src/ui/EmbedUploader.tsx | 9 +- .../plugins/image/src/ui/FileUploader.tsx | 17 +- packages/plugins/image/src/ui/Image.tsx | 9 +- .../image/src/ui/ImageBlockOptions.tsx | 17 +- packages/plugins/link/package.json | 7 +- packages/plugins/link/src/ui/LinkRender.tsx | 1 - packages/plugins/lists/package.json | 7 +- .../lists/src/elements/BulletedList.tsx | 7 +- .../lists/src/elements/NumberedList.tsx | 7 +- .../plugins/lists/src/elements/TodoList.tsx | 12 +- .../plugins/lists/src/events/onKeyDown.tsx | 3 +- packages/plugins/mention/package.json | 2 +- .../plugins/mention/src/ui/MentionRender.tsx | 3 +- packages/plugins/paragraph/package.json | 7 +- .../plugins/paragraph/src/ui/Paragraph.tsx | 7 +- packages/plugins/table/package.json | 2 +- .../plugins/table/src/components/Table.tsx | 2 +- .../table/src/components/TableCell.tsx | 1 - .../plugins/table/src/components/TableRow.tsx | 2 +- packages/plugins/video/package.json | 7 +- .../plugins/video/src/ui/EmbedUploader.tsx | 11 +- .../plugins/video/src/ui/FileUploader.tsx | 15 +- packages/plugins/video/src/ui/Video.tsx | 9 +- .../video/src/ui/VideoBlockOptions.tsx | 17 +- packages/tools/action-menu/package.json | 7 +- .../src/components/ActionMenuList.tsx | 6 +- .../components/DefaultActionMenuRender.tsx | 4 +- packages/tools/link-tool/package.json | 7 +- packages/tools/toolbar/package.json | 7 +- .../tools/toolbar/src/components/Toolbar.tsx | 4 +- .../tools/toolbar/src/components/utils.ts | 3 +- web/next-example/package.json | 35 +- .../examples/withBaseFullSetup/index.tsx | 4 +- .../examples/withBaseFullSetup/initValue.ts | 333 ++- .../components/CarouselBlockOptions.tsx | 59 + .../customPlugins/Carousel/index.tsx | 74 + .../Carousel/renders/Carousel.tsx | 34 + .../Carousel/renders/CarouselItem.tsx | 41 + .../renders/CarouselItemDescription.tsx | 11 + .../Carousel/renders/CarouselItemImage.tsx | 92 + .../Carousel/renders/CarouselItemTitle.tsx | 11 + .../customPlugins/Carousel/types.ts | 16 + .../customPlugins/Divider/index.tsx | 25 + .../customPlugins/Divider/renders/Divider.tsx | 12 + .../index.tsx} | 71 +- .../examples/withCustomPlugin/initValue.ts | 134 ++ web/next-example/src/components/ui/button.tsx | 47 + web/next-example/src/components/ui/card.tsx | 43 + .../src/components/ui/carousel.tsx | 224 ++ .../src/pages/examples/[example].tsx | 2 +- web/next-example/src/styles/globals.scss | 17 + web/next-example/yarn.lock | 2013 ++++++++--------- yarn.lock | 8 +- 134 files changed, 3736 insertions(+), 1755 deletions(-) rename packages/core/editor/src/editor/{transforms => blocks}/createBlock.ts (61%) rename packages/core/editor/src/editor/{transforms => blocks}/decreaseBlockDepth.ts (100%) rename packages/core/editor/src/editor/{transforms => blocks}/deleteBlock.ts (86%) rename packages/core/editor/src/editor/{transforms => blocks}/duplicateBlock.tsx (100%) rename packages/core/editor/src/editor/{transforms => blocks}/focusBlock.ts (100%) rename packages/core/editor/src/editor/{transforms => blocks}/getBlock.ts (100%) rename packages/core/editor/src/editor/{transforms => blocks}/increaseBlockDepth.ts (100%) create mode 100644 packages/core/editor/src/editor/blocks/index.ts rename packages/core/editor/src/editor/{transforms => blocks}/insertBlock.ts (100%) rename packages/core/editor/src/editor/{transforms => blocks}/insertBlocks.ts (100%) rename packages/core/editor/src/editor/{transforms => blocks}/moveBlock.ts (100%) rename packages/core/editor/src/editor/{transforms => blocks}/splitBlock.ts (100%) rename packages/core/editor/src/editor/{transforms => blocks}/toggleBlock.ts (95%) rename packages/core/editor/src/editor/{transforms => blocks}/updateBlock.ts (87%) create mode 100644 packages/core/editor/src/editor/elements/createElement.ts create mode 100644 packages/core/editor/src/editor/elements/deleteElement.ts create mode 100644 packages/core/editor/src/editor/elements/getElement.ts create mode 100644 packages/core/editor/src/editor/elements/getElementChildren.ts create mode 100644 packages/core/editor/src/editor/elements/getElementEntry.ts create mode 100644 packages/core/editor/src/editor/elements/getElementPath.ts create mode 100644 packages/core/editor/src/editor/elements/getParentElementPath.ts create mode 100644 packages/core/editor/src/editor/elements/index.tsx create mode 100644 packages/core/editor/src/editor/elements/isElementEmpty.ts create mode 100644 packages/core/editor/src/editor/elements/updateElement.ts delete mode 100644 packages/core/editor/src/editor/transforms/getBlockElement.ts delete mode 100644 packages/core/editor/src/editor/transforms/updateBlockElement.ts create mode 100644 packages/development/src/components/customPlugins/Accordion/Accordion.tsx create mode 100644 packages/marks/rollup.config-1717602759865.cjs create mode 100644 packages/plugins/accordion/README.md create mode 100644 packages/plugins/accordion/package.json create mode 100644 packages/plugins/accordion/rollup.config.js create mode 100644 packages/plugins/accordion/src/index.ts create mode 100644 packages/plugins/accordion/src/plugin/index.tsx create mode 100644 packages/plugins/accordion/src/react-svg.d.ts create mode 100644 packages/plugins/accordion/src/renders/AccordionItemContent.tsx create mode 100644 packages/plugins/accordion/src/renders/AccordionItemHeading.tsx create mode 100644 packages/plugins/accordion/src/renders/AccordionList.tsx create mode 100644 packages/plugins/accordion/src/renders/AccordionListItem.tsx create mode 100644 packages/plugins/accordion/src/styles.css create mode 100644 packages/plugins/accordion/src/types.ts create mode 100644 packages/plugins/accordion/tsconfig.json create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/components/CarouselBlockOptions.tsx create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/index.tsx create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/Carousel.tsx create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItem.tsx create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemDescription.tsx create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemImage.tsx create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemTitle.tsx create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/types.ts create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Divider/index.tsx create mode 100644 web/next-example/src/components/examples/withCustomPlugin/customPlugins/Divider/renders/Divider.tsx rename web/next-example/src/components/examples/{withCustomPlugin.tsx => withCustomPlugin/index.tsx} (69%) create mode 100644 web/next-example/src/components/examples/withCustomPlugin/initValue.ts create mode 100644 web/next-example/src/components/ui/button.tsx create mode 100644 web/next-example/src/components/ui/card.tsx create mode 100644 web/next-example/src/components/ui/carousel.tsx diff --git a/package.json b/package.json index bfcda100f..987c50057 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ ], "private": true, "scripts": { - "start": "yarn lerna run start --scope @yoopta/editor --scope @yoopta/paragraph --parallel --ignore development", + "start": "yarn lerna run start --parallel --ignore development", "build": "yarn clean && yarn lerna run build --parallel --ignore development", "clean": "find ./packages -type d -name dist ! -path './packages/development/*' -exec rm -rf {} +", "serve": "yarn lerna run dev --scope=development", diff --git a/packages/core/editor/package.json b/packages/core/editor/package.json index eefd806ab..33213fd04 100644 --- a/packages/core/editor/package.json +++ b/packages/core/editor/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/editor", - "version": "4.4.1", + "version": "4.5.0", "license": "MIT", "private": false, "main": "dist/index.js", @@ -66,5 +66,6 @@ "bugs": { "url": "https://github.com/Darginec05/Yoopta-Editor/issues" }, - "homepage": "https://github.com/Darginec05/Yoopta-Editor#readme" + "homepage": "https://github.com/Darginec05/Yoopta-Editor#readme", + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/core/editor/src/UI/BlockOptions/utils.ts b/packages/core/editor/src/UI/BlockOptions/utils.ts index d726fa3b6..5803dad9a 100644 --- a/packages/core/editor/src/UI/BlockOptions/utils.ts +++ b/packages/core/editor/src/UI/BlockOptions/utils.ts @@ -30,7 +30,8 @@ export function buildActionMenuRenderProps({ editor, view, onClose, mode = 'togg return items.map((action) => { const title = editor.blocks[action].options?.display?.title || action; const description = editor.blocks[action].options?.display?.description; - return { type: action, title, description }; + const icon = editor.blocks[action].options?.display?.icon; + return { type: action, title, description, icon }; }); }; diff --git a/packages/core/editor/src/components/Editor/Editor.tsx b/packages/core/editor/src/components/Editor/Editor.tsx index e9491fa47..15822193b 100644 --- a/packages/core/editor/src/components/Editor/Editor.tsx +++ b/packages/core/editor/src/components/Editor/Editor.tsx @@ -132,6 +132,7 @@ const Editor = ({ placeholder, marks, className, selectionBoxRoot, width, childr resetSelectedBlocks(); }; + // [TODO] - implement with @yoopta/exports const onCopy = (event: React.ClipboardEvent) => { // function escapeHtml(text) { // const map = { diff --git a/packages/core/editor/src/components/Editor/utils.ts b/packages/core/editor/src/components/Editor/utils.ts index c6ea67b68..53f04a10a 100644 --- a/packages/core/editor/src/components/Editor/utils.ts +++ b/packages/core/editor/src/components/Editor/utils.ts @@ -1,15 +1,17 @@ import { YooptaBlockData, SlateElement } from '../../editor/types'; import { generateId } from '../../utils/generateId'; -export const buildBlockElement = (element?: Partial): SlateElement => ({ - id: generateId(), - type: element?.type || 'paragraph', - children: element?.children || [{ text: '' }], - props: { - nodeType: 'block', - ...element?.props, - }, -}); +export const buildBlockElement = (element?: Partial): SlateElement => { + return { + id: generateId(), + type: element?.type || 'paragraph', + children: element?.children || [{ text: '' }], + props: { + nodeType: 'block', + ...element?.props, + }, + }; +}; export const buildBlockData = (block?: Partial): YooptaBlockData => ({ id: block?.id || generateId(), diff --git a/packages/core/editor/src/editor/transforms/createBlock.ts b/packages/core/editor/src/editor/blocks/createBlock.ts similarity index 61% rename from packages/core/editor/src/editor/transforms/createBlock.ts rename to packages/core/editor/src/editor/blocks/createBlock.ts index 0ac398088..ae4536e0f 100644 --- a/packages/core/editor/src/editor/transforms/createBlock.ts +++ b/packages/core/editor/src/editor/blocks/createBlock.ts @@ -1,11 +1,10 @@ import { createDraft, finishDraft } from 'immer'; -import { Element, Transforms } from 'slate'; -import { buildBlockData, buildBlockElement } from '../../components/Editor/utils'; -import { getRootBlockElementType } from '../../utils/blockElements'; +import { Transforms } from 'slate'; +import { buildBlockData } from '../../components/Editor/utils'; +import { buildBlockElementsStructure } from '../../utils/blockElements'; import { findPluginBlockBySelectionPath } from '../../utils/findPluginBlockBySelectionPath'; import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; -import { generateId } from '../../utils/generateId'; -import { YooEditor, YooptaEditorTransformOptions } from '../types'; +import { YooEditor, YooptaEditorTransformOptions, SlateElement, YooptaBlock } from '../types'; export type CreateBlockOptions = YooptaEditorTransformOptions & { deleteText?: boolean; @@ -21,23 +20,15 @@ export function createBlock(editor: YooEditor, type: string, options?: CreateBlo if (!slate || !slate.selection) return; const selectedBlock = editor.blocks[type]; - const rootBlockElementType = getRootBlockElementType(selectedBlock.elements); - const rootBlockElement = selectedBlock.elements[rootBlockElementType!]; + const elements = buildBlockElementsStructure(editor, type); - if (!rootBlockElement) return; + // Transforms.setNodes(slate, elements, { + // at: [0], + // match: (n) => Element.isElement(n), + // mode: 'highest', + // }); - const nodeProps = { nodeType: rootBlockElement.props?.nodeType || 'block', ...rootBlockElement.props }; - const elementNode = buildBlockElement({ - id: generateId(), - type: rootBlockElementType, - props: nodeProps, - }); - - Transforms.setNodes(slate, elementNode, { - at: [0, 0], - match: (n) => Element.isElement(n), - mode: 'highest', - }); + // Transforms.insertNodes(slate, elements, { at: slate.selection.anchor.path.slice(0, 1) }); if (options?.deleteText) Transforms.delete(slate, { at: [0, 0] }); @@ -48,9 +39,10 @@ export function createBlock(editor: YooEditor, type: string, options?: CreateBlo order: block.meta.order, depth: block.meta.depth, }, - value: [elementNode], + value: [elements], }); + slate.children = blockData.value; const blockId = blockData.id; editor.children[blockId] = blockData; diff --git a/packages/core/editor/src/editor/transforms/decreaseBlockDepth.ts b/packages/core/editor/src/editor/blocks/decreaseBlockDepth.ts similarity index 100% rename from packages/core/editor/src/editor/transforms/decreaseBlockDepth.ts rename to packages/core/editor/src/editor/blocks/decreaseBlockDepth.ts diff --git a/packages/core/editor/src/editor/transforms/deleteBlock.ts b/packages/core/editor/src/editor/blocks/deleteBlock.ts similarity index 86% rename from packages/core/editor/src/editor/transforms/deleteBlock.ts rename to packages/core/editor/src/editor/blocks/deleteBlock.ts index dda7d0b2b..9061d4e71 100644 --- a/packages/core/editor/src/editor/transforms/deleteBlock.ts +++ b/packages/core/editor/src/editor/blocks/deleteBlock.ts @@ -1,9 +1,19 @@ import { createDraft, finishDraft } from 'immer'; +import { createEditor, Editor } from 'slate'; +import { withHistory } from 'slate-history'; +import { withReact } from 'slate-react'; import { buildBlockData } from '../../components/Editor/utils'; -import { buildSlateEditor } from '../../utils/editorBuilders'; +import { withShortcuts } from '../../extensions/shortcuts'; import { findPluginBlockBySelectionPath } from '../../utils/findPluginBlockBySelectionPath'; import { generateId } from '../../utils/generateId'; import { YooEditor, YooptaEditorTransformOptions } from '../types'; +// // [TODO] Circular deps +// import { buildSlateEditor } from '../../utils/editorBuilders'; + +function buildSlateEditor(editor: YooEditor): Editor { + const slate = withShortcuts(editor, withHistory(withReact(createEditor()))); + return slate; +} export type DeleteBlockOptions = YooptaEditorTransformOptions & { deleteAll?: boolean; diff --git a/packages/core/editor/src/editor/transforms/duplicateBlock.tsx b/packages/core/editor/src/editor/blocks/duplicateBlock.tsx similarity index 100% rename from packages/core/editor/src/editor/transforms/duplicateBlock.tsx rename to packages/core/editor/src/editor/blocks/duplicateBlock.tsx diff --git a/packages/core/editor/src/editor/transforms/focusBlock.ts b/packages/core/editor/src/editor/blocks/focusBlock.ts similarity index 100% rename from packages/core/editor/src/editor/transforms/focusBlock.ts rename to packages/core/editor/src/editor/blocks/focusBlock.ts diff --git a/packages/core/editor/src/editor/transforms/getBlock.ts b/packages/core/editor/src/editor/blocks/getBlock.ts similarity index 100% rename from packages/core/editor/src/editor/transforms/getBlock.ts rename to packages/core/editor/src/editor/blocks/getBlock.ts diff --git a/packages/core/editor/src/editor/transforms/increaseBlockDepth.ts b/packages/core/editor/src/editor/blocks/increaseBlockDepth.ts similarity index 100% rename from packages/core/editor/src/editor/transforms/increaseBlockDepth.ts rename to packages/core/editor/src/editor/blocks/increaseBlockDepth.ts diff --git a/packages/core/editor/src/editor/blocks/index.ts b/packages/core/editor/src/editor/blocks/index.ts new file mode 100644 index 000000000..cef05c564 --- /dev/null +++ b/packages/core/editor/src/editor/blocks/index.ts @@ -0,0 +1,27 @@ +import { insertBlock } from './insertBlock'; +import { deleteBlock } from './deleteBlock'; +import { moveBlock } from './moveBlock'; +import { focusBlock } from './focusBlock'; +import { splitBlock } from './splitBlock'; +import { increaseBlockDepth } from './increaseBlockDepth'; +import { decreaseBlockDepth } from './decreaseBlockDepth'; +import { duplicateBlock } from './duplicateBlock'; +import { updateBlock } from './updateBlock'; +import { toggleBlock } from './toggleBlock'; +import { insertBlocks } from './insertBlocks'; + +export const Blocks = { + insertBlock, + deleteBlock, + moveBlock, + focusBlock, + splitBlock, + increaseBlockDepth, + decreaseBlockDepth, + duplicateBlock, + updateBlock, + toggleBlock, + insertBlocks, + // [TODO] + // updateBlocks +}; diff --git a/packages/core/editor/src/editor/transforms/insertBlock.ts b/packages/core/editor/src/editor/blocks/insertBlock.ts similarity index 100% rename from packages/core/editor/src/editor/transforms/insertBlock.ts rename to packages/core/editor/src/editor/blocks/insertBlock.ts diff --git a/packages/core/editor/src/editor/transforms/insertBlocks.ts b/packages/core/editor/src/editor/blocks/insertBlocks.ts similarity index 100% rename from packages/core/editor/src/editor/transforms/insertBlocks.ts rename to packages/core/editor/src/editor/blocks/insertBlocks.ts diff --git a/packages/core/editor/src/editor/transforms/moveBlock.ts b/packages/core/editor/src/editor/blocks/moveBlock.ts similarity index 100% rename from packages/core/editor/src/editor/transforms/moveBlock.ts rename to packages/core/editor/src/editor/blocks/moveBlock.ts diff --git a/packages/core/editor/src/editor/transforms/splitBlock.ts b/packages/core/editor/src/editor/blocks/splitBlock.ts similarity index 100% rename from packages/core/editor/src/editor/transforms/splitBlock.ts rename to packages/core/editor/src/editor/blocks/splitBlock.ts diff --git a/packages/core/editor/src/editor/transforms/toggleBlock.ts b/packages/core/editor/src/editor/blocks/toggleBlock.ts similarity index 95% rename from packages/core/editor/src/editor/transforms/toggleBlock.ts rename to packages/core/editor/src/editor/blocks/toggleBlock.ts index fd6844b74..31e40043c 100644 --- a/packages/core/editor/src/editor/transforms/toggleBlock.ts +++ b/packages/core/editor/src/editor/blocks/toggleBlock.ts @@ -4,7 +4,7 @@ import { getRootBlockElementType } from '../../utils/blockElements'; import { findPluginBlockBySelectionPath } from '../../utils/findPluginBlockBySelectionPath'; import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; -import { YooEditor, YooptaBlockPath, YooptaEditorTransformOptions, YooptaBlockData } from '../types'; +import { YooEditor, YooptaEditorTransformOptions, YooptaBlockData } from '../types'; export type ToggleBlockOptions = YooptaEditorTransformOptions & { deleteText?: boolean; diff --git a/packages/core/editor/src/editor/transforms/updateBlock.ts b/packages/core/editor/src/editor/blocks/updateBlock.ts similarity index 87% rename from packages/core/editor/src/editor/transforms/updateBlock.ts rename to packages/core/editor/src/editor/blocks/updateBlock.ts index 4bba031e3..102b4c950 100644 --- a/packages/core/editor/src/editor/transforms/updateBlock.ts +++ b/packages/core/editor/src/editor/blocks/updateBlock.ts @@ -10,8 +10,11 @@ export function updateBlock( let shouldApply = false; const block = editor.children[blockId]; + if (!block) { - throw Error(`Block with id ${blockId} not found`); + // [TODO] - some weird behaviour when copy/paste + console.log(`Block with id ${blockId} not found`); + return; } if (data.id) { diff --git a/packages/core/editor/src/editor/elements/createElement.ts b/packages/core/editor/src/editor/elements/createElement.ts new file mode 100644 index 000000000..11fdc2bec --- /dev/null +++ b/packages/core/editor/src/editor/elements/createElement.ts @@ -0,0 +1,96 @@ +import { Editor, Path, Span, Transforms } from 'slate'; +import { buildBlockElement } from '../../components/Editor/utils'; +import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; +import { SlateElement, YooEditor } from '../types'; +import { getElementEntry } from './getElementEntry'; + +export type CreateBlockElementOptions = { + path?: 'next' | 'prev' | Path | Span; + focus?: boolean; + split?: boolean; +}; + +export type CreateElement = { + type: TElementKeys; + props?: TElementProps; +}; + +export function createElement( + editor: YooEditor, + blockId: string, + element: CreateElement, + options?: CreateBlockElementOptions, +) { + const blockData = editor.children[blockId]; + if (!blockData) { + throw new Error(`Block with id ${blockId} not found`); + } + + const slate = findSlateBySelectionPath(editor, { at: [blockData.meta.order] }); + if (!slate) { + console.warn('No slate found'); + return; + } + + Editor.withoutNormalizing(slate, () => { + const block = editor.blocks[blockData.type]; + const blockElement = block.elements[element.type]; + const nodeElement = buildBlockElement({ type: element.type, props: { ...blockElement.props, ...element.props } }); + + const elementTypes = Object.keys(block.elements); + + let childrenElements: SlateElement[] = []; + + elementTypes.forEach((blockElementType) => { + const blockElement = block.elements[blockElementType]; + + if (blockElementType === element.type) { + if (Array.isArray(blockElement.children) && blockElement.children.length > 0) { + blockElement.children.forEach((childElementType) => { + const childElement = block.elements[childElementType]; + childrenElements.push(buildBlockElement({ type: childElementType, props: childElement.props })); + }); + } + } + }); + + if (childrenElements.length > 0) nodeElement.children = childrenElements; + + const { path, focus = true } = options || {}; + let atPath; + + const elementEntry = getElementEntry(editor, blockId, { type: element.type }); + + if (elementEntry) { + const [, elementPath] = elementEntry; + + if (Path.isPath(path)) { + atPath = path; + } else if (path === 'prev') { + atPath = Path.previous(elementPath); + } else if (path === 'next') { + atPath = Path.next(elementPath); + } + } + + Transforms.insertNodes(slate, nodeElement, { at: atPath, select: focus }); + + if (focus) { + if (childrenElements.length > 0) { + const firstChild = childrenElements[0]; + const firstElementEntry = getElementEntry(editor, blockId, { + path: atPath, + type: firstChild.type, + }); + + if (firstElementEntry) { + const [, firstElementPath] = firstElementEntry; + Transforms.select(slate, firstElementPath); + } + } + } + + editor.applyChanges(); + editor.emit('change', editor.children); + }); +} diff --git a/packages/core/editor/src/editor/elements/deleteElement.ts b/packages/core/editor/src/editor/elements/deleteElement.ts new file mode 100644 index 000000000..7fee67f90 --- /dev/null +++ b/packages/core/editor/src/editor/elements/deleteElement.ts @@ -0,0 +1,33 @@ +import { Editor, Element, Path, Transforms } from 'slate'; +import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; +import { YooEditor } from '../types'; + +export type DeleteBlockElement = { + type: string; + path: Path; +}; + +export function deleteElement(editor: YooEditor, blockId: string, element: DeleteBlockElement) { + const block = editor.children[blockId]; + + if (!block) { + throw new Error(`Block with id ${blockId} not found`); + } + + const slate = findSlateBySelectionPath(editor, { at: [block.meta.order] }); + + if (!slate) { + console.warn('No slate found'); + return; + } + + Editor.withoutNormalizing(slate, () => { + Transforms.removeNodes(slate, { + at: element.path, + match: (n) => Element.isElement(n) && n.type === element.type, + }); + + editor.applyChanges(); + editor.emit('change', editor.children); + }); +} diff --git a/packages/core/editor/src/editor/elements/getElement.ts b/packages/core/editor/src/editor/elements/getElement.ts new file mode 100644 index 000000000..ca1280fc7 --- /dev/null +++ b/packages/core/editor/src/editor/elements/getElement.ts @@ -0,0 +1,18 @@ +import { SlateElement, YooEditor } from '../types'; +import { getElementEntry, GetBlockElementEntryOptions } from './getElementEntry'; + +export type GetBlockElementOptions = GetBlockElementEntryOptions; + +export function getElement( + editor: YooEditor, + blockId: string, + options?: GetBlockElementOptions, +): SlateElement | undefined { + const elementEntry = getElementEntry(editor, blockId, options); + + if (elementEntry) { + return elementEntry[0] as SlateElement; + } + + return undefined; +} diff --git a/packages/core/editor/src/editor/elements/getElementChildren.ts b/packages/core/editor/src/editor/elements/getElementChildren.ts new file mode 100644 index 000000000..81079082a --- /dev/null +++ b/packages/core/editor/src/editor/elements/getElementChildren.ts @@ -0,0 +1,16 @@ +import { SlateElement, YooEditor } from '../types'; +import { getElement } from './getElement'; +import { GetBlockElementEntryOptions } from './getElementEntry'; + +export type GetElementChildrenOptions = GetBlockElementEntryOptions; + +export function getElementChildren( + editor: YooEditor, + blockId: string, + options?: GetElementChildrenOptions, +): SlateElement['children'] | undefined { + const element = getElement(editor, blockId, options); + if (element) return element.children; + + return undefined; +} diff --git a/packages/core/editor/src/editor/elements/getElementEntry.ts b/packages/core/editor/src/editor/elements/getElementEntry.ts new file mode 100644 index 000000000..929d27238 --- /dev/null +++ b/packages/core/editor/src/editor/elements/getElementEntry.ts @@ -0,0 +1,43 @@ +import { Editor, Element, Location, NodeEntry, Span } from 'slate'; +import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; +import { SlateElement, YooEditor } from '../types'; + +export type GetBlockElementEntryOptions = { + path?: Location | Span; + type?: string; +}; + +export function getElementEntry( + editor: YooEditor, + blockId: string, + options?: GetBlockElementEntryOptions, +): NodeEntry> | undefined { + const block = editor.children[blockId]; + + if (!block) { + throw new Error(`Block with id ${blockId} not found`); + } + + const slate = findSlateBySelectionPath(editor, { at: [block.meta.order] }); + + if (!slate) { + console.warn('No slate found'); + return; + } + + let match = (n) => Element.isElement(n); + + if (options?.type) { + match = (n) => Element.isElement(n) && n.type === options?.type; + } + + try { + const [elementEntry] = Editor.nodes(slate, { + at: options?.path || slate.selection || [0], + match, + mode: 'lowest', + }); + + return elementEntry as NodeEntry>; + } catch (error) {} +} diff --git a/packages/core/editor/src/editor/elements/getElementPath.ts b/packages/core/editor/src/editor/elements/getElementPath.ts new file mode 100644 index 000000000..a14851f3b --- /dev/null +++ b/packages/core/editor/src/editor/elements/getElementPath.ts @@ -0,0 +1,24 @@ +import { Path } from 'slate'; +import { ReactEditor } from 'slate-react'; +import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; +import { SlateElement, YooEditor } from '../types'; + +export function getElementPath(editor: YooEditor, blockId: string, element: SlateElement): Path | undefined { + const block = editor.children[blockId]; + + if (!block) { + throw new Error(`Block with id ${blockId} not found`); + } + + const slate = findSlateBySelectionPath(editor, { at: [block.meta.order] }); + + if (!slate) { + console.warn('No slate found'); + return; + } + + try { + const path = ReactEditor.findPath(slate, element); + return path; + } catch (error) {} +} diff --git a/packages/core/editor/src/editor/elements/getParentElementPath.ts b/packages/core/editor/src/editor/elements/getParentElementPath.ts new file mode 100644 index 000000000..f768e5d08 --- /dev/null +++ b/packages/core/editor/src/editor/elements/getParentElementPath.ts @@ -0,0 +1,24 @@ +import { Path } from 'slate'; +import { ReactEditor } from 'slate-react'; +import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; +import { SlateElement, YooEditor } from '../types'; + +export function getParentElementPath(editor: YooEditor, blockId: string, element: SlateElement): Path | undefined { + const block = editor.children[blockId]; + + if (!block) { + throw new Error(`Block with id ${blockId} not found`); + } + + const slate = findSlateBySelectionPath(editor, { at: [block.meta.order] }); + + if (!slate) { + console.warn('No slate found'); + return []; + } + + try { + const path = ReactEditor.findPath(slate, element); + return Path.parent(path); + } catch (error) {} +} diff --git a/packages/core/editor/src/editor/elements/index.tsx b/packages/core/editor/src/editor/elements/index.tsx new file mode 100644 index 000000000..cced07f91 --- /dev/null +++ b/packages/core/editor/src/editor/elements/index.tsx @@ -0,0 +1,21 @@ +import { createElement } from './createElement'; +import { deleteElement } from './deleteElement'; +import { updateElement } from './updateElement'; +import { getElement } from './getElement'; +import { getElementChildren } from './getElementChildren'; +import { getElementEntry } from './getElementEntry'; +import { getElementPath } from './getElementPath'; +import { getParentElementPath } from './getParentElementPath'; +import { isElementEmpty } from './isElementEmpty'; + +export const Elements = { + createElement, + deleteElement, + updateElement, + getElement, + getElementChildren, + getElementEntry, + isElementEmpty, + getElementPath, + getParentElementPath, +}; diff --git a/packages/core/editor/src/editor/elements/isElementEmpty.ts b/packages/core/editor/src/editor/elements/isElementEmpty.ts new file mode 100644 index 000000000..c6afa7a5c --- /dev/null +++ b/packages/core/editor/src/editor/elements/isElementEmpty.ts @@ -0,0 +1,37 @@ +import { Editor, Element, Path } from 'slate'; +import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; +import { SlateElement, YooEditor } from '../types'; + +export type EmptyBlockElement = { + type: string; + path: Path; +}; + +export function isElementEmpty(editor: YooEditor, blockId: string, element: EmptyBlockElement): boolean | undefined { + const block = editor.children[blockId]; + + if (!block) { + throw new Error(`Block with id ${blockId} not found`); + } + + const slate = findSlateBySelectionPath(editor, { at: [block.meta.order] }); + + if (!slate) { + console.warn('No slate found'); + return; + } + + const [elementEntry] = Editor.nodes(slate, { + at: element.path || slate.selection, + match: (n) => Element.isElement(n) && n.type === element.type, + }); + + if (elementEntry) { + const [node, nodePath] = elementEntry; + const string = Editor.string(slate, nodePath); + + return string.trim().length === 0; + } + + return false; +} diff --git a/packages/core/editor/src/editor/elements/updateElement.ts b/packages/core/editor/src/editor/elements/updateElement.ts new file mode 100644 index 000000000..dc0edc13c --- /dev/null +++ b/packages/core/editor/src/editor/elements/updateElement.ts @@ -0,0 +1,53 @@ +import { Editor, Element, Path, Transforms } from 'slate'; +import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; +import { SlateElement, YooEditor } from '../types'; + +export type UpdateElementOptions = { + path?: Path; +}; + +export type UpdateElement = { + type: TElementKeys; + props: TElementProps; +}; + +export function updateElement( + editor: YooEditor, + blockId: string, + element: UpdateElement, + options?: UpdateElementOptions, +) { + const block = editor.children[blockId]; + + if (!block) { + throw new Error(`Block with id ${blockId} not found`); + } + + const slate = findSlateBySelectionPath(editor, { at: [block.meta.order] }); + + if (!slate) { + console.warn('No slate found'); + return; + } + + Editor.withoutNormalizing(slate, () => { + const [elementEntry] = Editor.nodes(slate, { + at: options?.path || [0], + match: (n) => Element.isElement(n) && n.type === element.type, + }); + + const elementToUpdate = elementEntry?.[0]; + + const props = elementToUpdate?.props || {}; + const updatedNode = { props: { ...props, ...element.props } }; + + Transforms.setNodes(slate, updatedNode, { + at: options?.path || [0], + match: (n) => Element.isElement(n) && n.type === element.type, + mode: 'lowest', + }); + + editor.applyChanges(); + editor.emit('change', editor.children); + }); +} diff --git a/packages/core/editor/src/editor/index.tsx b/packages/core/editor/src/editor/index.tsx index cf9e3e11a..d2498d6ae 100644 --- a/packages/core/editor/src/editor/index.tsx +++ b/packages/core/editor/src/editor/index.tsx @@ -1,20 +1,20 @@ -import { insertBlock } from './transforms/insertBlock'; -import { deleteBlock } from './transforms/deleteBlock'; -import { moveBlock } from './transforms/moveBlock'; -import { focusBlock } from './transforms/focusBlock'; -import { splitBlock } from './transforms/splitBlock'; +import { insertBlock } from './blocks/insertBlock'; +import { deleteBlock } from './blocks/deleteBlock'; +import { moveBlock } from './blocks/moveBlock'; +import { focusBlock } from './blocks/focusBlock'; +import { splitBlock } from './blocks/splitBlock'; import { setSelection } from './selection/setSelection'; import { YooEditor } from './types'; -import { increaseBlockDepth } from './transforms/increaseBlockDepth'; -import { decreaseBlockDepth } from './transforms/decreaseBlockDepth'; +import { increaseBlockDepth } from './blocks/increaseBlockDepth'; +import { decreaseBlockDepth } from './blocks/decreaseBlockDepth'; import { getEditorValue } from './core/getEditorValue'; import { setEditorValue } from './core/setEditorValue'; import { setBlockSelected } from './selection/setBlockSelected'; -import { duplicateBlock } from './transforms/duplicateBlock'; +import { duplicateBlock } from './blocks/duplicateBlock'; +import { insertBlocks } from './blocks/insertBlocks'; +import { updateBlock } from './blocks/updateBlock'; +import { toggleBlock } from './blocks/toggleBlock'; import { blur } from './core/blur'; -import { updateBlock } from './transforms/updateBlock'; -import { toggleBlock } from './transforms/toggleBlock'; -import { insertBlocks } from './transforms/insertBlocks'; import { focus } from './core/focus'; import { isFocused } from './core/isFocused'; diff --git a/packages/core/editor/src/editor/transforms/getBlockElement.ts b/packages/core/editor/src/editor/transforms/getBlockElement.ts deleted file mode 100644 index cb0ff5c3b..000000000 --- a/packages/core/editor/src/editor/transforms/getBlockElement.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/core/editor/src/editor/transforms/updateBlockElement.ts b/packages/core/editor/src/editor/transforms/updateBlockElement.ts deleted file mode 100644 index 925ae65aa..000000000 --- a/packages/core/editor/src/editor/transforms/updateBlockElement.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Editor, Element, Transforms } from 'slate'; -import { findSlateBySelectionPath } from '../../utils/findSlateBySelectionPath'; -import { SlateElement, YooEditor } from '../types'; - -export function updateBlockElement( - editor: YooEditor, - blockId: string, - elementType: TElementKeys, - elementProps: TElementProps, -) { - const block = editor.children[blockId]; - - if (!block) { - throw new Error(`Block with id ${blockId} not found`); - } - - const slate = findSlateBySelectionPath(editor, { at: [block.meta.order] }); - - if (!slate) { - console.warn('No slate found'); - return; - } - Editor.withoutNormalizing(slate, () => { - const [elementEntry] = Editor.nodes(slate, { - at: [0], - match: (n) => Element.isElement(n) && n.type === elementType, - }); - - const element = elementEntry?.[0]; - - const props = element?.props || {}; - const updatedNode = { props: { ...props, ...elementProps } }; - - Transforms.setNodes(slate, updatedNode, { - at: [0], - match: (n) => Element.isElement(n) && n.type === elementType, - mode: 'lowest', - }); - - // block.value = slate.children; - - editor.applyChanges(); - editor.emit('change', editor.children); - }); -} diff --git a/packages/core/editor/src/editor/types.ts b/packages/core/editor/src/editor/types.ts index 89775dc4d..c6148f6e6 100644 --- a/packages/core/editor/src/editor/types.ts +++ b/packages/core/editor/src/editor/types.ts @@ -3,11 +3,11 @@ import { Plugin, PluginElementsMap, PluginOptions, PluginElementProps } from '.. import { EditorBlurOptions } from './core/blur'; import { BlockSelectedOptions } from './selection/setBlockSelected'; import { SetSelectionOptions } from './selection/setSelection'; -import { CreateBlockOptions } from './transforms/createBlock'; -import { DeleteBlockOptions } from './transforms/deleteBlock'; -import { DuplicateBlockOptions } from './transforms/duplicateBlock'; -import { FocusBlockOptions } from './transforms/focusBlock'; -import { ToggleBlockOptions } from './transforms/toggleBlock'; +import { CreateBlockOptions } from './blocks/createBlock'; +import { DeleteBlockOptions } from './blocks/deleteBlock'; +import { DuplicateBlockOptions } from './blocks/duplicateBlock'; +import { FocusBlockOptions } from './blocks/focusBlock'; +import { ToggleBlockOptions } from './blocks/toggleBlock'; export type YooptaBlockPath = [number]; @@ -59,11 +59,6 @@ export type YooptaBlock = { create: (options?: CreateBlockOptions) => void; toggle: (options?: ToggleBlockOptions) => void; update: (id: string, data: Partial) => void; - updateElement: ( - blockId: string, - elementType: TElementKeys, - elementProps: TElementProps, - ) => void; delete: (options: DeleteBlockOptions) => void; }; diff --git a/packages/core/editor/src/handlers/onKeyDown.ts b/packages/core/editor/src/handlers/onKeyDown.ts index da5cddb1e..94ec3d124 100644 --- a/packages/core/editor/src/handlers/onKeyDown.ts +++ b/packages/core/editor/src/handlers/onKeyDown.ts @@ -2,6 +2,7 @@ import { isKeyHotkey } from 'is-hotkey'; import { Editor, Path, Point, Range, Text, Transforms } from 'slate'; import { ReactEditor } from 'slate-react'; import { buildBlockData } from '../components/Editor/utils'; +import { Elements } from '../editor/elements'; import { SlateEditor, YooEditor, YooptaBlockPath } from '../editor/types'; import { findPluginBlockBySelectionPath } from '../utils/findPluginBlockBySelectionPath'; import { findSlateBySelectionPath } from '../utils/findSlateBySelectionPath'; @@ -10,22 +11,36 @@ import { HOTKEYS } from '../utils/hotkeys'; /** */ function getLastNodePoint(slate: SlateEditor, path: Path): Point { - const [, lastNodePath] = Editor.last(slate, path); - const lastNodeTextLength = Editor.string(slate, lastNodePath).length; - - return { - path: lastNodePath, - offset: lastNodeTextLength, - }; + try { + const [, lastNodePath] = Editor.last(slate, path); + const lastNodeTextLength = Editor.string(slate, lastNodePath).length; + + return { + path: lastNodePath, + offset: lastNodeTextLength, + }; + } catch (error) { + return { + path: [0, 0], + offset: 0, + }; + } } function getNextNodePoint(slate: SlateEditor, path: Path): Point { - const [, firstNodePath] = Editor.first(slate, path); - - return { - path: firstNodePath, - offset: 0, - }; + try { + const [, firstNodePath] = Editor.first(slate, path); + + return { + path: firstNodePath, + offset: 0, + }; + } catch (error) { + return { + path: [0, 0], + offset: 0, + }; + } } /** */ @@ -82,6 +97,7 @@ export function onKeyDown(editor: YooEditor) { let focusAt; if (prevSlate && !prevBlockEntity.hasCustomEditor) { + // [TODO] - should be parent path, but for prev slate focusAt = getLastNodePoint(prevSlate, parentPath); } @@ -100,7 +116,7 @@ export function onKeyDown(editor: YooEditor) { const prevBlockEntity = editor.blocks[prevBlock?.type || '']; // [TODO] - if prev block has custom editor (not slate) we need jump to prevprev block - if (prevBlockEntity.hasCustomEditor) return; + if (prevBlockEntity && prevBlockEntity.hasCustomEditor) return; // If we try to delete first block do nothing if (!prevSlate) return; @@ -175,10 +191,11 @@ export function onKeyDown(editor: YooEditor) { if (HOTKEYS.isArrowUp(event)) { if (event.isDefaultPrevented()) return; - const parentPath = Path.parent(slate.selection.anchor.path); - const isStart = Editor.isStart(slate, slate.selection.anchor, parentPath); - if (isStart) { + // If element with any paths has all paths at 0 + const isAllPathsInStart = new Set(slate.selection.anchor.path).size === 1; + + if (isAllPathsInStart) { const prevPath: YooptaBlockPath | null = editor.selection ? [editor.selection[0] - 1] : null; const prevSlate = findSlateBySelectionPath(editor, { at: prevPath }); const prevBlock = findPluginBlockBySelectionPath(editor, { at: prevPath }); @@ -215,6 +232,7 @@ export function onKeyDown(editor: YooEditor) { const nextBlock = findPluginBlockBySelectionPath(editor, { at: nextPath }); if (nextSlate && nextBlock) { + // [TODO] - should parent path, but for next slate const selection: Point = getNextNodePoint(nextSlate, parentPath); event.preventDefault(); diff --git a/packages/core/editor/src/index.ts b/packages/core/editor/src/index.ts index be540754a..b3d6d3f45 100644 --- a/packages/core/editor/src/index.ts +++ b/packages/core/editor/src/index.ts @@ -33,5 +33,8 @@ export { YooptaMarkProps, } from './plugins/types'; +export { Elements } from './editor/elements'; +export { Blocks } from './editor/blocks'; + import './styles.css'; export default YooptaEditor; diff --git a/packages/core/editor/src/plugins/SlateEditorComponent.tsx b/packages/core/editor/src/plugins/SlateEditorComponent.tsx index e04539b8c..bd5e3710c 100644 --- a/packages/core/editor/src/plugins/SlateEditorComponent.tsx +++ b/packages/core/editor/src/plugins/SlateEditorComponent.tsx @@ -1,5 +1,5 @@ -import React, { memo, useCallback, useMemo, useRef } from 'react'; -import { DefaultElement, Editable, RenderElementProps, Slate } from 'slate-react'; +import React, { memo, useCallback, useEffect, useMemo, useRef } from 'react'; +import { DefaultElement, Editable, ReactEditor, RenderElementProps, Slate } from 'slate-react'; import { useYooptaEditor, useBlockData } from '../contexts/YooptaContext/YooptaContext'; import { EVENT_HANDLERS } from '../handlers'; import { YooptaMark } from '../marks'; @@ -51,7 +51,6 @@ const SlateEditorComponent = ({ const editor = useYooptaEditor(); const block = useBlockData(id); const initialValue = useRef(block.value).current; - const type = block.type; const ELEMENTS_MAP = useMemo(() => getMappedElements(elements), [elements]); const MARKS_MAP = useMemo(() => getMappedMarks(marks), [marks]); @@ -85,7 +84,7 @@ const SlateEditorComponent = ({ }); return slateEditor; - }, []); + }, [elements]); const eventHandlers = useMemo(() => { if (!events || editor.readOnly) return {}; @@ -112,13 +111,31 @@ const SlateEditorComponent = ({ const onChange = useCallback((value) => editor.updateBlock(id, { value }), [id]); const renderElement = useCallback( - (props: RenderElementProps) => { - const ElementComponent = ELEMENTS_MAP[props.element.type]; + (elementProps: RenderElementProps) => { + const ElementComponent = ELEMENTS_MAP[elementProps.element.type]; + const { attributes, ...props } = elementProps; + attributes['data-element-type'] = props.element.type; - if (!ElementComponent) return ; - return ; + let path; + + try { + path = ReactEditor.findPath(slate, elementProps.element); + } catch (error) { + path = []; + } + + if (!ElementComponent) return ; + return ( + + ); }, - [elements], + [elements, slate.children], ); const renderLeaf = useCallback( diff --git a/packages/core/editor/src/plugins/extenstions/withInlines.ts b/packages/core/editor/src/plugins/extenstions/withInlines.ts index 7d1f557d4..1eaedfd03 100644 --- a/packages/core/editor/src/plugins/extenstions/withInlines.ts +++ b/packages/core/editor/src/plugins/extenstions/withInlines.ts @@ -39,7 +39,7 @@ const addLink = (editor, url: string) => { target: '_blank', rel: 'noopener noreferrer', }, - }; + } as SlateElement; if (isCollapsed) { Transforms.insertNodes(editor, link); diff --git a/packages/core/editor/src/plugins/types.ts b/packages/core/editor/src/plugins/types.ts index bcfe05eb7..da6b43789 100644 --- a/packages/core/editor/src/plugins/types.ts +++ b/packages/core/editor/src/plugins/types.ts @@ -1,5 +1,5 @@ import { HTMLAttributes, ReactElement, ReactNode } from 'react'; -import { Descendant, Editor } from 'slate'; +import { Descendant, Editor, Path } from 'slate'; import { RenderElementProps as RenderSlateElementProps, RenderLeafProps } from 'slate-react'; import { SlateElement, YooEditor, YooptaBlockData } from '../editor/types'; import { YooptaMark } from '../marks'; diff --git a/packages/core/editor/src/utils/blockElements.ts b/packages/core/editor/src/utils/blockElements.ts index 926caffd4..ed6562bf3 100644 --- a/packages/core/editor/src/utils/blockElements.ts +++ b/packages/core/editor/src/utils/blockElements.ts @@ -1,5 +1,6 @@ import { Editor, Element, NodeEntry, Path } from 'slate'; -import { SlateElement } from '../editor/types'; +import { buildBlockElement } from '../components/Editor/utils'; +import { SlateElement, YooEditor, YooptaBlock } from '../editor/types'; import { PluginElement, PluginElementProps, PluginElementsMap } from '../plugins/types'; import { generateId } from './generateId'; @@ -67,3 +68,50 @@ export function buildSlateNodeElement( ): SlateElement { return { id: generateId(), type, children: [{ text: '' }], props: props }; } + +function recursivelyCollectElementChildren( + blockElement: PluginElement, + blockElements: PluginElementsMap, +): SlateElement[] { + return ( + blockElement.children?.map((elementType) => { + const childElement = blockElements[elementType]; + if (!childElement) { + throw new Error(`Element definition for ${elementType} not found`); + } + + const childNode: SlateElement = buildBlockElement({ + id: generateId(), + type: elementType, + props: childElement.props, + children: + childElement.children && childElement.children.length > 0 + ? recursivelyCollectElementChildren(childElement, blockElements) + : [{ text: '' }], + }); + + return childNode; + }) || [] + ); +} +export function buildBlockElementsStructure(editor: YooEditor, blockType: string): SlateElement { + const block: YooptaBlock = editor.blocks[blockType]; + const blockElements = block.elements; + const rootBlockElementType = getRootBlockElementType(blockElements); + if (!rootBlockElementType) { + throw new Error(`Root element type not found for block type ${blockType}`); + } + const rootBlockElement = blockElements[rootBlockElementType]; + + const rootElementNode: SlateElement = { + id: generateId(), + type: rootBlockElementType, + props: rootBlockElement.props, + children: + rootBlockElement.children && rootBlockElement.children.length > 0 + ? recursivelyCollectElementChildren(rootBlockElement, blockElements) + : [{ text: '' }], + }; + + return rootElementNode; +} diff --git a/packages/core/editor/src/utils/editorBuilders.ts b/packages/core/editor/src/utils/editorBuilders.ts index e495e1e49..e0b730569 100644 --- a/packages/core/editor/src/utils/editorBuilders.ts +++ b/packages/core/editor/src/utils/editorBuilders.ts @@ -5,17 +5,16 @@ import { YooEditor, YooptaBlockData } from '../editor/types'; import { Plugin, PluginElement, PluginElementsMap } from '../plugins/types'; import { YooptaMark } from '../marks'; import { findPluginBlockBySelectionPath } from '../utils/findPluginBlockBySelectionPath'; -import { createBlock } from '../editor/transforms/createBlock'; +import { createBlock } from '../editor/blocks/createBlock'; import { getValue } from '../editor/textFormats/getValue'; import { isActive } from '../editor/textFormats/isActive'; import { toggle } from '../editor/textFormats/toggle'; import { update } from '../editor/textFormats/update'; import { withShortcuts } from '../extensions/shortcuts'; import { getRootBlockElement } from './blockElements'; -import { updateBlock } from '../editor/transforms/updateBlock'; -import { updateBlockElement } from '../editor/transforms/updateBlockElement'; -import { toggleBlock, ToggleBlockOptions } from '../editor/transforms/toggleBlock'; -import { deleteBlock, DeleteBlockOptions } from '../editor/transforms/deleteBlock'; +import { updateBlock } from '../editor/blocks/updateBlock'; +import { toggleBlock, ToggleBlockOptions } from '../editor/blocks/toggleBlock'; +import { deleteBlock, DeleteBlockOptions } from '../editor/blocks/deleteBlock'; export function buildMarks(editor, marks: YooptaMark[]) { const formats: YooEditor['formats'] = {}; @@ -38,7 +37,7 @@ export function buildMarks(editor, marks: YooptaMark[]) { export function buildBlocks(editor, plugins: Plugin>[]) { const blocks: YooEditor['blocks'] = {}; - plugins.forEach((plugin, index) => { + plugins.forEach((plugin) => { const rootBlockElement = getRootBlockElement(plugin.elements); const nodeType = rootBlockElement?.props?.nodeType; const isInline = nodeType === 'inline' || nodeType === 'inlineVoid'; @@ -67,18 +66,13 @@ export function buildBlocks(editor, plugins: Plugin { - toggleBlock(editor, plugin.type, options); - }, - create: (options) => { - createBlock(editor, plugin.type, options); - }, + + // block actions + toggle: (options?: ToggleBlockOptions) => toggleBlock(editor, plugin.type, options), + create: (options) => createBlock(editor, plugin.type, options), update: (id: string, data: Partial>) => { updateBlock(editor, id, data); }, - updateElement: (blockId: string, elementType: TKeys, props: TProps) => { - updateBlockElement(editor, blockId, elementType, props); - }, delete: (options: DeleteBlockOptions) => { deleteBlock(editor, options); }, diff --git a/packages/core/exports/package.json b/packages/core/exports/package.json index 852d6f1b2..7f203abe3 100644 --- a/packages/core/exports/package.json +++ b/packages/core/exports/package.json @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, diff --git a/packages/core/yoopta-chatGPT-assistant/package.json b/packages/core/yoopta-chatGPT-assistant/package.json index 2f2ff5476..9c01f7c77 100644 --- a/packages/core/yoopta-chatGPT-assistant/package.json +++ b/packages/core/yoopta-chatGPT-assistant/package.json @@ -16,7 +16,7 @@ "peerDependencies": { "react": ">=17.0.2", "react-dom": ">=17.0.2", - "@yoopta/editor": ">=4.0.0-rc.0" + "@yoopta/editor": ">=4.0.0" }, "publishConfig": { "registry": "https://registry.yarnpkg.com" diff --git a/packages/core/yoopta-renderer/package.json b/packages/core/yoopta-renderer/package.json index 1f14efa64..239dfb1b5 100644 --- a/packages/core/yoopta-renderer/package.json +++ b/packages/core/yoopta-renderer/package.json @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, diff --git a/packages/development/package.json b/packages/development/package.json index 3ef9f855c..b8fa67c38 100644 --- a/packages/development/package.json +++ b/packages/development/package.json @@ -27,9 +27,10 @@ "@yoopta/table": "*", "@yoopta/toolbar": "*", "@yoopta/video": "*", + "@yoopta/accordion": "*", "classnames": "^2.5.1", "katex": "^0.16.10", - "lucide-react": "^0.365.0", + "lucide-react": "^0.378.0", "next": "14.1.0", "react": "^18", "react-dom": "^18", diff --git a/packages/development/src/components/customPlugins/Accordion/Accordion.tsx b/packages/development/src/components/customPlugins/Accordion/Accordion.tsx new file mode 100644 index 000000000..b59ffecfc --- /dev/null +++ b/packages/development/src/components/customPlugins/Accordion/Accordion.tsx @@ -0,0 +1,55 @@ +import { generateId, SlateElement, YooptaBlockData } from '@yoopta/editor'; + +const ACCORDION_VALUE: SlateElement[] = [ + { + id: generateId(), + type: 'accordion-list', + children: [ + { + id: generateId(), + type: 'accordion-list-item', + props: { + isExpanded: true, + }, + children: [ + { id: generateId(), type: 'accordion-list-item-heading', children: [{ text: 'Title 1' }] }, + { + id: generateId(), + type: 'accordion-list-item-content', + children: [ + { + text: `This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow.`, + }, + ], + }, + ], + }, + { + id: generateId(), + type: 'accordion-list-item', + props: { + isExpanded: false, + }, + children: [ + { id: generateId(), type: 'accordion-list-item-heading', children: [{ text: 'Title 2' }] }, + { + id: generateId(), + type: 'accordion-list-item-content', + children: [ + { + text: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis fermentum, lorem eu ultrices blandit, nunc magna dapibus nunc, non ultricies mauris ante ac arcu. Aliquam varius eu nisi et elementum. Suspendisse non tortor ut enim feugiat feugiat. Nulla vestibulum bibendum enim ut sagittis. Donec arcu sem, auctor eu elementum vitae, dignissim ut sem. Integer eros erat, dignissim a ornare eget, pulvinar vel nisi. Duis sit amet sapien in turpis tincidunt pretium eget vel metus. Morbi vitae ipsum eros. Proin et mattis enim. In sodales mauris neque, in eleifend massa mattis eget. Nullam posuere sollicitudin hendrerit. Aenean sed risus quis ligula faucibus ultrices a non purus. Nullam ac lacus quis urna congue lacinia. Etiam vel magna a ligula ornare tincidunt id at nisi.`, + }, + ], + }, + ], + }, + ], + }, +]; + +export const ACCORDION_BLOCK: YooptaBlockData = { + id: generateId(), + type: 'Accordion', + meta: { order: 0, depth: 0 }, + value: ACCORDION_VALUE, +}; diff --git a/packages/development/src/pages/dev/index.tsx b/packages/development/src/pages/dev/index.tsx index 58018467b..baec8df8a 100644 --- a/packages/development/src/pages/dev/index.tsx +++ b/packages/development/src/pages/dev/index.tsx @@ -17,6 +17,7 @@ import Link from '@yoopta/link'; import Video from '@yoopta/video'; import File from '@yoopta/file'; import Embed from '@yoopta/embed'; +import AccordionPlugin from '@yoopta/accordion'; import ActionMenuList, { DefaultActionMenuRender } from '@yoopta/action-menu-list'; import LinkTool, { DefaultLinkToolRender } from '@yoopta/link-tool'; import Toolbar, { DefaultToolbarRender } from '@yoopta/toolbar'; @@ -24,13 +25,14 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import { uploadToCloudinary } from '../../utils/cloudinary'; import Code from '@yoopta/code'; -import { BaseElement } from 'slate'; import { ActionNotionMenuExample } from '../../components/ActionMenuExamples/NotionExample/ActionNotionMenuExample'; -import { SlackChat } from '../../components/Chats/SlackChat/SlackChat'; import { NotionToolbar } from '../../components/Toolbars/NotionToolbar/NotionToolbar'; +import { ACCORDION_BLOCK } from '../../components/customPlugins/Accordion/Accordion'; +// import Accordion from '../../components/customPlugins/Accordion/src'; // import Mention from '@yoopta/mention'; const plugins = [ + AccordionPlugin, Code, File.extend({ options: { @@ -60,7 +62,6 @@ const plugins = [ //
// @@ -70,9 +71,13 @@ const plugins = [ // }, // }, options: { + maxSizes: { + maxHeight: 800, + }, HTMLAttributes: { className: 'image-element-extended', }, + onUpload: async (file: File) => { const data = await uploadToCloudinary(file); @@ -183,86 +188,133 @@ const TOOLS: Tools = { export type YooptaChildrenValue = Record; const value = { - '2af886bf-6e25-45d5-a82c-292546f6515c': { - id: '2af886bf-6e25-45d5-a82c-292546f6515c', - type: 'HeadingOne', - meta: { - order: 1, - depth: 0, - }, + '9b291f39-d5d0-4927-9ae3-cca900937955': { + id: '9b291f39-d5d0-4927-9ae3-cca900937955', value: [ { - id: '0508777e-52a4-4168-87a0-bc7661e57aab', - type: 'heading-one', + id: '1f973a32-90f6-45f6-9310-2de1da4f10a3', + type: 'accordion-list', children: [ { - text: 'Example with full setup of Yoopta-Editor', + id: 'd8e917e8-fe31-46bd-8076-226d2d76237d', + type: 'accordion-list-item', + children: [ + { + id: '76d6ba08-40b2-45da-80f9-17a954e3e82c', + type: 'accordion-list-item-heading', + children: [ + { + text: 'asdsad', + }, + ], + props: { + nodeType: 'block', + }, + }, + { + id: '6599fa62-0da4-4ca0-9279-551828ec9255', + type: 'accordion-list-item-content', + children: [ + { + text: '', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + props: { + nodeType: 'block', + isExpanded: true, + }, }, - ], - props: { - nodeType: 'block', - }, - }, - ], - }, - '7b6fbbfe-1270-4f08-ace0-f78d0423cf4d': { - id: '7b6fbbfe-1270-4f08-ace0-f78d0423cf4d', - type: 'HeadingTwo', - meta: { - order: 2, - depth: 0, - }, - value: [ - { - id: '284667f9-8b8f-4839-839d-73b5f1966752', - type: 'heading-two', - children: [ { - text: 'Example with full setup of Yoopta-Editor', + id: '705baea1-b0a0-4562-87d7-a0a61e38aa9b', + type: 'accordion-list-item', + children: [ + { + id: '18e8dba7-bb35-4914-968f-357c50a5a897', + type: 'accordion-list-item-heading', + children: [ + { + text: 'asdsadasadasds', + }, + ], + props: { + nodeType: 'block', + }, + }, + { + id: '951a8842-ae7a-495e-b574-9f9f0a497842', + type: 'accordion-list-item-content', + children: [ + { + text: '', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + props: { + nodeType: 'block', + isExpanded: true, + }, }, - ], - props: { - nodeType: 'block', - }, - }, - ], - }, - '90c7ffee-8ce0-418f-8e10-10da8dd7b428': { - id: '90c7ffee-8ce0-418f-8e10-10da8dd7b428', - value: [ - { - id: 'd2107094-8385-48bd-8222-23b0b55d9151', - type: 'paragraph', - children: [ { - text: 'Example with full setup of Yoopta-Editor', + id: '80cee518-63e5-47ec-8455-49a5acfe27b3', + type: 'accordion-list-item', + children: [ + { + id: 'b9f6beed-968f-4636-a439-9575084fcd76', + type: 'accordion-list-item-heading', + children: [ + { + text: '', + }, + ], + props: { + nodeType: 'block', + }, + }, + { + id: '16ae9f42-459a-4eb9-a937-a8d44da19f00', + type: 'accordion-list-item-content', + children: [ + { + text: '', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + props: { + nodeType: 'block', + isExpanded: true, + }, }, ], - props: { - nodeType: 'block', - }, }, ], - type: 'Paragraph', + type: 'Accordion', meta: { - order: 0, + order: 4, depth: 0, }, }, - '987305a2-b7af-4b00-8c99-8db1662d1261': { - id: '987305a2-b7af-4b00-8c99-8db1662d1261', - type: 'HeadingThree', - meta: { - order: 3, - depth: 0, - }, + 'd670dc65-0dea-4c95-a806-46b912ca58eb': { + id: 'd670dc65-0dea-4c95-a806-46b912ca58eb', value: [ { - id: '86597d6b-8f40-45f2-b380-a3413434e1c5', - type: 'heading-three', + id: '48f7e7af-c173-4381-a28c-88ff538262ae', + type: 'paragraph', children: [ { - text: 'Example with full setup of Yoopta-Editor', + text: 'asdsad', }, ], props: { @@ -270,43 +322,21 @@ const value = { }, }, ], - }, - '37245c24-62f4-4315-ba22-9f02d7fb61df': { - id: '37245c24-62f4-4315-ba22-9f02d7fb61df', - type: 'Blockquote', + type: 'Paragraph', meta: { - order: 4, + order: 6, depth: 0, }, - value: [ - { - id: 'f4d3a978-eea3-48d4-ad3c-b350fa3783a4', - type: 'blockquote', - children: [ - { - text: 'Example with full setup of Yoopta-Editor', - }, - ], - props: { - nodeType: 'block', - }, - }, - ], }, - '1ab297a4-b746-4825-842c-c1fbfab1d93a': { - id: '1ab297a4-b746-4825-842c-c1fbfab1d93a', - type: 'Callout', - meta: { - order: 5, - depth: 0, - }, + 'c83f5cb4-2672-402e-960f-775ae57ef1a0': { + id: 'c83f5cb4-2672-402e-960f-775ae57ef1a0', value: [ { - id: '4f038362-109e-44ac-aae5-4ee3b9e6a12a', - type: 'callout', + id: 'e8fbbc87-31d6-4c0d-8292-5b170913274e', + type: 'paragraph', children: [ { - text: 'Example with full setup of Yoopta-Editor', + text: 'asdaasdsad', }, ], props: { @@ -314,38 +344,21 @@ const value = { }, }, ], - }, - '8c18747e-039a-4a5d-ac78-b923c2d9f567': { - id: '8c18747e-039a-4a5d-ac78-b923c2d9f567', - type: 'BulletedList', + type: 'Paragraph', meta: { order: 7, depth: 0, }, - value: [ - { - id: '89a52422-41fd-4bcf-b896-40dd1c5a4427', - type: 'bulleted-list', - children: [ - { - text: 'Example with full setup of Yoopta-Editor', - }, - ], - props: { - nodeType: 'block', - }, - }, - ], }, - 'ab2738ae-283e-4892-8572-f7dcc72096e5': { - id: 'ab2738ae-283e-4892-8572-f7dcc72096e5', + '2efa2d2e-1fdd-4c52-b4a6-4f49eb14b623': { + id: '2efa2d2e-1fdd-4c52-b4a6-4f49eb14b623', value: [ { - id: '807c7625-5cdf-42ea-bcb6-94837e34662a', - type: 'bulleted-list', + id: '3f8207f1-8a5f-4fa5-ba89-cec6b378d27f', + type: 'paragraph', children: [ { - text: 'Example with full setup of Yoopta-Editor', + text: 'sdasdsad', }, ], props: { @@ -353,88 +366,43 @@ const value = { }, }, ], - type: 'BulletedList', + type: 'Paragraph', meta: { order: 8, depth: 0, }, }, - '15c1bccf-2559-43fa-8708-bc92704acfc0': { - id: '15c1bccf-2559-43fa-8708-bc92704acfc0', + '55daff58-28e5-4b5e-be4e-3188c6873195': { + id: '55daff58-28e5-4b5e-be4e-3188c6873195', value: [ { - id: '9a82c42d-3d82-46c0-a288-18ceb737d6dd', - type: 'numbered-list', - children: [ - { - text: 'Example with full setup of Yoopta-Editor', - }, - ], - props: { - nodeType: 'block', - }, - }, - ], - type: 'NumberedList', - meta: { - order: 9, - depth: 0, - }, - }, - 'd44659d4-1ec0-4785-b606-99f260ede883': { - id: 'd44659d4-1ec0-4785-b606-99f260ede883', - value: [ - { - id: 'dd6e4ae1-ce5f-4549-81dd-7f95cf227e93', - type: 'numbered-list', - children: [ - { - text: 'Example with full setup of Yoopta-Editor', - }, - ], + id: '64354934-4895-4bba-8432-d9fed11f7d90', + type: 'heading-one', props: { nodeType: 'block', }, - }, - ], - type: 'NumberedList', - meta: { - order: 10, - depth: 0, - }, - }, - 'dc0fed6b-3a39-4aef-800c-2e69926f22f5': { - id: 'dc0fed6b-3a39-4aef-800c-2e69926f22f5', - value: [ - { - id: '6b1d5736-97c0-4fa8-84d5-ba9ab39423d6', - type: 'todo-list', children: [ { - text: 'Example with full setup of Yoopta-Editor', + text: '', }, ], - props: { - nodeType: 'block', - checked: false, - }, }, ], - type: 'TodoList', + type: 'HeadingOne', meta: { - order: 11, + order: 5, depth: 0, }, }, - 'b4566f8b-6796-4d34-87d3-dc3e0183b20b': { - id: 'b4566f8b-6796-4d34-87d3-dc3e0183b20b', + 'd57ca7fd-2197-4296-86a4-3570e0dad3d3': { + id: 'd57ca7fd-2197-4296-86a4-3570e0dad3d3', value: [ { - id: '67825b50-bdd9-472c-8e90-c5d9bb3b59c9', - type: 'todo-list', + id: '49d09142-5ed9-4780-8d20-1707ab7fb3bb', + type: 'paragraph', children: [ { - text: 'Example with full setup of Yoopta-Editor', + text: 'lk', }, ], props: { @@ -442,176 +410,77 @@ const value = { }, }, ], - type: 'TodoList', + type: 'Paragraph', meta: { - order: 12, + order: 0, depth: 0, }, }, - '19a53b1b-8bcc-48d0-b0b2-729f83efa669': { - id: '19a53b1b-8bcc-48d0-b0b2-729f83efa669', - type: 'Callout', + '3fd0ea93-13a4-4b83-8b00-72cac06c6ae6': { + id: '3fd0ea93-13a4-4b83-8b00-72cac06c6ae6', + type: 'Paragraph', meta: { - order: 6, + order: 1, depth: 0, }, value: [ { - id: '8893ddab-211a-4c7c-ae5f-86fc42bd66f0', - type: 'callout', - children: [ - { - text: 'Example with full setup of Yoopta-Editor', - }, - ], + id: '49d09142-5ed9-4780-8d20-1707ab7fb3bb', + type: 'paragraph', props: { nodeType: 'block', - theme: 'info', }, - }, - ], - }, - '1c645fd1-05fd-46f3-9207-05e2f0ccded5': { - id: '1c645fd1-05fd-46f3-9207-05e2f0ccded5', - value: [ - { - id: '7df52958-629a-4299-a0eb-5d061a9fa737', - type: 'code', children: [ { - text: "const TOOLS: Tools = {\n ActionMenu: {\n // render: ActionNotionMenuExample,\n render: DefaultActionMenuRender,\n tool: ActionMenuList,\n props: {\n // items: ['Callout', 'Blockquote', 'HeadingOne', 'HeadingTwo', 'HeadingThree', 'Image', 'File'],\n },\n },\n Toolbar: {\n render: DefaultToolbarRender,\n // render: NotionToolbar,\n tool: Toolbar,\n },\n LinkTool: {\n render: DefaultLinkToolRender,\n tool: LinkTool,\n },\n};", + text: 'lj', }, ], - props: { - nodeType: 'void', - language: 'javascript', - theme: 'VSCode', - }, }, ], - type: 'Code', - meta: { - order: 13, - depth: 0, - }, }, - '5ddf9adf-e2c1-4adf-a6f6-7ca32420c4a6': { - id: '5ddf9adf-e2c1-4adf-a6f6-7ca32420c4a6', - value: [ - { - id: 'ffb4741c-5322-4423-9026-80d8c4902611', - type: 'video', - children: [ - { - text: '', - }, - ], - props: { - nodeType: 'void', - src: 'https://res.cloudinary.com/ench-app/video/upload/v1715632823/Yoopta_Intro_ndwglr_mtptgj.mp4', - srcSet: null, - sizes: { - width: 2252, - height: 1624, - }, - provider: { - type: null, - id: '', - }, - settings: { - controls: false, - loop: true, - muted: true, - autoPlay: true, - }, - fit: 'cover', - }, - }, - ], - type: 'Video', + 'a28fdfde-3504-4d7a-84d2-2da951a9e757': { + id: 'a28fdfde-3504-4d7a-84d2-2da951a9e757', + type: 'Paragraph', meta: { - order: 15, + order: 2, depth: 0, }, - }, - '71bec89c-0a58-47aa-a895-15253ce72831': { - id: '71bec89c-0a58-47aa-a895-15253ce72831', value: [ { - id: 'f1128e50-6302-4fe9-bc5d-0a673c45afe1', - type: 'file', - children: [ - { - text: '', - }, - ], + id: '49d09142-5ed9-4780-8d20-1707ab7fb3bb', + type: 'paragraph', props: { - nodeType: 'void', - size: 96443, - name: 'GNYvP3UXUAAbPKZ', - src: 'https://res.cloudinary.com/ench-app/image/upload/v1715632830/GNYvP3UXUAAbPKZ_cgvvwb.jpg', - format: 'jpg', + nodeType: 'block', }, - }, - ], - type: 'File', - meta: { - order: 16, - depth: 0, - }, - }, - '499480f6-b8f9-4495-afdf-d860a23bb37e': { - id: '499480f6-b8f9-4495-afdf-d860a23bb37e', - value: [ - { - id: '8f80f994-b665-4566-96de-8eca9e8c77f8', - type: 'embed', children: [ { - text: '', + text: 'lk', }, ], - props: { - nodeType: 'void', - sizes: { - width: 532, - height: 327, - }, - provider: { - type: 'youtube', - id: 'O8ErPJqW67A', - url: 'https://www.youtube.com/watch?v=O8ErPJqW67A&list=RDCkx0ZdKzkbc&index=3&ab_channel=Hajime', - }, - }, }, ], - type: 'Embed', + }, + 'c5269d3b-3e7a-4fec-825b-74fb50ec5174': { + id: 'c5269d3b-3e7a-4fec-825b-74fb50ec5174', + type: 'Paragraph', meta: { - order: 17, + order: 3, depth: 0, }, - }, - '5c97c726-fe7e-4cb3-8486-52b1060757c0': { - id: '5c97c726-fe7e-4cb3-8486-52b1060757c0', value: [ { - id: '1a8648f1-400a-4928-a604-730cf343c7c9', + id: '49d09142-5ed9-4780-8d20-1707ab7fb3bb', type: 'paragraph', + props: { + nodeType: 'block', + }, children: [ { - text: '', + text: 'jk;', }, ], - props: { - nodeType: 'block', - }, }, ], - type: 'Paragraph', - meta: { - order: 18, - depth: 0, - }, }, }; @@ -630,13 +499,13 @@ const BasicExample = () => { }; return ( -
+
{ const isFocused = useYooptaFocused(); return ( -
+
diff --git a/packages/marks/package.json b/packages/marks/package.json index d82bdc560..6d848a7d8 100644 --- a/packages/marks/package.json +++ b/packages/marks/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/marks", - "version": "4.3.0", + "version": "4.5.0", "description": "Marks for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, diff --git a/packages/marks/rollup.config-1717602759865.cjs b/packages/marks/rollup.config-1717602759865.cjs new file mode 100644 index 000000000..63547c694 --- /dev/null +++ b/packages/marks/rollup.config-1717602759865.cjs @@ -0,0 +1,117 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +// const json = require('rollup-plugin-json'); +const commonjs = require('@rollup/plugin-commonjs'); +const nodeResolve = require('@rollup/plugin-node-resolve'); +const sourceMaps = require('rollup-plugin-sourcemaps'); +const replace = require('@rollup/plugin-replace'); +const terser = require('@rollup/plugin-terser'); +const typescript = require('rollup-plugin-typescript2'); +const svgr = require('@svgr/rollup'); +const peerDepsExternal = require('rollup-plugin-peer-deps-external'); +const postcss = require('rollup-plugin-postcss'); +const tailwindcss = require('tailwindcss'); +const autoprefixer = require('autoprefixer'); +const postcssNesting = require('postcss-nesting'); +const postcssScope = require('postcss-scope'); + +// const tailwindConfig = require('./tailwind.config.js'); +const isProd = process.env.NODE_ENV === 'production'; +const isDev = process.env.NODE_ENV === 'development'; + +function getPlugins({ tailwindConfig }) { + return [ + // json(), + peerDepsExternal(), + commonjs(), + nodeResolve(), + svgr({ + typescript: true, + }), + postcss({ + config: { + path: './postcss.config.js', + }, + extract: false, + modules: { + generateScopedName: isProd ? '[hash:base64:8]' : '[name]_[local]', + }, + autoModules: true, + minimize: true, + use: ['sass'], + plugins: [ + postcssNesting(), + tailwindcss({ + theme: { + extend: {}, + }, + plugins: [], + /* SHOULD BE REMOVED */ + // corePlugins: { + // preflight: false, + // }, + ...tailwindConfig, + content: tailwindConfig?.content || ['./src/**/*.{js,ts,jsx,tsx,mdx}'], + }), + autoprefixer(), + ], + }), + typescript({ + clean: true, + check: true, + abortOnError: false, + tsconfig: `./tsconfig.json`, + + tsconfigOverride: { + compilerOptions: { + declarationDir: isProd ? './dist/types' : undefined, + }, + }, + }), + sourceMaps(), + replace({ + exclude: 'node_modules/**', + 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), + preventAssignment: true, + }), + isProd && terser(), + ].filter(Boolean); +} + +/** + * @type {import('rollup').RollupOptions} + */ +function createRollupConfig({ pkg, tailwindConfig }) { + return { + input: `./src/index.ts`, + output: [ + { + format: 'es', + sourcemap: isDev, + globals: { react: 'React' }, + file: `./${pkg.module}`, + exports: 'named', + }, + // { + // file: `./${pkg.main}`, + // format: 'cjs', + // globals: { react: 'React' }, + // exports: 'named', + // sourcemap: isDev, + // }, + ], + plugins: getPlugins({ tailwindConfig }), + cache: isDev, + external: [...Object.keys(pkg.peerDependencies)], + }; +} + +const pkg = require('./package.json'); +var rollup_config = createRollupConfig({ + pkg, + tailwindConfig: { content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'], prefix: 'yoo-marks-' }, +}); + +exports.default = rollup_config; diff --git a/packages/plugins/accordion/README.md b/packages/plugins/accordion/README.md new file mode 100644 index 000000000..8b44db00b --- /dev/null +++ b/packages/plugins/accordion/README.md @@ -0,0 +1,11 @@ +# `yoopta-accordion` + +> TODO: description + +## Usage + +``` +const accordion = require('yoopta-accordion'); + +// TODO: DEMONSTRATE API +``` diff --git a/packages/plugins/accordion/package.json b/packages/plugins/accordion/package.json new file mode 100644 index 000000000..cc24965e6 --- /dev/null +++ b/packages/plugins/accordion/package.json @@ -0,0 +1,41 @@ +{ + "name": "@yoopta/accordion", + "version": "4.5.0", + "description": "Accordion plugin for Yoopta Editor", + "author": "Darginec05 ", + "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", + "license": "MIT", + "private": false, + "main": "dist/index.js", + "type": "module", + "module": "dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist/" + ], + "peerDependencies": { + "@yoopta/editor": ">=4.0.0", + "react": ">=17.0.2", + "react-dom": ">=17.0.2" + }, + "dependencies": { + "lucide-react": "^0.378.0" + }, + "publishConfig": { + "registry": "https://registry.yarnpkg.com" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Darginec05/Editor-Yoopta.git" + }, + "scripts": { + "test": "node ./__tests__/yoopta-accordion.test.js", + "start": "rollup --config rollup.config.js --watch --bundleConfigAsCjs --environment NODE_ENV:development", + "prepublishOnly": "yarn build", + "build": "rollup --config rollup.config.js --bundleConfigAsCjs --environment NODE_ENV:production" + }, + "bugs": { + "url": "https://github.com/Darginec05/Editor-Yoopta/issues" + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" +} diff --git a/packages/plugins/accordion/rollup.config.js b/packages/plugins/accordion/rollup.config.js new file mode 100644 index 000000000..8e70e2e3a --- /dev/null +++ b/packages/plugins/accordion/rollup.config.js @@ -0,0 +1,10 @@ +import { createRollupConfig } from '../../../config/rollup'; + +const pkg = require('./package.json'); +export default createRollupConfig({ + pkg, + tailwindConfig: { + content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'], + prefix: 'yoo-accordion-', + }, +}); diff --git a/packages/plugins/accordion/src/index.ts b/packages/plugins/accordion/src/index.ts new file mode 100644 index 000000000..fbb85b150 --- /dev/null +++ b/packages/plugins/accordion/src/index.ts @@ -0,0 +1,12 @@ +import { Accordion } from './plugin'; +import { AccordionItemElement } from './types'; +import './styles.css'; + +declare module 'slate' { + interface CustomTypes { + Element: AccordionItemElement; + } +} + +export default Accordion; +export { AccordionItemElement }; diff --git a/packages/plugins/accordion/src/plugin/index.tsx b/packages/plugins/accordion/src/plugin/index.tsx new file mode 100644 index 000000000..be65410ff --- /dev/null +++ b/packages/plugins/accordion/src/plugin/index.tsx @@ -0,0 +1,140 @@ +import { Blocks, Elements, YooptaPlugin } from '@yoopta/editor'; +import { AccordionElementKeys, AccordionListItemProps } from '../types'; +import { AccordionList } from '../renders/AccordionList'; +import { AccordionListItem } from '../renders/AccordionListItem'; +import { AccordionItemHeading } from '../renders/AccordionItemHeading'; +import { AccordionItemContent } from '../renders/AccordionItemContent'; +import { Transforms } from 'slate'; +import { ListCollapse } from 'lucide-react'; + +const ACCORDION_ELEMENTS = { + AccordionList: 'accordion-list', + AccordionListItem: 'accordion-list-item', + AccordionListItemHeading: 'accordion-list-item-heading', + AccordionListItemContent: 'accordion-list-item-content', +}; + +const Accordion = new YooptaPlugin({ + type: 'Accordion', + elements: { + 'accordion-list': { + asRoot: true, + render: AccordionList, + children: ['accordion-list-item'], + }, + 'accordion-list-item': { + render: AccordionListItem, + children: ['accordion-list-item-heading', 'accordion-list-item-content'], + props: { isExpanded: true }, + }, + 'accordion-list-item-heading': { + render: AccordionItemHeading, + }, + 'accordion-list-item-content': { + render: AccordionItemContent, + }, + }, + events: { + onKeyDown(editor, slate, { hotkeys, currentBlock }) { + return (event) => { + if (hotkeys.isBackspace(event)) { + if (!slate.selection) return; + + const listItems = Elements.getElementChildren(editor, currentBlock.id, { type: 'accordion-list' }); + const accordionListItemEntry = Elements.getElementEntry(editor, currentBlock.id, { + path: slate.selection, + type: 'accordion-list-item', + }); + + const listItemChildPath = accordionListItemEntry?.[1] || slate.selection.anchor.path; + const currentElement = Elements.getElement(editor, currentBlock.id); + + const isHeadingEmpty = Elements.isElementEmpty(editor, currentBlock.id, { + type: 'accordion-list-item-heading', + path: listItemChildPath, + }); + + const isContentEmpty = Elements.isElementEmpty(editor, currentBlock.id, { + type: 'accordion-list-item-content', + path: listItemChildPath, + }); + + if (isContentEmpty && currentElement?.type === ACCORDION_ELEMENTS.AccordionListItemContent) { + event.preventDefault(); + return; + } + + if (isHeadingEmpty && currentElement?.type === ACCORDION_ELEMENTS.AccordionListItemHeading) { + event.preventDefault(); + + if (listItems?.length === 1) { + Blocks.deleteBlock(editor, { blockId: currentBlock.id }); + return; + } + + if (accordionListItemEntry) { + const [, listItemPath] = accordionListItemEntry; + + Elements.deleteElement(editor, currentBlock.id, { + type: 'accordion-list-item', + path: listItemPath, + }); + } + } + } + + if (hotkeys.isSelect(event)) { + event.preventDefault(); + + if (slate.selection) { + Transforms.select(slate, slate.selection.anchor.path.slice(0, -1)); + } + + return; + } + + if (hotkeys.isEnter(event)) { + event.preventDefault(); + + const currentElement = Elements.getElement(editor, currentBlock.id); + const listItemEntry = Elements.getElementEntry(editor, currentBlock.id, { type: 'accordion-list-item' }); + + if (currentElement?.type === ACCORDION_ELEMENTS.AccordionListItemHeading && listItemEntry) { + const [listItem, listItemPath] = listItemEntry; + + Elements.updateElement( + editor, + currentBlock.id, + { + type: ACCORDION_ELEMENTS.AccordionListItem, + props: { + isExpanded: !listItem?.props.isExpanded, + }, + }, + { path: listItemPath }, + ); + + return; + } + + Elements.createElement( + editor, + currentBlock.id, + { type: 'accordion-list-item', props: { isExpanded: true } }, + { path: 'next', focus: true, split: false }, + ); + } + }; + }, + }, + options: { + display: { + title: 'Accordion', + description: 'Create collapses', + icon: , + }, + shortcuts: ['accordion'], + }, +}); + +export { Accordion }; diff --git a/packages/plugins/accordion/src/react-svg.d.ts b/packages/plugins/accordion/src/react-svg.d.ts new file mode 100644 index 000000000..3f79836c9 --- /dev/null +++ b/packages/plugins/accordion/src/react-svg.d.ts @@ -0,0 +1,6 @@ +declare module '*.svg' { + import { ReactElement, SVGProps } from 'react'; + + const content: (props: SVGProps) => ReactElement; + export default content; +} diff --git a/packages/plugins/accordion/src/renders/AccordionItemContent.tsx b/packages/plugins/accordion/src/renders/AccordionItemContent.tsx new file mode 100644 index 000000000..ac251d770 --- /dev/null +++ b/packages/plugins/accordion/src/renders/AccordionItemContent.tsx @@ -0,0 +1,25 @@ +import { Elements, PluginElementRenderProps, useYooptaEditor } from '@yoopta/editor'; +import { Path } from 'slate'; + +export const AccordionItemContent = (props: PluginElementRenderProps) => { + const { attributes, children, blockId, element } = props; + const editor = useYooptaEditor(); + + const parentPath = Elements.getParentElementPath(editor, blockId, element); + const parentListItem = Elements.getElement(editor, blockId, { + path: parentPath, + type: 'accordion-list-item', + }); + + const isExpanded = parentListItem?.props?.isExpanded; + + return ( +
+
{children}
+
+ ); +}; diff --git a/packages/plugins/accordion/src/renders/AccordionItemHeading.tsx b/packages/plugins/accordion/src/renders/AccordionItemHeading.tsx new file mode 100644 index 000000000..23a93fcc7 --- /dev/null +++ b/packages/plugins/accordion/src/renders/AccordionItemHeading.tsx @@ -0,0 +1,125 @@ +import { PluginElementRenderProps, useYooptaEditor, useYooptaReadOnly, Elements, Blocks } from '@yoopta/editor'; +import { ChevronUp, Plus, TrashIcon } from 'lucide-react'; +import { Path } from 'slate'; +import { MouseEvent } from 'react'; + +export const AccordionItemHeading = (props: PluginElementRenderProps) => { + const { attributes, children, blockId, element } = props; + const editor = useYooptaEditor(); + const isReadOnly = useYooptaReadOnly(); + + const onToggleExpand = (event: MouseEvent) => { + event.stopPropagation(); + + const parentPath = Elements.getParentElementPath(editor, blockId, element)!; + const listItemElement = Elements.getElement(editor, blockId, { + path: parentPath, + type: 'accordion-list-item', + }); + + if (listItemElement) { + Elements.updateElement( + editor, + blockId, + { type: 'accordion-list-item', props: { isExpanded: !listItemElement.props?.isExpanded } }, + { path: parentPath }, + ); + } + }; + + const onAddAccordionItem = (e: MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + + const parentPath = Elements.getParentElementPath(editor, blockId, element)!; + const listItemPath = parentPath; + const nextListItemPath = Path.next(listItemPath); + + Elements.createElement( + editor, + blockId, + { type: 'accordion-list-item', props: { isExpanded: true } }, + { path: nextListItemPath, focus: true }, + ); + }; + + const onDeleteAccordionItem = (e: MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + + const parentPath = Elements.getParentElementPath(editor, blockId, element); + + const accordionListItems = Elements.getElementChildren(editor, blockId, { + path: parentPath, + type: 'accordion-list', + }); + + if (accordionListItems?.length === 1) { + Blocks.deleteBlock(editor, { blockId }); + return; + } + + if (parentPath) { + Elements.deleteElement(editor, blockId, { type: 'accordion-list-item', path: parentPath }); + } + }; + + const parentPath = Elements.getParentElementPath(editor, blockId, element); + const nodeEl = Elements.getElement(editor, blockId, { path: parentPath, type: 'accordion-list-item' }); + const isExpanded = nodeEl?.props?.isExpanded; + + return ( +
+ {children} +
+ {!isReadOnly && ( + <> + + + + )} + +
+
+ ); +}; + +// - Accordion +// - list +// - list-item +// - list-item-heading +// - list-item-content +// - list-item +// - list-item-heading +// - list-item-content +// - list-item +// - list-item-heading +// - list-item-content +// - Paragraph +// - paragraph +// - Image +// - image diff --git a/packages/plugins/accordion/src/renders/AccordionList.tsx b/packages/plugins/accordion/src/renders/AccordionList.tsx new file mode 100644 index 000000000..1ad9193d4 --- /dev/null +++ b/packages/plugins/accordion/src/renders/AccordionList.tsx @@ -0,0 +1,7 @@ +import { PluginElementRenderProps } from '@yoopta/editor'; + +export const AccordionList = (props: PluginElementRenderProps) => { + const { attributes, children } = props; + + return
{children}
; +}; diff --git a/packages/plugins/accordion/src/renders/AccordionListItem.tsx b/packages/plugins/accordion/src/renders/AccordionListItem.tsx new file mode 100644 index 000000000..179a1e49c --- /dev/null +++ b/packages/plugins/accordion/src/renders/AccordionListItem.tsx @@ -0,0 +1,11 @@ +import { PluginElementRenderProps } from '@yoopta/editor'; + +export const AccordionListItem = (props: PluginElementRenderProps) => { + const { attributes, children } = props; + + return ( +
+ {children} +
+ ); +}; diff --git a/packages/plugins/accordion/src/styles.css b/packages/plugins/accordion/src/styles.css new file mode 100644 index 000000000..1ae5e435f --- /dev/null +++ b/packages/plugins/accordion/src/styles.css @@ -0,0 +1,17 @@ +@tailwind utilities; + +.yoopta-accordion-list { + @apply yoo-accordion-p-0 yoo-accordion-m-0 yoo-accordion-my-2 +} + +.yoopta-accordion-list-item { + @apply yoo-accordion-border yoo-accordion-border-[#525252] yoo-accordion-bg-[#303030] yoo-accordion-rounded-none yoo-accordion-relative yoo-accordion-w-full +} + +.yoopta-accordion-list-item-heading { + @apply yoo-accordion-mb-0 yoo-accordion-relative yoo-accordion-w-full yoo-accordion-items-center yoo-accordion-border-0 yoo-accordion-rounded-none yoo-accordion-py-4 yoo-accordion-pr-8 yoo-accordion-text-left yoo-accordion-cursor-pointer yoo-accordion-relative yoo-accordion-text-base yoo-accordion-font-medium +} + +.yoopta-accordion-list-item-content { + @apply yoo-accordion-overflow-hidden yoo-accordion-text-sm +} \ No newline at end of file diff --git a/packages/plugins/accordion/src/types.ts b/packages/plugins/accordion/src/types.ts new file mode 100644 index 000000000..13cea2041 --- /dev/null +++ b/packages/plugins/accordion/src/types.ts @@ -0,0 +1,13 @@ +import { SlateElement } from '@yoopta/editor'; + +export type AccordionElementKeys = + | 'accordion-list' + | 'accordion-list-item' + | 'accordion-list-item-heading' + | 'accordion-list-item-content'; + +export type AccordionListItemProps = { + isExpanded: boolean; +}; + +export type AccordionItemElement = SlateElement<'accordion-list-item', AccordionListItemProps>; diff --git a/packages/plugins/accordion/tsconfig.json b/packages/plugins/accordion/tsconfig.json new file mode 100644 index 000000000..ab104acf8 --- /dev/null +++ b/packages/plugins/accordion/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../config/tsconfig.base.json", + "include": ["react-svg.d.ts", "css-modules.d.ts", "src"], + "exclude": ["dist", "src/**/*.test.tsx", "src/**/*.stories.tsx"], + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "references": [ + { + "path": "../../core/editor" + } + ] +} diff --git a/packages/plugins/blockquote/package.json b/packages/plugins/blockquote/package.json index 2520d41db..8d52a150a 100644 --- a/packages/plugins/blockquote/package.json +++ b/packages/plugins/blockquote/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/blockquote", - "version": "4.4.1", + "version": "4.5.0", "description": "Blockquote plugin for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -33,5 +33,6 @@ }, "bugs": { "url": "https://github.com/Darginec05/Editor-Yoopta/issues" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/blockquote/src/ui/Blockquote.tsx b/packages/plugins/blockquote/src/ui/Blockquote.tsx index 5b4eefd29..6178d1676 100644 --- a/packages/plugins/blockquote/src/ui/Blockquote.tsx +++ b/packages/plugins/blockquote/src/ui/Blockquote.tsx @@ -4,12 +4,7 @@ const BlockquoteRender = (props: PluginElementRenderProps) => { const { className = '', ...htmlAttrs } = props.HTMLAttributes || {}; return ( -
+
{props.children}
); diff --git a/packages/plugins/callout/package.json b/packages/plugins/callout/package.json index 1c7ae1b53..d6209b4b1 100644 --- a/packages/plugins/callout/package.json +++ b/packages/plugins/callout/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/callout", - "version": "4.4.1", + "version": "4.5.0", "description": "Callout plugin for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -33,5 +33,6 @@ }, "bugs": { "url": "https://github.com/Darginec05/Editor-Yoopta/issues" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/callout/src/ui/Callout.tsx b/packages/plugins/callout/src/ui/Callout.tsx index d74b03e2c..e0bb8baef 100644 --- a/packages/plugins/callout/src/ui/Callout.tsx +++ b/packages/plugins/callout/src/ui/Callout.tsx @@ -10,12 +10,7 @@ const CalloutRender = ({ element, attributes, children, blockId, HTMLAttributes const { theme = 'default' } = element.props || {}; return ( -
+
{!isReadOnly && } {children}
diff --git a/packages/plugins/callout/src/ui/CalloutBlockOptions.tsx b/packages/plugins/callout/src/ui/CalloutBlockOptions.tsx index c365f6d5a..c6e734dd2 100644 --- a/packages/plugins/callout/src/ui/CalloutBlockOptions.tsx +++ b/packages/plugins/callout/src/ui/CalloutBlockOptions.tsx @@ -1,4 +1,4 @@ -import { UI, YooEditor, YooptaBlockData } from '@yoopta/editor'; +import { Elements, UI, YooEditor, YooptaBlockData } from '@yoopta/editor'; import SuccessIcon from '../icons/success.svg'; import WarningIcon from '../icons/warning.svg'; import ErrorIcon from '../icons/error.svg'; @@ -18,8 +18,11 @@ type Props = { const CalloutBlockOptions = ({ editor, block, props: calloutProps }: Props) => { const onChangeTheme = (theme: CalloutTheme) => { - editor.blocks.Callout.updateElement(block.id, 'callout', { - theme, + Elements.updateElement(editor, block.id, { + type: 'callout', + props: { + theme, + }, }); }; diff --git a/packages/plugins/code/package.json b/packages/plugins/code/package.json index 7521d2cac..17399eb3d 100644 --- a/packages/plugins/code/package.json +++ b/packages/plugins/code/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/code", - "version": "4.4.1", + "version": "4.5.0", "description": "Code plugin with syntax highlighting for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -68,5 +68,6 @@ }, "devDependencies": { "check-peer-dependencies": "^4.3.0" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/code/src/ui/Code.tsx b/packages/plugins/code/src/ui/Code.tsx index 746b1d3f6..0db97b541 100644 --- a/packages/plugins/code/src/ui/Code.tsx +++ b/packages/plugins/code/src/ui/Code.tsx @@ -61,7 +61,7 @@ const CodeEditor = ({ blockId }: PluginCustomEditorRenderProps) => { return (
diff --git a/packages/plugins/embed/package.json b/packages/plugins/embed/package.json index 68c1a1511..2ddd562d8 100644 --- a/packages/plugins/embed/package.json +++ b/packages/plugins/embed/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/embed", - "version": "4.4.1", + "version": "4.5.0", "description": "Embed plugin for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -38,5 +38,6 @@ "@floating-ui/react": "^0.26.9", "@radix-ui/react-icons": "^1.3.0", "re-resizable": "^6.9.11" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/embed/src/providers/Twitter.tsx b/packages/plugins/embed/src/providers/Twitter.tsx index dbc225c51..ffaf1cf71 100644 --- a/packages/plugins/embed/src/providers/Twitter.tsx +++ b/packages/plugins/embed/src/providers/Twitter.tsx @@ -1,4 +1,4 @@ -import { useYooptaEditor } from '@yoopta/editor'; +import { Elements, useYooptaEditor } from '@yoopta/editor'; import { useEffect, useRef } from 'react'; import { useIntersectionObserver } from '../hooks/useIntersectionObserver'; import { EmbedElementProps, EmbedPluginElements, ProviderRenderProps } from '../types'; @@ -32,10 +32,13 @@ function Twitter({ provider, blockId }: ProviderRenderProps) { width: 550, }); - editor.blocks.Embed.updateElement(blockId, 'embed', { - sizes: { - width: 'auto', - height: 'auto', + Elements.updateElement(editor, blockId, { + type: 'embed', + props: { + sizes: { + width: 'auto', + height: 'auto', + }, }, }); } diff --git a/packages/plugins/embed/src/ui/Embed.tsx b/packages/plugins/embed/src/ui/Embed.tsx index dda0a95ce..d4059793e 100644 --- a/packages/plugins/embed/src/ui/Embed.tsx +++ b/packages/plugins/embed/src/ui/Embed.tsx @@ -6,6 +6,7 @@ import { useYooptaPluginOptions, useBlockSelected, useYooptaReadOnly, + Elements, } from '@yoopta/editor'; import { Resizable, ResizableProps } from 're-resizable'; import { useEffect, useMemo, useState } from 'react'; @@ -57,8 +58,11 @@ const EmbedRender = ({ element, attributes, children, blockId }: PluginElementRe setSizes({ width: ref.offsetWidth, height: ref.offsetHeight }); }, onResizeStop: (e, direction, ref) => { - editor.blocks.Embed.updateElement(blockId, 'embed', { - sizes: { width: ref.offsetWidth, height: ref.offsetHeight }, + Elements.updateElement(editor, blockId, { + type: 'embed', + props: { + sizes: { width: ref.offsetWidth, height: ref.offsetHeight }, + }, }); }, handleComponent: { @@ -79,7 +83,6 @@ const EmbedRender = ({ element, attributes, children, blockId }: PluginElementRe return (
)} - + {!isReadOnly && } {children} diff --git a/packages/plugins/embed/src/ui/EmbedComponent.tsx b/packages/plugins/embed/src/ui/EmbedComponent.tsx index 3d0454c81..f6f218b32 100644 --- a/packages/plugins/embed/src/ui/EmbedComponent.tsx +++ b/packages/plugins/embed/src/ui/EmbedComponent.tsx @@ -6,8 +6,8 @@ import { YouTube } from '../providers/Youtube'; import { EmbedElementProps } from '../types'; type EmbedComponentProps = Omit & { - width: number; - height: number; + width: number | 'auto'; + height: number | 'auto'; blockId: string; }; diff --git a/packages/plugins/embed/src/ui/EmbedLinkUploader.tsx b/packages/plugins/embed/src/ui/EmbedLinkUploader.tsx index c4728119d..460aea8fb 100644 --- a/packages/plugins/embed/src/ui/EmbedLinkUploader.tsx +++ b/packages/plugins/embed/src/ui/EmbedLinkUploader.tsx @@ -1,4 +1,4 @@ -import { useYooptaEditor } from '@yoopta/editor'; +import { Elements, useYooptaEditor } from '@yoopta/editor'; import { ChangeEvent, useState } from 'react'; import { EmbedElementProps, EmbedPluginElements, EmbedProvider } from '../types'; import { getProvider, ProviderGetters } from '../utils/providers'; @@ -20,8 +20,11 @@ const EmbedLinkUploader = ({ blockId, onClose }) => { provider.id = value; } - editor.blocks.Embed.updateElement(blockId, 'embed', { - provider, + Elements.updateElement(editor, blockId, { + type: 'embed', + props: { + provider, + }, }); onClose(); diff --git a/packages/plugins/file/package.json b/packages/plugins/file/package.json index b098d3c64..281eba88a 100644 --- a/packages/plugins/file/package.json +++ b/packages/plugins/file/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/file", - "version": "4.4.1", + "version": "4.5.0", "description": "File plugin for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -37,5 +37,6 @@ "dependencies": { "@floating-ui/react": "^0.26.9", "@radix-ui/react-icons": "^1.3.0" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/file/src/ui/File.tsx b/packages/plugins/file/src/ui/File.tsx index 8c1fe09b9..abc05a052 100644 --- a/packages/plugins/file/src/ui/File.tsx +++ b/packages/plugins/file/src/ui/File.tsx @@ -27,7 +27,6 @@ const FileRender = ({ element, attributes, children, blockId }: PluginElementRen return (
const response = await options?.onUpload(file); const format = response.format || file.name.split('.').pop() || null; - editor.blocks.File.updateElement(blockId, 'file', { - src: response.src, - name: response.name || file.name, - size: response.size || file.size, - format: format, + Elements.updateElement(editor, blockId, { + type: 'file', + props: { + src: response.src, + name: response.name || file.name, + size: response.size || file.size, + format: format, + }, }); } catch (error) { } finally { diff --git a/packages/plugins/headings/package.json b/packages/plugins/headings/package.json index 4d4c4e48a..d840297cb 100644 --- a/packages/plugins/headings/package.json +++ b/packages/plugins/headings/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/headings", - "version": "4.4.1", + "version": "4.5.0", "description": "Headings plugin for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -38,5 +38,6 @@ }, "bugs": { "url": "https://github.com/Darginec05/Editor-Yoopta/issues" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/headings/src/plugin/HeadingOne.tsx b/packages/plugins/headings/src/plugin/HeadingOne.tsx index f81307f31..9628dec6b 100644 --- a/packages/plugins/headings/src/plugin/HeadingOne.tsx +++ b/packages/plugins/headings/src/plugin/HeadingOne.tsx @@ -4,14 +4,7 @@ const HeadingOneRender = ({ attributes, children, element, HTMLAttributes = {} } const { className = '', ...htmlAttrs } = HTMLAttributes; return ( -

+

{children}

); diff --git a/packages/plugins/headings/src/plugin/HeadingThree.tsx b/packages/plugins/headings/src/plugin/HeadingThree.tsx index 43a8a2c37..5def96ae6 100644 --- a/packages/plugins/headings/src/plugin/HeadingThree.tsx +++ b/packages/plugins/headings/src/plugin/HeadingThree.tsx @@ -7,7 +7,6 @@ const HeadingThreeRender = ({ attributes, children, element, HTMLAttributes = {}

+

{children}

); diff --git a/packages/plugins/image/package.json b/packages/plugins/image/package.json index 0608944d8..f401073cc 100644 --- a/packages/plugins/image/package.json +++ b/packages/plugins/image/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/image", - "version": "4.4.1", + "version": "4.5.0", "description": "Image plugin for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -38,5 +38,6 @@ "@floating-ui/react": "^0.26.9", "@radix-ui/react-icons": "^1.3.0", "re-resizable": "^6.9.11" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/image/src/ui/EmbedUploader.tsx b/packages/plugins/image/src/ui/EmbedUploader.tsx index 07765f92a..e1ac7b85f 100644 --- a/packages/plugins/image/src/ui/EmbedUploader.tsx +++ b/packages/plugins/image/src/ui/EmbedUploader.tsx @@ -1,4 +1,4 @@ -import { useYooptaEditor } from '@yoopta/editor'; +import { Elements, useYooptaEditor } from '@yoopta/editor'; import { ChangeEvent, useState } from 'react'; const EmbedUploader = ({ blockId, onClose }) => { @@ -10,8 +10,11 @@ const EmbedUploader = ({ blockId, onClose }) => { const embed = () => { if (value.length === 0) return; - editor.blocks.Image.updateElement(blockId, 'image', { - src: value, + Elements.updateElement(editor, blockId, { + type: 'image', + props: { + src: value, + }, }); onClose(); diff --git a/packages/plugins/image/src/ui/FileUploader.tsx b/packages/plugins/image/src/ui/FileUploader.tsx index 7625c011a..e15df7228 100644 --- a/packages/plugins/image/src/ui/FileUploader.tsx +++ b/packages/plugins/image/src/ui/FileUploader.tsx @@ -1,4 +1,4 @@ -import { useYooptaEditor, useYooptaPluginOptions } from '@yoopta/editor'; +import { Elements, useYooptaEditor, useYooptaPluginOptions } from '@yoopta/editor'; import { ImageElementProps, ImagePluginElements, ImagePluginOptions } from '../types'; type Props = { @@ -23,12 +23,15 @@ const FileUploader = ({ accept = 'image/*', onClose, blockId, onSetLoading }: Pr try { const data = await options?.onUpload(file); - editor.blocks.Image.updateElement(blockId, 'image', { - src: data.src, - alt: data.alt, - sizes: data.sizes, - bgColor: data.bgColor, - fit: data.fit || 'fill', + Elements.updateElement(editor, blockId, { + type: 'image', + props: { + src: data.src, + alt: data.alt, + sizes: data.sizes, + bgColor: data.bgColor, + fit: data.fit || 'fill', + }, }); } catch (error) { } finally { diff --git a/packages/plugins/image/src/ui/Image.tsx b/packages/plugins/image/src/ui/Image.tsx index a44156acb..1098ff885 100644 --- a/packages/plugins/image/src/ui/Image.tsx +++ b/packages/plugins/image/src/ui/Image.tsx @@ -6,6 +6,7 @@ import { useYooptaPluginOptions, useBlockSelected, useYooptaReadOnly, + Elements, } from '@yoopta/editor'; import { Resizable, ResizableProps } from 're-resizable'; import { useEffect, useMemo, useState } from 'react'; @@ -60,8 +61,11 @@ const ImageRender = ({ element, attributes, children, blockId }: PluginElementRe }, onResizeStop: (e, direction, ref) => { if (isReadOnly) return; - editor.blocks.Image.updateElement(blockId, 'image', { - sizes: { width: ref.offsetWidth, height: ref.offsetHeight }, + Elements.updateElement(editor, blockId, { + type: 'image', + props: { + sizes: { width: ref.offsetWidth, height: ref.offsetHeight }, + }, }); }, handleComponent: { @@ -84,7 +88,6 @@ const ImageRender = ({ element, attributes, children, blockId }: PluginElementRe return (
{ const onCover = () => { - editor.blocks.Image.updateElement(block.id, 'image', { fit: 'cover' }); + Elements.updateElement(editor, block.id, { + type: 'image', + props: { fit: 'cover' }, + }); }; const onFit = () => { - editor.blocks.Image.updateElement(block.id, 'image', { fit: 'contain' }); + Elements.updateElement(editor, block.id, { + type: 'image', + props: { fit: 'contain' }, + }); }; const onFill = () => { - editor.blocks.Image.updateElement(block.id, 'image', { fit: 'fill' }); + Elements.updateElement(editor, block.id, { + type: 'image', + props: { fit: 'fill' }, + }); }; const onDownload = () => { diff --git a/packages/plugins/link/package.json b/packages/plugins/link/package.json index 6b6efbe0c..ccd0075df 100644 --- a/packages/plugins/link/package.json +++ b/packages/plugins/link/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/link", - "version": "4.4.1", + "version": "4.5.0", "description": "Link plugin for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -33,5 +33,6 @@ }, "bugs": { "url": "https://github.com/Darginec05/Editor-Yoopta/issues" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/link/src/ui/LinkRender.tsx b/packages/plugins/link/src/ui/LinkRender.tsx index a0301181e..42a851210 100644 --- a/packages/plugins/link/src/ui/LinkRender.tsx +++ b/packages/plugins/link/src/ui/LinkRender.tsx @@ -29,7 +29,6 @@ const LinkRender = (props: PluginElementRenderProps) => { return ( ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -33,5 +33,6 @@ }, "bugs": { "url": "https://github.com/Darginec05/Editor-Yoopta/issues" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/lists/src/elements/BulletedList.tsx b/packages/plugins/lists/src/elements/BulletedList.tsx index a47471d9d..afc9d5c67 100644 --- a/packages/plugins/lists/src/elements/BulletedList.tsx +++ b/packages/plugins/lists/src/elements/BulletedList.tsx @@ -4,12 +4,7 @@ const BulletedListRender = ({ attributes, element, children, HTMLAttributes = {} const { className = '', ...htmlAttrs } = HTMLAttributes; return ( -
+
diff --git a/packages/plugins/lists/src/elements/NumberedList.tsx b/packages/plugins/lists/src/elements/NumberedList.tsx index 9dc01b325..3a86a3bbf 100644 --- a/packages/plugins/lists/src/elements/NumberedList.tsx +++ b/packages/plugins/lists/src/elements/NumberedList.tsx @@ -21,12 +21,7 @@ const NumberedListRender = ({ const count = index + 1; return ( -
+
{count}. diff --git a/packages/plugins/lists/src/elements/TodoList.tsx b/packages/plugins/lists/src/elements/TodoList.tsx index 67a449f34..530dc9455 100644 --- a/packages/plugins/lists/src/elements/TodoList.tsx +++ b/packages/plugins/lists/src/elements/TodoList.tsx @@ -1,4 +1,4 @@ -import { PluginElementRenderProps, useYooptaEditor } from '@yoopta/editor'; +import { Elements, PluginElementRenderProps, useYooptaEditor } from '@yoopta/editor'; import { TodoListElementProps } from '../types'; const TodoListRender = ({ attributes, element, children, blockId, HTMLAttributes = {} }: PluginElementRenderProps) => { @@ -11,15 +11,9 @@ const TodoListRender = ({ attributes, element, children, blockId, HTMLAttributes }; return ( -
+
editor.blocks.TodoList.updateElement(blockId, 'todo-list', { checked: !checked })} + onClick={() => Elements.updateElement(editor, blockId, { type: 'todo-list', props: { checked: !checked } })} contentEditable={false} className="yoopta-todo-list-checkbox" > diff --git a/packages/plugins/lists/src/events/onKeyDown.tsx b/packages/plugins/lists/src/events/onKeyDown.tsx index bcf7dee2d..91f14f1a2 100644 --- a/packages/plugins/lists/src/events/onKeyDown.tsx +++ b/packages/plugins/lists/src/events/onKeyDown.tsx @@ -5,6 +5,7 @@ import { YooptaBlockData, buildBlockData, buildBlockElement, + Elements, } from '@yoopta/editor'; import { Editor, Element, Path } from 'slate'; import { BulletedListElement, NumberedListElement, TodoListElement } from '../types'; @@ -31,7 +32,7 @@ export function onKeyDown(editor: YooEditor, slate: Editor, { hotkeys, defaultBl const [todoListNode] = nodeEntry as [TodoListElement, Path]; const checked = todoListNode.props?.checked || false; - editor.blocks.TodoList.updateElement(block.id, 'todo-list', { checked: !checked }); + Elements.updateElement(editor, block.id, { type: 'todo-list', props: { checked: !checked } }); return; } diff --git a/packages/plugins/mention/package.json b/packages/plugins/mention/package.json index cb9934a5e..f16982196 100644 --- a/packages/plugins/mention/package.json +++ b/packages/plugins/mention/package.json @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, diff --git a/packages/plugins/mention/src/ui/MentionRender.tsx b/packages/plugins/mention/src/ui/MentionRender.tsx index 0b265b5f5..8e66e4db4 100644 --- a/packages/plugins/mention/src/ui/MentionRender.tsx +++ b/packages/plugins/mention/src/ui/MentionRender.tsx @@ -1,7 +1,7 @@ import { PluginElementRenderProps } from '@yoopta/editor'; import { useSelected } from 'slate-react'; -const MentionRender = (props: PluginElementRenderProps) => { +const MentionRender = (props: PluginElementRenderProps) => { const { url, target, rel, character } = props.element.props || {}; const selected = useSelected(); @@ -13,7 +13,6 @@ const MentionRender = (props: PluginElementRenderProps) => { return ( ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -33,5 +33,6 @@ }, "bugs": { "url": "https://github.com/Darginec05/Editor-Yoopta/issues" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/paragraph/src/ui/Paragraph.tsx b/packages/plugins/paragraph/src/ui/Paragraph.tsx index 56e38beb9..16063f77b 100644 --- a/packages/plugins/paragraph/src/ui/Paragraph.tsx +++ b/packages/plugins/paragraph/src/ui/Paragraph.tsx @@ -4,12 +4,7 @@ const ParagraphRender = (props: PluginElementRenderProps) => { const { className = '', ...htmlAttrs } = props.HTMLAttributes || {}; return ( -

+

{props.children}

); diff --git a/packages/plugins/table/package.json b/packages/plugins/table/package.json index 3d18c6935..d3e6be4fe 100644 --- a/packages/plugins/table/package.json +++ b/packages/plugins/table/package.json @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, diff --git a/packages/plugins/table/src/components/Table.tsx b/packages/plugins/table/src/components/Table.tsx index 9cf4caee1..c2b40cc73 100644 --- a/packages/plugins/table/src/components/Table.tsx +++ b/packages/plugins/table/src/components/Table.tsx @@ -2,7 +2,7 @@ import { PluginElementRenderProps } from '@yoopta/editor'; const TableRender = ({ attributes, children, element }: PluginElementRenderProps) => { return ( -
+
{children}
diff --git a/packages/plugins/table/src/components/TableCell.tsx b/packages/plugins/table/src/components/TableCell.tsx index 3f606be79..9eddd963e 100644 --- a/packages/plugins/table/src/components/TableCell.tsx +++ b/packages/plugins/table/src/components/TableCell.tsx @@ -1,7 +1,6 @@ const TableCellRender = ({ attributes, children, element }) => { return ( diff --git a/packages/plugins/table/src/components/TableRow.tsx b/packages/plugins/table/src/components/TableRow.tsx index 7d500165f..6f61f3bb6 100644 --- a/packages/plugins/table/src/components/TableRow.tsx +++ b/packages/plugins/table/src/components/TableRow.tsx @@ -1,6 +1,6 @@ const TableRowRender = ({ attributes, children, element }) => { return ( - + {children} ); diff --git a/packages/plugins/video/package.json b/packages/plugins/video/package.json index 9e40c1207..f91333788 100644 --- a/packages/plugins/video/package.json +++ b/packages/plugins/video/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/video", - "version": "4.4.1", + "version": "4.5.0", "description": "Video plugin for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -38,5 +38,6 @@ "@floating-ui/react": "^0.26.9", "@radix-ui/react-icons": "^1.3.0", "re-resizable": "^6.9.11" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/plugins/video/src/ui/EmbedUploader.tsx b/packages/plugins/video/src/ui/EmbedUploader.tsx index 0920cd888..013e95ce0 100644 --- a/packages/plugins/video/src/ui/EmbedUploader.tsx +++ b/packages/plugins/video/src/ui/EmbedUploader.tsx @@ -1,4 +1,4 @@ -import { useYooptaEditor } from '@yoopta/editor'; +import { Elements, useYooptaEditor } from '@yoopta/editor'; import { ChangeEvent, useState } from 'react'; import { VideoElementProps, VideoPluginElements } from '../types'; import { getProvider, ProviderGetters } from '../utils/providers'; @@ -17,9 +17,12 @@ const EmbedUploader = ({ blockId, onClose }) => { if (!providerType || !videoId) return console.warn('Unsopperted video provider or video id is not found.'); - editor.blocks.Video.updateElement(blockId, 'video', { - src: value, - provider: { type: providerType, id: videoId, url: value }, + Elements.updateElement(editor, blockId, { + type: 'video', + props: { + src: value, + provider: { type: providerType, id: videoId, url: value }, + }, }); onClose(); diff --git a/packages/plugins/video/src/ui/FileUploader.tsx b/packages/plugins/video/src/ui/FileUploader.tsx index 7d6d9c394..ba98026a5 100644 --- a/packages/plugins/video/src/ui/FileUploader.tsx +++ b/packages/plugins/video/src/ui/FileUploader.tsx @@ -1,4 +1,4 @@ -import { useYooptaEditor, useYooptaPluginOptions } from '@yoopta/editor'; +import { Elements, useYooptaEditor, useYooptaPluginOptions } from '@yoopta/editor'; import { useEffect } from 'react'; import { VideoElementProps, VideoPluginElements, VideoPluginOptions } from '../types'; @@ -24,11 +24,14 @@ const FileUploader = ({ accept = 'video/*', onClose, blockId, onSetLoading }: Pr // [TODO] - abort controller? const data = await options?.onUpload(file); - editor.blocks.Video.updateElement(blockId, 'video', { - src: data.src, - sizes: data.sizes, - bgColor: data.bgColor, - fit: data.fit || 'contain', + Elements.updateElement(editor, blockId, { + type: 'video', + props: { + src: data.src, + sizes: data.sizes, + bgColor: data.bgColor, + fit: data.fit || 'contain', + }, }); } catch (error) { } finally { diff --git a/packages/plugins/video/src/ui/Video.tsx b/packages/plugins/video/src/ui/Video.tsx index 29a10bd39..8d65fbd18 100644 --- a/packages/plugins/video/src/ui/Video.tsx +++ b/packages/plugins/video/src/ui/Video.tsx @@ -6,6 +6,7 @@ import { useYooptaPluginOptions, useBlockSelected, useYooptaReadOnly, + Elements, } from '@yoopta/editor'; import { Resizable, ResizableProps } from 're-resizable'; import { useEffect, useMemo, useState } from 'react'; @@ -57,8 +58,11 @@ const VideoRender = ({ element, attributes, children, blockId }: PluginElementRe setSizes({ width: ref.offsetWidth, height: ref.offsetHeight }); }, onResizeStop: (e, direction, ref) => { - editor.blocks.Video.updateElement(blockId, 'video', { - sizes: { width: ref.offsetWidth, height: ref.offsetHeight }, + Elements.updateElement(editor, blockId, { + type: 'video', + props: { + sizes: { width: ref.offsetWidth, height: ref.offsetHeight }, + }, }); }, handleComponent: { @@ -79,7 +83,6 @@ const VideoRender = ({ element, attributes, children, blockId }: PluginElementRe return (
{ const onCover = () => { - editor.blocks.Image.updateElement(block.id, 'video', { fit: 'cover' }); + Elements.updateElement(editor, block.id, { + type: 'video', + props: { fit: 'cover' }, + }); }; const onFit = () => { - editor.blocks.Image.updateElement(block.id, 'video', { fit: 'contain' }); + Elements.updateElement(editor, block.id, { + type: 'video', + props: { fit: 'contain' }, + }); }; const onFill = () => { - editor.blocks.Image.updateElement(block.id, 'video', { fit: 'fill' }); + Elements.updateElement(editor, block.id, { + type: 'video', + props: { fit: 'fill' }, + }); }; const isExternalVideo = !!videoProps?.provider?.id; diff --git a/packages/tools/action-menu/package.json b/packages/tools/action-menu/package.json index b2027f27f..698338dcf 100644 --- a/packages/tools/action-menu/package.json +++ b/packages/tools/action-menu/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/action-menu-list", - "version": "4.4.1", + "version": "4.5.0", "description": "ActionMenuList tool for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -37,5 +37,6 @@ "dependencies": { "@floating-ui/react": "^0.26.9", "@radix-ui/react-icons": "^1.3.0" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/tools/action-menu/src/components/ActionMenuList.tsx b/packages/tools/action-menu/src/components/ActionMenuList.tsx index b2e88f24a..8678d66d9 100644 --- a/packages/tools/action-menu/src/components/ActionMenuList.tsx +++ b/packages/tools/action-menu/src/components/ActionMenuList.tsx @@ -32,7 +32,7 @@ const filterActionMenuItems = (block: YooptaBlock, text: string) => { }; // [TODO] - add to props -const trigger = '/'; +const TRIGGER = '/'; const ActionMenuList = ({ items, render }: ActionMenuToolProps) => { const editor = useYooptaEditor(); @@ -64,9 +64,9 @@ const ActionMenuList = ({ items, render }: ActionMenuToolProps) => { const onClose = () => setIsMenuOpen(false); const onFilter = ({ text }) => { - const string = text.trim().replace(trigger, ''); + const string = text.trim().replace(TRIGGER, ''); - if (string.length === 0 || string === trigger) return setActions(blockTypes); + if (string.length === 0 || string === TRIGGER) return setActions(blockTypes); const filteredActions = actions.filter((action) => filterActionMenuItems(editor.blocks[action.type], string)); const isSelectedItemInsideFilteredActions = filteredActions.some((item) => item.type === selectedAction.type); if (filteredActions.length > 0 && !isSelectedItemInsideFilteredActions) setSelectedAction(filteredActions[0]); diff --git a/packages/tools/action-menu/src/components/DefaultActionMenuRender.tsx b/packages/tools/action-menu/src/components/DefaultActionMenuRender.tsx index 96a56ad72..30927e94d 100644 --- a/packages/tools/action-menu/src/components/DefaultActionMenuRender.tsx +++ b/packages/tools/action-menu/src/components/DefaultActionMenuRender.tsx @@ -1,4 +1,4 @@ -import { isValidElement } from 'react'; +import { cloneElement, isValidElement } from 'react'; import { ActionMenuRenderProps } from '../types'; import { DEFAULT_ICONS_MAP } from './icons'; @@ -29,7 +29,7 @@ const DefaultActionMenuRender = ({ const renderIcon = (Icon: any) => { if (!Icon) return null; if (typeof Icon === 'string') return icon; - if (isValidElement(Icon)) return Icon; + if (isValidElement(Icon)) return cloneElement(Icon, { style: iconStyles }); return ; }; diff --git a/packages/tools/link-tool/package.json b/packages/tools/link-tool/package.json index 521e04999..2344ef185 100644 --- a/packages/tools/link-tool/package.json +++ b/packages/tools/link-tool/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/link-tool", - "version": "4.4.1", + "version": "4.5.0", "description": "Link tool for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -33,5 +33,6 @@ }, "bugs": { "url": "https://github.com/Darginec05/Editor-Yoopta/issues" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/tools/toolbar/package.json b/packages/tools/toolbar/package.json index b39c86ced..1aa896950 100644 --- a/packages/tools/toolbar/package.json +++ b/packages/tools/toolbar/package.json @@ -1,6 +1,6 @@ { "name": "@yoopta/toolbar", - "version": "4.4.1", + "version": "4.5.0", "description": "Toolbar tool for Yoopta Editor", "author": "Darginec05 ", "homepage": "https://github.com/Darginec05/Editor-Yoopta#readme", @@ -14,7 +14,7 @@ "dist/" ], "peerDependencies": { - "@yoopta/editor": ">=4.0.0-rc.0", + "@yoopta/editor": ">=4.0.0", "react": ">=17.0.2", "react-dom": ">=17.0.2" }, @@ -39,5 +39,6 @@ "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-toolbar": "^1.0.4", "lodash.throttle": "^4.1.1" - } + }, + "gitHead": "29e4ae316ec75bb43d3822d028abcb0c34256ec5" } diff --git a/packages/tools/toolbar/src/components/Toolbar.tsx b/packages/tools/toolbar/src/components/Toolbar.tsx index 78d15edd5..e41fcba87 100644 --- a/packages/tools/toolbar/src/components/Toolbar.tsx +++ b/packages/tools/toolbar/src/components/Toolbar.tsx @@ -80,7 +80,7 @@ const Toolbar = ({ render }: ToolbarToolProps) => { return ( -
e.stopPropagation()}> +
e.stopPropagation()}>
@@ -90,7 +90,7 @@ const Toolbar = ({ render }: ToolbarToolProps) => { return ( // [TODO] - take care about SSR -
e.stopPropagation()}> +
e.stopPropagation()}>
diff --git a/packages/tools/toolbar/src/components/utils.ts b/packages/tools/toolbar/src/components/utils.ts index 59ead783d..50dd3484f 100644 --- a/packages/tools/toolbar/src/components/utils.ts +++ b/packages/tools/toolbar/src/components/utils.ts @@ -23,7 +23,8 @@ export function buildActionMenuRenderProps({ editor, view, onClose }: Params) { .map((action) => { const title = editor.blocks[action].options?.display?.title || action; const description = editor.blocks[action].options?.display?.description; - return { type: action, title, description }; + const icon = editor.blocks[action].options?.display?.icon; + return { type: action, title, description, icon }; }); return items; diff --git a/web/next-example/package.json b/web/next-example/package.json index d56b2c951..f6e53c458 100644 --- a/web/next-example/package.json +++ b/web/next-example/package.json @@ -12,25 +12,28 @@ "@floating-ui/react": "^0.26.11", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-icons": "^1.3.0", - "@yoopta/action-menu-list": "^4.4.1", - "@yoopta/blockquote": "^4.4.1", - "@yoopta/callout": "^4.4.1", - "@yoopta/code": "^4.4.1", - "@yoopta/editor": "^4.4.1", - "@yoopta/embed": "^4.4.1", - "@yoopta/file": "^4.4.1", - "@yoopta/headings": "^4.4.1", - "@yoopta/image": "^4.4.1", - "@yoopta/link": "^4.4.1", - "@yoopta/link-tool": "^4.4.1", - "@yoopta/lists": "^4.4.1", - "@yoopta/marks": "^4.3.0", - "@yoopta/paragraph": "^4.4.1", - "@yoopta/toolbar": "^4.4.1", - "@yoopta/video": "^4.4.1", + "@radix-ui/react-slot": "^1.0.2", + "@yoopta/accordion": "^4.5.0", + "@yoopta/action-menu-list": "^4.5.0", + "@yoopta/blockquote": "^4.5.0", + "@yoopta/callout": "^4.5.0", + "@yoopta/code": "^4.5.0", + "@yoopta/editor": "^4.5.0", + "@yoopta/embed": "^4.5.0", + "@yoopta/file": "^4.5.0", + "@yoopta/headings": "^4.5.0", + "@yoopta/image": "^4.5.0", + "@yoopta/link": "^4.5.0", + "@yoopta/link-tool": "^4.5.0", + "@yoopta/lists": "^4.5.0", + "@yoopta/marks": "^4.5.0", + "@yoopta/paragraph": "^4.5.0", + "@yoopta/toolbar": "^4.5.0", + "@yoopta/video": "^4.5.0", "class-variance-authority": "^0.7.0", "classnames": "^2.5.1", "clsx": "^2.1.0", + "embla-carousel-react": "^8.1.3", "lucide-react": "^0.366.0", "next": "14.1.4", "next-themes": "^0.3.0", diff --git a/web/next-example/src/components/examples/withBaseFullSetup/index.tsx b/web/next-example/src/components/examples/withBaseFullSetup/index.tsx index 4df0c32f1..2fadcdb90 100644 --- a/web/next-example/src/components/examples/withBaseFullSetup/index.tsx +++ b/web/next-example/src/components/examples/withBaseFullSetup/index.tsx @@ -1,4 +1,4 @@ -import YooptaEditor, { createYooptaEditor } from '@yoopta/editor'; +import YooptaEditor, { createYooptaEditor, Elements, Blocks, useYooptaEditor } from '@yoopta/editor'; import Paragraph from '@yoopta/paragraph'; import Blockquote from '@yoopta/blockquote'; @@ -8,6 +8,7 @@ import Link from '@yoopta/link'; import Callout from '@yoopta/callout'; import Video from '@yoopta/video'; import File from '@yoopta/file'; +import Accordion from '@yoopta/accordion'; import { NumberedList, BulletedList, TodoList } from '@yoopta/lists'; import { Bold, Italic, CodeMark, Underline, Strike, Highlight } from '@yoopta/marks'; import { HeadingOne, HeadingThree, HeadingTwo } from '@yoopta/headings'; @@ -22,6 +23,7 @@ import { WITH_BASIC_INIT_VALUE } from './initValue'; const plugins = [ Paragraph, + Accordion, HeadingOne, HeadingTwo, HeadingThree, diff --git a/web/next-example/src/components/examples/withBaseFullSetup/initValue.ts b/web/next-example/src/components/examples/withBaseFullSetup/initValue.ts index 9d1c694ad..d7a29679b 100644 --- a/web/next-example/src/components/examples/withBaseFullSetup/initValue.ts +++ b/web/next-example/src/components/examples/withBaseFullSetup/initValue.ts @@ -48,7 +48,7 @@ export const WITH_BASIC_INIT_VALUE = { id: '7e3ef31f-a72d-467d-b17e-e09d2b0f9475', type: 'HeadingTwo', meta: { - order: 4, + order: 7, depth: 0, }, value: [ @@ -84,7 +84,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 5, + order: 8, depth: 0, }, }, @@ -106,7 +106,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 11, + order: 14, depth: 0, }, }, @@ -128,7 +128,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 14, + order: 17, depth: 0, }, }, @@ -150,7 +150,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 8, + order: 11, depth: 0, }, }, @@ -172,7 +172,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 15, + order: 18, depth: 0, }, }, @@ -194,7 +194,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 16, + order: 19, depth: 0, }, }, @@ -220,7 +220,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 23, + order: 26, depth: 0, }, }, @@ -246,7 +246,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 24, + order: 27, depth: 0, }, }, @@ -268,7 +268,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 12, + order: 15, depth: 0, }, }, @@ -293,7 +293,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 27, + order: 30, depth: 0, }, }, @@ -315,7 +315,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 28, + order: 31, depth: 0, }, }, @@ -337,7 +337,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 9, + order: 12, depth: 0, }, }, @@ -359,7 +359,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 22, + order: 25, depth: 0, }, }, @@ -381,7 +381,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 25, + order: 28, depth: 0, }, }, @@ -403,7 +403,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'Paragraph', meta: { - order: 29, + order: 32, depth: 0, }, }, @@ -425,7 +425,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 10, + order: 13, depth: 0, }, }, @@ -447,7 +447,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 17, + order: 20, depth: 0, }, }, @@ -469,7 +469,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 21, + order: 24, depth: 0, }, }, @@ -491,7 +491,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 26, + order: 29, depth: 0, }, }, @@ -499,7 +499,7 @@ export const WITH_BASIC_INIT_VALUE = { id: '6184a767-f56e-4856-bed4-82f970b5fce8', type: 'Blockquote', meta: { - order: 3, + order: 6, depth: 0, }, value: [ @@ -547,7 +547,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'Image', meta: { - order: 41, + order: 44, depth: 0, }, }, @@ -585,7 +585,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'HeadingThree', meta: { - order: 40, + order: 43, depth: 0, }, }, @@ -607,7 +607,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 20, + order: 23, depth: 0, }, }, @@ -629,7 +629,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 18, + order: 21, depth: 0, }, }, @@ -651,7 +651,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 6, + order: 9, depth: 0, }, }, @@ -681,7 +681,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'Image', meta: { - order: 43, + order: 46, depth: 0, }, }, @@ -689,7 +689,7 @@ export const WITH_BASIC_INIT_VALUE = { id: '7d3f395b-656d-46af-924c-b88b9974f631', type: 'HeadingThree', meta: { - order: 42, + order: 45, depth: 0, }, value: [ @@ -742,7 +742,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 13, + order: 16, depth: 0, }, }, @@ -764,7 +764,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 19, + order: 22, depth: 0, }, }, @@ -786,19 +786,24 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'Paragraph', meta: { - order: 44, + order: 47, depth: 0, }, }, '697aa54b-aea0-4a88-82e5-ec5a6f2c5791': { id: '697aa54b-aea0-4a88-82e5-ec5a6f2c5791', + type: 'HeadingThree', + meta: { + order: 3, + depth: 0, + }, value: [ { id: 'e7cfd6da-0ed1-4849-ae05-f52b9e65c87b', - type: 'paragraph', + type: 'heading-three', children: [ { - text: '', + text: 'FAQs', }, ], props: { @@ -806,11 +811,6 @@ export const WITH_BASIC_INIT_VALUE = { }, }, ], - type: 'Paragraph', - meta: { - order: 2, - depth: 0, - }, }, 'd19fe347-ae2f-469d-85f4-a66d63a2fd40': { id: 'd19fe347-ae2f-469d-85f4-a66d63a2fd40', @@ -830,7 +830,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'HeadingTwo', meta: { - order: 30, + order: 33, depth: 0, }, }, @@ -852,7 +852,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 31, + order: 34, depth: 0, }, }, @@ -874,7 +874,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 32, + order: 35, depth: 0, }, }, @@ -896,7 +896,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 33, + order: 36, depth: 0, }, }, @@ -918,7 +918,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 34, + order: 37, depth: 0, }, }, @@ -940,7 +940,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 35, + order: 38, depth: 0, }, }, @@ -976,7 +976,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 36, + order: 39, depth: 0, }, }, @@ -998,7 +998,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 37, + order: 40, depth: 0, }, }, @@ -1020,7 +1020,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 38, + order: 41, depth: 0, }, }, @@ -1042,7 +1042,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 46, + order: 49, depth: 0, }, }, @@ -1064,7 +1064,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 47, + order: 50, depth: 0, }, }, @@ -1086,7 +1086,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 48, + order: 51, depth: 0, }, }, @@ -1108,7 +1108,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 51, + order: 54, depth: 0, }, }, @@ -1130,7 +1130,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'HeadingTwo', meta: { - order: 45, + order: 48, depth: 0, }, }, @@ -1152,7 +1152,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 49, + order: 52, depth: 0, }, }, @@ -1174,7 +1174,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'Paragraph', meta: { - order: 39, + order: 42, depth: 0, }, }, @@ -1196,7 +1196,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'Paragraph', meta: { - order: 52, + order: 55, depth: 0, }, }, @@ -1218,7 +1218,7 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'BulletedList', meta: { - order: 50, + order: 53, depth: 0, }, }, @@ -1242,8 +1242,227 @@ export const WITH_BASIC_INIT_VALUE = { ], type: 'Code', meta: { - order: 7, + order: 10, depth: 1, }, }, + 'ffb4470c-d951-4ed2-b446-c1a07650c550': { + id: 'ffb4470c-d951-4ed2-b446-c1a07650c550', + value: [ + { + id: '7dee490c-3f3a-419b-b5d4-7915650cdb3c', + type: 'paragraph', + children: [ + { + text: '---', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + type: 'Paragraph', + meta: { + order: 5, + depth: 0, + }, + }, + '62bcd227-f42c-426d-8b3a-9bff70b5308d': { + id: '62bcd227-f42c-426d-8b3a-9bff70b5308d', + value: [ + { + id: '557497a0-0bc7-493b-920b-23a0698479d2', + type: 'accordion-list', + children: [ + { + id: '0b8e4c12-198a-4883-b578-6aae9a141121', + type: 'accordion-list-item', + children: [ + { + id: '4bbe8fbd-8180-47bd-a65c-b3480cf7f4f4', + type: 'accordion-list-item-heading', + children: [ + { + text: 'Can I relax with Yoopta-Editor?', + }, + ], + props: { + nodeType: 'block', + }, + }, + { + id: 'a203259d-f075-44a3-a557-7d89f15a3501', + type: 'accordion-list-item-content', + children: [ + { + text: 'Definitely, yes. We are aiming to ensure that you never worry about developing rich-text editors, but just focus on business logic when writing your super applications.', + }, + ], + props: { + nodeType: 'block', + }, + }, + { + id: 'a203259d-f075-44a3-a557-7d89f15a3501', + type: 'accordion-list-item-content', + props: { + nodeType: 'block', + }, + children: [ + { + text: 'Just install the needed packages, make the necessary configuration and relax', + underline: true, + }, + ], + }, + ], + props: { + nodeType: 'block', + isExpanded: true, + }, + }, + { + id: '7580532b-fe45-41fd-a394-9775526ee8e2', + type: 'accordion-list-item', + children: [ + { + id: 'ac050b26-5502-43e6-9244-9749c5f0a5cc', + type: 'accordion-list-item-heading', + children: [ + { + text: 'Can I create custom plugins?', + }, + ], + props: { + nodeType: 'block', + }, + }, + { + id: '623e5ce5-22a6-493c-8263-24ed356078f6', + type: 'accordion-list-item-content', + children: [ + { + text: 'Yes, yes, and yes again. You will be able to create a custom plugin of any complexity', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + props: { + nodeType: 'block', + isExpanded: true, + }, + }, + { + id: '2ee0104f-1946-49a5-8fdd-bfd2d32e3d50', + type: 'accordion-list-item', + children: [ + { + id: '1a9e575f-2c19-442c-9a72-84cabe2619c3', + type: 'accordion-list-item-heading', + children: [ + { + text: 'What about AI?', + }, + ], + props: { + nodeType: 'block', + }, + }, + { + id: 'd50c8d92-b5cd-4f0c-8d60-00e5b5cba844', + type: 'accordion-list-item-content', + children: [ + { + text: '1. We have plans to create AI text input for creating your custom plugins\n2. AI tools for helping you with your content\n3. AI tool which can help translate content\n4. ...and other super useful tools 😉', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + props: { + nodeType: 'block', + isExpanded: true, + }, + }, + { + id: 'ec4816dd-c646-43c8-90cf-30fe02b2a93f', + type: 'accordion-list-item', + children: [ + { + id: '53a34ea7-773c-4ea0-ac46-93d3bb26d4ac', + type: 'accordion-list-item-heading', + props: { + nodeType: 'block', + }, + children: [ + { + text: 'What is best football club?', + }, + ], + }, + { + id: 'e0eff75b-4239-499b-81d9-d13a77070ff1', + type: 'accordion-list-item-content', + children: [ + { + text: 'Chelsea FC', + underline: true, + highlight: { + color: '#477DA5', + }, + }, + { + highlight: { + color: '#477DA5', + }, + text: ' 💙', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + props: { + nodeType: 'block', + isExpanded: false, + }, + }, + ], + }, + ], + type: 'Accordion', + meta: { + order: 4, + depth: 0, + }, + }, + '39f639c6-219f-4cb7-a817-cb9f4d6ea07c': { + id: '39f639c6-219f-4cb7-a817-cb9f4d6ea07c', + value: [ + { + id: '022419d3-449c-4bfd-b4fb-e87060083aea', + type: 'paragraph', + children: [ + { + text: '---', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + type: 'Paragraph', + meta: { + order: 2, + depth: 0, + }, + }, }; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/components/CarouselBlockOptions.tsx b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/components/CarouselBlockOptions.tsx new file mode 100644 index 000000000..fe5e3fd2d --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/components/CarouselBlockOptions.tsx @@ -0,0 +1,59 @@ +import { Elements, UI, YooEditor, YooptaBlockData } from '@yoopta/editor'; +import { Lollipop, FlipVertical, FlipHorizontal } from 'lucide-react'; +import { CarouselElementProps } from '../types'; + +const { ExtendedBlockActions, BlockOptionsMenuGroup, BlockOptionsMenuItem, BlockOptionsSeparator } = UI; + +type Props = { + editor: YooEditor; + block: YooptaBlockData; + props: CarouselElementProps; +}; + +const CarouselBlockOptions = ({ editor, block, props }: Props) => { + const orientation = props.orientation; + const loop = props.loop; + + const isHorizontal = orientation === 'horizontal'; + const isLoop = loop; + + const switchLoop = () => { + Elements.updateElement(editor, block.id, { type: 'carousel', props: { loop: !isLoop } }); + }; + const switchOrientation = () => { + Elements.updateElement(editor, block.id, { + type: 'carousel', + props: { orientation: isHorizontal ? 'vertical' : 'horizontal' }, + }); + }; + + return ( + editor.setSelection([block.meta.order])} className="yoopta-carousel-options"> + + + + + + + + + + + ); +}; + +export { CarouselBlockOptions }; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/index.tsx b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/index.tsx new file mode 100644 index 000000000..0fa4b1678 --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/index.tsx @@ -0,0 +1,74 @@ +import { YooptaPlugin } from '@yoopta/editor'; +import { BarcodeIcon } from 'lucide-react'; +import { Carousel } from './renders/Carousel'; +import { CarouselItem } from './renders/CarouselItem'; +import { CarouselItemDescription } from './renders/CarouselItemDescription'; +import { CarouselItemImage } from './renders/CarouselItemImage'; +import { CarouselItemTitle } from './renders/CarouselItemTitle'; +import { + CarouselElement, + CarouselItemDescriptionElement, + CarouselItemElement, + CarouselItemImageElement, + CarouselItemTitleElement, +} from './types'; + +const CarouselPlugin = new YooptaPlugin({ + type: 'Carousel', + elements: { + carousel: { + render: Carousel, + children: ['carousel-item'], + asRoot: true, + props: { + loop: false, + orientation: 'horizontal', + }, + }, + 'carousel-item': { + render: CarouselItem, + children: ['carousel-item-title', 'carousel-item-description', 'carousel-item-image'], + }, + 'carousel-item-image': { + render: CarouselItemImage, + props: { + nodeType: 'void', + src: null, + }, + }, + 'carousel-item-title': { + render: CarouselItemTitle, + }, + 'carousel-item-description': { + render: CarouselItemDescription, + }, + }, + options: { + display: { + title: 'Carousel', + description: 'Create a carousel', + icon: , + }, + shortcuts: ['carousel'], + }, + parsers: { + html: { + deserialize: { + nodeNames: ['CAROUSEL'], + }, + }, + }, +}); + +declare module 'slate' { + interface CustomTypes { + Element: + | CarouselElement + | CarouselItemElement + | CarouselItemImageElement + | CarouselItemTitleElement + | CarouselItemDescriptionElement; + } +} + +export { CarouselPlugin }; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/Carousel.tsx b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/Carousel.tsx new file mode 100644 index 000000000..0fb071685 --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/Carousel.tsx @@ -0,0 +1,34 @@ +import { Carousel as CarouselRoot, CarouselContent, CarouselPrevious, CarouselNext } from '@/components/ui/carousel'; +import { Elements, PluginElementRenderProps, useBlockData, useYooptaEditor, useYooptaReadOnly } from '@yoopta/editor'; +import { PlusCircle } from 'lucide-react'; +import { CarouselBlockOptions } from '../components/CarouselBlockOptions'; + +const Carousel = ({ children, element, blockId, attributes }: PluginElementRenderProps) => { + const editor = useYooptaEditor(); + const block = useBlockData(blockId); + + const onAddCarouselItem = () => { + Elements.createElement(editor, blockId, { type: 'carousel-item' }, { path: 'next', focus: true, split: false }); + }; + + const orientation = element.props?.orientation; + const loop = element.props?.loop; + + return ( + + {children} + + + {!editor.readOnly && ( + <> + + + + )} + + ); +}; + +export { Carousel }; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItem.tsx b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItem.tsx new file mode 100644 index 000000000..62d63d993 --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItem.tsx @@ -0,0 +1,41 @@ +import { Card, CardContent } from '@/components/ui/card'; +import { CarouselItem as CarouselRootItem } from '@/components/ui/carousel'; +import { Elements, PluginElementRenderProps, useYooptaEditor } from '@yoopta/editor'; +import { Trash } from 'lucide-react'; + +const CarouselItem = ({ element, blockId, attributes, children }: PluginElementRenderProps) => { + const editor = useYooptaEditor(); + + const onDeleteItem = () => { + const items = Elements.getElementChildren(editor, blockId, { type: 'carousel' }); + if (items?.length === 1) { + return editor.deleteBlock({ blockId }); + } + + const elementPath = Elements.getElementPath(editor, blockId, element); + if (elementPath) { + Elements.deleteElement(editor, blockId, { path: elementPath, type: 'carousel-item' }); + } + }; + + return ( + +
+ + {children} + +
+ {!editor.readOnly && ( + + )} +
+ ); +}; + +export { CarouselItem }; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemDescription.tsx b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemDescription.tsx new file mode 100644 index 000000000..5ddffaee4 --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemDescription.tsx @@ -0,0 +1,11 @@ +import { PluginElementRenderProps } from '@yoopta/editor'; + +const CarouselItemDescription = (props: PluginElementRenderProps) => { + return ( +

+ {props.children} +

+ ); +}; + +export { CarouselItemDescription }; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemImage.tsx b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemImage.tsx new file mode 100644 index 000000000..6fedf6892 --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemImage.tsx @@ -0,0 +1,92 @@ +import { Elements, PluginElementRenderProps, useYooptaEditor, useYooptaReadOnly } from '@yoopta/editor'; +import { ImageIcon, DeleteIcon, Delete, Trash2 } from 'lucide-react'; +import { ChangeEvent, MouseEvent } from 'react'; + +const CarouselItemImage = ({ element, children, attributes, blockId }: PluginElementRenderProps) => { + const editor = useYooptaEditor(); + const readOnly = useYooptaReadOnly(); + + const onUploadFile = (event: ChangeEvent) => { + if (readOnly) return; + + const target = event.target as HTMLInputElement; + const file = target.files?.[0]; + if (!file) return; + + const reader = new FileReader(); + reader.onload = (e) => { + const src = e.target?.result as string; + + const elementPath = Elements.getElementPath(editor, blockId, element); + + Elements.updateElement( + editor, + blockId, + { type: 'carousel-item-image', props: { ...element.props, src } }, + { path: elementPath }, + ); + }; + reader.readAsDataURL(file); + }; + + const onDeleteImage = () => { + if (readOnly) return; + + const elementPath = Elements.getElementPath(editor, blockId, element); + + Elements.updateElement( + editor, + blockId, + { type: 'carousel-item-image', props: { ...element.props, src: null } }, + { path: elementPath }, + ); + }; + + return ( +
+
+ +
+ {children} +
+ ); +}; + +export { CarouselItemImage }; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemTitle.tsx b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemTitle.tsx new file mode 100644 index 000000000..731800885 --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/renders/CarouselItemTitle.tsx @@ -0,0 +1,11 @@ +import { PluginElementRenderProps } from '@yoopta/editor'; + +const CarouselItemTitle = (props: PluginElementRenderProps) => { + return ( +

+ {props.children} +

+ ); +}; + +export { CarouselItemTitle }; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/types.ts b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/types.ts new file mode 100644 index 000000000..aa2617c87 --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Carousel/types.ts @@ -0,0 +1,16 @@ +import { SlateElement } from '@yoopta/editor'; + +export type CarouselElementProps = { + loop: boolean; + orientation: 'horizontal' | 'vertical'; +}; + +export type CarouselItemImageElementProps = { + src: null | string; +}; + +export type CarouselElement = SlateElement<'carousel', CarouselElementProps>; +export type CarouselItemElement = SlateElement<'carousel-item'>; +export type CarouselItemImageElement = SlateElement<'carousel-item-image', CarouselItemImageElementProps>; +export type CarouselItemTitleElement = SlateElement<'carousel-item-title'>; +export type CarouselItemDescriptionElement = SlateElement<'carousel-item-description'>; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Divider/index.tsx b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Divider/index.tsx new file mode 100644 index 000000000..e8c13ceaa --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Divider/index.tsx @@ -0,0 +1,25 @@ +import { YooptaPlugin } from '@yoopta/editor'; +import { SeparatorHorizontal } from 'lucide-react'; +import { DividerRenderElement } from './renders/Divider'; + +const DividerPlugin = new YooptaPlugin({ + type: 'Divider', + elements: { + divider: { + render: DividerRenderElement, + props: { + nodeType: 'void', + }, + }, + }, + options: { + shortcuts: ['--', '---'], + display: { + title: 'New Divider Plugin', + description: 'Separate', + icon: , + }, + }, +}); + +export { DividerPlugin }; diff --git a/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Divider/renders/Divider.tsx b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Divider/renders/Divider.tsx new file mode 100644 index 000000000..c09ee8565 --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/customPlugins/Divider/renders/Divider.tsx @@ -0,0 +1,12 @@ +import { PluginElementRenderProps } from '@yoopta/editor'; + +const DividerRenderElement = ({ attributes, children, element, blockId }: PluginElementRenderProps) => { + return ( +
+
+ {children} +
+ ); +}; + +export { DividerRenderElement }; diff --git a/web/next-example/src/components/examples/withCustomPlugin.tsx b/web/next-example/src/components/examples/withCustomPlugin/index.tsx similarity index 69% rename from web/next-example/src/components/examples/withCustomPlugin.tsx rename to web/next-example/src/components/examples/withCustomPlugin/index.tsx index da42c4cc5..335210a26 100644 --- a/web/next-example/src/components/examples/withCustomPlugin.tsx +++ b/web/next-example/src/components/examples/withCustomPlugin/index.tsx @@ -1,4 +1,4 @@ -import YooptaEditor, { createYooptaEditor } from '@yoopta/editor'; +import YooptaEditor, { createYooptaEditor, YooptaPlugin } from '@yoopta/editor'; import Paragraph from '@yoopta/paragraph'; import Blockquote from '@yoopta/blockquote'; @@ -8,6 +8,7 @@ import Link from '@yoopta/link'; import Callout from '@yoopta/callout'; import Video from '@yoopta/video'; import File from '@yoopta/file'; +import Accordion from '@yoopta/accordion'; import { NumberedList, BulletedList, TodoList } from '@yoopta/lists'; import { Bold, Italic, CodeMark, Underline, Strike, Highlight } from '@yoopta/marks'; import { HeadingOne, HeadingThree, HeadingTwo } from '@yoopta/headings'; @@ -15,15 +16,18 @@ import Code from '@yoopta/code'; import ActionMenuList, { DefaultActionMenuRender } from '@yoopta/action-menu-list'; import Toolbar, { DefaultToolbarRender } from '@yoopta/toolbar'; import LinkTool, { DefaultLinkToolRender } from '@yoopta/link-tool'; -// import { DividerPlugin } from './customPlugins/Divider'; - -import { Sheet } from '@/components/ui/sheet'; import { uploadToCloudinary } from '@/utils/cloudinary'; -import { useMemo, useRef } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; +import { DividerPlugin } from './customPlugins/Divider'; +import { WITH_CUSTOM_PLUGIN_VALUE } from './initValue'; +import { CarouselPlugin } from './customPlugins/Carousel'; const plugins = [ + DividerPlugin, + CarouselPlugin, Paragraph, + Accordion, HeadingOne, HeadingTwo, HeadingThree, @@ -96,44 +100,37 @@ const MARKS = [Bold, Italic, CodeMark, Underline, Strike, Highlight]; function WithCustomPluginExample() { const editor = useMemo(() => createYooptaEditor(), []); const selectionRef = useRef(null); + const [value] = useState(() => { + const localData = localStorage.getItem('WithCustomPluginExample'); + if (localData) return JSON.parse(localData); + return WITH_CUSTOM_PLUGIN_VALUE; + }); + + useEffect(() => { + function handleChange(data: any) { + localStorage.setItem('WithCustomPluginExample', JSON.stringify(data)); + } + editor.on('change', handleChange); + return () => { + editor.off('change', handleChange); + }; + }, [editor]); return (
- + {value && ( + + )}
); } diff --git a/web/next-example/src/components/examples/withCustomPlugin/initValue.ts b/web/next-example/src/components/examples/withCustomPlugin/initValue.ts new file mode 100644 index 000000000..efe1fa8fe --- /dev/null +++ b/web/next-example/src/components/examples/withCustomPlugin/initValue.ts @@ -0,0 +1,134 @@ +export const WITH_CUSTOM_PLUGIN_VALUE = { + 'e8369b38-258d-4139-a813-e98647eefbae': { + id: 'e8369b38-258d-4139-a813-e98647eefbae', + value: [ + { + id: 'a277a387-86b1-4980-9fc1-c30e215c294e', + type: 'paragraph', + children: [ + { + text: 'Перед созданием кастомных плагинов, пожалуйста, прочитайте секцию "Концепты", которая объясняет важные сущности для Yoopta.\nНо я повторю все равно простыми словами.', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + type: 'Paragraph', + meta: { + order: 0, + depth: 0, + }, + }, + 'b055f764-b090-4b2b-b474-d96fe33f6d1a': { + id: 'b055f764-b090-4b2b-b474-d96fe33f6d1a', + value: [ + { + id: 'c53afc65-9673-4a2d-af1d-e37d4d41fe12', + type: 'numbered-list', + props: { + nodeType: 'block', + }, + children: [ + { + text: 'Plugins - конфигурационный объект, определяющий структуру, количество элементов, их рендер и то как они будут экспортироваться/импортироваться.', + }, + ], + }, + ], + type: 'NumberedList', + meta: { + order: 1, + depth: 0, + }, + }, + '61ea4496-0a2b-4b92-9e68-0787a96f9dc4': { + id: '61ea4496-0a2b-4b92-9e68-0787a96f9dc4', + value: [ + { + id: '79ca0ba7-2266-4a64-8f1f-a354b207a8e4', + type: 'numbered-list', + children: [ + { + text: 'Blocks - сущность, ', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + type: 'NumberedList', + meta: { + order: 2, + depth: 0, + }, + }, + '0ad5d58c-6373-4b1e-80fa-3844faf695c9': { + id: '0ad5d58c-6373-4b1e-80fa-3844faf695c9', + value: [ + { + id: 'd89afa89-f28a-43ef-a2b9-8c853d786041', + type: 'numbered-list', + children: [ + { + text: 'Elements - сущности из которых состоят. Каждый элемент имеет рендер и другие свойства, которые мы разберём позже. Блок содержит один или несколько элементов', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + type: 'NumberedList', + meta: { + order: 3, + depth: 0, + }, + }, + 'c0311a8c-ecdd-4121-a121-4511334970a5': { + id: 'c0311a8c-ecdd-4121-a121-4511334970a5', + value: [ + { + id: '5ff6762b-8e44-4e4e-b29a-cd6d6f838b8e', + type: 'paragraph', + children: [ + { + text: '', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + type: 'Paragraph', + meta: { + order: 4, + depth: 0, + }, + }, + 'd2dea447-afd6-4e6c-8e1d-fb38731eef7d': { + id: 'd2dea447-afd6-4e6c-8e1d-fb38731eef7d', + value: [ + { + id: '8f355a17-fa37-464e-93c3-6e59eda04b8a', + type: 'paragraph', + children: [ + { + text: 'Давайте ', + }, + ], + props: { + nodeType: 'block', + }, + }, + ], + type: 'Paragraph', + meta: { + order: 5, + depth: 0, + }, + }, +}; diff --git a/web/next-example/src/components/ui/button.tsx b/web/next-example/src/components/ui/button.tsx new file mode 100644 index 000000000..84fd9e23f --- /dev/null +++ b/web/next-example/src/components/ui/button.tsx @@ -0,0 +1,47 @@ +import * as React from 'react'; +import { Slot } from '@radix-ui/react-slot'; +import { cva, type VariantProps } from 'class-variance-authority'; + +import { cn } from '../../utils/cn'; + +const buttonVariants = cva( + 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50', + { + variants: { + variant: { + default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90', + destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90', + outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground', + secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80', + ghost: 'hover:bg-accent hover:text-accent-foreground', + link: 'text-primary underline-offset-4 hover:underline', + }, + size: { + default: 'h-9 px-4 py-2', + sm: 'h-8 rounded-md px-3 text-xs', + lg: 'h-10 rounded-md px-8', + icon: 'h-9 w-9', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : 'button'; + return ; + }, +); +Button.displayName = 'Button'; + +export { Button, buttonVariants }; diff --git a/web/next-example/src/components/ui/card.tsx b/web/next-example/src/components/ui/card.tsx new file mode 100644 index 000000000..f9537c8ef --- /dev/null +++ b/web/next-example/src/components/ui/card.tsx @@ -0,0 +1,43 @@ +import * as React from 'react'; + +import { cn } from '../../utils/cn'; + +const Card = React.forwardRef>(({ className, ...props }, ref) => ( +
+)); +Card.displayName = 'Card'; + +const CardHeader = React.forwardRef>( + ({ className, ...props }, ref) => ( +
+ ), +); +CardHeader.displayName = 'CardHeader'; + +const CardTitle = React.forwardRef>( + ({ className, ...props }, ref) => ( +

+ ), +); +CardTitle.displayName = 'CardTitle'; + +const CardDescription = React.forwardRef>( + ({ className, ...props }, ref) => ( +

+ ), +); +CardDescription.displayName = 'CardDescription'; + +const CardContent = React.forwardRef>( + ({ className, ...props }, ref) =>

, +); +CardContent.displayName = 'CardContent'; + +const CardFooter = React.forwardRef>( + ({ className, ...props }, ref) => ( +
+ ), +); +CardFooter.displayName = 'CardFooter'; + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }; diff --git a/web/next-example/src/components/ui/carousel.tsx b/web/next-example/src/components/ui/carousel.tsx new file mode 100644 index 000000000..aa075dca9 --- /dev/null +++ b/web/next-example/src/components/ui/carousel.tsx @@ -0,0 +1,224 @@ +import * as React from 'react'; +import { ArrowLeftIcon, ArrowRightIcon } from '@radix-ui/react-icons'; +import useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'; + +import { cn } from '../../utils/cn'; +import { Button } from '@/components/ui/button'; + +type CarouselApi = UseEmblaCarouselType[1]; +type UseCarouselParameters = Parameters; +type CarouselOptions = UseCarouselParameters[0]; +type CarouselPlugin = UseCarouselParameters[1]; + +type CarouselProps = { + opts?: CarouselOptions; + plugins?: CarouselPlugin; + orientation?: 'horizontal' | 'vertical'; + setApi?: (api: CarouselApi) => void; +}; + +type CarouselContextProps = { + carouselRef: ReturnType[0]; + api: ReturnType[1]; + scrollPrev: () => void; + scrollNext: () => void; + canScrollPrev: boolean; + canScrollNext: boolean; +} & CarouselProps; + +const CarouselContext = React.createContext(null); + +function useCarousel() { + const context = React.useContext(CarouselContext); + + if (!context) { + throw new Error('useCarousel must be used within a '); + } + + return context; +} + +const Carousel = React.forwardRef & CarouselProps>( + ({ orientation = 'horizontal', opts, setApi, plugins, className, children, ...props }, ref) => { + const [carouselRef, api] = useEmblaCarousel( + { + ...opts, + axis: orientation === 'horizontal' ? 'x' : 'y', + }, + plugins, + ); + const [canScrollPrev, setCanScrollPrev] = React.useState(false); + const [canScrollNext, setCanScrollNext] = React.useState(false); + + const onSelect = React.useCallback((api: CarouselApi) => { + if (!api) { + return; + } + + setCanScrollPrev(api.canScrollPrev()); + setCanScrollNext(api.canScrollNext()); + }, []); + + const scrollPrev = React.useCallback(() => { + api?.scrollPrev(); + }, [api]); + + const scrollNext = React.useCallback(() => { + api?.scrollNext(); + }, [api]); + + const handleKeyDown = React.useCallback( + (event: React.KeyboardEvent) => { + if (event.key === 'ArrowLeft') { + event.preventDefault(); + scrollPrev(); + } else if (event.key === 'ArrowRight') { + event.preventDefault(); + scrollNext(); + } + }, + [scrollPrev, scrollNext], + ); + + React.useEffect(() => { + if (!api || !setApi) { + return; + } + + setApi(api); + }, [api, setApi]); + + React.useEffect(() => { + if (!api) { + return; + } + + onSelect(api); + api.on('reInit', onSelect); + api.on('select', onSelect); + + return () => { + api?.off('select', onSelect); + }; + }, [api, onSelect]); + + return ( + +
+ {children} +
+
+ ); + }, +); +Carousel.displayName = 'Carousel'; + +const CarouselContent = React.forwardRef>( + ({ className, ...props }, ref) => { + const { carouselRef, orientation } = useCarousel(); + + return ( +
+
+
+ ); + }, +); +CarouselContent.displayName = 'CarouselContent'; + +const CarouselItem = React.forwardRef>( + ({ className, ...props }, ref) => { + const { orientation } = useCarousel(); + + return ( +
+ ); + }, +); +CarouselItem.displayName = 'CarouselItem'; + +const CarouselPrevious = React.forwardRef>( + ({ className, variant = 'outline', size = 'icon', ...props }, ref) => { + const { orientation, scrollPrev, canScrollPrev } = useCarousel(); + + return ( + + ); + }, +); +CarouselPrevious.displayName = 'CarouselPrevious'; + +const CarouselNext = React.forwardRef>( + ({ className, variant = 'outline', size = 'icon', ...props }, ref) => { + const { orientation, scrollNext, canScrollNext } = useCarousel(); + + return ( + + ); + }, +); +CarouselNext.displayName = 'CarouselNext'; + +export { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext }; diff --git a/web/next-example/src/pages/examples/[example].tsx b/web/next-example/src/pages/examples/[example].tsx index 6e80b3fd6..fb4ae8621 100644 --- a/web/next-example/src/pages/examples/[example].tsx +++ b/web/next-example/src/pages/examples/[example].tsx @@ -11,7 +11,7 @@ import withDarkTheme from '@/components/examples/withDarkTheme'; import withExtendedPlugin from '@/components/examples/withExtendedPlugin'; import withMediaAndVoids from '@/components/examples/withMediaAndVoids'; import withNotionActionMenu from '@/components/examples/withNotionActionMenu'; -import withReadOnly from '@/components/examples/withReadOnly/index'; +import withReadOnly from '@/components/examples/withReadOnly'; import withSavingToDatabase from '@/components/examples/withSavingToDatabase'; import withEditorControl from '@/components/examples/withEditorControl'; import withLargeDocuments from '@/components/examples/withLargeDocuments'; diff --git a/web/next-example/src/styles/globals.scss b/web/next-example/src/styles/globals.scss index 3a56091a6..90b8be3a2 100644 --- a/web/next-example/src/styles/globals.scss +++ b/web/next-example/src/styles/globals.scss @@ -146,4 +146,21 @@ #slack .yoopta-editor .yoopta-code .cm-content { padding: 8px; line-height: 1.46668; +} + +table, +th, +td { + border: 1px solid black; +} + +.yoopta-carousel .yoopta-carousel-options { + opacity: 0; + transition: opacity 0.15s ease-in-out; + top: 0px; + right: 0px; +} + +.yoopta-carousel:hover .yoopta-carousel-options { + opacity: 1; } \ No newline at end of file diff --git a/web/next-example/yarn.lock b/web/next-example/yarn.lock index d1c1f80be..e36bca63b 100644 --- a/web/next-example/yarn.lock +++ b/web/next-example/yarn.lock @@ -2,11 +2,6 @@ # yarn lockfile v1 -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - "@alloc/quick-lru@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" @@ -20,103 +15,104 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: - "@babel/highlight" "^7.24.2" + "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" + integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== "@babel/core@^7.21.3": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" - integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" + integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.4" - "@babel/parser" "^7.24.4" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helpers" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.24.1", "@babel/generator@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" - integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== +"@babel/generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" + integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== dependencies: - "@babel/types" "^7.24.0" + "@babel/types" "^7.24.7" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== dependencies: - "@babel/types" "^7.22.15" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" + integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" + "@babel/compat-data" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" browserslist "^4.22.2" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz#c806f73788a6800a5cfbbc04d2df7ee4d927cce3" - integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" +"@babel/helper-create-class-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b" + integrity sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz#be4f435a80dc2b053c76eeb4b7d16dd22cfc89da" + integrity sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-annotate-as-pure" "^7.24.7" regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz#fadc63f0c2ff3c8d02ed905dcea747c5b0fb74fd" - integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA== +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -124,181 +120,187 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== +"@babel/helper-environment-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" + integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.7" -"@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== +"@babel/helper-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" + integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== dependencies: - "@babel/types" "^7.23.0" - -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-hoist-variables@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" + integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== + dependencies: + "@babel/types" "^7.24.7" -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" - integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== - -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helpers@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" - integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" - -"@babel/highlight@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" - integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" +"@babel/helper-member-expression-to-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz#67613d068615a70e4ed5101099affc7a41c5225f" + integrity sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" + integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" + integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== + +"@babel/helper-remap-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz#b3f0f203628522713849d49403f1a414468be4c7" + integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-wrap-function" "^7.24.7" + +"@babel/helper-replace-supers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz#f933b7eed81a1c0265740edc91491ce51250f765" + integrity sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-split-export-declaration@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" + integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" + integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/helper-validator-option@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" + integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== + +"@babel/helper-wrap-function@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz#52d893af7e42edca7c6d2c6764549826336aae1f" + integrity sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw== + dependencies: + "@babel/helper-function-name" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helpers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" + integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg== + dependencies: + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" - integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== +"@babel/parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" + integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz#6125f0158543fb4edf1c22f322f3db67f21cb3e1" - integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz#fd059fd27b184ea2b4c7e646868a9a381bbc3055" + integrity sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz#468096ca44bbcbe8fcc570574e12eb1950e18107" + integrity sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz#71b21bb0286d5810e63a1538aa901c58e87375ec" + integrity sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -340,19 +342,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -368,12 +370,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== +"@babel/plugin-syntax-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -431,12 +433,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== +"@babel/plugin-syntax-typescript@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" + integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -446,464 +448,464 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== +"@babel/plugin-transform-async-generator-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz#7330a5c50e05181ca52351b8fd01642000c96cfd" + integrity sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" -"@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz#28f5c010b66fbb8ccdeef853bef1935c434d7012" - integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== +"@babel/plugin-transform-block-scoping@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz#42063e4deb850c7bd7c55e626bf4e7ab48e6ce02" + integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-static-block@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1" - integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.22.6" +"@babel/plugin-transform-classes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz#4ae6ef43a12492134138c1e45913f7c46c41b4bf" + integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345" - integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== +"@babel/plugin-transform-destructuring@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz#a097f25292defb6e6cc16d6333a4cfc1e3c72d9e" + integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dotall-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== +"@babel/plugin-transform-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz#6d8601fbffe665c894440ab4470bc721dd9131d6" + integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== +"@babel/plugin-transform-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c" + integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== +"@babel/plugin-transform-modules-commonjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz#9fd5f7fdadee9085886b183f1ad13d1ab260f4ab" + integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" -"@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== +"@babel/plugin-transform-modules-systemjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz#f8012316c5098f6e8dee6ecd58e2bc6f003d0ce7" + integrity sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw== dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" -"@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff" - integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-parameters" "^7.24.7" -"@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" -"@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6" - integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== +"@babel/plugin-transform-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz#b8f6848a80cf2da98a8a204429bec04756c6d454" + integrity sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" - integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a" - integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-react-constant-elements@^7.21.3": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz#d493a0918b9fdad7540f5afd9b5eb5c52500d18d" - integrity sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.7.tgz#b85e8f240b14400277f106c9c9b585d9acf608a1" + integrity sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-display-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" - integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== +"@babel/plugin-transform-react-display-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b" + integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== +"@babel/plugin-transform-react-jsx-development@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" + integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.24.7" -"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== +"@babel/plugin-transform-react-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz#17cd06b75a9f0e2bd076503400e7c4b99beedac4" + integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/plugin-transform-react-pure-annotations@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" - integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== +"@babel/plugin-transform-react-pure-annotations@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" + integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typeof-symbol@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7" - integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== +"@babel/plugin-transform-typeof-symbol@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz#f074be466580d47d6e6b27473a840c9f9ca08fb0" + integrity sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typescript@^7.24.1": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz#03e0492537a4b953e491f53f2bc88245574ebd15" - integrity sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g== +"@babel/plugin-transform-typescript@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz#b006b3e0094bf0813d505e0c5485679eeaf4a881" + integrity sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-typescript" "^7.24.1" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-typescript" "^7.24.7" -"@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/preset-env@^7.20.2": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.4.tgz#46dbbcd608771373b88f956ffb67d471dce0d23b" - integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== - dependencies: - "@babel/compat-data" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.7.tgz#ff067b4e30ba4a72f225f12f123173e77b987f37" + integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== + dependencies: + "@babel/compat-data" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -915,54 +917,54 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.4" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.1" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.1" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.1" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - "@babel/plugin-transform-parameters" "^7.24.1" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.1" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.1" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.24.7" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.24.7" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.24.7" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.7" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.24.7" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.24.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-modules-systemjs" "^7.24.7" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.7" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.4" @@ -980,92 +982,78 @@ esutils "^2.0.2" "@babel/preset-react@^7.18.6": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" - integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc" + integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-react-display-name" "^7.24.1" - "@babel/plugin-transform-react-jsx" "^7.23.4" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-react-display-name" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.24.7" + "@babel/plugin-transform-react-jsx-development" "^7.24.7" + "@babel/plugin-transform-react-pure-annotations" "^7.24.7" "@babel/preset-typescript@^7.21.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" - integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" + integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-syntax-jsx" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-typescript" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.24.7" "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.13.10", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57" - integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ== +"@babel/runtime@^7.13.10", "@babel/runtime@^7.18.6", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.1", "@babel/runtime@^7.8.4": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" + integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.18.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.6.tgz#5b76eb89ad45e2e4a0a8db54c456251469a3358e" - integrity sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.8.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" - integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.22.15", "@babel/template@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" - integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== - dependencies: - "@babel/code-frame" "^7.24.1" - "@babel/generator" "^7.24.1" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.1" - "@babel/types" "^7.24.0" +"@babel/template@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" + integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/traverse@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" + integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.4.4": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== +"@babel/types@^7.21.3", "@babel/types@^7.24.7", "@babel/types@^7.4.4": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" + integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-string-parser" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" "@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.3.2", "@codemirror/autocomplete@^6.7.1": - version "6.16.0" - resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.16.0.tgz#595eb30099ba91a835ed65ed8ff7497388f604b3" - integrity sha512-P/LeCTtZHRTCU4xQsa89vSKWecYv1ZqwzOd5topheGRf+qtacFgBeIMQi3eL8Kt/BUNvxUWkx+5qP2jlGoARrg== + version "6.16.2" + resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.16.2.tgz#ac4e191cd599503e45f35e97366b432d30b8f37a" + integrity sha512-MjfDrHy0gHKlPWsvSsikhO1+BOh+eBHNgfH1OXs1+DAf30IonQldgMM3kxLDTG9ktE7kDLaA1j/l7KMPA4KNfw== dependencies: "@codemirror/language" "^6.0.0" "@codemirror/state" "^6.0.0" @@ -1073,13 +1061,13 @@ "@lezer/common" "^1.0.0" "@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.5.0.tgz#e7dfb7918e7af8889d5731ff4c46ffafd7687353" - integrity sha512-rK+sj4fCAN/QfcY9BEzYMgp4wwL/q5aj/VfNSoH1RWPF9XS/dUwBkvlL3hpWgEjOqlpdN1uLC9UkjJ4tmyjJYg== + version "6.6.0" + resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.6.0.tgz#d308f143fe1b8896ca25fdb855f66acdaf019dd4" + integrity sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg== dependencies: "@codemirror/language" "^6.0.0" "@codemirror/state" "^6.4.0" - "@codemirror/view" "^6.0.0" + "@codemirror/view" "^6.27.0" "@lezer/common" "^1.1.0" "@codemirror/lang-angular@^0.1.3": @@ -1249,9 +1237,9 @@ "@lezer/yaml" "^1.0.0" "@codemirror/language@^6.0.0", "@codemirror/language@^6.3.0", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0", "@codemirror/language@^6.8.0": - version "6.10.1" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.10.1.tgz#428c932a158cb75942387acfe513c1ece1090b05" - integrity sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ== + version "6.10.2" + resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.10.2.tgz#4056dc219619627ffe995832eeb09cea6060be61" + integrity sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.23.0" @@ -1293,10 +1281,10 @@ "@codemirror/view" "^6.0.0" "@lezer/highlight" "^1.0.0" -"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0": - version "6.26.3" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.26.3.tgz#47aebd49a6ee3c8d36b82046d3bffe6056b8039f" - integrity sha512-gmqxkPALZjkgSxIeeweY/wGQXBfwTUaLs8h7OKtSwfbj9Ct3L11lD+u1sS7XHppxFQoMDiMDp07P9f3I2jWOHw== +"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0": + version "6.27.0" + resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.27.0.tgz#829882b171106bc50b4f17b7e5d2f7277832c92f" + integrity sha512-8kqX1sHbVW1lVzWwrjAbh4dR7eKhV8eIQ952JKaBXOoXE04WncoqCy4DMU701LSrPZ3N2Q4zsTawz7GQ+2mrUw== dependencies: "@codemirror/state" "^6.4.0" style-mod "^4.1.0" @@ -1341,9 +1329,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + version "4.10.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" + integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -1366,11 +1354,11 @@ integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== "@floating-ui/core@^1.0.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" - integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== + version "1.6.2" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.2.tgz#d37f3e0ac1f1c756c7de45db13303a266226851a" + integrity sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg== dependencies: - "@floating-ui/utils" "^0.2.1" + "@floating-ui/utils" "^0.2.0" "@floating-ui/dom@^1.0.0": version "1.6.5" @@ -1380,38 +1368,14 @@ "@floating-ui/core" "^1.0.0" "@floating-ui/utils" "^0.2.0" -"@floating-ui/dom@^1.6.1": - version "1.6.3" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.3.tgz#954e46c1dd3ad48e49db9ada7218b0985cee75ef" - integrity sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw== - dependencies: - "@floating-ui/core" "^1.0.0" - "@floating-ui/utils" "^0.2.0" - -"@floating-ui/react-dom@^2.0.0": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.8.tgz#afc24f9756d1b433e1fe0d047c24bd4d9cefaa5d" - integrity sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw== - dependencies: - "@floating-ui/dom" "^1.6.1" - -"@floating-ui/react-dom@^2.1.0": +"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.0.tgz#4f0e5e9920137874b2405f7d6c862873baf4beff" integrity sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA== dependencies: "@floating-ui/dom" "^1.0.0" -"@floating-ui/react@^0.26.11": - version "0.26.11" - resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.11.tgz#226d3fec890de439443b62f3138ef7de052b0998" - integrity sha512-fo01Cu+jzLDVG/AYAV2OtV6flhXvxP5rDaR1Fk8WWhtsFqwk478Dr2HGtB8s0HqQCsFWVbdHYpPjMiQiR/A9VA== - dependencies: - "@floating-ui/react-dom" "^2.0.0" - "@floating-ui/utils" "^0.2.0" - tabbable "^6.0.0" - -"@floating-ui/react@^0.26.9": +"@floating-ui/react@^0.26.11", "@floating-ui/react@^0.26.9": version "0.26.16" resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.16.tgz#3415a087f452165161c2d313d1d57e8142894679" integrity sha512-HEf43zxZNAI/E781QIVpYSF3K2VH4TTYZpqecjdsFkjsaU1EbaWcM++kw0HXFffj7gDUcBFevX8s0rQGQpxkow== @@ -1420,10 +1384,10 @@ "@floating-ui/utils" "^0.2.0" tabbable "^6.0.0" -"@floating-ui/utils@^0.2.0", "@floating-ui/utils@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" - integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== +"@floating-ui/utils@^0.2.0": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5" + integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw== "@humanwhocodes/config-array@^0.11.14": version "0.11.14" @@ -1440,9 +1404,9 @@ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" - integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== "@isaacs/cliui@^8.0.2": version "8.0.2" @@ -1524,9 +1488,9 @@ "@lezer/common" "^1.0.0" "@lezer/html@^1.3.0": - version "1.3.9" - resolved "https://registry.yarnpkg.com/@lezer/html/-/html-1.3.9.tgz#097150f0fb0d14e274515d3b3e50e7bd4a1d7ebc" - integrity sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA== + version "1.3.10" + resolved "https://registry.yarnpkg.com/@lezer/html/-/html-1.3.10.tgz#1be9a029a6fe835c823b20a98a449a630416b2af" + integrity sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w== dependencies: "@lezer/common" "^1.2.0" "@lezer/highlight" "^1.0.0" @@ -1560,9 +1524,9 @@ "@lezer/lr" "^1.0.0" "@lezer/lr@^1.0.0", "@lezer/lr@^1.1.0", "@lezer/lr@^1.3.0", "@lezer/lr@^1.3.1", "@lezer/lr@^1.3.3", "@lezer/lr@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.0.tgz#ed52a75dbbfbb0d1eb63710ea84c35ee647cb67e" - integrity sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg== + version "1.4.1" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.1.tgz#fe25f051880a754e820b28148d90aa2a96b8bdd2" + integrity sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw== dependencies: "@lezer/common" "^1.0.0" @@ -1913,7 +1877,7 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.3" -"@radix-ui/react-slot@1.0.2": +"@radix-ui/react-slot@1.0.2", "@radix-ui/react-slot@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab" integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== @@ -2028,9 +1992,9 @@ "@babel/runtime" "^7.13.10" "@rushstack/eslint-patch@^1.3.3": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.1.tgz#7ca168b6937818e9a74b47ac4e2112b2e1a024cf" - integrity sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg== + version "1.10.3" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" + integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" @@ -2161,14 +2125,14 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash@^4.14.200": - version "4.17.0" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.0.tgz#d774355e41f372d5350a4d0714abb48194a489c3" - integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA== + version "4.17.4" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.4.tgz#0303b64958ee070059e3a7184048a55159fe20b7" + integrity sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ== "@types/node@^20": - version "20.12.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.2.tgz#9facdd11102f38b21b4ebedd9d7999663343d72e" - integrity sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ== + version "20.14.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" + integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== dependencies: undici-types "~5.26.4" @@ -2178,16 +2142,16 @@ integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== "@types/react-dom@^18": - version "18.2.23" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.23.tgz#112338760f622a16d64271b408355f2f27f6302c" - integrity sha512-ZQ71wgGOTmDYpnav2knkjr3qXdAFu0vsk8Ci5w3pGAIdj7/kKAyn+VsQDhXsmzzzepAiI9leWMmubXz690AI/A== + version "18.3.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18": - version "18.2.73" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.73.tgz#0579548ad122660d99e00499d22e33b81e73ed94" - integrity sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA== + version "18.3.3" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" + integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -2340,28 +2304,35 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@yoopta/action-menu-list@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/action-menu-list/-/action-menu-list-4.4.1.tgz#a73b4f2faa9df8b5357f0e339bb2c1c072c50350" - integrity sha512-7sZ98BeCvCxihU3wP8xhfpZyzvi5NwM171FDB0kIrKzwtrsVHdbi3MeRv3eA+fjZ4WzTBnKZ0lLx/KmJ8pAG8A== +"@yoopta/accordion@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/accordion/-/accordion-4.5.0.tgz#8acd5764251625e892988a0fc2744a3ebd99116d" + integrity sha512-gFQJHFpWO7b9rNY/PRUy2JmAXu6qcBv1OGTIqwUY9ROr2lKMf4bhr1p8UxkKpfsn2gsYmpyYP5n+TbNQwLX3Ow== + dependencies: + lucide-react "^0.378.0" + +"@yoopta/action-menu-list@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/action-menu-list/-/action-menu-list-4.5.0.tgz#922db37efa8a7d6b38d55e9f36bf2a778b377764" + integrity sha512-psDEW0zW3IK3F6YVuv3M6HbBuQnJS8wm9c3Aeky8/z9tR+SxQS0+Eal4HUe6NmltH8Be/u2MKck6Rs0KtvR9rw== dependencies: "@floating-ui/react" "^0.26.9" "@radix-ui/react-icons" "^1.3.0" -"@yoopta/blockquote@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/blockquote/-/blockquote-4.4.1.tgz#f4220ab8a14ef314774ec08d3360f001052ed996" - integrity sha512-uZcLDk4wlfAURvFdVZDwcl+rZu2Z+fSKwdcTnEkZcO6EwQsMGeVo5zDHDQ2zs4QQQYWfH2esnty9O7dDGIjzGA== +"@yoopta/blockquote@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/blockquote/-/blockquote-4.5.0.tgz#a79e9a7fa86f07a4ac8254b0856fc32caa5cf260" + integrity sha512-XISIkZMkyfzrRF8BBt3tPAaRMqrBQ553FmFLH0akVbSxjOuKGktu8lNGLI3wcgAzNY1ncSo74nYnLRqRvEbnUg== -"@yoopta/callout@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/callout/-/callout-4.4.1.tgz#61c22ec6e0dacf3efbfa2072acc1937c60083171" - integrity sha512-xKL8lsJLiuUk/QYZ2aDtNl2DmKEsY5KuYJ0z1ZqSfIwZkuijQTLJZyo3jjpYpj5wqHlg/iM3+CAiNW8SVvDOng== +"@yoopta/callout@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/callout/-/callout-4.5.0.tgz#c081b5a7c9382974779659d01ed2f0405fe72add" + integrity sha512-o2hjm9PVEzLXEvQv/Mc12JfJLMs+/l+TMKv4tJPtGyg5D9+M17WRjE0BTsVVur6Z5wZtJG5L8ll7sPexaJJGrw== -"@yoopta/code@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/code/-/code-4.4.1.tgz#84a002d14b3ee0164e436798fe3f61f3b429b6a3" - integrity sha512-+HacI5r9BhJ1os+kPEonaKN9rKGBAS29PzE/UI+2EIVo9/pF8L8rAxIT/nMpbj1/I3dDmEbAYB5K3FJ1b40zGA== +"@yoopta/code@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/code/-/code-4.5.0.tgz#55a6ae659dc5ede4113041e04cd6381760b0b843" + integrity sha512-OeuKE3Ag8Z+fPBhM1wKT/rpL8P1P60+TDSK6qpM5YjncDPBuam3UtkezWcTJdF50evcorGnZLVrzEvba0m1R9g== dependencies: "@codemirror/lang-angular" "^0.1.3" "@codemirror/lang-cpp" "^6.0.2" @@ -2394,10 +2365,10 @@ codemirror "^6.0.1" copy-to-clipboard "^3.3.3" -"@yoopta/editor@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/editor/-/editor-4.4.1.tgz#c499b215c0831981d0655b7b2bdccb21198c1e54" - integrity sha512-Rzt07gkd5q6GcVquEeAbR//h4iqLJ621RKAqP9lCXLAnAAMH97ypnfpIXq7WsNtycjwee1SVCU0cSm2PPRr8Cw== +"@yoopta/editor@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/editor/-/editor-4.5.0.tgz#298571ce3b22eddf8719451ff8a60921eb2b32a4" + integrity sha512-crfHD2ZhQbm605iD2VNytZb90cL6ilzL2fiNMW9PErzjvJtVfFF7a336cEj+fiTPwL8r/6GNXBBVoQ1mOTC/Uw== dependencies: "@dnd-kit/core" "^6.1.0" "@dnd-kit/sortable" "^8.0.0" @@ -2410,76 +2381,76 @@ lodash.clonedeep "^4.5.0" slate-history "^0.100.0" -"@yoopta/embed@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/embed/-/embed-4.4.1.tgz#12e1f162bd70f74f4a64174409e64c4347fe1408" - integrity sha512-yHLEEY2RxZNGdJxsuT+MfoLcEBdKyALZh2TFt9ALoCw99NujpOqIdBOqeUc6y0b1cgHUjImJ8Z9jBbdpU4pOxA== +"@yoopta/embed@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/embed/-/embed-4.5.0.tgz#8f8a89ddfd4ff2236dc835bf6bed369a65994b5b" + integrity sha512-I2hG6sDgHrpT5ESa9XuxTfGgSJLy2WtonrXY2Tz8f81yHsCaubpPwumogst6olp2MN8Q6WoKLdqvAzsaXAmmxA== dependencies: "@floating-ui/react" "^0.26.9" "@radix-ui/react-icons" "^1.3.0" re-resizable "^6.9.11" -"@yoopta/file@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/file/-/file-4.4.1.tgz#39fb00c6d98dfa790538472491531a6bb7f765b5" - integrity sha512-GlevVPsL2UcffGLeVsa/h37Y/IoxMrpb/Qr1l8oyzNV2KrZFtA54IU8jOsMI8wlb2+KUQhw80OKDFpqwYn2ekw== +"@yoopta/file@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/file/-/file-4.5.0.tgz#af0df4dbeaf2c61e29564cd5e219b95dcefd35a9" + integrity sha512-LXVFsM9j2RSfDnNyKecawN/leTYedMKdxfVMJEyVFeo7b2iN99LdgfHbdI8SfCeyuGVbHKFt3R3AnccjWC3h9Q== dependencies: "@floating-ui/react" "^0.26.9" "@radix-ui/react-icons" "^1.3.0" -"@yoopta/headings@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/headings/-/headings-4.4.1.tgz#d9965aeb3301748f7be5cede2612d56ee4d986e3" - integrity sha512-dwNQ7+NCE+X393Lio3Upnu1lt/o0bHEqecD4s4gomiJUgFzNjxcC4kHftTdN7X4ATAsiyqapKT2Pef2sKy0+Ag== +"@yoopta/headings@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/headings/-/headings-4.5.0.tgz#3afe40f8bb0ed14391ea18f1789ff3d40c1a44ef" + integrity sha512-RiZMogilPOEJncI+B5fTZ+XAm7mQHMY7bO5GL2WlA3UnQGC8TGxyXgFJhV6oNABH/IVzqjwdkMhtHGFGDlHZPA== -"@yoopta/image@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/image/-/image-4.4.1.tgz#5ba2ff8749f1947ad90489004cdee50688e412eb" - integrity sha512-Nf9CI9+Y3kYU2mlNM/1k+o6OVqk+aWqF94zwsRGoGDPcm8larX0BcD1JSjHLuKgLl+cZ9761IX9Mlk4hRAQYLA== +"@yoopta/image@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/image/-/image-4.5.0.tgz#4307bb7fc1b63a4bbbfb308490f9398f5a282494" + integrity sha512-Ii+nLGWpFpmrkb2uVm+VJqGpduxxuy6OrZiMTGNTYS6/Tixy5KOy05baURxVWEDau1khizSVs0CwVr+4dKv7Vg== dependencies: "@floating-ui/react" "^0.26.9" "@radix-ui/react-icons" "^1.3.0" re-resizable "^6.9.11" -"@yoopta/link-tool@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/link-tool/-/link-tool-4.4.1.tgz#abd60d71cdffc30afdbfd5035e82d0d91894a656" - integrity sha512-Mp/A5FS4hvksZmBUo9nwI2vJAv3bSom3xd5va3XAzCwOdxq3b6ZTEcAkT6ezQt3NuDQSqBacW39OVtvO2d1U+A== +"@yoopta/link-tool@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/link-tool/-/link-tool-4.5.0.tgz#3f94e1be23662ee464cf52a677eda5c553df535d" + integrity sha512-2JsBs4JafzFZqhHWm01Rf8Qy8HWPCgfG0D3aiDpFmBioTTaMvQIPJ7GwrjzeXMbeQNNUaUgq/oMGT3Xts8VBlw== -"@yoopta/link@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/link/-/link-4.4.1.tgz#caec3379781e5c5c214ec895c639e5bed05f509c" - integrity sha512-SclroG6LWi7TOJ1TiM8OSvO9+eb5PtpW9QpegBjUpVDKK2tP1CnQZyJGi9FVJYgCOW7jKKjY+eW2MY/xVCCtug== +"@yoopta/link@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/link/-/link-4.5.0.tgz#111fc4acb6764177f6a751d2b94bcf1012993fcd" + integrity sha512-JFH/WR/SN2Jz2nPpFQ45Agybc3ZTP+7A5QsQ4VraSD7pMtyOJxBB1/Qe54WL13RDtZVABenMzwZ5pHdIp20O0Q== -"@yoopta/lists@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/lists/-/lists-4.4.1.tgz#cbc3ae086bee8ba6c49b6b331b8b751f7f88eb97" - integrity sha512-OY+msE5bLxzIT+UJuiJDcWm88FaLOXkibrd1GVJpKNZ4ZL6FLauh9kwqo0C6kNRkSbgsLLeFtK3RpKFaC8ReMg== +"@yoopta/lists@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/lists/-/lists-4.5.0.tgz#d48db028a132971de7d7a40b6440757b614fee0e" + integrity sha512-YIv7fM9fBmZSuvaRVn95bCEr5DVrvplbXcpWDROZLS3K3PYGdr/KgjyLQsHZZO6jUs+FkBsysM8mqYhAxIWx1A== -"@yoopta/marks@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@yoopta/marks/-/marks-4.3.0.tgz#65891ab8c9e8df59f257a6e6de3489fe3bdab9ff" - integrity sha512-9mhavyIMKadlcTpmFQcuqxQ+7chsnDM+yMtzeBZ5p7OrMGtQDRfc0KrSXZOwWTYC+fOgpg2JIedEvOpB2NdJqA== +"@yoopta/marks@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/marks/-/marks-4.5.0.tgz#a3ecf403dcb375f65e4b9dad2aa2eff66ff34a7d" + integrity sha512-tVRHIEMjYreUH50HIXPCxA6K23yVr+vuxJgEnOOiqqiuIt7Dq7wyIDOXtgVxO51jWbC8zvU4Hz4xyJUlGv+6TA== -"@yoopta/paragraph@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/paragraph/-/paragraph-4.4.1.tgz#6872de6ee222d1b3d2e7617a9101f24b0a867820" - integrity sha512-46FnbvKOuf9Aa9rNJBmkA8gxg5bWvjIrzpLICI/SBuGRiTLhazh9l1vEgVPCTCHLxnADDku4vq6f4mt+8PHWbQ== +"@yoopta/paragraph@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/paragraph/-/paragraph-4.5.0.tgz#cc39e17a1205b64dda8cf08831fe4858fd4a4716" + integrity sha512-cuFY9hvA65idwEBX1OGmrcsj6aPzzBDLL/AN36nW9MkVvtn8vjlQAbEisTOZR2yiy2vhM7CbuKwFkJihXzvxaw== -"@yoopta/toolbar@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/toolbar/-/toolbar-4.4.1.tgz#cf967bd42ee45452722f1ea9aff8053e36b6212a" - integrity sha512-F6w9sznXBD1wW0XA8sywuioBFlOun2DkSAmeaeqoWiHyFBB6StvRt0HfvWt0cJo+FOPMjXFDVn3LOqwz9E2m9A== +"@yoopta/toolbar@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/toolbar/-/toolbar-4.5.0.tgz#9dc448c4b9944af3b3461f80f554142ee38a02ba" + integrity sha512-wJa1MfD03YSuiFDhsjp8f/pgur/kEpk3h57CTXVIixSrtlTvlbMU1JYaLKL3zYdLYgNwOo4Hbb/Knus1iORLdA== dependencies: "@floating-ui/react" "^0.26.9" "@radix-ui/react-icons" "^1.3.0" "@radix-ui/react-toolbar" "^1.0.4" lodash.throttle "^4.1.1" -"@yoopta/video@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@yoopta/video/-/video-4.4.1.tgz#f800507c765de455f406b33e8e86384f40937120" - integrity sha512-ssUb4FL4u130QqhRPk9NvrSu6pAcYJ3vvX8m1L3zkW8TdA88dhiZhVaGkaSQLod+hBCMqV1BwwzLMNTEUMMePw== +"@yoopta/video@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@yoopta/video/-/video-4.5.0.tgz#e7c41164e93847b344bff64e38fd2306fb96d0b7" + integrity sha512-ZF9UaTQSP4JtDGFtSR8l+bZ42+pJxBCn2K7W+2F5mZQ9EtF8nAa+yMGlu7lIEjxxPPhJ4ErCKiUJFU7BjiVCvA== dependencies: "@floating-ui/react" "^0.26.9" "@radix-ui/react-icons" "^1.3.0" @@ -2579,7 +2550,7 @@ array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" -array-includes@^3.1.6, array-includes@^3.1.7: +array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -2596,7 +2567,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlast@^1.2.4: +array.prototype.findlast@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== @@ -2651,14 +2622,14 @@ array.prototype.toreversed@^1.1.2: es-shim-unscopables "^1.0.0" array.prototype.tosorted@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" - integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== dependencies: - call-bind "^1.0.5" + call-bind "^1.0.7" define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.1.0" + es-abstract "^1.23.3" + es-errors "^1.3.0" es-shim-unscopables "^1.0.2" arraybuffer.prototype.slice@^1.0.3: @@ -2712,12 +2683,12 @@ axobject-query@^3.2.1: dequal "^2.0.3" babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.10" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz#276f41710b03a64f6467433cab72cbc2653c38b1" - integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ== + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.10.4: @@ -2729,11 +2700,11 @@ babel-plugin-polyfill-corejs3@^0.10.4: core-js-compat "^3.36.1" babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz#4f08ef4c62c7a7f66a35ed4c0d75e30506acc6be" - integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g== + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" balanced-match@^1.0.0: version "1.0.2" @@ -2765,12 +2736,12 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" browserslist@^4.22.2, browserslist@^4.23.0: version "4.23.0" @@ -2816,9 +2787,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: - version "1.0.30001603" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001603.tgz#605046a5bdc95ba4a92496d67e062522dce43381" - integrity sha512-iL2iSS0eDILMb9n5yKQoTBim9jMZ0Yrk8g0N9K7UzYyWnfIKzXBZD5ngpM37ZcL/cv0Mli8XtVMRYMQAfFpi5Q== + version "1.0.30001628" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001628.tgz#90b6cd85ddc2e9f831de0225f4ca5a130c8d8222" + integrity sha512-S3BnR4Kh26TBxbi5t5kpbcUlLJb9lhtDXISDPwOfI+JoC+ik0QksvkZtUVyikw3hjnkgkMPSJ8oIM9yMm9vflA== chalk@^2.4.2: version "2.4.2" @@ -2875,9 +2846,9 @@ clsx@2.0.0: integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== clsx@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" - integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== codemirror@^6.0.0, codemirror@^6.0.1: version "6.0.1" @@ -2949,9 +2920,9 @@ copy-to-clipboard@^3.3.3: toggle-selection "^1.0.6" core-js-compat@^3.31.0, core-js-compat@^3.36.1: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8" - integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== dependencies: browserslist "^4.23.0" @@ -3068,9 +3039,9 @@ debug@^3.2.7: ms "^2.1.1" debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: ms "2.1.2" @@ -3093,7 +3064,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -3192,9 +3163,27 @@ eastasianwidth@^0.2.0: integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== electron-to-chromium@^1.4.668: - version "1.4.722" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.722.tgz#99ae3484c5fc0f387d39ad98d77e1f259b9f4074" - integrity sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ== + version "1.4.790" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.790.tgz#2a3a5509593745c5d65d8acd66b308f2a25da041" + integrity sha512-eVGeQxpaBYbomDBa/Mehrs28MdvCXfJmEFzaMFsv8jH/MJDLIylJN81eTJ5kvx7B7p18OiPK0BkC06lydEy63A== + +embla-carousel-react@^8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.1.3.tgz#a07770eee003a56dfe2fa55304b48892cc00c013" + integrity sha512-YrezDPgxPDKa+OKMhSrwuPEU2OgF5147vFW473EWT3bx9DETV3W/RyWTxq0/2pf3M4VXkjqFNbS/W1xM8lTaVg== + dependencies: + embla-carousel "8.1.3" + embla-carousel-reactive-utils "8.1.3" + +embla-carousel-reactive-utils@8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.1.3.tgz#b4e7d439ab6aefb9554b14198e567e919b52f167" + integrity sha512-D8tAK6NRQVEubMWb+b/BJ3VvGPsbEeEFOBM6cCCwfiyfLzNlacOAt0q2dtUEA9DbGxeWkB8ExgXzFRxhGV2Hig== + +embla-carousel@8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/embla-carousel/-/embla-carousel-8.1.3.tgz#d086738ee529e59815dae4e2ecd9ee37c47ffc1a" + integrity sha512-GiRpKtzidV3v50oVMly8S+D7iE1r96ttt7fSlvtyKHoSkzrAnVcu8fX3c4j8Ol2hZSQlVfDqDIqdrFPs0u5TWQ== emoji-regex@^8.0.0: version "8.0.0" @@ -3207,9 +3196,9 @@ emoji-regex@^9.2.2: integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== enhanced-resolve@^5.12.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== + version "5.17.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" + integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3226,7 +3215,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2: +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== @@ -3285,19 +3274,19 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" -es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: +es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: - version "1.0.18" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz#4d3424f46b24df38d064af6fbbc89274e29ea69d" - integrity sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA== +es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.19: + version "1.0.19" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" + integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== dependencies: call-bind "^1.0.7" define-properties "^1.2.1" - es-abstract "^1.23.0" + es-abstract "^1.23.3" es-errors "^1.3.0" es-set-tostringtag "^2.0.3" function-bind "^1.1.2" @@ -3342,7 +3331,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.1.1: +escalade@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== @@ -3447,33 +3436,33 @@ eslint-plugin-jsx-a11y@^6.7.1: object.fromentries "^2.0.7" "eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + version "4.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@^7.33.2: - version "7.34.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" - integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== + version "7.34.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz#2780a1a35a51aca379d86d29b9a72adc6bfe6b66" + integrity sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw== dependencies: - array-includes "^3.1.7" - array.prototype.findlast "^1.2.4" + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" array.prototype.flatmap "^1.3.2" array.prototype.toreversed "^1.1.2" array.prototype.tosorted "^1.1.3" doctrine "^2.1.0" - es-iterator-helpers "^1.0.17" + es-iterator-helpers "^1.0.19" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - object.hasown "^1.1.3" - object.values "^1.1.7" + object.entries "^1.1.8" + object.fromentries "^2.0.8" + object.hasown "^1.1.4" + object.values "^1.2.0" prop-types "^15.8.1" resolve "^2.0.0-next.5" semver "^6.3.1" - string.prototype.matchall "^4.0.10" + string.prototype.matchall "^4.0.11" eslint-scope@^7.2.2: version "7.2.2" @@ -3610,10 +3599,10 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" @@ -3720,9 +3709,9 @@ get-symbol-description@^1.0.2: get-intrinsic "^1.2.4" get-tsconfig@^4.5.0: - version "4.7.3" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.3.tgz#0498163d98f7b58484dd4906999c0c9d5f103f83" - integrity sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg== + version "4.7.5" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.5.tgz#5e012498579e9a6947511ed0cd403272c7acbbaf" + integrity sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw== dependencies: resolve-pkg-maps "^1.0.0" @@ -3752,15 +3741,15 @@ glob@10.3.10: path-scurry "^1.10.1" glob@^10.3.10: - version "10.3.12" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b" - integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg== + version "10.4.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" + integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== dependencies: foreground-child "^3.1.0" - jackspeak "^2.3.6" - minimatch "^9.0.1" - minipass "^7.0.4" - path-scurry "^1.10.2" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + path-scurry "^1.11.1" glob@^7.1.3: version "7.2.3" @@ -3787,11 +3776,12 @@ globals@^13.19.0: type-fest "^0.20.2" globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== dependencies: - define-properties "^1.1.3" + define-properties "^1.2.1" + gopd "^1.0.1" globby@^11.1.0: version "11.1.0" @@ -3874,14 +3864,14 @@ ignore@^5.2.0: integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== immer@^10.0.3: - version "10.0.4" - resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.4.tgz#09af41477236b99449f9d705369a4daaf780362b" - integrity sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw== + version "10.1.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.1.1.tgz#206f344ea372d8ea176891545ee53ccc062db7bc" + integrity sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw== immutable@^4.0.0: - version "4.3.5" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" - integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + version "4.3.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" + integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" @@ -4143,7 +4133,7 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" -jackspeak@^2.3.5, jackspeak@^2.3.6: +jackspeak@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== @@ -4152,10 +4142,19 @@ jackspeak@^2.3.5, jackspeak@^2.3.6: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jackspeak@^3.1.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.3.0.tgz#65dc7cd87522494fcb2648ec6ca684170e9e1727" + integrity sha512-glPiBfKguqA7v8JsXO3iLjJWZ9FV1vNpoI0I9hI9Mnk5yetO9uPLSpiCEmiVijAssv2f54HpvtzvAHfhPieiDQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jiti@^1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + version "1.21.3" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.3.tgz#b2adb07489d7629b344d59082bbedb8c21c5f755" + integrity sha512-uy2bNX5zQ+tESe+TiC7ilGRz8AtRGmnJH55NC5S0nSUjvvvM2hJHmefHErugGXN4pNv4Qx7vLsnNw9qJ9mtIsw== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -4229,9 +4228,9 @@ keyv@^4.5.3: json-buffer "3.0.1" language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + version "0.3.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== language-tags@^1.0.9: version "1.0.9" @@ -4310,9 +4309,9 @@ lower-case@^2.0.2: tslib "^2.0.3" lru-cache@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" - integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== lru-cache@^5.1.1: version "5.1.1" @@ -4321,18 +4320,16 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - lucide-react@^0.366.0: version "0.366.0" resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.366.0.tgz#d26606621ca7e36293991367ea0f8dc558ea8acc" integrity sha512-iUOsp/35wOkrgEzigZlZI/OhVxQZ8CmxjebdIjfSDzNBmrNYjQfKSpeKderaEFfGt3OycF1BE+wLlaqWRuoh4w== +lucide-react@^0.378.0: + version "0.378.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.378.0.tgz#232acb99c6baedfa90959a2c0dd11327b058bde8" + integrity sha512-u6EPU8juLUk9ytRcyapkWI18epAv3RU+6+TC23ivjR0e+glWKBobFeSgRwOIJihzktILQuy6E0E80P2jVTDR5g== + mdn-data@2.0.28: version "2.0.28" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" @@ -4349,11 +4346,11 @@ merge2@^1.3.0, merge2@^1.4.1: integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" minimatch@9.0.3: @@ -4370,7 +4367,7 @@ minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.1: +minimatch@^9.0.1, minimatch@^9.0.4: version "9.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== @@ -4382,10 +4379,10 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== ms@2.1.2: version "2.1.2" @@ -4504,7 +4501,7 @@ object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.7: +object.entries@^1.1.7, object.entries@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== @@ -4513,7 +4510,7 @@ object.entries@^1.1.7: define-properties "^1.2.1" es-object-atoms "^1.0.0" -object.fromentries@^2.0.7: +object.fromentries@^2.0.7, object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -4532,7 +4529,7 @@ object.groupby@^1.0.1: define-properties "^1.2.1" es-abstract "^1.23.2" -object.hasown@^1.1.3: +object.hasown@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== @@ -4541,7 +4538,7 @@ object.hasown@^1.1.3: es-abstract "^1.23.2" es-object-atoms "^1.0.0" -object.values@^1.1.6, object.values@^1.1.7: +object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== @@ -4558,16 +4555,16 @@ once@^1.3.0: wrappy "1" optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" + word-wrap "^1.2.5" p-limit@^3.0.2: version "3.1.0" @@ -4620,10 +4617,10 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.1, path-scurry@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.2.tgz#8f6357eb1239d5fa1da8b9f70e9c080675458ba7" - integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA== +path-scurry@^1.10.1, path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== dependencies: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -4633,10 +4630,10 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" @@ -4690,9 +4687,9 @@ postcss-nested@^6.0.1: postcss-selector-parser "^6.0.11" postcss-selector-parser@^6.0.11: - version "6.0.16" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" - integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53" + integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -4750,12 +4747,12 @@ re-resizable@^6.9.11: integrity sha512-OBqd1BwVXpEJJn/yYROG+CbeqIDBWIp6wathlpB0kzZWWZIY1gPTsgK2yJEui5hOvkCdC2mcexF2V3DZVfLq2g== react-dom@^18: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: loose-envify "^1.1.0" - scheduler "^0.23.0" + scheduler "^0.23.2" react-is@^16.13.1: version "16.13.1" @@ -4791,9 +4788,9 @@ react-style-singleton@^2.2.1: tslib "^2.0.0" react@^18: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" @@ -4944,18 +4941,18 @@ safe-regex-test@^1.0.3: is-regex "^1.1.4" sass@^1.75.0: - version "1.75.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.75.0.tgz#91bbe87fb02dfcc34e052ddd6ab80f60d392be6c" - integrity sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw== + version "1.77.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.4.tgz#92059c7bfc56b827c56eb116778d157ec017a5cd" + integrity sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: loose-envify "^1.1.0" @@ -4972,11 +4969,9 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.5.4: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== set-function-length@^1.2.1: version "1.2.2" @@ -5082,7 +5077,6 @@ streamsearch@^1.1.0: integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: - name string-width-cjs version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -5100,7 +5094,7 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.10: +string.prototype.matchall@^4.0.11: version "4.0.11" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== @@ -5147,7 +5141,6 @@ string.prototype.trimstart@^1.0.8: es-object-atoms "^1.0.0" "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -5221,9 +5214,9 @@ svg-parser@^2.0.4: integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== svgo@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.2.0.tgz#7a5dff2938d8c6096e00295c2390e8e652fa805d" - integrity sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ== + version "3.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8" + integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== dependencies: "@trysound/sax" "0.2.0" commander "^7.2.0" @@ -5239,11 +5232,11 @@ tabbable@^6.0.0: integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== tailwind-merge@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.2.2.tgz#87341e7604f0e20499939e152cd2841f41f7a3df" - integrity sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw== + version "2.3.0" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.3.0.tgz#27d2134fd00a1f77eca22bcaafdd67055917d286" + integrity sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA== dependencies: - "@babel/runtime" "^7.24.0" + "@babel/runtime" "^7.24.1" tailwindcss-animate@^1.0.7: version "1.0.7" @@ -5350,9 +5343,9 @@ tsconfig-paths@^3.15.0: strip-bom "^3.0.0" tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -5411,9 +5404,9 @@ typed-array-length@^1.0.6: possible-typed-array-names "^1.0.0" typescript@^5: - version "5.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" - integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== unbox-primitive@^1.0.2: version "1.0.2" @@ -5454,12 +5447,12 @@ unicode-property-aliases-ecmascript@^2.0.0: integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + version "1.0.16" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" + integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" + escalade "^3.1.2" + picocolors "^1.0.1" uri-js@^4.2.2: version "4.4.1" @@ -5476,9 +5469,9 @@ use-callback-ref@^1.3.0: tslib "^2.0.0" use-debounce@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-10.0.0.tgz#5091b18d6c16292605f588bae3c0d2cfae756ff2" - integrity sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A== + version "10.0.1" + resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-10.0.1.tgz#adc42e7f7b08a237f5bbf0ea6cadee5813863cdc" + integrity sha512-0uUXjOfm44e6z4LZ/woZvkM8FwV1wiuoB6xnrrOmeAEjRDDzTLQNRFtYHvqUsJdrz1X37j0rVGIVp144GLHGKg== use-sidecar@^1.1.2: version "1.1.2" @@ -5555,6 +5548,11 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -5583,15 +5581,10 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - yaml@^2.3.4: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed" - integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== + version "2.4.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.3.tgz#0777516b8c7880bcaa0f426a5410e8d6b0be1f3d" + integrity sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg== yocto-queue@^0.1.0: version "0.1.0" diff --git a/yarn.lock b/yarn.lock index 8b18040b9..b85750a29 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8265,10 +8265,10 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== -lucide-react@^0.365.0: - version "0.365.0" - resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.365.0.tgz#aa15b62e004bf35d557451f4b3aed2f6da5e2d84" - integrity sha512-sJYpPyyzGHI4B3pys+XSFnE4qtSWc68rFnDLxbNNKjkLST5XSx9DNn5+1Z3eFgFiw39PphNRiVBSVb+AL3oKwA== +lucide-react@^0.378.0: + version "0.378.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.378.0.tgz#232acb99c6baedfa90959a2c0dd11327b058bde8" + integrity sha512-u6EPU8juLUk9ytRcyapkWI18epAv3RU+6+TC23ivjR0e+glWKBobFeSgRwOIJihzktILQuy6E0E80P2jVTDR5g== lz-string@^1.5.0: version "1.5.0"