From 47ccd833d9c1108a3722dc7b80804893c1e7250d Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Mon, 18 Dec 2023 14:17:14 +0100 Subject: [PATCH 001/182] ci: enable alpha mode for dev --- .changeset/pre.json | 11 +++++++++++ .github/workflows/continuous-deployment.yml | 1 + 2 files changed, 12 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000..35b8a0ceb --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,11 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "@frontify/app-bridge": "3.0.0", + "@frontify/frontify-cli": "5.5.3", + "@frontify/guideline-blocks-settings": "0.29.16", + "@frontify/sidebar-settings": "0.8.1" + }, + "changesets": [] +} diff --git a/.github/workflows/continuous-deployment.yml b/.github/workflows/continuous-deployment.yml index f93e6443f..9d6fdf263 100644 --- a/.github/workflows/continuous-deployment.yml +++ b/.github/workflows/continuous-deployment.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - dev concurrency: ${{ github.workflow }}-${{ github.ref }} From 2a3dd829d3801745b752ba3bb54d69c9061b71e9 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Wed, 10 Jan 2024 11:13:36 +0100 Subject: [PATCH 002/182] chore: syncs main to dev (#675) * feat: add manifest verification for Platform Apps (#645) * chore: add method stub * chore: add manifest stub * feat: add platform-app manifest validator step * Create curvy-terms-watch.md * fix: formatting * fix: remove yup and add zod schema * Update .changeset/curvy-terms-watch.md Co-authored-by: Samuel Alev * chore: remove verify-manifest cli command * fix: manifest keys * fix: add check to restrict version to be a number * fix: restructure manifest readout and throw Error if not correct * fix: adjust casing and wording of manifest * Update packages/cli/src/utils/verifyManifest.ts Co-authored-by: Samuel Alev * Update packages/cli/src/utils/verifyManifest.ts Co-authored-by: Samuel Alev * Update packages/cli/src/utils/verifyManifest.ts Co-authored-by: Samuel Alev * chore: object destructure the manifest * chore: fix typo * chore: add z.enums instead string where applicable * chore: formatting * chore: remove useless refine and add cleaner objects --------- Co-authored-by: Samuel Alev * chore: release packages (#658) Co-authored-by: github-actions[bot] * feat: themes and template settings (#654) * themeAsset updates * types * typing * update tests * code smell fix * more code small * more code smell * fix test * typing fixes * updates * fix typing error * refactor: improve typing * style: linting --------- Co-authored-by: Mike Trummer * chore: add changeset for previous commit * chore: release packages (#660) Co-authored-by: github-actions[bot] * fix: fix links in readme (#661) * fix: platform app compiler (#664) * chore: adjust compiler * Create unlucky-mice-give.md * chore: release packages (#665) Co-authored-by: julianiff * revert: wrong release * chore: release packages (#667) Co-authored-by: github-actions[bot] * chore: fix css and js filename exchanged (#668) * chore: fix css and js filename exchanged * Create spicy-apricots-guess.md * chore: release packages (#669) Co-authored-by: github-actions[bot] * chore: add optional to assetAction (#670) * chore: add optional to assetAction * Create olive-goats-nail.md * chore: change naming to workspace (#673) * chore: change naming to workspace * Create small-kiwis-tap.md * chore: update platform app manifest (#674) * chore: update manfiest * Create gorgeous-baboons-run.md * Update .changeset/gorgeous-baboons-run.md Co-authored-by: Samuel Alev * lint: fixing --------- Co-authored-by: Samuel Alev * chore: release packages (#671) Co-authored-by: julianiff --------- Co-authored-by: Julian Iff Co-authored-by: Samuel Alev Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: Anxo Botana Co-authored-by: Mike Trummer Co-authored-by: Luca Hochreutener <34413733+hochreutenerl@users.noreply.github.com> --- README.md | 4 +- packages/app-bridge/CHANGELOG.md | 6 + packages/app-bridge/package.json | 2 +- packages/app-bridge/src/AppBridgeTheme.ts | 11 +- .../src/react/usePageTemplateSettings.spec.ts | 53 +++--- .../src/react/usePageTemplateSettings.ts | 12 +- .../src/react/useTemplateAssets.spec.ts | 3 +- .../app-bridge/src/react/useTemplateAssets.ts | 10 +- .../src/react/useThemeAssets.spec.ts | 40 +++-- .../app-bridge/src/react/useThemeAssets.ts | 39 +++-- .../src/react/useThemeSettings.spec.ts | 26 ++- .../app-bridge/src/react/useThemeSettings.ts | 11 +- .../src/tests/AppBridgeThemeStub.ts | 6 +- packages/app-bridge/src/types/Emitter.ts | 6 +- .../app-bridge/src/types/ThemeTemplate.ts | 3 + packages/app-bridge/src/types/index.ts | 1 + packages/cli/CHANGELOG.md | 28 +++ packages/cli/package.json | 5 +- packages/cli/src/commands/deploy.ts | 10 +- packages/cli/src/utils/compiler.ts | 8 +- packages/cli/src/utils/verifyManifest.ts | 83 +++++++++ .../platform-app-css-modules/manifest.json | 10 +- .../templates/platform-app-css/manifest.json | 10 +- .../platform-app-tailwind/manifest.json | 10 +- .../cli/tests/utils/verifyManifest.spec.ts | 139 +++++++++++++++ .../guideline-blocks-settings/CHANGELOG.md | 8 + .../guideline-blocks-settings/package.json | 2 +- packages/sidebar-settings/CHANGELOG.md | 7 + packages/sidebar-settings/package.json | 2 +- pnpm-lock.yaml | 162 ++++++++++++------ 30 files changed, 578 insertions(+), 139 deletions(-) create mode 100644 packages/app-bridge/src/types/ThemeTemplate.ts create mode 100644 packages/cli/src/utils/verifyManifest.ts create mode 100644 packages/cli/tests/utils/verifyManifest.spec.ts diff --git a/README.md b/README.md index 8836c324a..cdbc63ce7 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,13 @@ Brand SDK is a collection of tools and packages for building apps that integrate Frontify CLI allows developers to serve apps like Content Blocks in a local development environment. With the CLI, you can easily run and test your app without having to deploy it to Frontify's platform. The CLI also includes commands for building and deploying your app to Frontify's platform. -[More information](https://developer.frontify.com/d/XFPCrGNrXQQM/content-blocks#/details-concepts/frontify-cli) +[More information](https://developer.frontify.com/d/XFPCrGNrXQQM/content-blocks#/details-concepts-1/frontify-cli) ## App Bridge App Bridge is a SDK that allows developers to interact with Frontify and integrate their app with Frontify's platform. The SDK includes methods for making requests to the Frontify API, handling authentication, and managing app data. With App Bridge, developers can access Frontify's platform features and functionality within their own app, providing a seamless user experience for Frontify users. -[More information](https://developer.frontify.com/d/XFPCrGNrXQQM/content-blocks#/details-concepts/content-blocks/introducing-the-app-bridge) +[More information](https://developer.frontify.com/d/XFPCrGNrXQQM/content-blocks#/details-concepts-1/content-blocks/introducing-the-app-bridge) ## TypeScript diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 55dd2374a..1efaae4ff 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 3.0.1 + +### Patch Changes + +- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings + ## 3.0.0 ### Major Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index c679a32c3..61420993a 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "3.0.0", + "version": "3.0.1", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", diff --git a/packages/app-bridge/src/AppBridgeTheme.ts b/packages/app-bridge/src/AppBridgeTheme.ts index 043485e00..f1cf6065e 100644 --- a/packages/app-bridge/src/AppBridgeTheme.ts +++ b/packages/app-bridge/src/AppBridgeTheme.ts @@ -52,6 +52,7 @@ import type { GuidelineSearchResult, Language, TargetsUpdate, + ThemeTemplate, } from './types'; export type ThemeApiMethod = ApiMethodNameValidator>; @@ -146,11 +147,15 @@ export interface AppBridgeTheme< deleteAssetIdsFromCoverPageTemplateAssetKey(key: string, assetIds: number[]): Promise; - addAssetIdsToThemeAssetKey(key: string, assetIds: number[]): Promise>; + addAssetIdsToThemeAssetKey( + key: string, + assetIds: number[], + template: ThemeTemplate, + ): Promise>; - getThemeAssets(): Promise>; + getThemeAssets(template: ThemeTemplate): Promise>; - deleteAssetIdsFromThemeAssetKey(key: string, assetIds: number[]): Promise; + deleteAssetIdsFromThemeAssetKey(key: string, assetIds: number[], template: ThemeTemplate): Promise; addAssetIdsToLibraryPageTemplateAssetKey( documentId: number, diff --git a/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts b/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts index 43ed70150..da46084f3 100644 --- a/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts +++ b/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts @@ -4,11 +4,16 @@ import { cleanup, renderHook, waitFor } from '@testing-library/react'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { getAppBridgeThemeStub } from '../tests'; import { usePageTemplateSettings } from './usePageTemplateSettings'; +import type { ThemeTemplate } from '../types'; const DOCUMENT_ID = 3462; const THEME_SETTINGS = { - customThemeSetting: 123, - themeExclusiveSetting: 234, + documentPage: { + customThemeSetting: 123, + themeExclusiveSetting: 234, + }, + cover: {}, + library: {}, }; const PAGE_SETTINGS = { myCustomSetting: 123, @@ -38,7 +43,7 @@ describe('usePageTemplateSettings', () => { pageTemplateSettings: Record, template: Parameters[1], documentId?: Parameters[2], - themeSettings = {}, + themeSettings?: Record>, ) => { const appBridgeStub = getAppBridgeThemeStub({ pageTemplateSettings, @@ -171,7 +176,7 @@ describe('usePageTemplateSettings', () => { }); // Reset the object to avoid mutation in other tests - await result.current.updatePageTemplateSettings({ myCustomSetting: 123 }); + await result.current.updatePageTemplateSettings({ library: { myCustomSetting: 123 } }); }); it('logs an error when trying to update document or library page without a documentId', async () => { @@ -183,7 +188,7 @@ describe('usePageTemplateSettings', () => { expect(result.current.pageTemplateSettings).toEqual(null); }); - await result.current.updatePageTemplateSettings({ muCystomSetting: 456 }); + await result.current.updatePageTemplateSettings({ library: { muCystomSetting: 456 } }); expect(result.current.isLoading).toEqual(false); await waitFor(() => { @@ -198,17 +203,15 @@ describe('usePageTemplateSettings', () => { it('returns the page template settings merged with theme settings and the list of custom overrides', async () => { const { result } = await loadUsePageTemplateSettings( PAGE_SETTINGS_WITH_OVERRIDES, - 'cover', - undefined, + 'documentPage', + DOCUMENT_ID, THEME_SETTINGS, ); - expect(result.current.isLoading).toEqual(true); - await waitFor(() => { expect(result.current.isLoading).toEqual(false); expect(result.current.pageTemplateSettings).toEqual({ - ...THEME_SETTINGS, + ...THEME_SETTINGS.documentPage, ...PAGE_SETTINGS_WITH_OVERRIDES, }); expect(result.current.customizedPageTemplateSettingsKeys).toEqual(['customThemeSetting']); @@ -224,14 +227,18 @@ describe('usePageTemplateSettings', () => { expect(result.current.isLoading).toEqual(false); expect(result.current.pageTemplateSettings).toEqual({ ...PAGE_SETTINGS, - ...THEME_SETTINGS, + ...THEME_SETTINGS.cover, }); expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); }); }); it('returns an empty object if no theme settins and no page template settings', async () => { - const { result } = await loadUsePageTemplateSettings({}, 'cover', undefined, {}); + const { result } = await loadUsePageTemplateSettings({}, 'cover', undefined, { + documentPage: {}, + cover: {}, + library: {}, + }); expect(result.current.isLoading).toEqual(true); @@ -249,13 +256,17 @@ describe('usePageTemplateSettings', () => { await waitFor(() => { expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(THEME_SETTINGS); + expect(result.current.pageTemplateSettings).toEqual(THEME_SETTINGS.cover); expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); }); }); it('returns only the page template settings if no theme settings', async () => { - const { result } = await loadUsePageTemplateSettings(PAGE_SETTINGS, 'cover', undefined, {}); + const { result } = await loadUsePageTemplateSettings(PAGE_SETTINGS, 'cover', undefined, { + documentPage: {}, + cover: {}, + library: {}, + }); expect(result.current.isLoading).toEqual(true); @@ -269,8 +280,8 @@ describe('usePageTemplateSettings', () => { it('returns theme setting value if page template override is null', async () => { const { result } = await loadUsePageTemplateSettings( PAGE_SETTINGS_WITH_NULL_OVERRIDES, - 'cover', - undefined, + 'documentPage', + DOCUMENT_ID, THEME_SETTINGS, ); @@ -280,7 +291,7 @@ describe('usePageTemplateSettings', () => { expect(result.current.isLoading).toEqual(false); expect(result.current.pageTemplateSettings).toEqual({ ...PAGE_SETTINGS, - ...THEME_SETTINGS, + ...THEME_SETTINGS.documentPage, }); expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); }); @@ -289,8 +300,8 @@ describe('usePageTemplateSettings', () => { it('returns the theme setting if the override is deleted (reset) from page template settings', async () => { const { result } = await loadUsePageTemplateSettings( PAGE_SETTINGS_WITH_OVERRIDES, - 'cover', - undefined, + 'documentPage', + DOCUMENT_ID, THEME_SETTINGS, ); @@ -299,7 +310,7 @@ describe('usePageTemplateSettings', () => { await waitFor(() => { expect(result.current.isLoading).toEqual(false); expect(result.current.pageTemplateSettings).toEqual({ - ...THEME_SETTINGS, + ...THEME_SETTINGS.documentPage, ...PAGE_SETTINGS_WITH_OVERRIDES, }); }); @@ -311,7 +322,7 @@ describe('usePageTemplateSettings', () => { expect(result.current.isLoading).toEqual(false); expect(result.current.pageTemplateSettings).toEqual({ ...PAGE_SETTINGS, - ...THEME_SETTINGS, + ...THEME_SETTINGS.documentPage, }); expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); }); diff --git a/packages/app-bridge/src/react/usePageTemplateSettings.ts b/packages/app-bridge/src/react/usePageTemplateSettings.ts index b944f965d..8406b811a 100644 --- a/packages/app-bridge/src/react/usePageTemplateSettings.ts +++ b/packages/app-bridge/src/react/usePageTemplateSettings.ts @@ -3,15 +3,16 @@ import { useEffect, useState } from 'react'; import type { AppBridgeTheme } from '../AppBridgeTheme'; -import type { EmitterEvents } from '../types'; +import type { EmitterEvents, ThemeTemplate } from '../types'; import { useThemeSettings } from './'; export const usePageTemplateSettings = >( appBridge: AppBridgeTheme, - template: 'cover' | 'documentPage' | 'library', + template: ThemeTemplate, documentOrDocumentPageId?: number, ) => { const { themeSettings } = useThemeSettings(appBridge); + const templateThemeSettings = themeSettings?.[template] ?? {}; const [pageTemplateSettings, setPageTemplateSettings] = useState>(null); const [isLoading, setIsLoading] = useState(false); const [customizedPageTemplateSettingsKeys, setCustomizedPageTemplateSettingsKeys] = useState([]); @@ -56,21 +57,22 @@ export const usePageTemplateSettings = { - if (!themeSettings || !pageTemplateSettings) { + if (!templateThemeSettings || !pageTemplateSettings) { return; } const overrides = []; const mergedSettings: Record & TPageTemplateSettings = { ...pageTemplateSettings }; - for (const field of Object.keys(themeSettings)) { + for (const field of Object.keys(templateThemeSettings)) { if ( (pageTemplateSettings as Record)[field] !== null && (pageTemplateSettings as Record)[field] !== undefined ) { overrides.push(field); } else { - (mergedSettings as Record)[field] = themeSettings[field]; + (mergedSettings as Record)[field] = + templateThemeSettings[field as keyof typeof templateThemeSettings]; } } diff --git a/packages/app-bridge/src/react/useTemplateAssets.spec.ts b/packages/app-bridge/src/react/useTemplateAssets.spec.ts index eda53477c..6834232cd 100644 --- a/packages/app-bridge/src/react/useTemplateAssets.spec.ts +++ b/packages/app-bridge/src/react/useTemplateAssets.spec.ts @@ -6,6 +6,7 @@ import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { AssetDummy, getAppBridgeThemeStub } from '../tests'; import { useTemplateAssets } from './useTemplateAssets'; +import { ThemeTemplate } from '..'; const DOCUMENT_ID = 16; const DOCUMENT_PAGE_ID = 568; @@ -34,7 +35,7 @@ describe('useTemplateAssets hook', () => { }); const loadUseTemplateAssets = async ( - template: 'documentPage' | 'library' | 'cover', + template: ThemeTemplate, existingTemplateAssets = [AssetDummy.with(1)], existingThemeAssets = {}, returnEmptyTemplateAssets = false, diff --git a/packages/app-bridge/src/react/useTemplateAssets.ts b/packages/app-bridge/src/react/useTemplateAssets.ts index dc3eb734d..54cab728b 100644 --- a/packages/app-bridge/src/react/useTemplateAssets.ts +++ b/packages/app-bridge/src/react/useTemplateAssets.ts @@ -3,13 +3,13 @@ import { useEffect, useState } from 'react'; import type { AppBridgeTheme } from '../AppBridgeTheme'; -import type { Asset } from '../types'; +import type { Asset, ThemeTemplate } from '../types'; import { compareObjects } from '../utilities'; import { useThemeAssets } from './'; type HookArgs = { appBridge: AppBridgeTheme; - template?: 'documentPage' | 'library' | 'cover'; + template?: ThemeTemplate; documentId?: number; documentPageId?: number; }; @@ -61,12 +61,12 @@ const deleteAssetIdsFromTemplateAssetKey = async ( export const useTemplateAssets = ( appBridge: AppBridgeTheme, - template?: 'documentPage' | 'library' | 'cover', + template: ThemeTemplate, documentId?: number, documentPageId?: number, ) => { const [templateAssets, setTemplateAssets] = useState>({}); - const { themeAssets } = useThemeAssets(appBridge); + const { themeAssets } = useThemeAssets(appBridge, template); const [customizedTemplateAssetsKeys, setCustomizedTemplateAssetsKeys] = useState([]); const [mergedThemeAndTemplateAssets, setMergedThemeAndTemplateAssets] = useState>({}); @@ -76,7 +76,7 @@ export const useTemplateAssets = ( let componentMounted = true; const updateTemplateAssetsFromEvent = (event: { - template?: 'documentPage' | 'library' | 'cover'; + template: ThemeTemplate; documentId?: number; documentPageId?: number; templateAssets: Record; diff --git a/packages/app-bridge/src/react/useThemeAssets.spec.ts b/packages/app-bridge/src/react/useThemeAssets.spec.ts index 8aa01d257..96f6203bb 100644 --- a/packages/app-bridge/src/react/useThemeAssets.spec.ts +++ b/packages/app-bridge/src/react/useThemeAssets.spec.ts @@ -6,6 +6,9 @@ import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { AssetDummy, getAppBridgeThemeStub } from '../tests'; import { useThemeAssets } from './useThemeAssets'; +import { Asset, ThemeTemplate } from '..'; + +const DOCUMENT_PAGE_TEMPLATE = 'documentPage'; describe('useThemeAssets hook', () => { beforeEach(() => { @@ -18,13 +21,13 @@ describe('useThemeAssets hook', () => { cleanup(); }); - const loadUseThemeAssets = async (existingAssets = [AssetDummy.with(1)], keyName = 'key') => { + const loadUseThemeAssets = async (existingAssets: Asset[] | any, template: ThemeTemplate, keyName: string) => { const asset = AssetDummy.with(1); const appBridgeStub = getAppBridgeThemeStub({ themeAssets: { [keyName]: existingAssets }, }); - const { result, rerender } = renderHook(() => useThemeAssets(appBridgeStub)); + const { result, rerender } = renderHook(() => useThemeAssets(appBridgeStub, template)); await act(async () => { rerender(); @@ -34,21 +37,27 @@ describe('useThemeAssets hook', () => { }; it('should delete an asset', async () => { - const { result, appBridgeStub } = await loadUseThemeAssets([]); + const { result, appBridgeStub } = await loadUseThemeAssets([], DOCUMENT_PAGE_TEMPLATE, 'key'); await act(async () => { await result.current.deleteAssetIdsFromKey('key', [1]); }); const call = appBridgeStub.deleteAssetIdsFromThemeAssetKey.getCall(0); + await waitFor(() => { expect(call.firstArg).toEqual('key'); - expect(call.lastArg).toEqual([1]); + expect(call.args[1]).toEqual([1]); + expect(call.lastArg).toEqual(DOCUMENT_PAGE_TEMPLATE); expect(result.current.themeAssets).toStrictEqual({ key: [] }); }); }); it('should sort assets', async () => { - const { result, appBridgeStub } = await loadUseThemeAssets([AssetDummy.with(1), AssetDummy.with(2)]); + const { result, appBridgeStub } = await loadUseThemeAssets( + [AssetDummy.with(1), AssetDummy.with(2)], + DOCUMENT_PAGE_TEMPLATE, + 'key', + ); await act(async () => { await result.current.updateAssetIdsFromKey('key', [2, 1]); @@ -59,9 +68,9 @@ describe('useThemeAssets hook', () => { await waitFor(async () => { expect(deleteCall.firstArg).toEqual('key'); - expect(deleteCall.lastArg).toEqual([1, 2]); + expect(deleteCall.args[1]).toEqual([1, 2]); expect(addCall.firstArg).toEqual('key'); - expect(addCall.lastArg).toEqual([2, 1]); + expect(addCall.args[1]).toEqual([2, 1]); expect(result.current.themeAssets['key'].map((asset) => asset.id)).toEqual([2, 1]); }); }); @@ -69,6 +78,7 @@ describe('useThemeAssets hook', () => { it('should delete nothing if key does not exist', async () => { const { result, appBridgeStub } = await loadUseThemeAssets( [AssetDummy.with(1), AssetDummy.with(2)], + DOCUMENT_PAGE_TEMPLATE, 'non-existing-key', ); @@ -80,12 +90,16 @@ describe('useThemeAssets hook', () => { await waitFor(async () => { expect(deleteCall.firstArg).toEqual('key'); - expect(deleteCall.lastArg).toEqual([]); + expect(deleteCall.args[1]).toEqual([]); }); }); it('should not sort assets if api call throws error', async () => { - const { result, appBridgeStub } = await loadUseThemeAssets([AssetDummy.with(1), AssetDummy.with(2)]); + const { result, appBridgeStub } = await loadUseThemeAssets( + [AssetDummy.with(1), AssetDummy.with(2)], + DOCUMENT_PAGE_TEMPLATE, + 'key', + ); (appBridgeStub.deleteAssetIdsFromThemeAssetKey as unknown as Mock) = vi .fn() .mockRejectedValue('Unsuccessful API call'); @@ -102,7 +116,7 @@ describe('useThemeAssets hook', () => { }); it('should notify about updated assets on delete', async () => { - const { result, asset } = await loadUseThemeAssets(); + const { result, asset } = await loadUseThemeAssets([AssetDummy.with(1)], DOCUMENT_PAGE_TEMPLATE, 'key'); await act(async () => { await result.current.deleteAssetIdsFromKey('key', [1]); @@ -118,7 +132,7 @@ describe('useThemeAssets hook', () => { }); it('should add asset ids', async () => { - const { result, appBridgeStub } = await loadUseThemeAssets(); + const { result, appBridgeStub } = await loadUseThemeAssets([AssetDummy.with(1)], DOCUMENT_PAGE_TEMPLATE, 'key'); await act(async () => { await result.current.addAssetIdsToKey('key', [2]); }); @@ -126,13 +140,13 @@ describe('useThemeAssets hook', () => { const call = appBridgeStub.addAssetIdsToThemeAssetKey.getCall(0); await waitFor(() => { expect(call.firstArg).toEqual('key'); - expect(call.lastArg).toEqual([2]); + expect(call.args[1]).toEqual([2]); expect(result.current.themeAssets['key'].map(({ id }) => id)).toEqual([1, 2]); }); }); it('should notify about updated assets on add asset ids to key', async () => { - const { result, asset } = await loadUseThemeAssets(); + const { result, asset } = await loadUseThemeAssets([AssetDummy.with(1)], DOCUMENT_PAGE_TEMPLATE, 'key'); const assetToAdd = AssetDummy.with(2); await act(async () => { await result.current.addAssetIdsToKey('key', [assetToAdd.id]); diff --git a/packages/app-bridge/src/react/useThemeAssets.ts b/packages/app-bridge/src/react/useThemeAssets.ts index f880e8ffa..e71786609 100644 --- a/packages/app-bridge/src/react/useThemeAssets.ts +++ b/packages/app-bridge/src/react/useThemeAssets.ts @@ -3,34 +3,44 @@ import { useEffect, useState } from 'react'; import type { AppBridgeTheme } from '../AppBridgeTheme'; -import type { Asset } from '../types'; +import type { Asset, ThemeTemplate } from '../types'; import { compareObjects } from '../utilities'; -export const useThemeAssets = (appBridge: AppBridgeTheme) => { +export const useThemeAssets = (appBridge: AppBridgeTheme, template?: ThemeTemplate) => { const portalId = appBridge.getPortalId(); const [themeAssets, setThemeAssets] = useState>({}); const updateThemeAssetsFromEvent = (event: { + template?: ThemeTemplate; portalId: number; themeAssets: Record; prevThemeAssets: Record; }) => { - if (event.portalId === portalId && !compareObjects(event.themeAssets, event.prevThemeAssets)) { + if ( + template && + event.template === template && + event.portalId === portalId && + !compareObjects(event.themeAssets, event.prevThemeAssets) + ) { setThemeAssets(event.themeAssets); } }; const getThemeAssets = async (): Promise> => { - return await appBridge.getThemeAssets(); + return template ? await appBridge.getThemeAssets(template) : Promise.resolve({}); }; const addAssetIdsToThemeAssetKey = async (key: string, assetIds: number[]): Promise => { - await appBridge.addAssetIdsToThemeAssetKey(key, assetIds); + if (template) { + await appBridge.addAssetIdsToThemeAssetKey(key, assetIds, template); + } }; const deleteAssetIdsFromThemeAssetKey = async (key: string, assetIds: number[]): Promise => { - await appBridge.deleteAssetIdsFromThemeAssetKey(key, assetIds); + if (template) { + await appBridge.deleteAssetIdsFromThemeAssetKey(key, assetIds, template); + } }; // Fetch the theme assets on mount. @@ -40,9 +50,9 @@ export const useThemeAssets = (appBridge: AppBridgeTheme) => { if (portalId) { const mountingFetch = async () => { - const allThemeAssets = await getThemeAssets(); + const allThemeAssets = template ? await getThemeAssets() : {}; - if (componentMounted) { + if (componentMounted && template) { setThemeAssets(allThemeAssets); } }; @@ -58,11 +68,14 @@ export const useThemeAssets = (appBridge: AppBridgeTheme) => { }, [appBridge]); const emitUpdatedThemeAssets = async () => { - window.emitter.emit('AppBridge:ThemeAssetsUpdated', { - portalId, - themeAssets: await getThemeAssets(), - prevThemeAssets: { ...themeAssets }, - }); + if (template) { + window.emitter.emit('AppBridge:ThemeAssetsUpdated', { + portalId, + themeAssets: await getThemeAssets(), + prevThemeAssets: { ...themeAssets }, + template, + }); + } }; const updateAssetIdsFromKey = async (key: string, newAssetIds: number[]) => { diff --git a/packages/app-bridge/src/react/useThemeSettings.spec.ts b/packages/app-bridge/src/react/useThemeSettings.spec.ts index c86c30287..dd8cf7cb6 100644 --- a/packages/app-bridge/src/react/useThemeSettings.spec.ts +++ b/packages/app-bridge/src/react/useThemeSettings.spec.ts @@ -5,9 +5,15 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { getAppBridgeThemeStub } from '../tests'; import { useThemeSettings } from './useThemeSettings'; import { SinonStub } from 'sinon'; +import type { ThemeTemplate } from '../types'; const THEME_SETTINGS = { - myCustomSetting: 123, + cover: { + coverSettingOne: 'value one', + coverSettingTwo: 'value two', + }, + documentPage: {}, + library: {}, }; describe('useThemeSettings', () => { @@ -21,7 +27,7 @@ describe('useThemeSettings', () => { cleanup(); }); - const loadUseThemeSettings = async (themeSettings: Record) => { + const loadUseThemeSettings = async (themeSettings: Record>) => { const appBridgeStub = getAppBridgeThemeStub({ themeSettings, }); @@ -51,16 +57,26 @@ describe('useThemeSettings', () => { expect(result.current.themeSettings).toEqual(THEME_SETTINGS); }); - await result.current.updateThemeSettings({ myCustomSetting: 456 }); + await result.current.updateThemeSettings({ + cover: { coverSettingTwo: 'value two - updated' }, + }); expect(result.current.isLoading).toEqual(false); const emitCall = (window.emitter.emit as SinonStub).getCall(0); await waitFor(() => { expect(result.current.isLoading).toEqual(false); - expect(result.current.themeSettings).toEqual({ ...THEME_SETTINGS, myCustomSetting: 456 }); + expect(result.current.themeSettings).toEqual({ + cover: { coverSettingOne: 'value one', coverSettingTwo: 'value two - updated' }, + documentPage: {}, + library: {}, + }); expect(emitCall.firstArg).toEqual('AppBridge:ThemeSettingsUpdated'); - expect(emitCall.lastArg.themeSettings).toStrictEqual({ ...THEME_SETTINGS, myCustomSetting: 456 }); + expect(emitCall.lastArg.themeSettings).toStrictEqual({ + cover: { coverSettingOne: 'value one', coverSettingTwo: 'value two - updated' }, + documentPage: {}, + library: {}, + }); }); }); }); diff --git a/packages/app-bridge/src/react/useThemeSettings.ts b/packages/app-bridge/src/react/useThemeSettings.ts index c0f78d564..f765dc119 100644 --- a/packages/app-bridge/src/react/useThemeSettings.ts +++ b/packages/app-bridge/src/react/useThemeSettings.ts @@ -3,9 +3,11 @@ import { useEffect, useState } from 'react'; import type { AppBridgeTheme } from '../AppBridgeTheme'; -import type { EmitterEvents } from '../types'; +import type { EmitterEvents, ThemeTemplate } from '../types'; -export const useThemeSettings = >(appBridge: AppBridgeTheme) => { +export const useThemeSettings = >>( + appBridge: AppBridgeTheme, +) => { const [themeSettings, setThemeSettings] = useState>(null); const [isLoading, setIsLoading] = useState(true); @@ -38,8 +40,9 @@ export const useThemeSettings = >(appBridge: AppBrid window.emitter.emit('AppBridge:ThemeSettingsUpdated', { themeSettings: { - ...themeSettings, - ...themeSettingsUpdate, + cover: { ...themeSettings?.cover, ...themeSettingsUpdate.cover }, + library: { ...themeSettings?.library, ...themeSettingsUpdate.library }, + documentPage: { ...themeSettings?.documentPage, ...themeSettingsUpdate.documentPage }, }, }); } catch (error) { diff --git a/packages/app-bridge/src/tests/AppBridgeThemeStub.ts b/packages/app-bridge/src/tests/AppBridgeThemeStub.ts index aa0e3d92a..a05d23270 100644 --- a/packages/app-bridge/src/tests/AppBridgeThemeStub.ts +++ b/packages/app-bridge/src/tests/AppBridgeThemeStub.ts @@ -24,7 +24,7 @@ import { UpdateTargetsDummy, } from '.'; import { GuidelineSearchResultDummy } from './GuidelineSearchResultDummy'; -import { Asset } from '../types'; +import type { Asset, ThemeTemplate } from '../types'; const BRAND_ID = 234551; const PROJECT_ID = 3452; @@ -66,7 +66,7 @@ export type getAppBridgeThemeStubProps = { projectId?: number; pageTemplateSettings?: Record; pageTemplateAssets?: Record; - themeSettings?: Record; + themeSettings?: Record>; themeAssets?: Record; language?: string; openAssetChooser?: (callback: Parameters[0]) => void; @@ -80,7 +80,7 @@ export const getAppBridgeThemeStub = ({ projectId = PROJECT_ID, pageTemplateSettings = {}, pageTemplateAssets = {}, - themeSettings = {}, + themeSettings = { cover: {}, documentPage: {}, library: {} }, themeAssets = {}, language = 'en', openAssetChooser = () => null, diff --git a/packages/app-bridge/src/types/Emitter.ts b/packages/app-bridge/src/types/Emitter.ts index 9ea8102ca..8f9c6f2ed 100644 --- a/packages/app-bridge/src/types/Emitter.ts +++ b/packages/app-bridge/src/types/Emitter.ts @@ -13,12 +13,13 @@ import type { DocumentCategory } from './DocumentCategory'; import type { BrandportalLink } from './BrandportalLink'; import type { PrivacySettings } from './PrivacySettings'; import type { Template } from './Template'; +import type { ThemeTemplate } from './ThemeTemplate'; export type EmitterAction = 'add' | 'update' | 'delete'; export type EmitterEvents = { 'AppBridge:PageTemplateSettingsUpdated': { pageTemplateSettings: Record }; - 'AppBridge:ThemeSettingsUpdated': { themeSettings: Record }; + 'AppBridge:ThemeSettingsUpdated': { themeSettings: Record> }; 'AppBridge:BlockSettingsUpdated': BlockSettingsUpdateEvent; 'AppBridge:BlockAssetsUpdated': { @@ -28,7 +29,7 @@ export type EmitterEvents = { }; 'AppBridge:TemplateAssetsUpdated': { - template?: 'documentPage' | 'library' | 'cover'; + template: ThemeTemplate; documentId?: number; documentPageId?: number; templateAssets: Record; @@ -39,6 +40,7 @@ export type EmitterEvents = { portalId: number; themeAssets: Record; prevThemeAssets: Record; + template: ThemeTemplate; }; 'AppBridge:BlockTemplatesUpdated': { diff --git a/packages/app-bridge/src/types/ThemeTemplate.ts b/packages/app-bridge/src/types/ThemeTemplate.ts new file mode 100644 index 000000000..1b3df14e9 --- /dev/null +++ b/packages/app-bridge/src/types/ThemeTemplate.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type ThemeTemplate = 'documentPage' | 'cover' | 'library'; diff --git a/packages/app-bridge/src/types/index.ts b/packages/app-bridge/src/types/index.ts index dc3ea9c1a..a97fab531 100644 --- a/packages/app-bridge/src/types/index.ts +++ b/packages/app-bridge/src/types/index.ts @@ -33,5 +33,6 @@ export * from './Targets'; export * from './TemplateLegacy'; export * from './Template'; export * from './Terrific'; +export * from './ThemeTemplate'; export * from './Topic'; export * from './User'; diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index b4fd0ff29..d82b1c0c3 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,33 @@ # @frontify/frontify-cli +## 5.5.7 + +### Patch Changes + +- [#674](https://github.com/Frontify/brand-sdk/pull/674) [`d7385ea`](https://github.com/Frontify/brand-sdk/commit/d7385ea6ff2c034e47b5d9727eae73600522bb2f) Thanks [@julianiff](https://github.com/julianiff)! - chore: update manifest + +- [#670](https://github.com/Frontify/brand-sdk/pull/670) [`f28dd67`](https://github.com/Frontify/brand-sdk/commit/f28dd67dd2d5058a10e8420252ba213a1d3d62cd) Thanks [@julianiff](https://github.com/julianiff)! - chore: add optional to assetAction + +- [#673](https://github.com/Frontify/brand-sdk/pull/673) [`1bd6524`](https://github.com/Frontify/brand-sdk/commit/1bd6524a9b7b9021d1173c16f984c7944a628867) Thanks [@julianiff](https://github.com/julianiff)! - chore: change naming to workspace + +## 5.5.6 + +### Patch Changes + +- [#668](https://github.com/Frontify/brand-sdk/pull/668) [`e8bf308`](https://github.com/Frontify/brand-sdk/commit/e8bf308262124356a0d13b8bf251fb208de7f19f) Thanks [@julianiff](https://github.com/julianiff)! - chore: fix css and js filename exchanged + +## 5.5.5 + +### Patch Changes + +- [#664](https://github.com/Frontify/brand-sdk/pull/664) [`5cf77ee`](https://github.com/Frontify/brand-sdk/commit/5cf77eefad4fceea1baed23cd5750c4d95fd91cc) Thanks [@julianiff](https://github.com/julianiff)! - fix: platform app compiler + +## 5.5.4 + +### Patch Changes + +- [#645](https://github.com/Frontify/brand-sdk/pull/645) [`0e34987`](https://github.com/Frontify/brand-sdk/commit/0e349871c67c8c5260c6456af1af2aec58ab6e2e) Thanks [@julianiff](https://github.com/julianiff)! - feat: add manifest verification step + ## 5.5.3 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 5d162cc4e..28ce4e187 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "author": "Frontify Developers ", - "version": "5.5.3", + "version": "5.5.7", "bin": { "frontify-cli": "dist/index.mjs" }, @@ -44,7 +44,8 @@ "picocolors": "^1.0.0", "prompts": "^2.4.2", "vite": "^4.5.0", - "vite-plugin-externals": "^0.6.2" + "vite-plugin-externals": "^0.6.2", + "zod": "^3.22.4" }, "devDependencies": { "@frontify/eslint-config-typescript": "^0.16.2", diff --git a/packages/cli/src/commands/deploy.ts b/packages/cli/src/commands/deploy.ts index 93b506140..c7c47df2c 100644 --- a/packages/cli/src/commands/deploy.ts +++ b/packages/cli/src/commands/deploy.ts @@ -17,6 +17,7 @@ import { readFileLinesAsArray, } from '../utils/index.js'; import { HttpClientError } from '../errors/HttpClientError.js'; +import { platformAppManifestSchemaV1, verifyManifest } from '../utils/verifyManifest.js'; type Options = { dryRun?: boolean; @@ -27,6 +28,9 @@ type Options = { export type AppManifest = { appId: string; appType?: string; + metadata?: { + version?: number; + }; }; const makeFilesDict = async (glob: string, ignoreGlobs?: string[]) => { @@ -66,7 +70,11 @@ export const createDeployment = async ( dryRun && Logger.info(pc.blue('Dry run: enabled')); const projectPath = process.cwd(); - const { appId } = reactiveJson(join(projectPath, 'manifest.json')); + const manifestContent = reactiveJson(join(projectPath, 'manifest.json')); + const { appId } = + manifestContent.appType === 'platform-app' + ? await verifyManifest(manifestContent, platformAppManifestSchemaV1) + : manifestContent; if (!noVerify) { Logger.info('Performing type checks...'); diff --git a/packages/cli/src/utils/compiler.ts b/packages/cli/src/utils/compiler.ts index 3b63489a6..2de64a8f6 100644 --- a/packages/cli/src/utils/compiler.ts +++ b/packages/cli/src/utils/compiler.ts @@ -57,18 +57,18 @@ export const compilePlatformApp = async ({ outputName, projectPath = '' }: Compi name: 'html-hash', enforce: 'post', transformIndexHtml(html, { bundle }) { - const indexJsSource = bundle?.['index.js'].type === 'asset' ? bundle?.['index.js'].source : null; + const indexJsSource = bundle?.['index.js'].type === 'chunk' ? bundle?.['index.js'].code : null; const indexCssSource = bundle?.['index.css'].type === 'asset' ? bundle?.['index.css'].source : null; - const cssFileName = `${outputName}.${getHash(indexJsSource)}.css`; - const jsFileName = `${outputName}.${getHash(indexCssSource)}.js`; + const cssFileName = `${outputName}.${getHash(indexCssSource)}.css`; + const jsFileName = `${outputName}.${getHash(indexJsSource)}.js`; html = html.replace('index.css', cssFileName).replace('index.js', jsFileName); return html; }, generateBundle(_options, bundle) { const indexHtmlSource = bundle?.['index.html'].type === 'asset' ? bundle?.['index.html'].source : null; - const indexJsSource = bundle?.['index.js'].type === 'asset' ? bundle?.['index.js'].source : null; + const indexJsSource = bundle?.['index.js'].type === 'chunk' ? bundle?.['index.js'].code : null; const indexCssSource = bundle?.['index.css'].type === 'asset' ? bundle?.['index.css'].source : null; bundle['index.html'].fileName = `${outputName}.${getHash(indexHtmlSource)}.html`; diff --git a/packages/cli/src/utils/verifyManifest.ts b/packages/cli/src/utils/verifyManifest.ts new file mode 100644 index 000000000..78f75b332 --- /dev/null +++ b/packages/cli/src/utils/verifyManifest.ts @@ -0,0 +1,83 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { array, number, object, string, z } from 'zod'; + +const forbiddenExtensions = ['exe', 'dmg', 'cmd', 'sh', 'bat']; +const getForbiddenExtensionsErrorMessage = (surfaceName: string) => + `Invalid file extension, \`${surfaceName}.filenameExtension\` can not include "${forbiddenExtensions}".`; + +const assetCreationShape = object({}).optional(); + +const completeAssetType = z.enum(['audio', 'document', 'image', 'video', 'file', 'embeddedContent']); +const imageAssetType = completeAssetType.exclude(['audio', 'document', 'video', 'file', 'embeddedContent']); + +const iconLibraryFilenameExtension = z.enum(['svg']); +const logoLibraryFilenameExtension = z.enum(['svg', 'jpg', 'jpeg', 'ai', 'eps', 'png', 'tif', 'tiff']); + +const appType = z.enum(['content-block', 'platform-app', 'theme']); +export const platformAppManifestSchemaV1 = object({ + appId: string().length(25), + appType, + surfaces: object({ + mediaLibrary: object({ + assetAction: object({ + type: array(completeAssetType), + filenameExtension: array( + string().refine((value) => !forbiddenExtensions.includes(value), { + message: getForbiddenExtensionsErrorMessage('mediaLibrary'), + }), + ), + }).optional(), + assetCreation: assetCreationShape, + }).optional(), + iconLibrary: object({ + assetAction: object({ + type: array(imageAssetType), + filenameExtension: array(iconLibraryFilenameExtension), + }).optional(), + assetCreation: assetCreationShape, + }).optional(), + logoLibrary: object({ + assetAction: object({ + type: array(imageAssetType), + filenameExtension: array(logoLibraryFilenameExtension), + }).optional(), + assetCreation: assetCreationShape, + }).optional(), + documentLibrary: object({ + assetAction: object({ + type: array(completeAssetType), + filenameExtension: array( + string().refine((value) => !forbiddenExtensions.includes(value), { + message: getForbiddenExtensionsErrorMessage('documentLibrary'), + }), + ), + }).optional(), + assetCreation: assetCreationShape, + }).optional(), + workspace: object({ + assetAction: object({ + type: array(completeAssetType), + filenameExtension: array( + string().refine((value) => !forbiddenExtensions.includes(value), { + message: getForbiddenExtensionsErrorMessage('workspaceProject'), + }), + ), + }).optional(), + assetCreation: assetCreationShape, + }).optional(), + }).optional(), + metadata: object({ + version: number().int(), + }), +}); + +export const verifyManifest = async (manifest: unknown, schema: typeof platformAppManifestSchemaV1) => { + const validatedManifest = schema.safeParse(manifest); + + if (!validatedManifest.success) { + throw new Error(validatedManifest.error.message); + } + + return validatedManifest.data; +}; diff --git a/packages/cli/templates/platform-app-css-modules/manifest.json b/packages/cli/templates/platform-app-css-modules/manifest.json index 984e21d08..c9ade0ff7 100644 --- a/packages/cli/templates/platform-app-css-modules/manifest.json +++ b/packages/cli/templates/platform-app-css-modules/manifest.json @@ -2,5 +2,13 @@ "appId": "", "appType": "platform-app", "name": "template-platform-app-css-module", - "entryPoint": [{ "type": "ASSET_CREATION" }, { "type": "ASSET_ACTION" }] + "surfaces": { + "mediaLibrary": { + "assetAction": { + "type": ["image"], + "filenameExtension": ["png", "jpeg"] + }, + "assetCreation": {} + } + } } diff --git a/packages/cli/templates/platform-app-css/manifest.json b/packages/cli/templates/platform-app-css/manifest.json index 8d7700247..b1444e156 100644 --- a/packages/cli/templates/platform-app-css/manifest.json +++ b/packages/cli/templates/platform-app-css/manifest.json @@ -2,5 +2,13 @@ "appId": "", "appType": "platform-app", "name": "template-platform-app-css", - "entryPoint": [{ "type": "ASSET_CREATION" }, { "type": "ASSET_ACTION" }] + "surfaces": { + "mediaLibrary": { + "assetAction": { + "type": ["image"], + "filenameExtension": ["png", "jpeg"] + }, + "assetCreation": {} + } + } } diff --git a/packages/cli/templates/platform-app-tailwind/manifest.json b/packages/cli/templates/platform-app-tailwind/manifest.json index 4a4c27337..63c748a2f 100644 --- a/packages/cli/templates/platform-app-tailwind/manifest.json +++ b/packages/cli/templates/platform-app-tailwind/manifest.json @@ -2,5 +2,13 @@ "appId": "", "appType": "platform-app", "name": "sample-name", - "entryPoint": [{ "type": "ASSET_CREATION" }, { "type": "ASSET_ACTION" }] + "surfaces": { + "mediaLibrary": { + "assetAction": { + "type": ["image"], + "filenameExtension": ["png", "jpeg"] + }, + "assetCreation": {} + } + } } diff --git a/packages/cli/tests/utils/verifyManifest.spec.ts b/packages/cli/tests/utils/verifyManifest.spec.ts new file mode 100644 index 000000000..fb25092af --- /dev/null +++ b/packages/cli/tests/utils/verifyManifest.spec.ts @@ -0,0 +1,139 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; +import { platformAppManifestSchemaV1, verifyManifest } from '../../src/utils/verifyManifest.js'; + +const VALID_MANIFEST = { + appType: 'platform-app', + appId: 'abcdabcdabcdabcdabcdabcda', + surfaces: { + mediaLibrary: { + assetAction: { + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: {}, + }, + }, + metadata: { + version: 1, + }, +}; + +const MANIFEST_WITH_SHORT_ID = { + appType: 'platform-app', + appId: 'tooShortId', + surfaces: { + mediaLibrary: { + assetAction: { + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: {}, + }, + }, + metadata: { + version: 1, + }, +}; + +const ICON_LIBRARY_MANIFEST = { + appType: 'platform-app', + appId: 'abcd', + surfaces: { + iconLibrary: { + assetAction: { + type: ['image'], + filenameExtension: ['png'], + }, + }, + }, + metadata: { + version: 1, + }, +}; + +const LOGO_LIBRARY_MANIFEST = { + appType: 'platform-app', + appId: 'abcd', + surfaces: { + logoLibrary: { + assetAction: { + type: ['video'], + filenameExtension: ['exe'], + }, + }, + }, + metadata: { + version: 1, + }, +}; + +const MEDIA_LIBRARY_FORBIDDEN_EXTENSIONS = { + appType: 'platform-app', + appId: 'abcd', + surfaces: { + mediaLibrary: { + assetAction: { + type: ['image'], + filenameExtension: ['exe'], + }, + }, + }, + metadata: { + version: 1, + }, +}; + +const VERSION_NUMBER_IS_INTEGER_WITH_DECIMAL = { + appType: 'platform-app', + appId: 'abcd', + surfaces: { + mediaLibrary: { + assetAction: { + type: ['image'], + filenameExtension: ['png'], + }, + }, + }, + metadata: { + version: 1.1, + }, +}; + +describe('Verify Platform App Manifest', () => { + it('should validate a valid manifest', async () => { + const verifiedManifest = await verifyManifest(VALID_MANIFEST, platformAppManifestSchemaV1); + expect(!!verifiedManifest).toBe(true); + }); + + it('should throw error when wrong file extension is present in IconLibrary', async () => { + await expect( + async () => await verifyManifest(ICON_LIBRARY_MANIFEST, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when forbidden extensions are in the manifest', async () => { + await expect( + async () => await verifyManifest(MEDIA_LIBRARY_FORBIDDEN_EXTENSIONS, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when forbidden extensions are in the Logo Library manifest', async () => { + await expect( + async () => await verifyManifest(LOGO_LIBRARY_MANIFEST, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when version number is a float', async () => { + await expect( + async () => await verifyManifest(VERSION_NUMBER_IS_INTEGER_WITH_DECIMAL, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when appId is not of length 25', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_SHORT_ID, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); +}); diff --git a/packages/guideline-blocks-settings/CHANGELOG.md b/packages/guideline-blocks-settings/CHANGELOG.md index 5a3739cb0..76ed4bbca 100644 --- a/packages/guideline-blocks-settings/CHANGELOG.md +++ b/packages/guideline-blocks-settings/CHANGELOG.md @@ -1,5 +1,13 @@ # @frontify/guideline-blocks-settings +## 0.29.17 + +### Patch Changes + +- Updated dependencies [[`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7)]: + - @frontify/app-bridge@3.0.1 + - @frontify/sidebar-settings@0.8.2 + ## 0.29.16 ### Patch Changes diff --git a/packages/guideline-blocks-settings/package.json b/packages/guideline-blocks-settings/package.json index a94a6415c..296db4e3b 100644 --- a/packages/guideline-blocks-settings/package.json +++ b/packages/guideline-blocks-settings/package.json @@ -1,6 +1,6 @@ { "name": "@frontify/guideline-blocks-settings", - "version": "0.29.16", + "version": "0.29.17", "description": "Provides types and helpers for the guideline block development", "sideEffects": false, "main": "dist/index.umd.js", diff --git a/packages/sidebar-settings/CHANGELOG.md b/packages/sidebar-settings/CHANGELOG.md index d0706cc54..a477f0cea 100644 --- a/packages/sidebar-settings/CHANGELOG.md +++ b/packages/sidebar-settings/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/sidebar-settings +## 0.8.2 + +### Patch Changes + +- Updated dependencies [[`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7)]: + - @frontify/app-bridge@3.0.1 + ## 0.8.1 ### Patch Changes diff --git a/packages/sidebar-settings/package.json b/packages/sidebar-settings/package.json index f4d36f670..e86a327b7 100644 --- a/packages/sidebar-settings/package.json +++ b/packages/sidebar-settings/package.json @@ -1,6 +1,6 @@ { "name": "@frontify/sidebar-settings", - "version": "0.8.1", + "version": "0.8.2", "description": "Provides types and helpers for the settings sidebar", "sideEffects": false, "main": "dist/index.umd.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 649f2f548..ea1239d1a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -177,6 +177,9 @@ importers: vite-plugin-externals: specifier: ^0.6.2 version: 0.6.2(vite@4.5.0) + zod: + specifier: ^3.22.4 + version: 3.22.4 devDependencies: '@frontify/eslint-config-typescript': specifier: ^0.16.2 @@ -225,7 +228,7 @@ importers: version: 5.3.2 vitest: specifier: ^0.34.6 - version: 0.34.6(@vitest/ui@0.34.6)(happy-dom@12.10.3) + version: 0.34.6(@vitest/ui@0.34.6) packages/guideline-blocks-settings: dependencies: @@ -451,22 +454,13 @@ packages: '@babel/traverse': 7.23.4 '@babel/types': 7.23.4 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/generator@7.22.15: - resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - /@babel/generator@7.23.4: resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==} engines: {node: '>=6.9.0'} @@ -480,7 +474,7 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.23.4 /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} @@ -496,17 +490,6 @@ packages: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} - engines: {node: '>=6.9.0'} - - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.22.17 - /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} @@ -647,24 +630,24 @@ packages: '@babel/parser': 7.23.4 '@babel/types': 7.23.4 - /@babel/traverse@7.22.17(supports-color@5.5.0): - resolution: {integrity: sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==} + /@babel/traverse@7.23.4: + resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 + '@babel/code-frame': 7.23.4 + '@babel/generator': 7.23.4 + '@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.22.16 - '@babel/types': 7.22.17 - debug: 4.3.4(supports-color@5.5.0) + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/traverse@7.23.4: + /@babel/traverse@7.23.4(supports-color@5.5.0): resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} engines: {node: '>=6.9.0'} dependencies: @@ -1272,7 +1255,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 espree: 9.6.1 globals: 13.19.0 ignore: 5.2.4 @@ -1608,7 +1591,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3724,7 +3707,7 @@ packages: '@typescript-eslint/type-utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.54.0 graphemer: 1.4.0 ignore: 5.2.4 @@ -3780,7 +3763,7 @@ packages: '@typescript-eslint/types': 6.12.0 '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.54.0 typescript: 5.3.2 transitivePeerDependencies: @@ -3836,7 +3819,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.54.0 ts-api-utils: 1.0.1(typescript@5.3.2) typescript: 5.3.2 @@ -3885,7 +3868,7 @@ packages: dependencies: '@typescript-eslint/types': 6.12.0 '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -6335,7 +6318,7 @@ packages: std-env: 3.3.3 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 - vitest: 0.34.6(@vitest/ui@0.34.6)(happy-dom@12.10.3) + vitest: 0.34.6(@vitest/ui@0.34.6) transitivePeerDependencies: - supports-color dev: true @@ -6382,7 +6365,7 @@ packages: pathe: 1.1.1 picocolors: 1.0.0 sirv: 2.0.3 - vitest: 0.34.6(@vitest/ui@0.34.6)(happy-dom@12.10.3) + vitest: 0.34.6(@vitest/ui@0.34.6) dev: true /@vitest/utils@0.34.6: @@ -6815,7 +6798,7 @@ packages: resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} dependencies: archy: 1.0.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 fastq: 1.13.0 transitivePeerDependencies: - supports-color @@ -7503,6 +7486,17 @@ packages: supports-color: 8.1.1 dev: true + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -8210,7 +8204,7 @@ packages: peerDependencies: eslint: '>=6.0.0' dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.54.0 lodash: 4.17.21 natural-compare: 1.4.0 @@ -8260,7 +8254,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -9508,7 +9502,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -10295,7 +10289,7 @@ packages: /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -10531,7 +10525,7 @@ packages: resolution: {integrity: sha512-96yVFal0c/W1lG7mmfRe7eO+hovrhJYd2obzzOZ90f6fjpeU/XNvd9cYHZKZAQJumDfhXgoTpkpJ9pvMj+hqHw==} engines: {node: '>= 10.13'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 json-stringify-safe: 5.0.1 propagate: 2.0.1 transitivePeerDependencies: @@ -12200,7 +12194,7 @@ packages: react-is: '>= 16.8.0' dependencies: '@babel/helper-module-imports': 7.22.15 - '@babel/traverse': 7.22.17(supports-color@5.5.0) + '@babel/traverse': 7.23.4(supports-color@5.5.0) '@emotion/is-prop-valid': 1.2.0 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 @@ -12889,7 +12883,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 @@ -12989,6 +12983,72 @@ packages: optionalDependencies: fsevents: 2.3.2 + /vitest@0.34.6(@vitest/ui@0.34.6): + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.5 + '@types/chai-subset': 1.3.3 + '@types/node': 18.18.11 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/ui': 0.34.6(vitest@0.34.6) + '@vitest/utils': 0.34.6 + acorn: 8.10.0 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.10 + debug: 4.3.4 + local-pkg: 0.4.3 + magic-string: 0.30.1 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.3.3 + strip-literal: 1.0.1 + tinybench: 2.5.0 + tinypool: 0.7.0 + vite: 4.5.0(@types/node@18.18.11) + vite-node: 0.34.6(@types/node@18.18.11) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vitest@0.34.6(@vitest/ui@0.34.6)(happy-dom@12.10.3): resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} @@ -13347,6 +13407,10 @@ packages: readable-stream: 3.6.0 dev: false + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false + /zustand@3.7.2(react@18.2.0): resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} engines: {node: '>=12.7.0'} From 830cf3df06a96028d1bd8e3e6328a4c15b2362c0 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Mon, 22 Jan 2024 15:31:30 +0100 Subject: [PATCH 003/182] feat: merge main to dev branch (#704) * feat: add manifest verification for Platform Apps (#645) * chore: add method stub * chore: add manifest stub * feat: add platform-app manifest validator step * Create curvy-terms-watch.md * fix: formatting * fix: remove yup and add zod schema * Update .changeset/curvy-terms-watch.md Co-authored-by: Samuel Alev * chore: remove verify-manifest cli command * fix: manifest keys * fix: add check to restrict version to be a number * fix: restructure manifest readout and throw Error if not correct * fix: adjust casing and wording of manifest * Update packages/cli/src/utils/verifyManifest.ts Co-authored-by: Samuel Alev * Update packages/cli/src/utils/verifyManifest.ts Co-authored-by: Samuel Alev * Update packages/cli/src/utils/verifyManifest.ts Co-authored-by: Samuel Alev * chore: object destructure the manifest * chore: fix typo * chore: add z.enums instead string where applicable * chore: formatting * chore: remove useless refine and add cleaner objects --------- Co-authored-by: Samuel Alev * chore: release packages (#658) Co-authored-by: github-actions[bot] * feat: themes and template settings (#654) * themeAsset updates * types * typing * update tests * code smell fix * more code small * more code smell * fix test * typing fixes * updates * fix typing error * refactor: improve typing * style: linting --------- Co-authored-by: Mike Trummer * chore: add changeset for previous commit * chore: release packages (#660) Co-authored-by: github-actions[bot] * fix: fix links in readme (#661) * fix: platform app compiler (#664) * chore: adjust compiler * Create unlucky-mice-give.md * chore: release packages (#665) Co-authored-by: julianiff * revert: wrong release * chore: release packages (#667) Co-authored-by: github-actions[bot] * chore: fix css and js filename exchanged (#668) * chore: fix css and js filename exchanged * Create spicy-apricots-guess.md * chore: release packages (#669) Co-authored-by: github-actions[bot] * chore: add optional to assetAction (#670) * chore: add optional to assetAction * Create olive-goats-nail.md * chore: change naming to workspace (#673) * chore: change naming to workspace * Create small-kiwis-tap.md * chore: update platform app manifest (#674) * chore: update manfiest * Create gorgeous-baboons-run.md * Update .changeset/gorgeous-baboons-run.md Co-authored-by: Samuel Alev * lint: fixing --------- Co-authored-by: Samuel Alev * chore: release packages (#671) Co-authored-by: julianiff * chore: update cli version of templates (#676) * chore: update version * Create giant-eels-fix.md * chore: add cypress videos and screenshots to .gitignore (#681) * feat: replace attachment download with tracked download (#679) * feat: replace attachment download with tracked download * add changeset * fix: download optional on AttachmentItem * improve syntax * chore: change download prop to onDownload * feat: update block toolbar to include attachments flyout (#672) * update toolbar with attachments flyout * rename prop to isEnabled * update classnames * move grouped elements into subfolder * update regular attachment button * remove bg base class * create tests for new function * fix toolbar * add changeset * update useAttachments * remove fc * add test for hoc * fix typeerror * fix issues * update changelog * fix minor issues * update naming of add method * update changelog * fix failing test * update string error description * fix: typeerror in toolbar (#683) * chore: release packages (#677) Signed-off-by: Sam Creasey Co-authored-by: github-actions[bot] * ci: add linting and typecheck to guideline-blocks-settings (#685) * ci: add linting and typecheck to guideline-blocks-settings * add change in guideline block settings to check * add typeerror -> see fail * revert: changes so only ci * chore: remove usage of deprecated appBridgeBlock functions (#680) * chore: remove usage of deprecated appBridgeBlock functions * test: improve LegacyTemplateDummy import * test: improve LegacyTemplateDummy import * fix: add unsubscribe to assetChooser and templateChooser hook * ci: add unit test check guideline-blocks-settings (#690) * ci: add unit test check * fix: force line height in toolbar (#692) * force line-height in toolbar * add changeset * update changeset * update text * fix: export toolbar items (#691) * export index * add changeset * chore: release packages (#686) Signed-off-by: Sam Creasey Co-authored-by: github-actions[bot] * feat(Attachments): temporarily disable sorting (#689) * feat(Attachments): temporarily disable sorting * chore: replace deprecated functions in attachments (#687) * chore: replace deprecated functions in attachments * fix: remove unused import * fix: add forced line height to button (#696) * add forced line height to button * correct changeset * chore: decouple sidebar-settings from app-bridge (#694) * chore: decouple sidebar-settings from app-bridge * fix: lockfile * add changeset * ci: add typecheck and remove app-bridge build * chore: bump fondue (#695) * chore: bump fondue * also bump outside of packages * chore: release packages (#693) Co-authored-by: github-actions[bot] * chore: codeowners file (#699) * chore: bump fondue (#697) * chore: bump fondue * Create mean-lizards-draw.md * Update mean-lizards-draw.md --------- Co-authored-by: Rafael Giezendanner * feat: move app-bridge to guideline-blocks-settings peerDependencies (#698) * chore: move app-bridge to peerDeps * ci: add test matrix * ci: build if workspace package * ci: add matrix on all guideline-blocks-test * fix: test for v3.0.0 * ci: add guideline-blocks-settings check to app-bridge * ci: improve pnpm cache * ci: replace set-output * test: rename hook in app-bridge to see them fail * revert: app-bridge change * add changeset * chore: update README.md * fix: typo in readme * Update .github/workflows/app-bridge-continuous-integration.yml Co-authored-by: Samuel Alev * ci: fix continous-deployment as it needs to add app-bridge to guideline-blocks-settings --------- Co-authored-by: Samuel Alev * fix: continuous-deployment ci (#702) * ci: add cache for app-bridge tests (#703) * ci: add cache for app-bridge tests * check: if it runs * revert: adjust for check * chore: release packages (#700) Co-authored-by: github-actions[bot] --------- Signed-off-by: Sam Creasey Co-authored-by: Julian Iff Co-authored-by: Samuel Alev Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: Anxo Botana Co-authored-by: Mike Trummer Co-authored-by: Luca Hochreutener <34413733+hochreutenerl@users.noreply.github.com> Co-authored-by: Sam Creasey Co-authored-by: Daniel Fulop --- .../app-bridge-continuous-integration.yml | 54 +++ .github/workflows/continuous-deployment.yml | 14 +- ...uideline-blocks-continuous-integration.yml | 89 ++++- .../typing-continuous-integration.yml | 7 +- .gitignore | 2 + CODEOWNERS | 181 +++++++++-- package.json | 2 +- packages/app-bridge/CHANGELOG.md | 6 + packages/app-bridge/package.json | 2 +- .../src/react/useAssetChooser.spec.tsx | 29 +- .../app-bridge/src/react/useAssetChooser.ts | 16 +- .../src/react/useAssetViewer.spec.tsx | 10 +- .../app-bridge/src/react/useAssetViewer.ts | 7 +- .../app-bridge/src/react/useBlockAssets.ts | 2 +- .../src/react/useBlockSettings.spec.tsx | 2 +- .../app-bridge/src/react/useBlockSettings.ts | 2 +- .../app-bridge/src/react/useBlockTemplates.ts | 2 +- .../app-bridge/src/react/useColorPalettes.ts | 2 +- packages/app-bridge/src/react/useColors.ts | 2 +- .../src/react/useReadyForPrint.spec.tsx | 13 +- .../app-bridge/src/react/useReadyForPrint.ts | 4 +- .../src/react/useTemplateChooser.spec.tsx | 27 +- .../src/react/useTemplateChooser.ts | 15 +- .../src/tests/AppBridgeBlockStub.ts | 51 ++- packages/cli/CHANGELOG.md | 6 + packages/cli/package.json | 2 +- .../content-block-css-modules/package.json | 2 +- .../templates/content-block-css/package.json | 2 +- .../content-block-tailwind/package.json | 2 +- .../platform-app-css-modules/package.json | 2 +- .../templates/platform-app-css/package.json | 2 +- .../platform-app-tailwind/package.json | 2 +- .../guideline-blocks-settings/CHANGELOG.md | 56 ++++ packages/guideline-blocks-settings/README.md | 14 + .../guideline-blocks-settings/package.json | 6 +- .../components/Attachments/AttachmentItem.tsx | 35 +- .../Attachments/Attachments.spec.ct.tsx | 35 +- .../components/Attachments/Attachments.tsx | 56 ++-- .../Attachments/AttachmentsButtonTrigger.tsx | 22 ++ .../src/components/Attachments/types.ts | 12 +- .../BlockItemWrapper/BlockItemWrapper.tsx | 43 +-- .../components/BlockItemWrapper/Toolbar.tsx | 133 -------- .../BlockItemWrapper/Toolbar/Toolbar.spec.tsx | 127 ++++++++ .../BlockItemWrapper/Toolbar/Toolbar.tsx | 133 ++++++++ .../Toolbar/ToolbarAttachments.tsx | 29 ++ .../Toolbar/ToolbarAttachmentsTrigger.tsx | 14 + .../Toolbar/ToolbarSegment.tsx | 9 + .../BlockItemWrapper/Toolbar/helpers.ts | 33 ++ .../BlockItemWrapper/Toolbar/index.ts | 4 + .../BlockItemWrapper/Toolbar/types.ts | 38 +++ .../src/components/BlockItemWrapper/index.ts | 1 + .../src/components/BlockItemWrapper/types.ts | 45 +-- ...hments.spec.ts => useAttachments.spec.tsx} | 59 +++- .../src/hooks/useAttachments.ts | 46 --- .../src/hooks/useAttachments.tsx | 95 ++++++ packages/sidebar-settings/CHANGELOG.md | 23 ++ packages/sidebar-settings/package.json | 5 +- packages/sidebar-settings/src/blocks/index.ts | 307 +++++++++++++++++- pnpm-lock.yaml | 173 ++-------- 59 files changed, 1561 insertions(+), 553 deletions(-) create mode 100644 packages/guideline-blocks-settings/src/components/Attachments/AttachmentsButtonTrigger.tsx delete mode 100644 packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar.tsx create mode 100644 packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.spec.tsx create mode 100644 packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.tsx create mode 100644 packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachments.tsx create mode 100644 packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachmentsTrigger.tsx create mode 100644 packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarSegment.tsx create mode 100644 packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/helpers.ts create mode 100644 packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/index.ts create mode 100644 packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/types.ts rename packages/guideline-blocks-settings/src/hooks/{useAttachments.spec.ts => useAttachments.spec.tsx} (59%) delete mode 100644 packages/guideline-blocks-settings/src/hooks/useAttachments.ts create mode 100644 packages/guideline-blocks-settings/src/hooks/useAttachments.tsx diff --git a/.github/workflows/app-bridge-continuous-integration.yml b/.github/workflows/app-bridge-continuous-integration.yml index 1ad90ed4e..34daafed8 100644 --- a/.github/workflows/app-bridge-continuous-integration.yml +++ b/.github/workflows/app-bridge-continuous-integration.yml @@ -56,3 +56,57 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: ./packages/app-bridge + + guideline-blocks-settings-ci: + name: Guideline Blocks Settings CI (for checking compatibility with app-bridge) + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Checkout default branch + uses: actions/checkout@v4 + + - name: Use pnpm + uses: pnpm/action-setup@v2 + with: + version: latest + + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: "pnpm" + + - name: Get pnpm store directory + id: pnpm-cache + run: echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT + + - name: Setup pnpm cache + uses: actions/cache@v3 + with: + path: | + ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + ~/.cache/Cypress + key: pnpm-with-cypress-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + restore-keys: pnpm-with-cypress-${{ runner.os }}- + + - name: Install npm dependencies + run: pnpm i --frozen-lockfile + + - name: Build local deps + run: pnpm build:app-bridge && pnpm build:sidebar-settings + + - name: Add app-bridge dependency + run: pnpm add @frontify/app-bridge@workspace:^ --filter {packages/guideline-blocks-settings} + + - name: Typecheck code + run: pnpm --stream --filter {packages/guideline-blocks-settings} typecheck + + - name: Lint code + run: pnpm --stream --filter {packages/guideline-blocks-settings} lint + + - name: Unit Test code + run: pnpm --stream --filter {packages/guideline-blocks-settings} test + + - name: Component Tests + run: pnpm test:components diff --git a/.github/workflows/continuous-deployment.yml b/.github/workflows/continuous-deployment.yml index 9d6fdf263..87f526e3c 100644 --- a/.github/workflows/continuous-deployment.yml +++ b/.github/workflows/continuous-deployment.yml @@ -35,6 +35,9 @@ jobs: - name: Install npm dependencies run: pnpm i --frozen-lockfile + - name: Add app-bridge dependency for guideline-blocks-settings + run: pnpm add @frontify/app-bridge@workspace:^ --filter {packages/guideline-blocks-settings} + - name: Lint code run: pnpm lint @@ -63,6 +66,9 @@ jobs: - name: Build the packages run: pnpm build + - name: Add app-bridge dependency for guideline-blocks-settings + run: pnpm add @frontify/app-bridge@workspace:^ --filter {packages/guideline-blocks-settings} + - name: Typecheck code run: pnpm typecheck @@ -91,6 +97,9 @@ jobs: - name: Build the packages run: pnpm build + - name: Add app-bridge dependency for guideline-blocks-settings + run: pnpm add @frontify/app-bridge@workspace:^ --filter {packages/guideline-blocks-settings} + - name: Test code run: pnpm test @@ -115,7 +124,7 @@ jobs: - name: Get pnpm store directory id: pnpm-cache - run: echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + run: echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Setup pnpm cache uses: actions/cache@v3 @@ -132,6 +141,9 @@ jobs: - name: Build local dependencies run: pnpm build:app-bridge && pnpm build:sidebar-settings + - name: Add app-bridge dependency for guideline-blocks-settings + run: pnpm add @frontify/app-bridge@workspace:^ --filter {packages/guideline-blocks-settings} + - name: Component Tests run: pnpm test:components diff --git a/.github/workflows/guideline-blocks-continuous-integration.yml b/.github/workflows/guideline-blocks-continuous-integration.yml index 04e60b635..fe24015c7 100644 --- a/.github/workflows/guideline-blocks-continuous-integration.yml +++ b/.github/workflows/guideline-blocks-continuous-integration.yml @@ -17,6 +17,9 @@ env: jobs: lint-typecheck: runs-on: ubuntu-latest + strategy: + matrix: + app-bridge-version: ["3.0.0", "workspace:^"] timeout-minutes: 10 steps: @@ -40,13 +43,76 @@ jobs: run: pnpm i --frozen-lockfile - name: Build build:sidebar-settings - run: pnpm build:app-bridge && pnpm build:sidebar-settings + run: pnpm build:sidebar-settings - - name: Build package (+ typechecking) - run: pnpm build:guideline-blocks-settings + - name: Build @frontify/app-bridge (if workspace) + if: matrix.app-bridge-version == 'workspace:^' + run: pnpm build:app-bridge + + - name: Add app-bridge dependency + run: pnpm add @frontify/app-bridge@${{ matrix.app-bridge-version }} --filter {packages/guideline-blocks-settings} + + - name: Typecheck code + run: pnpm --stream --filter {packages/guideline-blocks-settings} typecheck + + - name: Lint code + run: pnpm --stream --filter {packages/guideline-blocks-settings} lint + + unit-tests: + runs-on: ubuntu-latest + strategy: + matrix: + app-bridge-version: ["3.0.0", "workspace:^"] + timeout-minutes: 10 + + steps: + - name: Checkout current commit + uses: actions/checkout@v4 + + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Use pnpm + uses: pnpm/action-setup@v2.4.0 + with: + version: latest + run_install: false + + - name: Get pnpm store directory + id: pnpm-cache + run: echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT + + - name: Setup pnpm cache + uses: actions/cache@v3 + with: + path: | + ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: pnpm-with-${{ matrix.app-bridge-version }}-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + restore-keys: pnpm-with-${{ matrix.app-bridge-version }}-${{ runner.os }} + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build build:sidebar-settings + run: pnpm build:sidebar-settings + + - name: Build @frontify/app-bridge (if workspace) + if: matrix.app-bridge-version == 'workspace:^' + run: pnpm build:app-bridge + + - name: Add app-bridge dependency + run: pnpm add @frontify/app-bridge@${{ matrix.app-bridge-version }} --filter {packages/guideline-blocks-settings} + + - name: Unit Tests + run: pnpm --stream --filter {packages/guideline-blocks-settings} test component-tests: runs-on: ubuntu-latest + strategy: + matrix: + app-bridge-version: ["3.0.0", "workspace:^"] timeout-minutes: 10 steps: @@ -66,7 +132,7 @@ jobs: - name: Get pnpm store directory id: pnpm-cache - run: echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + run: echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Setup pnpm cache uses: actions/cache@v3 @@ -74,14 +140,21 @@ jobs: path: | ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} ~/.cache/Cypress - key: pnpm-with-cypress-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} - restore-keys: pnpm-with-cypress-${{ runner.os }}- + key: pnpm-with-cypress-${{ matrix.app-bridge-version }}-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + restore-keys: pnpm-with-cypress-${{ matrix.app-bridge-version }}-${{ runner.os }} - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Build local dependencies - run: pnpm build:app-bridge && pnpm build:sidebar-settings + - name: Build build:sidebar-settings + run: pnpm build:sidebar-settings + + - name: Build @frontify/app-bridge (if workspace) + if: matrix.app-bridge-version == 'workspace:^' + run: pnpm build:app-bridge + + - name: Add app-bridge dependency + run: pnpm add @frontify/app-bridge@${{ matrix.app-bridge-version }} --filter {packages/guideline-blocks-settings} - name: Component Tests run: pnpm test:components diff --git a/.github/workflows/typing-continuous-integration.yml b/.github/workflows/typing-continuous-integration.yml index e191ee8d9..976d02959 100644 --- a/.github/workflows/typing-continuous-integration.yml +++ b/.github/workflows/typing-continuous-integration.yml @@ -40,11 +40,8 @@ jobs: - name: Install npm dependencies run: pnpm i --frozen-lockfile - - name: Build app-bridge - run: pnpm build:app-bridge - - name: Lint code run: pnpm --stream --filter {packages/sidebar-settings} lint - - name: Build package (+ typechecking) - run: pnpm build:sidebar-settings + - name: Typecheck code + run: pnpm --stream --filter {packages/sidebar-settings} typecheck diff --git a/.gitignore b/.gitignore index 4308e964f..1a533e4bf 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ coverage .DS_Store .idea .vscode +cypress/videos +cypress/screenshots diff --git a/CODEOWNERS b/CODEOWNERS index 5bde0c1ec..f8256cae3 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,41 +1,158 @@ -* @Frontify/guidelines-navigation-themes -**/package.json -packages/cli/templates/**/package-lock.json -pnpm-lock.yaml - -# Specific paths - # App Bridge packages/app-bridge/src/types @Frontify/ecosystem -packages/app-bridge/src/react/useAssetChooser.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @SamuelAlev -packages/app-bridge/src/react/useAssetChooser.spec.tsx @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @SamuelAlev -packages/app-bridge/src/react/useAssetUpload.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @SamuelAlev -packages/app-bridge/src/react/useAssetViewer.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useAssetViewer.spec.tsx @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useBlockAssets.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useBlockAssets.spec.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useBlockSettings.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useBlockSettings.spec.tsx @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useBlockTemplates.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useBlockTemplates.spec.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useBulkDownload.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useBulkDownload.spec.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useEditorState.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @SamuelAlev -packages/app-bridge/src/react/usePrivacySettings.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/usePrivacySettings.spec.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useReadyForPrint.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/react/useReadyForPrint.spec.tsx @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/tests/withAppBridgeBlockStubs.tsx @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/tests/AppBridgeBlockStub.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/AppBridgeBlock.ts @Frontify/guidelines-one @SamuelAlev -packages/app-bridge/src/AppBridgePlatformApp.ts @Frontify/integration -packages/app-bridge/src/AppBridgePlatformApp.spec.ts @Frontify/integration + +## App Bridge Errors +packages/app-bridge/src/errors/HttpClientError.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration +packages/app-bridge/src/errors/InitializationError.ts @Frontify/integration +packages/app-bridge/src/errors/NotifyError.ts @Frontify/integration +packages/app-bridge/src/errors/TimeoutReachedError.ts @Frontify/integration +packages/app-bridge/src/errors/ValidationError.ts @Frontify/integration + +## App Bridge Helpers +packages/app-bridge/src/helpers/ @Frontify/guidelines-navigation-themes + +## React Hooks +packages/app-bridge/src/react/useAssetBulkDownload.spec.tsx @Frontify/guidelines-one +packages/app-bridge/src/react/useAssetBulkDownload.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useAssetChooser.spec.tsx @Frontify/guidelines-one +packages/app-bridge/src/react/useAssetChooser.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useAssetUpload.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useAssetViewer.spec.tsx @Frontify/guidelines-one +packages/app-bridge/src/react/useAssetViewer.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useBlockAssets.spec.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useBlockAssets.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useBlockSettings.spec.tsx @Frontify/guidelines-one +packages/app-bridge/src/react/useBlockSettings.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useBlockTemplates.spec.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useBlockTemplates.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useBrandportalLink.spec.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useBrandportalLink.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useCategorizedDocumentPages.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useCategorizedDocumentPages.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useColorPalettes.spec.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useColorPalettes.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useColors.spec.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useColors.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useCoverPage.spec.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useCoverPage.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useDocumentCategories.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useDocumentCategories.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useDocumentGroups.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useDocumentGroups.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useDocumentPageTargets.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useDocumentPageTargets.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useDocumentSection.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useDocumentTargets.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useDocumentTargets.tsx @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useEditorState.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useFileInput.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useFileUpload.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useGroupedDocuments.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useGroupedDocuments.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useGuidelineActions.spec.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useGuidelineActions.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useLanguage.spec.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useLanguage.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useNavigationManager.spec.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useNavigationManager.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/usePageTemplateSettings.spec.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/usePageTemplateSettings.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/usePlatformAppBridge.spec.ts @Frontify/integration +packages/app-bridge/src/react/usePlatformAppBridge.ts @Frontify/integration +packages/app-bridge/src/react/usePrivacySettings.spec.ts @Frontify/guidelines-one +packages/app-bridge/src/react/usePrivacySettings.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useReadyForPrint.spec.tsx @Frontify/guidelines-one +packages/app-bridge/src/react/useReadyForPrint.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useTemplateAssets.spec.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useTemplateAssets.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useTemplateChooser.spec.tsx @Frontify/guidelines-one +packages/app-bridge/src/react/useTemplateChooser.ts @Frontify/guidelines-one +packages/app-bridge/src/react/useThemeAssets.spec.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useThemeAssets.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useThemeSettings.spec.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useThemeSettings.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useUncategorizedDocumentPages.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useUncategorizedDocumentPages.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useUngroupedDocuments.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/react/useUngroupedDocuments.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes + +### App Bridge registries api +packages/app-bridge/src/registries/api/CreateAsset.ts @Frontify/integration +packages/app-bridge/src/registries/api/CreateAsset.spec.ts @Frontify/integration +packages/app-bridge/src/registries/api/GetAssetResourceInformation.ts @Frontify/integration +packages/app-bridge/src/registries/api/GetAssetResourceInformation.spec.ts @Frontify/integration +packages/app-bridge/src/registries/api/GetAssetBulkDownloadToken.ts @Frontify/guidelines-one +packages/app-bridge/src/registries/api/GetCurrentUser.ts @Frontify/guidelines-one @Frontify/integration @Frontify/guidelines-navigation-themes +packages/app-bridge/src/registries/api/GetCurrentUser.spec.ts @Frontify/guidelines-one @Frontify/integration @Frontify/guidelines-navigation-themes + +### App Bridge registries commands +packages/app-bridge/src/registries/commands/AssetChooser.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/registries/commands/AssetViewer.ts @Frontify/guidelines-one +packages/app-bridge/src/registries/commands/Connection.ts @Frontify/integration +packages/app-bridge/src/registries/commands/DownloadAsset.ts @Frontify/guidelines-one +packages/app-bridge/src/registries/commands/NavigationManager.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/registries/commands/NewPublication.ts @Frontify/guidelines-one +packages/app-bridge/src/registries/commands/TemplateChooser.ts @Frontify/guidelines-one + +### App Bridge registries events +packages/app-bridge/src/registries/events/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes + +### App Bridge registries verbs +packages/app-bridge/src/registries/verbs/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration + +## App Bridge repositories +packages/app-bridge/src/repositories/ @Frontify/guidelines-one + +## App Bridge Tests +packages/app-bridge/src/tests/AppBridgeBlockStub.ts @Frontify/guidelines-one +packages/app-bridge/src/tests/AppBridgePlatformAppStub.ts @Frontify/integration +packages/app-bridge/src/tests/AppBridgeThemeStub.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/tests/withAppBridgeBlockStubs.tsx @Frontify/guidelines-one +packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx @Frontify/guidelines-navigation-themes + +## App Bridge Utilities +packages/app-bridge/src/utilities/hash.ts @Frontify/integration +packages/app-bridge/src/utilities/httpClient.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration packages/app-bridge/src/utilities/MessageBus.ts @Frontify/integration packages/app-bridge/src/utilities/MessageBus.spec.ts @Frontify/integration -packages/app-bridge/src/registries/api @Frontify/integration +packages/app-bridge/src/utilities/notify.ts @Frontify/integration +packages/app-bridge/src/utilities/object.spec.ts @Frontify/guidelines-one +packages/app-bridge/src/utilities/object.ts @Frontify/guidelines-one +packages/app-bridge/src/utilities/queryParams.spec.ts @Frontify/integration +packages/app-bridge/src/utilities/queryParams.ts @Frontify/integration +packages/app-bridge/src/utilities/subscribe.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration + +## App Bridge Worker +packages/app-bridge/src/worker/ @Frontify/guidelines-one + +## App Bridge Interfaces +packages/app-bridge/src/AppBridge.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration +packages/app-bridge/src/AppBridgeBlock.ts @Frontify/guidelines-one +packages/app-bridge/src/AppBridgeCreateAsset.spec.ts @Frontify/integration +packages/app-bridge/src/AppBridgeCreateAsset.ts @Frontify/integration +packages/app-bridge/src/AppBridgePlatformApp.spec.ts @Frontify/integration +packages/app-bridge/src/AppBridgePlatformApp.ts @Frontify/integration +packages/app-bridge/src/AppBridgeTheme.ts @Frontify/guidelines-navigation-themes +packages/app-bridge/src/window.d.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration + +# CLI +packages/cli/src/commands/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration +packages/cli/src/errors/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration +packages/cli/src/utils/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration + +## Templates +packages/cli/templates/content-block-css @Frontify/guidelines-one +packages/cli/templates/content-block-css-modules @Frontify/guidelines-one +packages/cli/templates/content-block-tailwind @Frontify/guidelines-one +packages/cli/templates/platform-app-css @Frontify/integration +packages/cli/templates/platform-app-css-modules @Frontify/integration +packages/cli/templates/platform-app-tailwind @Frontify/integration # Guideline Blocks Settings -packages/guideline-blocks-settings @Frontify/guidelines-one @SamuelAlev +packages/guideline-blocks-settings @Frontify/guidelines-one + +# Sidebar Settings +packages/sidebar-settings @Frontify/guidelines-one @Frontify/guidelines-navigation-themes CODEOWNERS @Frontify/architecture diff --git a/package.json b/package.json index 308005b48..18949941c 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.2", "@cypress/vite-dev-server": "^5.0.6", - "@frontify/fondue": "12.0.0-beta.382", + "@frontify/fondue": "12.0.0-beta.396", "@vitejs/plugin-react": "^4.2.0", "cypress": "^13.5.1", "cypress-real-events": "^1.11.0", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 1efaae4ff..5aa54407b 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 3.0.2 + +### Patch Changes + +- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions + ## 3.0.1 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 61420993a..203b399bc 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "3.0.1", + "version": "3.0.2", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", diff --git a/packages/app-bridge/src/react/useAssetChooser.spec.tsx b/packages/app-bridge/src/react/useAssetChooser.spec.tsx index 2af01a1cd..f73b9199f 100644 --- a/packages/app-bridge/src/react/useAssetChooser.spec.tsx +++ b/packages/app-bridge/src/react/useAssetChooser.spec.tsx @@ -6,6 +6,7 @@ import { afterEach, describe, it } from 'vitest'; import { cleanup, render } from '@testing-library/react'; import type { Asset } from '../types/Asset'; +import { AssetDummy } from '../tests/AssetDummy'; import { AppBridgeBlock } from '../AppBridgeBlock'; import { useAssetChooser } from './useAssetChooser'; import { withAppBridgeBlockStubs } from '../tests/withAppBridgeBlockStubs'; @@ -33,7 +34,7 @@ const AssetChooserDummy = ({ ); }; -describe('useReadyForPrint hook', () => { +describe('useAssetChooser hook', () => { afterEach(() => { cleanup(); }); @@ -43,14 +44,34 @@ describe('useReadyForPrint hook', () => { const { getByTestId } = render(); const openAssetChooserButton = getByTestId(OPEN_ASSET_CHOOSER_BUTTON_ID) as HTMLButtonElement; openAssetChooserButton.click(); - sinon.assert.calledOnce(appBridge.openAssetChooser); + sinon.assert.calledWith(appBridge.dispatch, sinon.match.has('name', 'openAssetChooser')); }); it('should close the asset chooser', () => { const [BlockWithStubs, appBridge] = withAppBridgeBlockStubs(AssetChooserDummy); const { getByTestId } = render(); - const openAssetChooserButton = getByTestId(CLOSE_ASSET_CHOOSER_BUTTON_ID) as HTMLButtonElement; + const closeAssetChooserButton = getByTestId(CLOSE_ASSET_CHOOSER_BUTTON_ID) as HTMLButtonElement; + closeAssetChooserButton.click(); + sinon.assert.calledWith(appBridge.dispatch, sinon.match.has('name', 'closeAssetChooser')); + }); + + it('should call the onAssetChosen callback when an asset is chosen', () => { + const [BlockWithStubs] = withAppBridgeBlockStubs(AssetChooserDummy); + const onAssetChosen = sinon.spy(); + const { getByTestId } = render(); + const openAssetChooserButton = getByTestId(OPEN_ASSET_CHOOSER_BUTTON_ID) as HTMLButtonElement; openAssetChooserButton.click(); - sinon.assert.calledOnce(appBridge.closeAssetChooser); + sinon.assert.calledWith(onAssetChosen, [AssetDummy.with(123)]); + }); + + it('should unsubscribe if asset chooser gets opened and closed', () => { + const unsubscribeSpy = sinon.spy(); + const [BlockWithStubs] = withAppBridgeBlockStubs(AssetChooserDummy, { unsubscribe: unsubscribeSpy }); + const { getByTestId } = render(); + const openTemplateChooserButton = getByTestId(OPEN_ASSET_CHOOSER_BUTTON_ID) as HTMLButtonElement; + openTemplateChooserButton.click(); + const closeTemplateChooserButton = getByTestId(CLOSE_ASSET_CHOOSER_BUTTON_ID) as HTMLButtonElement; + closeTemplateChooserButton.click(); + sinon.assert.calledOnce(unsubscribeSpy); }); }); diff --git a/packages/app-bridge/src/react/useAssetChooser.ts b/packages/app-bridge/src/react/useAssetChooser.ts index 62bbe268f..d184c5607 100644 --- a/packages/app-bridge/src/react/useAssetChooser.ts +++ b/packages/app-bridge/src/react/useAssetChooser.ts @@ -1,7 +1,9 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ +import { closeAssetChooser, openAssetChooser } from '../registries/commands/AssetChooser'; import type { AppBridgeBlock } from '../AppBridgeBlock'; import type { Asset, AssetChooserOptions } from '../types'; +import { EventUnsubscribeFunction } from '../AppBridge'; type UseAssetChooserType = { openAssetChooser: (callback: (selectedAsset: Asset[]) => void, options: AssetChooserOptions) => void; @@ -9,8 +11,18 @@ type UseAssetChooserType = { }; export const useAssetChooser = (appBridge: AppBridgeBlock): UseAssetChooserType => { + let unsubscribe: EventUnsubscribeFunction; + return { - openAssetChooser: appBridge.openAssetChooser.bind(appBridge), - closeAssetChooser: appBridge.closeAssetChooser.bind(appBridge), + openAssetChooser: (callback, options) => { + appBridge.dispatch(openAssetChooser(options)); + unsubscribe = appBridge.subscribe('assetsChosen', (selectedAssets) => { + callback(selectedAssets.assets); + }); + }, + closeAssetChooser: () => { + unsubscribe?.(); + appBridge.dispatch(closeAssetChooser()); + }, }; }; diff --git a/packages/app-bridge/src/react/useAssetViewer.spec.tsx b/packages/app-bridge/src/react/useAssetViewer.spec.tsx index b5b45922e..864f6b77a 100644 --- a/packages/app-bridge/src/react/useAssetViewer.spec.tsx +++ b/packages/app-bridge/src/react/useAssetViewer.spec.tsx @@ -25,9 +25,13 @@ describe('useAssetViewer', () => { const { result, appBridgeStub, asset } = await loadUseAssetViewer(); result.current.open(asset); - const call = appBridgeStub.openAssetViewer.getCall(0); - waitFor(() => { - expect(call.calledOnceWithExactly(asset.token)).toBe(true); + await waitFor(() => { + expect( + appBridgeStub.dispatch.calledOnceWithExactly({ + name: 'openAssetViewer', + payload: { token: asset.token }, + }), + ).toBe(true); }); }); }); diff --git a/packages/app-bridge/src/react/useAssetViewer.ts b/packages/app-bridge/src/react/useAssetViewer.ts index d8acdcf49..eb1d2aab8 100644 --- a/packages/app-bridge/src/react/useAssetViewer.ts +++ b/packages/app-bridge/src/react/useAssetViewer.ts @@ -1,11 +1,12 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { AppBridgeBlock } from '../AppBridgeBlock'; -import { Asset } from '../types'; +import { openAssetViewer } from '../registries/commands/AssetViewer'; +import { type AppBridgeBlock } from '../AppBridgeBlock'; +import { type Asset } from '../types'; export const useAssetViewer = (appBridge: AppBridgeBlock) => { const open = async ({ token }: Asset) => { - appBridge.openAssetViewer(token); + appBridge.dispatch(openAssetViewer({ token })); }; return { diff --git a/packages/app-bridge/src/react/useBlockAssets.ts b/packages/app-bridge/src/react/useBlockAssets.ts index 30091ca08..8288f6593 100644 --- a/packages/app-bridge/src/react/useBlockAssets.ts +++ b/packages/app-bridge/src/react/useBlockAssets.ts @@ -7,7 +7,7 @@ import type { Asset } from '../types'; import { compareObjects } from '../utilities'; export const useBlockAssets = (appBridge: AppBridgeBlock) => { - const blockId = appBridge.getBlockId(); + const blockId = appBridge.context('blockId').get(); const [blockAssets, setBlockAssets] = useState>({}); diff --git a/packages/app-bridge/src/react/useBlockSettings.spec.tsx b/packages/app-bridge/src/react/useBlockSettings.spec.tsx index 94e669945..bd4c0a13b 100644 --- a/packages/app-bridge/src/react/useBlockSettings.spec.tsx +++ b/packages/app-bridge/src/react/useBlockSettings.spec.tsx @@ -23,7 +23,7 @@ const Block = ({ appBridge }: { appBridge: AppBridgeBlock }): ReactElement => { const [blockSettings, updateBlockSettings] = useBlockSettings(appBridge); return ( -
+
{JSON.stringify(blockSettings)}
=> { + const context = appBridge.context(); + return context === undefined; +}; + describe('Attachments', () => { it('renders attachments flyout if it is in edit mode', () => { mount(); @@ -85,11 +89,14 @@ describe('Attachments', () => { cy.get(AttachmentItemSelector).should('have.length', 3); }); - it('renders loading circle for attachment item', () => { + it('renders loading circle for attachment item', async () => { const appBridge = getAppBridgeBlockStub({ editorState: true, }); - (appBridge.openAssetChooser as SinonStub) = cy.stub().callsArgWith(0, AssetDummy.with(4)); + + if (await isPre302Stub(appBridge)) { + (appBridge.openAssetChooser as SinonStub) = cy.stub().callsArgWith(0, AssetDummy.with(4)); + } cy.clock(); const replaceStub = () => @@ -126,26 +133,8 @@ describe('Attachments', () => { cy.get(FlyoutButtonSelector).click(); cy.realPress('Tab'); cy.realPress('Tab'); - cy.realPress('Tab'); cy.get(FlyoutTriggerSelector).eq(0).should('have.class', 'focus-visible:tw-ring-blue'); cy.get(FlyoutTriggerSelector).eq(0).type('{enter}'); cy.get(MenuItemSelector).should('exist'); }); - - it('reorders items using only keyboard events', () => { - const onSortStub = cy.stub(); - mount( - , - ); - cy.get(FlyoutButtonSelector).click(); - cy.realPress('Tab'); - cy.realPress('Tab'); - cy.realPress('Tab'); - cy.get(DragHandleSelector).eq(0).type(' {downarrow}{downarrow} '); - cy.get(AttachmentItemSelector).eq(1).should('contain.text', 'Moved item'); - }); }); diff --git a/packages/guideline-blocks-settings/src/components/Attachments/Attachments.tsx b/packages/guideline-blocks-settings/src/components/Attachments/Attachments.tsx index f19748d16..48966ff5e 100644 --- a/packages/guideline-blocks-settings/src/components/Attachments/Attachments.tsx +++ b/packages/guideline-blocks-settings/src/components/Attachments/Attachments.tsx @@ -12,21 +12,21 @@ import { useSensor, useSensors, } from '@dnd-kit/core'; +import { restrictToWindowEdges } from '@dnd-kit/modifiers'; import { SortableContext, arrayMove, rectSortingStrategy } from '@dnd-kit/sortable'; -import { Asset, useAssetUpload, useEditorState } from '@frontify/app-bridge'; +import { Asset, useAssetChooser, useAssetUpload, useEditorState } from '@frontify/app-bridge'; import { AssetInput, AssetInputSize, Flyout, FlyoutPlacement, - IconCaretDown12, - IconPaperclip16, LegacyTooltip as Tooltip, TooltipPosition, } from '@frontify/fondue'; + import { AttachmentItem, SortableAttachmentItem } from './AttachmentItem'; -import { AttachmentsProps } from './types'; -import { restrictToWindowEdges } from '@dnd-kit/modifiers'; +import { type AttachmentsProps } from './types'; +import { AttachmentsButtonTrigger } from './AttachmentsButtonTrigger'; export const Attachments = ({ items = [], @@ -37,15 +37,21 @@ export const Attachments = ({ onUpload, onSorted, appBridge, + triggerComponent: TriggerComponent = AttachmentsButtonTrigger, + isOpen, + onOpenChange, }: AttachmentsProps) => { const [internalItems, setInternalItems] = useState(items); - const [isFlyoutOpen, setIsFlyoutOpen] = useState(false); + const [isFlyoutOpenInternal, setIsFlyoutOpenInternal] = useState(false); const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor)); const [draggedAssetId, setDraggedAssetId] = useState(undefined); const [isUploadLoading, setIsUploadLoading] = useState(false); const [assetIdsLoading, setAssetIdsLoading] = useState([]); const [selectedFiles, setSelectedFiles] = useState(null); const isEditing = useEditorState(appBridge); + const { openAssetChooser, closeAssetChooser } = useAssetChooser(appBridge); + const isControllingStateExternally = isOpen !== undefined; + const isFlyoutOpen = isControllingStateExternally ? isOpen : isFlyoutOpenInternal; const draggedItem = internalItems?.find((item) => item.id === draggedAssetId); @@ -53,6 +59,12 @@ export const Attachments = ({ onUploadProgress: () => !isUploadLoading && setIsUploadLoading(true), }); + const handleFlyoutOpenChange = (isOpen: boolean) => { + const stateSetter = isControllingStateExternally ? onOpenChange : setIsFlyoutOpenInternal; + + stateSetter?.(isOpen); + }; + useEffect(() => { setInternalItems(items); }, [items]); @@ -77,12 +89,12 @@ export const Attachments = ({ }, [doneAll, uploadResults]); const onOpenAssetChooser = () => { - setIsFlyoutOpen(false); - appBridge.openAssetChooser( + handleFlyoutOpenChange(false); + openAssetChooser( (result: Asset[]) => { onBrowse(result); - appBridge.closeAssetChooser(); - setIsFlyoutOpen(true); + closeAssetChooser(); + handleFlyoutOpenChange(true); }, { multiSelection: true, @@ -92,11 +104,11 @@ export const Attachments = ({ }; const onReplaceItemWithBrowse = (toReplace: Asset) => { - setIsFlyoutOpen(false); - appBridge.openAssetChooser( + handleFlyoutOpenChange(false); + openAssetChooser( async (result: Asset[]) => { - setIsFlyoutOpen(true); - appBridge.closeAssetChooser(); + handleFlyoutOpenChange(true); + closeAssetChooser(); setAssetIdsLoading([...assetIdsLoading, toReplace.id]); await onReplaceWithBrowse(toReplace, result[0]); setAssetIdsLoading(assetIdsLoading.filter((id) => id !== toReplace.id)); @@ -142,20 +154,18 @@ export const Attachments = ({
setIsFlyoutOpen(!!draggedItem ? true : isOpen)} + onOpenChange={(isOpen) => handleFlyoutOpenChange(!!draggedItem ? true : isOpen)} isOpen={isFlyoutOpen} hug={false} fitContent legacyFooter={false} trigger={ -
- +
{items.length > 0 ? items.length : 'Add'}
- -
+ } > -
+
{internalItems.length > 0 && ( onReplaceItemWithUpload(item, uploadedAsset) } + onDownload={() => + appBridge.dispatch({ + name: 'downloadAsset', + payload: item, + }) + } /> ))}
diff --git a/packages/guideline-blocks-settings/src/components/Attachments/AttachmentsButtonTrigger.tsx b/packages/guideline-blocks-settings/src/components/Attachments/AttachmentsButtonTrigger.tsx new file mode 100644 index 000000000..099f20b0d --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/Attachments/AttachmentsButtonTrigger.tsx @@ -0,0 +1,22 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { IconCaretDown12, IconPaperclip16 } from '@frontify/fondue'; + +import { joinClassNames } from '../../utilities'; + +import { type AttachmentsTriggerProps } from './types'; + +export const AttachmentsButtonTrigger = ({ children, isFlyoutOpen }: AttachmentsTriggerProps) => ( +
+ + {children} + +
+); diff --git a/packages/guideline-blocks-settings/src/components/Attachments/types.ts b/packages/guideline-blocks-settings/src/components/Attachments/types.ts index 1c367c45f..452c13b46 100644 --- a/packages/guideline-blocks-settings/src/components/Attachments/types.ts +++ b/packages/guideline-blocks-settings/src/components/Attachments/types.ts @@ -1,6 +1,12 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { AppBridgeBlock, Asset } from '@frontify/app-bridge'; +import { type AppBridgeBlock, type Asset } from '@frontify/app-bridge'; +import { type ReactNode } from 'react'; + +export type AttachmentsTriggerProps = { + children: ReactNode; + isFlyoutOpen: boolean; +}; export type AttachmentsProps = { items?: Asset[]; @@ -11,7 +17,8 @@ export type AttachmentsProps = { onUpload: (uploadedAttachments: Asset[]) => Promise; onBrowse: (browserAttachments: Asset[]) => void; onSorted: (sortedAttachments: Asset[]) => void; -}; + triggerComponent?: (props: AttachmentsTriggerProps) => JSX.Element; +} & ({ isOpen?: never; onOpenChange?: never } | { isOpen: boolean; onOpenChange: (isOpen: boolean) => void }); export type AttachmentItemProps = SortableAttachmentItemProps & { isDragging?: boolean; @@ -27,4 +34,5 @@ export type SortableAttachmentItemProps = { isLoading?: boolean; onReplaceWithBrowse: () => void; onReplaceWithUpload: (uploadedAsset: Asset) => void; + onDownload?: () => Promise; }; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx index f3dc551c0..4158b5879 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx @@ -1,9 +1,11 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { ReactElement, useEffect, useRef, useState } from 'react'; +import { type ReactElement, useRef, useState } from 'react'; + import { joinClassNames } from '../../utilities'; -import { Toolbar } from './Toolbar'; -import { BlockItemWrapperProps, ToolbarItem } from './types'; + +import { Toolbar, type ToolbarItem } from './Toolbar'; +import { type BlockItemWrapperProps } from './types'; export const BlockItemWrapper = ({ children, @@ -15,18 +17,12 @@ export const BlockItemWrapper = ({ shouldFillContainer, outlineOffset = 2, shouldBeShown = false, + showAttachments = false, }: BlockItemWrapperProps): ReactElement => { - const [isFlyoutOpen, setIsFlyoutOpen] = useState(shouldBeShown); - const [isFlyoutDisabled, setIsFlyoutDisabled] = useState(false); + const [isMenuFlyoutOpen, setIsMenuFlyoutOpen] = useState(shouldBeShown); + const [isAttachmentFlyoutOpen, setIsAttachmentFlyoutOpen] = useState(false); const wrapperRef = useRef(null); - useEffect(() => { - if (!isFlyoutOpen) { - // This prevents automatic refocusing of the trigger element - setIsFlyoutDisabled(true); - } - }, [isFlyoutOpen]); - if (shouldHideWrapper) { // eslint-disable-next-line react/jsx-no-useless-fragment return <>{children}; @@ -34,11 +30,11 @@ export const BlockItemWrapper = ({ const items = toolbarItems?.filter((item): item is ToolbarItem => item !== undefined); + const shouldToolbarBeVisible = isMenuFlyoutOpen || isAttachmentFlyoutOpen || shouldBeShown; + return (
setIsFlyoutDisabled(false)} - onPointerEnter={() => setIsFlyoutDisabled(false)} data-test-id="block-item-wrapper" style={{ outlineOffset, @@ -47,7 +43,7 @@ export const BlockItemWrapper = ({ 'tw-relative tw-group tw-outline-1 tw-outline-box-selected-inverse', shouldFillContainer && 'tw-flex-1 tw-h-full tw-w-full', 'hover:tw-outline focus-within:tw-outline', - (isFlyoutOpen || shouldBeShown) && 'tw-outline', + shouldToolbarBeVisible && 'tw-outline', shouldHideComponent && 'tw-opacity-0', ])} > @@ -59,14 +55,21 @@ export const BlockItemWrapper = ({ className={joinClassNames([ 'tw-pointer-events-none tw-absolute tw-bottom-[calc(100%-4px)] tw-right-[-3px] tw-w-full tw-opacity-0 tw-z-[60]', 'group-hover:tw-opacity-100 group-focus:tw-opacity-100 focus-within:tw-opacity-100', - (isFlyoutOpen || shouldBeShown) && 'tw-opacity-100', + 'tw-flex tw-justify-end', + shouldToolbarBeVisible && 'tw-opacity-100', ])} > diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar.tsx deleted file mode 100644 index 51a653ccc..000000000 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar.tsx +++ /dev/null @@ -1,133 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { - ActionMenu, - FOCUS_VISIBLE_STYLE, - Flyout, - IconDotsHorizontal16, - MenuItemContentSize, - LegacyTooltip as Tooltip, - TooltipPosition, -} from '@frontify/fondue'; -import { ToolbarProps } from './types'; -import { joinClassNames } from '../../utilities'; -import { DEFAULT_DRAGGING_TOOLTIP, DEFAULT_DRAG_TOOLTIP } from './constants'; - -export const Toolbar = ({ - items, - flyoutItems, - isFlyoutOpen, - setIsFlyoutOpen, - isDragging, - isFlyoutDisabled, -}: ToolbarProps) => { - return ( -
-
- {items.map((item, i) => - 'draggableProps' in item ? ( - - {isDragging ? DEFAULT_DRAGGING_TOOLTIP : item.tooltip ?? DEFAULT_DRAG_TOOLTIP} -
- } - triggerElement={ - - } - /> - ) : ( - {item.tooltip ?? ''}
} - triggerElement={ - - } - /> - ), - )} - {flyoutItems.length > 0 && ( -
- Options
} - triggerElement={ -
- -
- } - /> - } - > - ({ - id: blockIndex.toString(), - menuItems: block.map((item, itemIndex) => ({ - id: blockIndex.toString() + itemIndex.toString(), - size: MenuItemContentSize.XSmall, - title: item.title, - style: item.style, - onClick: () => { - setIsFlyoutOpen(false); - item.onClick(); - }, - initialValue: true, - decorator:
{item.icon}
, - })), - }))} - /> - -
- )} -
-
- ); -}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.spec.tsx new file mode 100644 index 000000000..19a6ee821 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.spec.tsx @@ -0,0 +1,127 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { getAppBridgeBlockStub } from '@frontify/app-bridge'; +import { render } from '@testing-library/react'; +import { beforeAll, describe, expect, it, vi } from 'vitest'; + +import { AttachmentsProvider } from '../../../hooks/useAttachments'; + +import { Toolbar } from './Toolbar'; + +/** + * @vitest-environment happy-dom + */ + +const ATTACHMENTS_FLYOUT_ID = 'attachments-flyout-content'; +const MENU_FLYOUT_ID = 'menu-item'; + +const MOCK_ASSET_FIELD_ID = 'attachment'; + +describe('Toolbar', () => { + beforeAll(() => { + vi.stubGlobal( + 'Worker', + class Worker { + constructor() {} + addEventListener() {} + terminate() {} + }, + ); + }); + + it('should not throw error if toolbar does not have attachments enabled', () => { + expect(() => + render( + , + ), + ).not.toThrowError(); + }); + + it('should throw error if toolbar does have attachments enabled without provider', () => { + expect(() => + render( + , + ), + ).toThrowError(); + }); + + it('should open flyouts if not dragging', async () => { + const STUB_WITH_NO_ASSETS = getAppBridgeBlockStub({ + blockId: 1, + blockAssets: { [MOCK_ASSET_FIELD_ID]: [] }, + editorState: true, + }); + + const ToolbarWithAttachments = () => ( + +
, + onClick: vi.fn(), + }, + ], + ], + isOpen: true, + onOpenChange: vi.fn(), + }} + attachments={{ isEnabled: true, isOpen: true, onOpenChange: vi.fn() }} + isDragging={false} + /> + + ); + + const { baseElement } = render(, { container: document.body }); + + expect(baseElement.querySelector(`[data-test-id=${ATTACHMENTS_FLYOUT_ID}]`)).not.toBeNull(); + expect(baseElement.querySelector(`[data-test-id=${MENU_FLYOUT_ID}]`)).not.toBeNull(); + }); + + it('should keep flyouts closed if dragging', async () => { + const MOCK_ASSET_FIELD_ID = 'attachment'; + const STUB_WITH_NO_ASSETS = getAppBridgeBlockStub({ + blockId: 1, + blockAssets: { [MOCK_ASSET_FIELD_ID]: [] }, + editorState: true, + }); + + const ToolbarWithAttachments = () => ( + +
, + onClick: vi.fn(), + }, + ], + ], + isOpen: true, + onOpenChange: vi.fn(), + }} + attachments={{ isEnabled: true, isOpen: true, onOpenChange: vi.fn() }} + isDragging + /> + + ); + + const { baseElement } = render(, { container: document.body }); + expect(baseElement.querySelector(`[data-test-id=${ATTACHMENTS_FLYOUT_ID}]`)).toBeNull(); + expect(baseElement.querySelector(`[data-test-id=${MENU_FLYOUT_ID}]`)).toBeNull(); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.tsx new file mode 100644 index 000000000..8729cc481 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.tsx @@ -0,0 +1,133 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { + ActionMenu, + Flyout, + IconDotsHorizontal16, + MenuItemContentSize, + LegacyTooltip as Tooltip, + TooltipPosition, +} from '@frontify/fondue'; + +import { DEFAULT_DRAGGING_TOOLTIP, DEFAULT_DRAG_TOOLTIP } from '../constants'; + +import { ToolbarSegment } from './ToolbarSegment'; +import { ToolbarAttachments } from './ToolbarAttachments'; +import { getToolbarButtonClassNames } from './helpers'; +import { type ToolbarProps } from './types'; + +export const Toolbar = ({ items, flyoutMenu, attachments, isDragging }: ToolbarProps) => { + return ( +
+ {attachments.isEnabled && ( + + + + )} + + {items.map((item, i) => + 'draggableProps' in item ? ( + + {isDragging ? DEFAULT_DRAGGING_TOOLTIP : item.tooltip ?? DEFAULT_DRAG_TOOLTIP} +
+ } + triggerElement={ + + } + /> + ) : ( + {item.tooltip ?? ''}
} + triggerElement={ + + } + /> + ), + )} + {flyoutMenu.items.length > 0 && ( + Options} + triggerElement={ +
+ + +
+ } + > + ({ + id: blockIndex.toString(), + menuItems: block.map((item, itemIndex) => ({ + id: blockIndex.toString() + itemIndex.toString(), + size: MenuItemContentSize.XSmall, + title: item.title, + style: item.style, + onClick: () => { + flyoutMenu.onOpenChange(false); + item.onClick(); + }, + initialValue: true, + decorator:
{item.icon}
, + })), + }))} + /> + + + } + /> + )} + + + ); +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachments.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachments.tsx new file mode 100644 index 000000000..b7a79b777 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachments.tsx @@ -0,0 +1,29 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { Attachments } from '../../Attachments'; +import { useAttachmentsContext } from '../../../hooks'; + +import { type ToolbarFlyoutState } from './types'; + +import { ToolbarAttachmentsTrigger } from './ToolbarAttachmentsTrigger'; + +export const ToolbarAttachments = ({ isOpen, onOpenChange }: ToolbarFlyoutState) => { + const { appBridge, attachments, onAttachmentsAdd, onAttachmentDelete, onAttachmentReplace, onAttachmentsSorted } = + useAttachmentsContext(); + + return ( + + ); +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachmentsTrigger.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachmentsTrigger.tsx new file mode 100644 index 000000000..3629e6fb3 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachmentsTrigger.tsx @@ -0,0 +1,14 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { IconCaretDown12, IconPaperclip16 } from '@frontify/fondue'; +import { type AttachmentsTriggerProps } from '../../Attachments/types'; + +import { getToolbarButtonClassNames } from './helpers'; + +export const ToolbarAttachmentsTrigger = ({ children, isFlyoutOpen }: AttachmentsTriggerProps) => ( +
+ + {children} + +
+); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarSegment.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarSegment.tsx new file mode 100644 index 000000000..51e82c874 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarSegment.tsx @@ -0,0 +1,9 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type ReactNode } from 'react'; + +export const ToolbarSegment = ({ children }: { children: ReactNode }) => ( +
+ {children} +
+); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/helpers.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/helpers.ts new file mode 100644 index 000000000..3801abe20 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/helpers.ts @@ -0,0 +1,33 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { FOCUS_VISIBLE_STYLE } from '@frontify/fondue'; + +import { joinClassNames } from '../../../utilities'; + +export const getToolbarButtonClassNames = (cursor: 'grab' | 'pointer', forceActiveStyle?: boolean) => { + const classNames = [ + FOCUS_VISIBLE_STYLE, + 'tw-relative tw-inline-flex tw-items-center tw-justify-center', + 'tw-h-6 tw-p-1', + 'tw-rounded', + 'tw-text-xs tw-font-medium', + 'tw-gap-0.5', + 'focus-visible:tw-z-10', + ]; + + if (forceActiveStyle) { + classNames.push( + 'tw-bg-box-neutral-pressed', + 'tw-text-box-neutral-inverse-pressed', + cursor === 'grab' ? 'tw-cursor-grabbing' : 'tw-cursor-pointer', + ); + } else { + classNames.push( + 'hover:tw-bg-box-neutral-hover active:tw-bg-box-neutral-pressed', + 'tw-text-text-weak hover:tw-text-box-neutral-inverse-hover active:tw-text-box-neutral-inverse-pressed', + cursor === 'grab' ? 'tw-cursor-grab active:tw-cursor-grabbing' : 'tw-cursor-pointer', + ); + } + + return joinClassNames(classNames); +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/index.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/index.ts new file mode 100644 index 000000000..56eaa7e39 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/index.ts @@ -0,0 +1,4 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './Toolbar'; +export * from './types'; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/types.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/types.ts new file mode 100644 index 000000000..fdae73bfd --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/types.ts @@ -0,0 +1,38 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type MenuItemStyle } from '@frontify/fondue'; + +export type ToolbarProps = { + items: ToolbarItem[]; + flyoutMenu: ToolbarFlyoutState & { items: FlyoutToolbarItem[][] }; + attachments: ToolbarFlyoutState & { isEnabled: boolean }; + isDragging?: boolean; +}; + +export type ToolbarFlyoutState = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; +}; + +type BaseToolbarItem = { + icon: JSX.Element; + tooltip?: string; +}; + +type DraghandleToolbarItem = BaseToolbarItem & { + draggableProps: Record; + setActivatorNodeRef?: (node: HTMLElement | null) => void; +}; + +type ButtonToolbarItem = BaseToolbarItem & { + onClick: () => void; +}; + +export type ToolbarItem = DraghandleToolbarItem | ButtonToolbarItem; + +export type FlyoutToolbarItem = { + title: string; + onClick: () => void; + icon: JSX.Element; + style?: MenuItemStyle; +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/index.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/index.ts index 5df395886..af5a710ac 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/index.ts +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/index.ts @@ -1,5 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './BlockItemWrapper'; +export * from './Toolbar'; export * from './types'; export * from './constants'; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/types.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/types.ts index d98354277..290738060 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/types.ts +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/types.ts @@ -1,7 +1,10 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { MenuItemStyle } from '@frontify/fondue'; -import type { ReactNode } from 'react'; +import { type ReactNode } from 'react'; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import { type AttachmentsProvider, type withAttachmentsProvider } from '../../hooks/useAttachments'; +import { type FlyoutToolbarItem, type ToolbarItem } from './Toolbar'; export type BlockItemWrapperProps = { children: ReactNode; @@ -13,36 +16,10 @@ export type BlockItemWrapperProps = { shouldFillContainer?: boolean; outlineOffset?: number; shouldBeShown?: boolean; -}; - -export type ToolbarProps = { - items: ToolbarItem[]; - flyoutItems: FlyoutToolbarItem[][]; - isFlyoutOpen: boolean; - setIsFlyoutOpen: (isOpen: boolean) => void; - isDragging?: boolean; - isFlyoutDisabled?: boolean; -}; - -type BaseToolbarItem = { - icon: JSX.Element; - tooltip?: string; -}; - -type DraghandleToolbarItem = BaseToolbarItem & { - draggableProps: Record; - setActivatorNodeRef?: (node: HTMLElement | null) => void; -}; - -type ButtonToolbarItem = BaseToolbarItem & { - onClick: () => void; -}; - -export type ToolbarItem = DraghandleToolbarItem | ButtonToolbarItem; - -export type FlyoutToolbarItem = { - title: string; - onClick: () => void; - icon: JSX.Element; - style?: MenuItemStyle; + /** + * When set to true the BlockItemWrapper must be a child of a {@link AttachmentsProvider} component, + * or the block must be wrapped with a {@link withAttachmentsProvider} HOC. + * @default false + */ + showAttachments?: boolean; }; diff --git a/packages/guideline-blocks-settings/src/hooks/useAttachments.spec.ts b/packages/guideline-blocks-settings/src/hooks/useAttachments.spec.tsx similarity index 59% rename from packages/guideline-blocks-settings/src/hooks/useAttachments.spec.ts rename to packages/guideline-blocks-settings/src/hooks/useAttachments.spec.tsx index b3f19415e..74282da81 100644 --- a/packages/guideline-blocks-settings/src/hooks/useAttachments.spec.ts +++ b/packages/guideline-blocks-settings/src/hooks/useAttachments.spec.tsx @@ -1,10 +1,10 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import { AssetDummy, getAppBridgeBlockStub } from '@frontify/app-bridge'; -import { renderHook, waitFor } from '@testing-library/react'; - +import { render, renderHook, waitFor } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; -import { useAttachments } from './useAttachments'; + +import { AttachmentsProvider, useAttachments, useAttachmentsContext, withAttachmentsProvider } from './useAttachments'; const MOCK_SETTINGS_ID = 'attachments'; @@ -20,7 +20,7 @@ describe('useAttachments', () => { }); const { result } = renderHook(() => useAttachments(STUB_WITH_NO_ASSETS, MOCK_SETTINGS_ID)); - await result.current.onAddAttachments([AssetDummy.with(1)]); + await result.current.onAttachmentsAdd([AssetDummy.with(1)]); await waitFor(() => { expect(result.current.attachments).toHaveLength(1); }); @@ -77,3 +77,54 @@ describe('useAttachments', () => { }); }); }); + +describe('useAttachmentsContext', () => { + it('should throw an error when not a child of a provider', async () => { + expect(() => renderHook(() => useAttachmentsContext())).toThrowError(); + }); + + it('should return correct info', async () => { + const STUB_WITH_NO_ASSETS = getAppBridgeBlockStub({ + blockId: 1, + blockAssets: { [MOCK_SETTINGS_ID]: [AssetDummy.with(1)] }, + }); + const { result } = renderHook(useAttachmentsContext, { + wrapper: ({ children }) => ( + + {children} + + ), + }); + + expect(result.current.appBridge).toEqual(STUB_WITH_NO_ASSETS); + await waitFor(() => { + expect(result.current.attachments).toHaveLength(1); + }); + }); +}); + +describe('withAttachmentsProvider', () => { + it('should provide correct info to context consumer', async () => { + const STUB_WITH_THREE_ASSETS = getAppBridgeBlockStub({ + blockId: 2, + blockAssets: { [MOCK_SETTINGS_ID]: [AssetDummy.with(1), AssetDummy.with(2), AssetDummy.with(3)] }, + }); + + const Component = withAttachmentsProvider(() => { + const context = useAttachmentsContext(); + return ( +
    + {context.attachments.map((attachment) => ( +
  • + {attachment.id} +
  • + ))} +
+ ); + }, MOCK_SETTINGS_ID); + + const { getAllByRole } = render(); + + await waitFor(() => expect(getAllByRole('list')).toHaveLength(3)); + }); +}); diff --git a/packages/guideline-blocks-settings/src/hooks/useAttachments.ts b/packages/guideline-blocks-settings/src/hooks/useAttachments.ts deleted file mode 100644 index f8e48cf3f..000000000 --- a/packages/guideline-blocks-settings/src/hooks/useAttachments.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { AppBridgeBlock, Asset, useBlockAssets } from '@frontify/app-bridge'; - -export const useAttachments = (appBridge: AppBridgeBlock, assetId: string) => { - const { blockAssets, updateAssetIdsFromKey } = useBlockAssets(appBridge); - const attachments = blockAssets?.[assetId] || []; - - const onAddAttachments = async (newAssets: Asset[]) => { - const newAssetIds = attachments.map((attachment) => attachment.id); - for (const asset of newAssets) { - newAssetIds.push(asset.id); - } - await updateAssetIdsFromKey(assetId, newAssetIds); - }; - - const onAttachmentDelete = async (assetToDelete: Asset) => { - const newAssetIds = attachments - .filter((attachment) => attachment.id !== assetToDelete.id) - .map((attachment) => attachment.id); - - await updateAssetIdsFromKey(assetId, newAssetIds); - }; - - const onAttachmentReplace = async (attachmentToReplace: Asset, newAsset: Asset) => { - const newAssetIds = attachments.map((attachment) => - attachment.id === attachmentToReplace.id ? newAsset.id : attachment.id, - ); - - await updateAssetIdsFromKey(assetId, newAssetIds); - }; - - const onAttachmentsSorted = async (assets: Asset[]) => { - const newAssetIds = assets.map((asset) => asset.id); - - await updateAssetIdsFromKey(assetId, newAssetIds); - }; - - return { - onAddAttachments, - onAttachmentDelete, - onAttachmentReplace, - onAttachmentsSorted, - attachments, - }; -}; diff --git a/packages/guideline-blocks-settings/src/hooks/useAttachments.tsx b/packages/guideline-blocks-settings/src/hooks/useAttachments.tsx new file mode 100644 index 000000000..62ba4f789 --- /dev/null +++ b/packages/guideline-blocks-settings/src/hooks/useAttachments.tsx @@ -0,0 +1,95 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { AppBridgeBlock, Asset, useBlockAssets } from '@frontify/app-bridge'; +import { type ReactNode, createContext, useContext } from 'react'; + +import { type BlockProps } from '../index'; + +export const useAttachments = (appBridge: AppBridgeBlock, assetId: string) => { + const { blockAssets, updateAssetIdsFromKey } = useBlockAssets(appBridge); + const attachments = blockAssets?.[assetId] || []; + + const onAttachmentsAdd = async (newAssets: Asset[]) => { + const newAssetIds = attachments.map((attachment) => attachment.id); + for (const asset of newAssets) { + newAssetIds.push(asset.id); + } + await updateAssetIdsFromKey(assetId, newAssetIds); + }; + + const onAttachmentDelete = async (assetToDelete: Asset) => { + const newAssetIds = attachments + .filter((attachment) => attachment.id !== assetToDelete.id) + .map((attachment) => attachment.id); + + await updateAssetIdsFromKey(assetId, newAssetIds); + }; + + const onAttachmentReplace = async (attachmentToReplace: Asset, newAsset: Asset) => { + const newAssetIds = attachments.map((attachment) => + attachment.id === attachmentToReplace.id ? newAsset.id : attachment.id, + ); + + await updateAssetIdsFromKey(assetId, newAssetIds); + }; + + const onAttachmentsSorted = async (assets: Asset[]) => { + const newAssetIds = assets.map((asset) => asset.id); + + await updateAssetIdsFromKey(assetId, newAssetIds); + }; + + return { + onAttachmentsAdd, + onAttachmentDelete, + onAttachmentReplace, + onAttachmentsSorted, + attachments, + appBridge, + }; +}; + +const AttachmentsContext = createContext | null>(null); + +export const AttachmentsProvider = ({ + appBridge, + children, + assetId, +}: { + appBridge: AppBridgeBlock; + children: ReactNode; + assetId: string; +}) => { + const attachmentContext = useAttachments(appBridge, assetId); + + return {children}; +}; + +export const useAttachmentsContext = () => { + const context = useContext(AttachmentsContext); + + if (!context) { + throw new Error( + "No AttachmentsContext Provided. Component must be wrapped in an 'AttachmentsProvider' or the 'withAttachmentsProvider' HOC", + ); + } + + return context; +}; + +/** + * Block-level HOC for cases when there is only one attachment asset field related to the block. + * Recommended for most cases. + * If finer control is required over attachments, use {@link AttachmentsProvider} component. + */ +export const withAttachmentsProvider = (Component: (props: T) => ReactNode, assetId: string) => { + const wrappedComponent = (props: T) => ( + + + + ); + + wrappedComponent.displayName = 'withAttachmentsProvider'; + + return wrappedComponent; +}; diff --git a/packages/sidebar-settings/CHANGELOG.md b/packages/sidebar-settings/CHANGELOG.md index a477f0cea..f48dab81c 100644 --- a/packages/sidebar-settings/CHANGELOG.md +++ b/packages/sidebar-settings/CHANGELOG.md @@ -1,5 +1,28 @@ # @frontify/sidebar-settings +## 0.9.1 + +### Patch Changes + +- [#697](https://github.com/Frontify/brand-sdk/pull/697) [`759188b`](https://github.com/Frontify/brand-sdk/commit/759188b28219e23ef7ce19edbc2d5e3248270ea8) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bumps @frontify/fondue to 12.0.0-beta.396 + +## 0.9.0 + +### Minor Changes + +- [#694](https://github.com/Frontify/brand-sdk/pull/694) [`d79e69a`](https://github.com/Frontify/brand-sdk/commit/d79e69a1c6d8f901b7f91866a92fd0d99363f07d) Thanks [@ragi96](https://github.com/ragi96)! - chore: decouples the sidebar-settings from the app-bridge + +### Patch Changes + +- [#695](https://github.com/Frontify/brand-sdk/pull/695) [`d7764c1`](https://github.com/Frontify/brand-sdk/commit/d7764c129ee1d61aaed4ce519e70eb5d0984bfec) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump @frontify/fondue to v12.0.0-beta.395 + +## 0.8.3 + +### Patch Changes + +- Updated dependencies [[`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d)]: + - @frontify/app-bridge@3.0.2 + ## 0.8.2 ### Patch Changes diff --git a/packages/sidebar-settings/package.json b/packages/sidebar-settings/package.json index e86a327b7..24e319e6b 100644 --- a/packages/sidebar-settings/package.json +++ b/packages/sidebar-settings/package.json @@ -1,6 +1,6 @@ { "name": "@frontify/sidebar-settings", - "version": "0.8.2", + "version": "0.9.1", "description": "Provides types and helpers for the settings sidebar", "sideEffects": false, "main": "dist/index.umd.js", @@ -40,8 +40,7 @@ "vitest": "^0.34.6" }, "dependencies": { - "@frontify/app-bridge": "workspace:^", - "@frontify/fondue": "12.0.0-beta.382" + "@frontify/fondue": "12.0.0-beta.396" }, "peerDependencies": { "react": "^18", diff --git a/packages/sidebar-settings/src/blocks/index.ts b/packages/sidebar-settings/src/blocks/index.ts index 3cbd618ab..23960803d 100644 --- a/packages/sidebar-settings/src/blocks/index.ts +++ b/packages/sidebar-settings/src/blocks/index.ts @@ -41,12 +41,307 @@ export * from './legacyTemplateInput'; export * from './textarea'; export * from './link'; -export { - AssetChooserObjectType, - AssetChooserProjectType, - FileExtension, - FileExtensionSets, -} from '@frontify/app-bridge'; +export enum AssetChooserProjectType { + MediaLibrary = 'MediaLibrary', + LogoLibrary = 'LogoLibrary', + IconLibrary = 'IconLibrary', + DocumentLibrary = 'DocumentLibrary', + TemplateLibrary = 'TemplateLibrary', + PatternLibrary = 'PatternLibrary', + Styleguide = 'Styleguide', + Workspace = 'Workspace', +} + +export enum AssetChooserObjectType { + File = 'FILE', // Audio, Zip, ... + Canvas = 'CANVAS', + ImageVideo = 'IMAGE', // No distinction between images and videos in the screen table + TextSnippet = 'TEXT_SNIPPET', + Url = 'URL', +} + +export enum FileExtension { + Aac = 'aac', + Ac3 = 'ac3', + Ai = 'ai', + Aif = 'aif', + Aifc = 'aifc', + Aiff = 'aiff', + Artboard = 'artboard', + Asc = 'asc', + Atom = 'atom', + Au = 'au', + Avi = 'avi', + Bcpio = 'bcpio', + Bin = 'bin', + Bmp = 'bmp', + Cdf = 'cdf', + Cgm = 'cgm', + Class = 'class', + Cpio = 'cpio', + Cpt = 'cpt', + Csh = 'csh', + Css = 'css', + Dcr = 'dcr', + Dif = 'dif', + Dir = 'dir', + Djv = 'djv', + Djvu = 'djvu', + Dll = 'dll', + Dmg = 'dmg', + Dms = 'dms', + Dng = 'dng', + Doc = 'doc', + Docx = 'docx', + Dotx = 'dotx', + Docm = 'docm', + Dotm = 'dotm', + Dtd = 'dtd', + Dv = 'dv', + Dvi = 'dvi', + Dxr = 'dxr', + Eps = 'eps', + Etx = 'etx', + Exe = 'exe', + Ez = 'ez', + Flac = 'flac', + Flv = 'flv', + Gif = 'gif', + Gram = 'gram', + Grxml = 'grxml', + Gtar = 'gtar', + Hdf = 'hdf', + Heif = 'heif', + Hqx = 'hqx', + Htm = 'htm', + Html = 'html', + Ice = 'ice', + Ico = 'ico', + Ics = 'ics', + Idml = 'idml', + Ief = 'ief', + Ifb = 'ifb', + Iges = 'iges', + Igs = 'igs', + Indd = 'indd', + Indt = 'indt', + Jnlp = 'jnlp', + Jp2 = 'jp2', + Jpe = 'jpe', + Jpeg = 'jpeg', + Jpg = 'jpg', + Js = 'js', + Kar = 'kar', + Latex = 'latex', + Lha = 'lha', + Lzh = 'lzh', + M3u = 'm3u', + M4a = 'm4a', + M4b = 'm4b', + M4p = 'm4p', + M4r = 'm4r', + M4u = 'm4u', + M4v = 'm4v', + Mac = 'mac', + Man = 'man', + Mathml = 'mathml', + Me = 'me', + Mesh = 'mesh', + Mid = 'mid', + Midi = 'midi', + Mif = 'mif', + Mkv = 'mkv', + Mov = 'mov', + Movie = 'movie', + Mp2 = 'mp2', + Mp3 = 'mp3', + Mp4 = 'mp4', + Mpe = 'mpe', + Mpeg = 'mpeg', + Mpg = 'mpg', + Mpga = 'mpga', + Ms = 'ms', + Msh = 'msh', + Mts = 'mts', + Mxu = 'mxu', + Nc = 'nc', + Oda = 'oda', + Ogg = 'ogg', + Pbm = 'pbm', + Pct = 'pct', + Pdb = 'pdb', + Pdf = 'pdf', + Pgm = 'pgm', + Pgn = 'pgn', + Pic = 'pic', + Pict = 'pict', + Png = 'png', + Pnm = 'pnm', + Pnt = 'pnt', + Pntg = 'pntg', + Ppm = 'ppm', + Ppt = 'ppt', + Pptx = 'pptx', + Potx = 'potx', + Ppsx = 'ppsx', + Ppam = 'ppam', + Pptm = 'pptm', + Potm = 'potm', + Ppsm = 'ppsm', + Ps = 'ps', + Psd = 'psd', + Qt = 'qt', + Qti = 'qti', + Qtif = 'qtif', + Ra = 'ra', + Ram = 'ram', + Ras = 'ras', + Rdf = 'rdf', + Rgb = 'rgb', + Rm = 'rm', + Roff = 'roff', + Rtf = 'rtf', + Rtx = 'rtx', + Sgm = 'sgm', + Sgml = 'sgml', + Sh = 'sh', + Shar = 'shar', + Silo = 'silo', + Sit = 'sit', + Skd = 'skd', + Sketch = 'sketch', + Skm = 'skm', + Skp = 'skp', + Skt = 'skt', + Smi = 'smi', + Smil = 'smil', + Snd = 'snd', + So = 'so', + Spl = 'spl', + Src = 'src', + Sv4cpio = 'sv4cpio', + Sv4crc = 'sv4crc', + Svg = 'svg', + Swf = 'swf', + T = 't', + Tar = 'tar', + Tcl = 'tcl', + Tex = 'tex', + Texi = 'texi', + Texinfo = 'texinfo', + Tif = 'tif', + Tiff = 'tiff', + Tr = 'tr', + Tsv = 'tsv', + Txt = 'txt', + Ustar = 'ustar', + Vcd = 'vcd', + Vrml = 'vrml', + Vxml = 'vxml', + Wav = 'wav', + Wbmp = 'wbmp', + Wbmxl = 'wbmxl', + Webm = 'webm', + Webp = 'webp', + Wml = 'wml', + Wmlc = 'wmlc', + Wmls = 'wmls', + Wmlsc = 'wmlsc', + Wmv = 'wmv', + Wrl = 'wrl', + Xbm = 'xbm', + Xht = 'xht', + Xhtml = 'xhtml', + Xls = 'xls', + Xml = 'xml', + Xpm = 'xpm', + Xsl = 'xsl', + Xlsx = 'xlsx', + Xltx = 'xltx', + Xlsm = 'xlsm', + Xltm = 'xltm', + Xlam = 'xlam', + Xlsb = 'xlsb', + Xslt = 'xslt', + Xul = 'xul', + Xwd = 'xwd', + Xyz = 'xyz', + Zip = 'zip', + Tpl = 'tpl', +} + +export enum FileType { + Audio = 'audio', + Documents = 'documents', + Images = 'images', + Videos = 'videos', + Templates = 'templates', +} + +export const FileExtensionSets: Record = { + Audio: [ + FileExtension.Aac, + FileExtension.Ac3, + FileExtension.Aif, + FileExtension.Aifc, + FileExtension.Aiff, + FileExtension.Flac, + FileExtension.M4a, + FileExtension.M4r, + FileExtension.Mp3, + FileExtension.Ogg, + FileExtension.Wav, + ], + Documents: [ + FileExtension.Doc, + FileExtension.Docx, + FileExtension.Dotx, + FileExtension.Pdf, + FileExtension.Potx, + FileExtension.Ppt, + FileExtension.Pptx, + FileExtension.Xls, + FileExtension.Xlsx, + FileExtension.Xltx, + ], + Images: [ + FileExtension.Ai, + FileExtension.Bmp, + FileExtension.Dng, + FileExtension.Eps, + FileExtension.Gif, + FileExtension.Heif, + FileExtension.Ico, + FileExtension.Jpeg, + FileExtension.Jpg, + FileExtension.Png, + FileExtension.Psd, + FileExtension.Svg, + FileExtension.Tif, + FileExtension.Tiff, + FileExtension.Webp, + ], + Videos: [ + FileExtension.Avi, + FileExtension.Flv, + FileExtension.M4v, + FileExtension.Mkv, + FileExtension.Mov, + FileExtension.Mp4, + FileExtension.Mpg, + FileExtension.Mts, + FileExtension.Webm, + FileExtension.Wmv, + ], + Templates: [ + FileExtension.Artboard, + FileExtension.Idml, + FileExtension.Indd, + FileExtension.Indt, + FileExtension.Sketch, + ], +}; + export { IconEnum } from '@frontify/fondue'; /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea1239d1a..7bb0d3606 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^5.0.6 version: 5.0.6 '@frontify/fondue': - specifier: 12.0.0-beta.382 - version: 12.0.0-beta.382(@babel/core@7.23.3)(@types/node@18.18.11)(@types/react-dom@18.2.16)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.3.5)(ts-node@10.9.1)(zustand@3.7.2) + specifier: 12.0.0-beta.396 + version: 12.0.0-beta.396(@babel/core@7.23.3)(@types/node@18.18.11)(@types/react-dom@18.2.16)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.3.5)(ts-node@10.9.1)(zustand@3.7.2) '@vitejs/plugin-react': specifier: ^4.2.0 version: 4.2.0(vite@4.5.0) @@ -228,7 +228,7 @@ importers: version: 5.3.2 vitest: specifier: ^0.34.6 - version: 0.34.6(@vitest/ui@0.34.6) + version: 0.34.6(@vitest/ui@0.34.6)(happy-dom@12.10.3) packages/guideline-blocks-settings: dependencies: @@ -245,11 +245,11 @@ importers: specifier: ^8.0.0 version: 8.0.0(@dnd-kit/core@6.1.0)(react@18.2.0) '@frontify/app-bridge': - specifier: workspace:^ + specifier: ^3.0.0 version: link:../app-bridge '@frontify/fondue': - specifier: 12.0.0-beta.382 - version: 12.0.0-beta.382(@babel/core@7.23.3)(@types/node@18.18.11)(@types/react-dom@18.2.16)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.3.5)(ts-node@10.9.1)(zustand@3.7.2) + specifier: 12.0.0-beta.396 + version: 12.0.0-beta.396(@babel/core@7.23.3)(@types/node@18.18.11)(@types/react-dom@18.2.16)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.3.5)(ts-node@10.9.1)(zustand@3.7.2) '@frontify/sidebar-settings': specifier: workspace:^ version: link:../sidebar-settings @@ -356,12 +356,9 @@ importers: packages/sidebar-settings: dependencies: - '@frontify/app-bridge': - specifier: workspace:^ - version: link:../app-bridge '@frontify/fondue': - specifier: 12.0.0-beta.382 - version: 12.0.0-beta.382(@babel/core@7.23.3)(@types/node@18.18.11)(@types/react-dom@18.2.16)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.3.5)(ts-node@10.9.1)(zustand@3.7.2) + specifier: 12.0.0-beta.396 + version: 12.0.0-beta.396(@babel/core@7.23.3)(@types/node@18.18.11)(@types/react-dom@18.2.16)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.3.5)(ts-node@10.9.1)(zustand@3.7.2) devDependencies: '@babel/core': specifier: ^7.23.3 @@ -451,10 +448,10 @@ packages: '@babel/helpers': 7.23.4 '@babel/parser': 7.23.4 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.4 + '@babel/traverse': 7.23.4(supports-color@5.5.0) '@babel/types': 7.23.4 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -563,7 +560,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.4 + '@babel/traverse': 7.23.4(supports-color@5.5.0) '@babel/types': 7.23.4 transitivePeerDependencies: - supports-color @@ -630,23 +627,6 @@ packages: '@babel/parser': 7.23.4 '@babel/types': 7.23.4 - /@babel/traverse@7.23.4: - resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.4 - '@babel/generator': 7.23.4 - '@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.23.4 - '@babel/types': 7.23.4 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/traverse@7.23.4(supports-color@5.5.0): resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} engines: {node: '>=6.9.0'} @@ -975,7 +955,7 @@ packages: react: '>=16.8.0' dependencies: '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) - '@dnd-kit/utilities': 3.2.1(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) react: 18.2.0 tslib: 2.6.1 @@ -998,7 +978,7 @@ packages: react: '>=16.8.0' dependencies: '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) - '@dnd-kit/utilities': 3.2.1(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) react: 18.2.0 tslib: 2.6.1 @@ -1014,14 +994,6 @@ packages: tslib: 2.6.1 dev: false - /@dnd-kit/utilities@3.2.1(react@18.2.0): - resolution: {integrity: sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.2.0 - tslib: 2.6.1 - /@dnd-kit/utilities@3.2.2(react@18.2.0): resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} peerDependencies: @@ -1255,7 +1227,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) espree: 9.6.1 globals: 13.19.0 ignore: 5.2.4 @@ -1475,16 +1447,16 @@ packages: - supports-color dev: true - /@frontify/fondue-tokens@3.3.0-next.7(ts-node@10.9.1): - resolution: {integrity: sha512-uMZqCxfQNEe6kwKJtk4/YaHzJvxIz6wb9Znb4xJ6/b4Qn67ZHnwTL3qd+zgIkjNXMv4IlUKMCdOHpS2Li58O8Q==} + /@frontify/fondue-tokens@3.3.0-next.8(ts-node@10.9.1): + resolution: {integrity: sha512-jVSWvrO2KQ0+enLksjLrvQ512j5LUgycLVzbDiwgIEhEkfne5RuJBjLOa1cWiGpzIj1458Br7cVzCykYFLeJ4g==} dependencies: postcss: 8.4.31 tailwindcss: 3.3.5(ts-node@10.9.1) transitivePeerDependencies: - ts-node - /@frontify/fondue@12.0.0-beta.382(@babel/core@7.23.3)(@types/node@18.18.11)(@types/react-dom@18.2.16)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.3.5)(ts-node@10.9.1)(zustand@3.7.2): - resolution: {integrity: sha512-0ffu0jmh46VTj99biHpJQSEfs44bph9xizpiYArWVQz5Jk+7MLSD4+wdfog9Ii3Czk43fUMKCeeu4yRcO9GFxw==} + /@frontify/fondue@12.0.0-beta.396(@babel/core@7.23.3)(@types/node@18.18.11)(@types/react-dom@18.2.16)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.3.5)(ts-node@10.9.1)(zustand@3.7.2): + resolution: {integrity: sha512-GoPFZPY8L9xRCYes92fFUX2knD/cxviD2AD56H3ykQfr+lsmuYgyPQ+1TEkem2PmnvwXk+GdytSU0r/7v1FX3Q==} engines: {node: '>=16'} peerDependencies: react: ^17 || ^18 @@ -1494,8 +1466,8 @@ packages: '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.1.0)(react@18.2.0) '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0)(react@18.2.0) - '@dnd-kit/utilities': 3.2.1(react@18.2.0) - '@frontify/fondue-tokens': 3.3.0-next.7(ts-node@10.9.1) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + '@frontify/fondue-tokens': 3.3.0-next.8(ts-node@10.9.1) '@popperjs/core': 2.11.8 '@react-aria/accordion': 3.0.0-alpha.17(react@18.2.0) '@react-aria/aria-modal-polyfill': 3.7.1(react@18.2.0) @@ -1591,7 +1563,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3707,7 +3679,7 @@ packages: '@typescript-eslint/type-utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.54.0 graphemer: 1.4.0 ignore: 5.2.4 @@ -3763,7 +3735,7 @@ packages: '@typescript-eslint/types': 6.12.0 '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.54.0 typescript: 5.3.2 transitivePeerDependencies: @@ -3819,7 +3791,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.54.0 ts-api-utils: 1.0.1(typescript@5.3.2) typescript: 5.3.2 @@ -3868,7 +3840,7 @@ packages: dependencies: '@typescript-eslint/types': 6.12.0 '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -6318,7 +6290,7 @@ packages: std-env: 3.3.3 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 - vitest: 0.34.6(@vitest/ui@0.34.6) + vitest: 0.34.6(@vitest/ui@0.34.6)(happy-dom@12.10.3) transitivePeerDependencies: - supports-color dev: true @@ -6365,7 +6337,7 @@ packages: pathe: 1.1.1 picocolors: 1.0.0 sirv: 2.0.3 - vitest: 0.34.6(@vitest/ui@0.34.6) + vitest: 0.34.6(@vitest/ui@0.34.6)(happy-dom@12.10.3) dev: true /@vitest/utils@0.34.6: @@ -6798,7 +6770,7 @@ packages: resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} dependencies: archy: 1.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) fastq: 1.13.0 transitivePeerDependencies: - supports-color @@ -7486,17 +7458,6 @@ packages: supports-color: 8.1.1 dev: true - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -8204,7 +8165,7 @@ packages: peerDependencies: eslint: '>=6.0.0' dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.54.0 lodash: 4.17.21 natural-compare: 1.4.0 @@ -8254,7 +8215,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -9502,7 +9463,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -10289,7 +10250,7 @@ packages: /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -10525,7 +10486,7 @@ packages: resolution: {integrity: sha512-96yVFal0c/W1lG7mmfRe7eO+hovrhJYd2obzzOZ90f6fjpeU/XNvd9cYHZKZAQJumDfhXgoTpkpJ9pvMj+hqHw==} engines: {node: '>= 10.13'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) json-stringify-safe: 5.0.1 propagate: 2.0.1 transitivePeerDependencies: @@ -12883,7 +12844,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 @@ -12983,72 +12944,6 @@ packages: optionalDependencies: fsevents: 2.3.2 - /vitest@0.34.6(@vitest/ui@0.34.6): - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.5 - '@types/chai-subset': 1.3.3 - '@types/node': 18.18.11 - '@vitest/expect': 0.34.6 - '@vitest/runner': 0.34.6 - '@vitest/snapshot': 0.34.6 - '@vitest/spy': 0.34.6 - '@vitest/ui': 0.34.6(vitest@0.34.6) - '@vitest/utils': 0.34.6 - acorn: 8.10.0 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.10 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.1 - pathe: 1.1.1 - picocolors: 1.0.0 - std-env: 3.3.3 - strip-literal: 1.0.1 - tinybench: 2.5.0 - tinypool: 0.7.0 - vite: 4.5.0(@types/node@18.18.11) - vite-node: 0.34.6(@types/node@18.18.11) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - /vitest@0.34.6(@vitest/ui@0.34.6)(happy-dom@12.10.3): resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} From 27dc8824556ef1d23025ea18280946925a40dc91 Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Thu, 25 Jan 2024 14:56:13 +0100 Subject: [PATCH 004/182] regen lock --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d408b0905..03813dcf0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -248,7 +248,7 @@ importers: specifier: ^8.0.0 version: 8.0.0(@dnd-kit/core@6.1.0)(react@18.2.0) '@frontify/app-bridge': - specifier: ^3.0.0 + specifier: ^3.0.0 || ^4.0.0-alpha.0 version: link:../app-bridge '@frontify/fondue': specifier: 12.0.0-beta.396 From a027b87593ae25d18cda62c4989920a16958d28c Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Thu, 25 Jan 2024 15:00:43 +0100 Subject: [PATCH 005/182] feat: remove deprecated functions on appBridgeBlock (#705) --- .changeset/stale-hairs-wash.md | 5 ++ packages/app-bridge/src/AppBridgeBlock.ts | 54 ------------------- .../src/tests/AppBridgeBlockStub.ts | 21 -------- 3 files changed, 5 insertions(+), 75 deletions(-) create mode 100644 .changeset/stale-hairs-wash.md diff --git a/.changeset/stale-hairs-wash.md b/.changeset/stale-hairs-wash.md new file mode 100644 index 000000000..0d8972a0f --- /dev/null +++ b/.changeset/stale-hairs-wash.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": major +--- + +feat: first alpha release, removes all deprecated functions on the AppBridgeBlock diff --git a/packages/app-bridge/src/AppBridgeBlock.ts b/packages/app-bridge/src/AppBridgeBlock.ts index 1e2918aab..fddf90fea 100644 --- a/packages/app-bridge/src/AppBridgeBlock.ts +++ b/packages/app-bridge/src/AppBridgeBlock.ts @@ -21,7 +21,6 @@ import type { CommandRegistry } from './registries/commands/CommandRegistry'; import type { EventRegistry } from './registries/events/EventRegistry'; import type { Asset, - AssetChooserOptions, BulkDownload, Color, ColorCreate, @@ -103,18 +102,6 @@ export interface AppBridgeBlock< callback: EventCallbackParameter, ): EventUnsubscribeFunction; - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.context('blockId').get()` instead. - */ - getBlockId(): number; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.context('sectionId').get()` instead. - */ - getSectionId(): number | undefined; - getBlockAssets(): Promise>; getAssetById(assetId: number): Promise; @@ -123,12 +110,6 @@ export interface AppBridgeBlock< addAssetIdsToBlockAssetKey(key: string, assetIds: number[]): Promise; - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.dispatch(openAssetViewer(token))` instead. - */ - openAssetViewer(token: string): void; - getBlockTemplates(): Promise>; addTemplateIdsToBlockTemplateKey(key: string, templateIds: number[]): Promise>; @@ -141,16 +122,6 @@ export interface AppBridgeBlock< getColors(): Promise; - /** - * @deprecated Use `getColors` instead. - */ - getAvailableColors(): Promise; - - /** - * @deprecated Use `getColorPalettes` instead. - */ - getAvailablePalettes(): Promise; - getColorPalettesWithColors(colorPaletteIds?: number[]): Promise; createColorPalette(colorPaletteCreate: ColorPaletteCreate): Promise; @@ -171,18 +142,6 @@ export interface AppBridgeBlock< updateBlockSettings>(newSettings: T): Promise; - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.dispatch(openTemplateChooser())` instead. - */ - openTemplateChooser(callback: (selectedTemplate: TemplateLegacy) => void): void; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.dispatch(closeTemplateChooser())` instead. - */ - closeTemplateChooser(): void; - getCurrentLoggedUser(): Promise; getBulkDownloadByToken(token: string): Promise; @@ -191,19 +150,6 @@ export interface AppBridgeBlock< getPrivacySettings(): PrivacySettings; - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.dispatch(openAssetChooser(options))` to open the asset chooser - * and `appBridge.subscribe('assetsChosen', callback)` to subscribe to the asset chosen event - */ - openAssetChooser(callback: (selectedAssets: Asset[]) => void, options?: AssetChooserOptions): void; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.dispatch(closeAssetChooser())` instead. - */ - closeAssetChooser(): void; - getProjectId(): number; getEditorState(): boolean; diff --git a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts index 79709f543..79a55a53e 100644 --- a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts +++ b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts @@ -24,8 +24,6 @@ export type getAppBridgeBlockStubProps = { blockSettings?: Record; blockAssets?: Record; editorState?: boolean; - openAssetChooser?: (callback: Parameters[0]) => void; - closeAssetChooser?: () => void; blockId?: number; sectionId?: number; projectId?: number; @@ -48,8 +46,6 @@ export const getAppBridgeBlockStub = ({ blockSettings = {}, blockAssets = {}, editorState = false, - openAssetChooser = () => null, - closeAssetChooser = () => null, blockId = BLOCK_ID, sectionId = SECTION_ID, projectId = PROJECT_ID, @@ -73,16 +69,9 @@ export const getAppBridgeBlockStub = ({ const addedTemplateIds: Record = {}; return { - getBlockId: stub>().returns(blockId), - getSectionId: stub>().returns(sectionId), getProjectId: stub>().returns(projectId), getEditorState: stub>().returns(editorState), getBlockSettings: stub>().resolves(window.blockSettings), - getAvailablePalettes: stub>().resolves([ - ColorPaletteDummy.with(678, 'Palette 1'), - ColorPaletteDummy.with(427, 'Palette 2'), - ColorPaletteDummy.with(679, 'Palette 3'), - ]), getColorPalettes: stub>().resolves([ ColorPaletteDummy.with(678, 'Palette 1'), ColorPaletteDummy.with(427, 'Palette 2'), @@ -110,7 +99,6 @@ export const getAppBridgeBlockStub = ({ ColorPaletteDummy.with(679, 'Palette 3'), ]), deleteColorPalette: stub>().resolves(), - getAvailableColors: stub>().resolves([]), getCurrentLoggedUser: stub>().resolves(user), downloadColorKit: stub>().returns( `/api/color/export/${PROJECT_ID}/zip/500`, @@ -118,12 +106,6 @@ export const getAppBridgeBlockStub = ({ getAssetById: stub>().callsFake((assetId) => Promise.resolve(AssetDummy.with(assetId)), ), - closeAssetChooser: stub>().callsFake(() => { - closeAssetChooser(); - }), - openAssetChooser: stub>().callsFake((callback) => { - openAssetChooser(callback); - }), getBlockAssets: stub>().callsFake(async () => { return Object.entries(blockAssets).reduce>((assetsDiff, [key, assets]) => { const addedAssetIdsList = addedAssetIds[key] ?? []; @@ -235,12 +217,9 @@ export const getAppBridgeBlockStub = ({ }), // TODO: Stub the following methods - closeTemplateChooser: stub>(), - openTemplateChooser: stub>(), createColor: stub>().resolves(ColorDummy.red()), deleteColor: stub>().resolves(), getTemplateById: stub>().resolves({} as TemplateLegacy), - openAssetViewer: stub>(), updateBlockSettings: stub>().resolves(), getAllDocuments: stub>().resolves(), getUngroupedDocuments: stub>().resolves(), From 618023875a3ed8b931cdfa93f3077d0aec279c9e Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Thu, 25 Jan 2024 15:17:32 +0100 Subject: [PATCH 006/182] chore: trying to fix peerDeps issue --- .changeset/config.json | 3 + package.json | 4 +- pnpm-lock.yaml | 175 ++++++++++++++++++++--------------------- 3 files changed, 89 insertions(+), 93 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index b063043cd..8a1151811 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -4,6 +4,9 @@ "@changesets/changelog-github", { "repo": "frontify/brand-sdk" } ], + "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { + "onlyUpdatePeerDependentsWhenOutOfRange": true + }, "commit": false, "access": "public", "baseBranch": "main", diff --git a/package.json b/package.json index a2f85573c..548776ea6 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "ci:publish": "pnpm build && changeset publish" }, "devDependencies": { - "@changesets/changelog-github": "^0.4.8", - "@changesets/cli": "^2.26.2", + "@changesets/changelog-github": "^0.5.0", + "@changesets/cli": "^2.27.1", "@cypress/vite-dev-server": "^5.0.6", "@frontify/fondue": "12.0.0-beta.396", "@vitejs/plugin-react": "^4.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 03813dcf0..ccb3a8630 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,11 @@ importers: .: devDependencies: '@changesets/changelog-github': - specifier: ^0.4.8 - version: 0.4.8 + specifier: ^0.5.0 + version: 0.5.0 '@changesets/cli': - specifier: ^2.26.2 - version: 2.26.2 + specifier: ^2.27.1 + version: 2.27.1 '@cypress/vite-dev-server': specifier: ^5.0.6 version: 5.0.6 @@ -683,14 +683,14 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@changesets/apply-release-plan@6.1.4: - resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} + /@changesets/apply-release-plan@7.0.0: + resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} dependencies: '@babel/runtime': 7.21.0 - '@changesets/config': 2.3.1 - '@changesets/get-version-range-type': 0.3.2 - '@changesets/git': 2.0.0 - '@changesets/types': 5.2.1 + '@changesets/config': 3.0.0 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 fs-extra: 7.0.1 @@ -701,61 +701,60 @@ packages: semver: 7.5.4 dev: true - /@changesets/assemble-release-plan@5.2.4: - resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} + /@changesets/assemble-release-plan@6.0.0: + resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} dependencies: '@babel/runtime': 7.21.0 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/types': 5.2.1 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 semver: 7.5.4 dev: true - /@changesets/changelog-git@0.1.14: - resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} + /@changesets/changelog-git@0.2.0: + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} dependencies: - '@changesets/types': 5.2.1 + '@changesets/types': 6.0.0 dev: true - /@changesets/changelog-github@0.4.8: - resolution: {integrity: sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw==} + /@changesets/changelog-github@0.5.0: + resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==} dependencies: - '@changesets/get-github-info': 0.5.2 - '@changesets/types': 5.2.1 + '@changesets/get-github-info': 0.6.0 + '@changesets/types': 6.0.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding dev: true - /@changesets/cli@2.26.2: - resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} + /@changesets/cli@2.27.1: + resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} hasBin: true dependencies: '@babel/runtime': 7.21.0 - '@changesets/apply-release-plan': 6.1.4 - '@changesets/assemble-release-plan': 5.2.4 - '@changesets/changelog-git': 0.1.14 - '@changesets/config': 2.3.1 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/get-release-plan': 3.0.17 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 - '@changesets/write': 0.2.3 + '@changesets/apply-release-plan': 7.0.0 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.0 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/get-release-plan': 4.0.0 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.0 '@manypkg/get-packages': 1.1.3 - '@types/is-ci': 3.0.0 '@types/semver': 7.5.0 ansi-colors: 4.1.3 chalk: 2.4.2 + ci-info: 3.8.0 enquirer: 2.3.6 external-editor: 3.1.0 fs-extra: 7.0.1 human-id: 1.0.2 - is-ci: 3.0.1 meow: 6.1.1 outdent: 0.5.0 p-limit: 2.3.0 @@ -767,36 +766,36 @@ packages: tty-table: 4.2.1 dev: true - /@changesets/config@2.3.1: - resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} + /@changesets/config@3.0.0: + resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} dependencies: - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/logger': 0.0.5 - '@changesets/types': 5.2.1 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/logger': 0.1.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.5 dev: true - /@changesets/errors@0.1.4: - resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} + /@changesets/errors@0.2.0: + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} dependencies: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph@1.3.6: - resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} + /@changesets/get-dependents-graph@2.0.0: + resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} dependencies: - '@changesets/types': 5.2.1 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 semver: 7.5.4 dev: true - /@changesets/get-github-info@0.5.2: - resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} + /@changesets/get-github-info@0.6.0: + resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} dependencies: dataloader: 1.4.0 node-fetch: 2.6.9 @@ -804,65 +803,65 @@ packages: - encoding dev: true - /@changesets/get-release-plan@3.0.17: - resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} + /@changesets/get-release-plan@4.0.0: + resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} dependencies: '@babel/runtime': 7.21.0 - '@changesets/assemble-release-plan': 5.2.4 - '@changesets/config': 2.3.1 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/config': 3.0.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 dev: true - /@changesets/get-version-range-type@0.3.2: - resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} + /@changesets/get-version-range-type@0.4.0: + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} dev: true - /@changesets/git@2.0.0: - resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} + /@changesets/git@3.0.0: + resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} dependencies: '@babel/runtime': 7.21.0 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 micromatch: 4.0.5 spawndamnit: 2.0.0 dev: true - /@changesets/logger@0.0.5: - resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} + /@changesets/logger@0.1.0: + resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} dependencies: chalk: 2.4.2 dev: true - /@changesets/parse@0.3.16: - resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} + /@changesets/parse@0.4.0: + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} dependencies: - '@changesets/types': 5.2.1 + '@changesets/types': 6.0.0 js-yaml: 3.14.1 dev: true - /@changesets/pre@1.0.14: - resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} + /@changesets/pre@2.0.0: + resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} dependencies: '@babel/runtime': 7.21.0 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 dev: true - /@changesets/read@0.5.9: - resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} + /@changesets/read@0.6.0: + resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} dependencies: '@babel/runtime': 7.21.0 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/parse': 0.3.16 - '@changesets/types': 5.2.1 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 @@ -872,15 +871,15 @@ packages: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} dev: true - /@changesets/types@5.2.1: - resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} + /@changesets/types@6.0.0: + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} dev: true - /@changesets/write@0.2.3: - resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} + /@changesets/write@0.3.0: + resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} dependencies: '@babel/runtime': 7.21.0 - '@changesets/types': 5.2.1 + '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 @@ -3980,12 +3979,6 @@ packages: resolution: {integrity: sha512-nDKoaKJYbnn1MZxUY0cA1bPmmgZbg0cTq7Rh13d0KWYNOiKbqoR+2d89SnRPszGh7ROzSwZ/GOjZ4jPbmmZ6Eg==} dev: true - /@types/is-ci@3.0.0: - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} - dependencies: - ci-info: 3.8.0 - dev: true - /@types/is-hotkey@0.1.7: resolution: {integrity: sha512-yB5C7zcOM7idwYZZ1wKQ3pTfjA9BbvFqRWvKB46GFddxnJtHwi/b9y84ykQtxQPg5qhdpg4Q/kWU3EGoCTmLzQ==} From b023b91e5340b38c4eeaf4004e6eb8054e9cce48 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jan 2024 15:24:24 +0100 Subject: [PATCH 007/182] chore: release packages (alpha) (#716) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 35b8a0ceb..6b5fadfc2 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -7,5 +7,7 @@ "@frontify/guideline-blocks-settings": "0.29.16", "@frontify/sidebar-settings": "0.8.1" }, - "changesets": [] + "changesets": [ + "stale-hairs-wash" + ] } diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index d6916cc95..0e7c5cf89 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.0 + +### Major Changes + +- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock + ## 3.1.0 ### Minor Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index f60f37a4b..492ff98c8 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "3.1.0", + "version": "4.0.0-alpha.0", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From d12f408fac77b8d9d09e764033fa2f2e81bab8a3 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Fri, 26 Jan 2024 11:15:22 +0100 Subject: [PATCH 008/182] ci: add latest 3 to matrix (#718) * ci: add latest 3 and first 4 to matrix * see them run * adds fail fast again * remove 4.0.0-alpha.0 from matrix * revert run change --- .../workflows/guideline-blocks-continuous-integration.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/guideline-blocks-continuous-integration.yml b/.github/workflows/guideline-blocks-continuous-integration.yml index c0ad4c0c6..3ee2d9274 100644 --- a/.github/workflows/guideline-blocks-continuous-integration.yml +++ b/.github/workflows/guideline-blocks-continuous-integration.yml @@ -22,7 +22,7 @@ jobs: strategy: fail-fast: false matrix: - app-bridge-version: ["3.0.0", "workspace:^"] + app-bridge-version: ["3.0.0", "^3.0.0", "workspace:^"] steps: - name: Checkout default branch @@ -67,7 +67,7 @@ jobs: strategy: fail-fast: false matrix: - app-bridge-version: ["3.0.0", "workspace:^"] + app-bridge-version: ["3.0.0", "^3.0.0", "workspace:^"] steps: - name: Checkout current commit @@ -119,7 +119,7 @@ jobs: strategy: fail-fast: false matrix: - app-bridge-version: ["3.0.0", "workspace:^"] + app-bridge-version: ["3.0.0", "^3.0.0", "workspace:^"] steps: - name: Checkout current commit From 5ea66a79bac131f5b34f1a1bf60fbe81add6b17f Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Thu, 8 Feb 2024 16:31:39 +0100 Subject: [PATCH 009/182] feat: AppBridgeThemes update context to include template (#742) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci: add alpha (first and latest) to the matrix (#717) * ci: add alpha (latest and earliest) to the matrix * add change to see them run * revert commit before * adds fail-fast: false again * see them run again * revert change for running * fix: useAttachments use the correct functions, for adding and removing (#720) * fix: useAttachments use the correct functions, for adding and removing * add changeset * Update .changeset/afraid-trees-mate.md Co-authored-by: Sam Creasey * refactor: rename assetId to attachmentKey within useAttachments --------- Co-authored-by: Sam Creasey * chore: release packages (#721) Co-authored-by: github-actions[bot] * feat: add label option to getBackgroundSettings (#722) * add label option to background settings * add changeset * add default prop * chore: release packages (#723) Signed-off-by: Sam Creasey Co-authored-by: github-actions[bot] * fix: properly handle paths on windows (#719) * fix: properly handle paths on windows * Add changeset * Update .changeset/five-apples-impress.md Co-authored-by: Rafael Giezendanner --------- Co-authored-by: Rafael Giezendanner * fix: nested template literals and typo (#726) * feat: add deploy token (#724) * feat: add the option to deploy with token * fix: make token optional * fix: remove duplicated token retrival * fix: more informative error message * fix: standardize placeholders in cli messages * fix: add option info to changelog * fix: simplify option retrival and assignment * test: getUser with token * fix: cli commands brackets (#727) * fix: cli commands brackets * fix option brackets * chore: release packages (#725) Co-authored-by: github-actions[bot] * fix: add missing `types` entry in exports list (#728) * fix: add missing `types` entry in exports list * chore: update description of changeset Co-authored-by: Rafael Giezendanner --------- Co-authored-by: Rafael Giezendanner * chore: release packages (#729) Co-authored-by: github-actions[bot] * feat: add theme template context to appBridgeThemes context (#731) * feat: add theme template context to appBridgeThemes context * cleaning * update template context * changeset * ci: adjust CODEOWNERS due to team name changes (#738) * ci: adjust CODEOWNERS due to team name changes * adjust ecosystem to api and sdk * ci: fix changeset onlyUpdatePeerDepsWhenOutOfRange (#737) * feat: add platform-app package and adjust codeowners (#733) * feat: add platform-app package and adjust codeowners * fix: typing * chore: adjust for review * chore: adjust scripts * feat: add Readme * chore: fix module exports * chore: update pnpm-lock.yaml * Update packages/platform-app/README.md Co-authored-by: Samuel Alev * Update packages/platform-app/README.md Co-authored-by: Samuel Alev * chore: adjust to workspace * chore: fix team names * chore: use combined team for types * chore: use combined team for types * chore: update naming --------- Co-authored-by: Samuel Alev * chore: update lock file (#739) * chore: add empty test (#740) * chore: release packages (#735) Co-authored-by: github-actions[bot] * add changeset --------- Signed-off-by: Sam Creasey Co-authored-by: Rafael Giezendanner Co-authored-by: Sam Creasey Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: Florian Gächter <818120+floriangaechter@users.noreply.github.com> Co-authored-by: Samuel Alev Co-authored-by: Julian Iff --- .changeset/kind-fishes-flash.md | 5 + ...uideline-blocks-continuous-integration.yml | 1 - CODEOWNERS | 253 +++++++++--------- packages/app-bridge/CHANGELOG.md | 6 + packages/app-bridge/src/AppBridgeTheme.ts | 7 + packages/cli/CHANGELOG.md | 14 + packages/cli/package.json | 2 +- packages/cli/src/commands/deploy.ts | 36 ++- packages/cli/src/commands/login.ts | 6 +- packages/cli/src/index.ts | 10 +- packages/cli/src/utils/user.ts | 9 +- packages/cli/tests/utils/user.spec.ts | 8 +- .../guideline-blocks-settings/CHANGELOG.md | 18 ++ .../guideline-blocks-settings/package.json | 3 +- .../src/hooks/useAttachments.tsx | 25 +- .../src/settings/background.ts | 21 +- packages/platform-app/.eslintrc.js | 27 ++ packages/platform-app/.gitignore | 3 + packages/platform-app/.prettierrc | 5 + packages/platform-app/README.md | 38 +++ packages/platform-app/package.json | 50 ++++ packages/platform-app/src/index.ts | 3 + .../platform-app/src/platformApps.spec.ts | 7 + packages/platform-app/src/platformApps.ts | 58 ++++ packages/platform-app/tsconfig.json | 21 ++ packages/platform-app/tsconfig.node.json | 10 + packages/platform-app/vite.config.ts | 46 ++++ pnpm-lock.yaml | 227 ++++++++-------- 28 files changed, 621 insertions(+), 298 deletions(-) create mode 100644 .changeset/kind-fishes-flash.md create mode 100644 packages/platform-app/.eslintrc.js create mode 100644 packages/platform-app/.gitignore create mode 100644 packages/platform-app/.prettierrc create mode 100644 packages/platform-app/README.md create mode 100644 packages/platform-app/package.json create mode 100644 packages/platform-app/src/index.ts create mode 100644 packages/platform-app/src/platformApps.spec.ts create mode 100644 packages/platform-app/src/platformApps.ts create mode 100644 packages/platform-app/tsconfig.json create mode 100644 packages/platform-app/tsconfig.node.json create mode 100644 packages/platform-app/vite.config.ts diff --git a/.changeset/kind-fishes-flash.md b/.changeset/kind-fishes-flash.md new file mode 100644 index 000000000..185052be7 --- /dev/null +++ b/.changeset/kind-fishes-flash.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: add context.template to AppBridgeTheme diff --git a/.github/workflows/guideline-blocks-continuous-integration.yml b/.github/workflows/guideline-blocks-continuous-integration.yml index 3ee2d9274..06f262890 100644 --- a/.github/workflows/guideline-blocks-continuous-integration.yml +++ b/.github/workflows/guideline-blocks-continuous-integration.yml @@ -23,7 +23,6 @@ jobs: fail-fast: false matrix: app-bridge-version: ["3.0.0", "^3.0.0", "workspace:^"] - steps: - name: Checkout default branch uses: actions/checkout@v4 diff --git a/CODEOWNERS b/CODEOWNERS index f8256cae3..79d41bab9 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,158 +1,159 @@ # App Bridge -packages/app-bridge/src/types @Frontify/ecosystem +packages/app-bridge/src/types @Frontify/api-and-sdk ## App Bridge Errors -packages/app-bridge/src/errors/HttpClientError.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration -packages/app-bridge/src/errors/InitializationError.ts @Frontify/integration -packages/app-bridge/src/errors/NotifyError.ts @Frontify/integration -packages/app-bridge/src/errors/TimeoutReachedError.ts @Frontify/integration -packages/app-bridge/src/errors/ValidationError.ts @Frontify/integration +packages/app-bridge/src/errors/HttpClientError.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations +packages/app-bridge/src/errors/InitializationError.ts @Frontify/apps-and-integrations +packages/app-bridge/src/errors/NotifyError.ts @Frontify/apps-and-integrations +packages/app-bridge/src/errors/TimeoutReachedError.ts @Frontify/apps-and-integrations +packages/app-bridge/src/errors/ValidationError.ts @Frontify/apps-and-integrations ## App Bridge Helpers -packages/app-bridge/src/helpers/ @Frontify/guidelines-navigation-themes - -## React Hooks -packages/app-bridge/src/react/useAssetBulkDownload.spec.tsx @Frontify/guidelines-one -packages/app-bridge/src/react/useAssetBulkDownload.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useAssetChooser.spec.tsx @Frontify/guidelines-one -packages/app-bridge/src/react/useAssetChooser.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useAssetUpload.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useAssetViewer.spec.tsx @Frontify/guidelines-one -packages/app-bridge/src/react/useAssetViewer.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useBlockAssets.spec.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useBlockAssets.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useBlockSettings.spec.tsx @Frontify/guidelines-one -packages/app-bridge/src/react/useBlockSettings.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useBlockTemplates.spec.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useBlockTemplates.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useBrandportalLink.spec.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useBrandportalLink.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useCategorizedDocumentPages.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useCategorizedDocumentPages.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useColorPalettes.spec.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useColorPalettes.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useColors.spec.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useColors.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useCoverPage.spec.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useCoverPage.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useDocumentCategories.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useDocumentCategories.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useDocumentGroups.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useDocumentGroups.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useDocumentPageTargets.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useDocumentPageTargets.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useDocumentSection.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useDocumentTargets.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useDocumentTargets.tsx @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useEditorState.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useFileInput.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useFileUpload.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useGroupedDocuments.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useGroupedDocuments.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useGuidelineActions.spec.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useGuidelineActions.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useLanguage.spec.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useLanguage.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useNavigationManager.spec.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useNavigationManager.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/usePageTemplateSettings.spec.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/usePageTemplateSettings.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/usePlatformAppBridge.spec.ts @Frontify/integration -packages/app-bridge/src/react/usePlatformAppBridge.ts @Frontify/integration -packages/app-bridge/src/react/usePrivacySettings.spec.ts @Frontify/guidelines-one -packages/app-bridge/src/react/usePrivacySettings.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useReadyForPrint.spec.tsx @Frontify/guidelines-one -packages/app-bridge/src/react/useReadyForPrint.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useTemplateAssets.spec.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useTemplateAssets.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useTemplateChooser.spec.tsx @Frontify/guidelines-one -packages/app-bridge/src/react/useTemplateChooser.ts @Frontify/guidelines-one -packages/app-bridge/src/react/useThemeAssets.spec.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useThemeAssets.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useThemeSettings.spec.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useThemeSettings.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useUncategorizedDocumentPages.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useUncategorizedDocumentPages.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useUngroupedDocuments.spec.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/react/useUngroupedDocuments.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/helpers/ @Frontify/themes-and-navigation + +## React Hooks +packages/app-bridge/src/react/useAssetBulkDownload.spec.tsx @Frontify/content-and-blocks +packages/app-bridge/src/react/useAssetBulkDownload.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useAssetChooser.spec.tsx @Frontify/content-and-blocks +packages/app-bridge/src/react/useAssetChooser.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useAssetUpload.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useAssetViewer.spec.tsx @Frontify/content-and-blocks +packages/app-bridge/src/react/useAssetViewer.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useBlockAssets.spec.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useBlockAssets.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useBlockSettings.spec.tsx @Frontify/content-and-blocks +packages/app-bridge/src/react/useBlockSettings.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useBlockTemplates.spec.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useBlockTemplates.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useBrandportalLink.spec.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useBrandportalLink.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useCategorizedDocumentPages.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useCategorizedDocumentPages.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useColorPalettes.spec.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useColorPalettes.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useColors.spec.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useColors.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useCoverPage.spec.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useCoverPage.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useDocumentCategories.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useDocumentCategories.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useDocumentGroups.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useDocumentGroups.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useDocumentPageTargets.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useDocumentPageTargets.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useDocumentSection.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useDocumentTargets.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useDocumentTargets.tsx @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useEditorState.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useFileInput.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useFileUpload.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useGroupedDocuments.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useGroupedDocuments.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useGuidelineActions.spec.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useGuidelineActions.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useLanguage.spec.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useLanguage.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useNavigationManager.spec.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useNavigationManager.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/usePageTemplateSettings.spec.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/usePageTemplateSettings.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/usePlatformAppBridge.spec.ts @Frontify/apps-and-integrations +packages/app-bridge/src/react/usePlatformAppBridge.ts @Frontify/apps-and-integrations +packages/app-bridge/src/react/usePrivacySettings.spec.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/usePrivacySettings.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useReadyForPrint.spec.tsx @Frontify/content-and-blocks +packages/app-bridge/src/react/useReadyForPrint.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useTemplateAssets.spec.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useTemplateAssets.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useTemplateChooser.spec.tsx @Frontify/content-and-blocks +packages/app-bridge/src/react/useTemplateChooser.ts @Frontify/content-and-blocks +packages/app-bridge/src/react/useThemeAssets.spec.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useThemeAssets.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useThemeSettings.spec.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useThemeSettings.ts @Frontify/themes-and-navigation +packages/app-bridge/src/react/useUncategorizedDocumentPages.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useUncategorizedDocumentPages.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useUngroupedDocuments.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/react/useUngroupedDocuments.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation ### App Bridge registries api -packages/app-bridge/src/registries/api/CreateAsset.ts @Frontify/integration -packages/app-bridge/src/registries/api/CreateAsset.spec.ts @Frontify/integration -packages/app-bridge/src/registries/api/GetAssetResourceInformation.ts @Frontify/integration -packages/app-bridge/src/registries/api/GetAssetResourceInformation.spec.ts @Frontify/integration -packages/app-bridge/src/registries/api/GetAssetBulkDownloadToken.ts @Frontify/guidelines-one -packages/app-bridge/src/registries/api/GetCurrentUser.ts @Frontify/guidelines-one @Frontify/integration @Frontify/guidelines-navigation-themes -packages/app-bridge/src/registries/api/GetCurrentUser.spec.ts @Frontify/guidelines-one @Frontify/integration @Frontify/guidelines-navigation-themes +packages/app-bridge/src/registries/api/CreateAsset.ts @Frontify/apps-and-integrations +packages/app-bridge/src/registries/api/CreateAsset.spec.ts @Frontify/apps-and-integrations +packages/app-bridge/src/registries/api/GetAssetResourceInformation.ts @Frontify/apps-and-integrations +packages/app-bridge/src/registries/api/GetAssetResourceInformation.spec.ts @Frontify/apps-and-integrations +packages/app-bridge/src/registries/api/GetAssetBulkDownloadToken.ts @Frontify/content-and-blocks +packages/app-bridge/src/registries/api/GetCurrentUser.ts @Frontify/content-and-blocks @Frontify/apps-and-integrations @Frontify/themes-and-navigation +packages/app-bridge/src/registries/api/GetCurrentUser.spec.ts @Frontify/content-and-blocks @Frontify/apps-and-integrations @Frontify/themes-and-navigation ### App Bridge registries commands -packages/app-bridge/src/registries/commands/AssetChooser.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes -packages/app-bridge/src/registries/commands/AssetViewer.ts @Frontify/guidelines-one -packages/app-bridge/src/registries/commands/Connection.ts @Frontify/integration -packages/app-bridge/src/registries/commands/DownloadAsset.ts @Frontify/guidelines-one -packages/app-bridge/src/registries/commands/NavigationManager.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/registries/commands/NewPublication.ts @Frontify/guidelines-one -packages/app-bridge/src/registries/commands/TemplateChooser.ts @Frontify/guidelines-one +packages/app-bridge/src/registries/commands/AssetChooser.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/registries/commands/AssetViewer.ts @Frontify/content-and-blocks +packages/app-bridge/src/registries/commands/Connection.ts @Frontify/apps-and-integrations +packages/app-bridge/src/registries/commands/DownloadAsset.ts @Frontify/content-and-blocks +packages/app-bridge/src/registries/commands/NavigationManager.ts @Frontify/themes-and-navigation +packages/app-bridge/src/registries/commands/NewPublication.ts @Frontify/content-and-blocks +packages/app-bridge/src/registries/commands/TemplateChooser.ts @Frontify/content-and-blocks ### App Bridge registries events -packages/app-bridge/src/registries/events/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/app-bridge/src/registries/events/ @Frontify/content-and-blocks @Frontify/themes-and-navigation ### App Bridge registries verbs -packages/app-bridge/src/registries/verbs/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration +packages/app-bridge/src/registries/verbs/ @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations ## App Bridge repositories -packages/app-bridge/src/repositories/ @Frontify/guidelines-one +packages/app-bridge/src/repositories/ @Frontify/content-and-blocks ## App Bridge Tests -packages/app-bridge/src/tests/AppBridgeBlockStub.ts @Frontify/guidelines-one -packages/app-bridge/src/tests/AppBridgePlatformAppStub.ts @Frontify/integration -packages/app-bridge/src/tests/AppBridgeThemeStub.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/tests/withAppBridgeBlockStubs.tsx @Frontify/guidelines-one -packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx @Frontify/guidelines-navigation-themes +packages/app-bridge/src/tests/AppBridgeBlockStub.ts @Frontify/content-and-blocks +packages/app-bridge/src/tests/AppBridgePlatformAppStub.ts @Frontify/apps-and-integrations +packages/app-bridge/src/tests/AppBridgeThemeStub.ts @Frontify/themes-and-navigation +packages/app-bridge/src/tests/withAppBridgeBlockStubs.tsx @Frontify/content-and-blocks +packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx @Frontify/themes-and-navigation ## App Bridge Utilities -packages/app-bridge/src/utilities/hash.ts @Frontify/integration -packages/app-bridge/src/utilities/httpClient.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration -packages/app-bridge/src/utilities/MessageBus.ts @Frontify/integration -packages/app-bridge/src/utilities/MessageBus.spec.ts @Frontify/integration -packages/app-bridge/src/utilities/notify.ts @Frontify/integration -packages/app-bridge/src/utilities/object.spec.ts @Frontify/guidelines-one -packages/app-bridge/src/utilities/object.ts @Frontify/guidelines-one -packages/app-bridge/src/utilities/queryParams.spec.ts @Frontify/integration -packages/app-bridge/src/utilities/queryParams.ts @Frontify/integration -packages/app-bridge/src/utilities/subscribe.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration +packages/app-bridge/src/utilities/hash.ts @Frontify/apps-and-integrations +packages/app-bridge/src/utilities/httpClient.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations +packages/app-bridge/src/utilities/MessageBus.ts @Frontify/apps-and-integrations +packages/app-bridge/src/utilities/MessageBus.spec.ts @Frontify/apps-and-integrations +packages/app-bridge/src/utilities/notify.ts @Frontify/apps-and-integrations +packages/app-bridge/src/utilities/object.spec.ts @Frontify/content-and-blocks +packages/app-bridge/src/utilities/object.ts @Frontify/content-and-blocks +packages/app-bridge/src/utilities/queryParams.spec.ts @Frontify/apps-and-integrations +packages/app-bridge/src/utilities/queryParams.ts @Frontify/apps-and-integrations +packages/app-bridge/src/utilities/subscribe.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations ## App Bridge Worker -packages/app-bridge/src/worker/ @Frontify/guidelines-one +packages/app-bridge/src/worker/ @Frontify/content-and-blocks ## App Bridge Interfaces -packages/app-bridge/src/AppBridge.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration -packages/app-bridge/src/AppBridgeBlock.ts @Frontify/guidelines-one -packages/app-bridge/src/AppBridgeCreateAsset.spec.ts @Frontify/integration -packages/app-bridge/src/AppBridgeCreateAsset.ts @Frontify/integration -packages/app-bridge/src/AppBridgePlatformApp.spec.ts @Frontify/integration -packages/app-bridge/src/AppBridgePlatformApp.ts @Frontify/integration -packages/app-bridge/src/AppBridgeTheme.ts @Frontify/guidelines-navigation-themes -packages/app-bridge/src/window.d.ts @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration +packages/app-bridge/src/AppBridge.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations +packages/app-bridge/src/AppBridgeBlock.ts @Frontify/content-and-blocks +packages/app-bridge/src/AppBridgeCreateAsset.spec.ts @Frontify/apps-and-integrations +packages/app-bridge/src/AppBridgeCreateAsset.ts @Frontify/apps-and-integrations +packages/app-bridge/src/AppBridgePlatformApp.spec.ts @Frontify/apps-and-integrations +packages/app-bridge/src/AppBridgePlatformApp.ts @Frontify/apps-and-integrations +packages/app-bridge/src/AppBridgeTheme.ts @Frontify/themes-and-navigation +packages/app-bridge/src/window.d.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations # CLI -packages/cli/src/commands/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration -packages/cli/src/errors/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration -packages/cli/src/utils/ @Frontify/guidelines-one @Frontify/guidelines-navigation-themes @Frontify/integration +packages/cli/src/commands/ @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations +packages/cli/src/errors/ @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations +packages/cli/src/utils/ @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations ## Templates -packages/cli/templates/content-block-css @Frontify/guidelines-one -packages/cli/templates/content-block-css-modules @Frontify/guidelines-one -packages/cli/templates/content-block-tailwind @Frontify/guidelines-one -packages/cli/templates/platform-app-css @Frontify/integration -packages/cli/templates/platform-app-css-modules @Frontify/integration -packages/cli/templates/platform-app-tailwind @Frontify/integration - - +packages/cli/templates/content-block-css @Frontify/content-and-blocks +packages/cli/templates/content-block-css-modules @Frontify/content-and-blocks +packages/cli/templates/content-block-tailwind @Frontify/content-and-blocks +packages/cli/templates/platform-app-css @Frontify/apps-and-integrations +packages/cli/templates/platform-app-css-modules @Frontify/apps-and-integrations +packages/cli/templates/platform-app-tailwind @Frontify/apps-and-integrations + +# Platform Apps types +packages/platform-app @Frontify/apps-and-integrations # Guideline Blocks Settings -packages/guideline-blocks-settings @Frontify/guidelines-one +packages/guideline-blocks-settings @Frontify/content-and-blocks # Sidebar Settings -packages/sidebar-settings @Frontify/guidelines-one @Frontify/guidelines-navigation-themes +packages/sidebar-settings @Frontify/content-and-blocks @Frontify/themes-and-navigation CODEOWNERS @Frontify/architecture diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 0e7c5cf89..e615c699c 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 3.2.0 + +### Minor Changes + +- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context + ## 4.0.0-alpha.0 ### Major Changes diff --git a/packages/app-bridge/src/AppBridgeTheme.ts b/packages/app-bridge/src/AppBridgeTheme.ts index f1cf6065e..1db101f62 100644 --- a/packages/app-bridge/src/AppBridgeTheme.ts +++ b/packages/app-bridge/src/AppBridgeTheme.ts @@ -61,6 +61,12 @@ export type ThemeCommand = CommandNameValidator< Pick >; +export type TemplateContext = { templateId: string; type: ThemeTemplate } & ( + | { type: 'documentPage'; document: Document; documentPage: DocumentPage } + | { type: 'library'; document: Document } + | { type: 'cover'; coverPage: CoverPage } +); + export type ThemeState = { settings: Record; assets: Record; @@ -77,6 +83,7 @@ export type ThemeContext = { isPublicLink: boolean; isAuthenticated: boolean; languages: Language[]; + template: TemplateContext | null; }; export type ThemeEvent = EventNameValidator< diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 0c8657ffc..457460c08 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,19 @@ # @frontify/frontify-cli +## 5.6.0 + +### Minor Changes + +- [#724](https://github.com/Frontify/brand-sdk/pull/724) [`b6c65ba`](https://github.com/Frontify/brand-sdk/commit/b6c65bafa134d8de07fbf990f27462f3005ea744) Thanks [@floriangaechter](https://github.com/floriangaechter)! - feat: add the option to deploy with token + - `-i, --instance `: url of the Frontify instance + - `-t, --token `: the access token to authenticate with the Frontify instance + +### Patch Changes + +- [#719](https://github.com/Frontify/brand-sdk/pull/719) [`4a676dc`](https://github.com/Frontify/brand-sdk/commit/4a676dcccc90dd56ba63cc75b97eea03b534177e) Thanks [@floriangaechter](https://github.com/floriangaechter)! - fix: Path handling on windows + +- [#726](https://github.com/Frontify/brand-sdk/pull/726) [`935c591`](https://github.com/Frontify/brand-sdk/commit/935c591b83865e3a4eaa5bab472861d6a5656a4d) Thanks [@ragi96](https://github.com/ragi96)! - fix: nested template literals and also some typos + ## 5.5.9 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 7b45402ad..90f58a996 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "author": "Frontify Developers ", - "version": "5.5.9", + "version": "5.6.0", "bin": { "frontify-cli": "dist/index.mjs" }, diff --git a/packages/cli/src/commands/deploy.ts b/packages/cli/src/commands/deploy.ts index c7c47df2c..1a04d505b 100644 --- a/packages/cli/src/commands/deploy.ts +++ b/packages/cli/src/commands/deploy.ts @@ -23,6 +23,8 @@ type Options = { dryRun?: boolean; noVerify?: boolean; openInBrowser?: boolean; + token?: string; + instance?: string; }; export type AppManifest = { @@ -34,8 +36,7 @@ export type AppManifest = { }; const makeFilesDict = async (glob: string, ignoreGlobs?: string[]) => { - const folderFiles = await fastGlob(join(glob, '**'), { ignore: ignoreGlobs, dot: true }); - + const folderFiles = await fastGlob(`${fastGlob.convertPathToPattern(glob)}/**`, { ignore: ignoreGlobs, dot: true }); const folderFilenames = folderFiles.map((filePath) => filePath.replace(`${glob}/`, '')); return folderFilenames.reduce((stack, filename, index) => { @@ -50,19 +51,25 @@ const SOURCE_FILE_BLOCK_LIST = ['.git', 'node_modules', 'dist', '.vscode', '.ide export const createDeployment = async ( entryFile: string, distPath: string, - { dryRun = false, noVerify = false, openInBrowser = false }: Options, + { dryRun = false, noVerify = false, openInBrowser = false, token, instance }: Options, compile: ({ projectPath, entryFile, outputName }: CompilerOptions) => Promise, ): Promise => { try { let user: UserInfo | undefined; - const instanceUrl = Configuration.get('instanceUrl') as string | undefined; - if (!instanceUrl) { - Logger.error(`You are not logged in, you can use the command ${pc.bold('frontify-cli login')}.`); + const instanceUrl = instance || Configuration.get('instanceUrl'); + const accessToken = token || Configuration.get('tokens.access_token'); + + if (!accessToken || !instanceUrl) { + Logger.error( + `You are currently not logged in. You can use the command ${pc.bold( + 'frontify-cli login', + )} to log in, or pass --token= --instance= to the deploy command.`, + ); process.exit(-1); } if (!dryRun) { - user = await getUser(instanceUrl); + user = await getUser(instanceUrl, token); user && Logger.info(`You are logged in as ${user.name} (${instanceUrl}).`); } @@ -91,18 +98,23 @@ export const createDeployment = async ( process.exit(-1); } - const buildFilesToIgnore = BUILD_FILE_BLOCK_LIST.map((path) => join(projectPath, path)); + const buildFilesToIgnore = BUILD_FILE_BLOCK_LIST.map((path) => + fastGlob.convertPathToPattern(projectPath + path), + ); const gitignoreEntries = readFileLinesAsArray(join(projectPath, '.gitignore')).filter( (entry) => entry !== 'manifest.json', ); const sourceFilesToIgnore = [...gitignoreEntries, ...SOURCE_FILE_BLOCK_LIST].map((path) => - join(projectPath, path), + fastGlob.convertPathToPattern(`${projectPath}/${path}`), ); const request = { - build_files: await makeFilesDict(join(projectPath, distPath), buildFilesToIgnore), - source_files: await makeFilesDict(join(projectPath), sourceFilesToIgnore), + build_files: await makeFilesDict( + fastGlob.convertPathToPattern(`${projectPath}/${distPath}`), + buildFilesToIgnore, + ), + source_files: await makeFilesDict(fastGlob.convertPathToPattern(projectPath), sourceFilesToIgnore), }; if (!dryRun) { @@ -110,8 +122,6 @@ export const createDeployment = async ( const httpClient = new HttpClient(instanceUrl); - const accessToken = Configuration.get('tokens.access_token'); - try { await httpClient.put(`/api/marketplace/app/${appId}`, request, { headers: { Authorization: `Bearer ${accessToken}` }, diff --git a/packages/cli/src/commands/login.ts b/packages/cli/src/commands/login.ts index 5c07e2663..697d12ece 100644 --- a/packages/cli/src/commands/login.ts +++ b/packages/cli/src/commands/login.ts @@ -52,7 +52,7 @@ export class Authenticator { Configuration.set('instanceUrl', this.instanceUrl); const user = await getUser(this.instanceUrl); - user && Logger.success(`${`Welcome back ${user.name} (${this.instanceUrl})!`}`); + user && Logger.success(`Welcome back ${user.name} (${this.instanceUrl})!`); process.exit(0); }); @@ -70,7 +70,7 @@ export class Authenticator { this.randomChallenge = randomCodeChallenge.data; } catch (error) { const errorText = error instanceof Error ? error.message : String(error); - throw new Error(`An error occured while getting the random challenge: ${errorText}`); + throw new Error(`An error occurred while getting the random challenge: ${errorText}`); } } @@ -109,7 +109,7 @@ export class Authenticator { return tokens; } catch (error) { const errorText = error instanceof Error ? error.message : String(error); - throw new Error(`An error occured while getting tokens: ${errorText}`); + throw new Error(`An error occurred while getting tokens: ${errorText}`); } } } diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 43edad026..e078859d2 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -20,7 +20,7 @@ import pkg from '../package.json'; const cli = cac(pkg.name.split('/')[1]); cli.command('login [instanceUrl]', 'log in to a Frontify instance') - .option('-i, --instance [instanceUrl]', '[string] url of the Frontify instance') + .option('-i, --instance ', '[string] url of the Frontify instance') .option('-p, --port ', '[number] port for the oauth service', { default: process.env.PORT || 5600, }) @@ -80,7 +80,7 @@ cli.command('serve', 'serve the app locally') .option('--allowExternal, --allow-external', '[boolean] allow external IPs to access the server', { default: false, }) - .option('--appType [appType], --app-type', '[string] specify app type. Overrides manifest values') + .option('--appType , --app-type', '[string] specify app type. Overrides manifest values') .action(async (options) => { const manifest = reactiveJson(join(process.cwd(), 'manifest.json')); const appType = options.appType || manifest.appType; @@ -123,6 +123,8 @@ cli.command('deploy', 'deploy the app to the marketplace') .option('--noVerify, --no-verify', '[boolean] disable the linting and typechecking', { default: false }) .option('--open', '[boolean] open the marketplace app page', { default: false }) .option('--appType [appType], --app-type', '[string] specify app type. Overrides manifest values') + .option('-i, --instance ', '[string] url of the Frontify instance') + .option('-t, --token ', '[string] the access token') .action(async (options) => { const manifest = reactiveJson(join(process.cwd(), 'manifest.json')); const appType = options.appType || manifest.appType; @@ -135,6 +137,8 @@ cli.command('deploy', 'deploy the app to the marketplace') dryRun: options.dryRun, noVerify: options.noVerify, openInBrowser: options.open, + instance: options.instance, + token: options.token, }, compilePlatformApp, ); @@ -146,6 +150,8 @@ cli.command('deploy', 'deploy the app to the marketplace') dryRun: options.dryRun, noVerify: options.noVerify, openInBrowser: options.open, + instance: options.instance, + token: options.token, }, compileBlock, ); diff --git a/packages/cli/src/utils/user.ts b/packages/cli/src/utils/user.ts index 8f03079c9..e0995cc8b 100644 --- a/packages/cli/src/utils/user.ts +++ b/packages/cli/src/utils/user.ts @@ -10,10 +10,9 @@ export interface UserInfo { email: string; } -export const getUser = async (instanceUrl: string): Promise => { +export const getUser = async (instanceUrl: string, token?: string): Promise => { const httpClient = new HttpClient(instanceUrl); - - const accessToken = Configuration.get('tokens.access_token'); + const accessToken = token || Configuration.get('tokens.access_token'); try { const user = await httpClient.post<{ data: { currentUser: UserInfo } }>( @@ -23,7 +22,9 @@ export const getUser = async (instanceUrl: string): Promise { - beforeAll(() => { + beforeEach(() => { const testMockApi = nock(`https://${TEST_BASE_URL}`); testMockApi.post('/graphql', { query: '{ currentUser { email name } }' }).reply(200, GET_USER_API_RESPONSE); }); @@ -37,5 +37,9 @@ describe('User utils', () => { expect(await getUser(TEST_BASE_URL)).toEqual(DUMMY_TOKENS); Configuration.set('tokens', oldTokens); }); + + test('should get user object with token', async () => { + expect(await getUser(TEST_BASE_URL, 'some_access_token')).toEqual(DUMMY_TOKENS); + }); }); }); diff --git a/packages/guideline-blocks-settings/CHANGELOG.md b/packages/guideline-blocks-settings/CHANGELOG.md index 61dfc2f63..738b4ea01 100644 --- a/packages/guideline-blocks-settings/CHANGELOG.md +++ b/packages/guideline-blocks-settings/CHANGELOG.md @@ -1,5 +1,23 @@ # @frontify/guideline-blocks-settings +## 0.31.5 + +### Patch Changes + +- [#728](https://github.com/Frontify/brand-sdk/pull/728) [`9de8764`](https://github.com/Frontify/brand-sdk/commit/9de87643decdbff847c2e29b9aa895773c8321b3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - fix: Add missing path for types in the export list + +## 0.31.4 + +### Patch Changes + +- [#722](https://github.com/Frontify/brand-sdk/pull/722) [`975f9c8`](https://github.com/Frontify/brand-sdk/commit/975f9c86409db9041ebcfa02ad8f684b4e5bc24c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: add "label" to customizable options for getBackgroundSettings + +## 0.31.3 + +### Patch Changes + +- [#720](https://github.com/Frontify/brand-sdk/pull/720) [`7b8a520`](https://github.com/Frontify/brand-sdk/commit/7b8a5209df3b2116cf83838e6da2aae3f83fa33f) Thanks [@ragi96](https://github.com/ragi96)! - fix(Attachments): use the appropriate function for removing and adding asset + ## 0.31.2 ### Patch Changes diff --git a/packages/guideline-blocks-settings/package.json b/packages/guideline-blocks-settings/package.json index cbc0f2599..79b79f7ee 100644 --- a/packages/guideline-blocks-settings/package.json +++ b/packages/guideline-blocks-settings/package.json @@ -1,6 +1,6 @@ { "name": "@frontify/guideline-blocks-settings", - "version": "0.31.2", + "version": "0.31.5", "description": "Provides types and helpers for the guideline block development", "sideEffects": false, "main": "dist/index.umd.js", @@ -16,6 +16,7 @@ }, "exports": { ".": { + "types": "./dist/index.d.ts", "import": "./dist/index.es.js", "require": "./dist/index.umd.js" }, diff --git a/packages/guideline-blocks-settings/src/hooks/useAttachments.tsx b/packages/guideline-blocks-settings/src/hooks/useAttachments.tsx index 62ba4f789..70f803fa9 100644 --- a/packages/guideline-blocks-settings/src/hooks/useAttachments.tsx +++ b/packages/guideline-blocks-settings/src/hooks/useAttachments.tsx @@ -5,24 +5,19 @@ import { type ReactNode, createContext, useContext } from 'react'; import { type BlockProps } from '../index'; -export const useAttachments = (appBridge: AppBridgeBlock, assetId: string) => { - const { blockAssets, updateAssetIdsFromKey } = useBlockAssets(appBridge); - const attachments = blockAssets?.[assetId] || []; +export const useAttachments = (appBridge: AppBridgeBlock, attachmentKey: string) => { + const { blockAssets, addAssetIdsToKey, deleteAssetIdsFromKey, updateAssetIdsFromKey } = useBlockAssets(appBridge); + const attachments = blockAssets?.[attachmentKey] || []; const onAttachmentsAdd = async (newAssets: Asset[]) => { - const newAssetIds = attachments.map((attachment) => attachment.id); - for (const asset of newAssets) { - newAssetIds.push(asset.id); - } - await updateAssetIdsFromKey(assetId, newAssetIds); + await addAssetIdsToKey( + attachmentKey, + newAssets.map((asset) => asset.id), + ); }; const onAttachmentDelete = async (assetToDelete: Asset) => { - const newAssetIds = attachments - .filter((attachment) => attachment.id !== assetToDelete.id) - .map((attachment) => attachment.id); - - await updateAssetIdsFromKey(assetId, newAssetIds); + await deleteAssetIdsFromKey(attachmentKey, [assetToDelete.id]); }; const onAttachmentReplace = async (attachmentToReplace: Asset, newAsset: Asset) => { @@ -30,13 +25,13 @@ export const useAttachments = (appBridge: AppBridgeBlock, assetId: string) => { attachment.id === attachmentToReplace.id ? newAsset.id : attachment.id, ); - await updateAssetIdsFromKey(assetId, newAssetIds); + await updateAssetIdsFromKey(attachmentKey, newAssetIds); }; const onAttachmentsSorted = async (assets: Asset[]) => { const newAssetIds = assets.map((asset) => asset.id); - await updateAssetIdsFromKey(assetId, newAssetIds); + await updateAssetIdsFromKey(attachmentKey, newAssetIds); }; return { diff --git a/packages/guideline-blocks-settings/src/settings/background.ts b/packages/guideline-blocks-settings/src/settings/background.ts index 7571bde2c..0e20805d7 100644 --- a/packages/guideline-blocks-settings/src/settings/background.ts +++ b/packages/guideline-blocks-settings/src/settings/background.ts @@ -4,6 +4,15 @@ import { Color } from '@frontify/fondue'; import { BACKGROUND_COLOR_DEFAULT_VALUE } from './defaultValues'; import { SettingBlock } from '../'; +type BackgroundSettingsType = { + id?: string; + defaultValue?: boolean; + defaultColor?: Color; + preventDefaultColor?: boolean; + switchLabel?: string; + label?: string; +}; + /** * Returns background settings: background switch, background color * @@ -12,29 +21,23 @@ import { SettingBlock } from '../'; * @param options.defaultValue Default value for the background switch * @param options.defaultColor Default value for the background color * @param options.preventDefaultColor Whether the background color should be empty by default + * @param options.label Label for the background input * @param options.switchLabel Label for the background switch * @returns {SettingBlock} Returns background settings */ -type BackgroundSettingsType = { - id?: string; - defaultValue?: boolean; - defaultColor?: Color; - preventDefaultColor?: boolean; - switchLabel?: string; -}; - export const getBackgroundSettings = (options?: BackgroundSettingsType): SettingBlock => { const hasId = options?.id ? `hasBackground${options.id}` : 'hasBackground'; const colorId = options?.id ? `backgroundColor${options.id}` : 'backgroundColor'; const defaultColor = !!options?.preventDefaultColor ? undefined : options?.defaultColor || BACKGROUND_COLOR_DEFAULT_VALUE; + const label = options?.label ? options.label : 'Background'; const switchLabel = options?.switchLabel ? options.switchLabel : undefined; return { id: hasId, - label: 'Background', + label, type: 'switch', switchLabel, defaultValue: !!options?.defaultValue, diff --git a/packages/platform-app/.eslintrc.js b/packages/platform-app/.eslintrc.js new file mode 100644 index 000000000..366dbc098 --- /dev/null +++ b/packages/platform-app/.eslintrc.js @@ -0,0 +1,27 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +module.exports = { + extends: ['@frontify/eslint-config-react'], + plugins: ['notice'], + settings: { + react: { + version: 'detect', + }, + }, + overrides: [ + { + files: ['*.js', '*.ts', '*.tsx'], + rules: { + 'notice/notice': [ + 'error', + { + template: '/* (c) Copyright Frontify Ltd., all rights reserved. */\n\n', + messages: { + whenFailedToMatch: 'No Frontify copyright header set.', + }, + }, + ], + }, + }, + ], +}; diff --git a/packages/platform-app/.gitignore b/packages/platform-app/.gitignore new file mode 100644 index 000000000..007ea8a7c --- /dev/null +++ b/packages/platform-app/.gitignore @@ -0,0 +1,3 @@ +dist +node_modules +coverage diff --git a/packages/platform-app/.prettierrc b/packages/platform-app/.prettierrc new file mode 100644 index 000000000..ca0c14e7c --- /dev/null +++ b/packages/platform-app/.prettierrc @@ -0,0 +1,5 @@ +{ + "printWidth": 120, + "tabWidth": 4, + "singleQuote": true +} diff --git a/packages/platform-app/README.md b/packages/platform-app/README.md new file mode 100644 index 000000000..1bcc2fa8b --- /dev/null +++ b/packages/platform-app/README.md @@ -0,0 +1,38 @@ +# Platform App Types + +## Code Structure +Defines the App and gives typing for the settings + +```ts +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { defineApp } from '@frontify/platform-app'; +import { settings } from './settings'; + +export default defineApp({ + app: App, + settings, +}); +``` + +## Settings Definition + +Provides settings types for Platform Apps + +## Example + +```ts +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { defineSettings } from '@frontify/platform-app'; + +export const settings = defineSettings({ + credentials: [ + { + type: 'input', + id: 'api-token', + label: 'API Token', + }, + ], +}); +``` diff --git a/packages/platform-app/package.json b/packages/platform-app/package.json new file mode 100644 index 000000000..80fe5293a --- /dev/null +++ b/packages/platform-app/package.json @@ -0,0 +1,50 @@ +{ + "name": "@frontify/platform-app", + "version": "0.0.5", + "description": "Provides the types for the Apps", + "sideEffects": false, + "main": "dist/platform-app.umd.js", + "unpkg": "dist/platform-app.umd.js", + "jsdelivr": "dist/platform-app.umd.js", + "module": "dist/platform-app.js", + "types": "dist/index.d.ts", + "author": "Frontify Developers ", + "repository": { + "type": "git", + "url": "https://github.com/Frontify/brand-sdk", + "directory": "packages/platform-app" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "build": "vite build", + "lint": "eslint .", + "lint:fix": "eslint --fix .", + "prettier": "prettier --check .", + "prettier:fix": "prettier --write .", + "typecheck": "tsc --noEmit", + "test": "vitest run", + "test:watch": "vitest" + }, + "devDependencies": { + "@frontify/app-bridge": "workspace:^", + "@frontify/eslint-config-react": "0.16.1", + "@types/react": "^18.2.39", + "eslint": "^8.54.0", + "eslint-plugin-notice": "^0.9.10", + "prettier": "^3.1.0", + "typescript": "^5.3.2", + "vite": "^5.0.4", + "vite-plugin-dts": "^3.6.3", + "vitest": "^0.34.6", + "react": "^18", + "react-dom": "^18" + }, + "dependencies": { + "@frontify/sidebar-settings": "workspace:^" + }, + "peerDependencies": { + "@frontify/app-bridge": "^3.0.0 || ^4.0.0-alpha.0" + } +} diff --git a/packages/platform-app/src/index.ts b/packages/platform-app/src/index.ts new file mode 100644 index 000000000..f57f30f88 --- /dev/null +++ b/packages/platform-app/src/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './platformApps'; diff --git a/packages/platform-app/src/platformApps.spec.ts b/packages/platform-app/src/platformApps.spec.ts new file mode 100644 index 000000000..fc4495da9 --- /dev/null +++ b/packages/platform-app/src/platformApps.spec.ts @@ -0,0 +1,7 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, it } from 'vitest'; + +describe('Platform App', () => { + it('Define App', async () => {}); +}); diff --git a/packages/platform-app/src/platformApps.ts b/packages/platform-app/src/platformApps.ts new file mode 100644 index 000000000..4bdf5f343 --- /dev/null +++ b/packages/platform-app/src/platformApps.ts @@ -0,0 +1,58 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import type { AppBridgePlatformApp } from '@frontify/app-bridge'; +import type { + ChecklistBlock as ChecklistBlockSettings, + ChoicesType as ChoicesTypeSettings, + ColorInputBlock as ColorInputBlockSettings, + DropdownBlock as DropdownBlockSettings, + InputBlock as InputBlockSettings, + MultiInputBlock as MultiInputBlockSettings, + NotificationBlock as NotificationBlockSettings, + SectionHeadingBlock as SectionHeadingBlockSettings, + SegmentedControlsBlock as SegmentedControlsBlockSettings, + SettingBlock as SettingBlockSettings, + SimpleSettingBlock as SimpleSettingBlockSettings, + SwitchBlock as SwitchBlockSettings, + TemplateInputBlock as TemplateInputBlockSettings, + TextareaBlock as TextareaBlockSettings, + ValueOrPromisedValue as ValueOrPromisedValueSettings, +} from '@frontify/sidebar-settings'; +import { FC } from 'react'; + +export * from '@frontify/sidebar-settings'; + +export type ChecklistBlock = ChecklistBlockSettings; +export type ChoicesType = ChoicesTypeSettings; +export type ColorInputBlock = ColorInputBlockSettings; +export type DropdownBlock = DropdownBlockSettings; +export type InputBlock = InputBlockSettings; +export type MultiInputBlock = MultiInputBlockSettings; +export type NotificationBlock = NotificationBlockSettings; +export type SectionHeadingBlock = SectionHeadingBlockSettings; +export type SegmentedControlsBlock = SegmentedControlsBlockSettings; +export type SettingBlock = SettingBlockSettings; +export type SimpleSettingBlock = SimpleSettingBlockSettings; +export type SwitchBlock = SwitchBlockSettings; +export type TemplateInputBlock = TemplateInputBlockSettings; +export type TextareaBlock = TextareaBlockSettings; +export type ValueOrPromisedValue = ValueOrPromisedValueSettings; + +export type PlatformAppSettingsStructureExport = { [customSectionName: string]: SettingBlock[] }; + +export type PlatformAppConfigExport = { + app: FC; + settings: PlatformAppSettingsStructureExport; +}; + +/** + * Type helper to export a platform-app, accepts a direct {@link PlatformAppConfigExport} object. + */ +export const defineApp = (config: PlatformAppConfigExport): PlatformAppConfigExport => config; + +/** + * Type helper to export platform-app settings structure, accepts a direct {@link PlatformAppSettingsStructureExport} object. + */ +export const defineSettings = ( + settingsStructure: PlatformAppSettingsStructureExport, +): PlatformAppSettingsStructureExport => settingsStructure; diff --git a/packages/platform-app/tsconfig.json b/packages/platform-app/tsconfig.json new file mode 100644 index 000000000..93c25ccd3 --- /dev/null +++ b/packages/platform-app/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src/**/*"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/packages/platform-app/tsconfig.node.json b/packages/platform-app/tsconfig.node.json new file mode 100644 index 000000000..1aa365d69 --- /dev/null +++ b/packages/platform-app/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true + }, + "include": ["vite.config.ts", "package.json"] +} diff --git a/packages/platform-app/vite.config.ts b/packages/platform-app/vite.config.ts new file mode 100644 index 000000000..6b9a9e9db --- /dev/null +++ b/packages/platform-app/vite.config.ts @@ -0,0 +1,46 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { defineConfig } from 'vitest/config'; +import dts from 'vite-plugin-dts'; +import react from '@vitejs/plugin-react'; +import { resolve } from 'path'; +import { dependencies as dependenciesMap } from './package.json'; + +const dependencies = Object.keys(dependenciesMap); + +export default defineConfig({ + plugins: [react(), dts({ insertTypesEntry: true, rollupTypes: true })], + build: { + lib: { + entry: resolve(__dirname, 'src/index.ts'), + }, + sourcemap: true, + minify: true, + rollupOptions: { + external: [...dependencies], + output: [ + { + name: 'PlatformApp', + format: 'es', + preserveModules: true, + preserveModulesRoot: 'src', + }, + { + name: 'PlatformApp', + format: 'umd', + }, + { + name: 'PlatformApp', + format: 'cjs', + }, + ], + }, + }, + test: { + coverage: { + all: true, + reporter: ['text', 'lcov'], + include: ['src/**/*.ts', 'src/**/*.tsx'], + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ccb3a8630..8c19addd3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -357,6 +357,49 @@ importers: specifier: ^0.34.6 version: 0.34.6(happy-dom@12.10.3) + packages/platform-app: + dependencies: + '@frontify/sidebar-settings': + specifier: workspace:^ + version: link:../sidebar-settings + devDependencies: + '@frontify/app-bridge': + specifier: workspace:^ + version: link:../app-bridge + '@frontify/eslint-config-react': + specifier: 0.16.1 + version: 0.16.1(eslint@8.56.0)(prettier@3.1.0)(react@18.2.0)(typescript@5.3.3) + '@types/react': + specifier: ^18.2.39 + version: 18.2.48 + eslint: + specifier: ^8.54.0 + version: 8.56.0 + eslint-plugin-notice: + specifier: ^0.9.10 + version: 0.9.10(eslint@8.56.0) + prettier: + specifier: ^3.1.0 + version: 3.1.0 + react: + specifier: ^18 + version: 18.2.0 + react-dom: + specifier: ^18 + version: 18.2.0(react@18.2.0) + typescript: + specifier: ^5.3.2 + version: 5.3.3 + vite: + specifier: ^5.0.4 + version: 5.0.12(@types/node@18.18.11) + vite-plugin-dts: + specifier: ^3.6.3 + version: 3.7.2(@types/node@18.18.11)(typescript@5.3.3)(vite@5.0.12) + vitest: + specifier: ^0.34.6 + version: 0.34.6(happy-dom@12.10.3) + packages/sidebar-settings: dependencies: '@frontify/fondue': @@ -604,7 +647,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.23.6 - dev: true /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} @@ -648,8 +690,8 @@ packages: '@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.23.4 - '@babel/types': 7.23.4 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: @@ -1614,12 +1656,12 @@ packages: eslint-plugin-html: 7.1.0 eslint-plugin-jsonc: 2.9.0(eslint@8.56.0) eslint-plugin-lodash: 7.4.0(eslint@8.56.0) - eslint-plugin-markdown: 3.0.0(eslint@8.56.0) + eslint-plugin-markdown: 3.0.1(eslint@8.56.0) eslint-plugin-no-only-tests: 3.1.0 eslint-plugin-node: 11.1.0(eslint@8.56.0) eslint-plugin-prettier: 5.0.0(eslint-config-prettier@8.8.0)(eslint@8.56.0)(prettier@3.1.0) eslint-plugin-promise: 6.1.1(eslint@8.56.0) - eslint-plugin-unicorn: 48.0.0(eslint@8.56.0) + eslint-plugin-unicorn: 48.0.1(eslint@8.56.0) eslint-plugin-yml: 1.8.0(eslint@8.56.0) prettier: 3.1.0 yaml-eslint-parser: 1.2.2 @@ -1680,8 +1722,8 @@ packages: typescript: '>=5.0.0' dependencies: '@frontify/eslint-config-basic': 0.18.0(eslint@8.56.0)(prettier@3.1.0) - '@typescript-eslint/eslint-plugin': 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.2.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.12.0(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 prettier: 3.1.0 typescript: 5.3.3 @@ -3926,8 +3968,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 '@types/babel__generator': 7.6.7 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.4 @@ -4155,8 +4197,8 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} + /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -4167,17 +4209,16 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.1 - '@typescript-eslint/parser': 6.2.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/type-utils': 6.2.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.2.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/parser': 6.12.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.12.0 + '@typescript-eslint/type-utils': 6.12.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.12.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.12.0 debug: 4.3.4(supports-color@5.5.0) eslint: 8.56.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 - natural-compare-lite: 1.4.0 semver: 7.5.4 ts-api-utils: 1.0.1(typescript@5.3.3) typescript: 5.3.3 @@ -4206,8 +4247,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.2.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} + /@typescript-eslint/parser@6.12.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4216,10 +4257,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/scope-manager': 6.12.0 + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.12.0 debug: 4.3.4(supports-color@5.5.0) eslint: 8.56.0 typescript: 5.3.3 @@ -4235,14 +4276,6 @@ packages: '@typescript-eslint/visitor-keys': 6.12.0 dev: true - /@typescript-eslint/scope-manager@6.2.0: - resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 - dev: true - /@typescript-eslint/type-utils@6.12.0(eslint@8.54.0)(typescript@5.3.2): resolution: {integrity: sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4263,8 +4296,8 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@6.2.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} + /@typescript-eslint/type-utils@6.12.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4273,8 +4306,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.2.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.12.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4(supports-color@5.5.0) eslint: 8.56.0 ts-api-utils: 1.0.1(typescript@5.3.3) @@ -4288,11 +4321,6 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/types@6.2.0: - resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - /@typescript-eslint/typescript-estree@6.12.0(typescript@5.3.2): resolution: {integrity: sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4314,8 +4342,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.2.0(typescript@5.3.3): - resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==} + /@typescript-eslint/typescript-estree@6.12.0(typescript@5.3.3): + resolution: {integrity: sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -4323,8 +4351,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/visitor-keys': 6.12.0 debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 @@ -4354,8 +4382,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.2.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} + /@typescript-eslint/utils@6.12.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4363,9 +4391,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.12.0 + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.3) eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: @@ -4381,14 +4409,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.2.0: - resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.2.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@udecode/plate-alignment@21.5.0(@babel/core@7.23.3)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): resolution: {integrity: sha512-gbcMYwxsLQryXiSvWNgW9VEOndPz9YJ0bgr641jZLQ66uMHADzb2tV585arefKqLifYnxLmXXGijCR3x42jJew==} peerDependencies: @@ -6745,15 +6765,15 @@ packages: dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - magic-string: 0.30.1 + istanbul-reports: 3.1.6 + magic-string: 0.30.5 picocolors: 1.0.0 - std-env: 3.3.3 + std-env: 3.7.0 test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 + v8-to-istanbul: 9.2.0 vitest: 0.34.6(@vitest/ui@0.34.6) transitivePeerDependencies: - supports-color @@ -6811,13 +6831,13 @@ packages: dependencies: '@vitest/utils': 1.2.1 p-limit: 5.0.0 - pathe: 1.1.1 + pathe: 1.1.2 dev: true /@vitest/snapshot@0.34.6: resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - magic-string: 0.30.1 + magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 29.6.1 dev: true @@ -6826,7 +6846,7 @@ packages: resolution: {integrity: sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q==} dependencies: magic-string: 0.30.5 - pathe: 1.1.1 + pathe: 1.1.2 pretty-format: 29.7.0 dev: true @@ -6875,9 +6895,9 @@ packages: /@vitest/utils@0.34.6: resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} dependencies: - diff-sequences: 29.4.3 - loupe: 2.3.6 - pretty-format: 29.6.1 + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 dev: true /@vitest/utils@1.2.1: @@ -7806,10 +7826,6 @@ packages: uint8array-extras: 0.3.0 dev: false - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -8183,11 +8199,6 @@ packages: /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8632,25 +8643,25 @@ packages: lodash: 4.17.21 dev: true - /eslint-plugin-markdown@3.0.0(eslint@8.56.0): - resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} + /eslint-plugin-markdown@3.0.1(eslint@8.54.0): + resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.56.0 + eslint: 8.54.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.54.0): + /eslint-plugin-markdown@3.0.1(eslint@8.56.0): resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.54.0 + eslint: 8.56.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color @@ -8806,17 +8817,17 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-unicorn@48.0.0(eslint@8.56.0): - resolution: {integrity: sha512-8fk/v3p1ro34JSVDBEmtOq6EEQRpMR0iTir79q69KnXFZ6DJyPkT3RAi+ZoTqhQMdDSpGh8BGR68ne1sP5cnAA==} + /eslint-plugin-unicorn@48.0.1(eslint@8.54.0): + resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.44.0' dependencies: '@babel/helper-validator-identifier': 7.22.15 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) ci-info: 3.8.0 clean-regexp: 1.0.0 - eslint: 8.56.0 + eslint: 8.54.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -8830,17 +8841,17 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unicorn@48.0.1(eslint@8.54.0): + /eslint-plugin-unicorn@48.0.1(eslint@8.56.0): resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.44.0' dependencies: - '@babel/helper-validator-identifier': 7.22.15 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@babel/helper-validator-identifier': 7.22.20 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) ci-info: 3.8.0 clean-regexp: 1.0.0 - eslint: 8.54.0 + eslint: 8.56.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -9360,7 +9371,7 @@ packages: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 rimraf: 3.0.2 dev: true @@ -10269,11 +10280,6 @@ packages: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: true - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - /istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -10299,14 +10305,6 @@ packages: - supports-color dev: true - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - dev: true - /istanbul-reports@3.1.6: resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} engines: {node: '>=8'} @@ -11229,7 +11227,7 @@ packages: resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} dependencies: acorn: 8.10.0 - pathe: 1.1.1 + pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.1.2 dev: true @@ -11386,10 +11384,6 @@ packages: hasBin: true dev: true - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -11869,7 +11863,7 @@ packages: dependencies: jsonc-parser: 3.2.0 mlly: 1.5.0 - pathe: 1.1.1 + pathe: 1.1.2 dev: true /pluralize@8.0.0: @@ -13838,15 +13832,6 @@ packages: /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} - engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.18 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 - dev: true - /v8-to-istanbul@9.2.0: resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} @@ -13914,7 +13899,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.5.0(@types/node@18.18.11) + vite: 5.0.12(@types/node@18.18.11) transitivePeerDependencies: - '@types/node' - less @@ -13933,7 +13918,7 @@ packages: dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@5.5.0) - pathe: 1.1.1 + pathe: 1.1.2 picocolors: 1.0.0 vite: 5.0.12(@types/node@18.18.11) transitivePeerDependencies: From 434435cf1a4a69d9442fd6629b051debc156cb30 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Feb 2024 16:48:30 +0100 Subject: [PATCH 010/182] chore: release packages (alpha) (#743) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 6b5fadfc2..f80b675f0 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -5,9 +5,11 @@ "@frontify/app-bridge": "3.0.0", "@frontify/frontify-cli": "5.5.3", "@frontify/guideline-blocks-settings": "0.29.16", - "@frontify/sidebar-settings": "0.8.1" + "@frontify/sidebar-settings": "0.8.1", + "@frontify/platform-app": "0.0.5" }, "changesets": [ + "kind-fishes-flash", "stale-hairs-wash" ] } diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index e615c699c..15bd693ec 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.1 + +### Patch Changes + +- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme + ## 3.2.0 ### Minor Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 492ff98c8..a7b945fe4 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.0", + "version": "4.0.0-alpha.1", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From 50937f2170f5ee1eab05726e141fc0e932f71865 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Wed, 14 Feb 2024 14:39:59 +0100 Subject: [PATCH 011/182] feat: merge main to dev to release the next alpha of the AppBridge (#753) * refactor: link selector pass functions (#736) * refactor: link selector not passing appBridge * get rid of hook * add changeset * fix: instance error * improve syntax * remove useless call * chore: release packages (#745) Co-authored-by: github-actions[bot] * chore: update tailwind to 3.4.1 (#747) * update tailwind to 3.4.1 * Add changeset * Update .changeset/brown-carpets-matter.md Co-authored-by: Rafael Giezendanner --------- Co-authored-by: Rafael Giezendanner * feat: adjust serve and compile command (#732) * feat: adjust serve and compile command * Create fresh-ducks-dance.md * chore: adjust for comments * chore: add configFile: false to serve * chore: remove unused import * chore: remove logger * chore: remove generating a lib * Update packages/cli/src/utils/compiler.ts Co-authored-by: Samuel Alev * Update packages/cli/src/commands/serve.ts Co-authored-by: Samuel Alev * chore: remove globals * chore: remove build step * feat: add new template structure * feat: adjust platform-app templates * feat: add multiple build steps with temporary directory to store settings * feat: use index.ts file to create settings bundle * chore: update temaplte html * chore: update templates with defineApp * chore: use sync cals * chore: adjust templates * chore: update packages * chore: update tempaltes with external settings.ts * chore: add emptyOutDir to false and remove cleanup code * chore: remove function variable and adjust output dir of first pass * compiler.ts aktualisieren * chore: update to iife format * chore: fix linter and rename settings output file * feat: adjust tests and settings.js bundle --------- Co-authored-by: Samuel Alev * feat: use setAssetIdsByBlockAssetKey for updating assets (#730) * feat: use setAssetIdsByBlockAssetKey for updating assets * test: add stub for setAssetIdsByBlockAssetKey * refactor: stub and improve tests * improve hook * chore: add Changeset * fix: response type * Update .changeset/spicy-crabs-hope.md --------- Co-authored-by: ragi96 Co-authored-by: Daniel Fulop * chore: release packages (#748) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: Sam Creasey Co-authored-by: Julian Iff Co-authored-by: Samuel Alev Co-authored-by: Luca Hochreutener <34413733+hochreutenerl@users.noreply.github.com> Co-authored-by: Daniel Fulop --- .changeset/pink-bugs-behave.md | 5 ++ package.json | 2 +- packages/app-bridge/CHANGELOG.md | 5 ++ packages/app-bridge/src/AppBridgeBlock.ts | 2 +- .../src/react/useBlockAssets.spec.ts | 21 +++--- .../app-bridge/src/react/useBlockAssets.ts | 7 +- .../src/registries/api/ApiMethodRegistry.ts | 5 ++ .../api/SetAssetIdsByBlockAssetKey.spec.ts | 20 +++++ .../api/SetAssetIdsByBlockAssetKey.ts | 15 ++++ .../app-bridge/src/registries/api/index.ts | 1 + .../src/tests/AppBridgeBlockStub.ts | 27 ++++--- packages/cli/CHANGELOG.md | 6 ++ packages/cli/package.json | 2 +- packages/cli/src/commands/serve.ts | 7 +- packages/cli/src/utils/compiler.ts | 48 +++++++++++- .../platform-app-css-modules/index.html | 9 ++- .../platform-app-css-modules/package.json | 1 + .../platform-app-css-modules/src/index.tsx | 14 ++-- .../platform-app-css-modules/src/settings.ts | 12 +++ .../cli/templates/platform-app-css/index.html | 9 ++- .../templates/platform-app-css/package.json | 1 + .../templates/platform-app-css/src/index.tsx | 14 ++-- .../platform-app-css/src/settings.ts | 12 +++ .../platform-app-tailwind/index.html | 9 ++- .../platform-app-tailwind/package.json | 1 + .../platform-app-tailwind/src/index.tsx | 14 ++-- .../platform-app-tailwind/src/settings.ts | 12 +++ .../cli/tests/files/compile-test-files/app.js | 5 +- .../tests/files/compile-test-files/index.html | 10 ++- packages/cli/tests/utils/compiler.spec.ts | 18 +++-- .../guideline-blocks-settings/CHANGELOG.md | 40 ++++++++++ .../guideline-blocks-settings/package.json | 4 +- .../src/components/Link/LinkInput.tsx | 8 +- .../Link/LinkSelector/DocumentLink.tsx | 11 ++- .../Link/LinkSelector/DocumentLinks.tsx | 25 ++++--- .../LinkSelector/LinkSelector.spec.ct.tsx | 73 ++++++++++++++++--- .../Link/LinkSelector/LinkSelector.tsx | 18 ++++- .../components/Link/LinkSelector/PageLink.tsx | 30 ++++++-- .../Link/LinkSelector/PageLinks.tsx | 13 ++-- pnpm-lock.yaml | 56 +++++++------- 40 files changed, 443 insertions(+), 149 deletions(-) create mode 100644 .changeset/pink-bugs-behave.md create mode 100644 packages/app-bridge/src/registries/api/SetAssetIdsByBlockAssetKey.spec.ts create mode 100644 packages/app-bridge/src/registries/api/SetAssetIdsByBlockAssetKey.ts create mode 100644 packages/cli/templates/platform-app-css-modules/src/settings.ts create mode 100644 packages/cli/templates/platform-app-css/src/settings.ts create mode 100644 packages/cli/templates/platform-app-tailwind/src/settings.ts diff --git a/.changeset/pink-bugs-behave.md b/.changeset/pink-bugs-behave.md new file mode 100644 index 000000000..055f62a9d --- /dev/null +++ b/.changeset/pink-bugs-behave.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock diff --git a/package.json b/package.json index 548776ea6..8a48e1430 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "glob": "^10.3.10", "react": "^18.2.0", "react-dom": "^18.2.0", - "tailwindcss": "^3.3.5", + "tailwindcss": "^3.4.1", "ts-node": "^10.9.1", "typescript": "^5.3.2", "vite": "^4.5.0", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 15bd693ec..16c4cf943 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -5,6 +5,11 @@ ### Patch Changes - [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme +## 3.3.0 + +### Minor Changes + +- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 3.2.0 diff --git a/packages/app-bridge/src/AppBridgeBlock.ts b/packages/app-bridge/src/AppBridgeBlock.ts index fddf90fea..75d9cd658 100644 --- a/packages/app-bridge/src/AppBridgeBlock.ts +++ b/packages/app-bridge/src/AppBridgeBlock.ts @@ -42,7 +42,7 @@ import type { import { PrivacySettings } from './types/PrivacySettings'; export type BlockApiMethod = ApiMethodNameValidator< - Pick + Pick >; export type BlockCommand = CommandNameValidator< diff --git a/packages/app-bridge/src/react/useBlockAssets.spec.ts b/packages/app-bridge/src/react/useBlockAssets.spec.ts index 27bba63ce..3e6339b2b 100644 --- a/packages/app-bridge/src/react/useBlockAssets.spec.ts +++ b/packages/app-bridge/src/react/useBlockAssets.spec.ts @@ -1,7 +1,7 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import { act, cleanup, renderHook, waitFor } from '@testing-library/react'; -import { SinonStub } from 'sinon'; +import sinon, { SinonStub } from 'sinon'; import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { AssetDummy, getAppBridgeBlockStub } from '../tests'; @@ -43,30 +43,27 @@ describe('useBlockAssets hook', () => { }); }); - it('should sort assets', async () => { + it('should set assets', async () => { const { result, appBridgeStub } = await loadUseBlockAssets([AssetDummy.with(1), AssetDummy.with(2)]); await act(async () => { await result.current.updateAssetIdsFromKey('key', [2, 1]); }); - const deleteCall = appBridgeStub.deleteAssetIdsFromBlockAssetKey.getCall(0); - const addCall = appBridgeStub.addAssetIdsToBlockAssetKey.getCall(0); - await waitFor(async () => { - expect(deleteCall.firstArg).toEqual('key'); - expect(deleteCall.lastArg).toEqual([1, 2]); - expect(addCall.firstArg).toEqual('key'); - expect(addCall.lastArg).toEqual([2, 1]); + sinon.assert.calledWithExactly(appBridgeStub.api, { + name: 'setAssetIdsByBlockAssetKey', + payload: { key: 'key', assetIds: [2, 1] }, + }); expect(result.current.blockAssets['key'].map((asset) => asset.id)).toEqual([2, 1]); }); }); it('should not sort assets if api call throws error', async () => { const { result, appBridgeStub } = await loadUseBlockAssets([AssetDummy.with(1), AssetDummy.with(2)]); - (appBridgeStub.deleteAssetIdsFromBlockAssetKey as unknown as Mock) = vi - .fn() - .mockRejectedValue('Unsuccessful API call'); + (appBridgeStub.api as unknown as Mock) = vi.fn().mockImplementation(() => { + return Promise.reject(new Error('Unsuccessful API call')); + }); await act(async () => { await result.current.updateAssetIdsFromKey('key', [2, 1]); diff --git a/packages/app-bridge/src/react/useBlockAssets.ts b/packages/app-bridge/src/react/useBlockAssets.ts index 8288f6593..ad4b01c3f 100644 --- a/packages/app-bridge/src/react/useBlockAssets.ts +++ b/packages/app-bridge/src/react/useBlockAssets.ts @@ -53,16 +53,11 @@ export const useBlockAssets = (appBridge: AppBridgeBlock) => { }; const updateAssetIdsFromKey = async (key: string, newAssetIds: number[]) => { - const currentBlockAssets = await appBridge.getBlockAssets(); - const oldAssetIds = currentBlockAssets[key]?.map((asset) => asset.id) ?? []; - try { - await appBridge.deleteAssetIdsFromBlockAssetKey(key, oldAssetIds); - await appBridge.addAssetIdsToBlockAssetKey(key, newAssetIds); + await appBridge.api({ name: 'setAssetIdsByBlockAssetKey', payload: { key, assetIds: newAssetIds } }); } catch (error) { console.error(error); } - emitUpdatedBlockAssets(); }; diff --git a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts index 08f437c8a..3f8afc507 100644 --- a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts +++ b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts @@ -8,6 +8,7 @@ import type { GetAssetResourceInformationPayload, GetAssetResourceInformationResponse, } from './GetAssetResourceInformation'; +import { SetAssetIdsByBlockAssetKeyPayload, SetAssetIdsByBlockAssetKeyResponse } from './SetAssetIdsByBlockAssetKey'; export type ApiMethodRegistry = ApiMethodNameValidator<{ getAssetBulkDownloadToken: { @@ -20,4 +21,8 @@ export type ApiMethodRegistry = ApiMethodNameValidator<{ payload: GetAssetResourceInformationPayload; response: GetAssetResourceInformationResponse; }; + setAssetIdsByBlockAssetKey: { + payload: SetAssetIdsByBlockAssetKeyPayload; + response: SetAssetIdsByBlockAssetKeyResponse; + }; }>; diff --git a/packages/app-bridge/src/registries/api/SetAssetIdsByBlockAssetKey.spec.ts b/packages/app-bridge/src/registries/api/SetAssetIdsByBlockAssetKey.spec.ts new file mode 100644 index 000000000..40fb48aac --- /dev/null +++ b/packages/app-bridge/src/registries/api/SetAssetIdsByBlockAssetKey.spec.ts @@ -0,0 +1,20 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; +import { setAssetIdsByBlockAssetKey } from './SetAssetIdsByBlockAssetKey'; + +describe('SetAssetIdsByBlockAssetKey', () => { + it('should return correct method name', () => { + const TEST_KEY = 'settingName'; + const TEST_ASSET_IDS = [51, 52]; + const assetIdsByBlockAssetKey = setAssetIdsByBlockAssetKey({ + key: TEST_KEY, + assetIds: TEST_ASSET_IDS, + }); + expect(assetIdsByBlockAssetKey.name).toBe('setAssetIdsByBlockAssetKey'); + expect(assetIdsByBlockAssetKey.payload).toStrictEqual({ + key: TEST_KEY, + assetIds: TEST_ASSET_IDS, + }); + }); +}); diff --git a/packages/app-bridge/src/registries/api/SetAssetIdsByBlockAssetKey.ts b/packages/app-bridge/src/registries/api/SetAssetIdsByBlockAssetKey.ts new file mode 100644 index 000000000..4bbd2a9af --- /dev/null +++ b/packages/app-bridge/src/registries/api/SetAssetIdsByBlockAssetKey.ts @@ -0,0 +1,15 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type SetAssetIdsByBlockAssetKeyPayload = { + key: string; + assetIds: number[]; +}; + +export type SetAssetIdsByBlockAssetKeyResponse = void; + +export const setAssetIdsByBlockAssetKey = ( + payload: SetAssetIdsByBlockAssetKeyPayload, +): { name: 'setAssetIdsByBlockAssetKey'; payload: SetAssetIdsByBlockAssetKeyPayload } => ({ + name: 'setAssetIdsByBlockAssetKey', + payload, +}); diff --git a/packages/app-bridge/src/registries/api/index.ts b/packages/app-bridge/src/registries/api/index.ts index dc7272c9b..fc5be8310 100644 --- a/packages/app-bridge/src/registries/api/index.ts +++ b/packages/app-bridge/src/registries/api/index.ts @@ -5,3 +5,4 @@ export * from './GetAssetBulkDownloadToken'; export * from './CreateAsset'; export * from './GetAssetResourceInformation'; export * from './GetCurrentUser'; +export * from './SetAssetIdsByBlockAssetKey'; diff --git a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts index 79a55a53e..1fa491163 100644 --- a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts +++ b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts @@ -167,20 +167,19 @@ export const getAppBridgeBlockStub = ({ BulkDownloadDummy.default(), ), getPrivacySettings: stub>().returns(privacySettings), - api: stub>() - .resolves() - .withArgs({ - name: 'getAssetBulkDownloadToken', - payload: { - blockAssets: { settings1: [AssetDummy.with(123)], settings2: [AssetDummy.with(456)] }, - }, - }) - .resolves({ assetBulkDownloadToken: 'token' }) - .withArgs({ - name: 'getAssetBulkDownloadToken', - payload: { blockAssets: undefined }, - }) - .resolves({ assetBulkDownloadToken: 'token' }), + api: stub>().callsFake((args) => { + switch (args.name) { + case 'getAssetBulkDownloadToken': { + return { assetBulkDownloadToken: 'token' }; + } + case 'setAssetIdsByBlockAssetKey': { + blockAssets[args.payload.key] = args.payload.assetIds.map((id) => AssetDummy.with(id)); + return Promise.resolve(); + } + } + + throw new Error('Method is not stubbed'); + }), context: stub>().callsFake((args) => { if (args === undefined) { diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 457460c08..6a7856ffe 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/frontify-cli +## 5.6.1 + +### Patch Changes + +- [#732](https://github.com/Frontify/brand-sdk/pull/732) [`8395479`](https://github.com/Frontify/brand-sdk/commit/83954793533e63a67ee02cb94f24095cd4119e36) Thanks [@julianiff](https://github.com/julianiff)! - feat: adjust serve and compile command + ## 5.6.0 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 90f58a996..9805df1a8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "author": "Frontify Developers ", - "version": "5.6.0", + "version": "5.6.1", "bin": { "frontify-cli": "dist/index.mjs" }, diff --git a/packages/cli/src/commands/serve.ts b/packages/cli/src/commands/serve.ts index 615dd4cc4..21feb55cc 100644 --- a/packages/cli/src/commands/serve.ts +++ b/packages/cli/src/commands/serve.ts @@ -15,15 +15,10 @@ class PlatformAppDevelopmentServer { const viteServer = await createServer({ root: process.cwd(), configFile: false, - plugins: [ - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - //@ts-ignore - react(), - ], + plugins: [react()], define: { 'process.env.NODE_ENV': JSON.stringify('development'), }, - base: `http://localhost:${this.port}/`, }); const server = await viteServer.listen(this.port, true); diff --git a/packages/cli/src/utils/compiler.ts b/packages/cli/src/utils/compiler.ts index 2de64a8f6..1c8f9e959 100644 --- a/packages/cli/src/utils/compiler.ts +++ b/packages/cli/src/utils/compiler.ts @@ -51,8 +51,10 @@ export const compileBlock = async ({ projectPath, entryFile, outputName }: Compi }); }; -export const compilePlatformApp = async ({ outputName, projectPath = '' }: CompilerOptions) => { +export const compilePlatformApp = async ({ outputName, entryFile, projectPath = '' }: CompilerOptions) => { const getHash = (text) => createHash('sha256').update(text).digest('hex'); + const appBridgeVersion = getAppBridgeVersion(projectPath); + const htmlHashPlugin: PluginOption = { name: 'html-hash', enforce: 'post', @@ -77,10 +79,51 @@ export const compilePlatformApp = async ({ outputName, projectPath = '' }: Compi }, }; - return build({ + const settings = await build({ + plugins: [ + react(), + viteExternalsPlugin({ + react: 'React', + 'react-dom': 'ReactDOM', + }), + ], + root: projectPath, + define: { + 'process.env.NODE_ENV': JSON.stringify('production'), + }, + build: { + lib: { + entry: entryFile, + name: outputName, + formats: ['iife'], + fileName: () => 'index.js', + }, + rollupOptions: { + external: ['react', 'react-dom'], + output: { + globals: { + react: 'React', + 'react-dom': 'ReactDOM', + }, + entryFileNames: 'settings.js', + footer: ` + window.${outputName} = ${outputName}; + window.${outputName}.dependencies = window.${outputName}.packages || {}; + window.${outputName}.dependencies['@frontify/app-bridge'] = '${appBridgeVersion}'; + `, + }, + }, + }, + }); + + const app = await build({ plugins: [react(), htmlHashPlugin], root: projectPath, + define: { + 'process.env.NODE_ENV': JSON.stringify('production'), + }, build: { + emptyOutDir: false, rollupOptions: { output: { assetFileNames: () => '[name][extname]', @@ -90,4 +133,5 @@ export const compilePlatformApp = async ({ outputName, projectPath = '' }: Compi }, }, }); + return { app, settings }; }; diff --git a/packages/cli/templates/platform-app-css-modules/index.html b/packages/cli/templates/platform-app-css-modules/index.html index adae31715..afd3f34c8 100644 --- a/packages/cli/templates/platform-app-css-modules/index.html +++ b/packages/cli/templates/platform-app-css-modules/index.html @@ -7,6 +7,13 @@
- + diff --git a/packages/cli/templates/platform-app-css-modules/package.json b/packages/cli/templates/platform-app-css-modules/package.json index 95db42033..a7ff86fd7 100644 --- a/packages/cli/templates/platform-app-css-modules/package.json +++ b/packages/cli/templates/platform-app-css-modules/package.json @@ -13,6 +13,7 @@ "@frontify/app-bridge": "^3.0.0", "@frontify/fondue": "12.0.0-beta.382", "@frontify/fondue-tokens": "^3.4.0", + "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/cli/templates/platform-app-css-modules/src/index.tsx b/packages/cli/templates/platform-app-css-modules/src/index.tsx index c820be3ee..49640fcba 100644 --- a/packages/cli/templates/platform-app-css-modules/src/index.tsx +++ b/packages/cli/templates/platform-app-css-modules/src/index.tsx @@ -1,11 +1,9 @@ -import { StrictMode } from 'react'; -import ReactDOM from 'react-dom/client'; import { App } from './App'; +import { defineApp } from '@frontify/platform-app'; +import { settings } from './settings'; import '@frontify/fondue/style'; -// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -ReactDOM.createRoot(document.getElementById('root')!).render( - - - , -); +export default defineApp({ + app: App, + settings, +}); diff --git a/packages/cli/templates/platform-app-css-modules/src/settings.ts b/packages/cli/templates/platform-app-css-modules/src/settings.ts new file mode 100644 index 000000000..25a335ab5 --- /dev/null +++ b/packages/cli/templates/platform-app-css-modules/src/settings.ts @@ -0,0 +1,12 @@ +import { defineSettings } from '@frontify/platform-app'; + +export const settings = defineSettings({ + credentials: [ + { + type: 'input', + id: 'single-line', + label: 'Input field', + defaultValue: 'Input Field Value', + }, + ], +}); diff --git a/packages/cli/templates/platform-app-css/index.html b/packages/cli/templates/platform-app-css/index.html index 0199bdc21..a6f04ed64 100644 --- a/packages/cli/templates/platform-app-css/index.html +++ b/packages/cli/templates/platform-app-css/index.html @@ -7,6 +7,13 @@
- + diff --git a/packages/cli/templates/platform-app-css/package.json b/packages/cli/templates/platform-app-css/package.json index 035ac059a..e2c170067 100644 --- a/packages/cli/templates/platform-app-css/package.json +++ b/packages/cli/templates/platform-app-css/package.json @@ -13,6 +13,7 @@ "@frontify/app-bridge": "^3.0.0", "@frontify/fondue": "12.0.0-beta.382", "@frontify/fondue-tokens": "^3.4.0", + "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/cli/templates/platform-app-css/src/index.tsx b/packages/cli/templates/platform-app-css/src/index.tsx index 5a282f6ee..d3631d228 100644 --- a/packages/cli/templates/platform-app-css/src/index.tsx +++ b/packages/cli/templates/platform-app-css/src/index.tsx @@ -1,12 +1,10 @@ -import { StrictMode } from 'react'; -import ReactDOM from 'react-dom/client'; import { App } from './App'; +import { defineApp } from '@frontify/platform-app'; +import { settings } from './settings'; import './main.css'; import '@frontify/fondue/style'; -// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -ReactDOM.createRoot(document.getElementById('root')!).render( - - - , -); +export default defineApp({ + app: App, + settings, +}); diff --git a/packages/cli/templates/platform-app-css/src/settings.ts b/packages/cli/templates/platform-app-css/src/settings.ts new file mode 100644 index 000000000..25a335ab5 --- /dev/null +++ b/packages/cli/templates/platform-app-css/src/settings.ts @@ -0,0 +1,12 @@ +import { defineSettings } from '@frontify/platform-app'; + +export const settings = defineSettings({ + credentials: [ + { + type: 'input', + id: 'single-line', + label: 'Input field', + defaultValue: 'Input Field Value', + }, + ], +}); diff --git a/packages/cli/templates/platform-app-tailwind/index.html b/packages/cli/templates/platform-app-tailwind/index.html index 0199bdc21..a6f04ed64 100644 --- a/packages/cli/templates/platform-app-tailwind/index.html +++ b/packages/cli/templates/platform-app-tailwind/index.html @@ -7,6 +7,13 @@
- + diff --git a/packages/cli/templates/platform-app-tailwind/package.json b/packages/cli/templates/platform-app-tailwind/package.json index e8b016951..0867a21ba 100644 --- a/packages/cli/templates/platform-app-tailwind/package.json +++ b/packages/cli/templates/platform-app-tailwind/package.json @@ -13,6 +13,7 @@ "@frontify/app-bridge": "^3.0.0", "@frontify/fondue": "12.0.0-beta.382", "@frontify/fondue-tokens": "^3.4.0", + "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/cli/templates/platform-app-tailwind/src/index.tsx b/packages/cli/templates/platform-app-tailwind/src/index.tsx index 43733ad02..f617df614 100644 --- a/packages/cli/templates/platform-app-tailwind/src/index.tsx +++ b/packages/cli/templates/platform-app-tailwind/src/index.tsx @@ -1,13 +1,11 @@ -import { StrictMode } from 'react'; -import ReactDOM from 'react-dom/client'; import { App } from './App'; +import { defineApp } from '@frontify/platform-app'; +import { settings } from './settings'; import 'tailwindcss/tailwind.css'; import '@frontify/fondue/style'; import './main.css'; -// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -ReactDOM.createRoot(document.getElementById('root')!).render( - - - , -); +export default defineApp({ + app: App, + settings, +}); diff --git a/packages/cli/templates/platform-app-tailwind/src/settings.ts b/packages/cli/templates/platform-app-tailwind/src/settings.ts new file mode 100644 index 000000000..25a335ab5 --- /dev/null +++ b/packages/cli/templates/platform-app-tailwind/src/settings.ts @@ -0,0 +1,12 @@ +import { defineSettings } from '@frontify/platform-app'; + +export const settings = defineSettings({ + credentials: [ + { + type: 'input', + id: 'single-line', + label: 'Input field', + defaultValue: 'Input Field Value', + }, + ], +}); diff --git a/packages/cli/tests/files/compile-test-files/app.js b/packages/cli/tests/files/compile-test-files/app.js index d983ede75..7c4e7ba23 100644 --- a/packages/cli/tests/files/compile-test-files/app.js +++ b/packages/cli/tests/files/compile-test-files/app.js @@ -1,3 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -export const test = 1; +const app = 'this is a block'; +const settings = { some: 'settings' }; + +export default { app, settings }; diff --git a/packages/cli/tests/files/compile-test-files/index.html b/packages/cli/tests/files/compile-test-files/index.html index f666812bd..3be3d9cda 100644 --- a/packages/cli/tests/files/compile-test-files/index.html +++ b/packages/cli/tests/files/compile-test-files/index.html @@ -3,4 +3,12 @@ -
test
+
+ +
+ + diff --git a/packages/cli/tests/utils/compiler.spec.ts b/packages/cli/tests/utils/compiler.spec.ts index 9a25c9e3a..6d6eb2b41 100644 --- a/packages/cli/tests/utils/compiler.spec.ts +++ b/packages/cli/tests/utils/compiler.spec.ts @@ -41,21 +41,27 @@ describe('Compiler utils', async () => { }); describe('compile PlatformApp', () => { + beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + //@ts-ignore + global.window = {}; + }); const testHash = 'mocked hash'; test('should provide a valid build with a index.html', async () => { - const outputNameTest = 'test-output'; + const outputNameTest = 'index'; const result = (await compilePlatformApp({ projectPath: rootPath, - entryFile: '', + entryFile: pathToIndex, outputName: outputNameTest, - })) as unknown as { output: { fileName: string }[] }; + })) as unknown as { app: { output: { fileName: string }[] }; settings: { output: { fileName: string }[] } }; expect(createHash).toHaveBeenCalledWith('sha256'); - expect(result.output[0].fileName).toBe(`${outputNameTest}.${testHash}.js`); - expect(result.output[1].fileName).toBe(`${outputNameTest}.${testHash}.css`); - expect(result.output[2].fileName).toBe(`${outputNameTest}.${testHash}.html`); + expect(result.app.output[0].fileName).toBe(`${outputNameTest}.${testHash}.js`); + expect(result.app.output[1].fileName).toBe(`${outputNameTest}.${testHash}.css`); + expect(result.app.output[2].fileName).toBe(`${outputNameTest}.${testHash}.html`); + expect(result.settings[0].output[0].fileName).toBe('settings.js'); }); }); }); diff --git a/packages/guideline-blocks-settings/CHANGELOG.md b/packages/guideline-blocks-settings/CHANGELOG.md index 738b4ea01..611384c15 100644 --- a/packages/guideline-blocks-settings/CHANGELOG.md +++ b/packages/guideline-blocks-settings/CHANGELOG.md @@ -1,5 +1,45 @@ # @frontify/guideline-blocks-settings +## 0.32.1 + +### Patch Changes + +- [#747](https://github.com/Frontify/brand-sdk/pull/747) [`447bf26`](https://github.com/Frontify/brand-sdk/commit/447bf26ad6816f354cc9de91f6451cf807458ffb) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump `tailwindcss` to 3.4.1 + +## 0.32.0 + +### Minor Changes + +- [#736](https://github.com/Frontify/brand-sdk/pull/736) [`2f7f30f`](https://github.com/Frontify/brand-sdk/commit/2f7f30f902f3c8ed3bacf5fa378014e148bb20aa) Thanks [@ragi96](https://github.com/ragi96)! - refactor(LinkSelector): Removed `appBridge` prop in favor of directly passing document handling functions: `getAllDocuments`, `getDocumentPagesByDocumentId`, and `getDocumentSectionsByDocumentPageId` for clearer API and enhanced modularity + + Replace this: + + ```jsx + + ``` + + with: + + ```jsx + appBridge.getAllDocuments()} + getDocumentPagesByDocumentId={(documentId) => + appBridge.getDocumentPagesByDocumentId(documentId) + } + getDocumentSectionsByDocumentPageId={(documentPageId) => + appBridge.getDocumentSectionsByDocumentPageId(documentPageId) + } + /> + ``` + ## 0.31.5 ### Patch Changes diff --git a/packages/guideline-blocks-settings/package.json b/packages/guideline-blocks-settings/package.json index 79b79f7ee..bf4c35a07 100644 --- a/packages/guideline-blocks-settings/package.json +++ b/packages/guideline-blocks-settings/package.json @@ -1,6 +1,6 @@ { "name": "@frontify/guideline-blocks-settings", - "version": "0.31.5", + "version": "0.32.1", "description": "Provides types and helpers for the guideline block development", "sideEffects": false, "main": "dist/index.umd.js", @@ -55,7 +55,7 @@ "react-dom": "^18.2.0", "rollup": "^3.29.4", "sinon": "17.0.1", - "tailwindcss": "^3.3.5", + "tailwindcss": "^3.4.1", "typescript": "^5.3.2", "vite": "^4.5.0", "vite-plugin-dts": "^3.6.3", diff --git a/packages/guideline-blocks-settings/src/components/Link/LinkInput.tsx b/packages/guideline-blocks-settings/src/components/Link/LinkInput.tsx index e8b401d29..649a343e3 100644 --- a/packages/guideline-blocks-settings/src/components/Link/LinkInput.tsx +++ b/packages/guideline-blocks-settings/src/components/Link/LinkInput.tsx @@ -65,9 +65,15 @@ export const LinkInput = ({
appBridge.getAllDocuments()} + getDocumentPagesByDocumentId={(documentId) => + appBridge.getDocumentPagesByDocumentId(documentId) + } + getDocumentSectionsByDocumentPageId={(documentPageId) => + appBridge.getDocumentSectionsByDocumentPageId(documentPageId) + } />
)} diff --git a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/DocumentLink.tsx b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/DocumentLink.tsx index 31cd8c6aa..4b1657032 100644 --- a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/DocumentLink.tsx +++ b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/DocumentLink.tsx @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import type { AppBridgeBlock, AppBridgeTheme } from '@frontify/app-bridge'; +import type { DocumentPage, DocumentSection } from '@frontify/app-bridge'; import { useEffect, useState } from 'react'; import { PageLinks } from './PageLinks'; import { IconColorFan16, merge } from '@frontify/fondue'; @@ -12,18 +12,20 @@ type DocumentLinkProps = { title: string; permanentLink: string; }; - appBridge: AppBridgeBlock | AppBridgeTheme; selectedUrl: string; onSelectUrl: (url: string) => void; itemsToExpandInitially: InitiallyExpandedItems; + getDocumentSectionsByDocumentPageId: (documentPageId: number) => Promise; + getDocumentPagesByDocumentId: (documentId: number) => Promise; }; export const DocumentLink = ({ document, - appBridge, selectedUrl, onSelectUrl, itemsToExpandInitially, + getDocumentSectionsByDocumentPageId, + getDocumentPagesByDocumentId, }: DocumentLinkProps) => { const [isExpanded, setIsExpanded] = useState(document.id === itemsToExpandInitially.documentId); const isActive = document.permanentLink === selectedUrl; @@ -66,11 +68,12 @@ export const DocumentLink = ({ {isExpanded && ( )} diff --git a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/DocumentLinks.tsx b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/DocumentLinks.tsx index 83f40bb17..03752f6f6 100644 --- a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/DocumentLinks.tsx +++ b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/DocumentLinks.tsx @@ -1,18 +1,26 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import type { AppBridgeBlock, AppBridgeTheme, Document } from '@frontify/app-bridge'; +import type { Document, DocumentPage, DocumentSection } from '@frontify/app-bridge'; import { ReactElement, useEffect, useState } from 'react'; import { DocumentLink } from './DocumentLink'; import { LoadingIndicator } from './LoadingIndicator'; import { InitiallyExpandedItems } from '../'; type DocumentLinksProps = { - appBridge: AppBridgeBlock | AppBridgeTheme; selectedUrl: string; onSelectUrl: (url: string) => void; + getAllDocuments: () => Promise; + getDocumentSectionsByDocumentPageId: (documentPageId: number) => Promise; + getDocumentPagesByDocumentId: (documentId: number) => Promise; }; -export const DocumentLinks = ({ appBridge, selectedUrl, onSelectUrl }: DocumentLinksProps): ReactElement => { +export const DocumentLinks = ({ + selectedUrl, + onSelectUrl, + getAllDocuments, + getDocumentPagesByDocumentId, + getDocumentSectionsByDocumentPageId, +}: DocumentLinksProps): ReactElement => { const [isLoading, setIsLoading] = useState(true); const [documents, setDocuments] = useState([]); const [itemsToExpandInitially, setItemsToExpandInitially] = useState({ @@ -32,8 +40,7 @@ export const DocumentLinks = ({ appBridge, selectedUrl, onSelectUrl }: DocumentL }, [documentArray.length]); useEffect(() => { - appBridge - .getAllDocuments() + getAllDocuments() .then((_documents) => { setDocuments(_documents); }) @@ -52,8 +59,7 @@ export const DocumentLinks = ({ appBridge, selectedUrl, onSelectUrl }: DocumentL return itemsToExpand; } for (const document of documentArray) { - const pages = await appBridge.getDocumentPagesByDocumentId(document.id); - appBridge.getAllDocuments(); + const pages = await getDocumentPagesByDocumentId(document.id); const pagesArray = [...pages.values()]; const selectedUrlIsPage = !!pagesArray.find((page) => page.permanentLink === selectedUrl); if (selectedUrlIsPage) { @@ -61,7 +67,7 @@ export const DocumentLinks = ({ appBridge, selectedUrl, onSelectUrl }: DocumentL return itemsToExpand; } for (const page of pagesArray) { - const sections = await appBridge.getDocumentSectionsByDocumentPageId(page.id); + const sections = await getDocumentSectionsByDocumentPageId(page.id); const sectionsArray = [...sections.values()]; const selectedUrlIsSection = !!sectionsArray.find((section) => section.permanentLink === selectedUrl); if (selectedUrlIsSection) { @@ -83,10 +89,11 @@ export const DocumentLinks = ({ appBridge, selectedUrl, onSelectUrl }: DocumentL ); })} diff --git a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.spec.ct.tsx b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.spec.ct.tsx index 6ab742c62..4172f5311 100644 --- a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.spec.ct.tsx +++ b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.spec.ct.tsx @@ -5,7 +5,6 @@ import { DocumentPageApiDummy, DocumentSectionApiDummy, getAppBridgeBlockStub, - withAppBridgeBlockStubs, } from '@frontify/app-bridge'; import { mount } from 'cypress/react18'; import { LinkSelector } from './LinkSelector'; @@ -37,8 +36,16 @@ const apiSections = [ describe('Link Selector', () => { it('renders the link selector button', () => { - const [LinkSelectorWithStubs] = withAppBridgeBlockStubs(LinkSelector, {}); - mount(); + const appBridge = getAppBridgeBlockStub(); + mount( + , + ); cy.get(LinkSelectorSelector).should('exist'); }); @@ -50,7 +57,15 @@ describe('Link Selector', () => { (appBridge.getDocumentGroups as SinonStub) = cy.stub().returns([]); (appBridge.getAllDocuments as SinonStub) = cy.stub().returns(Promise.resolve(apiDocuments)); - mount(); + mount( + , + ); cy.get(LinkSelectorButtonSelector).click(); cy.get(LinkSelectorModalSelector).should('exist'); }); @@ -62,7 +77,15 @@ describe('Link Selector', () => { (appBridge.getDocumentGroups as SinonStub) = cy.stub().returns([]); (appBridge.getAllDocuments as SinonStub) = cy.stub().returns(Promise.resolve(apiDocuments)); - mount(); + mount( + , + ); cy.get(LinkSelectorButtonSelector).click(); cy.get(DocumentLinkSelector).should('have.length', 2); }); @@ -77,7 +100,15 @@ describe('Link Selector', () => { (appBridge.getDocumentPagesByDocumentId as SinonStub) = cy.stub().returns(Promise.resolve(apiPages)); (appBridge.getDocumentSectionsByDocumentPageId as SinonStub) = cy.stub().returns(Promise.resolve(apiSections)); - mount(); + mount( + , + ); cy.get(LinkSelectorButtonSelector).click(); cy.get(DocumentLinkSelector).eq(0).find(DocumentTreeItemToggleSelector).click(); cy.get(PageLinkSelector).should('have.length', 3); @@ -92,7 +123,15 @@ describe('Link Selector', () => { (appBridge.getDocumentPagesByDocumentId as SinonStub) = cy.stub().returns(Promise.resolve(apiPages)); (appBridge.getDocumentSectionsByDocumentPageId as SinonStub) = cy.stub().returns(Promise.resolve(apiSections)); - mount(); + mount( + , + ); cy.get(LinkSelectorButtonSelector).click(); cy.get(DocumentLinkSelector).eq(0).find(DocumentTreeItemToggleSelector).click(); cy.get(PageLinkSelector).eq(0).find('button').click(); @@ -108,7 +147,15 @@ describe('Link Selector', () => { (appBridge.getDocumentPagesByDocumentId as SinonStub) = cy.stub().returns(Promise.resolve(apiPages)); (appBridge.getDocumentSectionsByDocumentPageId as SinonStub) = cy.stub().returns(Promise.resolve(apiSections)); - mount(); + mount( + , + ); cy.get(LinkSelectorButtonSelector).click(); cy.get(SectionLinkSelector).should('have.length', 4); }); @@ -122,7 +169,15 @@ describe('Link Selector', () => { (appBridge.getDocumentPagesByDocumentId as SinonStub) = cy.stub().returns(Promise.resolve(apiPages)); (appBridge.getDocumentSectionsByDocumentPageId as SinonStub) = cy.stub().returns(Promise.resolve(apiSections)); - mount(); + mount( + , + ); cy.get(LinkSelectorButtonSelector).click(); cy.get(DocumentLinkSelector).should('have.length', 2); cy.realPress('Tab'); diff --git a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.tsx b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.tsx index 96a87314e..e9c6dc005 100644 --- a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.tsx +++ b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.tsx @@ -1,23 +1,27 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import type { AppBridgeBlock, AppBridgeTheme } from '@frontify/app-bridge'; +import type { Document, DocumentPage, DocumentSection } from '@frontify/app-bridge'; import { Button, ButtonEmphasis, ButtonSize, ButtonStyle, ButtonType, IconLink, Modal } from '@frontify/fondue'; import { useOverlayTriggerState } from '@react-stately/overlays'; import { KeyboardEvent, ReactElement, useEffect, useState } from 'react'; import { DocumentLinks } from './DocumentLinks'; type LinkSelectorProps = { - appBridge: AppBridgeBlock | AppBridgeTheme; url: string; onUrlChange?: (value: string) => void; buttonSize?: ButtonSize; + getAllDocuments: () => Promise; + getDocumentSectionsByDocumentPageId: (documentPageId: number) => Promise; + getDocumentPagesByDocumentId: (documentId: number) => Promise; }; export const LinkSelector = ({ - appBridge, url, onUrlChange, buttonSize = ButtonSize.Medium, + getAllDocuments, + getDocumentPagesByDocumentId, + getDocumentSectionsByDocumentPageId, }: LinkSelectorProps): ReactElement => { const { open: openLinkTree, isOpen: isLinkTreeOpen, close: closeLinkTree } = useOverlayTriggerState({}); const [selectedUrl, setSelectedUrl] = useState(url); @@ -58,7 +62,13 @@ export const LinkSelector = ({ closeLinkTree()} isOpen={isLinkTreeOpen} isDismissable> - + void; - appBridge: AppBridgeBlock | AppBridgeTheme; itemsToExpandInitially: InitiallyExpandedItems; + getDocumentSectionsByDocumentPageId: (documentPageId: number) => Promise; }; -export const PageLink = ({ page, selectedUrl, onSelectUrl, itemsToExpandInitially, appBridge }: DocumentLinkProps) => { +export const PageLink = ({ + page, + selectedUrl, + onSelectUrl, + itemsToExpandInitially, + getDocumentSectionsByDocumentPageId, +}: PageLinkProps) => { const [isExpanded, setIsExpanded] = useState(page.id === itemsToExpandInitially.documentId); + const [documentSections, setDocumentSections] = useState([]); const isActive = page.permanentLink === selectedUrl; - const { documentSections } = useDocumentSection(appBridge, page.id); - const sectionsArray = [...documentSections.values()]; - const hasSections = sectionsArray.length > 0; + + useEffect(() => { + const fetchDocumentSections = async () => { + const sections = await getDocumentSectionsByDocumentPageId(page.id); + setDocumentSections(sections); + }; + + fetchDocumentSections(); + }, [page.id, getDocumentSectionsByDocumentPageId]); useEffect(() => { if (page.id === itemsToExpandInitially.pageId) { @@ -31,6 +44,9 @@ export const PageLink = ({ page, selectedUrl, onSelectUrl, itemsToExpandInitiall } }, [itemsToExpandInitially, page.id]); + const sectionsArray = [...documentSections.values()]; + const hasSections = sectionsArray.length > 0; + return ( <>
{ cy.get(FlyoutButtonSelector).click(); cy.realPress('Tab'); cy.realPress('Tab'); + cy.realPress('Tab'); cy.get(FlyoutTriggerSelector).eq(0).should('have.class', 'focus-visible:tw-ring-blue'); cy.get(FlyoutTriggerSelector).eq(0).type('{enter}'); cy.get(MenuItemSelector).should('exist'); }); + + it('reorders items using only keyboard events', () => { + const onSortStub = cy.stub(); + mount( + , + ); + cy.get(FlyoutButtonSelector).click(); + cy.realPress('Tab'); + cy.realPress('Tab'); + cy.realPress('Tab'); + cy.get(DragHandleSelector).eq(0).type(' {downarrow}{downarrow} '); + cy.get(AttachmentItemSelector).eq(1).should('contain.text', 'Moved item'); + }); }); diff --git a/packages/guideline-blocks-settings/src/components/Attachments/Attachments.tsx b/packages/guideline-blocks-settings/src/components/Attachments/Attachments.tsx index 48966ff5e..968ea9a18 100644 --- a/packages/guideline-blocks-settings/src/components/Attachments/Attachments.tsx +++ b/packages/guideline-blocks-settings/src/components/Attachments/Attachments.tsx @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { useEffect, useState } from 'react'; +import { MutableRefObject, useEffect, useState } from 'react'; import { DndContext, DragEndEvent, @@ -159,11 +159,15 @@ export const Attachments = ({ hug={false} fitContent legacyFooter={false} - trigger={ - + trigger={(triggerProps, triggerRef) => ( + } + >
{items.length > 0 ? items.length : 'Add'}
- } + )} >
{internalItems.length > 0 && ( diff --git a/packages/guideline-blocks-settings/src/components/Attachments/AttachmentsButtonTrigger.tsx b/packages/guideline-blocks-settings/src/components/Attachments/AttachmentsButtonTrigger.tsx index 099f20b0d..7693dc07c 100644 --- a/packages/guideline-blocks-settings/src/components/Attachments/AttachmentsButtonTrigger.tsx +++ b/packages/guideline-blocks-settings/src/components/Attachments/AttachmentsButtonTrigger.tsx @@ -6,17 +6,25 @@ import { joinClassNames } from '../../utilities'; import { type AttachmentsTriggerProps } from './types'; -export const AttachmentsButtonTrigger = ({ children, isFlyoutOpen }: AttachmentsTriggerProps) => ( -
( +
+ ); diff --git a/packages/guideline-blocks-settings/src/components/Attachments/types.ts b/packages/guideline-blocks-settings/src/components/Attachments/types.ts index 452c13b46..d087065c8 100644 --- a/packages/guideline-blocks-settings/src/components/Attachments/types.ts +++ b/packages/guideline-blocks-settings/src/components/Attachments/types.ts @@ -1,11 +1,13 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import { type AppBridgeBlock, type Asset } from '@frontify/app-bridge'; -import { type ReactNode } from 'react'; +import { HTMLAttributes, MutableRefObject, ReactElement, type ReactNode } from 'react'; export type AttachmentsTriggerProps = { children: ReactNode; isFlyoutOpen: boolean; + triggerProps: HTMLAttributes; + triggerRef: MutableRefObject; }; export type AttachmentsProps = { @@ -17,7 +19,7 @@ export type AttachmentsProps = { onUpload: (uploadedAttachments: Asset[]) => Promise; onBrowse: (browserAttachments: Asset[]) => void; onSorted: (sortedAttachments: Asset[]) => void; - triggerComponent?: (props: AttachmentsTriggerProps) => JSX.Element; + triggerComponent?: (props: AttachmentsTriggerProps) => ReactElement; } & ({ isOpen?: never; onOpenChange?: never } | { isOpen: boolean; onOpenChange: (isOpen: boolean) => void }); export type AttachmentItemProps = SortableAttachmentItemProps & { diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx index 4158b5879..e0f759df5 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx @@ -4,8 +4,10 @@ import { type ReactElement, useRef, useState } from 'react'; import { joinClassNames } from '../../utilities'; -import { Toolbar, type ToolbarItem } from './Toolbar'; +import { DEFAULT_MENU_BUTTON_ID, Toolbar, type ToolbarItem } from './Toolbar'; import { type BlockItemWrapperProps } from './types'; +import { DragPreviewContextProvider } from './Toolbar/context/DragPreviewContext'; +import { MultiFlyoutContextProvider } from './Toolbar/context/MultiFlyoutContext'; export const BlockItemWrapper = ({ children, @@ -13,14 +15,13 @@ export const BlockItemWrapper = ({ toolbarItems, shouldHideWrapper, shouldHideComponent = false, - isDragging, + isDragging = false, shouldFillContainer, outlineOffset = 2, shouldBeShown = false, showAttachments = false, }: BlockItemWrapperProps): ReactElement => { - const [isMenuFlyoutOpen, setIsMenuFlyoutOpen] = useState(shouldBeShown); - const [isAttachmentFlyoutOpen, setIsAttachmentFlyoutOpen] = useState(false); + const [openFlyoutIds, setOpenFlyoutIds] = useState(shouldBeShown ? [DEFAULT_MENU_BUTTON_ID] : []); const wrapperRef = useRef(null); if (shouldHideWrapper) { @@ -30,51 +31,50 @@ export const BlockItemWrapper = ({ const items = toolbarItems?.filter((item): item is ToolbarItem => item !== undefined); - const shouldToolbarBeVisible = isMenuFlyoutOpen || isAttachmentFlyoutOpen || shouldBeShown; + const shouldToolbarBeVisible = openFlyoutIds.length > 0 || shouldBeShown; return ( -
-
- + +
-
- {children} -
+ className={joinClassNames([ + 'tw-relative tw-group tw-outline-1 tw-outline-box-selected-inverse', + shouldFillContainer && 'tw-flex-1 tw-h-full tw-w-full', + 'hover:tw-outline focus-within:tw-outline', + shouldToolbarBeVisible && 'tw-outline', + shouldHideComponent && 'tw-opacity-0', + ])} + > +
+ +
+ {children} +
+ + ); }; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.spec.tsx new file mode 100644 index 000000000..ef1b5c76f --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.spec.tsx @@ -0,0 +1,96 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { AssetDummy, getAppBridgeBlockStub } from '@frontify/app-bridge'; +import { fireEvent, render, waitFor } from '@testing-library/react'; +import { beforeAll, describe, expect, it, vi } from 'vitest'; + +import { AttachmentsProvider } from '../../../../hooks/useAttachments'; +import { DragPreviewContextProvider } from '../context/DragPreviewContext'; +import { MultiFlyoutContextProvider } from '../context/MultiFlyoutContext'; + +import { AttachmentsToolbarButton } from './AttachmentsToolbarButton'; + +const TOOLBAR_BUTTON_ID = 'attachments-toolbar-button-trigger'; +const FLYOUT_CONTENT_ID = 'attachments-flyout-content'; +const TOOLTIP_ID = 'tooltip'; + +const TEST_FLYOUT_ID = 'flyout-id'; +const ASSET_ID = 'attachments'; + +const STUB_WITH_THREE_ASSETS = getAppBridgeBlockStub({ + blockId: 2, + blockAssets: { [ASSET_ID]: [AssetDummy.with(1), AssetDummy.with(2), AssetDummy.with(3)] }, + editorState: true, +}); + +/** + * @vitest-environment happy-dom + */ + +describe('AttachmentsToolbarButton', () => { + beforeAll(() => { + vi.stubGlobal( + 'Worker', + class Worker { + constructor() {} + addEventListener() {} + terminate() {} + }, + ); + }); + it('should disable tooltip and hide flyout when item is in drag preview context', async () => { + const { getByTestId, queryByTestId } = render( + + + + + + + , + ); + + expect(getByTestId(TOOLTIP_ID)).toHaveClass('tw-opacity-0'); + + getByTestId(TOOLBAR_BUTTON_ID).focus(); + + await waitFor(() => { + expect(getByTestId(TOOLTIP_ID)).toHaveClass('tw-opacity-0'); + expect(queryByTestId(FLYOUT_CONTENT_ID)).toBeNull(); + }); + }); + + it('should open flyout onClick', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + const { getByTestId } = render( + + + + + + + , + ); + + await fireEvent.click(getByTestId(TOOLBAR_BUTTON_ID)); + + expect(setOpenFlyoutIdsStub).toHaveBeenCalledOnce(); + const dispatchedStateResult = setOpenFlyoutIdsStub.mock.lastCall[0]([]); + expect(dispatchedStateResult).toEqual([TEST_FLYOUT_ID]); + }); + + it('should open tooltip when item is focused', async () => { + const { getByTestId } = render( + + + , + ); + + expect(getByTestId(TOOLTIP_ID)).toHaveClass('tw-opacity-0'); + + getByTestId(TOOLTIP_ID).focus(); + + await waitFor(() => { + expect(getByTestId(TOOLTIP_ID)).not.toHaveClass('tw-opacity-0'); + }); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.tsx new file mode 100644 index 000000000..574f92000 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.tsx @@ -0,0 +1,42 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useMemoizedId } from '@frontify/fondue'; + +import { useAttachmentsContext } from '../../../../hooks'; +import { Attachments } from '../../../Attachments'; +import { useMultiFlyoutState } from '../hooks/useMultiFlyoutState'; + +import { AttachmentsToolbarButtonTrigger } from './AttachmentsToolbarButtonTrigger'; +import { useDragPreviewContext } from '../context/DragPreviewContext'; + +export const DEFAULT_ATTACHMENTS_BUTTON_ID = 'attachments'; + +type AttachmentsToolbarButtonProps = { flyoutId?: string }; + +export const AttachmentsToolbarButton = ({ + flyoutId = DEFAULT_ATTACHMENTS_BUTTON_ID, +}: AttachmentsToolbarButtonProps) => { + const id = useMemoizedId(flyoutId); + + const { appBridge, attachments, onAttachmentsAdd, onAttachmentDelete, onAttachmentReplace, onAttachmentsSorted } = + useAttachmentsContext(); + + const { isOpen, onOpenChange } = useMultiFlyoutState(id); + const isDragPreview = useDragPreviewContext(); + + return ( + + ); +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.spec.tsx new file mode 100644 index 000000000..e634ce995 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.spec.tsx @@ -0,0 +1,44 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { cleanup, fireEvent, render } from '@testing-library/react'; +import { afterEach, describe, expect, it, vi } from 'vitest'; +import { AttachmentsToolbarButtonTrigger } from './AttachmentsToolbarButtonTrigger'; +import { MutableRefObject } from 'react'; + +const BUTTON_ID = 'attachments-toolbar-button-trigger'; + +describe('AttachmentsToolbarButtonTrigger', () => { + afterEach(() => { + cleanup(); + }); + + it('should apply active styles when flyout is open', async () => { + const { getByTestId } = render( + } + > + Button + , + ); + + expect(getByTestId(BUTTON_ID)).toHaveClass('tw-text-box-neutral-inverse-pressed'); + }); + it('should forward trigger props to button', async () => { + const onPointerUpStub = vi.fn(); + + const { getByTestId } = render( + } + > + Button + , + ); + await fireEvent.pointerUp(getByTestId(BUTTON_ID)); + + expect(onPointerUpStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.tsx new file mode 100644 index 000000000..b648fffcb --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.tsx @@ -0,0 +1,24 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { IconCaretDown12, IconPaperclip16 } from '@frontify/fondue'; +import { type AttachmentsTriggerProps } from '../../../Attachments/types'; + +import { BaseToolbarButton } from '../BaseToolbarButton'; + +export const AttachmentsToolbarButtonTrigger = ({ + children, + isFlyoutOpen, + triggerProps, + triggerRef, +}: AttachmentsTriggerProps) => ( + + + {children} + + +); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/index.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/index.ts new file mode 100644 index 000000000..fdfad36e2 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './AttachmentsToolbarButton'; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/BaseToolbarButton.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/BaseToolbarButton.spec.tsx new file mode 100644 index 000000000..2502803f7 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/BaseToolbarButton.spec.tsx @@ -0,0 +1,40 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { cleanup, fireEvent, render } from '@testing-library/react'; +import { afterEach, describe, expect, it, vi } from 'vitest'; +import { BaseToolbarButton } from './BaseToolbarButton'; + +const BUTTON_ID = 'base-toolbar-button'; + +describe('BaseToolbarButton', () => { + afterEach(() => { + cleanup(); + }); + it('should call onClick', async () => { + const onClickStub = vi.fn(); + const { getByTestId } = render(Button); + + await fireEvent.click(getByTestId(BUTTON_ID)); + + expect(onClickStub).toHaveBeenCalledOnce(); + }); + + it('should apply cursor styles', async () => { + const { getByTestId } = render(Button); + + expect(getByTestId(BUTTON_ID)).toHaveClass('!tw-cursor-grab'); + }); + + it('should apply active styles', async () => { + const { getByTestId } = render(Button); + + expect(getByTestId(BUTTON_ID)).toHaveClass('tw-text-box-neutral-inverse-pressed'); + }); + + it('should forward other attributes to button', async () => { + const BUTTON_TYPE = 'base'; + const { getByTestId } = render(Button); + + expect(getByTestId(BUTTON_ID).dataset.buttonType).toEqual(BUTTON_TYPE); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/BaseToolbarButton.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/BaseToolbarButton.tsx new file mode 100644 index 000000000..1d93cfe23 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/BaseToolbarButton.tsx @@ -0,0 +1,37 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type HTMLAttributes, type ReactNode, forwardRef } from 'react'; +import { getToolbarButtonClassNames } from './helpers'; + +type BaseToolbarButtonProps = { + children: ReactNode; + forceActiveStyle?: boolean; + cursor?: 'pointer' | 'grab'; + 'data-test-id'?: string; +} & HTMLAttributes; + +export const BaseToolbarButton = forwardRef( + ( + { + onClick, + children, + forceActiveStyle, + cursor = 'pointer', + 'data-test-id': dataTestId = 'base-toolbar-button', + ...props + }, + ref, + ) => ( + + ), +); + +BaseToolbarButton.displayName = 'BaseToolbarButton'; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.spec.tsx new file mode 100644 index 000000000..45cfd3df7 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.spec.tsx @@ -0,0 +1,89 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { fireEvent, render, waitFor } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; +import { DragHandleToolbarButton } from './DragHandleToolbarButton'; +import { IconAdobeCreativeCloud } from '@frontify/fondue'; +import { DragPreviewContextProvider } from '../context/DragPreviewContext'; + +const TOOLBAR_BUTTON_ID = 'block-item-wrapper-toolbar-btn'; +const TOOLTIP_ID = 'toolbar-button-tooltip'; + +const TOOLTIP_CONTENT = 'content'; + +/** + * @vitest-environment happy-dom + */ + +describe('DragHandleToolbarButton', () => { + it('should show tooltip and activeStyles when item is in drag preview context', async () => { + const { getByTestId } = render( + + } + draggableProps={{}} + /> + , + ); + + expect(getByTestId(TOOLTIP_ID)).not.toHaveClass('tw-opacity-0'); + expect(getByTestId(TOOLBAR_BUTTON_ID)).toHaveClass('tw-cursor-grabbing'); + }); + + it('should show tooltip when item is focused', async () => { + const { getByTestId } = render( + } draggableProps={{}} />, + ); + + expect(getByTestId(TOOLTIP_ID)).toHaveClass('tw-opacity-0'); + expect(getByTestId(TOOLTIP_ID)).toHaveTextContent(TOOLTIP_CONTENT); + + getByTestId(TOOLBAR_BUTTON_ID).focus(); + + await waitFor(() => { + expect(getByTestId(TOOLTIP_ID)).not.toHaveClass('tw-opacity-0'); + }); + }); + + it('should forward draggableProps', async () => { + const onDragStub = vi.fn(); + + const { getByTestId } = render( + } + draggableProps={{ onDrag: onDragStub }} + />, + ); + + await fireEvent.drag(getByTestId(TOOLBAR_BUTTON_ID)); + + expect(onDragStub).toHaveBeenCalledOnce(); + }); + + it('should forward setActivatorNodeRef', async () => { + const setActivatorNodeRefStub = vi.fn(); + + render( + } + draggableProps={{}} + setActivatorNodeRef={setActivatorNodeRefStub} + />, + ); + + expect(setActivatorNodeRefStub).toHaveBeenCalledOnce(); + }); + + it('should display icon', async () => { + const { getByTestId } = render( + } draggableProps={{}} />, + ); + + const icons = [...getByTestId(TOOLBAR_BUTTON_ID).querySelectorAll('svg')]; + expect(icons).toHaveLength(1); + expect(icons[0].outerHTML).toMatch('IconAdobeCreativeCloud'); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.tsx new file mode 100644 index 000000000..c91de23ca --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.tsx @@ -0,0 +1,39 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { DEFAULT_DRAGGING_TOOLTIP, DEFAULT_DRAG_TOOLTIP } from '../../constants'; +import { useDragPreviewContext } from '../context/DragPreviewContext'; +import { BaseToolbarButton } from '../BaseToolbarButton'; +import { ToolbarButtonTooltip } from '../ToolbarButtonTooltip'; + +export type DragHandleToolbarButtonProps = { + icon: JSX.Element; + tooltip?: string; + draggableProps: Record; + setActivatorNodeRef?: (node: HTMLElement | null) => void; +}; + +export const DragHandleToolbarButton = ({ + tooltip, + icon, + setActivatorNodeRef, + draggableProps, +}: DragHandleToolbarButtonProps) => { + const isDragPreview = useDragPreviewContext(); + + return ( + {isDragPreview ? DEFAULT_DRAGGING_TOOLTIP : tooltip ?? DEFAULT_DRAG_TOOLTIP}
} + > + + {icon} + + + ); +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/index.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/index.ts new file mode 100644 index 000000000..7a5671117 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './DragHandleToolbarButton'; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.spec.tsx new file mode 100644 index 000000000..9046bacf8 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.spec.tsx @@ -0,0 +1,140 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { fireEvent, render, waitFor } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; +import { FlyoutToolbarButton } from './FlyoutToolbarButton'; +import { MultiFlyoutContextProvider } from '../context/MultiFlyoutContext'; +import { IconAdobeCreativeCloud } from '@frontify/fondue'; +import { DragPreviewContextProvider } from '../context/DragPreviewContext'; + +const BUTTON_ID = 'block-item-wrapper-toolbar-flyout'; +const TOOLTIP_ID = 'toolbar-button-tooltip'; + +const TEST_FLYOUT_ID = 'test'; +const TEST_TOOLTIP = 'tooltip'; +/** + * @vitest-environment happy-dom + */ + +describe('FlyoutToolbarButton', () => { + it('should log error if not inside a flyout provider when opening', async () => { + vi.spyOn(console, 'error'); + const { getByTestId } = render( + } + tooltip={TEST_TOOLTIP} + content="screen" + />, + ); + + await fireEvent.click(getByTestId(BUTTON_ID)); + + expect(console.error).toBeCalled(); + }); + + it('should use flyoutId in flyout context', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + + const { getByTestId } = render( + + } + tooltip={TEST_TOOLTIP} + content="children" + /> + , + ); + + await fireEvent.click(getByTestId(BUTTON_ID)); + + expect(setOpenFlyoutIdsStub).toHaveBeenCalled(); + const dispatchedStateResult = setOpenFlyoutIdsStub.mock.lastCall[0]([]); + expect(dispatchedStateResult).toEqual([TEST_FLYOUT_ID]); + }); + + it('should display content', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + + const { getByTestId } = render( + + } + tooltip={TEST_TOOLTIP} + flyoutFooter={
Footer
} + flyoutHeader={
Header
} + content={
Content
} + /> +
, + ); + + expect(getByTestId('content')).toBeVisible(); + expect(getByTestId('header')).toBeVisible(); + expect(getByTestId('footer')).toBeVisible(); + }); + + it('should show tooltip content', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + + const { getByTestId } = render( + + } + tooltip={TEST_TOOLTIP} + content="children" + /> + , + ); + + getByTestId(BUTTON_ID).focus(); + + await waitFor(() => expect(getByTestId(TOOLTIP_ID)).not.toHaveClass('tw-opacity-0')); + expect(getByTestId(TOOLTIP_ID)).toHaveTextContent(TEST_TOOLTIP); + }); + + it('should use supplied icon', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + + const { getByTestId } = render( + + } + tooltip={TEST_TOOLTIP} + content="content" + /> + , + ); + + const icons = [...getByTestId(BUTTON_ID).querySelectorAll('svg')]; + expect(icons).toHaveLength(1); + expect(icons[0].outerHTML).toMatch('IconAdobeCreativeCloud'); + }); + + it('should disable tooltip and flyout when content is inside drag preview', async () => { + const { getByTestId, queryByTestId } = render( + + + } + tooltip={TEST_TOOLTIP} + content={
Content
} + /> +
+
, + ); + + expect(getByTestId(TOOLTIP_ID)).toHaveClass('tw-opacity-0'); + + getByTestId(TOOLTIP_ID).focus(); + + await waitFor(() => { + expect(getByTestId(TOOLTIP_ID)).toHaveClass('tw-opacity-0'); + expect(queryByTestId('content')).toBeNull(); + }); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.tsx new file mode 100644 index 000000000..19c138d5f --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.tsx @@ -0,0 +1,61 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type MutableRefObject, type ReactNode } from 'react'; +import { useDragPreviewContext } from '../context/DragPreviewContext'; +import { ToolbarButtonTooltip } from '../ToolbarButtonTooltip'; +import { Flyout, FlyoutPlacement, useMemoizedId } from '@frontify/fondue'; +import { BaseToolbarButton } from '../BaseToolbarButton'; +import { useMultiFlyoutState } from '../hooks/useMultiFlyoutState'; + +export type FlyoutToolbarButtonProps = { + content: ReactNode; + icon: ReactNode; + tooltip: ReactNode; + flyoutId: string; + flyoutFooter?: ReactNode; + flyoutHeader?: ReactNode; +}; + +export const FlyoutToolbarButton = ({ + content, + icon, + tooltip, + flyoutId, + flyoutFooter, + flyoutHeader, +}: FlyoutToolbarButtonProps) => { + const id = useMemoizedId(flyoutId); + + const { isOpen, onOpenChange } = useMultiFlyoutState(id); + + const isDragPreview = useDragPreviewContext(); + + return ( + +
+ ( + } + > + {icon} + + )} + > + {content} + +
+
+ ); +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/index.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/index.ts new file mode 100644 index 000000000..21ac4f20c --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './FlyoutToolbarButton'; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.spec.tsx new file mode 100644 index 000000000..a7c0e65d2 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.spec.tsx @@ -0,0 +1,77 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { fireEvent, render, waitFor } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; +import { IconAdobeCreativeCloud } from '@frontify/fondue'; +import { MenuToolbarButton } from '.'; +import { MultiFlyoutContextProvider } from '../context/MultiFlyoutContext'; + +const BUTTON_ID = 'block-item-wrapper-toolbar-flyout'; +const MENU_ITEM_ID = 'menu-item'; +const TOOLTIP_ID = 'toolbar-button-tooltip'; + +const TEST_FLYOUT_ID = 'test'; +const TEST_TOOLTIP = 'tooltip'; +/** + * @vitest-environment happy-dom + */ + +describe('MenuToolbarButton', () => { + it('should log error if not inside a flyout provider when opening', async () => { + vi.spyOn(console, 'error'); + const { getByTestId } = render(); + + await fireEvent.click(getByTestId(BUTTON_ID)); + + expect(console.error).toBeCalled(); + }); + + it('should use flyout Id in flyout context', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + + const { getByTestId } = render( + + + , + ); + + await fireEvent.click(getByTestId(BUTTON_ID)); + + expect(setOpenFlyoutIdsStub).toHaveBeenCalled(); + const dispatchedStateResult = setOpenFlyoutIdsStub.mock.lastCall[0]([]); + expect(dispatchedStateResult).toEqual([TEST_FLYOUT_ID]); + }); + + it('should display menu items', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + + const { getAllByTestId } = render( + + }], + [{ title: 'item-2', onClick: vi.fn(), icon: }], + ]} + flyoutId={TEST_FLYOUT_ID} + /> + , + ); + + expect(getAllByTestId(MENU_ITEM_ID)).toHaveLength(2); + }); + + it('should show tooltip content', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + + const { getByTestId } = render( + + + , + ); + + getByTestId(BUTTON_ID).focus(); + + await waitFor(() => expect(getByTestId(TOOLTIP_ID)).not.toHaveClass('tw-opacity-0')); + expect(getByTestId(TOOLTIP_ID)).toHaveTextContent(TEST_TOOLTIP); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.tsx new file mode 100644 index 000000000..cad955d7c --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.tsx @@ -0,0 +1,30 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { IconDotsHorizontal16, useMemoizedId } from '@frontify/fondue'; +import { ToolbarFlyoutMenu, ToolbarFlyoutMenuItem } from './ToolbarFlyoutMenu'; +import { FlyoutToolbarButton } from '../FlyoutToolbarButton/FlyoutToolbarButton'; + +export const DEFAULT_MENU_BUTTON_ID = 'menu'; + +export type MenuToolbarButtonProps = { + items: ToolbarFlyoutMenuItem[][]; + flyoutId?: string; + tooltip?: string; +}; + +export const MenuToolbarButton = ({ + items, + flyoutId = DEFAULT_MENU_BUTTON_ID, + tooltip = 'Options', +}: MenuToolbarButtonProps) => { + const id = useMemoizedId(flyoutId); + + return ( + } + tooltip={tooltip} + flyoutId={id} + content={} + /> + ); +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.spec.tsx new file mode 100644 index 000000000..bff894384 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.spec.tsx @@ -0,0 +1,63 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { fireEvent, render } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; +import { IconAdobeCreativeCloud } from '@frontify/fondue'; +import { ToolbarFlyoutMenu } from './ToolbarFlyoutMenu'; +import { MultiFlyoutContextProvider } from '../context/MultiFlyoutContext'; + +const MENU_ITEM_ID = 'menu-item'; + +const TEST_FLYOUT_ID = 'test'; +/** + * @vitest-environment happy-dom + */ + +describe('ToolbarFlyoutMenu', () => { + it('should display menu items', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + + const { getAllByTestId } = render( + + }], + [{ title: 'item-2', onClick: vi.fn(), icon: }], + ]} + flyoutId={TEST_FLYOUT_ID} + /> + , + ); + + expect(getAllByTestId(MENU_ITEM_ID)).toHaveLength(2); + }); + + it('should close flyout onClick', async () => { + const setOpenFlyoutIdsStub = vi.fn(); + const onClickStub = vi.fn(); + + const { getByTestId } = render( + + , + }, + ], + ]} + flyoutId={TEST_FLYOUT_ID} + /> + , + ); + + expect(getByTestId(MENU_ITEM_ID)).toBeVisible(); + + await fireEvent.pointerUp(getByTestId(MENU_ITEM_ID)); + + expect(onClickStub).toHaveBeenCalledOnce(); + expect(setOpenFlyoutIdsStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.tsx new file mode 100644 index 000000000..38e762031 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.tsx @@ -0,0 +1,40 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { ActionMenu, MenuItemContentSize, MenuItemStyle } from '@frontify/fondue'; +import { useMultiFlyoutState } from '../hooks/useMultiFlyoutState'; + +export type ToolbarFlyoutMenuItem = { + title: string; + onClick: () => void; + icon: JSX.Element; + style?: MenuItemStyle; +}; + +export type ToolbarFlyoutMenuProps = { + items: ToolbarFlyoutMenuItem[][]; + flyoutId: string; +}; + +export const ToolbarFlyoutMenu = ({ items, flyoutId }: ToolbarFlyoutMenuProps) => { + const { onOpenChange } = useMultiFlyoutState(flyoutId); + + return ( + ({ + id: blockIndex.toString(), + menuItems: block.map((item, itemIndex) => ({ + id: blockIndex.toString() + itemIndex.toString(), + size: MenuItemContentSize.XSmall, + title: item.title, + style: item.style, + onClick: () => { + onOpenChange(false); + item.onClick(); + }, + initialValue: true, + decorator:
{item.icon}
, + })), + }))} + /> + ); +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/index.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/index.ts new file mode 100644 index 000000000..a9d462766 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './MenuToolbarButton'; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.spec.tsx index 19a6ee821..d277f54dc 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.spec.tsx +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.spec.tsx @@ -7,6 +7,9 @@ import { beforeAll, describe, expect, it, vi } from 'vitest'; import { AttachmentsProvider } from '../../../hooks/useAttachments'; import { Toolbar } from './Toolbar'; +import { MultiFlyoutContextProvider } from './context/MultiFlyoutContext'; +import { DEFAULT_ATTACHMENTS_BUTTON_ID, DEFAULT_MENU_BUTTON_ID } from '.'; +import { DragPreviewContextProvider } from './context/DragPreviewContext'; /** * @vitest-environment happy-dom @@ -31,25 +34,13 @@ describe('Toolbar', () => { it('should not throw error if toolbar does not have attachments enabled', () => { expect(() => - render( - , - ), + render(), ).not.toThrowError(); }); it('should throw error if toolbar does have attachments enabled without provider', () => { expect(() => - render( - , - ), + render(), ).toThrowError(); }); @@ -61,26 +52,28 @@ describe('Toolbar', () => { }); const ToolbarWithAttachments = () => ( - -
, - onClick: vi.fn(), - }, + + + , + onClick: vi.fn(), + }, + ], ], - ], - isOpen: true, - onOpenChange: vi.fn(), - }} - attachments={{ isEnabled: true, isOpen: true, onOpenChange: vi.fn() }} - isDragging={false} - /> - + }} + attachments={{ isEnabled: true }} + /> + + ); const { baseElement } = render(, { container: document.body }); @@ -98,26 +91,30 @@ describe('Toolbar', () => { }); const ToolbarWithAttachments = () => ( - - , - onClick: vi.fn(), - }, - ], - ], - isOpen: true, - onOpenChange: vi.fn(), - }} - attachments={{ isEnabled: true, isOpen: true, onOpenChange: vi.fn() }} - isDragging - /> - + + + + , + onClick: vi.fn(), + }, + ], + ], + }} + attachments={{ isEnabled: true }} + /> + + + ); const { baseElement } = render(, { container: document.body }); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.tsx index 8729cc481..2b9e30434 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.tsx +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/Toolbar.tsx @@ -1,133 +1,31 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { - ActionMenu, - Flyout, - IconDotsHorizontal16, - MenuItemContentSize, - LegacyTooltip as Tooltip, - TooltipPosition, -} from '@frontify/fondue'; - -import { DEFAULT_DRAGGING_TOOLTIP, DEFAULT_DRAG_TOOLTIP } from '../constants'; - import { ToolbarSegment } from './ToolbarSegment'; -import { ToolbarAttachments } from './ToolbarAttachments'; -import { getToolbarButtonClassNames } from './helpers'; +import { AttachmentsToolbarButton } from './AttachmentsToolbarButton'; import { type ToolbarProps } from './types'; +import { ToolbarButton } from './ToolbarButton'; +import { DragHandleToolbarButton } from './DragHandleToolbarButton'; +import { MenuToolbarButton } from './MenuToolbarButton'; -export const Toolbar = ({ items, flyoutMenu, attachments, isDragging }: ToolbarProps) => { - return ( -
- {attachments.isEnabled && ( - - - - )} +export const Toolbar = ({ items, flyoutMenu, attachments }: ToolbarProps) => ( +
+ {attachments.isEnabled && ( - {items.map((item, i) => - 'draggableProps' in item ? ( - - {isDragging ? DEFAULT_DRAGGING_TOOLTIP : item.tooltip ?? DEFAULT_DRAG_TOOLTIP} -
- } - triggerElement={ - - } - /> - ) : ( - {item.tooltip ?? ''}
} - triggerElement={ - - } - /> - ), - )} - {flyoutMenu.items.length > 0 && ( - Options} - triggerElement={ -
- - -
- } - > - ({ - id: blockIndex.toString(), - menuItems: block.map((item, itemIndex) => ({ - id: blockIndex.toString() + itemIndex.toString(), - size: MenuItemContentSize.XSmall, - title: item.title, - style: item.style, - onClick: () => { - flyoutMenu.onOpenChange(false); - item.onClick(); - }, - initialValue: true, - decorator:
{item.icon}
, - })), - }))} - /> - - - } - /> - )} + - - ); -}; + )} + + {items.map((item, i) => + 'draggableProps' in item ? ( + + ) : ( + + ), + )} + {flyoutMenu.items.length > 0 && } + + +); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachments.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachments.tsx deleted file mode 100644 index b7a79b777..000000000 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachments.tsx +++ /dev/null @@ -1,29 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { Attachments } from '../../Attachments'; -import { useAttachmentsContext } from '../../../hooks'; - -import { type ToolbarFlyoutState } from './types'; - -import { ToolbarAttachmentsTrigger } from './ToolbarAttachmentsTrigger'; - -export const ToolbarAttachments = ({ isOpen, onOpenChange }: ToolbarFlyoutState) => { - const { appBridge, attachments, onAttachmentsAdd, onAttachmentDelete, onAttachmentReplace, onAttachmentsSorted } = - useAttachmentsContext(); - - return ( - - ); -}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachmentsTrigger.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachmentsTrigger.tsx deleted file mode 100644 index 3629e6fb3..000000000 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarAttachmentsTrigger.tsx +++ /dev/null @@ -1,14 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { IconCaretDown12, IconPaperclip16 } from '@frontify/fondue'; -import { type AttachmentsTriggerProps } from '../../Attachments/types'; - -import { getToolbarButtonClassNames } from './helpers'; - -export const ToolbarAttachmentsTrigger = ({ children, isFlyoutOpen }: AttachmentsTriggerProps) => ( -
- - {children} - -
-); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.spec.tsx new file mode 100644 index 000000000..7f6593f5c --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.spec.tsx @@ -0,0 +1,70 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { fireEvent, render, waitFor } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; +import { ToolbarButton } from './ToolbarButton'; +import { IconAdobeCreativeCloud } from '@frontify/fondue'; +import { DragPreviewContextProvider } from '../context/DragPreviewContext'; + +const TOOLBAR_BUTTON_ID = 'block-item-wrapper-toolbar-btn'; +const TOOLTIP_ID = 'toolbar-button-tooltip'; + +const TOOLTIP_CONTENT = 'content'; + +/** + * @vitest-environment happy-dom + */ + +describe('ToolbarButton', () => { + it('should disable tooltip when item is in drag preview context', async () => { + const { getByTestId } = render( + + } /> + , + ); + + expect(getByTestId(TOOLTIP_ID)).toHaveClass('tw-opacity-0'); + + getByTestId(TOOLTIP_ID).focus(); + + await waitFor(() => { + expect(getByTestId(TOOLTIP_ID)).toHaveClass('tw-opacity-0'); + }); + }); + + it('should show tooltip when item is focused', async () => { + const { getByTestId } = render( + } />, + ); + + expect(getByTestId(TOOLTIP_ID)).toHaveClass('tw-opacity-0'); + expect(getByTestId(TOOLTIP_ID)).toHaveTextContent(TOOLTIP_CONTENT); + + getByTestId(TOOLTIP_ID).focus(); + + await waitFor(() => { + expect(getByTestId(TOOLTIP_ID)).not.toHaveClass('tw-opacity-0'); + }); + }); + + it('should trigger onClick', async () => { + const onClickStub = vi.fn(); + const { getByTestId } = render( + } />, + ); + + await fireEvent.click(getByTestId(TOOLBAR_BUTTON_ID)); + + expect(onClickStub).toHaveBeenCalledOnce(); + }); + + it('should display icon', async () => { + const { getByTestId } = render( + } />, + ); + + const icons = [...getByTestId(TOOLBAR_BUTTON_ID).querySelectorAll('svg')]; + expect(icons).toHaveLength(1); + expect(icons[0].outerHTML).toMatch('IconAdobeCreativeCloud'); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.tsx new file mode 100644 index 000000000..ba6bdc9cb --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.tsx @@ -0,0 +1,19 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useDragPreviewContext } from '../context/DragPreviewContext'; +import { BaseToolbarButton } from '../BaseToolbarButton'; +import { ToolbarButtonTooltip } from '../ToolbarButtonTooltip'; + +export type ToolbarButtonProps = { icon: JSX.Element; tooltip?: string; onClick: () => void }; + +export const ToolbarButton = ({ tooltip, icon, onClick }: ToolbarButtonProps) => { + const isDragPreview = useDragPreviewContext(); + + return ( + + + {icon} + + + ); +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButton/index.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButton/index.ts new file mode 100644 index 000000000..3edd21890 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButton/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './ToolbarButton'; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButtonTooltip.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButtonTooltip.tsx new file mode 100644 index 000000000..f89183e4c --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/ToolbarButtonTooltip.tsx @@ -0,0 +1,25 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { LegacyTooltip as Tooltip, TooltipPosition } from '@frontify/fondue'; +import { ReactElement, ReactNode } from 'react'; + +type ToolbarButtonTooltipProps = { + content: ReactNode; + children: ReactElement; + open?: boolean; + disabled?: boolean; +}; + +export const ToolbarButtonTooltip = ({ open, content, children, disabled }: ToolbarButtonTooltipProps) => ( + {content}} + triggerElement={children} + data-test-id="toolbar-button-tooltip" + /> +); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/context/DragPreviewContext.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/context/DragPreviewContext.tsx new file mode 100644 index 000000000..f55cf43a3 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/context/DragPreviewContext.tsx @@ -0,0 +1,15 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type ReactNode, createContext, useContext } from 'react'; + +const DragPreviewContext = createContext(false); + +export const DragPreviewContextProvider = ({ + children, + isDragPreview, +}: { + children: ReactNode; + isDragPreview: boolean; +}) => {children}; + +export const useDragPreviewContext = () => useContext(DragPreviewContext); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/context/MultiFlyoutContext.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/context/MultiFlyoutContext.tsx new file mode 100644 index 000000000..03f8aa181 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/context/MultiFlyoutContext.tsx @@ -0,0 +1,25 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { Dispatch, ReactNode, SetStateAction, createContext, useContext, useMemo } from 'react'; + +export type MultiFlyoutContextType = { + openFlyoutIds: string[]; + setOpenFlyoutIds: Dispatch>; +}; + +const MultiFlyoutContext = createContext({ + openFlyoutIds: [], + setOpenFlyoutIds: () => console.error('No MultiFlyoutContext Provider found'), +}); + +export const MultiFlyoutContextProvider = ({ + children, + openFlyoutIds, + setOpenFlyoutIds, +}: { children: ReactNode } & MultiFlyoutContextType) => { + const memoizedContext = useMemo(() => ({ openFlyoutIds, setOpenFlyoutIds }), [openFlyoutIds, setOpenFlyoutIds]); + + return {children}; +}; + +export const useMultiFlyoutContext = () => useContext(MultiFlyoutContext); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/helpers.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/helpers.ts index 3801abe20..df7e81835 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/helpers.ts +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/helpers.ts @@ -25,7 +25,7 @@ export const getToolbarButtonClassNames = (cursor: 'grab' | 'pointer', forceActi classNames.push( 'hover:tw-bg-box-neutral-hover active:tw-bg-box-neutral-pressed', 'tw-text-text-weak hover:tw-text-box-neutral-inverse-hover active:tw-text-box-neutral-inverse-pressed', - cursor === 'grab' ? 'tw-cursor-grab active:tw-cursor-grabbing' : 'tw-cursor-pointer', + cursor === 'grab' ? '!tw-cursor-grab active:tw-cursor-grabbing' : 'tw-cursor-pointer', ); } diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.spec.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.spec.tsx new file mode 100644 index 000000000..4d0c17bb8 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.spec.tsx @@ -0,0 +1,59 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; +import { useMultiFlyoutState } from './useMultiFlyoutState'; +import { MultiFlyoutContextProvider, MultiFlyoutContextType } from '../context/MultiFlyoutContext'; + +const FLYOUT_ID = 'flyout'; + +const renderMultiFlyoutState = ({ openFlyoutIds, setOpenFlyoutIds }: MultiFlyoutContextType) => + renderHook(() => useMultiFlyoutState(FLYOUT_ID), { + wrapper: ({ children }) => ( + + {children} + + ), + }); + +describe('useMultiFlyoutState', () => { + it('should be open when flyout id in context array', () => { + const { result } = renderMultiFlyoutState({ openFlyoutIds: [FLYOUT_ID], setOpenFlyoutIds: vi.fn() }); + expect(result.current.isOpen).toEqual(true); + }); + + it('should be closed when flyout id is not in context array', () => { + const { result } = renderMultiFlyoutState({ openFlyoutIds: [], setOpenFlyoutIds: vi.fn() }); + expect(result.current.isOpen).toEqual(false); + }); + + it('should add id to array when opening', () => { + const setOpenFlyoutIdsStub = vi.fn(); + const { result } = renderMultiFlyoutState({ openFlyoutIds: [], setOpenFlyoutIds: setOpenFlyoutIdsStub }); + + result.current.onOpenChange(true); + const dispatchedResult = setOpenFlyoutIdsStub.mock.lastCall[0]([]); + + expect(dispatchedResult).toEqual([FLYOUT_ID]); + }); + + it('should remove id from array when closing', () => { + const setOpenFlyoutIdsStub = vi.fn(); + const { result } = renderMultiFlyoutState({ openFlyoutIds: [], setOpenFlyoutIds: setOpenFlyoutIdsStub }); + + result.current.onOpenChange(false); + const dispatchedResult = setOpenFlyoutIdsStub.mock.lastCall[0]([FLYOUT_ID]); + + expect(dispatchedResult).toEqual([]); + }); + + it('should remove duplicates from array', () => { + const setOpenFlyoutIdsStub = vi.fn(); + const { result } = renderMultiFlyoutState({ openFlyoutIds: [], setOpenFlyoutIds: setOpenFlyoutIdsStub }); + + result.current.onOpenChange(true); + const dispatchedResult = setOpenFlyoutIdsStub.mock.lastCall[0]([FLYOUT_ID, FLYOUT_ID, FLYOUT_ID]); + + expect(dispatchedResult).toEqual([FLYOUT_ID]); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.ts new file mode 100644 index 000000000..1de15b5e7 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.ts @@ -0,0 +1,24 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useCallback } from 'react'; +import { useMultiFlyoutContext } from '../context/MultiFlyoutContext'; + +export const useMultiFlyoutState = (flyoutId: string) => { + const { openFlyoutIds, setOpenFlyoutIds } = useMultiFlyoutContext(); + + const onOpenChange = useCallback( + (isFlyoutOpen: boolean) => { + setOpenFlyoutIds((currentIds) => { + const filteredIds = currentIds.filter((id) => id !== flyoutId); + if (!isFlyoutOpen) { + return filteredIds; + } else { + return [...filteredIds, flyoutId]; + } + }); + }, + [flyoutId, setOpenFlyoutIds], + ); + + return { isOpen: openFlyoutIds.includes(flyoutId), onOpenChange }; +}; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/index.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/index.ts index 56eaa7e39..0ca44156d 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/index.ts +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/index.ts @@ -1,4 +1,8 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './Toolbar'; +export * from './AttachmentsToolbarButton'; +export * from './DragHandleToolbarButton'; +export * from './FlyoutToolbarButton'; +export * from './MenuToolbarButton'; export * from './types'; diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/types.ts b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/types.ts index fdae73bfd..b87e962e8 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/types.ts +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/Toolbar/types.ts @@ -1,38 +1,19 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type MenuItemStyle } from '@frontify/fondue'; +import { type ToolbarButtonProps } from './ToolbarButton'; +import { type ToolbarFlyoutMenuItem } from './MenuToolbarButton/ToolbarFlyoutMenu'; +import { DragHandleToolbarButtonProps } from '.'; export type ToolbarProps = { items: ToolbarItem[]; - flyoutMenu: ToolbarFlyoutState & { items: FlyoutToolbarItem[][] }; - attachments: ToolbarFlyoutState & { isEnabled: boolean }; - isDragging?: boolean; + flyoutMenu: { items: ToolbarFlyoutMenuItem[][] }; + attachments: { isEnabled: boolean }; }; -export type ToolbarFlyoutState = { - isOpen: boolean; - onOpenChange: (isOpen: boolean) => void; -}; +export type DraghandleToolbarItem = DragHandleToolbarButtonProps; -type BaseToolbarItem = { - icon: JSX.Element; - tooltip?: string; -}; +export type ButtonToolbarItem = ToolbarButtonProps; -type DraghandleToolbarItem = BaseToolbarItem & { - draggableProps: Record; - setActivatorNodeRef?: (node: HTMLElement | null) => void; -}; - -type ButtonToolbarItem = BaseToolbarItem & { - onClick: () => void; -}; +export type FlyoutToolbarItem = ToolbarFlyoutMenuItem; export type ToolbarItem = DraghandleToolbarItem | ButtonToolbarItem; - -export type FlyoutToolbarItem = { - title: string; - onClick: () => void; - icon: JSX.Element; - style?: MenuItemStyle; -}; diff --git a/packages/guideline-blocks-settings/src/helpers/mapColorPalettes.spec.ts b/packages/guideline-blocks-settings/src/helpers/mapColorPalettes.spec.ts index f33fbd9ef..1a31d3b1e 100644 --- a/packages/guideline-blocks-settings/src/helpers/mapColorPalettes.spec.ts +++ b/packages/guideline-blocks-settings/src/helpers/mapColorPalettes.spec.ts @@ -2,6 +2,7 @@ import { describe, expect, it } from 'vitest'; import { mapAppBridgeColorPalettesToFonduePalettes } from './mapColorPalettes'; +import { ColorDummy } from '@frontify/app-bridge'; describe('mapAppBridgeColorPalettesToFonduePalettes', () => { it('should map app bridge color palette to fondue palette', () => { @@ -10,107 +11,7 @@ describe('mapAppBridgeColorPalettesToFonduePalettes', () => { id: 19, name: 'Awesome color palette', description: 'This is an awesome color palette', - colors: [ - { - id: 6, - name: 'Tarawera', - sort: 1, - nameCss: 'tarawera', - hex: '0b486b', - red: 11, - green: 72, - blue: 107, - alpha: 255, - hue: 202, - saturation: 81, - lightness: 23, - c: 90, - m: 33, - y: 0, - k: 58, - pantone: null, - ral: null, - oracal: null, - pantoneCoated: null, - pantoneUncoated: null, - cmykCoated: null, - cmykUncoated: null, - cmykNewspaper: null, - ncs: null, - pantoneCp: null, - pantonePlastics: null, - pantoneTextile: null, - hks: null, - threeM: null, - lab: null, - }, - { - id: 7, - name: 'Oracle', - sort: 2, - nameCss: 'oracle', - hex: '3b8686', - red: 59, - green: 134, - blue: 134, - alpha: 255, - hue: 180, - saturation: 39, - lightness: 38, - c: 56, - m: 0, - y: 0, - k: 47, - pantone: null, - ral: null, - oracal: null, - pantoneCoated: null, - pantoneUncoated: null, - cmykCoated: null, - cmykUncoated: null, - cmykNewspaper: null, - ncs: null, - pantoneCp: null, - pantonePlastics: null, - pantoneTextile: null, - hks: null, - threeM: null, - lab: null, - }, - { - id: 8, - name: 'Silver Tree', - sort: 3, - nameCss: 'silver-tree', - hex: '79bd9a', - red: 121, - green: 189, - blue: 154, - alpha: 255, - hue: 149, - saturation: 34, - lightness: 61, - c: 36, - m: 0, - y: 19, - k: 26, - pantone: null, - ral: null, - oracal: null, - pantoneCoated: null, - pantoneUncoated: null, - cmykCoated: null, - cmykUncoated: null, - cmykNewspaper: null, - ncs: null, - pantoneCp: null, - pantonePlastics: null, - pantoneTextile: null, - hks: null, - threeM: null, - lab: null, - }, - ], + colors: [ColorDummy.green(), ColorDummy.yellow(), ColorDummy.red()], }, ]); expect(result).toEqual([ @@ -120,24 +21,24 @@ describe('mapAppBridgeColorPalettesToFonduePalettes', () => { colors: [ { alpha: 1, - red: 11, - green: 72, - blue: 107, - name: 'Tarawera', + blue: 0, + green: 255, + red: 0, + name: 'Green', }, { alpha: 1, - red: 59, - green: 134, - blue: 134, - name: 'Oracle', + blue: 0, + green: 255, + red: 255, + name: 'Yellow', }, { alpha: 1, - red: 121, - green: 189, - blue: 154, - name: 'Silver Tree', + blue: 0, + green: 0, + red: 255, + name: 'Red', }, ], }, diff --git a/packages/guideline-blocks-settings/src/helpers/mapColorPalettes.ts b/packages/guideline-blocks-settings/src/helpers/mapColorPalettes.ts index ff475ffea..01180ab5e 100644 --- a/packages/guideline-blocks-settings/src/helpers/mapColorPalettes.ts +++ b/packages/guideline-blocks-settings/src/helpers/mapColorPalettes.ts @@ -3,20 +3,63 @@ import { ColorPalette } from '@frontify/app-bridge'; import { Palette } from '@frontify/fondue'; +type Nullable = T | null; + +type V3Color = { + id: number; + name: Nullable; + red: Nullable; + green: Nullable; + blue: Nullable; + alpha: Nullable; +}; + +type V4Color = { + id: number; + title: Nullable; + revision: { + rgba: { + red: Nullable; + green: Nullable; + blue: Nullable; + alpha: Nullable; + }; + }; +}; + +type Color = V3Color | V4Color; + export const mapAppBridgeColorPalettesToFonduePalettes = (colorPalettes: ColorPalette[]): Palette[] => { return colorPalettes.map(mapAppBridgeColorPaletteToFonduePalette); }; - export const mapAppBridgeColorPaletteToFonduePalette = (colorPalette: ColorPalette): Palette => { return { id: colorPalette.id, title: colorPalette.name, - colors: colorPalette.colors.map((color) => ({ - alpha: color.alpha ? color.alpha / 255 : 1, - red: color.red ?? 0, - green: color.green ?? 0, - blue: color.blue ?? 0, - name: color.name ?? '', - })), + colors: colorPalette.colors.map(mapColor), + }; +}; + +const isV4Color = (color: Color): color is V4Color => { + return 'revision' in color; +}; + +const mapColor = (color: Color) => { + if (isV4Color(color)) { + const { title, revision } = color; + return { + alpha: revision.rgba.alpha ? revision.rgba.alpha / 255 : 1, + red: revision.rgba.red ?? 0, + green: revision.rgba.green ?? 0, + blue: revision.rgba.blue ?? 0, + name: title ?? '', + }; + } + return { + alpha: color.alpha ? color.alpha / 255 : 1, + red: color.red ?? 0, + green: color.green ?? 0, + blue: color.blue ?? 0, + name: color.name ?? '', }; }; diff --git a/packages/guideline-blocks-settings/src/hooks/useAttachments.spec.tsx b/packages/guideline-blocks-settings/src/hooks/useAttachments.spec.tsx index ddf5c1851..717b8dab9 100644 --- a/packages/guideline-blocks-settings/src/hooks/useAttachments.spec.tsx +++ b/packages/guideline-blocks-settings/src/hooks/useAttachments.spec.tsx @@ -26,6 +26,7 @@ describe('useAttachments', async () => { const STUB_WITH_THREE_ASSETS = getAppBridgeBlockStub({ blockId: 2, blockAssets: { [MOCK_SETTINGS_ID]: [AssetDummy.with(1), AssetDummy.with(2), AssetDummy.with(3)] }, + editorState: true, }); const { result } = renderHook(() => useAttachments(STUB_WITH_THREE_ASSETS, MOCK_SETTINGS_ID)); diff --git a/packages/guideline-blocks-settings/tsconfig.json b/packages/guideline-blocks-settings/tsconfig.json index 4ba37ef8d..b8274abd4 100644 --- a/packages/guideline-blocks-settings/tsconfig.json +++ b/packages/guideline-blocks-settings/tsconfig.json @@ -22,6 +22,6 @@ "skipLibCheck": true, "types": ["cypress", "node", "cypress-real-events"] }, - "include": ["src/**/*"], + "include": ["src/**/*", "./setupTests.ts"], "exclude": ["node_modules", "dist"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ab86dba3..f330af995 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -278,6 +278,9 @@ importers: '@frontify/eslint-config-typescript': specifier: ^0.16.2 version: 0.16.2(eslint@8.54.0)(prettier@3.1.0)(typescript@5.3.2) + '@testing-library/jest-dom': + specifier: ^6.4.2 + version: 6.4.2(vitest@0.34.6) '@testing-library/react': specifier: ^14.1.2 version: 14.1.2(react-dom@18.2.0)(react@18.2.0) @@ -453,6 +456,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@adobe/css-tools@4.3.3: + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + dev: true + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -3921,6 +3928,38 @@ packages: pretty-format: 27.5.1 dev: true + /@testing-library/jest-dom@6.4.2(vitest@0.34.6): + resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + dependencies: + '@adobe/css-tools': 4.3.3 + '@babel/runtime': 7.21.0 + aria-query: 5.1.3 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + vitest: 0.34.6(happy-dom@12.10.3) + dev: true + /@testing-library/react@14.1.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==} engines: {node: '>=14'} @@ -7607,6 +7646,14 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -8258,6 +8305,10 @@ packages: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dev: true + /dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: From 029dd26b26734539e80af86bcaa49d2caf9a7771 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Fri, 16 Feb 2024 12:56:57 +0100 Subject: [PATCH 014/182] feat: add new color type (#734) * feat: add new color type and use it for getColors * replace all Color with ProjectColor * feat: ProjectColor should be Color * revert: changes that shouldn't happen * fix colorPatch * fix: cleaner color type * add changeset * fix: improved type * suffix new types * add partialDeep for patch * improve color type * fix: change key to black * fix: dummy * remove redundancy * fix typecheck * fix ColorPatch --- .changeset/polite-eels-shake.md | 5 + packages/app-bridge/src/tests/ColorDummy.ts | 235 +++++++++++--------- packages/app-bridge/src/types/Color.ts | 65 ++++-- 3 files changed, 181 insertions(+), 124 deletions(-) create mode 100644 .changeset/polite-eels-shake.md diff --git a/.changeset/polite-eels-shake.md b/.changeset/polite-eels-shake.md new file mode 100644 index 000000000..ee9ca6583 --- /dev/null +++ b/.changeset/polite-eels-shake.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: adjust the color type to have a revision diff --git a/packages/app-bridge/src/tests/ColorDummy.ts b/packages/app-bridge/src/tests/ColorDummy.ts index 03b22d1d2..ca59cc7d8 100644 --- a/packages/app-bridge/src/tests/ColorDummy.ts +++ b/packages/app-bridge/src/tests/ColorDummy.ts @@ -6,108 +6,127 @@ export class ColorDummy { static red(id = 767): Color { return { id, - name: 'Red', sort: 1, - nameCss: 'red', - hex: 'ff0000', - red: 255, - green: 0, - blue: 0, - alpha: 255, - hue: 361, - saturation: 100, - lightness: 46, - c: 0, - m: 100, - y: 100, - k: 0, - pantone: null, - ral: null, - oracal: null, - pantoneCoated: null, - pantoneUncoated: null, - cmykCoated: null, - cmykUncoated: null, - cmykNewspaper: null, - ncs: null, - pantoneCp: null, - pantonePlastics: null, - pantoneTextile: null, - hks: null, - threeM: null, - lab: null, + title: 'Red', + revision: { + nameCss: 'red', + hex: 'ff0000', + hue: 361, + saturation: 100, + lightness: 46, + rgba: { red: 255, green: 0, blue: 0, alpha: 255 }, + cmyk: { + cyan: 0, + magenta: 100, + yellow: 100, + black: 0, + coated: null, + uncoated: null, + newspaper: null, + }, + pantone: { + code: null, + coated: null, + uncoated: null, + cp: null, + plastics: null, + textile: null, + }, + ral: null, + oracal: null, + ncs: null, + hks: null, + threeM: null, + lab: null, + }, }; } static yellow(id = 768): Color { return { id, - name: 'Yellow', sort: 2, - nameCss: 'yellow', - red: 255, - green: 255, - blue: 0, - hex: 'ffff00', - alpha: 255, - hue: 361, - saturation: 100, - lightness: 46, - c: 0, - m: 0, - y: 100, - k: 0, - pantone: null, - ral: null, - oracal: null, - pantoneCoated: null, - pantoneUncoated: null, - cmykCoated: null, - cmykUncoated: null, - cmykNewspaper: null, - ncs: null, - pantoneCp: null, - pantonePlastics: null, - pantoneTextile: null, - hks: null, - threeM: null, - lab: null, + title: 'Yellow', + revision: { + nameCss: 'yellow', + hex: 'ffff00', + hue: 361, + saturation: 100, + lightness: 46, + ral: null, + oracal: null, + ncs: null, + hks: null, + threeM: null, + lab: null, + rgba: { + red: 255, + green: 255, + blue: 0, + alpha: 255, + }, + cmyk: { + cyan: 0, + magenta: 0, + yellow: 100, + black: 0, + coated: null, + uncoated: null, + newspaper: null, + }, + pantone: { + code: null, + coated: null, + uncoated: null, + cp: null, + plastics: null, + textile: null, + }, + }, }; } static green(id = 769): Color { return { id, - name: 'Green', sort: 3, - nameCss: 'green', - red: 0, - green: 255, - blue: 0, - hex: '00ff00', - alpha: 255, - hue: 361, - saturation: 100, - lightness: 46, - c: 100, - m: 0, - y: 100, - k: 0, - pantone: null, - ral: null, - oracal: null, - pantoneCoated: null, - pantoneUncoated: null, - cmykCoated: null, - cmykUncoated: null, - cmykNewspaper: null, - ncs: null, - pantoneCp: null, - pantonePlastics: null, - pantoneTextile: null, - hks: null, - threeM: null, - lab: null, + title: 'Green', + revision: { + nameCss: 'green', + hex: '00ff00', + ral: null, + oracal: null, + ncs: null, + hks: null, + threeM: null, + lab: null, + hue: 361, + saturation: 100, + lightness: 46, + rgba: { + red: 0, + green: 255, + blue: 0, + alpha: 255, + }, + cmyk: { + cyan: 100, + magenta: 0, + yellow: 100, + black: 0, + coated: null, + uncoated: null, + newspaper: null, + }, + pantone: { + code: null, + coated: null, + uncoated: null, + cp: null, + plastics: null, + textile: null, + }, + }, }; } } @@ -127,32 +146,38 @@ export class ColorCreateDummy { export class ColorPatchDummy { static red(): ColorPatch { return { - name: 'Red', + title: 'Red', sort: 1, nameCss: 'red', - red: 255, - green: 0, - blue: 0, - alpha: 255, - c: 0, - m: 100, - y: 100, - k: 0, - pantone: null, ral: null, oracal: null, - pantoneCoated: null, - pantoneUncoated: null, - cmykCoated: null, - cmykUncoated: null, - cmykNewspaper: null, ncs: null, - pantoneCp: null, - pantonePlastics: null, - pantoneTextile: null, hks: null, threeM: null, lab: null, + rgba: { + red: 255, + green: 0, + blue: 0, + alpha: 255, + }, + cmyk: { + cyan: 0, + magenta: 100, + yellow: 100, + black: 0, + coated: null, + uncoated: null, + newspaper: null, + }, + pantone: { + code: null, + coated: null, + uncoated: null, + cp: null, + plastics: null, + textile: null, + }, }; } } diff --git a/packages/app-bridge/src/types/Color.ts b/packages/app-bridge/src/types/Color.ts index 8bb3f210a..de12bf1e6 100644 --- a/packages/app-bridge/src/types/Color.ts +++ b/packages/app-bridge/src/types/Color.ts @@ -1,5 +1,7 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ +import { PartialDeep } from 'type-fest'; + export type ColorApi = { id: number; creator: number; @@ -94,36 +96,30 @@ export type ColorApiPatch = Partial<{ export type Color = { id: number; - name: Nullable; sort: number; +} & ColorAsset; + +// This type should be evolved to Asset in the long run +export type ColorAsset = { + title: Nullable; + revision: ColorRevision; +}; + +export type ColorRevision = { nameCss: Nullable; hex: Nullable; - red: Nullable; - green: Nullable; - blue: Nullable; - alpha: Nullable; hue: number; saturation: number; lightness: Nullable; - c: Nullable; - m: Nullable; - y: Nullable; - k: Nullable; - pantone: Nullable; ral: Nullable; oracal: Nullable; - pantoneCoated: Nullable; - pantoneUncoated: Nullable; - cmykCoated: Nullable; - cmykUncoated: Nullable; - cmykNewspaper: Nullable; ncs: Nullable; - pantoneCp: Nullable; - pantonePlastics: Nullable; - pantoneTextile: Nullable; hks: Nullable; threeM: Nullable; lab: Nullable; + cmyk: CmykColor; + rgba: RgbaColor; + pantone: PantoneColor; }; export type ColorCreate = { @@ -134,4 +130,35 @@ export type ColorCreate = { alpha: number; }; -export type ColorPatch = Partial>; +export type ColorPatch = PartialDeep< + Omit & { + title: Nullable; + sort: number; + } +>; + +type RgbaColor = { + red: Nullable; + green: Nullable; + blue: Nullable; + alpha: Nullable; +}; + +type CmykColor = { + cyan: Nullable; + magenta: Nullable; + yellow: Nullable; + black: Nullable; + coated: Nullable; + uncoated: Nullable; + newspaper: Nullable; +}; + +type PantoneColor = { + code: Nullable; + coated: Nullable; + uncoated: Nullable; + cp: Nullable; + plastics: Nullable; + textile: Nullable; +}; From 40094fab0577bdf94ba39d5226daf4121911611b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Feb 2024 13:05:28 +0100 Subject: [PATCH 015/182] chore: release packages (alpha) (#762) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 7d6d188c3..9bec720a9 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -11,6 +11,7 @@ "changesets": [ "kind-fishes-flash", "pink-bugs-behave", + "polite-eels-shake", "stale-hairs-wash" ] } diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 833e76c0d..cdcacc607 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.3 + +### Patch Changes + +- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision + ## 4.0.0-alpha.2 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index fee4710ec..48c46c97a 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.2", + "version": "4.0.0-alpha.3", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From 0b815c99ff2ecdc28ab134dac149064491394acb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 23:37:09 +0100 Subject: [PATCH 016/182] chore: release packages (alpha) (#768) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 9bec720a9..d380cbb63 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,6 +10,7 @@ }, "changesets": [ "kind-fishes-flash", + "orange-jokes-listen", "pink-bugs-behave", "polite-eels-shake", "stale-hairs-wash" diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index c3ede16ab..15c1e16a9 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.4 + +### Patch Changes + +- Merge main into dev + ## 3.3.1 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 5317ce05a..efa639070 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.3", + "version": "4.0.0-alpha.4", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From a4822db8bb86c2516241395963979369e0311a7a Mon Sep 17 00:00:00 2001 From: Oliver Schwendener Date: Tue, 20 Feb 2024 15:41:41 +0100 Subject: [PATCH 017/182] fix: document page duplication return type (#769) * fix: document page duplication return type * chore: changeset --------- Co-authored-by: Samuel Alev --- .changeset/cuddly-pets-hammer.md | 5 +++++ packages/app-bridge/src/AppBridgeTheme.ts | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .changeset/cuddly-pets-hammer.md diff --git a/.changeset/cuddly-pets-hammer.md b/.changeset/cuddly-pets-hammer.md new file mode 100644 index 000000000..b2bab11a7 --- /dev/null +++ b/.changeset/cuddly-pets-hammer.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +fix: document page duplication return type diff --git a/packages/app-bridge/src/AppBridgeTheme.ts b/packages/app-bridge/src/AppBridgeTheme.ts index e1acddfb8..9de29e220 100644 --- a/packages/app-bridge/src/AppBridgeTheme.ts +++ b/packages/app-bridge/src/AppBridgeTheme.ts @@ -41,7 +41,6 @@ import type { DocumentLinkCreate, DocumentLinkUpdate, DocumentPage, - DocumentPageApi, DocumentPageCreate, DocumentPageTargets, DocumentPageUpdate, @@ -256,7 +255,7 @@ export interface AppBridgeTheme< documentCategoryId?: number, ): Promise; - duplicateDocumentPage(documentPageId: number): Promise; + duplicateDocumentPage(documentPageId: number): Promise; createCoverPage(coverPage: CoverPageCreate): Promise; From 5e4178c1e1028cec2af73bd34fedf56078f8b42c Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Tue, 20 Feb 2024 09:53:52 -0500 Subject: [PATCH 018/182] chore: add changeset --- .changeset/neat-plants-smile.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/neat-plants-smile.md diff --git a/.changeset/neat-plants-smile.md b/.changeset/neat-plants-smile.md new file mode 100644 index 000000000..1003ebd33 --- /dev/null +++ b/.changeset/neat-plants-smile.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +Merge main into dev From e9419508b37c5a66a3a83603f0e035574b2b344a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 16:02:28 +0100 Subject: [PATCH 019/182] chore: release packages (alpha) (#771) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ packages/app-bridge/CHANGELOG.md | 8 ++++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index d380cbb63..60e60cbad 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -9,7 +9,9 @@ "@frontify/platform-app": "0.0.5" }, "changesets": [ + "cuddly-pets-hammer", "kind-fishes-flash", + "neat-plants-smile", "orange-jokes-listen", "pink-bugs-behave", "polite-eels-shake", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index f01fc2c7e..45c80d028 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,13 @@ # @frontify/app-bridge +## 4.0.0-alpha.5 + +### Patch Changes + +- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type + +- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev + ## 3.3.2 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index efa639070..cfefae22f 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.4", + "version": "4.0.0-alpha.5", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From 3e44c596628abcad11414eb26a954f4cb6eea097 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Wed, 21 Feb 2024 15:37:14 +0100 Subject: [PATCH 020/182] feat: switch to v4 (#772) * chore: switch to v43 * Create lovely-books-hear.md --- .changeset/lovely-books-hear.md | 5 +++++ packages/app-bridge/src/AppBridgePlatformApp.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/lovely-books-hear.md diff --git a/.changeset/lovely-books-hear.md b/.changeset/lovely-books-hear.md new file mode 100644 index 000000000..d272a7449 --- /dev/null +++ b/.changeset/lovely-books-hear.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: switch to platformAppBridge to v4 diff --git a/packages/app-bridge/src/AppBridgePlatformApp.ts b/packages/app-bridge/src/AppBridgePlatformApp.ts index 074ba69b7..f61a60c28 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.ts @@ -123,7 +123,7 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { notify(Topic.Init, PUBSUB_CHECKSUM, { token: getQueryParameters(window.location.href).token, - appBridgeVersion: 'v3', + appBridgeVersion: 'v4', }); subscribe(Topic.Init, PUBSUB_CHECKSUM).then(({ statePort, apiPort, context, state }) => { From 7a80244b2ebf075f93a492513970b3ee2c92dc80 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Wed, 21 Feb 2024 16:56:56 +0100 Subject: [PATCH 021/182] feat: Adjust PlatformAppContext (#774) * chore: add platformAppContext * Create nervous-walls-repair.md --- .changeset/nervous-walls-repair.md | 6 ++++ .../app-bridge/src/AppBridgePlatformApp.ts | 33 +++++++++---------- 2 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 .changeset/nervous-walls-repair.md diff --git a/.changeset/nervous-walls-repair.md b/.changeset/nervous-walls-repair.md new file mode 100644 index 000000000..88164ccee --- /dev/null +++ b/.changeset/nervous-walls-repair.md @@ -0,0 +1,6 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: Adjust PlatformAppContext +refactor: rename from type to surface diff --git a/packages/app-bridge/src/AppBridgePlatformApp.ts b/packages/app-bridge/src/AppBridgePlatformApp.ts index f61a60c28..4127bb8db 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.ts @@ -50,24 +50,22 @@ type AppBaseProps = { token: string; marketplaceServiceAppId: string; connected: boolean; + settings: { [key: string]: string }; + brandId: number; + domain: string; + parentId: string; }; -export type PlatformAppContext = AppBaseProps & - ( - | { - brandId: string; - domain: string; - parentId: string; - type: 'assetCreation'; - } - | { - assetId: string; - brandId: string; - domain: string; - parentId: string; - type: 'assetAction'; - } - ); +export type AssetActionContext = { + surface: 'assetAction'; + assetId: string; +} & AppBaseProps; + +export type AssetCreationContext = { + surface: 'assetCreation'; +} & AppBaseProps; + +export type PlatformAppContext = AssetActionContext | AssetCreationContext; export type PlatformAppEvent = EventNameValidator< StateAsEventName & @@ -91,8 +89,9 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { 'Context.brandId': new Map(), 'Context.parentId': new Map(), 'Context.domain': new Map(), - 'Context.type': new Map(), + 'Context.surface': new Map(), 'Context.connected': new Map(), + 'Context.settings': new Map(), }; api( From 4ca4225fbe3b5715def912d2fd076668dfe9df64 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 17:27:17 +0100 Subject: [PATCH 022/182] chore: release packages (alpha) (#773) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ packages/app-bridge/CHANGELOG.md | 9 +++++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 60e60cbad..8042a37d3 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -11,7 +11,9 @@ "changesets": [ "cuddly-pets-hammer", "kind-fishes-flash", + "lovely-books-hear", "neat-plants-smile", + "nervous-walls-repair", "orange-jokes-listen", "pink-bugs-behave", "polite-eels-shake", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 45c80d028..b8c05b09e 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,14 @@ # @frontify/app-bridge +## 4.0.0-alpha.6 + +### Patch Changes + +- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 + +- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext + refactor: rename from type to surface + ## 4.0.0-alpha.5 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index cfefae22f..52996c5f7 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.5", + "version": "4.0.0-alpha.6", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From 40b18c473478750ce04eb18a7ff290e34b65b94f Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Fri, 23 Feb 2024 10:34:35 +0000 Subject: [PATCH 023/182] feat: add open/close search dialog commands (#775) (#780) * feat: add open/close search dialog commands * refactor: update emitter type * refactor: update export order * Create giant-shrimps-dream.md * Update giant-shrimps-dream.md * Update giant-shrimps-dream.md --- .changeset/giant-shrimps-dream.md | 5 +++++ packages/app-bridge/src/AppBridgeTheme.ts | 5 ++++- .../src/registries/commands/CommandRegistry.ts | 4 ++++ .../src/registries/commands/SearchDialog.ts | 12 ++++++++++++ packages/app-bridge/src/registries/commands/index.ts | 5 +++-- packages/app-bridge/src/types/Emitter.ts | 3 +++ 6 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 .changeset/giant-shrimps-dream.md create mode 100644 packages/app-bridge/src/registries/commands/SearchDialog.ts diff --git a/.changeset/giant-shrimps-dream.md b/.changeset/giant-shrimps-dream.md new file mode 100644 index 000000000..f26a59dcf --- /dev/null +++ b/.changeset/giant-shrimps-dream.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": minor +--- + +feat: add open/close search dialog commands to AppBridgeTheme diff --git a/packages/app-bridge/src/AppBridgeTheme.ts b/packages/app-bridge/src/AppBridgeTheme.ts index 9de29e220..ee3ceab05 100644 --- a/packages/app-bridge/src/AppBridgeTheme.ts +++ b/packages/app-bridge/src/AppBridgeTheme.ts @@ -57,7 +57,10 @@ import type { export type ThemeApiMethod = ApiMethodNameValidator>; export type ThemeCommand = CommandNameValidator< - Pick + Pick< + CommandRegistry, + 'closeAssetChooser' | 'openAssetChooser' | 'openNavigationManager' | 'openSearchDialog' | 'closeSearchDialog' + > >; export type TemplateContext = { templateId: string; type: ThemeTemplate } & ( diff --git a/packages/app-bridge/src/registries/commands/CommandRegistry.ts b/packages/app-bridge/src/registries/commands/CommandRegistry.ts index 48683d70c..bc05fb4fc 100644 --- a/packages/app-bridge/src/registries/commands/CommandRegistry.ts +++ b/packages/app-bridge/src/registries/commands/CommandRegistry.ts @@ -10,6 +10,8 @@ type OpenTemplateChooser = void; type CloseTemplateChooser = void; type OpenNavigationManager = void; type DownloadAsset = Asset; +type OpenSearchDialog = void; +type CloseSearchDialog = void; export type CommandRegistry = CommandNameValidator<{ openAssetChooser?: OpenAssetChooserPayload; @@ -20,4 +22,6 @@ export type CommandRegistry = CommandNameValidator<{ downloadAsset: DownloadAsset; openNavigationManager: OpenNavigationManager; openNewPublication: OpenNewPublicationPayload; + openSearchDialog: OpenSearchDialog; + closeSearchDialog: CloseSearchDialog; }>; diff --git a/packages/app-bridge/src/registries/commands/SearchDialog.ts b/packages/app-bridge/src/registries/commands/SearchDialog.ts new file mode 100644 index 000000000..91054417f --- /dev/null +++ b/packages/app-bridge/src/registries/commands/SearchDialog.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import type { DispatchHandlerParameter } from '../../AppBridge'; +import type { CommandRegistry } from './CommandRegistry'; + +export const openSearchDialog = (): DispatchHandlerParameter<'openSearchDialog', CommandRegistry> => ({ + name: 'openSearchDialog', +}); + +export const closeSearchDialog = (): DispatchHandlerParameter<'closeSearchDialog', CommandRegistry> => ({ + name: 'closeSearchDialog', +}); diff --git a/packages/app-bridge/src/registries/commands/index.ts b/packages/app-bridge/src/registries/commands/index.ts index 2f778b7a3..193300e42 100644 --- a/packages/app-bridge/src/registries/commands/index.ts +++ b/packages/app-bridge/src/registries/commands/index.ts @@ -3,8 +3,9 @@ export * from './AssetChooser'; export * from './AssetViewer'; export * from './CommandRegistry'; +export * from './Connection'; export * from './DownloadAsset'; export * from './NavigationManager'; -export * from './TemplateChooser'; export * from './NewPublication'; -export * from './Connection'; +export * from './SearchDialog'; +export * from './TemplateChooser'; diff --git a/packages/app-bridge/src/types/Emitter.ts b/packages/app-bridge/src/types/Emitter.ts index 8f9c6f2ed..20ddf3cc7 100644 --- a/packages/app-bridge/src/types/Emitter.ts +++ b/packages/app-bridge/src/types/Emitter.ts @@ -99,6 +99,9 @@ export type EmitterEvents = { 'AppBridge:OpenNavigationManager': void; + 'AppBridge:OpenSearchDialog': void; + 'AppBridge:CloseSearchDialog': void; + 'AppBridge:GuidelineDocumentPage:Action': | { documentPage: DocumentPage; From 336a3240c6996237676cf791f06ef71f0059c43b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:57:22 +0000 Subject: [PATCH 024/182] chore: release packages (alpha) (#782) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 8042a37d3..26a316575 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,6 +10,7 @@ }, "changesets": [ "cuddly-pets-hammer", + "giant-shrimps-dream", "kind-fishes-flash", "lovely-books-hear", "neat-plants-smile", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index b8c05b09e..9382120f3 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.7 + +### Minor Changes + +- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme + ## 4.0.0-alpha.6 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 52996c5f7..3828b03a8 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.6", + "version": "4.0.0-alpha.7", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From b5d1cb8a376ccada20d0234913584a6bdba0cba9 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Fri, 23 Feb 2024 14:28:56 +0100 Subject: [PATCH 025/182] fix: add retry to subscription (#777) * chore: add retry function to subscription * Create strong-tools-check.md * Update .changeset/strong-tools-check.md --- .changeset/strong-tools-check.md | 6 +++ .../app-bridge/src/AppBridgePlatformApp.ts | 39 ++++++++++++------- 2 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 .changeset/strong-tools-check.md diff --git a/.changeset/strong-tools-check.md b/.changeset/strong-tools-check.md new file mode 100644 index 000000000..77a0e1b5c --- /dev/null +++ b/.changeset/strong-tools-check.md @@ -0,0 +1,6 @@ +--- +"@frontify/app-bridge": patch +"@frontify/guideline-blocks-settings": patch +--- + +Fix: add retry to subscription diff --git a/packages/app-bridge/src/AppBridgePlatformApp.ts b/packages/app-bridge/src/AppBridgePlatformApp.ts index 4127bb8db..2b8521ed5 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.ts @@ -78,6 +78,7 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { private initialized: boolean = false; private localContext?: PlatformAppContext; private localState: PlatformAppState = { settings: {} }; + private maxRetries: number = 5; private readonly subscribeMap: SubscribeMap = { 'State.*': new Map(), @@ -118,25 +119,37 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { return; } - const PUBSUB_CHECKSUM = generateRandomString(); + const checksum = generateRandomString(); - notify(Topic.Init, PUBSUB_CHECKSUM, { + notify(Topic.Init, checksum, { token: getQueryParameters(window.location.href).token, appBridgeVersion: 'v4', }); - subscribe(Topic.Init, PUBSUB_CHECKSUM).then(({ statePort, apiPort, context, state }) => { - this.apiMessageBus = new MessageBus(apiPort); - this.stateMessageBus = new MessageBus(statePort); - - this.localContext = context; - this.localState = state; - this.initialized = true; + await this.attemptSubscription(1, checksum); + } + } - this.callSubscribedTopic('Context.connected', [true, false]); - this.callSubscribedTopic('Context.*', [this.localContext, this.localContext]); - this.callSubscribedTopic('State.*', [this.localState, this.localState]); - }); + private async attemptSubscription(attempt: number, checksum: string): Promise { + try { + const { statePort, apiPort, context, state } = await subscribe(Topic.Init, checksum); + + this.apiMessageBus = new MessageBus(apiPort); + this.stateMessageBus = new MessageBus(statePort); + + this.localContext = context; + this.localState = state; + this.initialized = true; + + this.callSubscribedTopic('Context.connected', [true, false]); + this.callSubscribedTopic('Context.*', [this.localContext, this.localContext]); + this.callSubscribedTopic('State.*', [this.localState, this.localState]); + } catch (error) { + if (attempt < this.maxRetries) { + await this.attemptSubscription(attempt + 1, checksum); + } else { + console.error('Could not connect to the platform.'); + } } } From 33ad8da08fb9629d456840930f47d83454a04648 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Fri, 23 Feb 2024 16:01:46 +0100 Subject: [PATCH 026/182] fix: changeset remove guideline-blocks-settings (#784) --- .changeset/strong-tools-check.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.changeset/strong-tools-check.md b/.changeset/strong-tools-check.md index 77a0e1b5c..de01291df 100644 --- a/.changeset/strong-tools-check.md +++ b/.changeset/strong-tools-check.md @@ -1,6 +1,5 @@ --- "@frontify/app-bridge": patch -"@frontify/guideline-blocks-settings": patch --- Fix: add retry to subscription From 524432c8ea9f4b2e0793b17ff2efff7fff00f532 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Fri, 23 Feb 2024 16:37:37 +0100 Subject: [PATCH 027/182] chore: update to 4 and downgrade to 0.0.5 (#785) --- packages/cli/templates/platform-app-css-modules/package.json | 4 ++-- packages/cli/templates/platform-app-css/package.json | 4 ++-- packages/cli/templates/platform-app-tailwind/package.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/cli/templates/platform-app-css-modules/package.json b/packages/cli/templates/platform-app-css-modules/package.json index 35b750d30..f9a7a9aed 100644 --- a/packages/cli/templates/platform-app-css-modules/package.json +++ b/packages/cli/templates/platform-app-css-modules/package.json @@ -10,10 +10,10 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@frontify/app-bridge": "^3.3.0", + "@frontify/app-bridge": "4.0.0-alpha.6", "@frontify/fondue": "12.0.0-beta.404", "@frontify/fondue-tokens": "^3.4.0", - "@frontify/platform-app": "^0.0.6", + "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/cli/templates/platform-app-css/package.json b/packages/cli/templates/platform-app-css/package.json index 66f16f836..c5b82e79d 100644 --- a/packages/cli/templates/platform-app-css/package.json +++ b/packages/cli/templates/platform-app-css/package.json @@ -10,10 +10,10 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@frontify/app-bridge": "^3.3.0", + "@frontify/app-bridge": "4.0.0-alpha.6", "@frontify/fondue": "12.0.0-beta.404", "@frontify/fondue-tokens": "^3.4.0", - "@frontify/platform-app": "^0.0.6", + "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/cli/templates/platform-app-tailwind/package.json b/packages/cli/templates/platform-app-tailwind/package.json index 0e6daf35b..870ce1d0c 100644 --- a/packages/cli/templates/platform-app-tailwind/package.json +++ b/packages/cli/templates/platform-app-tailwind/package.json @@ -10,10 +10,10 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@frontify/app-bridge": "^3.3.0", + "@frontify/app-bridge": "4.0.0-alpha.6", "@frontify/fondue": "12.0.0-beta.404", "@frontify/fondue-tokens": "^3.4.0", - "@frontify/platform-app": "^0.0.6", + "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, From 99aa6379da5a2608bd3ac9aef4e022799ed0871d Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Fri, 23 Feb 2024 16:50:25 +0100 Subject: [PATCH 028/182] fix: adjust templates (#786) * chore: adjust css imports * Create curly-foxes-heal.md --- .changeset/curly-foxes-heal.md | 5 +++++ packages/cli/templates/platform-app-tailwind/src/index.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/curly-foxes-heal.md diff --git a/.changeset/curly-foxes-heal.md b/.changeset/curly-foxes-heal.md new file mode 100644 index 000000000..b5b0625dc --- /dev/null +++ b/.changeset/curly-foxes-heal.md @@ -0,0 +1,5 @@ +--- +"@frontify/frontify-cli": patch +--- + +Fix: adjust templates diff --git a/packages/cli/templates/platform-app-tailwind/src/index.ts b/packages/cli/templates/platform-app-tailwind/src/index.ts index f617df614..cf4224097 100644 --- a/packages/cli/templates/platform-app-tailwind/src/index.ts +++ b/packages/cli/templates/platform-app-tailwind/src/index.ts @@ -1,8 +1,8 @@ import { App } from './App'; import { defineApp } from '@frontify/platform-app'; import { settings } from './settings'; -import 'tailwindcss/tailwind.css'; import '@frontify/fondue/style'; +import 'tailwindcss/tailwind.css'; import './main.css'; export default defineApp({ From dcb1856d7ae08e4f2c19c0101d7cd030d6038fc5 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Fri, 23 Feb 2024 17:26:39 +0100 Subject: [PATCH 029/182] fix: revert #786 and #785 (#787) * Revert "fix: adjust templates (#786)" This reverts commit 99aa6379da5a2608bd3ac9aef4e022799ed0871d. * Revert "chore: update to 4 and downgrade to 0.0.5 (#785)" This reverts commit 524432c8ea9f4b2e0793b17ff2efff7fff00f532. --- .changeset/curly-foxes-heal.md | 5 ----- packages/cli/templates/platform-app-css-modules/package.json | 4 ++-- packages/cli/templates/platform-app-css/package.json | 4 ++-- packages/cli/templates/platform-app-tailwind/package.json | 4 ++-- packages/cli/templates/platform-app-tailwind/src/index.ts | 2 +- 5 files changed, 7 insertions(+), 12 deletions(-) delete mode 100644 .changeset/curly-foxes-heal.md diff --git a/.changeset/curly-foxes-heal.md b/.changeset/curly-foxes-heal.md deleted file mode 100644 index b5b0625dc..000000000 --- a/.changeset/curly-foxes-heal.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@frontify/frontify-cli": patch ---- - -Fix: adjust templates diff --git a/packages/cli/templates/platform-app-css-modules/package.json b/packages/cli/templates/platform-app-css-modules/package.json index f9a7a9aed..35b750d30 100644 --- a/packages/cli/templates/platform-app-css-modules/package.json +++ b/packages/cli/templates/platform-app-css-modules/package.json @@ -10,10 +10,10 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@frontify/app-bridge": "4.0.0-alpha.6", + "@frontify/app-bridge": "^3.3.0", "@frontify/fondue": "12.0.0-beta.404", "@frontify/fondue-tokens": "^3.4.0", - "@frontify/platform-app": "^0.0.5", + "@frontify/platform-app": "^0.0.6", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/cli/templates/platform-app-css/package.json b/packages/cli/templates/platform-app-css/package.json index c5b82e79d..66f16f836 100644 --- a/packages/cli/templates/platform-app-css/package.json +++ b/packages/cli/templates/platform-app-css/package.json @@ -10,10 +10,10 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@frontify/app-bridge": "4.0.0-alpha.6", + "@frontify/app-bridge": "^3.3.0", "@frontify/fondue": "12.0.0-beta.404", "@frontify/fondue-tokens": "^3.4.0", - "@frontify/platform-app": "^0.0.5", + "@frontify/platform-app": "^0.0.6", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/cli/templates/platform-app-tailwind/package.json b/packages/cli/templates/platform-app-tailwind/package.json index 870ce1d0c..0e6daf35b 100644 --- a/packages/cli/templates/platform-app-tailwind/package.json +++ b/packages/cli/templates/platform-app-tailwind/package.json @@ -10,10 +10,10 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@frontify/app-bridge": "4.0.0-alpha.6", + "@frontify/app-bridge": "^3.3.0", "@frontify/fondue": "12.0.0-beta.404", "@frontify/fondue-tokens": "^3.4.0", - "@frontify/platform-app": "^0.0.5", + "@frontify/platform-app": "^0.0.6", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/cli/templates/platform-app-tailwind/src/index.ts b/packages/cli/templates/platform-app-tailwind/src/index.ts index cf4224097..f617df614 100644 --- a/packages/cli/templates/platform-app-tailwind/src/index.ts +++ b/packages/cli/templates/platform-app-tailwind/src/index.ts @@ -1,8 +1,8 @@ import { App } from './App'; import { defineApp } from '@frontify/platform-app'; import { settings } from './settings'; -import '@frontify/fondue/style'; import 'tailwindcss/tailwind.css'; +import '@frontify/fondue/style'; import './main.css'; export default defineApp({ From 45ffaed9d02e2d69db82d1a8e4b5c8b733ef5876 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 18:19:35 +0100 Subject: [PATCH 030/182] chore: release packages (alpha) (#783) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +- packages/app-bridge/CHANGELOG.md | 70 ++++++++++++++++++-------------- packages/app-bridge/package.json | 2 +- 3 files changed, 43 insertions(+), 33 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 26a316575..b1559a901 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -18,6 +18,8 @@ "orange-jokes-listen", "pink-bugs-behave", "polite-eels-shake", - "stale-hairs-wash" + "stale-hairs-wash", + "strong-tools-check", + "warm-hounds-refuse" ] } diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index ff296c265..1575cad48 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,146 +1,154 @@ # @frontify/app-bridge +## 4.0.0-alpha.8 + +### Patch Changes + +- [#777](https://github.com/Frontify/brand-sdk/pull/777) [`b5d1cb8`](https://github.com/Frontify/brand-sdk/commit/b5d1cb8a376ccada20d0234913584a6bdba0cba9) Thanks [@julianiff](https://github.com/julianiff)! - Fix: add retry to subscription + +- Merge main into dev + ## 3.4.1 ### Patch Changes -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM +- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM ## 3.4.0 ### Minor Changes -- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.7 ### Minor Changes -- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.6 ### Patch Changes -- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 +- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 -- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext - refactor: rename from type to surface +- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext + refactor: rename from type to surface ## 4.0.0-alpha.5 ### Patch Changes -- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type -- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev +- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev ## 3.3.2 ### Patch Changes -- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type ## 4.0.0-alpha.4 ### Patch Changes -- Merge main into dev +- Merge main into dev ## 3.3.1 ### Patch Changes -- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 4.0.0-alpha.3 ### Patch Changes -- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision +- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision ## 4.0.0-alpha.2 ### Patch Changes -- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 4.0.0-alpha.1 ### Patch Changes -- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme +- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme ## 3.3.0 ### Minor Changes -- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 3.2.0 ### Minor Changes -- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context +- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context ## 4.0.0-alpha.0 ### Major Changes -- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock +- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock ## 3.1.0 ### Minor Changes -- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. - You will need to update the import paths in your tests: +- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. + You will need to update the import paths in your tests: - ```git - - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; - + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; - ``` + ```git + - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; + + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; + ``` ## 3.0.4 ### Patch Changes -- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json +- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json ## 3.0.3 ### Patch Changes -- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order +- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order ## 3.0.2 ### Patch Changes -- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions +- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions ## 3.0.1 ### Patch Changes -- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings +- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings ## 3.0.0 ### Major Changes -- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release +- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release ## 3.0.0-beta.32 ### Patch Changes -- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions +- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions ## 3.0.0-beta.31 ### Minor Changes -- Add Brandportal link +- Add Brandportal link diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 58a94ab01..f4040e5b7 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.7", + "version": "4.0.0-alpha.8", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From 84dfdfd138adad802c4f489bb19320c740b6fa40 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 20:44:40 +0100 Subject: [PATCH 031/182] chore: release packages (alpha) (#792) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index b1559a901..61adb2f71 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -12,6 +12,7 @@ "cuddly-pets-hammer", "giant-shrimps-dream", "kind-fishes-flash", + "light-crews-report", "lovely-books-hear", "neat-plants-smile", "nervous-walls-repair", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 90eed1f63..f536860d8 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.9 + +### Patch Changes + +- Merge main into dev + ## 3.4.2 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index f4040e5b7..4b950a653 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.9", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From 4529beb4b9f20ba94c7d6226257b422d6b560d5a Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Wed, 6 Mar 2024 14:34:15 +0100 Subject: [PATCH 032/182] feat: add navigateToDocumentSection command to AppBridgeTheme (#807) (#808) * feat: add navigateToDocumentSection command to AppBridgeTheme * changeset --- .changeset/wild-bags-judge.md | 5 +++++ packages/app-bridge/src/AppBridgeTheme.ts | 7 ++++++- .../src/registries/commands/CommandRegistry.ts | 2 ++ .../registries/commands/NavigateToDocumentSection.ts | 11 +++++++++++ packages/app-bridge/src/registries/commands/index.ts | 1 + 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 .changeset/wild-bags-judge.md create mode 100644 packages/app-bridge/src/registries/commands/NavigateToDocumentSection.ts diff --git a/.changeset/wild-bags-judge.md b/.changeset/wild-bags-judge.md new file mode 100644 index 000000000..e01123abd --- /dev/null +++ b/.changeset/wild-bags-judge.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": minor +--- + +feat: add navigateToDocumentSection command to AppBridgeTheme diff --git a/packages/app-bridge/src/AppBridgeTheme.ts b/packages/app-bridge/src/AppBridgeTheme.ts index ee3ceab05..4b3a860a4 100644 --- a/packages/app-bridge/src/AppBridgeTheme.ts +++ b/packages/app-bridge/src/AppBridgeTheme.ts @@ -59,7 +59,12 @@ export type ThemeApiMethod = ApiMethodNameValidator >; diff --git a/packages/app-bridge/src/registries/commands/CommandRegistry.ts b/packages/app-bridge/src/registries/commands/CommandRegistry.ts index bc05fb4fc..7e5c651ab 100644 --- a/packages/app-bridge/src/registries/commands/CommandRegistry.ts +++ b/packages/app-bridge/src/registries/commands/CommandRegistry.ts @@ -12,6 +12,7 @@ type OpenNavigationManager = void; type DownloadAsset = Asset; type OpenSearchDialog = void; type CloseSearchDialog = void; +type NavigateToDocumentSection = number | string; export type CommandRegistry = CommandNameValidator<{ openAssetChooser?: OpenAssetChooserPayload; @@ -24,4 +25,5 @@ export type CommandRegistry = CommandNameValidator<{ openNewPublication: OpenNewPublicationPayload; openSearchDialog: OpenSearchDialog; closeSearchDialog: CloseSearchDialog; + navigateToDocumentSection: NavigateToDocumentSection; }>; diff --git a/packages/app-bridge/src/registries/commands/NavigateToDocumentSection.ts b/packages/app-bridge/src/registries/commands/NavigateToDocumentSection.ts new file mode 100644 index 000000000..33fb1a7b0 --- /dev/null +++ b/packages/app-bridge/src/registries/commands/NavigateToDocumentSection.ts @@ -0,0 +1,11 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import type { DispatchHandlerParameter } from '../../AppBridge'; +import type { CommandRegistry } from './CommandRegistry'; + +export const navigateToDocumentSection = ( + sectionId: CommandRegistry['navigateToDocumentSection'], +): DispatchHandlerParameter<'navigateToDocumentSection', CommandRegistry> => ({ + name: 'navigateToDocumentSection', + payload: sectionId, +}); diff --git a/packages/app-bridge/src/registries/commands/index.ts b/packages/app-bridge/src/registries/commands/index.ts index 193300e42..d1e78f8e6 100644 --- a/packages/app-bridge/src/registries/commands/index.ts +++ b/packages/app-bridge/src/registries/commands/index.ts @@ -9,3 +9,4 @@ export * from './NavigationManager'; export * from './NewPublication'; export * from './SearchDialog'; export * from './TemplateChooser'; +export * from './NavigateToDocumentSection'; From 0ac69eaa52ba58a5be06ce75afa63cf5838e958b Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Wed, 6 Mar 2024 17:10:20 +0100 Subject: [PATCH 033/182] feat: merge main into dev (#810) * feat(*): update plate to v30 (#750) feat(*): update plate to v30 --------- Co-authored-by: Samuel Alev Co-authored-by: Rafael Giezendanner * chore: release packages (#795) Co-authored-by: github-actions[bot] * chore(deps): update dependency vitest to v1.3.1 (#556) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency cypress to v13.6.6 (#793) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: bump fondue (#796) * chore: bump fondue * Create breezy-dolls-compete.md * chore: release packages (#797) Co-authored-by: github-actions[bot] * chore: bump @frontify/fondue to @12.0.0-beta.410 (#800) * update fondue * bump fondue in all packages * add second changeset * revert change * perf: stabilize RichTextEditor props (#801) * stabilize rte props * update props * chore: release packages (#802) Signed-off-by: Sam Creasey Co-authored-by: github-actions[bot] * feat: replace content with floating modal wrapper (#803) * feat(RichTextEditor): replace content with floating modal wrapper * add changeset * update packages * update lockfile * add update * fix: flaky useUngroupedDocuments and useGroupedDocuments tests (#806) * fix: flaky useUngroupedDocuments and useGroupedDocuments tests * changeset * feat: add navigateToDocumentSection command to AppBridgeTheme (#807) * feat: add navigateToDocumentSection command to AppBridgeTheme * changeset --------- Signed-off-by: Sam Creasey Co-authored-by: Daniel Fulop Co-authored-by: Samuel Alev Co-authored-by: Rafael Giezendanner Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Sam Creasey --- .changeset/pretty-items-marry.md | 5 + package.json | 7 +- .../src/react/useGroupedDocuments.spec.ts | 80 +- .../src/react/useUngroupedDocuments.spec.ts | 72 +- packages/cli/CHANGELOG.md | 18 + packages/cli/package.json | 2 +- .../platform-app-css-modules/package.json | 2 +- .../templates/platform-app-css/package.json | 2 +- .../platform-app-tailwind/package.json | 2 +- .../guideline-blocks-settings/CHANGELOG.md | 33 + .../guideline-blocks-settings/package.json | 9 +- .../Link/LinkSelector/LinkSelector.tsx | 6 +- .../Link/LinkSelector/SectionLink.tsx | 2 +- .../src/components/Link/utils/getUrl.ts | 2 +- .../RichTextEditor/RichTextEditor.spec.ct.tsx | 4 +- .../RichTextEditor/RichTextEditor.tsx | 33 +- .../ButtonMarkupElementNode.tsx | 30 +- .../ButtonPlugin/components/ButtonButton.tsx | 47 +- .../components/ButtonToolbarButton.tsx | 61 +- .../FloatingButton/CustomFloatingButton.tsx | 38 +- .../EditButtonModal/EditModal.tsx | 44 +- .../FloatingButton/FloatingButton.tsx | 37 - .../FloatingButtonEditButton.tsx | 22 - .../FloatingButton/FloatingButtonUrlInput.tsx | 30 - .../InsertButtonModal/useInsertModal.ts | 5 +- .../FloatingButton/UnlinkButton.tsx | 31 - .../FloatingButton/floatingButtonStore.ts | 2 +- .../components/FloatingButton/index.ts | 4 - .../FloatingButton/useFloatingButtonEdit.ts | 22 +- .../FloatingButton/useFloatingButtonEnter.ts | 2 +- .../FloatingButton/useFloatingButtonEscape.ts | 4 +- .../FloatingButton/useFloatingButtonInsert.ts | 16 +- .../useVirtualFloatingButton.ts | 7 +- .../ButtonPlugin/createButtonPlugin.ts | 5 +- .../ButtonPlugin/transforms/insertButton.ts | 2 +- .../transforms/submitFloatingButton.ts | 4 +- .../ButtonPlugin/transforms/unwrapButton.ts | 2 +- .../ButtonPlugin/transforms/upsertButton.ts | 5 +- .../transforms/upsertButtonText.ts | 2 +- .../ButtonPlugin/transforms/wrapButton.ts | 2 +- .../plugins/ButtonPlugin/types.ts | 2 +- .../ButtonPlugin/utils/createButtonNode.ts | 2 +- .../ButtonPlugin/utils/getButtonStyle.ts | 2 +- .../plugins/ButtonPlugin/utils/getUrl.ts | 2 +- .../utils/triggerFloatingButton.ts | 2 +- .../utils/triggerFloatingButtonEdit.ts | 2 +- .../utils/triggerFloatingButtonInsert.ts | 3 +- .../plugins/ButtonPlugin/withButton.ts | 9 +- .../FloatingLink/CustomFloatingLink.tsx | 62 +- .../FloatingLink/EditLinkModal/EditModal.tsx | 56 +- .../FloatingLink/EditLinkModal/index.ts | 1 - .../EditLinkModal/useFloatingLinkEdit.ts | 113 - .../LinkPlugin/FloatingLink/FloatingLink.tsx | 45 - .../InsertLinkModal/InsertLinkModal.tsx | 3 +- .../InsertLinkModal/InsertModal.tsx | 19 +- .../FloatingLink/InsertLinkModal/index.ts | 1 - .../InsertLinkModal/useFloatingLinkInsert.ts | 73 - .../InsertLinkModal/useInsertModal.ts | 37 +- .../plugins/LinkPlugin/LinkButton.tsx | 19 +- .../LinkMarkupElementNode.tsx | 39 +- .../LinkPlugin/LinkMarkupElement/index.ts | 11 +- .../plugins/LinkPlugin/LinkToolbarButton.tsx | 35 + .../plugins/LinkPlugin/index.ts | 26 +- .../plugins/LinkPlugin/types.ts | 2 +- .../plugins/LinkPlugin/utils/getUrl.ts | 30 + .../plugins/LinkPlugin/utils/index.ts | 3 + .../TextStylePlugins/custom1Plugin.tsx | 7 +- .../TextStylePlugins/custom2Plugin.tsx | 7 +- .../TextStylePlugins/custom3Plugin.tsx | 8 +- .../TextStylePlugins/heading1Plugin.tsx | 8 +- .../TextStylePlugins/heading2Plugin.tsx | 7 +- .../TextStylePlugins/heading3Plugin.tsx | 7 +- .../TextStylePlugins/heading4Plugin.tsx | 7 +- .../TextStylePlugins/imageCaptionPlugin.tsx | 7 +- .../TextStylePlugins/imageTitlePlugin.tsx | 7 +- .../TextStylePlugins/paragraphPlugin.tsx | 13 +- .../plugins/TextStylePlugins/quotePlugin.tsx | 9 +- packages/platform-app/CHANGELOG.md | 21 + packages/platform-app/package.json | 2 +- packages/sidebar-settings/CHANGELOG.md | 18 + packages/sidebar-settings/package.json | 4 +- patches/@udecode__plate-emoji@30.7.0.patch | 17 + pnpm-lock.yaml | 4050 ++++------------- 83 files changed, 1635 insertions(+), 3866 deletions(-) create mode 100644 .changeset/pretty-items-marry.md delete mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButton.tsx delete mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonEditButton.tsx delete mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonUrlInput.tsx delete mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/UnlinkButton.tsx delete mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts delete mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/FloatingLink.tsx delete mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useFloatingLinkInsert.ts create mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkToolbarButton.tsx create mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.ts create mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/utils/index.ts create mode 100644 patches/@udecode__plate-emoji@30.7.0.patch diff --git a/.changeset/pretty-items-marry.md b/.changeset/pretty-items-marry.md new file mode 100644 index 000000000..d7a034a0f --- /dev/null +++ b/.changeset/pretty-items-marry.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +fix: useGroupedDocuments and useUngroupedDocuments flaky tests diff --git a/package.json b/package.json index c33bd5162..74e239d2e 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.1", "@cypress/vite-dev-server": "^5.0.7", - "@frontify/fondue": "12.0.0-beta.404", + "@frontify/fondue": "12.0.0-beta.411", "@vitejs/plugin-react": "^4.2.1", "cypress": "^13.6.4", "cypress-real-events": "^1.12.0", @@ -33,5 +33,10 @@ "typescript": "^5.3.3", "vite": "^4.5.2", "vitest": "^1.3.0" + }, + "pnpm": { + "patchedDependencies": { + "@udecode/plate-emoji@30.7.0": "patches/@udecode__plate-emoji@30.7.0.patch" + } } } diff --git a/packages/app-bridge/src/react/useGroupedDocuments.spec.ts b/packages/app-bridge/src/react/useGroupedDocuments.spec.ts index cc60ba557..421a11cc6 100644 --- a/packages/app-bridge/src/react/useGroupedDocuments.spec.ts +++ b/packages/app-bridge/src/react/useGroupedDocuments.spec.ts @@ -29,18 +29,18 @@ describe('useGroupedDocument', () => { const { result } = renderHook(() => useGroupedDocuments(appBridge, DOCUMENT_GROUP_ID_1)); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); await waitFor(() => { expect(result.current.isLoading).toBe(false); - - expect(result.current.documents).toEqual([ - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_4, DOCUMENT_GROUP_ID_1), - ]); + expect(spy).toHaveBeenCalledOnce(); }); + + expect(result.current.documents).toEqual([ + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_4, DOCUMENT_GROUP_ID_1), + ]); }); it('should not fetch grouped documents on mount if not enabled', () => { @@ -71,18 +71,18 @@ describe('useGroupedDocument', () => { rerender(); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); await waitFor(() => { expect(result.current.isLoading).toBe(false); - - expect(result.current.documents).toEqual([ - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_4, DOCUMENT_GROUP_ID_1), - ]); + expect(spy).toHaveBeenCalledOnce(); }); + + expect(result.current.documents).toEqual([ + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_4, DOCUMENT_GROUP_ID_1), + ]); }); it('should update document if a page is added', async () => { @@ -101,18 +101,18 @@ describe('useGroupedDocument', () => { const { result } = renderHook(() => useGroupedDocuments(appBridge, DOCUMENT_GROUP_ID_1, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - await waitFor(() => { expect(result.current.isLoading).toBe(false); - expect(result.current.documents).toEqual([ - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), - OLD_DOCUMENT, - ]); + expect(spy).toHaveBeenCalledOnce(); }); + expect(result.current.documents).toEqual([ + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), + OLD_DOCUMENT, + ]); + // Mock the response of the second call spy.mockImplementationOnce(() => Promise.resolve([ @@ -168,9 +168,11 @@ describe('useGroupedDocument', () => { const { result } = renderHook(() => useGroupedDocuments(appBridge, DOCUMENT_GROUP_ID_1, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - await waitFor(() => expect(result.current.isLoading).toBe(false)); + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + expect(spy).toHaveBeenCalledOnce(); + }); // Mock the response of the second call spy.mockImplementationOnce(() => @@ -217,18 +219,19 @@ describe('useGroupedDocument', () => { const { result } = renderHook(() => useGroupedDocuments(appBridge, DOCUMENT_GROUP_ID_1, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); await waitFor(() => { expect(result.current.isLoading).toBe(false); - expect(result.current.documents).toEqual([ - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), - OLD_DOCUMENT, - ]); + expect(spy).toHaveBeenCalledOnce(); }); + expect(result.current.documents).toEqual([ + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), + OLD_DOCUMENT, + ]); + // Mock the response of the second call spy.mockImplementationOnce(() => Promise.resolve([ @@ -284,9 +287,11 @@ describe('useGroupedDocument', () => { const { result } = renderHook(() => useGroupedDocuments(appBridge, DOCUMENT_GROUP_ID_1, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - await waitFor(() => expect(result.current.isLoading).toBe(false)); + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + expect(spy).toHaveBeenCalledOnce(); + }); // Mock the response of the second call spy.mockImplementationOnce(() => @@ -347,13 +352,14 @@ describe('useGroupedDocument', () => { const { result } = renderHook(() => useGroupedDocuments(appBridge, DOCUMENT_GROUP_ID_1, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); await waitFor(() => { expect(result.current.isLoading).toBe(false); - expect(result.current.documents).toEqual([DOCUMENT_1, DOCUMENT_2, DOCUMENT_3, DOCUMENT_4]); + expect(spy).toHaveBeenCalledOnce(); }); + expect(result.current.documents).toEqual([DOCUMENT_1, DOCUMENT_2, DOCUMENT_3, DOCUMENT_4]); + // Trigger a "document category added" event in the specified document window.emitter.emit('AppBridge:GuidelineDocument:MoveEvent', { action: 'movePreview', diff --git a/packages/app-bridge/src/react/useUngroupedDocuments.spec.ts b/packages/app-bridge/src/react/useUngroupedDocuments.spec.ts index fe7ed1d6b..a6c9a7faf 100644 --- a/packages/app-bridge/src/react/useUngroupedDocuments.spec.ts +++ b/packages/app-bridge/src/react/useUngroupedDocuments.spec.ts @@ -73,18 +73,19 @@ describe('useUngroupedDocuments', () => { rerender(); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); await waitFor(() => { expect(result.current.isLoading).toBe(false); - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - DocumentDummy.with(DOCUMENT_ID_4), - DocumentDummy.with(DOCUMENT_ID_5), - ]); + expect(spy).toHaveBeenCalledOnce(); }); + + expect(result.current.documents).toEqual([ + DocumentDummy.with(DOCUMENT_ID_1), + DocumentDummy.with(DOCUMENT_ID_2), + DocumentDummy.with(DOCUMENT_ID_3), + DocumentDummy.with(DOCUMENT_ID_4), + DocumentDummy.with(DOCUMENT_ID_5), + ]); }); it('should update document if a page is added', async () => { @@ -113,18 +114,18 @@ describe('useUngroupedDocuments', () => { const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - await waitFor(() => { expect(result.current.isLoading).toBe(false); - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - OLD_DOCUMENT, - ]); + expect(spy).toHaveBeenCalledOnce(); }); + expect(result.current.documents).toEqual([ + DocumentDummy.with(DOCUMENT_ID_1), + DocumentDummy.with(DOCUMENT_ID_2), + DocumentDummy.with(DOCUMENT_ID_3), + OLD_DOCUMENT, + ]); + // Mock the response of the second call spy.mockImplementationOnce(() => Promise.resolve([ @@ -180,9 +181,11 @@ describe('useUngroupedDocuments', () => { const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - await waitFor(() => expect(result.current.isLoading).toBe(false)); + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + expect(spy).toHaveBeenCalledOnce(); + }); // Mock the response of the second call spy.mockImplementationOnce(() => @@ -239,18 +242,19 @@ describe('useUngroupedDocuments', () => { const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); await waitFor(() => { expect(result.current.isLoading).toBe(false); - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - OLD_DOCUMENT, - ]); + expect(spy).toHaveBeenCalledOnce(); }); + expect(result.current.documents).toEqual([ + DocumentDummy.with(DOCUMENT_ID_1), + DocumentDummy.with(DOCUMENT_ID_2), + DocumentDummy.with(DOCUMENT_ID_3), + OLD_DOCUMENT, + ]); + // Mock the response of the second call spy.mockImplementationOnce(() => Promise.resolve([ @@ -306,9 +310,11 @@ describe('useUngroupedDocuments', () => { const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - await waitFor(() => expect(result.current.isLoading).toBe(false)); + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + expect(spy).toHaveBeenCalledOnce(); + }); // Mock the response of the second call spy.mockImplementationOnce(() => @@ -378,9 +384,11 @@ describe('useUngroupedDocuments', () => { const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - await waitFor(() => expect(result.current.isLoading).toBe(false)); + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + expect(spy).toHaveBeenCalledOnce(); + }); // Trigger a "document category added" event in the specified document window.emitter.emit('AppBridge:GuidelineDocument:MoveEvent', { @@ -436,9 +444,11 @@ describe('useUngroupedDocuments', () => { const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - await waitFor(() => expect(result.current.isLoading).toBe(false)); + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + expect(spy).toHaveBeenCalledOnce(); + }); // Trigger a "document category added" event in the specified document window.emitter.emit('AppBridge:GuidelineDocumentGroup:MoveEvent', { diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 98f17ba30..79972c18b 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,23 @@ # @frontify/frontify-cli +## 5.6.8 + +### Patch Changes + +- [#800](https://github.com/Frontify/brand-sdk/pull/800) [`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to 12.0.0-beta.410 + +## 5.6.7 + +### Patch Changes + +- [#796](https://github.com/Frontify/brand-sdk/pull/796) [`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue + +## 5.6.6 + +### Patch Changes + +- [#750](https://github.com/Frontify/brand-sdk/pull/750) [`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue + ## 5.6.5 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 17e70203f..612d20130 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "author": "Frontify Developers ", - "version": "5.6.5", + "version": "5.6.8", "bin": { "frontify-cli": "dist/index.mjs" }, diff --git a/packages/cli/templates/platform-app-css-modules/package.json b/packages/cli/templates/platform-app-css-modules/package.json index f9a7a9aed..c819ddf62 100644 --- a/packages/cli/templates/platform-app-css-modules/package.json +++ b/packages/cli/templates/platform-app-css-modules/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@frontify/app-bridge": "4.0.0-alpha.6", - "@frontify/fondue": "12.0.0-beta.404", + "@frontify/fondue": "12.0.0-beta.411", "@frontify/fondue-tokens": "^3.4.0", "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", diff --git a/packages/cli/templates/platform-app-css/package.json b/packages/cli/templates/platform-app-css/package.json index c5b82e79d..3ef778711 100644 --- a/packages/cli/templates/platform-app-css/package.json +++ b/packages/cli/templates/platform-app-css/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@frontify/app-bridge": "4.0.0-alpha.6", - "@frontify/fondue": "12.0.0-beta.404", + "@frontify/fondue": "12.0.0-beta.411", "@frontify/fondue-tokens": "^3.4.0", "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", diff --git a/packages/cli/templates/platform-app-tailwind/package.json b/packages/cli/templates/platform-app-tailwind/package.json index 870ce1d0c..1c8e0609b 100644 --- a/packages/cli/templates/platform-app-tailwind/package.json +++ b/packages/cli/templates/platform-app-tailwind/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@frontify/app-bridge": "4.0.0-alpha.6", - "@frontify/fondue": "12.0.0-beta.404", + "@frontify/fondue": "12.0.0-beta.411", "@frontify/fondue-tokens": "^3.4.0", "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", diff --git a/packages/guideline-blocks-settings/CHANGELOG.md b/packages/guideline-blocks-settings/CHANGELOG.md index fe8d7d422..fce61c406 100644 --- a/packages/guideline-blocks-settings/CHANGELOG.md +++ b/packages/guideline-blocks-settings/CHANGELOG.md @@ -1,5 +1,38 @@ # @frontify/guideline-blocks-settings +## 0.34.2 + +### Patch Changes + +- [#800](https://github.com/Frontify/brand-sdk/pull/800) [`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to 12.0.0-beta.410 + +- [#801](https://github.com/Frontify/brand-sdk/pull/801) [`51d5537`](https://github.com/Frontify/brand-sdk/commit/51d55375a86547f1036c4c892da97f6cb64b1e88) Thanks [@SamCreasey](https://github.com/SamCreasey)! - perf(RichTextEditor): Stabilize props to avoid unneccessary rerenders. + +- Updated dependencies [[`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c)]: + - @frontify/sidebar-settings@0.9.9 + +## 0.34.1 + +### Patch Changes + +- [#796](https://github.com/Frontify/brand-sdk/pull/796) [`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue + +- Updated dependencies [[`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce)]: + - @frontify/sidebar-settings@0.9.8 + +## 0.34.0 + +### Minor Changes + +- [#750](https://github.com/Frontify/brand-sdk/pull/750) [`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(\*): update fondue which comes with plate v30 + + @udecode/plate libraries are no longer used as a direct dependency, instead all required parts are now imported from @frontify/fondue + +### Patch Changes + +- Updated dependencies [[`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32)]: + - @frontify/sidebar-settings@0.9.7 + ## 0.33.5 ### Patch Changes diff --git a/packages/guideline-blocks-settings/package.json b/packages/guideline-blocks-settings/package.json index 51ea82a01..c44daae6f 100644 --- a/packages/guideline-blocks-settings/package.json +++ b/packages/guideline-blocks-settings/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-blocks-settings", "type": "module", - "version": "0.33.5", + "version": "0.34.2", "description": "Provides types and helpers for the guideline block development", "author": "Frontify Developers ", "repository": { @@ -47,13 +47,10 @@ "@dnd-kit/core": "^6.1.0", "@dnd-kit/modifiers": "^7.0.0", "@dnd-kit/sortable": "^8.0.0", - "@frontify/fondue": "12.0.0-beta.404", + "@frontify/fondue": "12.0.0-beta.411", "@frontify/sidebar-settings": "workspace:^", "@react-aria/focus": "^3.14.0", - "@react-stately/overlays": "^3.6.1", - "@udecode/plate": "^21.5.0", - "slate": "^0.94.1", - "slate-react": "^0.98.3" + "@react-stately/overlays": "^3.6.1" }, "devDependencies": { "@babel/core": "^7.23.9", diff --git a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.tsx b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.tsx index e9c6dc005..5a9357fbc 100644 --- a/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.tsx +++ b/packages/guideline-blocks-settings/src/components/Link/LinkSelector/LinkSelector.tsx @@ -48,7 +48,11 @@ export const LinkSelector = ({ }; return ( -
+
event.preventDefault()} + data-test-id="internal-link-selector" + onKeyDown={onPressEnter} + > - { + unwrapButton(editor); + focusEditor(editor, editor.selection ?? undefined); + }} tabIndex={0} data-test-id="remove-button-button" className="tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1" > - - - - + + -
+ ); }; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButton.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButton.tsx deleted file mode 100644 index ee1600394..000000000 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButton.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { HTMLPropsAs, UseVirtualFloatingOptions, createComponentAs, createElementAs } from '@udecode/plate'; -import { useFloatingButtonEdit } from './useFloatingButtonEdit'; -import { useFloatingButtonInsert } from './useFloatingButtonInsert'; -import { FloatingButtonEditButton } from './FloatingButtonEditButton'; -import { UnlinkButton } from './UnlinkButton'; - -export type FloatingButtonProps = HTMLPropsAs<'div'> & { - floatingOptions?: UseVirtualFloatingOptions; -}; - -export const FloatingButtonEditRoot = createComponentAs((props) => { - const htmlProps = useFloatingButtonEdit(props); - - if (htmlProps.style?.display === 'none') { - return null; - } - - return createElementAs('div', htmlProps); -}); - -export const FloatingButtonInsertRoot = createComponentAs((props) => { - const htmlProps = useFloatingButtonInsert(props); - - if (htmlProps.style?.display === 'none') { - return null; - } - return createElementAs('div', htmlProps); -}); - -export const FloatingButton = { - EditRoot: FloatingButtonEditRoot, - InsertRoot: FloatingButtonInsertRoot, - EditButton: FloatingButtonEditButton, - UnlinkButton, -}; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonEditButton.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonEditButton.tsx deleted file mode 100644 index bd6aebf55..000000000 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonEditButton.tsx +++ /dev/null @@ -1,22 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useCallback } from 'react'; -import { AsProps, HTMLPropsAs, createComponentAs, createElementAs, useEditorRef } from '@udecode/plate'; -import { triggerFloatingButtonEdit } from '../../utils/triggerFloatingButtonEdit'; - -export const useFloatingButtonEditButton = (props: HTMLPropsAs<'button'>): HTMLPropsAs<'button'> => { - const editor = useEditorRef(); - - return { - onClick: useCallback(() => { - triggerFloatingButtonEdit(editor); - }, [editor]), - ...props, - }; -}; - -export const FloatingButtonEditButton = createComponentAs>((props) => { - const htmlProps = useFloatingButtonEditButton(props); - - return createElementAs('button', htmlProps); -}); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonUrlInput.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonUrlInput.tsx deleted file mode 100644 index 2ade5d34f..000000000 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonUrlInput.tsx +++ /dev/null @@ -1,30 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { ChangeEventHandler, useCallback, useEffect, useRef } from 'react'; -import { HTMLPropsAs, mergeProps, useComposedRef } from '@udecode/plate'; -import { floatingButtonActions, floatingButtonSelectors, useFloatingButtonSelectors } from './floatingButtonStore'; - -export const useFloatingButtonUrlInput = (props: HTMLPropsAs<'input'>): HTMLPropsAs<'input'> => { - const updated = useFloatingButtonSelectors().updated(); - const ref = useRef(null); - - useEffect(() => { - if (ref.current && updated) { - setTimeout(() => { - ref.current?.focus(); - }, 0); - } - }, [updated]); - - const onChange: ChangeEventHandler = useCallback((e) => { - floatingButtonActions.url(e.target.value); - }, []); - - return mergeProps( - { - onChange, - defaultValue: floatingButtonSelectors.url(), - }, - { ...props, ref: useComposedRef(props.ref, ref) }, - ); -}; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.ts index bb4be61a1..3dc1fe600 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.ts @@ -1,7 +1,7 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import { Dispatch, Reducer, useEffect, useReducer } from 'react'; -import { getPluginOptions, useEditorRef, useHotkeys } from '@udecode/plate'; +import { CheckboxState, getPluginOptions, useEditorRef, useHotkeys } from '@frontify/fondue'; import { InsertModalDispatchType, InsertModalStateProps } from './types'; import { floatingButtonActions, floatingButtonSelectors } from '../floatingButtonStore'; import { ELEMENT_BUTTON } from '../../../createButtonPlugin'; @@ -9,7 +9,6 @@ import { submitFloatingButton } from '../../../transforms/submitFloatingButton'; import { RichTextButtonStyle } from '../../../types'; import { getButtonStyle } from '../../../utils/getButtonStyle'; import { AppBridgeBlock } from '@frontify/app-bridge'; -import { CheckboxState } from '@frontify/fondue'; import { addHttps } from '../../../../../../../helpers'; import { isValidUrlOrEmpty } from '../../../../../../Link/utils/url'; @@ -95,7 +94,7 @@ export const useInsertModal = () => { }; const onCancel = () => { - floatingButtonActions.hide(); + floatingButtonActions.reset(); }; const onSave = (event: React.MouseEvent | KeyboardEvent | undefined) => { diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/UnlinkButton.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/UnlinkButton.tsx deleted file mode 100644 index 4d6e7bbb5..000000000 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/UnlinkButton.tsx +++ /dev/null @@ -1,31 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useCallback } from 'react'; -import { - AsProps, - Button, - HTMLPropsAs, - createComponentAs, - createElementAs, - focusEditor, - useEditorRef, -} from '@udecode/plate'; -import { unwrapButton } from '../../transforms/index'; - -export const useUnlinkButton = (props: HTMLPropsAs<'button'>): HTMLPropsAs<'button'> => { - const editor = useEditorRef(); - - return { - onClick: useCallback(() => { - unwrapButton(editor); - focusEditor(editor, editor.selection ?? undefined); - }, [editor]), - ...props, - }; -}; - -export const UnlinkButton = createComponentAs>((props) => { - const htmlProps = useUnlinkButton(props); - - return createElementAs(Button, htmlProps); -}); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/floatingButtonStore.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/floatingButtonStore.ts index be6773363..b47778454 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/floatingButtonStore.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/floatingButtonStore.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createStore } from '@udecode/plate'; +import { createStore } from '@frontify/fondue'; import { RichTextButtonStyle } from '../../types'; export type FloatingButtonMode = '' | 'insert' | 'edit'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/index.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/index.ts index a0fb55c36..8d683528f 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/index.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/index.ts @@ -1,9 +1,5 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -export * from './FloatingButton'; -export * from './FloatingButtonEditButton'; -export * from './FloatingButtonUrlInput'; -export * from './UnlinkButton'; export * from './floatingButtonStore'; export * from './useFloatingButtonEdit'; export * from './useFloatingButtonEnter'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEdit.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEdit.ts index 58f20a1c1..ddd40568f 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEdit.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEdit.ts @@ -1,7 +1,7 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import { - HTMLPropsAs, + UseVirtualFloatingOptions, getAboveNode, getDefaultBoundingClientRect, getEndPoint, @@ -12,15 +12,14 @@ import { someNode, useComposedRef, useEditorRef, + useEditorVersion, useHotkeys, - usePlateSelectors, -} from '@udecode/plate'; -import { useCallback, useEffect } from 'react'; +} from '@frontify/fondue'; +import { type Ref, useCallback, useEffect } from 'react'; import { ButtonPlugin, ELEMENT_BUTTON } from '../../createButtonPlugin'; import { getUrlFromEditor } from '../../utils'; import { triggerFloatingButtonEdit } from '../../utils/triggerFloatingButtonEdit'; import { - FloatingButtonProps, floatingButtonActions, floatingButtonSelectors, useFloatingButtonEnter, @@ -29,11 +28,13 @@ import { useVirtualFloatingButton, } from '.'; -export const useFloatingButtonEdit = ({ floatingOptions, ...props }: FloatingButtonProps): HTMLPropsAs<'div'> => { +export const useFloatingButtonEdit = ( + floatingOptions: UseVirtualFloatingOptions, +): React.HTMLAttributes & { ref: Ref } => { const editor = useEditorRef(); - const keyEditor = usePlateSelectors(editor.id).keyEditor(); const mode = useFloatingButtonSelectors().mode(); const open = useFloatingButtonSelectors().isOpen(editor.id); + const version = useEditorVersion(); const { triggerFloatingButtonHotkeys } = getPluginOptions(editor, ELEMENT_BUTTON); @@ -79,9 +80,9 @@ export const useFloatingButtonEdit = ({ floatingOptions, ...props }: FloatingBut } if (floatingButtonSelectors.mode() === 'edit') { - floatingButtonActions.hide(); + floatingButtonActions.reset(); } - }, [editor, keyEditor, update]); + }, [editor, version, update]); useHotkeys( triggerFloatingButtonHotkeys, @@ -107,7 +108,6 @@ export const useFloatingButtonEdit = ({ floatingOptions, ...props }: FloatingBut ...style, zIndex: 1000, }, - ...props, - ref: useComposedRef(props.ref, floating), + ref: useComposedRef(floating), }; }; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEnter.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEnter.ts index 45bf359d3..45b67eeca 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEnter.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEnter.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { useEditorRef, useHotkeys } from '@udecode/plate'; +import { useEditorRef, useHotkeys } from '@frontify/fondue'; import { submitFloatingButton } from '../../transforms/submitFloatingButton'; export const useFloatingButtonEnter = () => { diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEscape.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEscape.ts index e32b03a6b..6425e1646 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEscape.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEscape.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { focusEditor, useEditorRef, useHotkeys } from '@udecode/plate'; +import { focusEditor, useEditorRef, useHotkeys } from '@frontify/fondue'; import { floatingButtonActions, floatingButtonSelectors } from './floatingButtonStore'; export const useFloatingButtonEscape = () => { @@ -19,7 +19,7 @@ export const useFloatingButtonEscape = () => { return; } - floatingButtonActions.hide(); + floatingButtonActions.reset(); }, { enableOnFormTags: ['INPUT'], diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonInsert.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonInsert.ts index afc3ff7e7..fb82dfda3 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonInsert.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonInsert.ts @@ -1,26 +1,27 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import { - HTMLPropsAs, + UseVirtualFloatingOptions, getPluginOptions, getSelectionBoundingClientRect, useComposedRef, useEditorRef, + useFocused, useHotkeys, -} from '@udecode/plate'; -import { useEffect } from 'react'; -import { useFocused } from 'slate-react'; +} from '@frontify/fondue'; +import { type Ref, useEffect } from 'react'; import { ButtonPlugin, ELEMENT_BUTTON } from '../../createButtonPlugin'; import { triggerFloatingButtonInsert } from '../../utils/triggerFloatingButtonInsert'; import { - FloatingButtonProps, floatingButtonActions, useFloatingButtonEscape, useFloatingButtonSelectors, useVirtualFloatingButton, } from '.'; -export const useFloatingButtonInsert = ({ floatingOptions, ...props }: FloatingButtonProps): HTMLPropsAs<'div'> => { +export const useFloatingButtonInsert = ( + floatingOptions: UseVirtualFloatingOptions, +): React.HTMLAttributes & { ref: Ref } => { const editor = useEditorRef(); const focused = useFocused(); const mode = useFloatingButtonSelectors().mode(); @@ -65,7 +66,6 @@ export const useFloatingButtonInsert = ({ floatingOptions, ...props }: FloatingB ...style, zIndex: 1000, }, - ...props, - ref: useComposedRef(props.ref, floating), + ref: useComposedRef(floating), }; }; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useVirtualFloatingButton.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useVirtualFloatingButton.ts index 28c93a0f4..595d1d91f 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useVirtualFloatingButton.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useVirtualFloatingButton.ts @@ -1,12 +1,15 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { UseVirtualFloatingOptions, flip, offset, useVirtualFloating } from '@udecode/plate'; +import { UseVirtualFloatingOptions, flip, offset, useVirtualFloating } from '@frontify/fondue'; +import { CSSProperties, type Ref } from 'react'; const OFFSET_Y = 12; const OFFSET_X = -22; const PADDING = 96; -export const useVirtualFloatingButton = (floatingOptions?: UseVirtualFloatingOptions) => +export const useVirtualFloatingButton = ( + floatingOptions?: UseVirtualFloatingOptions, +): { style: CSSProperties; update: () => void; floating: Ref } => useVirtualFloating({ placement: 'bottom-start', middleware: [ diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts index b9b55190e..bc1aee647 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts @@ -1,8 +1,7 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import { AppBridgeBlock } from '@frontify/app-bridge'; -import { Plugin, PluginProps } from '@frontify/fondue'; -import { RangeBeforeOptions, createPluginFactory } from '@udecode/plate'; +import { PlatePlugin, Plugin, PluginProps, RangeBeforeOptions, createPluginFactory } from '@frontify/fondue'; import type { CSSProperties } from 'react'; import { isValidUrl } from '../../../Link/utils/url'; import { ButtonMarkupElement } from './ButtonMarkupElement'; @@ -57,7 +56,7 @@ export interface ButtonPlugin { /** * Enables support for hyperlinks. */ -export const createButtonPlugin = (appBridge: AppBridgeBlock) => +export const createButtonPlugin = (appBridge: AppBridgeBlock): PlatePlugin => createPluginFactory({ key: ELEMENT_BUTTON, isElement: true, diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/insertButton.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/insertButton.ts index ee975ee78..56030c7cc 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/insertButton.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/insertButton.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { InsertNodesOptions, PlateEditor, TText, Value, insertNodes } from '@udecode/plate'; +import { InsertNodesOptions, PlateEditor, TText, Value, insertNodes } from '@frontify/fondue'; import { TButtonElement } from '../types'; import { CreateButtonNodeOptions, createButtonNode } from '../utils/index'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/submitFloatingButton.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/submitFloatingButton.ts index dd9af8082..2eac5a7d9 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/submitFloatingButton.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/submitFloatingButton.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateEditor, Value, focusEditor, getPluginOptions } from '@udecode/plate'; +import { PlateEditor, Value, focusEditor, getPluginOptions } from '@frontify/fondue'; import { floatingButtonActions, floatingButtonSelectors } from '../components/FloatingButton/floatingButtonStore'; import { ButtonPlugin, ELEMENT_BUTTON } from '../createButtonPlugin'; import { upsertButton } from '.'; @@ -22,7 +22,7 @@ export const submitFloatingButton = (editor: PlateEditor) => const buttonStyle = floatingButtonSelectors.buttonStyle(); const target = floatingButtonSelectors.newTab() ? undefined : '_self'; - floatingButtonActions.hide(); + floatingButtonActions.reset(); upsertButton(editor, { url, diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/unwrapButton.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/unwrapButton.ts index f5fc4a099..55a647e71 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/unwrapButton.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/unwrapButton.ts @@ -10,7 +10,7 @@ import { splitNodes, unwrapNodes, withoutNormalizing, -} from '@udecode/plate'; +} from '@frontify/fondue'; import { ELEMENT_BUTTON } from '../createButtonPlugin'; /** diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButton.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButton.ts index f860d9f11..33a34fc27 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButton.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButton.ts @@ -2,6 +2,7 @@ import { InsertNodesOptions, + Path, PlateEditor, TNode, TNodeEntry, @@ -19,8 +20,8 @@ import { isExpanded, removeNodes, setNodes, -} from '@udecode/plate'; -import { Path } from 'slate'; +} from '@frontify/fondue'; + import { ButtonPlugin, ELEMENT_BUTTON } from '../createButtonPlugin'; import { RichTextButtonStyle, TButtonElement } from '../types'; import { CreateButtonNodeOptions } from '../utils/index'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButtonText.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButtonText.ts index d771349af..3fb9d4a85 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButtonText.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButtonText.ts @@ -8,7 +8,7 @@ import { getEditorString, getPluginType, replaceNodeChildren, -} from '@udecode/plate'; +} from '@frontify/fondue'; import { ELEMENT_BUTTON, TButtonElement } from '..'; import { UpsertButtonOptions } from './upsertButton'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/wrapButton.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/wrapButton.ts index f6dcd34f5..5783608bb 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/wrapButton.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/wrapButton.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateEditor, Value, WrapNodesOptions, getPluginType, wrapNodes } from '@udecode/plate'; +import { PlateEditor, Value, WrapNodesOptions, getPluginType, wrapNodes } from '@frontify/fondue'; import { ELEMENT_BUTTON, RichTextButtonStyle, TButtonElement } from '..'; export interface WrapButtonOptions extends WrapNodesOptions { diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/types.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/types.ts index bbfeb6ffe..ce5d29183 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/types.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/types.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { TLinkElement } from '@udecode/plate'; +import { TLinkElement } from '@frontify/fondue'; export type TButtonElement = TLinkElement & { chosenLink?: { diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/createButtonNode.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/createButtonNode.ts index 2af64c2d1..2bf0f41e9 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/createButtonNode.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/createButtonNode.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateEditor, TText, Value, getPluginType } from '@udecode/plate'; +import { PlateEditor, TText, Value, getPluginType } from '@frontify/fondue'; import { RichTextButtonStyle, TButtonElement } from '..'; import { ELEMENT_BUTTON } from '../createButtonPlugin'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getButtonStyle.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getButtonStyle.ts index 1ceb16b82..c2d86abb0 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getButtonStyle.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getButtonStyle.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateEditor, getAboveNode } from '@udecode/plate'; +import { PlateEditor, getAboveNode } from '@frontify/fondue'; import { ELEMENT_BUTTON, RichTextButtonStyle, TButtonElement } from '..'; export const getButtonStyle = (editor: PlateEditor): RichTextButtonStyle => { diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getUrl.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getUrl.ts index a14e36ec5..c5ee99222 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getUrl.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getUrl.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateEditor, getAboveNode } from '@udecode/plate'; +import { PlateEditor, getAboveNode } from '@frontify/fondue'; import { ELEMENT_BUTTON, TButtonElement } from '..'; const getLinkNode = (editor: PlateEditor, cb: (link: TButtonElement) => string): string => { diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButton.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButton.ts index 7c855c9ad..d52acda1f 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButton.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButton.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateEditor, Value } from '@udecode/plate'; +import { PlateEditor, Value } from '@frontify/fondue'; import { floatingButtonSelectors } from '../components'; import { triggerFloatingButtonEdit, triggerFloatingButtonInsert } from '.'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonEdit.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonEdit.ts index 12db46875..8b98ea90a 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonEdit.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonEdit.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateEditor, Value, findNode, getEditorString, getPluginType } from '@udecode/plate'; +import { PlateEditor, Value, findNode, getEditorString, getPluginType } from '@frontify/fondue'; import { ELEMENT_BUTTON, TButtonElement } from '..'; import { floatingButtonActions } from '../components/FloatingButton/floatingButtonStore'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonInsert.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonInsert.ts index 005b9ec5c..6b893edf0 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonInsert.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonInsert.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateEditor, Value, getEditorString, getPluginType, isRangeAcrossBlocks, someNode } from '@udecode/plate'; +import { PlateEditor, Value, getEditorString, getPluginType, isRangeAcrossBlocks, someNode } from '@frontify/fondue'; import { floatingButtonActions, floatingButtonSelectors } from '../components/FloatingButton/floatingButtonStore'; import { ELEMENT_BUTTON } from '../createButtonPlugin'; @@ -39,7 +39,6 @@ export const triggerFloatingButtonInsert = ( if (hasButton) { return; } - floatingButtonActions.text(getEditorString(editor, editor.selection)); floatingButtonActions.show('insert', editor.id); }; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/withButton.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/withButton.ts index cbf50ecce..5f5ae123f 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/withButton.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ButtonPlugin/withButton.ts @@ -1,9 +1,11 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import { - AnyObject, EText, + Path, PlateEditor, + Point, + Range, Value, WithOverride, getAboveNode, @@ -17,8 +19,7 @@ import { mockPlugin, select, withRemoveEmptyNodes, -} from '@udecode/plate'; -import { Path, Point, Range } from 'slate'; +} from '@frontify/fondue'; import { ELEMENT_BUTTON } from './createButtonPlugin'; /** @@ -99,7 +100,7 @@ export const withButton: WithOverride = (editor, { type }) => { return withRemoveEmptyNodes>( editor, - mockPlugin>({ + mockPlugin, Value, PlateEditor>({ options: { types: type }, }), ); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.tsx index dbc2b91b9..35c79b713 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.tsx @@ -1,26 +1,70 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { TEditableProps, useFloatingLinkSelectors } from '@udecode/plate'; - +import { + LinkFloatingToolbarState, + UseVirtualFloatingOptions, + flip, + offset, + useFloatingLinkEdit, + useFloatingLinkEditState, + useFloatingLinkInsert, + useFloatingLinkInsertState, +} from '@frontify/fondue'; import { EditModal } from './EditLinkModal'; -import { FloatingLink } from './FloatingLink'; import { InsertLinkModal } from './InsertLinkModal/InsertLinkModal'; -export const CustomFloatingLink = ({ readOnly }: TEditableProps) => { - const isEditing = useFloatingLinkSelectors().isEditing(); +const floatingOptions: UseVirtualFloatingOptions = { + placement: 'bottom-start', + strategy: 'absolute', + middleware: [ + offset(12), + flip({ + padding: 12, + fallbackPlacements: ['bottom-end', 'top-start', 'top-end'], + }), + ], +}; + +export type LinkFloatingToolbarProps = { + state?: LinkFloatingToolbarState; +}; + +export const CustomFloatingLink = () => { + const insertState = useFloatingLinkInsertState({ + floatingOptions, + }); + const { props: insertProps, ref: insertRef, hidden } = useFloatingLinkInsert(insertState); + + const editState = useFloatingLinkEditState({ + floatingOptions, + }); - if (readOnly) { + const { props: editProps, ref: editRef, editButtonProps, unlinkButtonProps } = useFloatingLinkEdit(editState); + + if (hidden) { return null; } const input = ; - const editContent = isEditing ? input : ; + const editContent = editState.isEditing ? ( + input + ) : ( + + ); return ( <> - {input} + {insertState.isOpen && !editState.isOpen && ( +
+ {input} +
+ )} - {editContent} + {editState.isOpen && ( +
+ {editContent} +
+ )} ); }; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.tsx index 0a52ee785..f504a44db 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.tsx @@ -1,43 +1,47 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { IconPen16, IconTrashBin16 } from '@frontify/fondue'; -import { useFloatingLinkUrlInput } from '@udecode/plate'; -import { FloatingLink } from '../FloatingLink'; +import { MouseEvent } from 'react'; +import { FloatingModalWrapper, IconPen16, IconTrashBin16, useLinkOpenButtonState } from '@frontify/fondue'; +import { getUrlFromLinkOrLegacyLink } from '../../../../../Link'; -export const EditModal = () => { - const urlHtmlProps = useFloatingLinkUrlInput({}); +type EditModalProps = { + editButtonProps: { + onClick: () => void; + }; + unlinkButtonProps: { + onMouseDown: (e: MouseEvent) => void; + onClick: () => void; + }; +}; + +export const EditModal = ({ editButtonProps, unlinkButtonProps }: EditModalProps) => { + const { element } = useLinkOpenButtonState(); + const url = element ? getUrlFromLinkOrLegacyLink(element) : ''; return ( -
- - {urlHtmlProps.defaultValue} + + + {url} - - - - - + + - - - - - + + -
+ ); }; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/index.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/index.ts index ab2acf583..874cccf5f 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/index.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/index.ts @@ -1,4 +1,3 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './EditModal'; -export * from './useFloatingLinkEdit'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts deleted file mode 100644 index bcc020b57..000000000 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { - ELEMENT_LINK, - FloatingLinkProps, - HTMLPropsAs, - LinkPlugin, - floatingLinkActions, - floatingLinkSelectors, - getAboveNode, - getDefaultBoundingClientRect, - getEndPoint, - getPluginOptions, - getPluginType, - getRangeBoundingClientRect, - getStartPoint, - someNode, - triggerFloatingLinkEdit, - useComposedRef, - useEditorRef, - useFloatingLinkEnter, - useFloatingLinkEscape, - useFloatingLinkSelectors, - useHotkeys, - usePlateSelectors, - useVirtualFloatingLink, -} from '@udecode/plate'; -import { useCallback, useEffect } from 'react'; -import { getLinkFromEditor } from '../../../../../Link'; - -export const useFloatingLinkEdit = ({ floatingOptions, ...props }: FloatingLinkProps): HTMLPropsAs<'div'> => { - const editor = useEditorRef(); - const keyEditor = usePlateSelectors().keyEditor(); - const mode = useFloatingLinkSelectors().mode(); - const open = useFloatingLinkSelectors().isOpen(editor.id); - - const { triggerFloatingLinkHotkeys = 'command+k, ctrl+k' } = getPluginOptions(editor, ELEMENT_LINK); - - const getBoundingClientRect = useCallback(() => { - const entry = getAboveNode(editor, { - match: { type: getPluginType(editor, ELEMENT_LINK) }, - }); - - if (entry) { - const [, path] = entry; - return getRangeBoundingClientRect(editor, { - anchor: getStartPoint(editor, path), - focus: getEndPoint(editor, path), - }); - } - - return getDefaultBoundingClientRect(); - }, [editor]); - - const isOpen = open && mode === 'edit'; - - const { update, style, floating } = useVirtualFloatingLink({ - editorId: editor.id, - open: isOpen, - getBoundingClientRect, - ...floatingOptions, - }); - - useEffect(() => { - const url = getLinkFromEditor(editor); - if (url) { - floatingLinkActions.url(url); - } - - if ( - editor.selection && - someNode(editor, { - match: { type: getPluginType(editor, ELEMENT_LINK) }, - }) - ) { - floatingLinkActions.show('edit', editor.id); - update(); - return; - } - - if (floatingLinkSelectors.mode() === 'edit') { - floatingLinkActions.hide(); - } - }, [editor, keyEditor, update]); - - useHotkeys( - triggerFloatingLinkHotkeys, - (e) => { - e.preventDefault(); - - if (floatingLinkSelectors.mode() === 'edit') { - triggerFloatingLinkEdit(editor); - } - }, - { - enableOnContentEditable: true, - }, - [], - ); - - useFloatingLinkEnter(); - - useFloatingLinkEscape(); - - return { - style: { - ...style, - zIndex: 1000, - }, - ...props, - ref: useComposedRef(props.ref, floating), - }; -}; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/FloatingLink.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/FloatingLink.tsx deleted file mode 100644 index 979ced885..000000000 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/FloatingLink.tsx +++ /dev/null @@ -1,45 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { - FloatingLinkProps, - FloatingLink as PlateFloatingLink, - createComponentAs, - createElementAs, -} from '@udecode/plate'; -import { useFloatingLinkEdit } from './EditLinkModal'; -import { useFloatingLinkInsert } from './InsertLinkModal/useFloatingLinkInsert'; - -const FloatingLinkInsertRoot = createComponentAs((props) => { - const htmlProps = useFloatingLinkInsert({ - ...props, - floatingOptions: { - strategy: 'absolute', - }, - }); - - if (htmlProps.style?.display === 'none') { - return null; - } - - return createElementAs('div', htmlProps); -}); - -const FloatingLinkEditRoot = createComponentAs((props) => { - const htmlProps = useFloatingLinkEdit({ - ...props, - floatingOptions: { - strategy: 'absolute', - }, - }); - - if (htmlProps.style?.display === 'none') { - return null; - } - - return createElementAs('div', htmlProps); -}); - -PlateFloatingLink.EditRoot = FloatingLinkEditRoot; -PlateFloatingLink.InsertRoot = FloatingLinkInsertRoot; - -export const FloatingLink = PlateFloatingLink; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.tsx index e125374e8..26e5c4ad1 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.tsx @@ -1,5 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { InsertModal, useInsertModal } from '.'; +import { InsertModal } from './InsertModal'; +import { useInsertModal } from './useInsertModal'; export const InsertLinkModal = () => ; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx index 1cc276e42..e5556ac76 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx @@ -1,26 +1,27 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ +import { MouseEvent, ReactElement, ReactNode } from 'react'; import { AppBridgeBlock } from '@frontify/app-bridge'; import { Button, ButtonEmphasis, ButtonSize, ButtonStyle, + FloatingModalWrapper, FormControl, IconCheckMark20, TextInput, } from '@frontify/fondue'; -import { FC, ReactNode } from 'react'; import { InsertModalStateProps } from './types'; -import { LinkInput } from '../../../../../Link/LinkInput'; +import { LinkInput } from '../../../../../Link'; -type InsertModalProps = { +type Props = { state: InsertModalStateProps; onTextChange: (value: string) => void; onUrlChange: (value: string) => void; onToggleTab: (checked: boolean) => void; onCancel: () => void; - onSave: (event: React.MouseEvent | KeyboardEvent | undefined) => void; + onSave: (event: MouseEvent | KeyboardEvent | undefined) => void; hasValues: boolean; isValidUrlOrEmpty: (url: string) => boolean; testId?: string; @@ -28,7 +29,7 @@ type InsertModalProps = { appBridge: AppBridgeBlock; }; -export const InsertModal: FC = ({ +export const InsertModal = ({ state, onTextChange, onUrlChange, @@ -40,8 +41,8 @@ export const InsertModal: FC = ({ testId, appBridge, children, -}) => ( -
+}: Props): ReactElement => ( + = ({ onClick={onSave} size={ButtonSize.Medium} icon={} - disabled={!hasValues || !isValidUrlOrEmpty(state?.url)} + disabled={!isValidUrlOrEmpty(state?.url) || !hasValues} > Save
- + ); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/index.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/index.ts index 14a959997..1a4686a57 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/index.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/index.ts @@ -1,4 +1,3 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './InsertModal'; -export * from './useInsertModal'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useFloatingLinkInsert.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useFloatingLinkInsert.ts deleted file mode 100644 index ca6452706..000000000 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useFloatingLinkInsert.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { - ELEMENT_LINK, - FloatingLinkProps, - HTMLPropsAs, - LinkPlugin, - floatingLinkActions, - getPluginOptions, - getSelectionBoundingClientRect, - triggerFloatingLinkInsert, - useComposedRef, - useEditorRef, - useFloatingLinkEscape, - useFloatingLinkSelectors, - useHotkeys, - useVirtualFloatingLink, -} from '@udecode/plate'; -import { useEffect } from 'react'; -import { useFocused } from 'slate-react'; - -export const useFloatingLinkInsert = ({ floatingOptions, ...props }: FloatingLinkProps): HTMLPropsAs<'div'> => { - const editor = useEditorRef(); - const focused = useFocused(); - const mode = useFloatingLinkSelectors().mode(); - const open = useFloatingLinkSelectors().isOpen(editor.id); - - const { triggerFloatingLinkHotkeys } = getPluginOptions(editor, ELEMENT_LINK); - - useHotkeys( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - triggerFloatingLinkHotkeys!, - (e) => { - if (triggerFloatingLinkInsert(editor, { focused })) { - e.preventDefault(); - } - }, - { - enableOnContentEditable: true, - }, - [focused], - ); - - const { update, style, floating } = useVirtualFloatingLink({ - editorId: editor.id, - open: open && mode === 'insert', - getBoundingClientRect: getSelectionBoundingClientRect, - // eslint-disable-next-line @typescript-eslint/no-empty-function - whileElementsMounted: () => {}, - ...floatingOptions, - }); - - // wait for update before focusing input - useEffect(() => { - if (open) { - update(); - floatingLinkActions.updated(true); - } else { - floatingLinkActions.updated(false); - } - }, [open, update]); - - useFloatingLinkEscape(); - - return { - style: { - ...style, - zIndex: 1000, - }, - ...props, - ref: useComposedRef(props.ref, floating), - }; -}; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.ts index 065dadebb..5bd50893f 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.ts @@ -1,8 +1,8 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { AppBridgeBlock } from '@frontify/app-bridge'; -import { CheckboxState } from '@frontify/fondue'; +import { Dispatch, MouseEvent, Reducer, useEffect, useReducer } from 'react'; import { + CheckboxState, ELEMENT_LINK, floatingLinkActions, floatingLinkSelectors, @@ -10,12 +10,13 @@ import { submitFloatingLink, useEditorRef, useHotkeys, -} from '@udecode/plate'; -import { Dispatch, Reducer, useEffect, useReducer } from 'react'; -import { getLegacyUrl, getUrl } from '../../../../../Link/utils'; +} from '@frontify/fondue'; + import { InsertModalDispatchType, InsertModalStateProps } from './types'; +import { AppBridgeBlock } from '@frontify/app-bridge'; +import { getLegacyUrl, getUrl } from '../../utils'; +import { isValidUrlOrEmpty } from '../../../../../Link'; import { addHttps } from '../../../../../../helpers'; -import { isValidUrlOrEmpty } from '../../../../../Link/utils/url'; const initialState: InsertModalStateProps = { url: '', @@ -60,12 +61,12 @@ export const useInsertModal = () => { useEffect(() => { const legacyUrl = getLegacyUrl(editor); const url = getUrl(editor); - + const isNewTab = floatingLinkSelectors.newTab(); dispatch({ type: 'INIT', payload: { text: floatingLinkSelectors.text(), - newTab: floatingLinkSelectors.newTab() ? CheckboxState.Checked : CheckboxState.Unchecked, + newTab: isNewTab ? CheckboxState.Checked : CheckboxState.Unchecked, url: legacyUrl && url === '' ? legacyUrl : floatingLinkSelectors.url(), }, }); @@ -90,18 +91,16 @@ export const useInsertModal = () => { }; const onCancel = () => { - floatingLinkActions.hide(); + floatingLinkActions.reset(); }; - const onSave = (event: React.MouseEvent | KeyboardEvent | undefined) => { + const onSave = (event: MouseEvent | KeyboardEvent | undefined) => { if (!isValidUrlOrEmpty(state.url) || !hasValues) { return; } - const urlToSave = addHttps(state.url); - floatingLinkActions.text(state.text); - floatingLinkActions.url(urlToSave); + floatingLinkActions.url(addHttps(state.url)); floatingLinkActions.newTab(state.newTab === CheckboxState.Checked); if (submitFloatingLink(editor)) { @@ -122,15 +121,5 @@ export const useInsertModal = () => { [], ); - return { - state, - onTextChange, - onUrlChange, - onToggleTab, - onCancel, - onSave, - hasValues, - isValidUrlOrEmpty, - appBridge, - }; + return { state, onTextChange, onUrlChange, onToggleTab, onCancel, onSave, hasValues, isValidUrlOrEmpty, appBridge }; }; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkButton.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkButton.tsx index bd5f3e9d3..7ef5ed488 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkButton.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkButton.tsx @@ -1,17 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import { - IconLink, - IconSize, PluginButtonProps, - getButtonClassNames, getHotkeyByPlatform, getTooltip, + isRangeInSameBlock, + useEditorState, + useEventPlateId, } from '@frontify/fondue'; -import { LinkToolbarButton, isRangeInSameBlock, useEventPlateId, usePlateEditorState } from '@udecode/plate'; +import { LinkToolbarButton } from './LinkToolbarButton'; export const LinkButton = ({ id, editorId }: PluginButtonProps) => { - const editor = usePlateEditorState(useEventPlateId(editorId)); + const editor = useEditorState(useEventPlateId(editorId)); const isEnabled = !!isRangeInSameBlock(editor, { at: editor.selection, }); @@ -19,19 +19,12 @@ export const LinkButton = ({ id, editorId }: PluginButtonProps) => { return (
- - - } - classNames={getButtonClassNames(isEnabled)} - styles={{ root: { width: '24px', height: '24px' } }} - actionHandler="onMouseDown" />
); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.tsx index e5b5dc0e7..818a5a784 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.tsx @@ -1,35 +1,30 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { HTMLPropsAs, LinkRootProps, useElementProps } from '@udecode/plate'; -import type { MouseEvent } from 'react'; -import { TLinkElement } from '../types'; -import { BlockStyles } from '../../styles'; +import { + type PlateRenderElementProps, + TLinkElement as TPlateLinkElement, + useRichTextEditorContext, +} from '@frontify/fondue'; import { LINK_PLUGIN } from '../id'; -const useLink = (props: LinkRootProps): HTMLPropsAs<'a'> => { - const _props = useElementProps({ - ...props, - elementToAttributes: (element) => ({ - href: element.url || element.chosenLink?.searchResult?.link || '', - target: element.target || '_self', - }), - }); - - return { - ..._props, - // quick fix: hovering
with href loses the editor focus - onMouseOver: (event: MouseEvent) => { - event.stopPropagation(); - }, +export type TLinkElement = TPlateLinkElement & { + chosenLink?: { + searchResult?: { + link?: string; + }; + openInNewTab?: boolean; }; }; -export const LinkMarkupElementNode = (props: LinkRootProps) => { - const htmlProps = useLink(props); +export const LinkMarkupElementNode = (props: PlateRenderElementProps & { element: TLinkElement }) => { const { attributes, children } = props; + const { styles } = useRichTextEditorContext(); + const href = props.element.url || props.element.chosenLink?.searchResult?.link || ''; + const target = props.element.target || '_self'; + return ( - + {children} ); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/index.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/index.ts index b7321e470..aa3ff4ce6 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/index.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/index.ts @@ -1,11 +1,14 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { MarkupElement } from '@frontify/fondue'; -import { ELEMENT_LINK } from '@udecode/plate'; -import { LinkMarkupElementNode } from './LinkMarkupElementNode'; +import { ELEMENT_LINK, MarkupElement, type PlateRenderElementProps } from '@frontify/fondue'; + +import { LinkMarkupElementNode, TLinkElement } from './LinkMarkupElementNode'; export class LinkMarkupElement extends MarkupElement { - constructor(id = ELEMENT_LINK, node = LinkMarkupElementNode) { + constructor( + id = ELEMENT_LINK, + node: (props: PlateRenderElementProps & { element: TLinkElement }) => JSX.Element = LinkMarkupElementNode, + ) { super(id, node); } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkToolbarButton.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkToolbarButton.tsx new file mode 100644 index 000000000..6dc429b49 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/LinkToolbarButton.tsx @@ -0,0 +1,35 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { + IconLink16, + IconStylingWrapper, + ToolbarButton, + focusEditor, + useEditorRef, + useLinkToolbarButton, + useLinkToolbarButtonState, +} from '@frontify/fondue'; + +import { ReactNode, forwardRef } from 'react'; + +export const LinkToolbarButton = forwardRef( + (rootProps, ref) => { + const editor = useEditorRef(); + const state = useLinkToolbarButtonState(); + const { props } = useLinkToolbarButton(state); + return ( + { + focusEditor(editor, editor.selection ?? editor.prevSelection ?? undefined); + }} + ref={ref} + {...props} + {...rootProps} + > + } /> + + ); + }, +); + +LinkToolbarButton.displayName = 'LinkToolbarButton'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/index.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/index.ts index aa9d35b4d..14acfa7e5 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/index.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/index.ts @@ -1,18 +1,23 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import type { CSSProperties } from 'react'; +import { CSSProperties } from 'react'; import { AppBridgeBlock } from '@frontify/app-bridge'; -import { Plugin, PluginProps } from '@frontify/fondue'; -import { createLinkPlugin as createPlateLinkPlugin, createPluginFactory } from '@udecode/plate'; +import { + PlatePlugin, + Plugin, + PluginProps, + createLinkPlugin as createPlateLinkPlugin, + createPluginFactory, +} from '@frontify/fondue'; import { CustomFloatingLink } from './FloatingLink/CustomFloatingLink'; import { LINK_PLUGIN } from './id'; import { LinkButton } from './LinkButton'; import { LinkMarkupElement } from './LinkMarkupElement'; -import { isValidUrl } from '../../../Link/utils/url'; import { BlockStyles } from '../styles'; +import { isValidUrl } from '../../../Link'; -export const createLinkPlugin = (appBridge: AppBridgeBlock) => +export const createLinkPlugin = (appBridge: AppBridgeBlock): PlatePlugin => createPluginFactory({ ...createPlateLinkPlugin(), renderAfterEditable: CustomFloatingLink, @@ -23,7 +28,8 @@ export const createLinkPlugin = (appBridge: AppBridgeBlock) => skipInvalid: true, afterMatch: true, }, - triggerFloatingLinkHotkeys: 'command+k, ctrl+k', + triggerFloatingLinkHotkeys: 'meta+k, ctrl+k', + keepSelectedTextOnPaste: true, appBridge, }, })(); @@ -31,19 +37,19 @@ export const createLinkPlugin = (appBridge: AppBridgeBlock) => export type LinkPluginProps = PluginProps & { appBridge: AppBridgeBlock }; export class LinkPlugin extends Plugin { - private appBridge: AppBridgeBlock; public styles: CSSProperties = {}; - constructor(props?: LinkPluginProps, styles = BlockStyles[LINK_PLUGIN]) { + private appBridge: AppBridgeBlock; + constructor({ styles = BlockStyles[LINK_PLUGIN], ...props }: LinkPluginProps) { super(LINK_PLUGIN, { button: LinkButton, markupElement: new LinkMarkupElement(), ...props, }); this.styles = styles; - this.appBridge = props?.appBridge as AppBridgeBlock; + this.appBridge = props.appBridge; } - plugins() { + plugins(): PlatePlugin[] { return [createLinkPlugin(this.appBridge)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/types.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/types.ts index ab8e7fa2c..73278f8b4 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/types.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/types.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { TLinkElement as TPlateLinkElement } from '@udecode/plate'; +import { TLinkElement as TPlateLinkElement } from '@frontify/fondue'; export type TLinkElement = TPlateLinkElement & { chosenLink?: { diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.ts new file mode 100644 index 000000000..0e8e45df8 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.ts @@ -0,0 +1,30 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { ELEMENT_LINK, PlateEditor, getAboveNode } from '@frontify/fondue'; +import { TLinkElement } from '../types'; + +const getLinkNode = (editor: PlateEditor, cb: (link: TLinkElement) => string): string => { + const linkNode = getAboveNode(editor, { match: { type: ELEMENT_LINK } }); + + if (!Array.isArray(linkNode)) { + return ''; + } + + return cb(linkNode[0]); +}; + +export const getLegacyUrl = (editor: PlateEditor) => { + return getLinkNode(editor, (link) => link.chosenLink?.searchResult?.link || ''); +}; + +export const getUrl = (editor: PlateEditor) => { + return getLinkNode(editor, (link) => link.url || ''); +}; + +export const getUrlFromLinkOrLegacyLink = (link: TLinkElement): string => { + return link.url || link.chosenLink?.searchResult?.link || ''; +}; + +export const getUrlFromEditor = (editor: PlateEditor) => { + return getLinkNode(editor, getUrlFromLinkOrLegacyLink); +}; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/utils/index.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/utils/index.ts new file mode 100644 index 000000000..9ed780f5b --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/LinkPlugin/utils/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './getUrl'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.tsx index f2d21f0af..5352f9a08 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.tsx @@ -1,16 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles, TextStyles } from '../styles'; const ID = 'textstyle-custom1-plugin'; @@ -26,7 +27,7 @@ export class Custom1Plugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createCustom1Plugin(this.styles)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.tsx index 040610541..9ea4e3871 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.tsx @@ -1,16 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles, TextStyles } from '../styles'; const ID = 'textstyle-custom2-plugin'; @@ -26,7 +27,7 @@ export class Custom2Plugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createCustom2Plugin(this.styles)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.tsx index 7cee0bed3..aca7bbe56 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.tsx @@ -1,17 +1,19 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateRenderElementProps, createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, + type PlateRenderElementProps, Plugin, PluginProps, TextStyleRenderElementProps, TextStyles, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles } from '../styles'; const ID = 'textstyle-custom3-plugin'; @@ -27,7 +29,7 @@ export class Custom3Plugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createCustom3Plugin(this.styles)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.tsx index b21aa6005..4568e95fd 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.tsx @@ -1,16 +1,18 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { PlateRenderElementProps, createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, + type PlateRenderElementProps, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles, TextStyles } from '../styles'; const ID = 'textstyle-heading1-plugin'; @@ -25,7 +27,7 @@ export class Heading1Plugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createHeading1Plugin(this.styles)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.tsx index dbc26b339..8bcecdf30 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.tsx @@ -1,16 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles, TextStyles } from '../styles'; const ID = 'textstyle-heading2-plugin'; @@ -25,7 +26,7 @@ export class Heading2Plugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createHeading2Plugin(this.styles)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.tsx index 21dc7d5e7..e6ea1f735 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.tsx @@ -1,16 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles, TextStyles } from '../styles'; const ID = 'textstyle-heading3-plugin'; @@ -26,7 +27,7 @@ export class Heading3Plugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createHeading3Plugin(this.styles)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.tsx index dbe1cd69f..cfd9d1c9d 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.tsx @@ -1,16 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles, TextStyles } from '../styles'; const ID = 'textstyle-heading4-plugin'; @@ -26,7 +27,7 @@ export class Heading4Plugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createHeading4Plugin(this.styles)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.tsx index 8bb8e30a6..02362255d 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.tsx @@ -1,16 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles, TextStyles } from '../styles'; const ID = 'textstyle-imageCaption-plugin'; @@ -26,7 +27,7 @@ export class ImageCaptionPlugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createImageCaptionPlugin(this.styles)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.tsx index 78bb83fd8..7c997a3f5 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.tsx @@ -1,16 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles, TextStyles } from '../styles'; const ID = 'textstyle-imageTitle-plugin'; @@ -26,7 +27,7 @@ export class ImageTitlePlugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createImageTitlePlugin(this.styles)]; } } diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.tsx index 7cb7eb1e6..7d4b5c55f 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.tsx @@ -1,20 +1,23 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createParagraphPlugin as createPlateParagraphPlugin, createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createParagraphPlugin as createPlateParagraphPlugin, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; + import { BlockStyles, TextStyles } from '../styles'; +import { CSSProperties } from 'react'; export class ParagraphPlugin extends Plugin { - public styles: CSSProperties = {}; + public styles = {}; constructor({ styles = BlockStyles.p, ...props }: PluginProps = {}) { super(TextStyles.p, { markupElement: new ParagraphMarkupElement(), @@ -24,7 +27,7 @@ export class ParagraphPlugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createParagraphPlugin(this.styles)]; } } @@ -47,7 +50,7 @@ export class ParagraphMarkupElement extends MarkupElement { } } -export const createParagraphPlugin = (styles: CSSProperties) => +export const createParagraphPlugin = (styles: CSSProperties): PlatePlugin => createPluginFactory({ ...createPlateParagraphPlugin(), key: TextStyles.p, diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.tsx index 4d68fd376..d9024aa10 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.tsx @@ -1,16 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { createPluginFactory } from '@udecode/plate'; -import type { CSSProperties } from 'react'; import { MarkupElement, + PlatePlugin, Plugin, PluginProps, TextStyleRenderElementProps, alignmentClassnames, + createPluginFactory, getColumnBreakClasses, merge, } from '@frontify/fondue'; +import type { CSSProperties } from 'react'; import { BlockStyles, TextStyles } from '../styles'; const ID = 'textstyle-quote-plugin'; @@ -26,7 +27,7 @@ export class QuotePlugin extends Plugin { this.styles = styles; } - plugins() { + plugins(): PlatePlugin[] { return [createQuotePlugin(this.styles)]; } } @@ -50,7 +51,7 @@ export const QuoteMarkupElementNode = ({ element, attributes, children, styles } ); }; -export const createQuotePlugin = (styles: CSSProperties) => +export const createQuotePlugin = (styles: CSSProperties): PlatePlugin => createPluginFactory({ key: TextStyles.quote, isElement: true, diff --git a/packages/platform-app/CHANGELOG.md b/packages/platform-app/CHANGELOG.md index b4b977aef..eac6d50b9 100644 --- a/packages/platform-app/CHANGELOG.md +++ b/packages/platform-app/CHANGELOG.md @@ -1,5 +1,26 @@ # @frontify/platform-app +## 0.0.13 + +### Patch Changes + +- Updated dependencies [[`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c)]: + - @frontify/sidebar-settings@0.9.9 + +## 0.0.12 + +### Patch Changes + +- Updated dependencies [[`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce)]: + - @frontify/sidebar-settings@0.9.8 + +## 0.0.11 + +### Patch Changes + +- Updated dependencies [[`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32)]: + - @frontify/sidebar-settings@0.9.7 + ## 0.0.10 ### Patch Changes diff --git a/packages/platform-app/package.json b/packages/platform-app/package.json index a4ba62a3b..a0e0e62a5 100644 --- a/packages/platform-app/package.json +++ b/packages/platform-app/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/platform-app", "type": "module", - "version": "0.0.10", + "version": "0.0.13", "description": "Provides the types for the Apps", "author": "Frontify Developers ", "repository": { diff --git a/packages/sidebar-settings/CHANGELOG.md b/packages/sidebar-settings/CHANGELOG.md index cf561a6ac..18e0e272e 100644 --- a/packages/sidebar-settings/CHANGELOG.md +++ b/packages/sidebar-settings/CHANGELOG.md @@ -1,5 +1,23 @@ # @frontify/sidebar-settings +## 0.9.9 + +### Patch Changes + +- [#800](https://github.com/Frontify/brand-sdk/pull/800) [`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to 12.0.0-beta.410 + +## 0.9.8 + +### Patch Changes + +- [#796](https://github.com/Frontify/brand-sdk/pull/796) [`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue + +## 0.9.7 + +### Patch Changes + +- [#750](https://github.com/Frontify/brand-sdk/pull/750) [`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue + ## 0.9.6 ### Patch Changes diff --git a/packages/sidebar-settings/package.json b/packages/sidebar-settings/package.json index 9656add19..660c1a828 100644 --- a/packages/sidebar-settings/package.json +++ b/packages/sidebar-settings/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/sidebar-settings", "type": "module", - "version": "0.9.6", + "version": "0.9.9", "description": "Provides types and helpers for the settings sidebar", "author": "Frontify Developers ", "repository": { @@ -33,7 +33,7 @@ "react-dom": "^18" }, "dependencies": { - "@frontify/fondue": "12.0.0-beta.404" + "@frontify/fondue": "12.0.0-beta.411" }, "devDependencies": { "@babel/core": "^7.23.9", diff --git a/patches/@udecode__plate-emoji@30.7.0.patch b/patches/@udecode__plate-emoji@30.7.0.patch new file mode 100644 index 000000000..df9877a22 --- /dev/null +++ b/patches/@udecode__plate-emoji@30.7.0.patch @@ -0,0 +1,17 @@ +diff --git a/dist/index.mjs b/dist/index.mjs +index efc12cbd4f1e8f06dc724d8921b5d7d9c244de33..69173eec772ff448d0cee3fce922ab76f0edca75 100644 +--- a/dist/index.mjs ++++ b/dist/index.mjs +@@ -348,10 +348,10 @@ var EmojiFloatingGridBuilder = class { + }; + + // src/utils/EmojiLibrary/EmojiFloatingLibrary.ts +-import emojiMartData2 from "@emoji-mart/data"; ++import emojiMartData2 from "@emoji-mart/data" assert { type: "json" }; + + // src/utils/EmojiLibrary/EmojiInlineLibrary.ts +-import emojiMartData from "@emoji-mart/data"; ++import emojiMartData from "@emoji-mart/data" assert { type: "json" }; + var EmojiInlineLibrary = class { + constructor(library = emojiMartData) { + this._hash = {}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a84239684..e4cc175c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,11 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +patchedDependencies: + '@udecode/plate-emoji@30.7.0': + hash: dh5teqvvykulbav3j7foi74cke + path: patches/@udecode__plate-emoji@30.7.0.patch + importers: .: @@ -18,17 +23,17 @@ importers: specifier: ^5.0.7 version: 5.0.7 '@frontify/fondue': - specifier: 12.0.0-beta.404 - version: 12.0.0-beta.404(@babel/core@7.23.9)(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@3.7.2) + specifier: 12.0.0-beta.411 + version: 12.0.0-beta.411(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1) '@vitejs/plugin-react': specifier: ^4.2.1 version: 4.2.1(vite@4.5.2) cypress: specifier: ^13.6.4 - version: 13.6.4 + version: 13.6.6 cypress-real-events: specifier: ^1.12.0 - version: 1.12.0(cypress@13.6.4) + version: 1.12.0(cypress@13.6.6) glob: specifier: ^10.3.10 version: 10.3.10 @@ -52,7 +57,7 @@ importers: version: 4.5.2(@types/node@18.19.18) vitest: specifier: ^1.3.0 - version: 1.3.0(@types/node@18.19.18) + version: 1.3.1(@types/node@18.19.18)(@vitest/ui@1.3.1)(happy-dom@13.4.1) packages/app-bridge: dependencies: @@ -251,8 +256,8 @@ importers: specifier: ^3.0.0 || ^4.0.0-alpha.0 version: link:../app-bridge '@frontify/fondue': - specifier: 12.0.0-beta.404 - version: 12.0.0-beta.404(@babel/core@7.23.9)(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@3.7.2) + specifier: 12.0.0-beta.411 + version: 12.0.0-beta.411(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1) '@frontify/sidebar-settings': specifier: workspace:^ version: link:../sidebar-settings @@ -262,15 +267,6 @@ importers: '@react-stately/overlays': specifier: ^3.6.1 version: 3.6.1(react@18.2.0) - '@udecode/plate': - specifier: ^21.5.0 - version: 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dnd-html5-backend@16.0.1)(react-dnd@16.0.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - slate: - specifier: ^0.94.1 - version: 0.94.1 - slate-react: - specifier: ^0.98.3 - version: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) devDependencies: '@babel/core': specifier: ^7.23.9 @@ -286,7 +282,7 @@ importers: version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.5.2 - version: 14.5.2(@testing-library/dom@9.0.0) + version: 14.5.2(@testing-library/dom@9.3.4) '@types/node': specifier: ^18.19.18 version: 18.19.18 @@ -412,8 +408,8 @@ importers: packages/sidebar-settings: dependencies: '@frontify/fondue': - specifier: 12.0.0-beta.404 - version: 12.0.0-beta.404(@babel/core@7.23.9)(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@3.7.2) + specifier: 12.0.0-beta.411 + version: 12.0.0-beta.411(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1) devDependencies: '@babel/core': specifier: ^7.23.9 @@ -508,10 +504,10 @@ packages: '@babel/helpers': 7.23.9 '@babel/parser': 7.23.9 '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9(supports-color@5.5.0) + '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -527,12 +523,6 @@ packages: '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.22.5: - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} @@ -617,7 +607,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9(supports-color@5.5.0) + '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color @@ -675,6 +665,13 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 + dev: true + + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 /@babel/template@7.23.9: resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} @@ -684,7 +681,7 @@ packages: '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - /@babel/traverse@7.23.9(supports-color@5.5.0): + /@babel/traverse@7.23.9: resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} dependencies: @@ -696,7 +693,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -949,8 +946,8 @@ packages: resolution: {integrity: sha512-e9nEVehVJwkymQpkGhdSNzLT2Lr9UTTby+JePq4Z2SxBbOQjY7pLgSouAaXvfaGQVSAaY0U4eJdwfSDmCbItcw==} engines: {node: '>=14'} - /@cypress/request@3.0.0: - resolution: {integrity: sha512-GKFCqwZwMYmL3IBoNeR2MM1SnxRIGERsQOTWeQKoYBt2JLqcqiy7JXqO894FLrpjZYqGxW92MNwRH2BN56obdQ==} + /@cypress/request@3.0.1: + resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} engines: {node: '>= 6'} dependencies: aws-sign2: 0.7.0 @@ -976,7 +973,7 @@ packages: /@cypress/vite-dev-server@5.0.7: resolution: {integrity: sha512-OeVsEvDtoWV/CnvnUEjWny7tsuw84DF78tvnibOWNTOuZzav62U3A07QKK2JDuGAoXQlVTiDWzcCObKIEcOGGg==} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) find-up: 6.3.0 node-html-parser: 5.3.3 semver: 7.5.4 @@ -1045,7 +1042,7 @@ packages: react: '>=16.8.0' dependencies: react: 18.2.0 - tslib: 2.6.1 + tslib: 2.6.2 /@emoji-mart/data@1.1.2: resolution: {integrity: sha512-1HP8BxD2azjqWJvxIaWAMyTySeZY0Osr83ukYjltPVkNXeJvTz7yDrPLBtnrD5uqJ3tg4CcLuuBW09wahqL/fg==} @@ -1057,25 +1054,11 @@ packages: '@emotion/memoize': 0.7.4 optional: true - /@emotion/is-prop-valid@1.2.0: - resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} - dependencies: - '@emotion/memoize': 0.8.0 - /@emotion/memoize@0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} requiresBuild: true optional: true - /@emotion/memoize@0.8.0: - resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} - - /@emotion/stylis@0.8.5: - resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} - - /@emotion/unitless@0.7.5: - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -1479,7 +1462,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 globals: 13.19.0 ignore: 5.2.4 @@ -1525,13 +1508,15 @@ packages: fast-json-stringify: 5.9.1 dev: false - /@floating-ui/core@1.3.0: - resolution: {integrity: sha512-vX1WVAdPjZg9DkDkC+zEx/tKtnST6/qcNpwcjeBgco3XRNHz5PUA+ivi/yr6G3o0kMR60uKBJcfOdfzOFI7PMQ==} + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + dependencies: + '@floating-ui/utils': 0.2.1 /@floating-ui/dom@1.3.0: resolution: {integrity: sha512-qIAwejE3r6NeA107u4ELDKkH8+VtgRKdXqtSPaKflL2S2V+doyN+Wt9s5oHKXPDo4E8TaVXaHT3+6BbagH31xw==} dependencies: - '@floating-ui/core': 1.3.0 + '@floating-ui/core': 1.6.0 /@floating-ui/react-dom@1.3.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==} @@ -1565,34 +1550,37 @@ packages: react-dom: 18.2.0(react@18.2.0) tabbable: 6.1.2 + /@floating-ui/utils@0.2.1: + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + /@formatjs/ecma402-abstract@1.14.3: resolution: {integrity: sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg==} dependencies: '@formatjs/intl-localematcher': 0.2.32 - tslib: 2.6.1 + tslib: 2.6.2 /@formatjs/fast-memoize@2.0.1: resolution: {integrity: sha512-M2GgV+qJn5WJQAYewz7q2Cdl6fobQa69S1AzSM2y0P68ZDbK5cWrJIcPCO395Of1ksftGZoOt4LYCO/j9BKBSA==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 /@formatjs/icu-messageformat-parser@2.3.0: resolution: {integrity: sha512-xqtlqYAbfJDF4b6e4O828LBNOWXrFcuYadqAbYORlDRwhyJ2bH+xpUBPldZbzRGUN2mxlZ4Ykhm7jvERtmI8NQ==} dependencies: '@formatjs/ecma402-abstract': 1.14.3 '@formatjs/icu-skeleton-parser': 1.3.18 - tslib: 2.6.1 + tslib: 2.6.2 /@formatjs/icu-skeleton-parser@1.3.18: resolution: {integrity: sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg==} dependencies: '@formatjs/ecma402-abstract': 1.14.3 - tslib: 2.6.1 + tslib: 2.6.2 /@formatjs/intl-localematcher@0.2.32: resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 /@frontify/eslint-config-basic@0.18.0(eslint@8.56.0)(prettier@3.2.5): resolution: {integrity: sha512-HQQXvkksqbQL8arLqWzYwoWFDYLhILrzaHgzvJWqqCK0NxeFuo9vjo0AthcD9wd/nNwFIFDKErzkuhmHVHKQvw==} @@ -1738,8 +1726,8 @@ packages: transitivePeerDependencies: - ts-node - /@frontify/fondue@12.0.0-beta.404(@babel/core@7.23.9)(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(styled-components@5.3.6)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@3.7.2): - resolution: {integrity: sha512-CpxgJYUFUQ7t4F+yj8y+9wFtpt3NWZr7zOuAYzJa4ahR3hf3OWiwjc14apXVWVMicvulFURtu+Wz1FZXMcdgZg==} + /@frontify/fondue@12.0.0-beta.411(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1): + resolution: {integrity: sha512-DhYiqJ66jR+5DUE2r7bpb4B/f5Bekk4lihlqEVbre4NMh4x/Ilt1dJMU22akCWYu3TF3B9yaqngpwsLkKC1tIQ==} engines: {node: '>=18'} peerDependencies: react: ^18 @@ -1752,6 +1740,9 @@ packages: '@dnd-kit/utilities': 3.2.2(react@18.2.0) '@frontify/fondue-tokens': 3.3.0-next.8(ts-node@10.9.2) '@popperjs/core': 2.11.8 + '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@react-aria/accordion': 3.0.0-alpha.17(react@18.2.0) '@react-aria/aria-modal-polyfill': 3.7.1(react@18.2.0) '@react-aria/breadcrumbs': 3.5.2(react@18.2.0) @@ -1787,8 +1778,28 @@ packages: '@react-types/dialog': 3.4.5(react@18.2.0) '@react-types/shared': 3.16.0(react@18.2.0) '@tailwindcss/forms': 0.5.7(tailwindcss@3.4.1) - '@udecode/plate': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dnd-html5-backend@16.0.1)(react-dnd@16.0.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/zustood': 1.1.3(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@3.7.2) + '@udecode/plate-alignment': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-autoformat': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-basic-marks': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-break': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-code-block': 30.7.0(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-combobox': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-core': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-emoji': 30.7.0(patch_hash=dh5teqvvykulbav3j7foi74cke)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-floating': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-indent': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-link': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-list': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-mention': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-normalizers': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-paragraph': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-utils': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/react-utils': 29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/slate-react': 29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/slate-utils': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/utils': 24.3.0 + '@udecode/zustood': 2.0.0(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.1) '@xstate/immer': 0.3.1(immer@9.0.12)(xstate@4.28.1) '@xstate/react': 1.6.3(@types/react@18.2.58)(react@18.2.0)(xstate@4.28.1) date-fns: 3.3.1 @@ -1809,32 +1820,21 @@ packages: remark-gfm: 3.0.1 remark-parse: 10.0.2 scheduler: 0.23.0 - slate: 0.94.1 - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) + slate: 0.102.0 + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) unified: 10.1.2 unist-util-visit: 5.0.0 xstate: 4.28.1 transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - '@types/hoist-non-react-statics' - '@types/node' - '@types/react' - '@types/react-dom' + - '@udecode/plate-common' - '@xstate/fsm' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - react-native - slate-history - slate-hyperscript - - styled-components - supports-color - tailwindcss - ts-node @@ -1845,7 +1845,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -1945,7 +1945,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -2020,7 +2020,7 @@ packages: '@open-draft/until': 1.0.3 '@types/debug': 4.1.7 '@xmldom/xmldom': 0.8.6 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) headers-polyfill: 3.2.5 outvariant: 1.4.0 strict-event-emitter: 0.2.8 @@ -2072,7 +2072,7 @@ packages: is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 - tslib: 2.6.1 + tslib: 2.6.2 dev: true /@polka/url@1.0.0-next.24: @@ -2085,7 +2085,7 @@ packages: /@radix-ui/primitive@1.0.1: resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} @@ -2100,7 +2100,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.58 '@types/react-dom': 18.2.19 @@ -2120,7 +2120,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) @@ -2139,7 +2139,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@types/react': 18.2.58 react: 18.2.0 @@ -2152,7 +2152,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@types/react': 18.2.58 react: 18.2.0 @@ -2165,12 +2165,12 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@types/react': 18.2.58 react: 18.2.0 - /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2182,7 +2182,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) @@ -2193,32 +2193,6 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-dropdown-menu@2.0.5(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xdOrZzOTocqqkCkYo8yRPCib5OkTkqN7lqNCdxwPOdE466DOaNl4N8PkUIlsXthQvW5Wwkd+aEmWpfWlBoDPEw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.58)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.58)(react@18.2.0) - '@radix-ui/react-menu': 2.0.5(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.58)(react@18.2.0) - '@types/react': 18.2.58 - '@types/react-dom': 18.2.19 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.58)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: @@ -2228,12 +2202,12 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@types/react': 18.2.58 react: 18.2.0 - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2245,7 +2219,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.58)(react@18.2.0) @@ -2263,13 +2237,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@types/react': 18.2.58 react: 18.2.0 - /@radix-ui/react-menu@2.0.5(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Gw4f9pwdH+w5w+49k0gLjN0PfRDHvxmAgG16AbyJZ7zhwZ6PBHKtWohvnSwfusfnK3L68dpBREHpVkj8wEM7ZA==} + /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2281,23 +2255,20 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.58)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.58)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.58)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.58)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.58)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@types/react': 18.2.58 '@types/react-dom': 18.2.19 aria-hidden: 1.2.3 @@ -2305,8 +2276,8 @@ packages: react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.5(@types/react@18.2.58)(react@18.2.0) - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2318,7 +2289,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@floating-ui/react-dom': 2.0.1(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) @@ -2334,8 +2305,8 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2347,7 +2318,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.58 '@types/react-dom': 18.2.19 @@ -2367,7 +2338,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@types/react': 18.2.58 @@ -2388,7 +2359,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-slot': 1.0.2(@types/react@18.2.58)(react@18.2.0) '@types/react': 18.2.58 '@types/react-dom': 18.2.19 @@ -2408,7 +2379,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) @@ -2423,6 +2394,26 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.58 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + /@radix-ui/react-slot@1.0.2(@types/react@18.2.58)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: @@ -2432,10 +2423,115 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@types/react': 18.2.58 + react: 18.2.0 + + /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@types/react': 18.2.58 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@types/react': 18.2.58 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.58 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.58)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.58 + '@types/react-dom': 18.2.19 react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.58)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} @@ -2446,7 +2542,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@types/react': 18.2.58 react: 18.2.0 @@ -2459,7 +2555,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@types/react': 18.2.58 react: 18.2.0 @@ -2473,7 +2569,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@types/react': 18.2.58 react: 18.2.0 @@ -2487,7 +2583,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@types/react': 18.2.58 react: 18.2.0 @@ -2500,7 +2596,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/rect': 1.0.1 '@types/react': 18.2.58 react: 18.2.0 @@ -2514,15 +2610,35 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.58)(react@18.2.0) '@types/react': 18.2.58 react: 18.2.0 + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.58 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + /@radix-ui/rect@1.0.1: resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 /@react-aria/accordion@3.0.0-alpha.17(react@18.2.0): resolution: {integrity: sha512-Kp1AYZ+iPcsLRZ7JHVagaViHXblszAtyU0nglT97/a90eC0TcdTrmt/APNK+ltZzvFhkaBQu4Anf99l9q9g1HQ==} @@ -2569,7 +2685,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/focus': 3.14.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) @@ -2597,7 +2713,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/label': 3.5.1(react@18.2.0) '@react-aria/toggle': 3.6.0(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) @@ -2613,7 +2729,7 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/i18n': 3.8.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/listbox': 3.7.2(react@18.2.0) @@ -2637,7 +2753,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/focus': 3.14.0(react@18.2.0) '@react-aria/overlays': 3.12.1(react-dom@18.2.0)(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) @@ -2715,7 +2831,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) react: 18.2.0 @@ -2747,7 +2863,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/focus': 3.14.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) @@ -2773,7 +2889,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/focus': 3.14.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/label': 3.5.1(react@18.2.0) @@ -2813,7 +2929,7 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/i18n': 3.8.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/overlays': 3.12.1(react-dom@18.2.0)(react@18.2.0) @@ -2855,7 +2971,7 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/focus': 3.14.0(react@18.2.0) '@react-aria/i18n': 3.8.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) @@ -2894,7 +3010,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/focus': 3.14.0(react@18.2.0) '@react-aria/i18n': 3.8.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) @@ -2911,7 +3027,7 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/i18n': 3.8.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/label': 3.5.1(react@18.2.0) @@ -2932,7 +3048,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/focus': 3.14.0(react@18.2.0) '@react-aria/i18n': 3.8.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) @@ -2972,7 +3088,7 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/focus': 3.14.0(react@18.2.0) '@react-aria/grid': 3.7.0(react-dom@18.2.0)(react@18.2.0) '@react-aria/i18n': 3.8.0(react@18.2.0) @@ -3022,7 +3138,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/focus': 3.14.0(react@18.2.0) '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) @@ -3036,7 +3152,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/ssr': 3.7.1(react@18.2.0) '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) @@ -3060,7 +3176,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) @@ -3105,7 +3221,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-types/shared': 3.19.0(react@18.2.0) react: 18.2.0 @@ -3123,7 +3239,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-stately/list': 3.8.0(react@18.2.0) '@react-stately/menu': 3.5.1(react@18.2.0) '@react-stately/select': 3.5.0(react@18.2.0) @@ -3178,7 +3294,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-stately/collections': 3.7.0(react@18.2.0) '@react-stately/selection': 3.13.0(react@18.2.0) '@react-stately/utils': 3.7.0(react@18.2.0) @@ -3226,7 +3342,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/overlays': 3.8.1(react@18.2.0) react: 18.2.0 @@ -3246,7 +3362,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/radio': 3.4.1(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) @@ -3268,7 +3384,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-stately/collections': 3.7.0(react@18.2.0) '@react-stately/list': 3.8.0(react@18.2.0) '@react-stately/menu': 3.5.1(react@18.2.0) @@ -3309,7 +3425,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-stately/collections': 3.7.0(react@18.2.0) '@react-stately/grid': 3.6.0(react@18.2.0) '@react-stately/selection': 3.13.0(react@18.2.0) @@ -3337,7 +3453,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/checkbox': 3.4.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) @@ -3359,7 +3475,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-stately/overlays': 3.6.1(react@18.2.0) '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/tooltip': 3.4.0(react@18.2.0) @@ -3381,7 +3497,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@react-stately/collections': 3.7.0(react@18.2.0) '@react-stately/selection': 3.13.0(react@18.2.0) '@react-stately/utils': 3.7.0(react@18.2.0) @@ -3788,7 +3904,7 @@ packages: /@swc/helpers@0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 /@swc/helpers@0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} @@ -3817,6 +3933,20 @@ packages: pretty-format: 27.5.1 dev: true + /@testing-library/dom@9.3.4: + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.23.9 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + /@testing-library/jest-dom@6.4.2(vitest@1.3.1): resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} @@ -3863,25 +3993,15 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/user-event@14.5.2(@testing-library/dom@9.0.0): + /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4): resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 9.0.0 + '@testing-library/dom': 9.3.4 dev: true - /@tippyjs/react@4.2.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-91RicDR+H7oDSyPycI13q3b7o4O60wa2oRbjlz2fyRLmHImc4vyDwuUP8NtZaN0VARJY5hybvDYrFzhY9+Lbyw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tippy.js: 6.3.7 - /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} @@ -3902,6 +4022,10 @@ packages: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true + /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: @@ -3944,16 +4068,13 @@ packages: resolution: {integrity: sha512-nDKoaKJYbnn1MZxUY0cA1bPmmgZbg0cTq7Rh13d0KWYNOiKbqoR+2d89SnRPszGh7ROzSwZ/GOjZ4jPbmmZ6Eg==} dev: true - /@types/is-hotkey@0.1.7: - resolution: {integrity: sha512-yB5C7zcOM7idwYZZ1wKQ3pTfjA9BbvFqRWvKB46GFddxnJtHwi/b9y84ykQtxQPg5qhdpg4Q/kWU3EGoCTmLzQ==} + /@types/is-hotkey@0.1.10: + resolution: {integrity: sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==} /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/js-cookie@2.2.7: - resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} - /@types/js-levenshtein@1.1.1: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true @@ -3974,6 +4095,10 @@ packages: /@types/lodash@4.14.192: resolution: {integrity: sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==} + dev: true + + /@types/lodash@4.14.202: + resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} /@types/mdast@3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} @@ -4002,6 +4127,12 @@ packages: dependencies: undici-types: 5.26.5 + /@types/node@20.11.20: + resolution: {integrity: sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -4038,7 +4169,7 @@ packages: /@types/set-cookie-parser@2.4.3: resolution: {integrity: sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==} dependencies: - '@types/node': 18.19.18 + '@types/node': 20.11.20 dev: true /@types/sinon@17.0.3: @@ -4055,8 +4186,8 @@ packages: resolution: {integrity: sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==} dev: true - /@types/sizzle@2.3.3: - resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} + /@types/sizzle@2.3.8: + resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} dev: true /@types/unist@2.0.6: @@ -4071,8 +4202,8 @@ packages: '@types/node': 18.19.18 dev: true - /@types/yauzl@2.10.0: - resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + /@types/yauzl@2.10.3: + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} requiresBuild: true dependencies: '@types/node': 18.19.18 @@ -4096,7 +4227,7 @@ packages: '@typescript-eslint/type-utils': 6.12.0(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/utils': 6.12.0(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.56.0 graphemer: 1.4.0 ignore: 5.2.4 @@ -4125,12 +4256,12 @@ packages: '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.56.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 - semver: 7.5.4 + semver: 7.6.0 ts-api-utils: 1.0.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -4151,7 +4282,7 @@ packages: '@typescript-eslint/types': 6.12.0 '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.56.0 typescript: 5.3.3 transitivePeerDependencies: @@ -4172,7 +4303,7 @@ packages: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.56.0 typescript: 5.3.3 transitivePeerDependencies: @@ -4207,7 +4338,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.3) '@typescript-eslint/utils': 6.12.0(eslint@8.56.0)(typescript@5.3.3) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.56.0 ts-api-utils: 1.0.1(typescript@5.3.3) typescript: 5.3.3 @@ -4227,7 +4358,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.56.0 ts-api-utils: 1.0.1(typescript@5.3.3) typescript: 5.3.3 @@ -4256,7 +4387,7 @@ packages: dependencies: '@typescript-eslint/types': 6.12.0 '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -4277,7 +4408,7 @@ packages: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -4300,2372 +4431,511 @@ packages: '@typescript-eslint/scope-manager': 6.12.0 '@typescript-eslint/types': 6.12.0 '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.3) - eslint: 8.56.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - eslint: 8.56.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys@6.12.0: - resolution: {integrity: sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.12.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@udecode/plate-alignment@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-gbcMYwxsLQryXiSvWNgW9VEOndPz9YJ0bgr641jZLQ66uMHADzb2tV585arefKqLifYnxLmXXGijCR3x42jJew==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-autoformat@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-ekwohyLREz53unJvPCwKUW8gte+QNXWu70BWCZDIbRtVMe8Fbtji2Wzuw/4Dm2/Wh5rE1K6TgA03uwGPsbro7w==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-basic-elements@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-tB+MSDArmpKr+/EBlNpjIj5Tv9Fj3zB1ICxLVGieJ5BVXo8Qu8JYWbKI8juV1W7muf+HltC+N2hIedojA+r2Kg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-block-quote': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-code-block': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-heading': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-paragraph': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-basic-marks@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-15zTwE4+pu3duVnnb7DKCUeiKlEfdSzCMspViP3I5fPRFQFnWZVGPoN1tQskb1oxvzBGddlpz/6GCSeBW2JN6Q==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-block-quote@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-JNksR8F6yw7qgzGBZtolMWaFbseYcLKNo3z8AEBkcUCt95VSbBQP7P24/6aFoMkaAH1eD7DNRCegic9Kanru/w==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-break@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-MotPRnMOthyHgX+sOWVhY9z/FnivkvWOhb/MM+xgK/B5PMFgz9GlHSlJIjyTOm3HzIhfo968shOYW8Z+9PAo5g==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-button@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-lH8MjPFtWdOPUUVFUgvKIu9VR7bNo6SQhoBfAaGQPhPARqBQ+IrPlKAA2mC8IZr3ECFtuPDjg2uqGQoUTAedZQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-code-block@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-ZaioZnfBmFMFZWzulMGfoDLb3l9nOIcfbfleGNDBjTRiqorbzGuz1K9MKWTjPZacS+Zt035ncC/bouMXnppP1w==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - prismjs: 1.29.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-combobox@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-LLMec+quBxG7P5IKFrqRrpBsJm4FPTVzKLQnd+TAh6h8yw0wLLMw90McnpIhmp9xfyHUsZa99ymnHrkYf7+8QQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-floating': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - downshift: 6.1.12(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-comments@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-65ciYGs+NdkRoNwXyO/gS8Zl9R1IXICrk6kXzyrukgrCGnbA3nayoV3KI5zG0rO7s5PbJhYmQxyEX8CVhZ2HgA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-common@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-jEkgcbSP2Kgk0vzmKMzhxqi7bfw9oaBGX5xuds0j9l079BKIRzvj/hBnPBneC5i5B+YqU+m+xI+mfbbNcaVgAA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-core': 21.5.0(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-utils': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/slate': 21.4.1(slate-history@0.93.0)(slate@0.94.1) - '@udecode/slate-react': 21.4.1(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/slate-utils': 21.4.1(slate-history@0.93.0)(slate@0.94.1) - '@udecode/utils': 19.7.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-core@21.5.0(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-A5qKsIORSvMTb8AdehNWHyVDKNTCXnTJ86p/qgfYG9WAerNxfbKNGqaPEyg3R72ZtHa0I3aTT4uNO7jEpWCQQQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/slate': 21.4.1(slate-history@0.93.0)(slate@0.94.1) - '@udecode/slate-react': 21.4.1(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/utils': 19.7.1 - '@udecode/zustood': 1.1.3(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@3.7.2) - clsx: 1.2.1 - jotai: 1.13.1(@babel/core@7.23.9)(react@18.2.0) - lodash: 4.17.21 - nanoid: 3.3.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-hotkeys-hook: 4.4.0(react-dom@18.2.0)(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - use-deep-compare: 1.1.0(react@18.2.0) - zustand: 3.7.2(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-emoji@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-rFL5E8QwwadpUrdhP8qT7G5fyjLTz0WVQHmaiQaUKyCw6Xlzt4R/OLmFfsX4UI2614/cGbO7tor0OSKedC46UQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@emoji-mart/data': 1.1.2 - '@udecode/plate-combobox': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-find-replace@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-ZMreo/MDeZG4vICdtgsWgF//ugs2bdjNwLROM/cPaEzC2LygfJCwA6dFaPh+7DjeMhIgxfIiGA+e+ZFzJzLsEQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-floating@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-nBEXyqsdxEDkopetcbA3+wfPDZI04VNT0TCMv/ZUgc0KgjZrLK10TIo0cp3HU7okrKwkRE0bQjOEze2fPxQWSA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@floating-ui/react': 0.22.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dropdown-menu': 2.0.5(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-font@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-suPdGeRCKlDep8FZCmZ0TbYNeUd7cHcnuY6YwrGfs7KUNv2WyklQH3RxPSLtio7Ei55SYHl5FcrSy8tfvpUHfA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-heading@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-4+6fKS5fXyiwuVxwwxM3Pu8d8zdxOGodJ8PsDSjfI4ZtrZGMnfa889tOnKw2FEtH/mgFl03Yk+ftUhDZPuNwhg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-headless@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-KFEEQ/NdMs3HIzidv2yz44SReVnxZmMip8JGyERe+PU5oAvhcQcp8ACvF0CQuK2xBk041/DCJbznF6WG7rBEcg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-hyperscript: '>=0.66.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-alignment': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-autoformat': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-basic-elements': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-basic-marks': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-block-quote': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-break': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-code-block': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-combobox': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-comments': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-emoji': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-find-replace': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-floating': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-font': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-heading': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-highlight': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-horizontal-rule': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-indent': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-indent-list': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-kbd': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-line-height': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-link': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-list': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-media': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-mention': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-node-id': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-normalizers': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-paragraph': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-reset-node': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-select': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-serializer-csv': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-serializer-docx': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-serializer-html': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-serializer-md': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-suggestion': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-tabbable': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-table': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-trailing-block': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/resizable': 20.5.3(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-hyperscript: 0.77.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - supports-color - - /@udecode/plate-highlight@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-o11WrLmMqhM2u0/7mgLVJT+utzHJG8eP5u8swJuMAGkHE71QesUXj2ZgSxuubrF+VC/XESQXhGmeB8PkCBDIjw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-horizontal-rule@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-3SX2HYr3yifptfFnQ1XH1+KYN9gQUVjy9bwPpz0RJm7kZZR+SrZQ6Op8LBK17rsDIB+lsnsklkDwYQm/OaUT6g==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-indent-list@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-XJvcWNxlpfay1A5h/65tR3H9YP+9rd1Ui1yF4/FIEJpBazYJF02JLR/TKCP46pqBKFEmWc9jImeUXfbgeDkLlw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-indent': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-list': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-indent@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-ETwGdPZuEesGv4DW+s9cmt0+Fo537y7sVtVJJi1juCitPgwnaqLwu+QRLDErFSIBdQebR0/gxX65R/+uH0NwnQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-kbd@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-KVerussGxitZox/6PJpPo/6TT+BGZ6rn3yvndSveAq1tD2HuDxw9nDbBhxiZYQBseZ97aTu4t4naCR/jJl0xwQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-line-height@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-JCBEjDZZw8MFulI56md3Noz1vuw6EiCmvLkX7pRcMc7dGocMo4BKOJLao1UGIfDVLkqjVlr8Av1fayQPGNuZGg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-link@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-UT2rW0HBNOYvS0iLxFC5dU7wiMAQ+L8Cgl1mIlxi+a/58B+K3ED1zwnO7MAotpKOy/GSA58+YYBQ3liSTolgRw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-normalizers': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-list@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-PkmlSmy1/W4FMcw5pzJakb6d3MbfqCT4xCOHgjXkv4glqaRFKAwMJPhvswwveEencfQe+c5J5HFE7t2q4dWwIg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-reset-node': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-media@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-7FY+vo0USGTZvUYKEtemfupHPjeUkK4zQZRODZCiP46t0mK1cImsSsP8OUZ2HjXKkyAMVla1ThH1+QOXb8I0cA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/resizable': 20.5.3(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - js-video-url-parser: 0.5.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-textarea-autosize: 8.5.3(@types/react@18.2.58)(react@18.2.0) - scriptjs: 2.5.9 - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-mention@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-34iR9qk1uz0jPeWpE4mC+e/2sij0knM+nnOlcmWiEpQQP3ahaPFQups7+5Kpa23AXecpdHeRGqR1vUnWbAYnyQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-combobox': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-node-id@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-emPHy5KXj8R3YMsuXsZ4hhlWpPLAoVmymiUA5uEihAMoiXDTAEkVpvcw79zqLmvOn50rYwCItqv+Y19YaL29nA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-normalizers@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-X6dtZvT14vGxxm9WzuoeTN8RlU5plHIagWlFdVCV2EQM1mNlo5LEnNSsSIaS9Z+VBvKagmIn8JUaaMeFB/Yixg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-paragraph@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-ujQwFQ3rQRl2JaHYHSxxS5mf0NuGXu4WtfGdYD2ITCnIKP+cy6vycg7iIfcPL+w7iYFz5F9wpyIZzR9upISRBg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-reset-node@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-rPCE7TzA3/GyNcOWUUuFRlbNrtm7Af4wIkrGTuoY6/T/Ypp8KeRc5HlOwzuQL+QRGMp3kyJQL3A/KDuPF1uq7A==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-select@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-trNzAIEpcf7Xtntau2XohxLmlLRoQ+9Tt0opkDyNqFW+Mp5xIL0D9OZEGZo05F/73WbxpcxH40tFkzhOhZQOmw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-serializer-csv@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-4wMqvDmHB2SLe6MvrDKI4jTq3z/Pp2NR3ptLwOO8UavnZJYvsk/PlCBP//YSbTIi8vhPaODCCjzc8U8iZu5etA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-hyperscript: '>=0.66.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-table': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - papaparse: 5.4.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-hyperscript: 0.77.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - slate-history - - /@udecode/plate-serializer-docx@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-ggxpIzNSUovjZj/HQqHxdExdEVGnOh1VSR5BpuVtV2BeXOvFZK1I+GXheXfK/r/b8Kj50FZMYrNXDS0Yf1qjPg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-hyperscript: '>=0.66.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-heading': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-indent': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-indent-list': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-media': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-paragraph': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-table': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-hyperscript: 0.77.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - validator: 13.9.0 - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-serializer-html@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-s9PqX/PcDvxhIX7ibIVXVqMPfXTTln08Zja3VX49OwXs9pDerjcQr6Sq3Ni85SIGVB8UQUvQ+VifyvfEFYjyEw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-hyperscript: '>=0.66.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - html-entities: 2.3.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-hyperscript: 0.77.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-serializer-md@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-TXCzJolmmv/ROnfvEBrO4WpUJEcwwp1Jvg7MOOcdegv7824t08CycJEXZhWDKAXb2Af/MOG+1gIB55yhLwYYTg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-block-quote': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-code-block': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-heading': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-link': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-list': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-paragraph': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - remark-parse: 9.0.0 - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - unified: 9.2.2 - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - supports-color - - /@udecode/plate-styled-components@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-+ooCADdk3O1b+yaMe09e8M/Yxf9++Lk6YVMjHxSGS0pwTKIyfdTGwcbZ9oImCYxhlv1yGDOOgPEvuoog0cX3tw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - react-is: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - clsx: 1.2.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-suggestion@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-6oeyYLMgRXn6DQiizCIWrpjNaFrS6UBHz3jHPmfLSvzJK6LxCXgAKdwzOb7/mBq2KSzRyJJK2Ua9UN12R9tP8A==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-tabbable@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-RS4C2yFvSP3ZDxggg4is6ewcWCHbgGtwQcG/2dBl/PdDubnU9CkFl0MasX6A+cMajD/ZZj2XPo0wYFsUEah+Vg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - tabbable: 6.1.2 - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-table@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-sPFvXjn0m8kCuHTCquMYnOWKyUBCBKz7lQSBgX23cayu7a0oBxcbH/cHOA77+WbpZ0ZybrLb4Kbkfcr+bdyoQA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/resizable': 20.5.3(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - - /@udecode/plate-trailing-block@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-sGD4tLpUpl7cKlvnXA8BVg4/Wwwrj6rcXjPGvMRqOcAYYys5HIOlET/SqypPdP5QK0JZQZX3UMGKS6+fto+5Qg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) + eslint: 8.56.0 + semver: 7.5.4 transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler + - supports-color + - typescript + dev: true - /@udecode/plate-ui-alignment@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-tCqLx6dxkUFesi3OfMFv4RFJFk4tIfIu07KpCzSpaX0B7u+cgV1rBWXeV+HvDquPKC4lsrVJ6lh3Yyx7LDdPBw==} + /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@udecode/plate-alignment': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + eslint: 8.56.0 + semver: 7.5.4 transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + - supports-color + - typescript + dev: true - /@udecode/plate-ui-block-quote@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-5YOjAeejfJ3zp3vpYr2G+TzpveZbdv8VLUe9YpcSNlPF/r/wAzojeUwbCEkN6WuVALWCGv8ylddNUZ/DNxpg8g==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + /@typescript-eslint/visitor-keys@6.12.0: + resolution: {integrity: sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@udecode/plate-block-quote': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + '@typescript-eslint/types': 6.12.0 + eslint-visitor-keys: 3.4.3 + dev: true - /@udecode/plate-ui-button@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-HVIIPshNJoDcjVs71zGCMOj5pC6OQfaiItxKggiG/EYw9eFXm4l/pCCGdny74vIQdTywWYj15yEYcMg0w1eY1Q==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@udecode/plate-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + dev: true - /@udecode/plate-ui-code-block@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-xN62xPasT5IVzi9k/pbdoR1U3ZobbolXVWDVqjvYaiPWgVtyt4VNxwaIjfqhtb2lTtQZakwV5XjaQcIcjeZO1g==} + /@udecode/plate-alignment@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-zQK2pA5lhUsxCJtNP0eDytfAHjUzqd1znhQh6CzRgoZeALtFkEKee/v329iEv7ZdVFWGtooQoaNraq8PF8+7yg==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-code-block': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-combobox@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-QJys2QEc+KlslbKQ1M+PxhYl7JoYr4Lr948iaPIOuYyQQAPSZIR5DFTsKgwst8vDL9TqXQIb/lL/jcUCyC8GWw==} + /@udecode/plate-autoformat@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-yvRS9Fw3eMr9djRExW8sf6BSc+BYMp0G6tCXHIXvTOfne55+WU4D8eFlrcjy94EhGGddCUS45Q/YvDALYAsTpA==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-combobox': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-floating': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-comments@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-+XjpARWNGt/xXWIEb+wEjD47piKSw3Fh7Y4P1fO9zl5FwIJXBankhW6V2HJQP6nw9WkTYx/DABI/C4OFAHr19w==} + /@udecode/plate-basic-marks@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-/p5WVEz20mWVg+HNrMemDLJ/n0AM2e0GZwn5NTQULXa5i9DcqqcZOXlOayXhxjG4P9/KV9nPdOttQtxti/Sr3g==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-comments': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-cursor@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-/0ASgCw09m864FvtrMlTLz7OPCztos+h8t/6pnxI6lfJGzgG55wV1MOL5nVEhcEs5GO7sLEKPWYJt9hKxG54vQ==} + /@udecode/plate-break@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-MwJrHw+1qFIs6HOBoaHGV/jaj6JXj0+BzrxT7FOLvdTK5vVFWC21a+WwgOJWZBZ3NVVRpxp0PxxhwpaqtEkKRw==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-emoji@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-EzweF/YUbs6KEyGAnyBHHuduK1iW03fuPrT07YcN83RFxIu+sFPLDFbHmOVklVG1xOuo1k6WYyE37OvaNXEkeA==} + /@udecode/plate-code-block@30.7.0(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-/wodH5+SH9eALLIiUAkcwRE2EO4eIBIe5bIoCYMToe3dwaDF4MVHwBU5jZLzi6cy9osar396CQfPmW1j63MJLQ==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-combobox': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-emoji': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-combobox': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + prismjs: 1.29.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-find-replace@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-b21VoIiKJbj60rMC8MPrTkayysZlGEoksJ+QpAwPi8whDtq/DCWeCY/8brGJPD/ivRKLmvlttnAkPQGCsL12JQ==} + /@udecode/plate-combobox@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-bAq3jWFEPwFwsm0NYoBz+vg6w/8NBKk3Az2x1/HOZ4vwoQNhbI6JLLPWnpTabPDDaF1hIvj9kqV+rOIbSS241g==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-find-replace': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + downshift: 6.1.12(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-font@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-wGy1TXSSF2KpWauKqpW7RBZ5EPgc16ds1r3bPNrw8utHO3WH4vuluGnWKJdIemguJeeTgiPiOp9LyVEA9PPZjQ==} + /@udecode/plate-common@30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-p/hF7rvuEqyrxvsfgjaBswv82C/Z1/S5vNj+m33UG91cnPs5sLHbofd5qh7vRgKKfZ/uk028mNpUgemo1bFgbA==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-font': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-core': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-utils': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/react-utils': 29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/slate-react': 29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/slate-utils': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/utils': 24.3.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is + - immer - react-native - scheduler - /@udecode/plate-ui-line-height@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-ddkxbNark/DbQLc2gNPfVnlA+5YUWuLeEMGl0nEAmuvq5IZCBZXz2icSccMjv+EqcioQVKBrHi+PqP0EUYMY2w==} + /@udecode/plate-core@30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-x/X0dCLoWFyC7wEI9hTcVMR8C/xiTkF0w9I5fyhCMg1mXz/y4DB0CMute+hYT0Wz7rqgj9DYT4v8ryrB9fEu9A==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-line-height': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/slate-react': 29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/slate-utils': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/utils': 24.3.0 + clsx: 1.2.1 + is-hotkey: 0.2.0 + jotai: 2.6.5(@types/react@18.2.58)(react@18.2.0) + jotai-optics: 0.3.1(jotai@2.6.5)(optics-ts@2.4.1) + jotai-x: 1.2.2(@types/react@18.2.58)(jotai@2.6.5)(react@18.2.0) + lodash: 4.17.21 + nanoid: 3.3.7 + optics-ts: 2.4.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + react-hotkeys-hook: 4.5.0(react-dom@18.2.0)(react@18.2.0) + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) + use-deep-compare: 1.1.0(react@18.2.0) + zustand: 4.5.1(@types/react@18.2.58)(immer@9.0.12)(react@18.2.0) + zustand-x: 3.0.2(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.1) transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is + - immer - react-native - scheduler - /@udecode/plate-ui-link@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-kk3gNmSqTFGfna/+fHDPl1iQ3jClOk44zrVgHanN72d4dWHzgyUSocrHrldUuQkECfFhCg4S5gIn82rKBK5rYg==} + /@udecode/plate-emoji@30.7.0(patch_hash=dh5teqvvykulbav3j7foi74cke)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-wQSd82O03qNnVfEO6XDd7d87tdZzHl9c8b7rNxuCLV1onWWnrztWO3cJgsSWY/Urkg6NxhUZovanQmEoKwx9uQ==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-link': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@emoji-mart/data': 1.1.2 + '@udecode/plate-combobox': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) + patched: true - /@udecode/plate-ui-list@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-dtq4fMH3aJOxkq8klBC7AHLZgQDu9gD0ObFbvahqLFxyyHbRZmWWtKnOVZauCSvvU/Dsi6oK96wSBHHNezi3/w==} + /@udecode/plate-floating@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-9KxpZdKLy45a3Z+MJqSGmuJKQrl7CrNsLyUdjKD4Iqd1DIdBwl65dGqTmgI1EycF2jUsWIrgGE3W71f7E5/JdA==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-list': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@floating-ui/core': 1.6.0 + '@floating-ui/react': 0.22.3(react-dom@18.2.0)(react@18.2.0) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-media@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-QYByExzxchHeXflxdMz/aI5reUeTHyPILj3vaunObE1b2q2Vi5TDFW2kBl/ikA5FtcJWgqFq6SH1cKUztSlVPg==} + /@udecode/plate-indent@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-39V7egkg0Gk0z5nKveAh6gipeH12MQdtSzGphGtpLQqyMF+d+eOLsaZDJsO0XfZlkDTeonA8cDr5ZWERc9SHXQ==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' - dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-floating': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-link': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-media': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-link': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - js-video-url-parser: 0.5.1 + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-mention@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-dD5QV/05oY9DJrF4Ls8rYlhZrZTqYD2oS2+eY31fo9TKsvbEArypVA9gbLAB+JtY3flWTF/XK8ZtQDK4Ky/Srw==} + /@udecode/plate-link@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-5XspGcriDMJOf3hput6N2XA0AouXy5YBJYHu4PaEq25hJblFgiJwvm3JWA0jMsH2HO2iffKpfpMFfcGOjjnR+w==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-combobox': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-mention': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-combobox': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-floating': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-normalizers': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-placeholder@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-scZVD6/fWGMRYYAmlJ2OLGvYCeTD4zEOj2EPWeI5ztspqbVjqmGkOB/N54cSZkEZne2rwCfqNmJ8wkZr91T8Ig==} + /@udecode/plate-list@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-Q6c1hE4oAZp3OkJzoeRIp+ULKcugsNx0Eh4o/yKyWJAx/DzZNPJyuuAyClA9nZMdWv96UAjvEZ75Em3BcFtTwg==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-reset-node': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-table@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-7ZN/RMbkINTFMV5i/3KD9UnAqHRTUlJ9NA554ahoRio3+GNzXfnf2wXF98Q4NnELz245nasqkOqZ3qj18u/l3Q==} + /@udecode/plate-mention@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-OvlgSaHT39dxSRgjS9NsEvbduNbuTWG4KLoEHFJpFgJmGwrVmcPR/AuCpHLiTlDixHVWHJjisp+/imF1eJolQQ==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-floating': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-table': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-ui-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-combobox': 30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui-toolbar@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-V5Z/Y64RtAyeoeZGqz+xTKKdiKE3M0CC23kF9tQx0ciHRSM+/VdV58Xp20Oe6RKlIe91BXNQrprIezbabZA1HA==} + /@udecode/plate-normalizers@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-jf8H5OPPLEYgaoQ0pyHZfSXwzZBxI959BxHy83Y1wvhB5Yykgc8NflNGme3ds/rMED3z90E7QOCL2h1waHNtNQ==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@tippyjs/react': 4.2.6(react-dom@18.2.0)(react@18.2.0) - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-floating': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-use: 17.4.0(react-dom@18.2.0)(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-ui@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dnd-html5-backend@16.0.1)(react-dnd@16.0.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-F5Llhi04azilhnq8AmuwoalDCGsK0HHQyzPsQ0G0GpZfjSf6sRN3dxfBE7AZ6WzK7hShS1CFdN+SV/2LF/K+qw==} + /@udecode/plate-paragraph@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-vqvN6Gex1aj189C3ohuq85g6reajYqJMFb4CETGqUTifmKw0ReeJ6a8OYhNqX7v2xE+4gEBm+Z8qO3Z3CnoHqw==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' - react-dnd: '>=14.0.0' - react-dnd-html5-backend: '>=14.0.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' slate-hyperscript: '>=0.66.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' - dependencies: - '@udecode/plate-headless': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-styled-components': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-alignment': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-block-quote': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-button': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-code-block': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-combobox': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-comments': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-cursor': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-emoji': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-find-replace': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-font': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-line-height': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-link': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-list': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-media': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-mention': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-placeholder': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-table': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) - '@udecode/plate-ui-toolbar': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 - react-dnd: 16.0.1(@types/node@18.19.18)(@types/react@18.2.58)(react@18.2.0) - react-dnd-html5-backend: 16.0.1 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-hyperscript: 0.77.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - use-context-selector: 1.4.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-is - - react-native - - scheduler - - supports-color + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-utils@21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-wmUfkatfRUpKI2AUbZ55IKJDJcvKZ9okW2vP2fbEN6WeKblwjqqgIpc+LFTBUBpD9f2BJxBmcT7ECdDrodwNDg==} + /@udecode/plate-reset-node@30.5.3(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-bBUnE3uMw+jp7zAaZtagCRB9WpBZxJfLdhc1YdqwU1Hmqqy4l0GaH4/oq2QtnN8DtZnOV/PkJlus8tgsP3yzjg==} peerDependencies: + '@udecode/plate-common': '>=30.4.5 < 31' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' dependencies: - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.58)(react@18.2.0) - '@udecode/plate-core': 21.5.0(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/slate': 21.4.1(slate-history@0.93.0)(slate@0.94.1) - '@udecode/slate-react': 21.4.1(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/slate-utils': 21.4.1(slate-history@0.93.0)(slate@0.94.1) - '@udecode/utils': 19.7.1 + '@udecode/plate-common': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate@21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dnd-html5-backend@16.0.1)(react-dnd@16.0.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6): - resolution: {integrity: sha512-uKAmKHwPgzo/XzrYWrbJ0FuqJRvU394aXZMkx4bXnHzVuCvQT4HNxZM4yM+RagdRHXr6xKZxdxQG70xKF2/5Jg==} + /@udecode/plate-utils@30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-cJ0auswNFxhv/qF9yqrIbgPa3mqxWtLtBQ/N+1zqMfEM3vzWE+4WlHpMJb/SdAC/Dvuc5zzfB26/t2IyhrZp5w==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' slate-hyperscript: '>=0.66.0' - slate-react: '>=0.94.0' - styled-components: '>=5.0.0' - dependencies: - '@udecode/plate-headless': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1) - '@udecode/plate-ui': 21.5.0(@babel/core@7.23.9)(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dnd-html5-backend@16.0.1)(react-dnd@16.0.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-hyperscript@0.77.0)(slate-react@0.98.3)(slate@0.94.1)(styled-components@5.3.6) + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-core': 30.4.5(@types/react@18.2.58)(immer@9.0.12)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/react-utils': 29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/slate-react': 29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/slate-utils': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/utils': 24.3.0 + clsx: 1.2.1 + lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-hyperscript: 0.77.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - '@types/react' - - '@types/react-dom' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-dnd - - react-dnd-html5-backend - - react-is + - immer - react-native - scheduler - - supports-color - /@udecode/resizable@20.5.3(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-daSwKcHSE6Jq9yIxVJ7t1CmknOu75SgIRetYi2ZUeUkb5p97WnGzUKrNEan9kVCerW6e9FrCUH7Cvpw5X9+nPg==} + /@udecode/react-utils@29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+bFJFTDsWArFaC4AZFap0VdCvEbu5ZA16avj4xjjdBBho4TiHOZ7RMDliwTUetA3DOm5LG02dmZ1U4ORNC0m3w==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - slate: '>=0.94.0' - slate-history: '>=0.93.0' - slate-react: '>=0.94.0' dependencies: - '@udecode/plate-common': 21.5.0(@babel/core@7.23.9)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.58)(react@18.2.0) + '@udecode/utils': 24.3.0 + clsx: 1.2.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - '@types/react' - - jotai-devtools - - jotai-immer - - jotai-optics - - jotai-redux - - jotai-tanstack-query - - jotai-urql - - jotai-valtio - - jotai-xstate - - jotai-zustand - - react-native - - scheduler - /@udecode/slate-react@21.4.1(react-dom@18.2.0)(react@18.2.0)(slate-history@0.93.0)(slate-react@0.98.3)(slate@0.94.1): - resolution: {integrity: sha512-IXuH3Icafegm4hmlRvOoBIzTN+INcR3tb8s+ZuRsa78ItNvTrlJ6O8yw0Bgqtl0sZ5PfwHwnPjELxwq0aWg8bg==} + /@udecode/slate-react@29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + resolution: {integrity: sha512-DOiGXxfL43tVyNg0LneTQGQBW/HkF2srwIM8b0Al/x082HHfo2PP2WkFqPqTh1uGUAa2RBRh9xFKmNkKeuyWSw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' slate-history: '>=0.93.0' - slate-react: '>=0.94.0' + slate-react: '>=0.99.0' dependencies: - '@udecode/slate': 21.4.1(slate-history@0.93.0)(slate@0.94.1) - '@udecode/utils': 19.7.1 + '@udecode/react-utils': 29.0.1(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/utils': 24.3.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) - slate-react: 0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1) + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) + transitivePeerDependencies: + - '@types/react' - /@udecode/slate-utils@21.4.1(slate-history@0.93.0)(slate@0.94.1): - resolution: {integrity: sha512-j5fGnKkDe21g9D3uSQjo0zqrCKwj9JNjAzXk+AeWVT1XqGOpXumvugzlqRePtVOs2a5z3TVdc6BnKkF6SZk0gw==} + /@udecode/slate-utils@25.0.0(slate-history@0.100.0)(slate@0.102.0): + resolution: {integrity: sha512-H8dECl5Tu44Nt946rkSXCJ1yzsc2R9GXSoA9oNIBmcyNo3jTHZOyG/Ocn3RGgfzAK996A43GBD/keNabJEPtQg==} peerDependencies: slate: '>=0.94.0' slate-history: '>=0.93.0' dependencies: - '@udecode/slate': 21.4.1(slate-history@0.93.0)(slate@0.94.1) - '@udecode/utils': 19.7.1 + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.102.0) + '@udecode/utils': 24.3.0 lodash: 4.17.21 - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) - /@udecode/slate@21.4.1(slate-history@0.93.0)(slate@0.94.1): - resolution: {integrity: sha512-r9CScsn3b176O2n2leW0JT5kqeWQsTU4/jbVAys3fokDrdaVdEwKaFSU0HVt7V4oJ4eGyBmISKrpnf2jJHMXRw==} + /@udecode/slate@25.0.0(slate-history@0.100.0)(slate@0.102.0): + resolution: {integrity: sha512-mGb9nMDwIygLqERwJ8kTOfo3wIxMQ0xLJEPKn09jrshEIxUCyO3mYj8y/5vOMcrzj6yexOsgQ6VNX8ylS3lnIQ==} peerDependencies: slate: '>=0.94.0' slate-history: '>=0.93.0' dependencies: - '@udecode/utils': 19.7.1 - slate: 0.94.1 - slate-history: 0.93.0(slate@0.94.1) + '@udecode/utils': 24.3.0 + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) - /@udecode/utils@19.7.1: - resolution: {integrity: sha512-FqPvq/0MOI8qvX3KvQfTKNUkvh8CwHxke9CyoqMck5dxeOmge3vHMkHkCE1BXw2w19EFGkC58Tkw8+RpT8qFSQ==} + /@udecode/utils@24.3.0: + resolution: {integrity: sha512-/Y2lh/Ih1wx4zN35Ky2Z1G1/5f7cSAS7F6dkhrcbJUnDF0srTidoEIRabK+og/yIK/MCEFfOsQGetoV7Ert5hg==} - /@udecode/zustood@1.1.3(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@3.7.2): - resolution: {integrity: sha512-f3mxHDaOF+q2XvDh/mMvLhCNs0LfCLhIBl8jGmvZT/i3WWq7YujzGXgnbK8mxIkun9irfe6wlPhg9sTIB9Gnug==} + /@udecode/zustood@2.0.0(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.1): + resolution: {integrity: sha512-zMmEhP55PHVxIsMWuBf7LbNUTkGDPAGeCtcbJUD+k47ubkLR/yg0hjQh0hD0DARl2X86U+SJNe628qxVtMARVw==} peerDependencies: - zustand: '>=3.5.10' + zustand: '>=4.3.9' dependencies: - immer: 9.0.21 + immer: 10.0.3 react-tracked: 1.7.11(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) - zustand: 3.7.2(react@18.2.0) + zustand: 4.5.1(@types/react@18.2.58)(immer@9.0.12)(react@18.2.0) transitivePeerDependencies: - react - react-dom @@ -6714,7 +4984,7 @@ packages: dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 @@ -6730,28 +5000,12 @@ packages: - supports-color dev: true - /@vitest/expect@1.3.0: - resolution: {integrity: sha512-7bWt0vBTZj08B+Ikv70AnLRicohYwFgzNjFqo9SxxqHHxSlUJGSXmCRORhOnRMisiUryKMdvsi1n27Bc6jL9DQ==} - dependencies: - '@vitest/spy': 1.3.0 - '@vitest/utils': 1.3.0 - chai: 4.3.10 - dev: true - /@vitest/expect@1.3.1: resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} dependencies: '@vitest/spy': 1.3.1 '@vitest/utils': 1.3.1 - chai: 4.3.10 - dev: true - - /@vitest/runner@1.3.0: - resolution: {integrity: sha512-1Jb15Vo/Oy7mwZ5bXi7zbgszsdIBNjc4IqP8Jpr/8RdBC4nF1CTzIAn2dxYvpF1nGSseeL39lfLQ2uvs5u1Y9A==} - dependencies: - '@vitest/utils': 1.3.0 - p-limit: 5.0.0 - pathe: 1.1.2 + chai: 4.4.1 dev: true /@vitest/runner@1.3.1: @@ -6762,32 +5016,18 @@ packages: pathe: 1.1.2 dev: true - /@vitest/snapshot@1.3.0: - resolution: {integrity: sha512-swmktcviVVPYx9U4SEQXLV6AEY51Y6bZ14jA2yo6TgMxQ3h+ZYiO0YhAHGJNp0ohCFbPAis1R9kK0cvN6lDPQA==} - dependencies: - magic-string: 0.30.5 - pathe: 1.1.2 - pretty-format: 29.7.0 - dev: true - /@vitest/snapshot@1.3.1: resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} dependencies: - magic-string: 0.30.5 + magic-string: 0.30.7 pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.3.0: - resolution: {integrity: sha512-AkCU0ThZunMvblDpPKgjIi025UxR8V7MZ/g/EwmAGpjIujLVV2X6rGYGmxE2D4FJbAy0/ijdROHMWa2M/6JVMw==} - dependencies: - tinyspy: 2.2.0 - dev: true - /@vitest/spy@1.3.1: resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} dependencies: - tinyspy: 2.2.0 + tinyspy: 2.2.1 dev: true /@vitest/ui@1.3.1(vitest@1.3.1): @@ -6805,15 +5045,6 @@ packages: vitest: 1.3.1(@types/node@18.19.18)(@vitest/ui@1.3.1)(happy-dom@13.4.1) dev: true - /@vitest/utils@1.3.0: - resolution: {integrity: sha512-/LibEY/fkaXQufi4GDlQZhikQsPO2entBKtfuyIpr1jV4DpaeasqkeHjhdOhU24vSHshcSuEyVlWdzvv2XmYCw==} - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true - /@vitest/utils@1.3.1: resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} dependencies: @@ -6887,9 +5118,6 @@ packages: engines: {node: '>=10.0.0'} dev: true - /@xobotyi/scrollbar-width@1.9.5: - resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} - /@xstate/immer@0.3.1(immer@9.0.12)(xstate@4.28.1): resolution: {integrity: sha512-YE+KY08IjEEmXo6XKKpeSGW4j9LfcXw+5JVixLLUO3fWQ3M95joWJ40VtGzx0w0zQSzoCNk8NgfvwWBGSbIaTA==} peerDependencies: @@ -7102,7 +5330,7 @@ packages: resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} engines: {node: '>=10'} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -7113,7 +5341,7 @@ packages: /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 is-array-buffer: 3.0.2 dev: true @@ -7129,10 +5357,10 @@ packages: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -7140,7 +5368,7 @@ packages: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.22.4 get-intrinsic: 1.2.4 @@ -7178,7 +5406,7 @@ packages: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 @@ -7188,7 +5416,7 @@ packages: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.22.4 es-shim-unscopables: 1.0.0 @@ -7198,7 +5426,7 @@ packages: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 @@ -7208,7 +5436,7 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.22.4 es-shim-unscopables: 1.0.0 @@ -7217,11 +5445,11 @@ packages: /array.prototype.tosorted@1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.4 dev: true /arraybuffer.prototype.slice@1.0.3: @@ -7265,6 +5493,11 @@ packages: /async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: false + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -7320,7 +5553,7 @@ packages: dependencies: '@fastify/error': 3.4.1 archy: 1.0.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) fastq: 1.17.1 transitivePeerDependencies: - supports-color @@ -7330,31 +5563,13 @@ packages: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true - /aws4@1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} - dev: true - - /b4a@1.6.4: - resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} - dev: false - - /babel-plugin-styled-components@2.1.1(styled-components@5.3.6): - resolution: {integrity: sha512-c8lJlszObVQPguHkI+akXv8+Jgb9Ccujx0EetL7oIvwU100LxO6XAGe45qry37wUL40a5U9f23SYrivro2XKhA==} - peerDependencies: - styled-components: '>= 2' - dependencies: - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - babel-plugin-syntax-jsx: 6.18.0 - lodash: 4.17.21 - picomatch: 2.3.1 - styled-components: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - - /babel-plugin-syntax-jsx@6.18.0: - resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + /aws4@1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + dev: true - /bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + /b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + dev: false /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -7487,15 +5702,15 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - /cachedir@2.3.0: - resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + /cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} dev: true /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 get-intrinsic: 1.2.0 dev: true @@ -7533,9 +5748,6 @@ packages: engines: {node: '>=6'} dev: true - /camelize@1.0.1: - resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - /caniuse-lite@1.0.30001588: resolution: {integrity: sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==} @@ -7546,8 +5758,8 @@ packages: /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - /chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 @@ -7585,15 +5797,18 @@ packages: /character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true /character-entities@1.2.4: resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -7629,6 +5844,11 @@ packages: engines: {node: '>=8'} dev: true + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} @@ -7772,6 +5992,9 @@ packages: /compute-scroll-into-view@1.0.20: resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + /compute-scroll-into-view@3.1.0: + resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==} + /computeds@0.0.1: resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} dev: true @@ -7807,11 +6030,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /copy-to-clipboard@3.3.3: - resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - dependencies: - toggle-selection: 1.0.6 - /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} dev: true @@ -7854,15 +6072,6 @@ packages: which: 2.0.2 dev: true - /css-color-keywords@1.0.0: - resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} - engines: {node: '>=4'} - - /css-in-js-utils@3.1.0: - resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} - dependencies: - hyphenate-style-name: 1.0.4 - /css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} dependencies: @@ -7873,20 +6082,6 @@ packages: nth-check: 2.1.1 dev: true - /css-to-react-native@3.2.0: - resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - dependencies: - camelize: 1.0.1 - css-color-keywords: 1.0.0 - postcss-value-parser: 4.2.0 - - /css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -7926,14 +6121,6 @@ packages: stream-transform: 2.1.3 dev: true - /cypress-real-events@1.12.0(cypress@13.6.4): - resolution: {integrity: sha512-oiy+4kGKkzc2PT36k3GGQqkGxNiVypheWjMtfyi89iIk6bYmTzeqxapaLHS3pnhZOX1IEbTDUVxh8T4Nhs1tyQ==} - peerDependencies: - cypress: ^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x || ^13.x - dependencies: - cypress: 13.6.4 - dev: true - /cypress-real-events@1.12.0(cypress@13.6.6): resolution: {integrity: sha512-oiy+4kGKkzc2PT36k3GGQqkGxNiVypheWjMtfyi89iIk6bYmTzeqxapaLHS3pnhZOX1IEbTDUVxh8T4Nhs1tyQ==} peerDependencies: @@ -7942,80 +6129,30 @@ packages: cypress: 13.6.6 dev: true - /cypress@13.6.4: - resolution: {integrity: sha512-pYJjCfDYB+hoOoZuhysbbYhEmNW7DEDsqn+ToCLwuVowxUXppIWRr7qk4TVRIU471ksfzyZcH+mkoF0CQUKnpw==} - engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} - hasBin: true - requiresBuild: true - dependencies: - '@cypress/request': 3.0.0 - '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/sinonjs__fake-timers': 8.1.1 - '@types/sizzle': 2.3.3 - arch: 2.2.0 - blob-util: 2.0.2 - bluebird: 3.7.2 - buffer: 5.7.1 - cachedir: 2.3.0 - chalk: 4.1.2 - check-more-types: 2.24.0 - cli-cursor: 3.1.0 - cli-table3: 0.6.3 - commander: 6.2.1 - common-tags: 1.8.2 - dayjs: 1.11.8 - debug: 4.3.4(supports-color@8.1.1) - enquirer: 2.3.6 - eventemitter2: 6.4.7 - execa: 4.1.0 - executable: 4.1.1 - extract-zip: 2.0.1(supports-color@8.1.1) - figures: 3.2.0 - fs-extra: 9.1.0 - getos: 3.2.1 - is-ci: 3.0.1 - is-installed-globally: 0.4.0 - lazy-ass: 1.6.0 - listr2: 3.14.0(enquirer@2.3.6) - lodash: 4.17.21 - log-symbols: 4.1.0 - minimist: 1.2.8 - ospath: 1.2.2 - pretty-bytes: 5.6.0 - process: 0.11.10 - proxy-from-env: 1.0.0 - request-progress: 3.0.0 - semver: 7.5.4 - supports-color: 8.1.1 - tmp: 0.2.1 - untildify: 4.0.0 - yauzl: 2.10.0 - dev: true - /cypress@13.6.6: resolution: {integrity: sha512-S+2S9S94611hXimH9a3EAYt81QM913ZVA03pUmGDfLTFa5gyp85NJ8dJGSlEAEmyRsYkioS1TtnWtbv/Fzt11A==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} hasBin: true requiresBuild: true dependencies: - '@cypress/request': 3.0.0 + '@cypress/request': 3.0.1 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) '@types/sinonjs__fake-timers': 8.1.1 - '@types/sizzle': 2.3.3 + '@types/sizzle': 2.3.8 arch: 2.2.0 blob-util: 2.0.2 bluebird: 3.7.2 buffer: 5.7.1 - cachedir: 2.3.0 + cachedir: 2.4.0 chalk: 4.1.2 check-more-types: 2.24.0 cli-cursor: 3.1.0 cli-table3: 0.6.3 commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.8 + dayjs: 1.11.10 debug: 4.3.4(supports-color@8.1.1) - enquirer: 2.3.6 + enquirer: 2.4.1 eventemitter2: 6.4.7 execa: 4.1.0 executable: 4.1.1 @@ -8026,7 +6163,7 @@ packages: is-ci: 3.0.1 is-installed-globally: 0.4.0 lazy-ass: 1.6.0 - listr2: 3.14.0(enquirer@2.3.6) + listr2: 3.14.0(enquirer@2.4.1) lodash: 4.17.21 log-symbols: 4.1.0 minimist: 1.2.8 @@ -8035,7 +6172,7 @@ packages: process: 0.11.10 proxy-from-env: 1.0.0 request-progress: 3.0.0 - semver: 7.5.4 + semver: 7.6.0 supports-color: 8.1.1 tmp: 0.2.1 untildify: 4.0.0 @@ -8062,13 +6199,13 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 /date-fns@3.3.1: resolution: {integrity: sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==} - /dayjs@1.11.8: - resolution: {integrity: sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==} + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: true /de-indent@1.0.2: @@ -8090,22 +6227,10 @@ packages: supports-color: optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 supports-color: 8.1.1 dev: true - /debug@4.3.4(supports-color@5.5.0): - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 5.5.0 - /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -8117,7 +6242,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -8189,7 +6313,7 @@ packages: dependencies: bundle-name: 3.0.0 default-browser-id: 3.0.0 - execa: 7.1.1 + execa: 7.2.0 titleize: 3.0.0 dev: true @@ -8224,7 +6348,7 @@ packages: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 dev: true @@ -8384,12 +6508,12 @@ packages: peerDependencies: react: '>=16.12.0' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 compute-scroll-into-view: 1.0.20 prop-types: 15.8.1 react: 18.2.0 react-is: 17.0.2 - tslib: 2.6.1 + tslib: 2.6.2 /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -8434,6 +6558,14 @@ packages: ansi-colors: 4.1.3 dev: true + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + dev: true + /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true @@ -8454,28 +6586,23 @@ packages: is-arrayish: 0.2.1 dev: true - /error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - dependencies: - stackframe: 1.3.4 - /es-abstract@1.21.2: resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + call-bind: 1.0.7 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.4 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 internal-slot: 1.0.5 is-array-buffer: 3.0.2 @@ -8486,7 +6613,7 @@ packages: is-string: 1.0.7 is-typed-array: 1.1.10 is-weakref: 1.0.2 - object-inspect: 1.12.3 + object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.4.3 @@ -8517,7 +6644,7 @@ packages: globalthis: 1.0.3 gopd: 1.0.1 has-property-descriptors: 1.0.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 hasown: 2.0.1 internal-slot: 1.0.7 @@ -8583,7 +6710,7 @@ packages: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.4 has: 1.0.3 has-tostringtag: 1.0.0 dev: true @@ -8705,7 +6832,7 @@ packages: eslint: '>=6.0.0' dependencies: eslint: 8.56.0 - semver: 7.5.4 + semver: 7.6.0 dev: true /eslint-config-prettier@8.8.0(eslint@8.56.0): @@ -8752,7 +6879,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.56.0 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) @@ -9055,7 +7182,7 @@ packages: dependencies: '@babel/helper-validator-identifier': 7.22.15 '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - ci-info: 3.8.0 + ci-info: 3.9.0 clean-regexp: 1.0.0 eslint: 8.56.0 esquery: 1.5.0 @@ -9067,7 +7194,7 @@ packages: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.5.4 + semver: 7.6.0 strip-indent: 3.0.0 dev: true @@ -9079,7 +7206,7 @@ packages: dependencies: '@babel/helper-validator-identifier': 7.22.20 '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - ci-info: 3.8.0 + ci-info: 3.9.0 clean-regexp: 1.0.0 eslint: 8.56.0 esquery: 1.5.0 @@ -9090,7 +7217,7 @@ packages: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.5.4 + semver: 7.6.0 strip-indent: 3.0.0 dev: true @@ -9100,7 +7227,7 @@ packages: peerDependencies: eslint: '>=6.0.0' dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.56.0 eslint-compat-utils: 0.4.1(eslint@8.56.0) lodash: 4.17.21 @@ -9116,7 +7243,7 @@ packages: peerDependencies: eslint: '>=6.0.0' dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.56.0 lodash: 4.17.21 natural-compare: 1.4.0 @@ -9166,7 +7293,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -9289,8 +7416,8 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 @@ -9298,7 +7425,7 @@ packages: human-signals: 4.3.1 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.1.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 @@ -9313,7 +7440,7 @@ packages: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.1.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -9351,7 +7478,7 @@ packages: get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: - '@types/yauzl': 2.10.0 + '@types/yauzl': 2.10.3 transitivePeerDependencies: - supports-color dev: true @@ -9410,9 +7537,6 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-loops@1.1.3: - resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} - /fast-querystring@1.1.0: resolution: {integrity: sha512-LWkjBCZlxjnSanuPpZ6mHswjy8hQv3VcPJsQB3ltUF2zjvrycr0leP3TSTEEfvQ1WEMSRl5YNsGqaft9bjLqEw==} dependencies: @@ -9424,16 +7548,10 @@ packages: engines: {node: '>=6'} dev: false - /fast-shallow-equal@1.0.0: - resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} - /fast-uri@2.2.0: resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} dev: false - /fastest-stable-stringify@2.0.2: - resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} - /fastify-plugin@4.5.0: resolution: {integrity: sha512-79ak0JxddO0utAXAQ5ccKhvs6vX2MGyHHMMsmZkBANrq3hXc1CHzvNPHOcvTsVMEPl5I+NT+RO4YKMGehOfSIg==} dev: false @@ -9577,7 +7695,7 @@ packages: engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 - signal-exit: 4.0.2 + signal-exit: 4.1.0 dev: true /forever-agent@0.6.1: @@ -9622,7 +7740,7 @@ packages: dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.1 + tslib: 2.6.2 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 @@ -9668,7 +7786,7 @@ packages: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 + universalify: 2.0.1 dev: true /fs.realpath@1.0.0: @@ -9681,18 +7799,14 @@ packages: requiresBuild: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 functions-have-names: 1.2.3 @@ -9728,7 +7842,7 @@ packages: /get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 has: 1.0.3 has-symbols: 1.0.3 dev: true @@ -9739,7 +7853,7 @@ packages: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 hasown: 2.0.1 dev: true @@ -9773,8 +7887,8 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /get-symbol-description@1.0.2: @@ -9795,7 +7909,7 @@ packages: /getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} dependencies: - async: 3.2.4 + async: 3.2.5 dev: true /getpass@0.1.7: @@ -9860,7 +7974,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.0 + minimatch: 5.1.6 once: 1.4.0 dev: false @@ -9904,7 +8018,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.4 dev: true /graceful-fs@4.2.11: @@ -9948,13 +8062,6 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true - - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.2.0 - dev: true /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -9962,11 +8069,6 @@ packages: es-define-property: 1.0.0 dev: true - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: true - /has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} @@ -9995,7 +8097,7 @@ packages: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 /hasown@2.0.1: resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} @@ -10022,9 +8124,6 @@ packages: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /html-entities@2.3.3: - resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} - /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true @@ -10044,7 +8143,7 @@ packages: dependencies: assert-plus: 1.0.0 jsprim: 2.0.2 - sshpk: 1.17.0 + sshpk: 1.18.0 dev: true /human-id@1.0.2: @@ -10071,9 +8170,6 @@ packages: engines: {node: '>=16.17.0'} dev: true - /hyphenate-style-name@1.0.4: - resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} - /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -10091,14 +8187,10 @@ packages: /immer@10.0.3: resolution: {integrity: sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==} - dev: false /immer@9.0.12: resolution: {integrity: sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==} - /immer@9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} - /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -10136,12 +8228,6 @@ packages: engines: {node: '>=10'} dev: true - /inline-style-prefixer@6.0.4: - resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} - dependencies: - css-in-js-utils: 3.1.0 - fast-loops: 1.1.3 - /inquirer@8.2.5: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} @@ -10156,7 +8242,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.8.0 + rxjs: 7.8.1 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -10167,9 +8253,9 @@ packages: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.4 has: 1.0.3 - side-channel: 1.0.4 + side-channel: 1.0.5 dev: true /internal-slot@1.0.7: @@ -10178,7 +8264,7 @@ packages: dependencies: es-errors: 1.3.0 hasown: 2.0.1 - side-channel: 1.0.4 + side-channel: 1.0.5 dev: true /intl-messageformat@10.3.3: @@ -10187,7 +8273,7 @@ packages: '@formatjs/ecma402-abstract': 1.14.3 '@formatjs/fast-memoize': 2.0.1 '@formatjs/icu-messageformat-parser': 2.3.0 - tslib: 2.6.1 + tslib: 2.6.2 /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -10201,12 +8287,14 @@ packages: /is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true /is-alphanumerical@1.0.4: resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} dependencies: is-alphabetical: 1.0.4 is-decimal: 1.0.4 + dev: true /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} @@ -10276,7 +8364,7 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.8.0 + ci-info: 3.9.0 dev: true /is-core-module@2.12.0: @@ -10299,6 +8387,7 @@ packages: /is-decimal@1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} @@ -10335,9 +8424,7 @@ packages: /is-hexadecimal@1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - - /is-hotkey@0.1.8: - resolution: {integrity: sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==} + dev: true /is-hotkey@0.2.0: resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} @@ -10401,10 +8488,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -10501,7 +8584,7 @@ packages: /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 dev: true /is-weakset@2.0.2: @@ -10573,7 +8656,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -10605,52 +8688,46 @@ packages: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true - /jotai@1.13.1(@babel/core@7.23.9)(react@18.2.0): - resolution: {integrity: sha512-RUmH1S4vLsG3V6fbGlKzGJnLrDcC/HNb5gH2AeA9DzuJknoVxSGvvg8OBB7lke+gDc4oXmdVsaKn/xDUhWZ0vw==} - engines: {node: '>=12.20.0'} + /jotai-optics@0.3.1(jotai@2.6.5)(optics-ts@2.4.1): + resolution: {integrity: sha512-KibUx9IneM2hGWGIYGs/v0KCxU985lg7W2c6dt5RodJCB2XPbmok8rkkLmdVk9+fKsn2shkPMi+AG8XzHgB3+w==} peerDependencies: - '@babel/core': '*' - '@babel/template': '*' - jotai-devtools: '*' - jotai-immer: '*' - jotai-optics: '*' - jotai-redux: '*' - jotai-tanstack-query: '*' - jotai-urql: '*' - jotai-valtio: '*' - jotai-xstate: '*' - jotai-zustand: '*' - react: '>=16.8' + jotai: '>=1.11.0' + optics-ts: '*' + dependencies: + jotai: 2.6.5(@types/react@18.2.58)(react@18.2.0) + optics-ts: 2.4.1 + + /jotai-x@1.2.2(@types/react@18.2.58)(jotai@2.6.5)(react@18.2.0): + resolution: {integrity: sha512-HaFl3O4aKdBdeTyuzzcvnBWvicXkxl0DBINsqasqWrL7mZov4AAuXUSAsAY817UDwMe1+k77uBazUCFlaiyU3A==} + peerDependencies: + '@types/react': '>=17.0.0' + jotai: '>=2.0.0' + react: '>=17.0.0' peerDependenciesMeta: - '@babel/core': - optional: true - '@babel/template': - optional: true - jotai-devtools: - optional: true - jotai-immer: - optional: true - jotai-optics: - optional: true - jotai-redux: - optional: true - jotai-tanstack-query: - optional: true - jotai-urql: + '@types/react': optional: true - jotai-valtio: + react: optional: true - jotai-xstate: + dependencies: + '@types/react': 18.2.58 + jotai: 2.6.5(@types/react@18.2.58)(react@18.2.0) + react: 18.2.0 + + /jotai@2.6.5(@types/react@18.2.58)(react@18.2.0): + resolution: {integrity: sha512-T+yvY42GXKomvJYqs+NeTH0da9Z1tQ3Qk3zppPHIWnvmOBKpN6Qd4j8h/oo9dwxs3w/Z5r6Kk0I8h6z5orQ/HQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': optional: true - jotai-zustand: + react: optional: true dependencies: - '@babel/core': 7.23.9 + '@types/react': 18.2.58 react: 18.2.0 - /js-cookie@2.2.1: - resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - /js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} @@ -10663,9 +8740,6 @@ packages: resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} dev: true - /js-video-url-parser@0.5.1: - resolution: {integrity: sha512-/vwqT67k0AyIGMHAvSOt+n4JfrZWF7cPKgKswDO35yr27GfW4HtjpQVlTx6JLF45QuPm8mkzFHkZgFVnFm4x/w==} - /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -10754,11 +8828,11 @@ packages: acorn: 8.11.3 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.5.4 + semver: 7.6.0 dev: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} dev: true /jsonfile@4.0.0: @@ -10848,7 +8922,7 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /listr2@3.14.0(enquirer@2.3.6): + /listr2@3.14.0(enquirer@2.4.1): resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} engines: {node: '>=10.0.0'} peerDependencies: @@ -10859,11 +8933,11 @@ packages: dependencies: cli-truncate: 2.1.0 colorette: 2.0.20 - enquirer: 2.3.6 + enquirer: 2.4.1 log-update: 4.0.0 p-map: 4.0.0 - rfdc: 1.3.0 - rxjs: 7.8.0 + rfdc: 1.3.1 + rxjs: 7.8.1 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -10882,7 +8956,7 @@ packages: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.5.0 + mlly: 1.6.1 pkg-types: 1.0.3 dev: true @@ -10919,6 +8993,9 @@ packages: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: true + /lodash.mapvalues@4.6.0: + resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -10995,6 +9072,11 @@ packages: hasBin: true dev: true + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: @@ -11007,6 +9089,13 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /magicast@0.3.3: resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} dependencies: @@ -11056,6 +9145,7 @@ packages: unist-util-stringify-position: 2.0.3 transitivePeerDependencies: - supports-color + dev: true /mdast-util-from-markdown@1.3.0: resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} @@ -11145,15 +9235,13 @@ packages: /mdast-util-to-string@2.0.0: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true /mdast-util-to-string@3.2.0: resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} dependencies: '@types/mdast': 3.0.10 - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - /meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} @@ -11383,16 +9471,17 @@ packages: /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color + dev: true /micromark@3.1.0: resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} dependencies: '@types/debug': 4.1.7 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.0.6 micromark-factory-space: 1.0.0 @@ -11453,8 +9542,8 @@ packages: dependencies: brace-expansion: 1.1.11 - /minimatch@5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 @@ -11493,13 +9582,13 @@ packages: engines: {node: '>= 8.0.0'} dev: true - /mlly@1.5.0: - resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + /mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} dependencies: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.3.2 + ufo: 1.4.0 dev: true /mnemonist@0.39.6: @@ -11525,6 +9614,10 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + /msw@1.3.2(typescript@5.3.3): resolution: {integrity: sha512-wKLhFPR+NitYTkQl5047pia0reNGgf0P6a1eTnA5aNlripmiz0sabMvvHcicE8kQ3/gZcI0YiPFWmYfowfm3lA==} engines: {node: '>=14'} @@ -11576,23 +9669,6 @@ packages: object-assign: 4.1.1 thenify-all: 1.6.0 - /nano-css@5.3.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - css-tree: 1.1.3 - csstype: 3.1.1 - fastest-stable-stringify: 2.0.2 - inline-style-prefixer: 6.0.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - rtl-css-js: 1.16.1 - sourcemap-codec: 1.4.8 - stacktrace-js: 2.0.2 - stylis: 4.2.0 - /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -11616,7 +9692,7 @@ packages: resolution: {integrity: sha512-2NlGmHIK2rTeyy7UaY1ZNg0YZfEJMxghXgZi0b4DBsUyoDNTTxZeCSG1nmirAWF44RkkoV8NnegLVQijgVapNQ==} engines: {node: '>= 10.13'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) json-stringify-safe: 5.0.1 propagate: 2.0.1 transitivePeerDependencies: @@ -11664,7 +9740,7 @@ packages: dependencies: hosted-git-info: 2.8.9 resolve: 1.22.2 - semver: 5.7.1 + semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -11684,8 +9760,8 @@ packages: path-key: 3.1.1 dev: true - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 @@ -11705,10 +9781,6 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: true - /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true @@ -11750,7 +9822,7 @@ packages: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 dev: true @@ -11759,7 +9831,7 @@ packages: resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 dev: true @@ -11768,7 +9840,7 @@ packages: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.22.4 dev: true @@ -11794,7 +9866,7 @@ packages: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 dev: true @@ -11803,7 +9875,7 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.22.4 dev: true @@ -11855,6 +9927,9 @@ packages: is-wsl: 2.2.0 dev: true + /optics-ts@2.4.1: + resolution: {integrity: sha512-HaYzMHvC80r7U/LqAd4hQyopDezC60PO2qF5GuIwALut2cl5rK1VWHsqTp0oqoJJWjiv6uXKqsO+Q2OO0C3MmQ==} + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -11972,9 +10047,6 @@ packages: engines: {node: '>=6'} dev: true - /papaparse@5.4.1: - resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} - /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -11991,6 +10063,7 @@ packages: is-alphanumerical: 1.0.4 is-decimal: 1.0.4 is-hexadecimal: 1.0.4 + dev: true /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -12130,8 +10203,8 @@ packages: /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: - jsonc-parser: 3.2.0 - mlly: 1.5.0 + jsonc-parser: 3.2.1 + mlly: 1.6.1 pathe: 1.1.2 dev: true @@ -12340,11 +10413,16 @@ packages: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + /qs@6.10.4: resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.5 dev: true /querystringify@2.2.0: @@ -12432,8 +10510,8 @@ packages: /react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - /react-hotkeys-hook@4.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wOaCWLwgT/f895CMJrR9hmzVf+gfL8IpjWDXWXKngBp9i6Xqzf0tvLv4VI8l3Vlsg/cc4C/Iik3Ck76L/Hj0tw==} + /react-hotkeys-hook@4.5.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Samb85GSgAWFQNvVt3PS90LPPGSf9mkH/r4au81ZP1yOIFayLC3QAvqTgGtJ8YEDMXtPmaVBs6NgipHO6h4Mug==} peerDependencies: react: '>=16.8.1' react-dom: '>=16.8.1' @@ -12489,7 +10567,7 @@ packages: '@types/react': 18.2.58 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.2.58)(react@18.2.0) - tslib: 2.6.1 + tslib: 2.6.2 /react-remove-scroll@2.5.5(@types/react@18.2.58)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} @@ -12505,7 +10583,7 @@ packages: react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.2.58)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.58)(react@18.2.0) - tslib: 2.6.1 + tslib: 2.6.2 use-callback-ref: 1.3.0(@types/react@18.2.58)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.58)(react@18.2.0) @@ -12523,7 +10601,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.6.1 + tslib: 2.6.2 /react-textarea-autosize@8.5.3(@types/react@18.2.58)(react@18.2.0): resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} @@ -12531,7 +10609,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 react: 18.2.0 use-composed-ref: 1.3.0(react@18.2.0) use-latest: 1.2.1(@types/react@18.2.58)(react@18.2.0) @@ -12557,38 +10635,6 @@ packages: scheduler: 0.23.0 use-context-selector: 1.4.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) - /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.1): - resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} - peerDependencies: - react: '*' - tslib: '*' - dependencies: - react: 18.2.0 - tslib: 2.6.1 - - /react-use@17.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@types/js-cookie': 2.2.7 - '@xobotyi/scrollbar-width': 1.9.5 - copy-to-clipboard: 3.3.3 - fast-deep-equal: 3.1.3 - fast-shallow-equal: 1.0.0 - js-cookie: 2.2.1 - nano-css: 5.3.5(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-universal-interface: 0.6.2(react@18.2.0)(tslib@2.6.1) - resize-observer-polyfill: 1.5.1 - screenfull: 5.2.0 - set-harmonic-interval: 1.0.1 - throttle-debounce: 3.0.1 - ts-easing: 0.2.0 - tslib: 2.6.1 - /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -12662,7 +10708,7 @@ packages: /readdir-glob@1.1.2: resolution: {integrity: sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==} dependencies: - minimatch: 5.1.0 + minimatch: 5.1.6 dev: false /readdirp@3.6.0: @@ -12687,10 +10733,14 @@ packages: /redux@4.2.1: resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} @@ -12747,17 +10797,10 @@ packages: transitivePeerDependencies: - supports-color - /remark-parse@9.0.0: - resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==} - dependencies: - mdast-util-from-markdown: 0.8.5 - transitivePeerDependencies: - - supports-color - /request-progress@3.0.0: resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} dependencies: - throttleit: 1.0.0 + throttleit: 1.0.1 dev: true /require-directory@2.1.1: @@ -12778,9 +10821,6 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -12847,6 +10887,11 @@ packages: /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: false + + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} @@ -12885,11 +10930,6 @@ packages: fsevents: 2.3.3 dev: true - /rtl-css-js@1.16.1: - resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} - dependencies: - '@babel/runtime': 7.21.0 - /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} @@ -12912,10 +10952,10 @@ packages: dependencies: queue-microtask: 1.2.3 - /rxjs@7.8.0: - resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 dev: true /sade@1.8.1: @@ -12944,8 +10984,8 @@ packages: /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-regex: 1.1.4 dev: true @@ -12978,24 +11018,17 @@ packages: dependencies: loose-envify: 1.4.0 - /screenfull@5.2.0: - resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} - engines: {node: '>=0.10.0'} - - /scriptjs@2.5.9: - resolution: {integrity: sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==} - - /scroll-into-view-if-needed@2.2.31: - resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + /scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} dependencies: - compute-scroll-into-view: 1.0.20 + compute-scroll-into-view: 3.1.0 /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: false - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true dev: true @@ -13010,6 +11043,14 @@ packages: dependencies: lru-cache: 6.0.0 + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true @@ -13039,13 +11080,6 @@ packages: has-property-descriptors: 1.0.2 dev: true - /set-harmonic-interval@1.0.1: - resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} - engines: {node: '>=6.9'} - - /shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -13075,7 +11109,17 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 - object-inspect: 1.12.3 + object-inspect: 1.13.1 + dev: true + + /side-channel@1.0.5: + resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 dev: true /siginfo@2.0.0: @@ -13086,11 +11130,6 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} - engines: {node: '>=14'} - dev: true - /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -13125,46 +11164,46 @@ packages: engines: {node: '>=8'} dev: true - /slate-history@0.93.0(slate@0.94.1): - resolution: {integrity: sha512-Gr1GMGPipRuxIz41jD2/rbvzPj8eyar56TVMyJBvBeIpQSSjNISssvGNDYfJlSWM8eaRqf6DAcxMKzsLCYeX6g==} + /slate-history@0.100.0(slate@0.102.0): + resolution: {integrity: sha512-x5rUuWLNtH97hs9PrFovGgt3Qc5zkTm/5mcUB+0NR/TK923eLax4HsL6xACLHMs245nI6aJElyM1y6hN0y5W/Q==} peerDependencies: slate: '>=0.65.3' dependencies: is-plain-object: 5.0.0 - slate: 0.94.1 + slate: 0.102.0 - /slate-hyperscript@0.77.0(slate@0.94.1): - resolution: {integrity: sha512-M6uRpttwKnosniQORNPYQABHQ9XWC7qaSr/127LWWPjTOR5MSSwrHGrghN81BhZVqpICHrI7jkPA2813cWdHNA==} + /slate-hyperscript@0.100.0(slate@0.102.0): + resolution: {integrity: sha512-fb2KdAYg6RkrQGlqaIi4wdqz3oa0S4zKNBJlbnJbNOwa23+9FLD6oPVx9zUGqCSIpy+HIpOeqXrg0Kzwh/Ii4A==} peerDependencies: slate: '>=0.65.3' dependencies: is-plain-object: 5.0.0 - slate: 0.94.1 + slate: 0.102.0 - /slate-react@0.98.3(react-dom@18.2.0)(react@18.2.0)(slate@0.94.1): - resolution: {integrity: sha512-p1BnF9eRyRM0i5hkgOb11KgmpWLQm9Zyp6jVkOAj5fPdIGheKhg48Z7aWKrayeJ4nmRyi/NjRZz/io5hQcphmw==} + /slate-react@0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0): + resolution: {integrity: sha512-SAcFsK5qaOxXjm0hr/t2pvIxfRv6HJGzmWkG58TdH4LdJCsgKS1n6hQOakHPlRVCwPgwvngB6R+t3pPjv8MqwA==} peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - slate: '>=0.65.3' + react: '>=18.2.0' + react-dom: '>=18.2.0' + slate: '>=0.99.0' dependencies: '@juggle/resize-observer': 3.4.0 - '@types/is-hotkey': 0.1.7 - '@types/lodash': 4.14.192 + '@types/is-hotkey': 0.1.10 + '@types/lodash': 4.14.202 direction: 1.0.4 - is-hotkey: 0.1.8 + is-hotkey: 0.2.0 is-plain-object: 5.0.0 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - scroll-into-view-if-needed: 2.2.31 - slate: 0.94.1 - tiny-invariant: 1.0.6 + scroll-into-view-if-needed: 3.1.0 + slate: 0.102.0 + tiny-invariant: 1.3.1 - /slate@0.94.1: - resolution: {integrity: sha512-GH/yizXr1ceBoZ9P9uebIaHe3dC/g6Plpf9nlUwnvoyf6V1UOYrRwkabtOCd3ZfIGxomY4P7lfgLr7FPH8/BKA==} + /slate@0.102.0: + resolution: {integrity: sha512-RT+tHgqOyZVB1oFV9Pv99ajwh4OUCN9p28QWdnDTIzaN/kZxMsHeQN39UNAgtkZTVVVygFqeg7/R2jiptCvfyA==} dependencies: - immer: 9.0.21 + immer: 10.0.3 is-plain-object: 5.0.0 tiny-warning: 1.0.3 @@ -13209,13 +11248,10 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map@0.5.6: - resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} - engines: {node: '>=0.10.0'} - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: true /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} @@ -13259,8 +11295,8 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /sshpk@1.17.0: - resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + /sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} hasBin: true dependencies: @@ -13275,31 +11311,10 @@ packages: tweetnacl: 0.14.5 dev: true - /stack-generator@2.0.10: - resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} - dependencies: - stackframe: 1.3.4 - /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - - /stacktrace-gps@3.1.2: - resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} - dependencies: - source-map: 0.5.6 - stackframe: 1.3.4 - - /stacktrace-js@2.0.2: - resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} - dependencies: - error-stack-parser: 2.1.4 - stack-generator: 2.0.10 - stacktrace-gps: 3.1.2 - /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true @@ -13360,21 +11375,21 @@ packages: /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 internal-slot: 1.0.5 regexp.prototype.flags: 1.4.3 - side-channel: 1.0.4 + side-channel: 1.0.5 dev: true /string.prototype.trim@1.2.7: resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 dev: true @@ -13391,7 +11406,7 @@ packages: /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 dev: true @@ -13407,7 +11422,7 @@ packages: /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 dev: true @@ -13491,32 +11506,6 @@ packages: resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} dev: false - /styled-components@5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==} - engines: {node: '>=10'} - requiresBuild: true - peerDependencies: - react: '>= 16.8.0' - react-dom: '>= 16.8.0' - react-is: '>= 16.8.0' - dependencies: - '@babel/helper-module-imports': 7.22.15 - '@babel/traverse': 7.23.9(supports-color@5.5.0) - '@emotion/is-prop-valid': 1.2.0 - '@emotion/stylis': 0.8.5 - '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.1.1(styled-components@5.3.6) - css-to-react-native: 3.2.0 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - shallowequal: 1.1.0 - supports-color: 5.5.0 - - /stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - /sucrase@3.32.0: resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} engines: {node: '>=8'} @@ -13548,7 +11537,6 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -13558,7 +11546,7 @@ packages: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 dev: true /synckit@0.8.5: @@ -13566,7 +11554,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.4.2 - tslib: 2.6.1 + tslib: 2.6.2 dev: true /synckit@0.8.8: @@ -13658,20 +11646,16 @@ packages: real-require: 0.2.0 dev: false - /throttle-debounce@3.0.1: - resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} - engines: {node: '>=10'} - - /throttleit@1.0.0: - resolution: {integrity: sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==} + /throttleit@1.0.1: + resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} dev: true /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /tiny-invariant@1.0.6: - resolution: {integrity: sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==} + /tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} /tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} @@ -13685,16 +11669,11 @@ packages: engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} dev: true - /tippy.js@6.3.7: - resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} - dependencies: - '@popperjs/core': 2.11.8 - /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} @@ -13729,9 +11708,6 @@ packages: engines: {node: '>=12'} dev: false - /toggle-selection@1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - /totalist@3.0.0: resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} engines: {node: '>=6'} @@ -13742,7 +11718,7 @@ packages: engines: {node: '>=6'} dependencies: psl: 1.9.0 - punycode: 2.1.1 + punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 dev: true @@ -13756,9 +11732,6 @@ packages: engines: {node: '>=8'} dev: true - /trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} @@ -13771,9 +11744,6 @@ packages: typescript: 5.3.3 dev: true - /ts-easing@0.2.0: - resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} - /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -13834,7 +11804,6 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true /tty-table@4.2.1: resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} @@ -13947,7 +11916,7 @@ packages: /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 for-each: 0.3.3 is-typed-array: 1.1.10 dev: true @@ -13957,8 +11926,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - /ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + /ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} dev: true /uint8array-extras@0.3.0: @@ -13969,7 +11938,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -13989,17 +11958,6 @@ packages: trough: 2.1.0 vfile: 5.3.7 - /unified@9.2.2: - resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} - dependencies: - '@types/unist': 2.0.6 - bail: 1.0.5 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - /unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} dependencies: @@ -14014,6 +11972,7 @@ packages: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: '@types/unist': 2.0.6 + dev: true /unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} @@ -14060,6 +12019,11 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -14099,7 +12063,7 @@ packages: dependencies: '@types/react': 18.2.58 react: 18.2.0 - tslib: 2.6.1 + tslib: 2.6.2 /use-composed-ref@1.3.0(react@18.2.0): resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} @@ -14171,7 +12135,7 @@ packages: '@types/react': 18.2.58 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.6.1 + tslib: 2.6.2 /use-subscription@1.8.0(react@18.2.0): resolution: {integrity: sha512-LISuG0/TmmoDoCRmV5XAqYkd3UCBNM0ML3gGBndze65WITcsExCD3DTvXXTLyNcOC0heFQZzluW88bN/oC1DQQ==} @@ -14238,6 +12202,7 @@ packages: /validator@13.9.0: resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} engines: {node: '>= 0.10'} + dev: true /verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} @@ -14248,26 +12213,12 @@ packages: extsprintf: 1.3.0 dev: true - /vfile-message@2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - dependencies: - '@types/unist': 2.0.6 - unist-util-stringify-position: 2.0.3 - /vfile-message@3.1.4: resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} dependencies: '@types/unist': 2.0.6 unist-util-stringify-position: 3.0.3 - /vfile@4.2.1: - resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - dependencies: - '@types/unist': 2.0.6 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 - /vfile@5.3.7: resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} dependencies: @@ -14276,34 +12227,13 @@ packages: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - /vite-node@1.3.0(@types/node@18.19.18): - resolution: {integrity: sha512-D/oiDVBw75XMnjAXne/4feCkCEwcbr2SU1bjAhCcfI5Bq3VoOHji8/wCPAfUkDIeohJ5nSZ39fNxM3dNZ6OBOA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4(supports-color@5.5.0) - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.1.4(@types/node@18.19.18) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - /vite-node@1.3.1(@types/node@18.19.18): resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.0.0 vite: 5.1.4(@types/node@18.19.18) @@ -14331,7 +12261,7 @@ packages: '@microsoft/api-extractor': 7.39.0(@types/node@18.19.18) '@rollup/pluginutils': 5.1.0(rollup@4.12.0) '@vue/language-core': 1.8.27(typescript@5.3.3) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4(supports-color@8.1.1) kolorist: 1.8.0 typescript: 5.3.3 vite: 5.1.4(@types/node@18.19.18) @@ -14416,42 +12346,6 @@ packages: optionalDependencies: fsevents: 2.3.3 - /vite@5.1.3(@types/node@18.19.18): - resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.19.18 - esbuild: 0.19.12 - postcss: 8.4.35 - rollup: 4.12.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /vite@5.1.4(@types/node@18.19.18): resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14488,62 +12382,6 @@ packages: fsevents: 2.3.3 dev: true - /vitest@1.3.0(@types/node@18.19.18): - resolution: {integrity: sha512-V9qb276J1jjSx9xb75T2VoYXdO1UKi+qfflY7V7w93jzX7oA/+RtYE6TcifxksxsZvygSSMwu2Uw6di7yqDMwg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.3.0 - '@vitest/ui': 1.3.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@types/node': 18.19.18 - '@vitest/expect': 1.3.0 - '@vitest/runner': 1.3.0 - '@vitest/snapshot': 1.3.0 - '@vitest/spy': 1.3.0 - '@vitest/utils': 1.3.0 - acorn-walk: 8.3.2 - chai: 4.3.10 - debug: 4.3.4(supports-color@5.5.0) - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.5 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.1.3(@types/node@18.19.18) - vite-node: 1.3.0(@types/node@18.19.18) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - /vitest@1.3.1(@types/node@18.19.18)(@vitest/ui@1.3.1)(happy-dom@13.4.1): resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14577,12 +12415,12 @@ packages: '@vitest/ui': 1.3.1(vitest@1.3.1) '@vitest/utils': 1.3.1 acorn-walk: 8.3.2 - chai: 4.3.10 - debug: 4.3.4(supports-color@5.5.0) + chai: 4.4.1 + debug: 4.3.4(supports-color@8.1.1) execa: 8.0.1 happy-dom: 13.4.1 local-pkg: 0.5.0 - magic-string: 0.30.5 + magic-string: 0.30.7 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 @@ -14617,7 +12455,7 @@ packages: dependencies: '@volar/typescript': 1.11.1 '@vue/language-core': 1.8.27(typescript@5.3.3) - semver: 7.5.4 + semver: 7.6.0 typescript: 5.3.3 dev: true @@ -14902,16 +12740,40 @@ packages: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - /zustand@3.7.2(react@18.2.0): - resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} + /zustand-x@3.0.2(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.1): + resolution: {integrity: sha512-tb4qMWbmgrWEdemb+LlrJiHI1ZMxwlQNz7jDHN5iA/vmU8xlpAX80MQZ2FNLP2KejBFEnsA1RWRAO/0D5O0rPw==} + peerDependencies: + zustand: '>=4.3.9' + dependencies: + immer: 10.0.3 + lodash.mapvalues: 4.6.0 + react-tracked: 1.7.11(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) + zustand: 4.5.1(@types/react@18.2.58)(immer@9.0.12)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + - react-native + - scheduler + + /zustand@4.5.1(@types/react@18.2.58)(immer@9.0.12)(react@18.2.0): + resolution: {integrity: sha512-XlauQmH64xXSC1qGYNv00ODaQ3B+tNPoy22jv2diYiP4eoDKr9LA+Bh5Bc3gplTrFdb6JVI+N4kc1DZ/tbtfPg==} engines: {node: '>=12.7.0'} peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' react: '>=16.8' peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true react: optional: true dependencies: + '@types/react': 18.2.58 + immer: 9.0.12 react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} From 61ec7ff3ea587b8d043e5c0a12bf12a30e9bcdb3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 6 Mar 2024 17:30:55 +0100 Subject: [PATCH 034/182] chore: release packages (alpha) (#809) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- packages/app-bridge/CHANGELOG.md | 10 ++++++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 61adb2f71..1d0b3424d 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -19,8 +19,10 @@ "orange-jokes-listen", "pink-bugs-behave", "polite-eels-shake", + "pretty-items-marry", "stale-hairs-wash", "strong-tools-check", - "warm-hounds-refuse" + "warm-hounds-refuse", + "wild-bags-judge" ] } diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index f536860d8..6f2b74d62 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,15 @@ # @frontify/app-bridge +## 4.0.0-alpha.10 + +### Minor Changes + +- [#808](https://github.com/Frontify/brand-sdk/pull/808) [`4529beb`](https://github.com/Frontify/brand-sdk/commit/4529beb4b9f20ba94c7d6226257b422d6b560d5a) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme + +### Patch Changes + +- [#810](https://github.com/Frontify/brand-sdk/pull/810) [`0ac69ea`](https://github.com/Frontify/brand-sdk/commit/0ac69eaa52ba58a5be06ce75afa63cf5838e958b) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests + ## 4.0.0-alpha.9 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 4b950a653..1504ddc50 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.9", + "version": "4.0.0-alpha.10", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From e14ef895606e72af066e614983b61ca8778c108d Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Thu, 14 Mar 2024 09:02:07 +0100 Subject: [PATCH 035/182] feat: merge main to dev for v11 (#830) * feat: merge main to dev for v11 * add changeset --- .changeset/smart-suns-type.md | 5 + package.json | 2 +- packages/app-bridge/CHANGELOG.md | 31 ++ packages/app-bridge/src/AppBridgeBlock.ts | 1 + .../app-bridge/src/react/useBlockSettings.ts | 37 +- .../src/tests/AppBridgeBlockStub.ts | 26 +- packages/cli/CHANGELOG.md | 20 ++ packages/cli/package.json | 2 +- packages/cli/src/utils/verifyManifest.ts | 24 ++ .../platform-app-css-modules/package.json | 2 +- .../templates/platform-app-css/package.json | 2 +- .../platform-app-tailwind/package.json | 2 +- .../cli/tests/utils/verifyManifest.spec.ts | 336 ++++++++++++++++++ .../guideline-blocks-settings/CHANGELOG.md | 34 ++ .../guideline-blocks-settings/package.json | 4 +- .../RichTextEditor/RichTextEditor.spec.ct.tsx | 17 + .../RichTextEditor/RichTextEditor.tsx | 133 ++++--- .../src/hooks/useIsInViewport.spec.ts | 95 +++++ .../src/hooks/useIsInViewport.ts | 34 ++ packages/platform-app/CHANGELOG.md | 14 + packages/platform-app/package.json | 2 +- packages/sidebar-settings/CHANGELOG.md | 12 + packages/sidebar-settings/package.json | 4 +- pnpm-lock.yaml | 16 +- 24 files changed, 760 insertions(+), 95 deletions(-) create mode 100644 .changeset/smart-suns-type.md create mode 100644 packages/guideline-blocks-settings/src/hooks/useIsInViewport.spec.ts create mode 100644 packages/guideline-blocks-settings/src/hooks/useIsInViewport.ts diff --git a/.changeset/smart-suns-type.md b/.changeset/smart-suns-type.md new file mode 100644 index 000000000..60097a512 --- /dev/null +++ b/.changeset/smart-suns-type.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": minor +--- + +feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type diff --git a/package.json b/package.json index 74e239d2e..aeb62713e 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.1", "@cypress/vite-dev-server": "^5.0.7", - "@frontify/fondue": "12.0.0-beta.411", + "@frontify/fondue": "12.0.0-beta.415", "@vitejs/plugin-react": "^4.2.1", "cypress": "^13.6.4", "cypress-real-events": "^1.12.0", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 6f2b74d62..be43126a9 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -15,6 +15,37 @@ ### Patch Changes - Merge main into dev +## 3.5.2 + +### Patch Changes + +- [#825](https://github.com/Frontify/brand-sdk/pull/825) [`8430626`](https://github.com/Frontify/brand-sdk/commit/8430626870f7fb139d2b10b4f1f26040be1c6bbc) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type + +## 3.5.1 + +### Patch Changes + +- [#818](https://github.com/Frontify/brand-sdk/pull/818) [`c25d717`](https://github.com/Frontify/brand-sdk/commit/c25d71757e44406c065c65374d1d800a6d5694de) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(useBlockSettings): `setBlockSettings` has been wrapped in a `useCallback` so it can be safely used as a dependency in react hooks. The following code will no longer cause unexpected rerenders. + + ```jsx + const Component = () => { + const [blockSettings, setBlockSettings] = useBlockSettings(appBridge); + + useEffect(() => { + setBlockSettings({ ...blockSettings }); + }, [setBlockSettings]); + }; + ``` + +## 3.5.0 + +### Minor Changes + +- [#807](https://github.com/Frontify/brand-sdk/pull/807) [`909e0f5`](https://github.com/Frontify/brand-sdk/commit/909e0f5ef98e7bd1da6b0d96e32fdcde74a87d8d) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme + +### Patch Changes + +- [#806](https://github.com/Frontify/brand-sdk/pull/806) [`5115dfd`](https://github.com/Frontify/brand-sdk/commit/5115dfda65ce87e53a26831e05034534d50a05be) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests ## 3.4.2 diff --git a/packages/app-bridge/src/AppBridgeBlock.ts b/packages/app-bridge/src/AppBridgeBlock.ts index 75d9cd658..a0042b660 100644 --- a/packages/app-bridge/src/AppBridgeBlock.ts +++ b/packages/app-bridge/src/AppBridgeBlock.ts @@ -68,6 +68,7 @@ export type BlockContext = { portalId: number; blockId: number; sectionId?: number; + isAuthenticated: boolean; }; export type BlockEvent = EventNameValidator< diff --git a/packages/app-bridge/src/react/useBlockSettings.ts b/packages/app-bridge/src/react/useBlockSettings.ts index 68d412339..729efc34d 100644 --- a/packages/app-bridge/src/react/useBlockSettings.ts +++ b/packages/app-bridge/src/react/useBlockSettings.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { useEffect, useState } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { mergeDeep } from '../utilities/object'; import type { AppBridgeBlock } from '../AppBridgeBlock'; @@ -14,13 +14,18 @@ export const useBlockSettings = >( appBridge: AppBridgeBlock, ): [T, (newSettings: Partial) => Promise] => { const blockId = appBridge.context('blockId').get(); - const [blockSettings, setBlockSettings] = useState(structuredClone(window.blockSettings[blockId]) as T); + + // Save blockSettings in a ref so updateBlockSettings can safely be used as a react dependency + const blockSettingsRef = useRef(structuredClone(window.blockSettings[blockId]) as T); + const [blockSettings, setBlockSettings] = useState(blockSettingsRef.current); // Add listener for block settings updates useEffect(() => { const updateBlockSettingsFromEvent = (event: BlockSettingsUpdateEvent) => { if (event.blockId === blockId) { - setBlockSettings({ ...event.blockSettings } as T); + const blockSettings = { ...event.blockSettings } as T; + setBlockSettings(blockSettings); + blockSettingsRef.current = blockSettings; } }; @@ -31,17 +36,21 @@ export const useBlockSettings = >( }; }, [blockId]); - const updateBlockSettings = async (blockSettingsUpdate: Partial) => { - try { - await appBridge.updateBlockSettings(blockSettingsUpdate); - window.emitter.emit('AppBridge:BlockSettingsUpdated', { - blockId, - blockSettings: mergeDeep(blockSettings, blockSettingsUpdate), - }); - } catch (error) { - console.error(error); - } - }; + const updateBlockSettings = useCallback( + async (blockSettingsUpdate: Partial) => { + try { + await appBridge.updateBlockSettings(blockSettingsUpdate); + window.emitter.emit('AppBridge:BlockSettingsUpdated', { + blockId, + blockSettings: mergeDeep(blockSettingsRef.current, blockSettingsUpdate), + }); + } catch (error) { + console.error(error); + } + }, + // Stable reference to appBridge and blockId. These are not expected to change. + [appBridge, blockId], + ); return [blockSettings, updateBlockSettings]; }; diff --git a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts index 1fa491163..db6a70c8c 100644 --- a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts +++ b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts @@ -2,7 +2,7 @@ import mitt, { Emitter } from 'mitt'; import { SinonStubbedInstance, spy, stub } from 'sinon'; -import { type AppBridgeBlock, type BlockContext, type BlockState } from '../AppBridgeBlock'; +import { type AppBridgeBlock, type BlockEvent } from '../AppBridgeBlock'; import { type Template, type TemplateLegacy, type User } from '../types'; import { EmitterEvents } from '../types/Emitter'; import type { Asset } from '../types/Asset'; @@ -14,6 +14,7 @@ import { BulkDownloadDummy } from './BulkDownloadDummy'; import { PrivacySettings } from '../types/PrivacySettings'; import { TemplateDummy } from './TemplateDummy'; import { TemplateLegacyDummy } from './TemplateLegacyDummy'; +import { type EventCallbackParameter } from '../AppBridge'; const BLOCK_ID = 3452; const SECTION_ID = 2341; @@ -27,6 +28,7 @@ export type getAppBridgeBlockStubProps = { blockId?: number; sectionId?: number; projectId?: number; + isAuthenticated?: boolean; user?: User; language?: string; privacySettings?: PrivacySettings; @@ -34,14 +36,6 @@ export type getAppBridgeBlockStubProps = { unsubscribe?: () => void; }; -type subscribeCallbackArguments = Record & { - assets: Asset[]; - template: TemplateLegacy; -} & BlockState & - number & - [number | undefined, number | undefined] & - BlockContext; - export const getAppBridgeBlockStub = ({ blockSettings = {}, blockAssets = {}, @@ -49,6 +43,7 @@ export const getAppBridgeBlockStub = ({ blockId = BLOCK_ID, sectionId = SECTION_ID, projectId = PROJECT_ID, + isAuthenticated = true, user = UserDummy.with(USER_ID), language = 'en', privacySettings = { @@ -184,7 +179,7 @@ export const getAppBridgeBlockStub = ({ context: stub>().callsFake((args) => { if (args === undefined) { return { - get: () => [blockId, sectionId], + get: () => [blockId, sectionId, isAuthenticated], }; } else { switch (args) { @@ -196,6 +191,11 @@ export const getAppBridgeBlockStub = ({ return { get: () => sectionId, }; + + case 'isAuthenticated': + return { + get: () => isAuthenticated, + }; default: return { get: () => { @@ -208,9 +208,11 @@ export const getAppBridgeBlockStub = ({ subscribe: stub>().callsFake((eventName, callback) => { if (eventName === 'assetsChosen') { - callback({ assets: [AssetDummy.with(123)] } as subscribeCallbackArguments); + (callback as EventCallbackParameter<'assetsChosen', BlockEvent>)({ assets: [AssetDummy.with(123)] }); } else if (eventName === 'templateChosen') { - callback({ template: TemplateLegacyDummy.with(234) } as subscribeCallbackArguments); + (callback as EventCallbackParameter<'templateChosen', BlockEvent>)({ + template: TemplateLegacyDummy.with(234), + }); } return unsubscribe; }), diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 79972c18b..940cafa96 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,25 @@ # @frontify/frontify-cli +## 5.6.11 + +### Patch Changes + +- [#827](https://github.com/Frontify/brand-sdk/pull/827) [`f3a7dc2`](https://github.com/Frontify/brand-sdk/commit/f3a7dc24090fec27ee2d5a780131bc1a2feb2d24) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds validator for the proxyNetworkCall + +## 5.6.10 + +### Patch Changes + +- [#812](https://github.com/Frontify/brand-sdk/pull/812) [`67b5ca1`](https://github.com/Frontify/brand-sdk/commit/67b5ca134b86ccddd0d2ab8a36b5b08261a4d9b3) Thanks [@julianiff](https://github.com/julianiff)! - feat: add manifest secret key validator + +- [#815](https://github.com/Frontify/brand-sdk/pull/815) [`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue to 12.0.0-beta.415 + +## 5.6.9 + +### Patch Changes + +- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to ^12.0.0-beta.411 + ## 5.6.8 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 612d20130..60c0d55a0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "author": "Frontify Developers ", - "version": "5.6.8", + "version": "5.6.11", "bin": { "frontify-cli": "dist/index.mjs" }, diff --git a/packages/cli/src/utils/verifyManifest.ts b/packages/cli/src/utils/verifyManifest.ts index fb1e34711..c13ae34d6 100644 --- a/packages/cli/src/utils/verifyManifest.ts +++ b/packages/cli/src/utils/verifyManifest.ts @@ -17,9 +17,33 @@ const iconLibraryFilenameExtension = z.enum(['svg']); const logoLibraryFilenameExtension = z.enum(['svg', 'jpg', 'jpeg', 'ai', 'eps', 'png', 'tif', 'tiff']); const appType = z.enum(['content-block', 'platform-app', 'theme']); + +const secretSchema = object({ + label: string(), + key: string().refine((value) => /^[\w-]+$/.test(value), { + message: "The key should only contain letters from a-z, A-Z, numbers from 0-9, '-' and '_' without any spaces", + }), +}); +const secretsArraySchema = array(secretSchema); + +const proxyOptionsSchema = object({ + method: z.enum(['GET', 'POST', 'PUT', 'DELETE']), + headers: z.record(string()), + body: z.any(), +}); + +const proxyNetworkCallSchema = object({ + id: string(), + resource: string().url(), + options: proxyOptionsSchema, +}); +const proxyNetworkCallArraySchema = array(proxyNetworkCallSchema); + export const platformAppManifestSchemaV1 = object({ appId: string().length(25), appType, + secrets: secretsArraySchema.optional(), + proxyNetworkCall: proxyNetworkCallArraySchema.optional(), surfaces: object({ mediaLibrary: object({ assetAction: object({ diff --git a/packages/cli/templates/platform-app-css-modules/package.json b/packages/cli/templates/platform-app-css-modules/package.json index c819ddf62..de9f74ab8 100644 --- a/packages/cli/templates/platform-app-css-modules/package.json +++ b/packages/cli/templates/platform-app-css-modules/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@frontify/app-bridge": "4.0.0-alpha.6", - "@frontify/fondue": "12.0.0-beta.411", + "@frontify/fondue": "12.0.0-beta.415", "@frontify/fondue-tokens": "^3.4.0", "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", diff --git a/packages/cli/templates/platform-app-css/package.json b/packages/cli/templates/platform-app-css/package.json index 3ef778711..4d2adae8f 100644 --- a/packages/cli/templates/platform-app-css/package.json +++ b/packages/cli/templates/platform-app-css/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@frontify/app-bridge": "4.0.0-alpha.6", - "@frontify/fondue": "12.0.0-beta.411", + "@frontify/fondue": "12.0.0-beta.415", "@frontify/fondue-tokens": "^3.4.0", "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", diff --git a/packages/cli/templates/platform-app-tailwind/package.json b/packages/cli/templates/platform-app-tailwind/package.json index 1c8e0609b..4234d756c 100644 --- a/packages/cli/templates/platform-app-tailwind/package.json +++ b/packages/cli/templates/platform-app-tailwind/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@frontify/app-bridge": "4.0.0-alpha.6", - "@frontify/fondue": "12.0.0-beta.411", + "@frontify/fondue": "12.0.0-beta.415", "@frontify/fondue-tokens": "^3.4.0", "@frontify/platform-app": "^0.0.5", "react": "^18.2.0", diff --git a/packages/cli/tests/utils/verifyManifest.spec.ts b/packages/cli/tests/utils/verifyManifest.spec.ts index 8ab2562e5..b05eb6abe 100644 --- a/packages/cli/tests/utils/verifyManifest.spec.ts +++ b/packages/cli/tests/utils/verifyManifest.spec.ts @@ -144,6 +144,262 @@ const MANIFEST_WITH_TOO_LONG_TITLE_ASSET_CREATION = { }, }; +const VALID_MANIFEST_WITH_SECRETS = { + appType: 'platform-app', + appId: 'abcdabcdabcdabcdabcdabcda', + secrets: [{ label: 'first label', key: 'first-key' }], + surfaces: { + mediaLibrary: { + assetAction: { + title: 'action title', + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: { + title: 'action title', + }, + }, + }, + metadata: { + version: 1, + }, +}; + +const VALID_MANIFEST_WITH_EMPTY_SECRETS = { + appType: 'platform-app', + appId: 'abcdabcdabcdabcdabcdabcda', + secrets: [], + surfaces: { + mediaLibrary: { + assetAction: { + title: 'action title', + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: { + title: 'action title', + }, + }, + }, + metadata: { + version: 1, + }, +}; + +const VALID_MANIFEST_WITH_NO_SECRETS = { + appType: 'platform-app', + appId: 'abcdabcdabcdabcdabcdabcda', + surfaces: { + mediaLibrary: { + assetAction: { + title: 'action title', + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: { + title: 'action title', + }, + }, + }, + metadata: { + version: 1, + }, +}; + +const MANIFEST_WITH_WRONG_KEY_FORMAT = { + appType: 'platform-app', + appId: 'abcdabcdabcdabcdabcdabcda', + secrets: [{ label: 'first label', key: 'first key %' }], + surfaces: { + mediaLibrary: { + assetAction: { + title: 'action title', + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: { + title: 'action title', + }, + }, + }, + metadata: { + version: 1, + }, +}; + +const MANIFEST_WITH_SECRET_BUT_NO_KEY = { + appType: 'platform-app', + appId: 'abcdabcdabcdabcdabcdabcda', + secrets: [{ label: 'first label' }], + surfaces: { + mediaLibrary: { + assetAction: { + title: 'action title', + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: { + title: 'action title', + }, + }, + }, + metadata: { + version: 1, + }, +}; + +const MANIFEST_WITH_SECRET_BUT_NO_LABEL = { + appType: 'platform-app', + appId: 'abcdabcdabcdabcdabcdabcda', + secrets: [{ key: 'first-key' }], + surfaces: { + mediaLibrary: { + assetAction: { + title: 'action title', + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: { + title: 'action title', + }, + }, + }, + metadata: { + version: 1, + }, +}; + +const generateManifestWithProxyNetworkCall = (proxyNetworkCall) => { + return { + appType: 'platform-app', + appId: 'abcdabcdabcdabcdabcdabcda', + proxyNetworkCall, + surfaces: { + mediaLibrary: { + assetAction: { + title: 'action title', + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: { + title: 'action title', + }, + }, + }, + metadata: { + version: 1, + }, + }; +}; + +const MANIFEST_WITH_PROXY = generateManifestWithProxyNetworkCall([ + { + id: 'frontify-user-api', + resource: 'https://api.frontify.com/api/user', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, + { + id: 'example-user-api', + resource: 'https://api.example.com/api/user', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, +]); + +const MANIFEST_WITH_NOT_ARRAY_PROXY = generateManifestWithProxyNetworkCall({ + id: 'frontify-user-api', + resource: 'https://api.frontify.com/api/user', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, +}); + +const MANIFEST_WITH_PROXY_NO_ID = generateManifestWithProxyNetworkCall([ + { + resource: 'https://api.frontify.com/api/user', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, +]); + +const MANIFEST_WITH_PROXY_NO_RESOURCE = generateManifestWithProxyNetworkCall([ + { + id: 'frontify-user-api', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, +]); + +const MANIFEST_WITH_PROXY_INCORRECT_RESOURCE = generateManifestWithProxyNetworkCall([ + { + id: 'frontify-user-api', + resource: 'something-random', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, +]); + +const MANIFEST_WITH_PROXY_NO_OPTIONS = generateManifestWithProxyNetworkCall([ + { + id: 'frontify-user-api', + resource: 'https://api.frontify.com/api/user', + }, +]); + +const MANIFEST_WITH_PROXY_NO_METHOD = generateManifestWithProxyNetworkCall([ + { + id: 'frontify-user-api', + resource: 'https://api.frontify.com/api/user', + options: { + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, +]); + +const MANIFEST_WITH_PROXY_NO_HEADERS = generateManifestWithProxyNetworkCall([ + { + id: 'frontify-user-api', + resource: 'https://api.frontify.com/api/user', + options: { + method: 'POST', + body: 'example body data', + }, + }, +]); + describe('Verify Platform App Manifest', () => { it('should validate a valid manifest', async () => { const verifiedManifest = await verifyManifest(VALID_MANIFEST, platformAppManifestSchemaV1); @@ -191,4 +447,84 @@ describe('Verify Platform App Manifest', () => { async () => await verifyManifest(MANIFEST_WITH_TOO_LONG_TITLE_ASSET_CREATION, platformAppManifestSchemaV1), ).rejects.toThrow(); }); + + it('should accept a secret array with label and key', async () => { + const verifiedManifest = await verifyManifest(VALID_MANIFEST_WITH_SECRETS, platformAppManifestSchemaV1); + expect(!!verifiedManifest).toBe(true); + }); + + it('should accept an empty secrets array', async () => { + const verifiedManifest = await verifyManifest(VALID_MANIFEST_WITH_EMPTY_SECRETS, platformAppManifestSchemaV1); + expect(!!verifiedManifest).toBe(true); + }); + + it('should validate when no secret property is present', async () => { + const verifiedManifest = await verifyManifest(VALID_MANIFEST_WITH_NO_SECRETS, platformAppManifestSchemaV1); + expect(!!verifiedManifest).toBe(true); + }); + + it('should throw when secret object is not correct without key', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_SECRET_BUT_NO_KEY, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw when secret object is not correct without label', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_SECRET_BUT_NO_LABEL, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when key formatting is invalid', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_WRONG_KEY_FORMAT, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should accept an array of ProxyCallNetwork objects', async () => { + const verifiedManifest = await verifyManifest(MANIFEST_WITH_PROXY, platformAppManifestSchemaV1); + expect(!!verifiedManifest).toBe(true); + }); + + it('should throw error when proxyCallNetwork is not an array', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_NOT_ARRAY_PROXY, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when proxyCallNetwork object is not correct without id', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_PROXY_NO_ID, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when proxyCallNetwork object is not correct without resource', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_PROXY_NO_RESOURCE, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw an error when resource is incorrect', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_PROXY_INCORRECT_RESOURCE, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when proxyCallNetwork object is not correct without options', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_PROXY_NO_OPTIONS, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when proxyCallNetwork object is not correct without method', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_PROXY_NO_METHOD, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); + + it('should throw error when proxyCallNetwork object is not correct without headers', async () => { + await expect( + async () => await verifyManifest(MANIFEST_WITH_PROXY_NO_HEADERS, platformAppManifestSchemaV1), + ).rejects.toThrow(); + }); }); diff --git a/packages/guideline-blocks-settings/CHANGELOG.md b/packages/guideline-blocks-settings/CHANGELOG.md index fce61c406..cd66c8665 100644 --- a/packages/guideline-blocks-settings/CHANGELOG.md +++ b/packages/guideline-blocks-settings/CHANGELOG.md @@ -1,5 +1,39 @@ # @frontify/guideline-blocks-settings +## 0.34.6 + +### Patch Changes + +- [#822](https://github.com/Frontify/brand-sdk/pull/822) [`b8ca543`](https://github.com/Frontify/brand-sdk/commit/b8ca54328becb5a084833bbdfdb3a7a2c9ea3d09) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(RichTextEditor): always reset page leave when text changes. This fixes an issue introduced in v0.34.5. + +- [#823](https://github.com/Frontify/brand-sdk/pull/823) [`a7a39ba`](https://github.com/Frontify/brand-sdk/commit/a7a39ba8d6de66bc56da497d043d73b860aa77b6) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(RichTextEditor): Reset `hasEnteredViewport` state every time view mode is entered + +## 0.34.5 + +### Patch Changes + +- [#817](https://github.com/Frontify/brand-sdk/pull/817) [`7307201`](https://github.com/Frontify/brand-sdk/commit/7307201f42889938c2a68664abebbc1da21ae9e4) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(RichTextEditor): using the new `useIsInViewport` hook the RichTextEditor will now only be initialized once the component enters the viewport. + +## 0.34.4 + +### Patch Changes + +- [#815](https://github.com/Frontify/brand-sdk/pull/815) [`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue to 12.0.0-beta.415 + +- Updated dependencies [[`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f)]: + - @frontify/sidebar-settings@0.9.11 + +## 0.34.3 + +### Patch Changes + +- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(RichTextEditor): replace outer-most modal element with `FloatingModalWrapper`. + +- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to ^12.0.0-beta.411 + +- Updated dependencies [[`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1)]: + - @frontify/sidebar-settings@0.9.10 + ## 0.34.2 ### Patch Changes diff --git a/packages/guideline-blocks-settings/package.json b/packages/guideline-blocks-settings/package.json index c44daae6f..69005f808 100644 --- a/packages/guideline-blocks-settings/package.json +++ b/packages/guideline-blocks-settings/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-blocks-settings", "type": "module", - "version": "0.34.2", + "version": "0.34.6", "description": "Provides types and helpers for the guideline block development", "author": "Frontify Developers ", "repository": { @@ -47,7 +47,7 @@ "@dnd-kit/core": "^6.1.0", "@dnd-kit/modifiers": "^7.0.0", "@dnd-kit/sortable": "^8.0.0", - "@frontify/fondue": "12.0.0-beta.411", + "@frontify/fondue": "12.0.0-beta.415", "@frontify/sidebar-settings": "workspace:^", "@react-aria/focus": "^3.14.0", "@react-stately/overlays": "^3.6.1" diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.spec.ct.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.spec.ct.tsx index b71e4443f..2d7c2ebde 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.spec.ct.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.spec.ct.tsx @@ -29,6 +29,23 @@ describe('RichTextEditor', () => { cy.get(RichTextSelector).should('exist'); }); + it('should only render a rich text editor when inside viewport and editing', () => { + cy.viewport(500, 500); + + mount( +
+ +
, + ); + cy.get(RteHtmlSelector).should('exist'); + cy.get(RichTextSelector).should('not.exist'); + cy.document().then((document) => { + document.querySelector(RteHtmlSelector)?.scrollIntoView(); + }); + cy.get(RteHtmlSelector).should('not.exist'); + cy.get(RichTextSelector).should('exist'); + }); + it('should render a rich text html in view mode', () => { mount(); cy.get(RteHtmlSelector).should('exist'); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.tsx index d65eaeb08..8d146d5b1 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.tsx @@ -1,69 +1,100 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { useCallback, useEffect, useState } from 'react'; +import { memo, useCallback, useEffect, useRef, useState } from 'react'; import { RichTextEditor as FondueRichTextEditor } from '@frontify/fondue'; import { RichTextEditorProps } from './types'; import { SerializedText } from './SerializedText'; import { floatingButtonActions, floatingButtonSelectors } from './plugins/ButtonPlugin/components'; +import { useIsInViewport } from '../../hooks/useIsInViewport'; -export const RichTextEditor = ({ - id = 'rte', - isEditing, - value, - columns, - gap, - placeholder, - plugins, - onTextChange, - showSerializedText, -}: RichTextEditorProps) => { - const [shouldPreventPageLeave, setShouldPreventPageLeave] = useState(false); - - const handleTextChange = useCallback( - (newContent: string) => { - if (onTextChange && newContent !== value) { - onTextChange(newContent); +const InternalRichTextEditor = memo( + ({ + id = 'rte', + isEnabled, + value, + columns, + gap, + placeholder, + plugins, + onTextChange, + showSerializedText, + }: Omit & { isEnabled: boolean }) => { + const [shouldPreventPageLeave, setShouldPreventPageLeave] = useState(false); + + const handleTextChange = useCallback( + (newContent: string) => { + if (newContent !== value) { + onTextChange?.(newContent); + } + setShouldPreventPageLeave(false); + }, + [onTextChange, value], + ); + + const handleValueChange = useCallback(() => setShouldPreventPageLeave(true), []); + + const handleHideExternalFloatingModals = useCallback((editorId: string) => { + if (floatingButtonSelectors.isOpen(editorId)) { + floatingButtonActions.reset(); + } + }, []); + + useEffect(() => { + const unloadHandler = (event: BeforeUnloadEvent) => { + event.preventDefault(); + event.returnValue = 'Unprocessed changes'; + }; + + if (shouldPreventPageLeave) { + window.addEventListener('beforeunload', unloadHandler); } - setShouldPreventPageLeave(false); - }, - [onTextChange, value], - ); - const handleValueChange = useCallback(() => setShouldPreventPageLeave(true), []); + return () => window.removeEventListener('beforeunload', unloadHandler); + }, [shouldPreventPageLeave]); - const handleHideExternalFloatingModals = useCallback((editorId: string) => { - if (floatingButtonSelectors.isOpen(editorId)) { - floatingButtonActions.reset(); + if (isEnabled) { + return ( + + ); + } + return ; + }, +); +InternalRichTextEditor.displayName = 'InternalRichTextEditor'; + +export const RichTextEditor = (props: RichTextEditorProps) => { + const ref = useRef(null); + const [hasEnteredViewport, setHasEnteredViewport] = useState(false); + + const { isEditing, ...internalRteProps } = props; + + const onViewportVisibilityChange = useCallback((isInViewport: boolean) => { + if (isInViewport) { + setHasEnteredViewport(true); } }, []); - useEffect(() => { - const unloadHandler = (event: BeforeUnloadEvent) => { - event.preventDefault(); - return (event.returnValue = 'Unprocessed changes'); - }; + useIsInViewport({ ref, disabled: !isEditing, onChange: onViewportVisibilityChange }); - if (shouldPreventPageLeave) { - window.addEventListener('beforeunload', unloadHandler); + useEffect(() => { + if (!isEditing) { + setHasEnteredViewport(false); } + }, [isEditing]); - return () => window.removeEventListener('beforeunload', unloadHandler); - }, [shouldPreventPageLeave]); - - if (isEditing) { - return ( - - ); - } - return ; + return ( +
+ +
+ ); }; diff --git a/packages/guideline-blocks-settings/src/hooks/useIsInViewport.spec.ts b/packages/guideline-blocks-settings/src/hooks/useIsInViewport.spec.ts new file mode 100644 index 000000000..fbbe37b93 --- /dev/null +++ b/packages/guideline-blocks-settings/src/hooks/useIsInViewport.spec.ts @@ -0,0 +1,95 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; +import { useIsInViewport } from './useIsInViewport'; + +describe('useIsInViewport', () => { + const stubs = vi.hoisted(() => ({ + IntersectionObserver: vi.fn(), + observe: vi.fn(), + disconnect: vi.fn(), + })); + + beforeAll(() => { + vi.stubGlobal( + 'IntersectionObserver', + class IntersectionObserver { + constructor(callback: IntersectionObserverCallback) { + stubs.IntersectionObserver(callback); + } + observe() { + stubs.observe(); + } + disconnect() { + stubs.disconnect(); + } + }, + ); + }); + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should setup an IntersectionObserver and observe the ref', () => { + const { rerender } = renderHook(() => + useIsInViewport({ disabled: false, onChange: vi.fn(), ref: { current: document.createElement('div') } }), + ); + + expect(stubs.IntersectionObserver).toHaveBeenCalledOnce(); + expect(stubs.observe).toHaveBeenCalledOnce(); + + rerender(); + expect(stubs.disconnect).toHaveBeenCalledOnce(); + }); + + it('should not setup an IntersectionObserver if disabled', () => { + renderHook(() => + useIsInViewport({ disabled: true, onChange: vi.fn(), ref: { current: document.createElement('div') } }), + ); + + expect(stubs.IntersectionObserver).not.toHaveBeenCalled(); + expect(stubs.observe).not.toHaveBeenCalled(); + }); + + it('should not setup an IntersectionObserver if ref.current is null', () => { + renderHook(() => useIsInViewport({ disabled: false, onChange: vi.fn(), ref: { current: null } })); + + expect(stubs.IntersectionObserver).not.toHaveBeenCalled(); + expect(stubs.observe).not.toHaveBeenCalled(); + }); + + it('should call onChange only when isIntersecting changes', () => { + const onChangeStub = vi.fn(); + renderHook(() => + useIsInViewport({ + disabled: false, + onChange: onChangeStub, + ref: { current: document.createElement('div') }, + }), + ); + + expect(stubs.IntersectionObserver).toHaveBeenCalledOnce(); + + const callback = stubs.IntersectionObserver.mock.calls[0][0]; + callback([{ isIntersecting: true }]); + + expect(onChangeStub).toHaveBeenCalledOnce(); + expect(onChangeStub).toHaveBeenCalledWith(true); + + callback([{ isIntersecting: true }]); + + expect(onChangeStub).toHaveBeenCalledOnce(); + + callback([{ isIntersecting: false }]); + + expect(onChangeStub).toHaveBeenCalledTimes(2); + expect(onChangeStub).toHaveBeenCalledWith(false); + + callback([{ isIntersecting: false }]); + + expect(onChangeStub).toHaveBeenCalledTimes(2); + expect(onChangeStub).toHaveBeenCalledWith(false); + }); +}); diff --git a/packages/guideline-blocks-settings/src/hooks/useIsInViewport.ts b/packages/guideline-blocks-settings/src/hooks/useIsInViewport.ts new file mode 100644 index 000000000..f969d7a3e --- /dev/null +++ b/packages/guideline-blocks-settings/src/hooks/useIsInViewport.ts @@ -0,0 +1,34 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { RefObject, useEffect } from 'react'; + +export const useIsInViewport = ({ + ref, + disabled, + onChange, +}: { + ref: RefObject; + disabled: boolean; + onChange: (isInViewport: boolean) => void; +}) => { + useEffect(() => { + if (disabled || !ref.current) { + return; + } + + let isInViewport = false; + + const intersectionObserver = new IntersectionObserver(([entry]) => { + if (entry.isIntersecting !== isInViewport) { + isInViewport = entry.isIntersecting; + onChange(entry.isIntersecting); + } + }); + + intersectionObserver.observe(ref.current); + + return () => { + intersectionObserver.disconnect(); + }; + }, [ref, disabled, onChange]); +}; diff --git a/packages/platform-app/CHANGELOG.md b/packages/platform-app/CHANGELOG.md index eac6d50b9..bea1c97cd 100644 --- a/packages/platform-app/CHANGELOG.md +++ b/packages/platform-app/CHANGELOG.md @@ -1,5 +1,19 @@ # @frontify/platform-app +## 0.0.15 + +### Patch Changes + +- Updated dependencies [[`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f)]: + - @frontify/sidebar-settings@0.9.11 + +## 0.0.14 + +### Patch Changes + +- Updated dependencies [[`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1)]: + - @frontify/sidebar-settings@0.9.10 + ## 0.0.13 ### Patch Changes diff --git a/packages/platform-app/package.json b/packages/platform-app/package.json index a0e0e62a5..677083527 100644 --- a/packages/platform-app/package.json +++ b/packages/platform-app/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/platform-app", "type": "module", - "version": "0.0.13", + "version": "0.0.15", "description": "Provides the types for the Apps", "author": "Frontify Developers ", "repository": { diff --git a/packages/sidebar-settings/CHANGELOG.md b/packages/sidebar-settings/CHANGELOG.md index 18e0e272e..a06cc339d 100644 --- a/packages/sidebar-settings/CHANGELOG.md +++ b/packages/sidebar-settings/CHANGELOG.md @@ -1,5 +1,17 @@ # @frontify/sidebar-settings +## 0.9.11 + +### Patch Changes + +- [#815](https://github.com/Frontify/brand-sdk/pull/815) [`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue to 12.0.0-beta.415 + +## 0.9.10 + +### Patch Changes + +- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to ^12.0.0-beta.411 + ## 0.9.9 ### Patch Changes diff --git a/packages/sidebar-settings/package.json b/packages/sidebar-settings/package.json index 660c1a828..523c4f6c3 100644 --- a/packages/sidebar-settings/package.json +++ b/packages/sidebar-settings/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/sidebar-settings", "type": "module", - "version": "0.9.9", + "version": "0.9.11", "description": "Provides types and helpers for the settings sidebar", "author": "Frontify Developers ", "repository": { @@ -33,7 +33,7 @@ "react-dom": "^18" }, "dependencies": { - "@frontify/fondue": "12.0.0-beta.411" + "@frontify/fondue": "12.0.0-beta.415" }, "devDependencies": { "@babel/core": "^7.23.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e4cc175c7..686f16699 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: ^5.0.7 version: 5.0.7 '@frontify/fondue': - specifier: 12.0.0-beta.411 - version: 12.0.0-beta.411(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1) + specifier: 12.0.0-beta.415 + version: 12.0.0-beta.415(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1) '@vitejs/plugin-react': specifier: ^4.2.1 version: 4.2.1(vite@4.5.2) @@ -256,8 +256,8 @@ importers: specifier: ^3.0.0 || ^4.0.0-alpha.0 version: link:../app-bridge '@frontify/fondue': - specifier: 12.0.0-beta.411 - version: 12.0.0-beta.411(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1) + specifier: 12.0.0-beta.415 + version: 12.0.0-beta.415(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1) '@frontify/sidebar-settings': specifier: workspace:^ version: link:../sidebar-settings @@ -408,8 +408,8 @@ importers: packages/sidebar-settings: dependencies: '@frontify/fondue': - specifier: 12.0.0-beta.411 - version: 12.0.0-beta.411(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1) + specifier: 12.0.0-beta.415 + version: 12.0.0-beta.415(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1) devDependencies: '@babel/core': specifier: ^7.23.9 @@ -1726,8 +1726,8 @@ packages: transitivePeerDependencies: - ts-node - /@frontify/fondue@12.0.0-beta.411(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1): - resolution: {integrity: sha512-DhYiqJ66jR+5DUE2r7bpb4B/f5Bekk4lihlqEVbre4NMh4x/Ilt1dJMU22akCWYu3TF3B9yaqngpwsLkKC1tIQ==} + /@frontify/fondue@12.0.0-beta.415(@types/node@18.19.18)(@types/react-dom@18.2.19)(@types/react@18.2.58)(@udecode/plate-common@30.4.5)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.1)(ts-node@10.9.2)(zustand@4.5.1): + resolution: {integrity: sha512-PCrScuVehc5/9AzPEacTd7IVOnX6E1eV/I/LaIDwwGVQH1x0Ca0OAUwHRVEtSqw2ZlYrcflPtR4wYfiO87EaFA==} engines: {node: '>=18'} peerDependencies: react: ^18 From 2e0b64121938ee920f5f99ec8d3acf4a21ba2f83 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:09:27 +0100 Subject: [PATCH 036/182] chore: release packages (alpha) (#831) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 7 +++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 1d0b3424d..fd9599406 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -20,6 +20,7 @@ "pink-bugs-behave", "polite-eels-shake", "pretty-items-marry", + "smart-suns-type", "stale-hairs-wash", "strong-tools-check", "warm-hounds-refuse", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index be43126a9..27dfb5406 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.11 + +### Minor Changes + +- [#830](https://github.com/Frontify/brand-sdk/pull/830) [`e14ef89`](https://github.com/Frontify/brand-sdk/commit/e14ef895606e72af066e614983b61ca8778c108d) Thanks [@ragi96](https://github.com/ragi96)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type + ## 4.0.0-alpha.10 ### Minor Changes @@ -15,6 +21,7 @@ ### Patch Changes - Merge main into dev + ## 3.5.2 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 1504ddc50..0bfcbbb4e 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.10", + "version": "4.0.0-alpha.11", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From 18c91b184651f49c490d381054b3ec543f928551 Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Mon, 18 Mar 2024 15:54:28 -0500 Subject: [PATCH 037/182] chore: add changeset --- .changeset/witty-rivers-smile.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/witty-rivers-smile.md diff --git a/.changeset/witty-rivers-smile.md b/.changeset/witty-rivers-smile.md new file mode 100644 index 000000000..834e4e6ef --- /dev/null +++ b/.changeset/witty-rivers-smile.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +Merge `main` into `dev` From 382c6374da51909d49ebd516daf080dc09ec3106 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 08:52:56 +0100 Subject: [PATCH 038/182] chore: release packages (alpha) (#837) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 3 ++- packages/app-bridge/CHANGELOG.md | 7 +++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index fd9599406..33c93ac52 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -24,6 +24,7 @@ "stale-hairs-wash", "strong-tools-check", "warm-hounds-refuse", - "wild-bags-judge" + "wild-bags-judge", + "witty-rivers-smile" ] } diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index f2c577680..74c1e2a6b 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.12 + +### Patch Changes + +- [`18c91b1`](https://github.com/Frontify/brand-sdk/commit/18c91b184651f49c490d381054b3ec543f928551) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge `main` into `dev` + ## 4.0.0-alpha.11 ### Minor Changes @@ -21,6 +27,7 @@ ### Patch Changes - Merge main into dev + ## 3.5.3 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 0bfcbbb4e..03988e7b6 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.11", + "version": "4.0.0-alpha.12", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From 0d9d0afe4fc55b0e0c5b1e397aeaf77e7e8c4a69 Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Thu, 21 Mar 2024 17:05:39 +0100 Subject: [PATCH 039/182] chore: add changeset --- .changeset/smooth-planets-pay.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/smooth-planets-pay.md diff --git a/.changeset/smooth-planets-pay.md b/.changeset/smooth-planets-pay.md new file mode 100644 index 000000000..1003ebd33 --- /dev/null +++ b/.changeset/smooth-planets-pay.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +Merge main into dev From 4d76b2db1ac137719d19be6673db1fe5f0e2b755 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 Mar 2024 17:23:04 +0100 Subject: [PATCH 040/182] chore: release packages (alpha) (#845) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 + packages/app-bridge/CHANGELOG.md | 114 +++++++++++++++++-------------- packages/app-bridge/package.json | 2 +- 3 files changed, 64 insertions(+), 54 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 33c93ac52..b12620507 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -11,6 +11,7 @@ "changesets": [ "cuddly-pets-hammer", "giant-shrimps-dream", + "honest-rockets-cheat", "kind-fishes-flash", "light-crews-report", "lovely-books-hear", @@ -21,6 +22,7 @@ "polite-eels-shake", "pretty-items-marry", "smart-suns-type", + "smooth-planets-pay", "stale-hairs-wash", "strong-tools-check", "warm-hounds-refuse", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 1236164c9..831de1a3b 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,232 +1,240 @@ # @frontify/app-bridge +## 4.0.0-alpha.13 + +### Patch Changes + +- [#843](https://github.com/Frontify/brand-sdk/pull/843) [`3109e66`](https://github.com/Frontify/brand-sdk/commit/3109e66248fb9185c312d8170055452dce796bc4) Thanks [@julianiff](https://github.com/julianiff)! - chore: move up to v4 + +- [`0d9d0af`](https://github.com/Frontify/brand-sdk/commit/0d9d0afe4fc55b0e0c5b1e397aeaf77e7e8c4a69) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev + ## 4.0.0-alpha.12 ### Patch Changes -- [`18c91b1`](https://github.com/Frontify/brand-sdk/commit/18c91b184651f49c490d381054b3ec543f928551) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge `main` into `dev` +- [`18c91b1`](https://github.com/Frontify/brand-sdk/commit/18c91b184651f49c490d381054b3ec543f928551) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge `main` into `dev` ## 4.0.0-alpha.11 ### Minor Changes -- [#830](https://github.com/Frontify/brand-sdk/pull/830) [`e14ef89`](https://github.com/Frontify/brand-sdk/commit/e14ef895606e72af066e614983b61ca8778c108d) Thanks [@ragi96](https://github.com/ragi96)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type +- [#830](https://github.com/Frontify/brand-sdk/pull/830) [`e14ef89`](https://github.com/Frontify/brand-sdk/commit/e14ef895606e72af066e614983b61ca8778c108d) Thanks [@ragi96](https://github.com/ragi96)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type ## 4.0.0-alpha.10 ### Minor Changes -- [#808](https://github.com/Frontify/brand-sdk/pull/808) [`4529beb`](https://github.com/Frontify/brand-sdk/commit/4529beb4b9f20ba94c7d6226257b422d6b560d5a) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme +- [#808](https://github.com/Frontify/brand-sdk/pull/808) [`4529beb`](https://github.com/Frontify/brand-sdk/commit/4529beb4b9f20ba94c7d6226257b422d6b560d5a) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme ### Patch Changes -- [#810](https://github.com/Frontify/brand-sdk/pull/810) [`0ac69ea`](https://github.com/Frontify/brand-sdk/commit/0ac69eaa52ba58a5be06ce75afa63cf5838e958b) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests +- [#810](https://github.com/Frontify/brand-sdk/pull/810) [`0ac69ea`](https://github.com/Frontify/brand-sdk/commit/0ac69eaa52ba58a5be06ce75afa63cf5838e958b) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests ## 4.0.0-alpha.9 ### Patch Changes -- Merge main into dev +- Merge main into dev ## 3.5.4 ### Patch Changes -- [#821](https://github.com/Frontify/brand-sdk/pull/821) [`efde7a5`](https://github.com/Frontify/brand-sdk/commit/efde7a511b3d4fbbe17af5f0e41982d003743b35) Thanks [@imoutaharik](https://github.com/imoutaharik)! - feat(AppBridgePlatformApp): add the `proxyMethodCall` method +- [#821](https://github.com/Frontify/brand-sdk/pull/821) [`efde7a5`](https://github.com/Frontify/brand-sdk/commit/efde7a511b3d4fbbe17af5f0e41982d003743b35) Thanks [@imoutaharik](https://github.com/imoutaharik)! - feat(AppBridgePlatformApp): add the `proxyMethodCall` method ## 3.5.3 ### Patch Changes -- [#834](https://github.com/Frontify/brand-sdk/pull/834) [`1612681`](https://github.com/Frontify/brand-sdk/commit/1612681472c6eff8b732aed10c33d0ac83269b83) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: useTemplateAssets hook to return themeAsset as well +- [#834](https://github.com/Frontify/brand-sdk/pull/834) [`1612681`](https://github.com/Frontify/brand-sdk/commit/1612681472c6eff8b732aed10c33d0ac83269b83) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: useTemplateAssets hook to return themeAsset as well ## 3.5.2 ### Patch Changes -- [#825](https://github.com/Frontify/brand-sdk/pull/825) [`8430626`](https://github.com/Frontify/brand-sdk/commit/8430626870f7fb139d2b10b4f1f26040be1c6bbc) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type +- [#825](https://github.com/Frontify/brand-sdk/pull/825) [`8430626`](https://github.com/Frontify/brand-sdk/commit/8430626870f7fb139d2b10b4f1f26040be1c6bbc) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type ## 3.5.1 ### Patch Changes -- [#818](https://github.com/Frontify/brand-sdk/pull/818) [`c25d717`](https://github.com/Frontify/brand-sdk/commit/c25d71757e44406c065c65374d1d800a6d5694de) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(useBlockSettings): `setBlockSettings` has been wrapped in a `useCallback` so it can be safely used as a dependency in react hooks. The following code will no longer cause unexpected rerenders. +- [#818](https://github.com/Frontify/brand-sdk/pull/818) [`c25d717`](https://github.com/Frontify/brand-sdk/commit/c25d71757e44406c065c65374d1d800a6d5694de) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(useBlockSettings): `setBlockSettings` has been wrapped in a `useCallback` so it can be safely used as a dependency in react hooks. The following code will no longer cause unexpected rerenders. - ```jsx - const Component = () => { - const [blockSettings, setBlockSettings] = useBlockSettings(appBridge); + ```jsx + const Component = () => { + const [blockSettings, setBlockSettings] = useBlockSettings(appBridge); - useEffect(() => { - setBlockSettings({ ...blockSettings }); - }, [setBlockSettings]); - }; - ``` + useEffect(() => { + setBlockSettings({ ...blockSettings }); + }, [setBlockSettings]); + }; + ``` ## 3.5.0 ### Minor Changes -- [#807](https://github.com/Frontify/brand-sdk/pull/807) [`909e0f5`](https://github.com/Frontify/brand-sdk/commit/909e0f5ef98e7bd1da6b0d96e32fdcde74a87d8d) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme +- [#807](https://github.com/Frontify/brand-sdk/pull/807) [`909e0f5`](https://github.com/Frontify/brand-sdk/commit/909e0f5ef98e7bd1da6b0d96e32fdcde74a87d8d) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme ### Patch Changes -- [#806](https://github.com/Frontify/brand-sdk/pull/806) [`5115dfd`](https://github.com/Frontify/brand-sdk/commit/5115dfda65ce87e53a26831e05034534d50a05be) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests +- [#806](https://github.com/Frontify/brand-sdk/pull/806) [`5115dfd`](https://github.com/Frontify/brand-sdk/commit/5115dfda65ce87e53a26831e05034534d50a05be) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests ## 3.4.2 ### Patch Changes -- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages +- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages ## 4.0.0-alpha.8 ### Patch Changes -- [#777](https://github.com/Frontify/brand-sdk/pull/777) [`b5d1cb8`](https://github.com/Frontify/brand-sdk/commit/b5d1cb8a376ccada20d0234913584a6bdba0cba9) Thanks [@julianiff](https://github.com/julianiff)! - Fix: add retry to subscription +- [#777](https://github.com/Frontify/brand-sdk/pull/777) [`b5d1cb8`](https://github.com/Frontify/brand-sdk/commit/b5d1cb8a376ccada20d0234913584a6bdba0cba9) Thanks [@julianiff](https://github.com/julianiff)! - Fix: add retry to subscription -- Merge main into dev +- Merge main into dev ## 3.4.1 ### Patch Changes -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM +- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM ## 3.4.0 ### Minor Changes -- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.7 ### Minor Changes -- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.6 ### Patch Changes -- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 +- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 -- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext - refactor: rename from type to surface +- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext + refactor: rename from type to surface ## 4.0.0-alpha.5 ### Patch Changes -- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type -- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev +- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev ## 3.3.2 ### Patch Changes -- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type ## 4.0.0-alpha.4 ### Patch Changes -- Merge main into dev +- Merge main into dev ## 3.3.1 ### Patch Changes -- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 4.0.0-alpha.3 ### Patch Changes -- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision +- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision ## 4.0.0-alpha.2 ### Patch Changes -- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 4.0.0-alpha.1 ### Patch Changes -- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme +- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme ## 3.3.0 ### Minor Changes -- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 3.2.0 ### Minor Changes -- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context +- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context ## 4.0.0-alpha.0 ### Major Changes -- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock +- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock ## 3.1.0 ### Minor Changes -- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. - You will need to update the import paths in your tests: +- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. + You will need to update the import paths in your tests: - ```git - - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; - + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; - ``` + ```git + - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; + + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; + ``` ## 3.0.4 ### Patch Changes -- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json +- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json ## 3.0.3 ### Patch Changes -- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order +- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order ## 3.0.2 ### Patch Changes -- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions +- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions ## 3.0.1 ### Patch Changes -- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings +- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings ## 3.0.0 ### Major Changes -- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release +- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release ## 3.0.0-beta.32 ### Patch Changes -- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions +- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions ## 3.0.0-beta.31 ### Minor Changes -- Add Brandportal link +- Add Brandportal link diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 03988e7b6..5a6680103 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.12", + "version": "4.0.0-alpha.13", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From d88b50dd6e2235262dbae7250db053f9052228d1 Mon Sep 17 00:00:00 2001 From: Sam Creasey Date: Tue, 26 Mar 2024 19:32:20 +0700 Subject: [PATCH 041/182] feat: make useDocumentSections hook subscribe to event listeners (#841) * make theme sections dynamic * fix event * add document section hook tests * remove timestamp * make sure import is type * add extra tests * test event listener * add comments to the return type of usedocumentsection * remove duplicate test * update test spelling * split function into helper * add new changeset * update event property * update appBridgeBlockStub * convert emitter event to payloads and add switch statement * fix test * make naming of sections consistent * remove id prefix * add new prefix --------- Co-authored-by: Rafael Giezendanner --- .changeset/khaki-dryers-shout.md | 5 + .changeset/shaggy-mugs-speak.md | 7 + packages/app-bridge/src/helpers/index.ts | 1 + .../app-bridge/src/helpers/navigation.spec.ts | 19 + packages/app-bridge/src/helpers/navigation.ts | 6 + .../src/react/useDocumentSection.spec.ts | 334 ++++++++++++++++++ .../src/react/useDocumentSection.ts | 105 +++++- .../src/tests/AppBridgeBlockStub.ts | 12 +- .../src/tests/DocumentSectionApiDummy.ts | 6 + .../src/tests/DocumentSectionDummy.ts | 8 +- .../app-bridge/src/types/DocumentSection.ts | 22 +- packages/app-bridge/src/types/Emitter.ts | 18 + 12 files changed, 534 insertions(+), 9 deletions(-) create mode 100644 .changeset/khaki-dryers-shout.md create mode 100644 .changeset/shaggy-mugs-speak.md create mode 100644 packages/app-bridge/src/helpers/navigation.spec.ts create mode 100644 packages/app-bridge/src/helpers/navigation.ts create mode 100644 packages/app-bridge/src/react/useDocumentSection.spec.ts diff --git a/.changeset/khaki-dryers-shout.md b/.changeset/khaki-dryers-shout.md new file mode 100644 index 000000000..d6ace4e4f --- /dev/null +++ b/.changeset/khaki-dryers-shout.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": major +--- + +feat: modify `DocumentSection` and `DocumentSectionApi` type to allow `title` to be `null`. diff --git a/.changeset/shaggy-mugs-speak.md b/.changeset/shaggy-mugs-speak.md new file mode 100644 index 000000000..0bef3f30f --- /dev/null +++ b/.changeset/shaggy-mugs-speak.md @@ -0,0 +1,7 @@ +--- +"@frontify/app-bridge": patch +--- + +- feat(useDocumentSection): Subscribe hook to emitter event listeners. A new emitter type, `AppBridge:GuidelineDocumentSection:Action` has been added. This emitter can be used to add and remove items from the sections saved in the hook state. + +- feat(useDocumentSection): `navigationItems` is now returned from this hook. This array filters out sections with an unreadable title and should be used to create section navigation links. diff --git a/packages/app-bridge/src/helpers/index.ts b/packages/app-bridge/src/helpers/index.ts index 86b4e4ed7..0e51a26f7 100644 --- a/packages/app-bridge/src/helpers/index.ts +++ b/packages/app-bridge/src/helpers/index.ts @@ -1,3 +1,4 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './link'; +export * from './navigation'; diff --git a/packages/app-bridge/src/helpers/navigation.spec.ts b/packages/app-bridge/src/helpers/navigation.spec.ts new file mode 100644 index 000000000..73e31f213 --- /dev/null +++ b/packages/app-bridge/src/helpers/navigation.spec.ts @@ -0,0 +1,19 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { filterDocumentSectionsWithUnreadableTitles } from './navigation'; +import { DocumentSectionDummy } from '../tests/DocumentSectionDummy'; +import { describe, expect, it } from 'vitest'; + +const documentSections = [ + DocumentSectionDummy.withFields({ id: 464, title: null }), + DocumentSectionDummy.withFields({ id: 356, title: 'New Title' }), + DocumentSectionDummy.withFields({ id: 37675, title: ' ' }), + DocumentSectionDummy.withFields({ id: 37675, title: '' }), +]; + +describe('filterDocumentSectionsWithUnreadableTitles', () => { + it("should filter out document sections that don't have a readable title", () => { + const sections = filterDocumentSectionsWithUnreadableTitles(documentSections); + expect(sections).toEqual([documentSections[1]]); + }); +}); diff --git a/packages/app-bridge/src/helpers/navigation.ts b/packages/app-bridge/src/helpers/navigation.ts new file mode 100644 index 000000000..9dbdd3781 --- /dev/null +++ b/packages/app-bridge/src/helpers/navigation.ts @@ -0,0 +1,6 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type DocumentSection } from '../'; + +export const filterDocumentSectionsWithUnreadableTitles = (sections: DocumentSection[]) => + sections.filter((section) => !!section.title?.trim()); diff --git a/packages/app-bridge/src/react/useDocumentSection.spec.ts b/packages/app-bridge/src/react/useDocumentSection.spec.ts new file mode 100644 index 000000000..4e14dfaab --- /dev/null +++ b/packages/app-bridge/src/react/useDocumentSection.spec.ts @@ -0,0 +1,334 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook, waitFor } from '@testing-library/react'; +import mitt from 'mitt'; +import { Mock, beforeAll, describe, expect, it, vi } from 'vitest'; + +import { DocumentSectionDummy } from '../tests/DocumentSectionDummy'; +import { AppBridgeBlock, AppBridgeTheme } from '../'; + +import { useDocumentSection } from './useDocumentSection'; + +const DOCUMENT_PAGE_ID = 45; + +const documentSections = [ + DocumentSectionDummy.withFields({ id: 464, title: null }), + DocumentSectionDummy.withFields({ id: 356, title: 'New Title' }), + DocumentSectionDummy.withFields({ id: 376, title: ' ' }), + DocumentSectionDummy.withFields({ id: 174, title: '' }), +]; + +describe('useDocumentSection', () => { + const appBridge: AppBridgeBlock | AppBridgeTheme = {} as AppBridgeBlock | AppBridgeTheme; + + beforeAll(() => { + window.emitter = mitt(); + appBridge.getDocumentSectionsByDocumentPageId = vi.fn().mockResolvedValue(documentSections); + }); + + it('should return the document sections from appBridge', async () => { + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + }); + + it('should filter sections with null and unreadable titles from navigation items', async () => { + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.navigationItems).toEqual([documentSections[1]]); + }); + }); + + it('should add and remove event listener correctly', async () => { + vi.spyOn(window.emitter, 'on'); + vi.spyOn(window.emitter, 'off'); + + const { unmount } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + const handleSectionEvent = (window.emitter.on as Mock).mock.calls[0][1]; + + expect(window.emitter.on).toHaveBeenCalledWith('AppBridge:GuidelineDocumentSection:Action', handleSectionEvent); + + unmount(); + + expect(window.emitter.off).toHaveBeenCalledWith( + 'AppBridge:GuidelineDocumentSection:Action', + handleSectionEvent, + ); + }); + + describe('when a document section is added', () => { + it('should add the document section to the start of the documentSections if previousSectionId is null', async () => { + const NEW_SECTION = DocumentSectionDummy.with(535); + + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'add', + payload: { + documentPageId: DOCUMENT_PAGE_ID, + documentSection: NEW_SECTION, + previousDocumentSectionId: null, + }, + }); + + await waitFor(() => { + expect(result.current.documentSections).toEqual([NEW_SECTION, ...documentSections]); + expect(result.current.navigationItems).toEqual([NEW_SECTION, documentSections[1]]); + }); + }); + + it('should add the document section after the section matching previousSectionId', async () => { + const NEW_SECTION = DocumentSectionDummy.with(535); + + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'add', + payload: { + documentPageId: DOCUMENT_PAGE_ID, + documentSection: NEW_SECTION, + previousDocumentSectionId: documentSections[1].id, + }, + }); + + await waitFor(() => { + expect(result.current.documentSections).toEqual([ + documentSections[0], + documentSections[1], + NEW_SECTION, + documentSections[2], + documentSections[3], + ]); + expect(result.current.navigationItems).toEqual([documentSections[1], NEW_SECTION]); + }); + }); + + it('should not add the document section to the array if the documentPageId is incorrect', async () => { + const NEW_SECTION = DocumentSectionDummy.with(535); + + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'add', + payload: { + documentPageId: DOCUMENT_PAGE_ID + 1, + documentSection: NEW_SECTION, + previousDocumentSectionId: documentSections[1].id, + }, + }); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + expect(result.current.navigationItems).toEqual([documentSections[1]]); + }); + }); + + it('should add the document section to the end of the array if no section matches previousSectionId', async () => { + const NEW_SECTION = DocumentSectionDummy.with(535); + + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'add', + payload: { + documentPageId: DOCUMENT_PAGE_ID, + documentSection: NEW_SECTION, + previousDocumentSectionId: 123, + }, + }); + + await waitFor(() => { + expect(result.current.documentSections).toEqual([...documentSections, NEW_SECTION]); + expect(result.current.navigationItems).toEqual([documentSections[1], NEW_SECTION]); + }); + }); + }); + + describe('when a document section is updated', () => { + it('should update the document section that matches sectionId', async () => { + const UPDATED_SECTION = DocumentSectionDummy.withFields({ + id: documentSections[1].id, + title: 'Updated Title', + slug: 'updated-slug', + }); + + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'update', + payload: { + documentPageId: DOCUMENT_PAGE_ID, + id: UPDATED_SECTION.id, + title: UPDATED_SECTION.title, + slug: UPDATED_SECTION.slug, + }, + }); + + await waitFor(() => { + expect(result.current.documentSections).toEqual([ + documentSections[0], + UPDATED_SECTION, + documentSections[2], + documentSections[3], + ]); + expect(result.current.navigationItems).toEqual([UPDATED_SECTION]); + }); + }); + + it('should remove document section from navigation items if title becomes unreadable', async () => { + const UPDATED_SECTION = DocumentSectionDummy.withFields({ + id: documentSections[1].id, + title: ' ', + slug: 'updated-slug', + }); + + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'update', + payload: { + documentPageId: DOCUMENT_PAGE_ID, + id: UPDATED_SECTION.id, + title: UPDATED_SECTION.title, + slug: UPDATED_SECTION.slug, + }, + }); + + await waitFor(() => { + expect(result.current.navigationItems).toEqual([]); + }); + }); + + it('should add document section to navigation items if title becomes truthy', async () => { + const UPDATED_SECTION = DocumentSectionDummy.withFields({ + id: documentSections[2].id, + title: 'Updated Title', + slug: 'updated-slug', + }); + + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'update', + payload: { + documentPageId: DOCUMENT_PAGE_ID, + id: UPDATED_SECTION.id, + title: UPDATED_SECTION.title, + slug: UPDATED_SECTION.slug, + }, + }); + + await waitFor(() => { + expect(result.current.navigationItems).toEqual([documentSections[1], UPDATED_SECTION]); + }); + }); + + it('should not adjust array if documentPageId is incorrect', async () => { + const UPDATED_SECTION = DocumentSectionDummy.withFields({ + id: documentSections[2].id, + title: 'Updated Title', + slug: 'updated-slug', + }); + + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'update', + payload: { + documentPageId: DOCUMENT_PAGE_ID + 1, + id: UPDATED_SECTION.id, + title: UPDATED_SECTION.title, + slug: UPDATED_SECTION.slug, + }, + }); + + await waitFor(() => { + expect(result.current.navigationItems).toEqual([documentSections[1]]); + }); + }); + }); + + describe('when a document section is deleted', () => { + it('should remove the section that matches sectionId', async () => { + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'delete', + payload: { + documentPageId: DOCUMENT_PAGE_ID, + id: documentSections[1].id, + }, + }); + + await waitFor(() => { + expect(result.current.documentSections).toEqual([ + documentSections[0], + documentSections[2], + documentSections[3], + ]); + expect(result.current.navigationItems).toEqual([]); + }); + }); + + it('should not remove document section if documentPageId is incorrect', async () => { + const { result } = renderHook(() => useDocumentSection(appBridge, DOCUMENT_PAGE_ID)); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + }); + + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'delete', + payload: { + documentPageId: DOCUMENT_PAGE_ID + 1, + id: documentSections[1].id, + }, + }); + + await waitFor(() => { + expect(result.current.documentSections).toEqual(documentSections); + expect(result.current.navigationItems).toEqual([documentSections[1]]); + }); + }); + }); +}); diff --git a/packages/app-bridge/src/react/useDocumentSection.ts b/packages/app-bridge/src/react/useDocumentSection.ts index d3a04ed98..45981aafc 100644 --- a/packages/app-bridge/src/react/useDocumentSection.ts +++ b/packages/app-bridge/src/react/useDocumentSection.ts @@ -1,13 +1,65 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import type { AppBridgeBlock } from '../AppBridgeBlock'; import type { AppBridgeTheme } from '../AppBridgeTheme'; -import type { DocumentSection } from '../types'; +import type { DocumentSection, EmitterEvents } from '../types'; +import { filterDocumentSectionsWithUnreadableTitles } from '../helpers'; -export const useDocumentSection = (appBridge: AppBridgeBlock | AppBridgeTheme, documentPageId: number) => { +const insertDocumentSectionIntoArray = ( + previousDocumentSections: DocumentSection[], + newDocumentSection: DocumentSection, + previousDocumentSectionId: Nullable, +) => { + if (previousDocumentSectionId === null) { + return [newDocumentSection, ...previousDocumentSections]; + } + const index = previousDocumentSections.findIndex((section) => section.id === previousDocumentSectionId); + if (index >= 0) { + return [ + ...previousDocumentSections.slice(0, index + 1), + newDocumentSection, + ...previousDocumentSections.slice(index + 1), + ]; + } + return [...previousDocumentSections, newDocumentSection]; +}; + +const updateDocumentSectionInArray = ( + previousDocumentSections: DocumentSection[], + documentSectionIdToUpdate: number, + title: Nullable, + slug: string, +) => + previousDocumentSections.map((documentSection) => + documentSection.id === documentSectionIdToUpdate ? { ...documentSection, title, slug } : documentSection, + ); + +const deleteDocumentSectionFromArray = (previousDocumentSections: DocumentSection[], IdToDelete: number) => + previousDocumentSections.filter((documentSection) => documentSection.id !== IdToDelete); + +type UseDocumentSectionReturn = { + /** + * The complete list of document sections that belong to the document page with the given documentPageId. + */ + documentSections: DocumentSection[]; + /** + * A filtered list of document sections which removes any sections that do not have a readable title. + * Use this array for creating a navigation menu for the document page. + */ + navigationItems: DocumentSection[]; +}; + +export const useDocumentSection = ( + appBridge: AppBridgeBlock | AppBridgeTheme, + documentPageId: number, +): UseDocumentSectionReturn => { const [documentSections, setDocumentSections] = useState([]); + const navigationItems = useMemo( + () => filterDocumentSectionsWithUnreadableTitles(documentSections), + [documentSections], + ); useEffect(() => { const fetchDocumentSection = async (documentPageId: number) => { @@ -17,5 +69,50 @@ export const useDocumentSection = (appBridge: AppBridgeBlock | AppBridgeTheme, d fetchDocumentSection(documentPageId); }, [appBridge, documentPageId]); - return { documentSections }; + useEffect(() => { + const handleDocumentSectionEvent = ({ + action, + payload, + }: EmitterEvents['AppBridge:GuidelineDocumentSection:Action']) => { + if (payload.documentPageId !== documentPageId) { + return; + } + switch (action) { + case 'add': + { + const { documentSection, previousDocumentSectionId } = payload; + setDocumentSections((previousSections) => + insertDocumentSectionIntoArray( + previousSections, + documentSection, + previousDocumentSectionId, + ), + ); + } + break; + case 'update': + { + const { id, title, slug } = payload; + setDocumentSections((previousSections) => + updateDocumentSectionInArray(previousSections, id, title, slug), + ); + } + break; + case 'delete': + { + const { id } = payload; + setDocumentSections((previousSections) => deleteDocumentSectionFromArray(previousSections, id)); + } + break; + } + }; + + window.emitter.on('AppBridge:GuidelineDocumentSection:Action', handleDocumentSectionEvent); + + return () => { + window.emitter.off('AppBridge:GuidelineDocumentSection:Action', handleDocumentSectionEvent); + }; + }, [documentPageId]); + + return { documentSections, navigationItems }; }; diff --git a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts index db6a70c8c..97b85d090 100644 --- a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts +++ b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts @@ -15,6 +15,7 @@ import { PrivacySettings } from '../types/PrivacySettings'; import { TemplateDummy } from './TemplateDummy'; import { TemplateLegacyDummy } from './TemplateLegacyDummy'; import { type EventCallbackParameter } from '../AppBridge'; +import { DocumentSectionApiDummy } from './DocumentSectionApiDummy'; const BLOCK_ID = 3452; const SECTION_ID = 2341; @@ -217,6 +218,15 @@ export const getAppBridgeBlockStub = ({ return unsubscribe; }), + getDocumentSectionsByDocumentPageId: stub< + Parameters + >().resolves([ + DocumentSectionApiDummy.withFields({ id: 1, title: null }), + DocumentSectionApiDummy.withFields({ id: 2, title: 'Title' }), + DocumentSectionApiDummy.withFields({ id: 3, title: ' ' }), + DocumentSectionApiDummy.withFields({ id: 4, title: '' }), + ]), + // TODO: Stub the following methods createColor: stub>().resolves(ColorDummy.red()), deleteColor: stub>().resolves(), @@ -233,8 +243,6 @@ export const getAppBridgeBlockStub = ({ stub>().resolves(), getUncategorizedDocumentPagesByDocumentId: stub>().resolves(), - getDocumentSectionsByDocumentPageId: - stub>().resolves(), getDocumentTargets: stub>().resolves(), getDocumentPageTargets: stub>().resolves(), state: stub>().resolves(), diff --git a/packages/app-bridge/src/tests/DocumentSectionApiDummy.ts b/packages/app-bridge/src/tests/DocumentSectionApiDummy.ts index b62cd5301..2b3d43bdf 100644 --- a/packages/app-bridge/src/tests/DocumentSectionApiDummy.ts +++ b/packages/app-bridge/src/tests/DocumentSectionApiDummy.ts @@ -21,4 +21,10 @@ export class DocumentSectionApiDummy { permanent_link: `/r/document-section-${id}`, }; } + static withFields({ id, ...otherFields }: Partial): DocumentSectionApi { + return { + ...DocumentSectionApiDummy.with(id ?? 1), + ...otherFields, + }; + } } diff --git a/packages/app-bridge/src/tests/DocumentSectionDummy.ts b/packages/app-bridge/src/tests/DocumentSectionDummy.ts index a21a2cea8..ade7555d0 100644 --- a/packages/app-bridge/src/tests/DocumentSectionDummy.ts +++ b/packages/app-bridge/src/tests/DocumentSectionDummy.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { DocumentSection } from '../types'; +import { type DocumentSection } from '../types'; export class DocumentSectionDummy { static with(id: number): DocumentSection { @@ -12,4 +12,10 @@ export class DocumentSectionDummy { permanentLink: `/r/document-section-${id}`, }; } + static withFields({ id, ...otherFields }: Partial): DocumentSection { + return { + ...DocumentSectionDummy.with(id ?? 1), + ...otherFields, + }; + } } diff --git a/packages/app-bridge/src/types/DocumentSection.ts b/packages/app-bridge/src/types/DocumentSection.ts index e9b4050c0..d65418c86 100644 --- a/packages/app-bridge/src/types/DocumentSection.ts +++ b/packages/app-bridge/src/types/DocumentSection.ts @@ -7,7 +7,7 @@ export type DocumentSectionApi = { revision: unknown; slug: string; sort: number; - title: string; + title: Nullable; creator: number; created: string; modifier: Nullable; @@ -19,8 +19,26 @@ export type DocumentSectionApi = { export type DocumentSection = { id: number; - title: string; + title: Nullable; slug: string; sort: number; permanentLink: string; }; + +export type AddDocumentSectionPayload = { + documentSection: DocumentSection; + previousDocumentSectionId: Nullable; + documentPageId: number; +}; + +export type UpdateDocumentSectionPayload = { + id: number; + title: Nullable; + slug: string; + documentPageId: number; +}; + +export type DeleteDocumentSectionPayload = { + id: number; + documentPageId: number; +}; diff --git a/packages/app-bridge/src/types/Emitter.ts b/packages/app-bridge/src/types/Emitter.ts index 20ddf3cc7..592498f49 100644 --- a/packages/app-bridge/src/types/Emitter.ts +++ b/packages/app-bridge/src/types/Emitter.ts @@ -14,6 +14,11 @@ import type { BrandportalLink } from './BrandportalLink'; import type { PrivacySettings } from './PrivacySettings'; import type { Template } from './Template'; import type { ThemeTemplate } from './ThemeTemplate'; +import type { + AddDocumentSectionPayload, + DeleteDocumentSectionPayload, + UpdateDocumentSectionPayload, +} from './DocumentSection'; export type EmitterAction = 'add' | 'update' | 'delete'; @@ -111,6 +116,19 @@ export type EmitterEvents = { documentPage: { id: number; documentId: number; categoryId?: Nullable }; action: 'delete'; }; + 'AppBridge:GuidelineDocumentSection:Action': + | { + action: 'add'; + payload: AddDocumentSectionPayload; + } + | { + action: 'update'; + payload: UpdateDocumentSectionPayload; + } + | { + action: 'delete'; + payload: DeleteDocumentSectionPayload; + }; 'AppBridge:GuidelineDocumentCategory:Action': | { From 8bcc70d5ec5665d80113924eb002b6c6fb3446e1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 19:45:39 +0700 Subject: [PATCH 042/182] chore: release packages (alpha) (#847) Signed-off-by: Sam Creasey Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ packages/app-bridge/CHANGELOG.md | 12 ++++++++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index b12620507..93b345050 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -12,6 +12,7 @@ "cuddly-pets-hammer", "giant-shrimps-dream", "honest-rockets-cheat", + "khaki-dryers-shout", "kind-fishes-flash", "light-crews-report", "lovely-books-hear", @@ -21,6 +22,7 @@ "pink-bugs-behave", "polite-eels-shake", "pretty-items-marry", + "shaggy-mugs-speak", "smart-suns-type", "smooth-planets-pay", "stale-hairs-wash", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 831de1a3b..ec55f62be 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,17 @@ # @frontify/app-bridge +## 4.0.0-alpha.14 + +### Major Changes + +- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: modify `DocumentSection` and `DocumentSectionApi` type to allow `title` to be `null`. + +### Patch Changes + +- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - feat(useDocumentSection): Subscribe hook to emitter event listeners. A new emitter type, `AppBridge:GuidelineDocumentSection:Action` has been added. This emitter can be used to add and remove items from the sections saved in the hook state. + + - feat(useDocumentSection): `navigationItems` is now returned from this hook. This array filters out sections with an unreadable title and should be used to create section navigation links. + ## 4.0.0-alpha.13 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 5a6680103..2ab869af4 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "author": "Frontify Developers ", - "version": "4.0.0-alpha.13", + "version": "4.0.0-alpha.14", "description": "Package to establish communication between Frontify and marketplace apps", "repository": { "type": "git", From 0f17eb82afdc30692e02d1cf150d622f38d0913a Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Tue, 16 Apr 2024 17:52:03 +0200 Subject: [PATCH 043/182] chore: add changeset --- .changeset/hip-days-applaud.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/hip-days-applaud.md diff --git a/.changeset/hip-days-applaud.md b/.changeset/hip-days-applaud.md new file mode 100644 index 000000000..72a2a5743 --- /dev/null +++ b/.changeset/hip-days-applaud.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: merge `main` into `dev` From 8326528e2bbf8cdfd42405e14a9a8bc8236f2e5d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 09:51:27 +0000 Subject: [PATCH 044/182] chore: release packages (alpha) (#866) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 +- packages/app-bridge/CHANGELOG.md | 130 ++++++++++++++++--------------- packages/app-bridge/package.json | 2 +- 3 files changed, 70 insertions(+), 64 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 93b345050..dfe20c428 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -11,7 +11,7 @@ "changesets": [ "cuddly-pets-hammer", "giant-shrimps-dream", - "honest-rockets-cheat", + "hip-days-applaud", "khaki-dryers-shout", "kind-fishes-flash", "light-crews-report", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index f847a474b..287417851 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,272 +1,278 @@ # @frontify/app-bridge +## 4.0.0-alpha.15 + +### Patch Changes + +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`0f17eb8`](https://github.com/Frontify/brand-sdk/commit/0f17eb82afdc30692e02d1cf150d622f38d0913a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` + ## 3.5.8 ### Patch Changes -- [#868](https://github.com/Frontify/brand-sdk/pull/868) [`88fb3c3`](https://github.com/Frontify/brand-sdk/commit/88fb3c3b0235d9fc89c9a352273bacfaf53fdb0e) Thanks [@mike85](https://github.com/mike85)! - feat(AppBridgeTheme): add useDocumentNavigation hook +- [#868](https://github.com/Frontify/brand-sdk/pull/868) [`88fb3c3`](https://github.com/Frontify/brand-sdk/commit/88fb3c3b0235d9fc89c9a352273bacfaf53fdb0e) Thanks [@mike85](https://github.com/mike85)! - feat(AppBridgeTheme): add useDocumentNavigation hook ## 4.0.0-alpha.14 ### Major Changes -- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: modify `DocumentSection` and `DocumentSectionApi` type to allow `title` to be `null`. +- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: modify `DocumentSection` and `DocumentSectionApi` type to allow `title` to be `null`. ### Patch Changes -- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - feat(useDocumentSection): Subscribe hook to emitter event listeners. A new emitter type, `AppBridge:GuidelineDocumentSection:Action` has been added. This emitter can be used to add and remove items from the sections saved in the hook state. +- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - feat(useDocumentSection): Subscribe hook to emitter event listeners. A new emitter type, `AppBridge:GuidelineDocumentSection:Action` has been added. This emitter can be used to add and remove items from the sections saved in the hook state. - - feat(useDocumentSection): `navigationItems` is now returned from this hook. This array filters out sections with an unreadable title and should be used to create section navigation links. + - feat(useDocumentSection): `navigationItems` is now returned from this hook. This array filters out sections with an unreadable title and should be used to create section navigation links. ## 3.5.7 ### Patch Changes -- [#856](https://github.com/Frontify/brand-sdk/pull/856) [`b2060ff`](https://github.com/Frontify/brand-sdk/commit/b2060ff02448ca127c34d0745f363ff8bd06ec77) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeTheme): add usePortalNavigation hook +- [#856](https://github.com/Frontify/brand-sdk/pull/856) [`b2060ff`](https://github.com/Frontify/brand-sdk/commit/b2060ff02448ca127c34d0745f363ff8bd06ec77) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeTheme): add usePortalNavigation hook ## 3.5.6 ### Patch Changes -- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files +- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files -- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies +- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies ## 4.0.0-alpha.13 ### Patch Changes -- [#843](https://github.com/Frontify/brand-sdk/pull/843) [`3109e66`](https://github.com/Frontify/brand-sdk/commit/3109e66248fb9185c312d8170055452dce796bc4) Thanks [@julianiff](https://github.com/julianiff)! - chore: move up to v4 +- [#843](https://github.com/Frontify/brand-sdk/pull/843) [`3109e66`](https://github.com/Frontify/brand-sdk/commit/3109e66248fb9185c312d8170055452dce796bc4) Thanks [@julianiff](https://github.com/julianiff)! - chore: move up to v4 -- [`0d9d0af`](https://github.com/Frontify/brand-sdk/commit/0d9d0afe4fc55b0e0c5b1e397aeaf77e7e8c4a69) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev +- [`0d9d0af`](https://github.com/Frontify/brand-sdk/commit/0d9d0afe4fc55b0e0c5b1e397aeaf77e7e8c4a69) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev ## 4.0.0-alpha.12 ### Patch Changes -- [`18c91b1`](https://github.com/Frontify/brand-sdk/commit/18c91b184651f49c490d381054b3ec543f928551) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge `main` into `dev` +- [`18c91b1`](https://github.com/Frontify/brand-sdk/commit/18c91b184651f49c490d381054b3ec543f928551) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge `main` into `dev` ## 4.0.0-alpha.11 ### Minor Changes -- [#830](https://github.com/Frontify/brand-sdk/pull/830) [`e14ef89`](https://github.com/Frontify/brand-sdk/commit/e14ef895606e72af066e614983b61ca8778c108d) Thanks [@ragi96](https://github.com/ragi96)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type +- [#830](https://github.com/Frontify/brand-sdk/pull/830) [`e14ef89`](https://github.com/Frontify/brand-sdk/commit/e14ef895606e72af066e614983b61ca8778c108d) Thanks [@ragi96](https://github.com/ragi96)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type ## 4.0.0-alpha.10 ### Minor Changes -- [#808](https://github.com/Frontify/brand-sdk/pull/808) [`4529beb`](https://github.com/Frontify/brand-sdk/commit/4529beb4b9f20ba94c7d6226257b422d6b560d5a) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme +- [#808](https://github.com/Frontify/brand-sdk/pull/808) [`4529beb`](https://github.com/Frontify/brand-sdk/commit/4529beb4b9f20ba94c7d6226257b422d6b560d5a) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme ### Patch Changes -- [#810](https://github.com/Frontify/brand-sdk/pull/810) [`0ac69ea`](https://github.com/Frontify/brand-sdk/commit/0ac69eaa52ba58a5be06ce75afa63cf5838e958b) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests +- [#810](https://github.com/Frontify/brand-sdk/pull/810) [`0ac69ea`](https://github.com/Frontify/brand-sdk/commit/0ac69eaa52ba58a5be06ce75afa63cf5838e958b) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests ## 4.0.0-alpha.9 ### Patch Changes -- Merge main into dev +- Merge main into dev ## 3.5.4 ### Patch Changes -- [#821](https://github.com/Frontify/brand-sdk/pull/821) [`efde7a5`](https://github.com/Frontify/brand-sdk/commit/efde7a511b3d4fbbe17af5f0e41982d003743b35) Thanks [@imoutaharik](https://github.com/imoutaharik)! - feat(AppBridgePlatformApp): add the `proxyMethodCall` method +- [#821](https://github.com/Frontify/brand-sdk/pull/821) [`efde7a5`](https://github.com/Frontify/brand-sdk/commit/efde7a511b3d4fbbe17af5f0e41982d003743b35) Thanks [@imoutaharik](https://github.com/imoutaharik)! - feat(AppBridgePlatformApp): add the `proxyMethodCall` method ## 3.5.3 ### Patch Changes -- [#834](https://github.com/Frontify/brand-sdk/pull/834) [`1612681`](https://github.com/Frontify/brand-sdk/commit/1612681472c6eff8b732aed10c33d0ac83269b83) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: useTemplateAssets hook to return themeAsset as well +- [#834](https://github.com/Frontify/brand-sdk/pull/834) [`1612681`](https://github.com/Frontify/brand-sdk/commit/1612681472c6eff8b732aed10c33d0ac83269b83) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: useTemplateAssets hook to return themeAsset as well ## 3.5.2 ### Patch Changes -- [#825](https://github.com/Frontify/brand-sdk/pull/825) [`8430626`](https://github.com/Frontify/brand-sdk/commit/8430626870f7fb139d2b10b4f1f26040be1c6bbc) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type +- [#825](https://github.com/Frontify/brand-sdk/pull/825) [`8430626`](https://github.com/Frontify/brand-sdk/commit/8430626870f7fb139d2b10b4f1f26040be1c6bbc) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type ## 3.5.1 ### Patch Changes -- [#818](https://github.com/Frontify/brand-sdk/pull/818) [`c25d717`](https://github.com/Frontify/brand-sdk/commit/c25d71757e44406c065c65374d1d800a6d5694de) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(useBlockSettings): `setBlockSettings` has been wrapped in a `useCallback` so it can be safely used as a dependency in react hooks. The following code will no longer cause unexpected rerenders. +- [#818](https://github.com/Frontify/brand-sdk/pull/818) [`c25d717`](https://github.com/Frontify/brand-sdk/commit/c25d71757e44406c065c65374d1d800a6d5694de) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(useBlockSettings): `setBlockSettings` has been wrapped in a `useCallback` so it can be safely used as a dependency in react hooks. The following code will no longer cause unexpected rerenders. - ```jsx - const Component = () => { - const [blockSettings, setBlockSettings] = useBlockSettings(appBridge); + ```jsx + const Component = () => { + const [blockSettings, setBlockSettings] = useBlockSettings(appBridge); - useEffect(() => { - setBlockSettings({ ...blockSettings }); - }, [setBlockSettings]); - }; - ``` + useEffect(() => { + setBlockSettings({ ...blockSettings }); + }, [setBlockSettings]); + }; + ``` ## 3.5.0 ### Minor Changes -- [#807](https://github.com/Frontify/brand-sdk/pull/807) [`909e0f5`](https://github.com/Frontify/brand-sdk/commit/909e0f5ef98e7bd1da6b0d96e32fdcde74a87d8d) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme +- [#807](https://github.com/Frontify/brand-sdk/pull/807) [`909e0f5`](https://github.com/Frontify/brand-sdk/commit/909e0f5ef98e7bd1da6b0d96e32fdcde74a87d8d) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme ### Patch Changes -- [#806](https://github.com/Frontify/brand-sdk/pull/806) [`5115dfd`](https://github.com/Frontify/brand-sdk/commit/5115dfda65ce87e53a26831e05034534d50a05be) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests +- [#806](https://github.com/Frontify/brand-sdk/pull/806) [`5115dfd`](https://github.com/Frontify/brand-sdk/commit/5115dfda65ce87e53a26831e05034534d50a05be) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests ## 3.4.2 ### Patch Changes -- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages +- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages ## 4.0.0-alpha.8 ### Patch Changes -- [#777](https://github.com/Frontify/brand-sdk/pull/777) [`b5d1cb8`](https://github.com/Frontify/brand-sdk/commit/b5d1cb8a376ccada20d0234913584a6bdba0cba9) Thanks [@julianiff](https://github.com/julianiff)! - Fix: add retry to subscription +- [#777](https://github.com/Frontify/brand-sdk/pull/777) [`b5d1cb8`](https://github.com/Frontify/brand-sdk/commit/b5d1cb8a376ccada20d0234913584a6bdba0cba9) Thanks [@julianiff](https://github.com/julianiff)! - Fix: add retry to subscription -- Merge main into dev +- Merge main into dev ## 3.4.1 ### Patch Changes -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM +- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM ## 3.4.0 ### Minor Changes -- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.7 ### Minor Changes -- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.6 ### Patch Changes -- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 +- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 -- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext - refactor: rename from type to surface +- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext + refactor: rename from type to surface ## 4.0.0-alpha.5 ### Patch Changes -- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type -- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev +- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev ## 3.3.2 ### Patch Changes -- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type ## 4.0.0-alpha.4 ### Patch Changes -- Merge main into dev +- Merge main into dev ## 3.3.1 ### Patch Changes -- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 4.0.0-alpha.3 ### Patch Changes -- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision +- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision ## 4.0.0-alpha.2 ### Patch Changes -- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 4.0.0-alpha.1 ### Patch Changes -- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme +- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme ## 3.3.0 ### Minor Changes -- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 3.2.0 ### Minor Changes -- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context +- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context ## 4.0.0-alpha.0 ### Major Changes -- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock +- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock ## 3.1.0 ### Minor Changes -- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. - You will need to update the import paths in your tests: +- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. + You will need to update the import paths in your tests: - ```git - - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; - + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; - ``` + ```git + - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; + + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; + ``` ## 3.0.4 ### Patch Changes -- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json +- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json ## 3.0.3 ### Patch Changes -- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order +- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order ## 3.0.2 ### Patch Changes -- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions +- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions ## 3.0.1 ### Patch Changes -- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings +- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings ## 3.0.0 ### Major Changes -- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release +- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release ## 3.0.0-beta.32 ### Patch Changes -- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions +- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions ## 3.0.0-beta.31 ### Minor Changes -- Add Brandportal link +- Add Brandportal link diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index f41d761f1..6164915d5 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.14", + "version": "4.0.0-alpha.15", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 73e70365262c74837528592268d43d65eda712c2 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Thu, 18 Apr 2024 10:25:10 +0200 Subject: [PATCH 045/182] chore: merge main into dev (#876) * feat: add secret and endpoint restrictions (#862) * feat: add secret and endpoint restrictions * chore: rename from id to name * chore: rename * Create two-spies-swim.md * feat: adjust appBridge for settings * chore: ad more test cases * chore: update error message * feat: add `useDocumentNavigation` hook (#872) * Added useDocumentNavigation hoook * Added test * Import type only * Simplified code * Fix linting issue * Disable eslint warning * Simplified code * Use new private property syntax * Added missing types * Use const * Shit * feat: usePageTemplateSettings to return templateThemeSettings (#875) * feat: usePageTemplateSettings to return templateThemeSettings * changeset * fix: change getPortalNavigation payload type to void (#873) * chore: release packages (#874) Co-authored-by: github-actions[bot] --------- Co-authored-by: Julian Iff Co-authored-by: Oliver Schwendener Co-authored-by: Anxo Botana Co-authored-by: Jiri Matyas Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] --- packages/app-bridge/CHANGELOG.md | 6 + packages/app-bridge/src/react/index.ts | 1 + .../src/react/useDocumentNavigation.spec.ts | 114 ++++++++++++++ .../src/react/useDocumentNavigation.ts | 54 +++++++ .../src/react/usePageTemplateSettings.spec.ts | 1 + .../src/react/usePageTemplateSettings.ts | 1 + .../src/registries/api/ApiMethodRegistry.ts | 4 +- .../src/tests/DocumentNavigationTreeDummy.ts | 140 +++++++++++++++++ packages/app-bridge/src/tests/index.ts | 1 + packages/app-bridge/src/types/Guideline.ts | 6 +- packages/cli/CHANGELOG.md | 6 + packages/cli/package.json | 2 +- packages/cli/src/utils/verifyManifest.ts | 40 ++++- .../cli/tests/utils/verifyManifest.spec.ts | 147 ++++++++++++++++-- 14 files changed, 505 insertions(+), 18 deletions(-) create mode 100644 packages/app-bridge/src/react/useDocumentNavigation.spec.ts create mode 100644 packages/app-bridge/src/react/useDocumentNavigation.ts create mode 100644 packages/app-bridge/src/tests/DocumentNavigationTreeDummy.ts diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 287417851..c9dc834dc 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 3.5.9 + +### Patch Changes + +- [#875](https://github.com/Frontify/brand-sdk/pull/875) [`d74dc90`](https://github.com/Frontify/brand-sdk/commit/d74dc90501cd0aac39f67a834014fd9c261abfb0) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(usePageTemplateSettings): returns also templateThemeSettings + ## 4.0.0-alpha.15 ### Patch Changes diff --git a/packages/app-bridge/src/react/index.ts b/packages/app-bridge/src/react/index.ts index fbf66a859..4d8e6d209 100644 --- a/packages/app-bridge/src/react/index.ts +++ b/packages/app-bridge/src/react/index.ts @@ -35,3 +35,4 @@ export * from './useThemeSettings'; export * from './useUncategorizedDocumentPages'; export * from './useUngroupedDocuments'; export * from './usePortalNavigation'; +export * from './useDocumentNavigation'; diff --git a/packages/app-bridge/src/react/useDocumentNavigation.spec.ts b/packages/app-bridge/src/react/useDocumentNavigation.spec.ts new file mode 100644 index 000000000..1ddd16481 --- /dev/null +++ b/packages/app-bridge/src/react/useDocumentNavigation.spec.ts @@ -0,0 +1,114 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook, waitFor } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; + +import { type DocumentPage, type DocumentSection, type GuidelineDocument, type DocumentCategory } from 'src/types'; + +import { getAppBridgeThemeStub, DocumentNavigationTreeDummy } from '../tests'; + +import { useDocumentNavigation } from './useDocumentNavigation'; + +vi.mock('lodash-es/debounce', () => { + return { + default: (callback: () => void) => callback(), + }; +}); + +describe('useDocumentNavigation', () => { + const testInitialRender = async ({ + expectRefetch, + options, + }: { + expectRefetch: boolean; + options?: { enabled: boolean }; + }) => { + const document = { id: () => 1138 }; + const appBridge = getAppBridgeThemeStub(); + const spy = vi.spyOn(appBridge, 'api').mockResolvedValueOnce(DocumentNavigationTreeDummy.default()); + + const { result } = renderHook(() => useDocumentNavigation(appBridge, document, options)); + + expect(result.current.isLoading).toBe(true); + + await waitFor(() => { + expect(result.current.isLoading).toBe(!expectRefetch); + expect(result.current.navigationItems).toEqual(expectRefetch ? DocumentNavigationTreeDummy.default() : []); + }); + + if (expectRefetch) { + expect(spy).toHaveBeenCalledOnce(); + expect(spy).toHaveBeenCalledWith({ name: 'getDocumentNavigation', payload: { document } }); + } + }; + + const testEventHandler = async (emitEvent: () => void) => { + const document = { id: () => 1138 }; + + const appBridge = getAppBridgeThemeStub(); + const spy = vi.spyOn(appBridge, 'api').mockResolvedValue(DocumentNavigationTreeDummy.default()); + + const { result } = renderHook(() => useDocumentNavigation(appBridge, document)); + + expect(result.current.isLoading).toBe(true); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + expect(result.current.navigationItems).toEqual(DocumentNavigationTreeDummy.default()); + }); + + expect(spy).toHaveBeenCalledOnce(); + expect(spy).toHaveBeenCalledWith({ name: 'getDocumentNavigation', payload: { document } }); + + spy.mockResolvedValueOnce(DocumentNavigationTreeDummy.alternative()); + + emitEvent(); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + expect(spy).toHaveBeenCalledTimes(2); + expect(result.current.navigationItems).toEqual(DocumentNavigationTreeDummy.alternative()); + }); + }; + + it('should not refetch on render when enabled is set to false', () => + testInitialRender({ expectRefetch: false, options: { enabled: false } })); + + it('should refetch on render when enabled is set to true', () => + testInitialRender({ expectRefetch: true, options: { enabled: true } })); + + it('should refetch on render when no options are given', () => + testInitialRender({ expectRefetch: true, options: undefined })); + + it('should refetch when the "AppBridge:GuidelineDocumentCategory:Action" event occurs', () => + testEventHandler(() => { + window.emitter.emit('AppBridge:GuidelineDocumentCategory:Action', { + action: 'add', + documentCategory: {}, + }); + })); + + it('should refetch when the "AppBridge:GuidelineDocumentPage:Action" event occurs', () => + testEventHandler(() => { + window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { + action: 'add', + documentPage: {}, + }); + })); + + it('should refetch when the "AppBridge:GuidelineDocumentPageTargets:Action" event occurs', () => + testEventHandler(() => { + window.emitter.emit('AppBridge:GuidelineDocumentPageTargets:Action', { + action: 'update', + payload: { targets: [], pageIds: [] }, + }); + })); + + it('should refetch when the "AppBridge:GuidelineDocumentSection:Action" event occurs', () => + testEventHandler(() => { + window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { + action: 'add', + payload: { documentPageId: 0, documentSection: {}, previousDocumentSectionId: 0 }, + }); + })); +}); diff --git a/packages/app-bridge/src/react/useDocumentNavigation.ts b/packages/app-bridge/src/react/useDocumentNavigation.ts new file mode 100644 index 000000000..4ef1844fe --- /dev/null +++ b/packages/app-bridge/src/react/useDocumentNavigation.ts @@ -0,0 +1,54 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import debounce from 'lodash-es/debounce'; +import { useCallback, useEffect, useState } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; +import { type GuidelineDocument, type DocumentNavigationItem } from '../types/Guideline'; + +type Options = { + /** + * Whether it should fetch on mount. + */ + enabled?: boolean; +}; + +export const useDocumentNavigation = ( + appBridge: AppBridgeTheme, + document: GuidelineDocument, + options: Options = { enabled: true }, +) => { + const [navigationItems, setNavigationItems] = useState([]); + const [isLoading, setIsLoading] = useState(true); + + const refetch = useCallback(async () => { + setIsLoading(true); + setNavigationItems(await appBridge.api({ name: 'getDocumentNavigation', payload: { document } })); + setIsLoading(false); + }, [appBridge, document]); + + useEffect(() => { + if (options.enabled) { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + refetch(); + } + }, [options.enabled, refetch]); + + useEffect(() => { + const debouncedRefetch = () => debounce(refetch, 100); + + window.emitter.on('AppBridge:GuidelineDocumentCategory:Action', debouncedRefetch); + window.emitter.on('AppBridge:GuidelineDocumentPage:Action', debouncedRefetch); + window.emitter.on('AppBridge:GuidelineDocumentPageTargets:Action', debouncedRefetch); + window.emitter.on('AppBridge:GuidelineDocumentSection:Action', debouncedRefetch); + + return () => { + window.emitter.off('AppBridge:GuidelineDocumentCategory:Action', debouncedRefetch); + window.emitter.off('AppBridge:GuidelineDocumentPage:Action', debouncedRefetch); + window.emitter.off('AppBridge:GuidelineDocumentPageTargets:Action', debouncedRefetch); + window.emitter.off('AppBridge:GuidelineDocumentSection:Action', debouncedRefetch); + }; + }, [navigationItems, refetch]); + + return { navigationItems, refetch, isLoading }; +}; diff --git a/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts b/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts index fdf09327f..5c0c6a00f 100644 --- a/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts +++ b/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts @@ -217,6 +217,7 @@ describe('usePageTemplateSettings', () => { ...PAGE_SETTINGS_WITH_OVERRIDES, }); expect(result.current.customizedPageTemplateSettingsKeys).toEqual(['customThemeSetting']); + expect(result.current.templateThemeSettings).toEqual(THEME_SETTINGS.documentPage); }); }); diff --git a/packages/app-bridge/src/react/usePageTemplateSettings.ts b/packages/app-bridge/src/react/usePageTemplateSettings.ts index 27e0ccb02..37f5ae6e7 100644 --- a/packages/app-bridge/src/react/usePageTemplateSettings.ts +++ b/packages/app-bridge/src/react/usePageTemplateSettings.ts @@ -110,6 +110,7 @@ export const usePageTemplateSettings = ; diff --git a/packages/app-bridge/src/tests/DocumentNavigationTreeDummy.ts b/packages/app-bridge/src/tests/DocumentNavigationTreeDummy.ts new file mode 100644 index 000000000..e976c928c --- /dev/null +++ b/packages/app-bridge/src/tests/DocumentNavigationTreeDummy.ts @@ -0,0 +1,140 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { + type DocumentNavigationItem, + type GuidelineDocumentPageHeading, + type GuidelineDocumentPage, + type GuidelineDocumentPageLink, + type GuidelinePageCategory, +} from '../types'; + +class DocumentPageCategoryDummy implements GuidelinePageCategory { + readonly type = 'page-category' as const; + + readonly #id: number; + readonly #children: (GuidelineDocumentPage | GuidelineDocumentPageLink)[]; + + constructor(id: number, children?: (GuidelineDocumentPage | GuidelineDocumentPageLink)[]) { + this.#id = id; + this.#children = children ?? []; + } + + id(): number { + return this.#id; + } + + title(): string { + return 'Dummy title'; + } + + slug(): string { + return 'dummy slug'; + } + + children(): (GuidelineDocumentPage | GuidelineDocumentPageLink)[] { + return this.#children; + } +} + +class DocumentPageDummy implements GuidelineDocumentPage { + readonly type = 'document-page' as const; + + readonly #id: number; + readonly #headings: GuidelineDocumentPageHeading[]; + + constructor(id: number, headings?: GuidelineDocumentPageHeading[]) { + this.#id = id ?? 1234; + this.#headings = headings ?? []; + } + + id(): number { + return this.#id; + } + + title(): string { + return 'Dummy title'; + } + + slug(): string { + return 'dummy slug'; + } + + url(): string { + return 'dummy url'; + } + + headings(): GuidelineDocumentPageHeading[] { + return this.#headings; + } +} + +class DocumentPageLinkDummy implements GuidelineDocumentPageLink { + readonly type = 'document-page-link' as const; + + readonly #id: number; + + constructor(id: number) { + this.#id = id; + } + + id(): number { + return this.#id; + } + + title(): string { + return 'Dummy title'; + } + + url(): string { + return 'dummy url'; + } +} + +class DocumentPageHeadingDummy implements GuidelineDocumentPageHeading { + readonly type = 'document-page-heading' as const; + + readonly #id; + + constructor(id: number) { + this.#id = id; + } + + id(): number { + return this.#id; + } + + title(): string { + return 'Dummy title'; + } + + slug(): string { + return 'dummy slug'; + } +} + +export class DocumentNavigationTreeDummy { + static default(): DocumentNavigationItem[] { + return [ + new DocumentPageCategoryDummy(1, [ + new DocumentPageDummy(1, [ + new DocumentPageHeadingDummy(1), + new DocumentPageHeadingDummy(2), + new DocumentPageHeadingDummy(3), + ]), + new DocumentPageLinkDummy(2), + ]), + new DocumentPageDummy(3), + ]; + } + + static alternative(): DocumentNavigationItem[] { + return [ + new DocumentPageCategoryDummy(1, [ + new DocumentPageDummy(1, [new DocumentPageHeadingDummy(2), new DocumentPageHeadingDummy(3)]), + new DocumentPageLinkDummy(2), + ]), + new DocumentPageDummy(2, [new DocumentPageHeadingDummy(1)]), + new DocumentPageLinkDummy(6), + ]; + } +} diff --git a/packages/app-bridge/src/tests/index.ts b/packages/app-bridge/src/tests/index.ts index 66540b8b7..d3a1233ac 100644 --- a/packages/app-bridge/src/tests/index.ts +++ b/packages/app-bridge/src/tests/index.ts @@ -39,3 +39,4 @@ export * from './UserDummy'; export * from './withAppBridgeBlockStubs'; export * from './withAppBridgeThemeStubs'; export * from './PortalNavigationTreeDummy'; +export * from './DocumentNavigationTreeDummy'; diff --git a/packages/app-bridge/src/types/Guideline.ts b/packages/app-bridge/src/types/Guideline.ts index 4de84b63f..26c09120f 100644 --- a/packages/app-bridge/src/types/Guideline.ts +++ b/packages/app-bridge/src/types/Guideline.ts @@ -86,4 +86,8 @@ export type PortalNavigationItem = | GuidelineDocumentLibrary | GuidelineDocumentLink; -export type DocumentNavigationItem = GuidelinePageCategory | GuidelineDocumentPage | GuidelineDocumentPageLink; +export type DocumentNavigationItem = + | GuidelinePageCategory + | GuidelineDocumentPage + | GuidelineDocumentPageLink + | GuidelineDocumentPageHeading; diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index c04a519c4..16e078d3e 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/frontify-cli +## 5.6.14 + +### Patch Changes + +- [#862](https://github.com/Frontify/brand-sdk/pull/862) [`d6f716d`](https://github.com/Frontify/brand-sdk/commit/d6f716d759841e9fa5f0cc08526f65fb210f557e) Thanks [@julianiff](https://github.com/julianiff)! - feat: add secret and endpoint restrictions + ## 5.6.13 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 4ce2e2d17..1371e0f2a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "type": "module", - "version": "5.6.13", + "version": "5.6.14", "author": "Frontify Developers ", "repository": { "type": "git", diff --git a/packages/cli/src/utils/verifyManifest.ts b/packages/cli/src/utils/verifyManifest.ts index 9fc160f76..c7fe0cfd5 100644 --- a/packages/cli/src/utils/verifyManifest.ts +++ b/packages/cli/src/utils/verifyManifest.ts @@ -18,11 +18,27 @@ const logoLibraryFilenameExtension = z.enum(['svg', 'jpg', 'jpeg', 'ai', 'eps', const appType = z.enum(['content-block', 'platform-app', 'theme']); +const secretKeySet = new Set(); +export function resetSecretKeySet() { + secretKeySet.clear(); +} + const secretSchema = object({ label: string(), - key: string().refine((value) => /^[\w-]+$/.test(value), { - message: "The key should only contain letters from a-z, A-Z, numbers from 0-9, '-' and '_' without any spaces", - }), + key: string().refine( + (key) => { + if (secretKeySet.has(key)) { + return false; + } + + secretKeySet.add(key); + return /^[\w-]+$/.test(key); + }, + { + message: + "Secret Key must be unique and should only contain letters from a-z, A-Z, numbers from 0-9, '-' and '_' without any spaces", + }, + ), }); const secretsArraySchema = array(secretSchema); @@ -32,8 +48,24 @@ const requestOptionsSchema = object({ body: z.any().optional(), }); +const endpointNameSet = new Set(); +export function resetEndpointNameSet() { + endpointNameSet.clear(); +} const endpointCallSchema = object({ - id: string(), + name: string().refine( + (name) => { + if (endpointNameSet.has(name)) { + return false; + } + + endpointNameSet.add(name); + return /^[\w-]*$/.test(name); + }, + { + message: 'Endpoint name must be unique', + }, + ), resource: string().url(), options: requestOptionsSchema, }); diff --git a/packages/cli/tests/utils/verifyManifest.spec.ts b/packages/cli/tests/utils/verifyManifest.spec.ts index 9967770bd..e5ed3c059 100644 --- a/packages/cli/tests/utils/verifyManifest.spec.ts +++ b/packages/cli/tests/utils/verifyManifest.spec.ts @@ -1,8 +1,13 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { describe, expect, it } from 'vitest'; +import { beforeEach, describe, expect, it } from 'vitest'; -import { platformAppManifestSchemaV1, verifyManifest } from '../../src/utils/verifyManifest'; +import { + platformAppManifestSchemaV1, + resetEndpointNameSet, + resetSecretKeySet, + verifyManifest, +} from '../../src/utils/verifyManifest'; const VALID_MANIFEST = { appType: 'platform-app', @@ -297,7 +302,7 @@ const generateManifestWithEndpointNetworkCall = (networkEndpoints) => { const MANIFEST_WITH_NETWORK_CALL = generateManifestWithEndpointNetworkCall([ { - id: 'frontify-user-api', + name: 'frontify-user-api', resource: 'https://api.frontify.com/api/user', options: { method: 'POST', @@ -308,7 +313,32 @@ const MANIFEST_WITH_NETWORK_CALL = generateManifestWithEndpointNetworkCall([ }, }, { - id: 'example-user-api', + name: 'example-user-api', + resource: 'https://api.example.com/api/user', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, +]); + +const MANIFEST_WITH_NETWORK_CALL_DUPLICATE_NAME = generateManifestWithEndpointNetworkCall([ + { + name: 'frontify-user-api', + resource: 'https://api.frontify.com/api/user', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, + { + name: 'frontify-user-api', resource: 'https://api.example.com/api/user', options: { method: 'POST', @@ -321,7 +351,7 @@ const MANIFEST_WITH_NETWORK_CALL = generateManifestWithEndpointNetworkCall([ ]); const MANIFEST_WITH_NOT_ARRAY_NETWORK_CALL = generateManifestWithEndpointNetworkCall({ - id: 'frontify-user-api', + name: 'frontify-user-api', resource: 'https://api.frontify.com/api/user', options: { method: 'POST', @@ -347,7 +377,7 @@ const MANIFEST_WITH_NETWORK_CALL_NO_ID = generateManifestWithEndpointNetworkCall const MANIFEST_WITH_NETWORK_CALL_NO_RESOURCE = generateManifestWithEndpointNetworkCall([ { - id: 'frontify-user-api', + name: 'frontify-user-api', options: { method: 'POST', headers: { @@ -360,7 +390,7 @@ const MANIFEST_WITH_NETWORK_CALL_NO_RESOURCE = generateManifestWithEndpointNetwo const MANIFEST_WITH_NETWORK_CALL_INCORRECT_RESOURCE = generateManifestWithEndpointNetworkCall([ { - id: 'frontify-user-api', + name: 'frontify-user-api', resource: 'something-random', options: { method: 'POST', @@ -374,7 +404,7 @@ const MANIFEST_WITH_NETWORK_CALL_INCORRECT_RESOURCE = generateManifestWithEndpoi const MANIFEST_WITH_NETWORK_CALL_NO_HEADERS_AND_BODY = generateManifestWithEndpointNetworkCall([ { - id: 'frontify-user-api', + name: 'frontify-user-api', resource: 'https://api.frontify.com/api/user', options: { method: 'GET', @@ -384,16 +414,39 @@ const MANIFEST_WITH_NETWORK_CALL_NO_HEADERS_AND_BODY = generateManifestWithEndpo const MANIFEST_WITH_NETWORK_CALL_NO_OPTIONS = generateManifestWithEndpointNetworkCall([ { - id: 'frontify-user-api', + name: 'frontify-user-api', resource: 'https://api.frontify.com/api/user', }, ]); const MANIFEST_WITH_NETWORK_CALL_NO_METHOD = generateManifestWithEndpointNetworkCall([ { - id: 'frontify-user-api', + name: 'frontify-user-api', + resource: 'https://api.frontify.com/api/user', + options: { + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, +]); + +const MANIFEST_WITH_NETWORK_CALL_WRONG_HEADER_OBJECT = generateManifestWithEndpointNetworkCall([ + { + name: 'frontify-user-api', resource: 'https://api.frontify.com/api/user', options: { + method: 'POST', + headers: 'x-frontify-auth-header', + body: 'example body data', + }, + }, + { + name: 'example-user-api', + resource: 'https://api.example.com/api/user', + options: { + method: 'POST', headers: { 'x-frontify-auth-header': '$OPEN_API', }, @@ -402,7 +455,61 @@ const MANIFEST_WITH_NETWORK_CALL_NO_METHOD = generateManifestWithEndpointNetwork }, ]); +const MANIFEST_WITH_NETWORK_CALL_WRONG_HEADER_AS_NESTED_OBJECT = generateManifestWithEndpointNetworkCall([ + { + name: 'frontify-user-api', + resource: 'https://api.frontify.com/api/user', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': { test: '$OPEN_API' }, + }, + body: 'example body data', + }, + }, + { + name: 'example-user-api', + resource: 'https://api.example.com/api/user', + options: { + method: 'POST', + headers: { + 'x-frontify-auth-header': '$OPEN_API', + }, + body: 'example body data', + }, + }, +]); + +const MANIFEST_WITH_DUPLICATE_SECRET_KEY = { + appType: 'platform-app', + appId: 'abcdabcdabcdabcdabcdabcda', + secrets: [ + { label: 'test label', key: 'DUPLICATE_KEY' }, + { label: 'another label', key: 'DUPLICATE_KEY' }, + ], + surfaces: { + mediaLibrary: { + assetAction: { + title: 'action title', + type: ['image', 'video'], + filenameExtension: ['png'], + }, + assetCreation: { + title: 'action title', + }, + }, + }, + metadata: { + version: 1, + }, +}; + describe('Verify Platform App Manifest', () => { + beforeEach(() => { + resetSecretKeySet(); + resetEndpointNameSet(); + }); + it('should validate a valid manifest', () => { const verifiedManifest = verifyManifest(VALID_MANIFEST, platformAppManifestSchemaV1); expect(!!verifiedManifest).toBe(true); @@ -503,4 +610,24 @@ describe('Verify Platform App Manifest', () => { it('should throw error when network endpoint object is not correct without method', () => { expect(() => verifyManifest(MANIFEST_WITH_NETWORK_CALL_NO_METHOD, platformAppManifestSchemaV1)).toThrow(); }); + + it('should throw error when network endpoint object has duplicate Names', () => { + expect(() => verifyManifest(MANIFEST_WITH_NETWORK_CALL_DUPLICATE_NAME, platformAppManifestSchemaV1)).toThrow(); + }); + + it('should throw error when secret object has duplicate KEYs', () => { + expect(() => verifyManifest(MANIFEST_WITH_DUPLICATE_SECRET_KEY, platformAppManifestSchemaV1)).toThrow(); + }); + + it('should throw error when header is not an object of strings key value', () => { + expect(() => + verifyManifest(MANIFEST_WITH_NETWORK_CALL_WRONG_HEADER_OBJECT, platformAppManifestSchemaV1), + ).toThrow(); + }); + + it('should throw error when header is not an object of strings key value', () => { + expect(() => + verifyManifest(MANIFEST_WITH_NETWORK_CALL_WRONG_HEADER_AS_NESTED_OBJECT, platformAppManifestSchemaV1), + ).toThrow(); + }); }); From 1dd80ad39568e96e97ab73c04feee3a949764ae9 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Thu, 18 Apr 2024 10:39:37 +0200 Subject: [PATCH 046/182] chore: add changeset (#877) * chore: add changesets * chore: remove changeset --- .changeset/pink-geckos-change.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/pink-geckos-change.md diff --git a/.changeset/pink-geckos-change.md b/.changeset/pink-geckos-change.md new file mode 100644 index 000000000..14e14bdc2 --- /dev/null +++ b/.changeset/pink-geckos-change.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat(usePageTemplateSettings): returns also templateThemeSettings From f9e134266b9c44198668a0944ebd2e10d4fdf817 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 18 Apr 2024 10:52:17 +0200 Subject: [PATCH 047/182] chore: release packages (alpha) (#878) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index dfe20c428..b1c97be5f 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -20,6 +20,7 @@ "nervous-walls-repair", "orange-jokes-listen", "pink-bugs-behave", + "pink-geckos-change", "polite-eels-shake", "pretty-items-marry", "shaggy-mugs-speak", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index c9dc834dc..f0a41afb3 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.16 + +### Patch Changes + +- [#877](https://github.com/Frontify/brand-sdk/pull/877) [`1dd80ad`](https://github.com/Frontify/brand-sdk/commit/1dd80ad39568e96e97ab73c04feee3a949764ae9) Thanks [@mike85](https://github.com/mike85)! - feat(usePageTemplateSettings): returns also templateThemeSettings + ## 3.5.9 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 6164915d5..e41ed5e5e 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.15", + "version": "4.0.0-alpha.16", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From c46694abe2ce06d78e8bd27ef832e92244116108 Mon Sep 17 00:00:00 2001 From: ragi96 Date: Fri, 19 Apr 2024 13:31:39 +0200 Subject: [PATCH 048/182] chore: add changeset --- .changeset/tricky-boats-sip.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tricky-boats-sip.md diff --git a/.changeset/tricky-boats-sip.md b/.changeset/tricky-boats-sip.md new file mode 100644 index 000000000..0d5054719 --- /dev/null +++ b/.changeset/tricky-boats-sip.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": minor +--- + +feat(AppBridgeBlock): adds `creationFormUri` to the type `template` From 65e94032ff6f0761c065421da9ac0d0eaff47b13 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 13:39:44 +0200 Subject: [PATCH 049/182] chore: release packages (alpha) (#880) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index b1c97be5f..bbb1e62f4 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -28,6 +28,7 @@ "smooth-planets-pay", "stale-hairs-wash", "strong-tools-check", + "tricky-boats-sip", "warm-hounds-refuse", "wild-bags-judge", "witty-rivers-smile" diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 06116b003..78e132cad 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.17 + +### Minor Changes + +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` + ## 4.0.0-alpha.16 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index e41ed5e5e..862be5149 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.16", + "version": "4.0.0-alpha.17", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 4fe96c8808d1b85541dd6cc5ed2711bc5a47f4eb Mon Sep 17 00:00:00 2001 From: Oliver Schwendener Date: Fri, 19 Apr 2024 16:16:11 +0200 Subject: [PATCH 050/182] chore: merge `main` into `dev` (#884) * fix(Navigation): wrap debounce in useMemo (#881) This fixes a bug that causes the debounce callback not to be called from some event listeners * chore: changeset (#882) * chore: release packages (#883) Co-authored-by: github-actions[bot] * Create nasty-feet-repair.md --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] --- .changeset/nasty-feet-repair.md | 6 ++ packages/app-bridge/CHANGELOG.md | 21 +++++-- .../src/react/useDocumentNavigation.spec.ts | 33 ++++++++-- .../src/react/useDocumentNavigation.ts | 25 ++++++-- .../src/react/usePortalNavigation.spec.ts | 62 ++++++++++--------- .../src/react/usePortalNavigation.ts | 25 +++++--- 6 files changed, 120 insertions(+), 52 deletions(-) create mode 100644 .changeset/nasty-feet-repair.md diff --git a/.changeset/nasty-feet-repair.md b/.changeset/nasty-feet-repair.md new file mode 100644 index 000000000..da4af8aed --- /dev/null +++ b/.changeset/nasty-feet-repair.md @@ -0,0 +1,6 @@ +--- +"@frontify/app-bridge": patch +--- + +fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed +fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 78e132cad..fa2b33cdb 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,16 +1,19 @@ # @frontify/app-bridge -## 4.0.0-alpha.17 +======= -### Minor Changes +## 3.6.1 -- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` +### Patch Changes -## 4.0.0-alpha.16 +- [#882](https://github.com/Frontify/brand-sdk/pull/882) [`f6897fb`](https://github.com/Frontify/brand-sdk/commit/f6897fb6b758c03053fcf88805f100c3c0b33d1e) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed + fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed + +## 4.0.0-alpha.17 -### Patch Changes +### Minor Changes -- [#877](https://github.com/Frontify/brand-sdk/pull/877) [`1dd80ad`](https://github.com/Frontify/brand-sdk/commit/1dd80ad39568e96e97ab73c04feee3a949764ae9) Thanks [@mike85](https://github.com/mike85)! - feat(usePageTemplateSettings): returns also templateThemeSettings +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` ## 3.6.0 @@ -18,6 +21,12 @@ - [#871](https://github.com/Frontify/brand-sdk/pull/871) [`cc7532a`](https://github.com/Frontify/brand-sdk/commit/cc7532ae5a3803f12997887e9f1ca9993e9f8e7c) Thanks [@ryancarville](https://github.com/ryancarville)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` +## 4.0.0-alpha.16 + +### Patch Changes + +- [#877](https://github.com/Frontify/brand-sdk/pull/877) [`1dd80ad`](https://github.com/Frontify/brand-sdk/commit/1dd80ad39568e96e97ab73c04feee3a949764ae9) Thanks [@mike85](https://github.com/mike85)! - feat(usePageTemplateSettings): returns also templateThemeSettings + ## 3.5.9 ### Patch Changes diff --git a/packages/app-bridge/src/react/useDocumentNavigation.spec.ts b/packages/app-bridge/src/react/useDocumentNavigation.spec.ts index 1ddd16481..a5ccf2bb3 100644 --- a/packages/app-bridge/src/react/useDocumentNavigation.spec.ts +++ b/packages/app-bridge/src/react/useDocumentNavigation.spec.ts @@ -9,12 +9,6 @@ import { getAppBridgeThemeStub, DocumentNavigationTreeDummy } from '../tests'; import { useDocumentNavigation } from './useDocumentNavigation'; -vi.mock('lodash-es/debounce', () => { - return { - default: (callback: () => void) => callback(), - }; -}); - describe('useDocumentNavigation', () => { const testInitialRender = async ({ expectRefetch, @@ -88,6 +82,24 @@ describe('useDocumentNavigation', () => { }); })); + it('should refetch when the "AppBridge:GuidelineDocumentCategory:DocumentPageAction" event occurs', () => + testEventHandler(() => { + window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { + action: 'add', + documentPage: { categoryId: 0, id: 0 }, + }); + })); + + it('should refetch when the "AppBridge:GuidelineDocumentCategory:MoveEvent" event occurs', () => + testEventHandler(() => { + window.emitter.emit('AppBridge:GuidelineDocumentCategory:MoveEvent', { + action: 'movePreview', + documentId: 0, + documentCategory: {}, + position: 0, + }); + })); + it('should refetch when the "AppBridge:GuidelineDocumentPage:Action" event occurs', () => testEventHandler(() => { window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { @@ -96,6 +108,15 @@ describe('useDocumentNavigation', () => { }); })); + it('should refetch when the "AppBridge:GuidelineDocumentPage:MoveEvent" event occurs', () => + testEventHandler(() => { + window.emitter.emit('AppBridge:GuidelineDocumentPage:MoveEvent', { + action: 'movePreview', + documentId: 0, + documentPage: {}, + }); + })); + it('should refetch when the "AppBridge:GuidelineDocumentPageTargets:Action" event occurs', () => testEventHandler(() => { window.emitter.emit('AppBridge:GuidelineDocumentPageTargets:Action', { diff --git a/packages/app-bridge/src/react/useDocumentNavigation.ts b/packages/app-bridge/src/react/useDocumentNavigation.ts index 4ef1844fe..ec38e0f51 100644 --- a/packages/app-bridge/src/react/useDocumentNavigation.ts +++ b/packages/app-bridge/src/react/useDocumentNavigation.ts @@ -1,7 +1,7 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ import debounce from 'lodash-es/debounce'; -import { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type GuidelineDocument, type DocumentNavigationItem } from '../types/Guideline'; @@ -34,21 +34,38 @@ export const useDocumentNavigation = ( } }, [options.enabled, refetch]); - useEffect(() => { - const debouncedRefetch = () => debounce(refetch, 100); + const debouncedRefetch = useMemo( + () => + debounce(() => { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + refetch(); + }, 100), + [refetch], + ); + useEffect(() => { window.emitter.on('AppBridge:GuidelineDocumentCategory:Action', debouncedRefetch); + window.emitter.on('AppBridge:GuidelineDocumentCategory:DocumentPageAction', debouncedRefetch); + window.emitter.on('AppBridge:GuidelineDocumentCategory:MoveEvent', debouncedRefetch); + window.emitter.on('AppBridge:GuidelineDocumentPage:Action', debouncedRefetch); + window.emitter.on('AppBridge:GuidelineDocumentPage:MoveEvent', debouncedRefetch); window.emitter.on('AppBridge:GuidelineDocumentPageTargets:Action', debouncedRefetch); + window.emitter.on('AppBridge:GuidelineDocumentSection:Action', debouncedRefetch); return () => { window.emitter.off('AppBridge:GuidelineDocumentCategory:Action', debouncedRefetch); + window.emitter.off('AppBridge:GuidelineDocumentCategory:DocumentPageAction', debouncedRefetch); + window.emitter.off('AppBridge:GuidelineDocumentCategory:MoveEvent', debouncedRefetch); + window.emitter.off('AppBridge:GuidelineDocumentPage:Action', debouncedRefetch); + window.emitter.off('AppBridge:GuidelineDocumentPage:MoveEvent', debouncedRefetch); window.emitter.off('AppBridge:GuidelineDocumentPageTargets:Action', debouncedRefetch); + window.emitter.off('AppBridge:GuidelineDocumentSection:Action', debouncedRefetch); }; - }, [navigationItems, refetch]); + }, [navigationItems, debouncedRefetch]); return { navigationItems, refetch, isLoading }; }; diff --git a/packages/app-bridge/src/react/usePortalNavigation.spec.ts b/packages/app-bridge/src/react/usePortalNavigation.spec.ts index 4d15d53b8..97f526073 100644 --- a/packages/app-bridge/src/react/usePortalNavigation.spec.ts +++ b/packages/app-bridge/src/react/usePortalNavigation.spec.ts @@ -22,6 +22,7 @@ describe('usePortalNavigation', () => { expect(spy).toHaveBeenCalledOnce(); expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); + await waitFor(() => { expect(result.current.isLoading).toBe(false); expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); @@ -31,18 +32,19 @@ describe('usePortalNavigation', () => { const updatedNavigationTree = [...DEFAULT_NAVIGATION_TREE]; updatedNavigationTree.splice(coverPageIndex, 1); + spy.mockResolvedValueOnce(updatedNavigationTree); + // Trigger a "cover page deleted" event window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { action: 'delete' }); await waitFor(() => { + expect(spy).toHaveBeenCalledTimes(2); + expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); expect(result.current.navigationItems).toEqual(updatedNavigationTree); }); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); }); - it('should return the preview and refetch when a documet group is deleted', async () => { + it('should return the preview and refetch when a document group is deleted', async () => { const appBridge = getAppBridgeThemeStub(); const spy = vi.spyOn(appBridge, 'api'); @@ -52,6 +54,7 @@ describe('usePortalNavigation', () => { expect(spy).toHaveBeenCalledOnce(); expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); + await waitFor(() => { expect(result.current.isLoading).toBe(false); expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); @@ -61,6 +64,8 @@ describe('usePortalNavigation', () => { const updatedNavigationTree = [...DEFAULT_NAVIGATION_TREE]; updatedNavigationTree.splice(groupIndex, 1); + spy.mockResolvedValueOnce(updatedNavigationTree); + // Trigger a "document group deleted" event window.emitter.emit('AppBridge:GuidelineDocumentGroup:Action', { documentGroup: { id: 200 }, @@ -68,23 +73,20 @@ describe('usePortalNavigation', () => { }); await waitFor(() => { + expect(spy).toHaveBeenCalledTimes(2); + expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); expect(result.current.navigationItems).toEqual(updatedNavigationTree); }); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); }); - it('should return the previous tree and refetch when an incorrect documet group id is deleted', async () => { + it('should return the previous tree and refetch when an incorrect document group id is deleted', async () => { const appBridge = getAppBridgeThemeStub(); const spy = vi.spyOn(appBridge, 'api'); - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); + spy.mockResolvedValue(DEFAULT_NAVIGATION_TREE); const { result } = renderHook(() => usePortalNavigation(appBridge)); - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); await waitFor(() => { expect(result.current.isLoading).toBe(false); expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); @@ -97,14 +99,13 @@ describe('usePortalNavigation', () => { }); await waitFor(() => { + expect(spy).toHaveBeenCalledTimes(2); expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); + expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); }); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); }); - it('should return the preview and refetch when a documet at root level is deleted', async () => { + it('should return the preview and refetch when a document at root level is deleted', async () => { const appBridge = getAppBridgeThemeStub(); const spy = vi.spyOn(appBridge, 'api'); @@ -114,6 +115,7 @@ describe('usePortalNavigation', () => { expect(spy).toHaveBeenCalledOnce(); expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); + await waitFor(() => { expect(result.current.isLoading).toBe(false); expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); @@ -123,6 +125,8 @@ describe('usePortalNavigation', () => { const updatedNavigationTree = [...DEFAULT_NAVIGATION_TREE]; updatedNavigationTree.splice(documentIndex, 1); + spy.mockResolvedValueOnce(updatedNavigationTree); + // Trigger a "document deleted" event window.emitter.emit('AppBridge:GuidelineDocument:Action', { document: { id: 101 }, @@ -130,23 +134,23 @@ describe('usePortalNavigation', () => { }); await waitFor(() => { + expect(spy).toHaveBeenCalledTimes(2); + expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); expect(result.current.navigationItems).toEqual(updatedNavigationTree); }); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); }); - it('should return the same tree and refetch when a documet within a group is deleted', async () => { + it('should return the same tree and refetch when a document within a group is deleted', async () => { const appBridge = getAppBridgeThemeStub(); const spy = vi.spyOn(appBridge, 'api'); - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); + spy.mockResolvedValue(DEFAULT_NAVIGATION_TREE); const { result } = renderHook(() => usePortalNavigation(appBridge)); expect(spy).toHaveBeenCalledOnce(); expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); + await waitFor(() => { expect(result.current.isLoading).toBe(false); expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); @@ -159,11 +163,10 @@ describe('usePortalNavigation', () => { }); await waitFor(() => { + expect(spy).toHaveBeenCalledTimes(2); + expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); }); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); }); it('should fetch the navigation tree on mount', async () => { @@ -188,28 +191,26 @@ describe('usePortalNavigation', () => { const appBridge = getAppBridgeThemeStub(); const spy = vi.spyOn(appBridge, 'api'); - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); + spy.mockResolvedValue(DEFAULT_NAVIGATION_TREE); const { result } = renderHook(() => usePortalNavigation(appBridge)); expect(spy).toHaveBeenCalledOnce(); expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); + await waitFor(() => { expect(result.current.isLoading).toBe(false); }); // Trigger a "document targets changed" event window.emitter.emit('AppBridge:GuidelineDocumentTargets:Action', { - payload: { - targets: [], - documentIds: [], - }, + payload: { targets: [], documentIds: [] }, action: 'update', }); await waitFor(() => { - expect(result.current.isLoading).toBe(false); expect(spy).toHaveBeenCalledTimes(2); + expect(result.current.isLoading).toBe(false); }); }); @@ -223,6 +224,7 @@ describe('usePortalNavigation', () => { expect(spy).toHaveBeenCalledOnce(); expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); + await waitFor(() => { expect(result.current.isLoading).toBe(false); }); @@ -233,6 +235,8 @@ describe('usePortalNavigation', () => { const movedGroup = updatedNavigationTree.splice(groupIndex, 1); updatedNavigationTree.splice(NEW_POSITION, 0, ...movedGroup); + spy.mockResolvedValueOnce(updatedNavigationTree); + // Trigger a "document group is moved" event window.emitter.emit('AppBridge:GuidelineDocumentGroup:MoveEvent', { action: 'movePreview', diff --git a/packages/app-bridge/src/react/usePortalNavigation.ts b/packages/app-bridge/src/react/usePortalNavigation.ts index db54a8033..dc4140b55 100644 --- a/packages/app-bridge/src/react/usePortalNavigation.ts +++ b/packages/app-bridge/src/react/usePortalNavigation.ts @@ -2,7 +2,7 @@ import { produce } from 'immer'; import debounce from 'lodash-es/debounce'; -import { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type EmitterEvents } from '../types/Emitter'; @@ -25,8 +25,18 @@ export const usePortalNavigation = (appBridge: AppBridgeTheme, options: Options setIsLoading(false); }, [appBridge]); + const debouncedRefetch = useMemo( + () => + debounce(() => { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + refetch(); + }, 100), + [refetch], + ); + useEffect(() => { if (options.enabled) { + // eslint-disable-next-line @typescript-eslint/no-floating-promises refetch(); } }, [options.enabled, refetch]); @@ -41,7 +51,7 @@ export const usePortalNavigation = (appBridge: AppBridgeTheme, options: Options ); } - debounce(refetch, 100); + debouncedRefetch(); }; const handleDocumentGroupAction = (event: EmitterEvents['AppBridge:GuidelineDocumentGroup:Action']) => { @@ -53,7 +63,7 @@ export const usePortalNavigation = (appBridge: AppBridgeTheme, options: Options ); } - debounce(refetch, 100); + debouncedRefetch(); }; const handleDocumentAction = (event: EmitterEvents['AppBridge:GuidelineDocument:Action']) => { @@ -68,7 +78,7 @@ export const usePortalNavigation = (appBridge: AppBridgeTheme, options: Options ); } - debounce(refetch, 100); + debouncedRefetch(); }; const handleDocumentGroupMoveEventPreview = ( @@ -100,7 +110,7 @@ export const usePortalNavigation = (appBridge: AppBridgeTheme, options: Options window.emitter.on('AppBridge:GuidelineDocument:Action', handleDocumentAction); window.emitter.on('AppBridge:GuidelineDocument:MoveEvent', handleDocumentMoveEventPreview); - window.emitter.on('AppBridge:GuidelineDocumentTargets:Action', refetch); + window.emitter.on('AppBridge:GuidelineDocumentTargets:Action', debouncedRefetch); return () => { window.emitter.off('AppBridge:GuidelineCoverPage:Action', handleCoverPageAction); @@ -110,9 +120,9 @@ export const usePortalNavigation = (appBridge: AppBridgeTheme, options: Options window.emitter.off('AppBridge:GuidelineDocument:Action', handleDocumentAction); window.emitter.off('AppBridge:GuidelineDocument:MoveEvent', handleDocumentMoveEventPreview); - window.emitter.off('AppBridge:GuidelineDocumentTargets:Action', refetch); + window.emitter.off('AppBridge:GuidelineDocumentTargets:Action', debouncedRefetch); }; - }, [navigationItems, refetch]); + }, [navigationItems, debouncedRefetch]); return { navigationItems, refetch, isLoading }; }; @@ -121,6 +131,7 @@ const deleteItem = (draft: PortalNavigationItem[], type: PortalNavigationItem['t const itemDraftIndex = draft.findIndex((item) => !itemId ? item.type === type : item.type === type && item.id() === itemId, ); + if (itemDraftIndex !== -1) { draft.splice(itemDraftIndex, 1); } From 488112891a215d6970691c20fd846e9552b0a0ad Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 16:24:05 +0200 Subject: [PATCH 051/182] chore: release packages (alpha) (#885) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 9 ++++++++- packages/app-bridge/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index bbb1e62f4..85bafbae3 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -16,6 +16,7 @@ "kind-fishes-flash", "light-crews-report", "lovely-books-hear", + "nasty-feet-repair", "neat-plants-smile", "nervous-walls-repair", "orange-jokes-listen", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index fa2b33cdb..411dba67b 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/app-bridge +## 4.0.0-alpha.18 + +### Patch Changes + +- [#884](https://github.com/Frontify/brand-sdk/pull/884) [`4fe96c8`](https://github.com/Frontify/brand-sdk/commit/4fe96c8808d1b85541dd6cc5ed2711bc5a47f4eb) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed + fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed + ======= ## 3.6.1 @@ -8,7 +15,7 @@ - [#882](https://github.com/Frontify/brand-sdk/pull/882) [`f6897fb`](https://github.com/Frontify/brand-sdk/commit/f6897fb6b758c03053fcf88805f100c3c0b33d1e) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed - + ## 4.0.0-alpha.17 ### Minor Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 862be5149..1e153a6d0 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.17", + "version": "4.0.0-alpha.18", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From b31a73d1756f01374682552a3013173f3c8f5384 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Fri, 26 Apr 2024 09:21:02 +0200 Subject: [PATCH 052/182] feat: add user state variable (#895) * chore: add userState variable and move settings to state * chore: adjust test * Create lucky-taxis-kneel.md --- .changeset/lucky-taxis-kneel.md | 5 +++++ .../src/AppBridgePlatformApp.spec.ts | 2 +- .../app-bridge/src/AppBridgePlatformApp.ts | 22 +++++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 .changeset/lucky-taxis-kneel.md diff --git a/.changeset/lucky-taxis-kneel.md b/.changeset/lucky-taxis-kneel.md new file mode 100644 index 000000000..79b38c09d --- /dev/null +++ b/.changeset/lucky-taxis-kneel.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: add user state variable diff --git a/packages/app-bridge/src/AppBridgePlatformApp.spec.ts b/packages/app-bridge/src/AppBridgePlatformApp.spec.ts index de6e5cda4..92627b04b 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.spec.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.spec.ts @@ -60,7 +60,7 @@ describe('AppBridgePlatformApp', () => { it('should return empty state when not inititalized', async () => { const platformApp = new AppBridgePlatformApp(); const state = platformApp.state().get(); - expect(state).toEqual({ settings: {} }); + expect(state).toEqual({ settings: {}, userState: {} }); }); it('should return state after app is initialized', async () => { diff --git a/packages/app-bridge/src/AppBridgePlatformApp.ts b/packages/app-bridge/src/AppBridgePlatformApp.ts index 4b66c9b3a..ad8cca0f1 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.ts @@ -36,6 +36,7 @@ export type PlatformAppCommand = CommandNameValidator; + userState: Record; }; type InitializeEvent = { @@ -49,7 +50,6 @@ type AppBaseProps = { token: string; marketplaceServiceAppId: string; connected: boolean; - settings: { [key: string]: string }; brandId: number; domain: string; parentId: string; @@ -76,12 +76,13 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { private stateMessageBus: IMessageBus = new ErrorMessageBus(); private initialized: boolean = false; private localContext?: PlatformAppContext; - private localState: PlatformAppState = { settings: {} }; + private localState: PlatformAppState = { settings: {}, userState: {} }; private maxRetries: number = 5; private readonly subscribeMap: SubscribeMap = { 'State.*': new Map(), 'State.settings': new Map(), + 'State.userState': new Map(), 'Context.*': new Map(), 'Context.marketplaceServiceAppId': new Map(), 'Context.token': new Map(), @@ -91,7 +92,6 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { 'Context.domain': new Map(), 'Context.surface': new Map(), 'Context.connected': new Map(), - 'Context.settings': new Map(), }; api( @@ -176,10 +176,17 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { }; } - private async setInternalState(state: Promise): Promise { + private async setInternalState( + state: Promise, + key?: keyof PlatformAppState | void, + ): Promise { const prevState = this.localState; this.localState = await state; - this.callSubscribedTopic('State.*', [this.localState, prevState]); + if (key) { + this.callSubscribedTopic(`State.${key}`, [this.localState, prevState]); + } else { + this.callSubscribedTopic('State.*', [this.localState, prevState]); + } } state(): StateReturn; @@ -204,9 +211,10 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { get: () => this.localState[key], set: (nextState: PlatformAppState[Key]) => { const newState = this.stateMessageBus.post({ - parameter: { nextState }, + parameter: { key, nextState }, }) as Promise; - this.setInternalState(newState); + + this.setInternalState(newState, key); }, subscribe: (callback: (nextState: PlatformAppState[Key], previousState: PlatformAppState[Key]) => void) => { return this.subscribe(`State.${key}`, callback); From f67f7f01fb643122d2d721f49936f6d65cfc60f8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Apr 2024 09:56:43 +0200 Subject: [PATCH 053/182] chore: release packages (alpha) (#896) Co-authored-by: julianiff --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 85bafbae3..160026511 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -16,6 +16,7 @@ "kind-fishes-flash", "light-crews-report", "lovely-books-hear", + "lucky-taxis-kneel", "nasty-feet-repair", "neat-plants-smile", "nervous-walls-repair", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 411dba67b..5cbc558c0 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.19 + +### Patch Changes + +- [#895](https://github.com/Frontify/brand-sdk/pull/895) [`b31a73d`](https://github.com/Frontify/brand-sdk/commit/b31a73d1756f01374682552a3013173f3c8f5384) Thanks [@julianiff](https://github.com/julianiff)! - feat: add user state variable + ## 4.0.0-alpha.18 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 1e153a6d0..7724191a1 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.18", + "version": "4.0.0-alpha.19", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 9294b164ad2b3fc502004e3d8d86ee29737ac822 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Tue, 30 Apr 2024 16:31:56 +0200 Subject: [PATCH 054/182] feat: only one app bridge per iframe (#900) * feat/only-have-one-appBridge-active * Create calm-candles-wink.md * Update .changeset/calm-candles-wink.md Co-authored-by: Sam Creasey * chore: combine things on the window * chore: fix tests * chore: remove hook test * chore: fix tsc * chore: fix test * core: cleanup * chore: lint * chore: spec --------- Co-authored-by: Sam Creasey --- .changeset/calm-candles-wink.md | 5 +++++ packages/app-bridge/src/AppBridgePlatformApp.spec.ts | 8 ++++---- packages/app-bridge/src/AppBridgePlatformApp.ts | 8 ++++++++ .../app-bridge/src/react/usePlatformAppBridge.spec.ts | 11 ++--------- packages/app-bridge/src/window.d.ts | 2 ++ 5 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 .changeset/calm-candles-wink.md diff --git a/.changeset/calm-candles-wink.md b/.changeset/calm-candles-wink.md new file mode 100644 index 000000000..b22258754 --- /dev/null +++ b/.changeset/calm-candles-wink.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat(AppBridgePlatformApp): only one app bridge per iframe diff --git a/packages/app-bridge/src/AppBridgePlatformApp.spec.ts b/packages/app-bridge/src/AppBridgePlatformApp.spec.ts index 92627b04b..c9d53db85 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.spec.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.spec.ts @@ -15,7 +15,7 @@ describe('AppBridgePlatformApp', () => { statePort: { onmessage: vi.fn() }, apiPort: { onmessage: vi.fn() }, context: { parentId: 'parentId-test', connected: true }, - state: { settings: 'settings-test' }, + state: { settings: 'settings-test', userState: 'state-test' }, }), })); @@ -50,17 +50,17 @@ describe('AppBridgePlatformApp', () => { platformApp.dispatch(openConnection()); }); - it.fails('should throw an error when api is not initialized', async () => { + it.skip('should throw an error when api is not initialized', async () => { window.location.search = `?token=${TOKEN}`; const platformApp = new AppBridgePlatformApp(); - await expect(() => platformApp.api({ name: 'getCurrentUser' })).rejects.toThrow(); + expect(() => platformApp.api({ name: 'getCurrentUser' })).throw(); }); it('should return empty state when not inititalized', async () => { const platformApp = new AppBridgePlatformApp(); const state = platformApp.state().get(); - expect(state).toEqual({ settings: {}, userState: {} }); + expect(state).toEqual({ settings: 'settings-test', userState: 'state-test' }); }); it('should return state after app is initialized', async () => { diff --git a/packages/app-bridge/src/AppBridgePlatformApp.ts b/packages/app-bridge/src/AppBridgePlatformApp.ts index ad8cca0f1..053a10cc8 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.ts @@ -94,6 +94,14 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { 'Context.connected': new Map(), }; + constructor() { + if (window.appBridgePlatformApp) { + return window.appBridgePlatformApp; + } + + window.appBridgePlatformApp = this; + } + api( apiHandler: ApiHandlerParameter, ): ApiReturn { diff --git a/packages/app-bridge/src/react/usePlatformAppBridge.spec.ts b/packages/app-bridge/src/react/usePlatformAppBridge.spec.ts index 31a75d250..5899eb14b 100644 --- a/packages/app-bridge/src/react/usePlatformAppBridge.spec.ts +++ b/packages/app-bridge/src/react/usePlatformAppBridge.spec.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { renderHook, waitFor } from '@testing-library/react'; +import { renderHook } from '@testing-library/react'; import { afterEach, describe, expect, it, vi } from 'vitest'; import { usePlatformAppBridge } from './usePlatformAppBridge'; @@ -14,7 +14,7 @@ describe('usePlatformAppBridge', () => { statePort: { onmessage: vi.fn() }, apiPort: { onmessage: vi.fn() }, context: { parentId: 'parentId-test', connected: true }, - state: { settings: 'settings-test' }, + state: { settings: 'settings-test', userState: 'test' }, }), })); @@ -30,11 +30,4 @@ describe('usePlatformAppBridge', () => { const { result } = renderHook(() => usePlatformAppBridge()); expect(result.current).toBeUndefined(); }); - - it('should return platformApp after initiation and waiting', async () => { - const { result } = renderHook(() => usePlatformAppBridge()); - await waitFor(() => { - expect(result.current).toBeDefined(); - }); - }); }); diff --git a/packages/app-bridge/src/window.d.ts b/packages/app-bridge/src/window.d.ts index 4e208e836..4337ebad6 100644 --- a/packages/app-bridge/src/window.d.ts +++ b/packages/app-bridge/src/window.d.ts @@ -2,9 +2,11 @@ import type { Emitter } from 'mitt'; import type { EmitterEvents, TerrificComponent, TerrificEvent } from './types'; +import { AppBridgePlatformApp } from './AppBridgePlatformApp.ts'; declare global { interface Window { + appBridgePlatformApp: AppBridgePlatformApp; APPLICATION_CONFIG: { version: string; bugsnagKey: string | null; From 2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94 Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Wed, 1 May 2024 13:32:23 +0200 Subject: [PATCH 055/182] chore: merge `main` into `dev` --- .changeset/five-mangos-search.md | 5 + .changeset/shy-moons-taste.md | 5 + .pnpmfile.cjs | 34 - package.json | 2 +- packages/app-bridge/CHANGELOG.md | 6 +- packages/app-bridge/package.json | 2 +- packages/app-bridge/src/AppBridgeTheme.ts | 1 + packages/cli/CHANGELOG.md | 12 + packages/cli/package.json | 4 +- .../platform-app-css-modules/package.json | 3 +- .../templates/platform-app-css/package.json | 3 +- .../platform-app-tailwind/package.json | 3 +- .../guideline-blocks-settings/CHANGELOG.md | 24 + .../guideline-blocks-settings/package.json | 6 +- .../BlockItemWrapper/BlockItemWrapper.tsx | 112 +- packages/platform-app/CHANGELOG.md | 16 + packages/platform-app/package.json | 4 +- packages/sidebar-settings/CHANGELOG.md | 12 + packages/sidebar-settings/package.json | 6 +- pnpm-lock.yaml | 4578 +++++++++++++++-- 20 files changed, 4294 insertions(+), 544 deletions(-) create mode 100644 .changeset/five-mangos-search.md create mode 100644 .changeset/shy-moons-taste.md delete mode 100644 .pnpmfile.cjs diff --git a/.changeset/five-mangos-search.md b/.changeset/five-mangos-search.md new file mode 100644 index 000000000..72a2a5743 --- /dev/null +++ b/.changeset/five-mangos-search.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: merge `main` into `dev` diff --git a/.changeset/shy-moons-taste.md b/.changeset/shy-moons-taste.md new file mode 100644 index 000000000..a36962193 --- /dev/null +++ b/.changeset/shy-moons-taste.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat(AppBridgeTheme): add isSearchDialogOpen to context diff --git a/.pnpmfile.cjs b/.pnpmfile.cjs deleted file mode 100644 index 9117654c1..000000000 --- a/.pnpmfile.cjs +++ /dev/null @@ -1,34 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -function readPackage(pkg) { - //INFO: temporary until we add those peerDependencies in fondue package.json - // and update the xstate package in fondue - if (pkg.name === "@frontify/fondue-tokens") { - pkg.dependencies = { - ...pkg.dependencies, - postcss: "^8.4.16", - }; - } - - if (pkg.name === "@frontify/fondue") { - pkg.dependencies = { - ...pkg.dependencies, - scheduler: ">=0.19.0", - }; - } - - if (pkg.name === "@xstate/immer") { - pkg.dependencies = { - ...pkg.dependencies, - xstate: "^4.29.0", - }; - } - - return pkg; -} - -module.exports = { - hooks: { - readPackage, - }, -}; diff --git a/package.json b/package.json index 7e68f0262..9585db861 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.1", "@cypress/vite-dev-server": "^5.0.7", - "@frontify/fondue": "12.0.0-beta.427", + "@frontify/fondue": "^12.0.7", "@vitejs/plugin-react": "^4.2.1", "cypress": "^13.7.2", "cypress-real-events": "^1.12.0", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 5cbc558c0..0872e93fc 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -13,7 +13,11 @@ - [#884](https://github.com/Frontify/brand-sdk/pull/884) [`4fe96c8`](https://github.com/Frontify/brand-sdk/commit/4fe96c8808d1b85541dd6cc5ed2711bc5a47f4eb) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed -======= +## 3.6.2 + +### Patch Changes + +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` ## 3.6.1 diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 7724191a1..9e7577a71 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -74,7 +74,7 @@ "sinon": "^17.0.1", "ts-json-as-const": "^1.0.7", "typescript": "^5.4.4", - "vite": "^5.2.8", + "vite": "^5.2.10", "vite-plugin-dts": "^3.8.1", "vite-plugin-static-copy": "^1.0.2", "vitest": "^1.4.0" diff --git a/packages/app-bridge/src/AppBridgeTheme.ts b/packages/app-bridge/src/AppBridgeTheme.ts index 52aa44b65..d6470c659 100644 --- a/packages/app-bridge/src/AppBridgeTheme.ts +++ b/packages/app-bridge/src/AppBridgeTheme.ts @@ -91,6 +91,7 @@ export type ThemeContext = { isEditing: boolean; isPublicLink: boolean; isAuthenticated: boolean; + isSearchDialogOpen: boolean; languages: Language[]; template: TemplateContext | null; }; diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 16e078d3e..2947d5676 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,17 @@ # @frontify/frontify-cli +## 5.6.16 + +### Patch Changes + +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` + +## 5.6.15 + +### Patch Changes + +- [#890](https://github.com/Frontify/brand-sdk/pull/890) [`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.7` + ## 5.6.14 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 1371e0f2a..1e9eeca54 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "type": "module", - "version": "5.6.14", + "version": "5.6.16", "author": "Frontify Developers ", "repository": { "type": "git", @@ -43,7 +43,7 @@ "open": "^10.1.0", "picocolors": "^1.0.0", "prompts": "^2.4.2", - "vite": "^4.5.3", + "vite": "^5.2.10", "vite-plugin-externals": "^0.6.2", "zod": "^3.22.4" }, diff --git a/packages/cli/templates/platform-app-css-modules/package.json b/packages/cli/templates/platform-app-css-modules/package.json index 766b30a10..789d82b10 100644 --- a/packages/cli/templates/platform-app-css-modules/package.json +++ b/packages/cli/templates/platform-app-css-modules/package.json @@ -12,8 +12,7 @@ }, "dependencies": { "@frontify/app-bridge": "4.0.0-alpha.14", - "@frontify/fondue": "12.0.0-beta.427", - "@frontify/fondue-tokens": "^3.4.0", + "@frontify/fondue": "^12.0.7", "@frontify/platform-app": "^0.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/packages/cli/templates/platform-app-css/package.json b/packages/cli/templates/platform-app-css/package.json index c6cc64cbd..a3a91d042 100644 --- a/packages/cli/templates/platform-app-css/package.json +++ b/packages/cli/templates/platform-app-css/package.json @@ -12,8 +12,7 @@ }, "dependencies": { "@frontify/app-bridge": "4.0.0-alpha.14", - "@frontify/fondue": "12.0.0-beta.427", - "@frontify/fondue-tokens": "^3.4.0", + "@frontify/fondue": "^12.0.7", "@frontify/platform-app": "^0.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/packages/cli/templates/platform-app-tailwind/package.json b/packages/cli/templates/platform-app-tailwind/package.json index c1951bf09..78f229922 100644 --- a/packages/cli/templates/platform-app-tailwind/package.json +++ b/packages/cli/templates/platform-app-tailwind/package.json @@ -12,8 +12,7 @@ }, "dependencies": { "@frontify/app-bridge": "4.0.0-alpha.14", - "@frontify/fondue": "12.0.0-beta.427", - "@frontify/fondue-tokens": "^3.4.0", + "@frontify/fondue": "^12.0.7", "@frontify/platform-app": "^0.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/packages/guideline-blocks-settings/CHANGELOG.md b/packages/guideline-blocks-settings/CHANGELOG.md index 2c60539e3..239350140 100644 --- a/packages/guideline-blocks-settings/CHANGELOG.md +++ b/packages/guideline-blocks-settings/CHANGELOG.md @@ -1,5 +1,29 @@ # @frontify/guideline-blocks-settings +## 0.34.14 + +### Patch Changes + +- [#901](https://github.com/Frontify/brand-sdk/pull/901) [`2bfb9f6`](https://github.com/Frontify/brand-sdk/commit/2bfb9f6f8028df00e571f87b4be288b579bf53ad) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(BlockItemWrapper): memoize BlockItemWrapper component + +## 0.34.13 + +### Patch Changes + +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` + +- Updated dependencies [[`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d)]: + - @frontify/sidebar-settings@0.9.15 + +## 0.34.12 + +### Patch Changes + +- [#890](https://github.com/Frontify/brand-sdk/pull/890) [`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.7` + +- Updated dependencies [[`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc)]: + - @frontify/sidebar-settings@0.9.14 + ## 0.34.11 ### Patch Changes diff --git a/packages/guideline-blocks-settings/package.json b/packages/guideline-blocks-settings/package.json index b9c93ca38..406e9769f 100644 --- a/packages/guideline-blocks-settings/package.json +++ b/packages/guideline-blocks-settings/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-blocks-settings", "type": "module", - "version": "0.34.11", + "version": "0.34.14", "description": "Provides types and helpers for the guideline block development", "author": "Frontify Developers ", "repository": { @@ -47,7 +47,7 @@ "@dnd-kit/core": "^6.1.0", "@dnd-kit/modifiers": "^7.0.0", "@dnd-kit/sortable": "^8.0.0", - "@frontify/fondue": "12.0.0-beta.427", + "@frontify/fondue": "^12.0.7", "@frontify/sidebar-settings": "workspace:^", "@react-aria/focus": "^3.16.2", "@react-stately/overlays": "^3.6.5" @@ -80,7 +80,7 @@ "sinon": "17.0.1", "tailwindcss": "^3.4.3", "typescript": "^5.4.4", - "vite": "^5.2.8", + "vite": "^5.2.10", "vite-plugin-dts": "^3.8.1", "vite-plugin-externals": "^0.6.2", "vitest": "^1.4.0" diff --git a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx index 14729a753..c79c7a243 100644 --- a/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx +++ b/packages/guideline-blocks-settings/src/components/BlockItemWrapper/BlockItemWrapper.tsx @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type ReactElement, useRef, useState } from 'react'; +import { type ReactElement, memo, useRef, useState } from 'react'; import { joinClassNames } from '../../utilities'; @@ -9,68 +9,72 @@ import { DragPreviewContextProvider } from './Toolbar/context/DragPreviewContext import { MultiFlyoutContextProvider } from './Toolbar/context/MultiFlyoutContext'; import { type BlockItemWrapperProps } from './types'; -export const BlockItemWrapper = ({ - children, - toolbarItems, - shouldHideWrapper, - shouldHideComponent = false, - isDragging = false, - shouldFillContainer, - outlineOffset = 2, - shouldBeShown = false, - showAttachments = false, -}: BlockItemWrapperProps): ReactElement => { - const [openFlyoutIds, setOpenFlyoutIds] = useState(shouldBeShown ? [DEFAULT_MENU_BUTTON_ID] : []); - const wrapperRef = useRef(null); +export const BlockItemWrapper = memo( + ({ + children, + toolbarItems, + shouldHideWrapper, + shouldHideComponent = false, + isDragging = false, + shouldFillContainer, + outlineOffset = 2, + shouldBeShown = false, + showAttachments = false, + }: BlockItemWrapperProps): ReactElement => { + const [openFlyoutIds, setOpenFlyoutIds] = useState(shouldBeShown ? [DEFAULT_MENU_BUTTON_ID] : []); + const wrapperRef = useRef(null); - if (shouldHideWrapper) { - // eslint-disable-next-line react/jsx-no-useless-fragment - return <>{children}; - } + if (shouldHideWrapper) { + // eslint-disable-next-line react/jsx-no-useless-fragment + return <>{children}; + } - const items = toolbarItems?.filter((item): item is ToolbarItem => item !== undefined); + const items = toolbarItems?.filter((item): item is ToolbarItem => item !== undefined); - const shouldToolbarBeVisible = openFlyoutIds.length > 0 || shouldBeShown; + const shouldToolbarBeVisible = openFlyoutIds.length > 0 || shouldBeShown; - return ( - - -
+ return ( + +
- + className={joinClassNames([ + 'tw-pointer-events-none tw-absolute tw-bottom-[calc(100%-4px)] tw-right-[-3px] tw-w-full tw-opacity-0 tw-z-[60]', + 'group-hover:tw-opacity-100 group-focus:tw-opacity-100 focus-within:tw-opacity-100', + 'tw-flex tw-justify-end', + shouldToolbarBeVisible && 'tw-opacity-100', + ])} + > + +
+ {children}
- {children} - -
-
- ); -}; + + + ); + }, +); + +BlockItemWrapper.displayName = 'BlockItemWrapper'; diff --git a/packages/platform-app/CHANGELOG.md b/packages/platform-app/CHANGELOG.md index 47a084a85..c6e459abc 100644 --- a/packages/platform-app/CHANGELOG.md +++ b/packages/platform-app/CHANGELOG.md @@ -1,5 +1,21 @@ # @frontify/platform-app +## 0.1.3 + +### Patch Changes + +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` + +- Updated dependencies [[`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d)]: + - @frontify/sidebar-settings@0.9.15 + +## 0.1.2 + +### Patch Changes + +- Updated dependencies [[`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc)]: + - @frontify/sidebar-settings@0.9.14 + ## 0.1.1 ### Patch Changes diff --git a/packages/platform-app/package.json b/packages/platform-app/package.json index ec6b17b5f..227592797 100644 --- a/packages/platform-app/package.json +++ b/packages/platform-app/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/platform-app", "type": "module", - "version": "0.1.1", + "version": "0.1.3", "description": "Provides the types for the Apps", "author": "Frontify Developers ", "repository": { @@ -46,7 +46,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "typescript": "^5.4.4", - "vite": "^5.2.8", + "vite": "^5.2.10", "vite-plugin-dts": "^3.8.1", "vitest": "^1.4.0" } diff --git a/packages/sidebar-settings/CHANGELOG.md b/packages/sidebar-settings/CHANGELOG.md index 9bd6a375f..8d799cae6 100644 --- a/packages/sidebar-settings/CHANGELOG.md +++ b/packages/sidebar-settings/CHANGELOG.md @@ -1,5 +1,17 @@ # @frontify/sidebar-settings +## 0.9.15 + +### Patch Changes + +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` + +## 0.9.14 + +### Patch Changes + +- [#890](https://github.com/Frontify/brand-sdk/pull/890) [`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.7` + ## 0.9.13 ### Patch Changes diff --git a/packages/sidebar-settings/package.json b/packages/sidebar-settings/package.json index bf69b3e11..74944ef60 100644 --- a/packages/sidebar-settings/package.json +++ b/packages/sidebar-settings/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/sidebar-settings", "type": "module", - "version": "0.9.13", + "version": "0.9.15", "description": "Provides types and helpers for the settings sidebar", "author": "Frontify Developers ", "repository": { @@ -33,7 +33,7 @@ "react-dom": "^18" }, "dependencies": { - "@frontify/fondue": "12.0.0-beta.427" + "@frontify/fondue": "^12.0.7" }, "devDependencies": { "@babel/core": "^7.24.4", @@ -46,7 +46,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "typescript": "^5.4.4", - "vite": "^5.2.8", + "vite": "^5.2.10", "vite-plugin-dts": "^3.8.1", "vitest": "^1.4.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bf1e06d64..abe3e3caf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: ^5.0.7 version: 5.0.7 '@frontify/fondue': - specifier: 12.0.0-beta.427 - version: 12.0.0-beta.427(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.3)(ts-node@10.9.2)(zustand@4.5.2) + specifier: ^12.0.7 + version: 12.0.8(@react-spring/web@9.7.3)(@react-three/fiber@8.16.2)(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2)(konva@9.3.6)(react-dom@18.2.0)(react-konva@18.2.10)(react-native@0.74.0)(react-zdog@1.2.2)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.3)(three@0.163.0)(zdog@1.1.3)(zustand@4.5.2) '@vitejs/plugin-react': specifier: ^4.2.1 version: 4.2.1(vite@4.5.3) @@ -129,14 +129,14 @@ importers: specifier: ^5.4.4 version: 5.4.4 vite: - specifier: ^5.2.8 - version: 5.2.8(@types/node@18.19.31) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31) vite-plugin-dts: specifier: ^3.8.1 - version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.8) + version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10) vite-plugin-static-copy: specifier: ^1.0.2 - version: 1.0.2(vite@5.2.8) + version: 1.0.2(vite@5.2.10) vitest: specifier: ^1.4.0 version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1) @@ -148,7 +148,7 @@ importers: version: 9.0.1 '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.2.1(vite@4.5.3) + version: 4.2.1(vite@5.2.10) archiver: specifier: ^7.0.1 version: 7.0.1 @@ -180,11 +180,11 @@ importers: specifier: ^2.4.2 version: 2.4.2 vite: - specifier: ^4.5.3 - version: 4.5.3(@types/node@18.19.31) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31) vite-plugin-externals: specifier: ^0.6.2 - version: 0.6.2(vite@4.5.3) + version: 0.6.2(vite@5.2.10) zod: specifier: ^3.22.4 version: 3.22.4 @@ -256,8 +256,8 @@ importers: specifier: ^3.0.0 || ^4.0.0-alpha.0 version: link:../app-bridge '@frontify/fondue': - specifier: 12.0.0-beta.427 - version: 12.0.0-beta.427(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.3)(ts-node@10.9.2)(zustand@4.5.2) + specifier: ^12.0.7 + version: 12.0.8(@react-spring/web@9.7.3)(@react-three/fiber@8.16.2)(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2)(konva@9.3.6)(react-dom@18.2.0)(react-konva@18.2.10)(react-native@0.74.0)(react-zdog@1.2.2)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.3)(three@0.163.0)(zdog@1.1.3)(zustand@4.5.2) '@frontify/sidebar-settings': specifier: workspace:^ version: link:../sidebar-settings @@ -297,7 +297,7 @@ importers: version: 17.0.3 '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.2.1(vite@5.2.8) + version: 4.2.1(vite@5.2.10) '@vitest/ui': specifier: ^1.4.0 version: 1.4.0(vitest@1.4.0) @@ -350,14 +350,14 @@ importers: specifier: ^5.4.4 version: 5.4.4 vite: - specifier: ^5.2.8 - version: 5.2.8(@types/node@18.19.31) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31) vite-plugin-dts: specifier: ^3.8.1 - version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.8) + version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10) vite-plugin-externals: specifier: ^0.6.2 - version: 0.6.2(vite@5.2.8) + version: 0.6.2(vite@5.2.10) vitest: specifier: ^1.4.0 version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1) @@ -396,11 +396,11 @@ importers: specifier: ^5.4.4 version: 5.4.4 vite: - specifier: ^5.2.8 - version: 5.2.8(@types/node@18.19.31) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31) vite-plugin-dts: specifier: ^3.8.1 - version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.8) + version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10) vitest: specifier: ^1.4.0 version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1) @@ -408,8 +408,8 @@ importers: packages/sidebar-settings: dependencies: '@frontify/fondue': - specifier: 12.0.0-beta.427 - version: 12.0.0-beta.427(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.3)(ts-node@10.9.2)(zustand@4.5.2) + specifier: ^12.0.7 + version: 12.0.8(@react-spring/web@9.7.3)(@react-three/fiber@8.16.2)(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2)(konva@9.3.6)(react-dom@18.2.0)(react-konva@18.2.10)(react-native@0.74.0)(react-zdog@1.2.2)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.3)(three@0.163.0)(zdog@1.1.3)(zustand@4.5.2) devDependencies: '@babel/core': specifier: ^7.24.4 @@ -442,11 +442,11 @@ importers: specifier: ^5.4.4 version: 5.4.4 vite: - specifier: ^5.2.8 - version: 5.2.8(@types/node@18.19.31) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31) vite-plugin-dts: specifier: ^3.8.1 - version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.8) + version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10) vitest: specifier: ^1.4.0 version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1) @@ -486,12 +486,15 @@ packages: dependencies: '@babel/highlight': 7.24.2 picocolors: 1.0.0 - dev: true /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} + /@babel/compat-data@7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + engines: {node: '>=6.9.0'} + /@babel/core@7.23.9: resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} engines: {node: '>=6.9.0'} @@ -535,7 +538,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /@babel/generator@7.23.6: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} @@ -554,7 +556,18 @@ packages: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} @@ -566,162 +579,1419 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + /@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.23.9): + resolution: {integrity: sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@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/core@7.23.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + /@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@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/core@7.24.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.23.9): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@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-module-transforms@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@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: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@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(@babel/core@7.23.9): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@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-replace-supers@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@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: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + transitivePeerDependencies: + - supports-color + + /@babel/helpers@7.24.4: + resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 + + /@babel/parser@7.24.4: + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.23.9): + resolution: {integrity: sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.23.9 + '@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/core@7.23.9) + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.9): + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.4): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.23.9) + + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.23.9): + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.4): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.23.9) + + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.4): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.23.9): + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.23.9): + resolution: {integrity: sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.23.9): + resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + + /@babel/plugin-transform-classes@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@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/core@7.23.9) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 + + /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + + /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.23.9) + + /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.4) + + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-simple-access': 7.22.5 + + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-simple-access': 7.22.5 + + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-identifier': 7.22.20 + + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + + /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.23.9) + + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.23.9) + + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + + /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + + /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/core': 7.23.9 + '@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.24.1(@babel/core@7.23.9) + '@babel/types': 7.24.0 - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/types': 7.23.9 + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + regenerator-transform: 0.15.2 - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/types': 7.23.9 + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.23.9): + resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.9 - '@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-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.23.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.4 - '@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 - dev: true + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/types': 7.23.9 + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/types': 7.23.9 + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + /@babel/plugin-transform-typescript@7.24.4(@babel/core@7.23.9): + resolution: {integrity: sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.23.9) - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + /@babel/plugin-transform-typescript@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4) - /@babel/helpers@7.23.9: - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 - /@babel/helpers@7.24.4: - resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 - /@babel/highlight@7.24.2: - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.23.9): + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - dev: true + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} - engines: {node: '>=6.0.0'} - hasBin: true + /@babel/preset-env@7.24.4(@babel/core@7.23.9): + resolution: {integrity: sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/types': 7.23.6 + '@babel/compat-data': 7.24.4 + '@babel/core': 7.23.9 + '@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/core@7.23.9) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.23.9) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.23.9) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.23.9) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.23.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.23.9) + core-js-compat: 3.36.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - /@babel/parser@7.23.9: - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} - engines: {node: '>=6.0.0'} - hasBin: true + /@babel/preset-flow@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/types': 7.23.9 + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.4) - /@babel/parser@7.24.4: - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} - engines: {node: '>=6.0.0'} - hasBin: true + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 '@babel/types': 7.24.0 - dev: true + esutils: 2.0.3 - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + /@babel/preset-typescript@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + /@babel/register@7.23.7(@babel/core@7.24.4): + resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.4 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} /@babel/runtime@7.21.0: resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} @@ -751,7 +2021,6 @@ packages: '@babel/code-frame': 7.24.2 '@babel/parser': 7.24.4 '@babel/types': 7.24.0 - dev: true /@babel/traverse@7.23.9: resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} @@ -786,7 +2055,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/types@7.23.6: resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} @@ -811,7 +2079,6 @@ packages: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - dev: true /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -1155,7 +2422,6 @@ packages: cpu: [ppc64] os: [aix] requiresBuild: true - dev: true optional: true /@esbuild/android-arm64@0.18.20: @@ -1164,6 +2430,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm64@0.20.2: @@ -1172,7 +2439,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-arm@0.18.20: @@ -1181,6 +2447,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm@0.20.2: @@ -1189,7 +2456,6 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-x64@0.18.20: @@ -1198,6 +2464,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-x64@0.20.2: @@ -1206,7 +2473,6 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/darwin-arm64@0.18.20: @@ -1215,6 +2481,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/darwin-arm64@0.20.2: @@ -1223,7 +2490,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/darwin-x64@0.18.20: @@ -1232,6 +2498,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/darwin-x64@0.20.2: @@ -1240,7 +2507,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-arm64@0.18.20: @@ -1249,6 +2515,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-arm64@0.20.2: @@ -1257,7 +2524,6 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-x64@0.18.20: @@ -1266,6 +2532,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-x64@0.20.2: @@ -1274,7 +2541,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm64@0.18.20: @@ -1283,6 +2549,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm64@0.20.2: @@ -1291,7 +2558,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm@0.18.20: @@ -1300,6 +2566,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm@0.20.2: @@ -1308,7 +2575,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ia32@0.18.20: @@ -1317,6 +2583,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ia32@0.20.2: @@ -1325,7 +2592,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-loong64@0.18.20: @@ -1334,6 +2600,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64@0.20.2: @@ -1342,7 +2609,6 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-mips64el@0.18.20: @@ -1351,6 +2617,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-mips64el@0.20.2: @@ -1359,7 +2626,6 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ppc64@0.18.20: @@ -1368,6 +2634,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ppc64@0.20.2: @@ -1376,7 +2643,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-riscv64@0.18.20: @@ -1385,6 +2651,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-riscv64@0.20.2: @@ -1393,7 +2660,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-s390x@0.18.20: @@ -1402,6 +2668,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-s390x@0.20.2: @@ -1410,7 +2677,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-x64@0.18.20: @@ -1419,6 +2685,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-x64@0.20.2: @@ -1427,7 +2694,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/netbsd-x64@0.18.20: @@ -1436,6 +2702,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true optional: true /@esbuild/netbsd-x64@0.20.2: @@ -1444,7 +2711,6 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true /@esbuild/openbsd-x64@0.18.20: @@ -1453,6 +2719,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true optional: true /@esbuild/openbsd-x64@0.20.2: @@ -1461,7 +2728,6 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true /@esbuild/sunos-x64@0.18.20: @@ -1470,6 +2736,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true optional: true /@esbuild/sunos-x64@0.20.2: @@ -1478,7 +2745,6 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true /@esbuild/win32-arm64@0.18.20: @@ -1487,6 +2753,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-arm64@0.20.2: @@ -1495,7 +2762,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-ia32@0.18.20: @@ -1504,6 +2770,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-ia32@0.20.2: @@ -1512,7 +2779,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-x64@0.18.20: @@ -1521,6 +2787,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-x64@0.20.2: @@ -1529,7 +2796,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): @@ -1725,16 +2991,74 @@ packages: - typescript dev: true - /@frontify/fondue-tokens@3.3.0-next.8(ts-node@10.9.2): - resolution: {integrity: sha512-jVSWvrO2KQ0+enLksjLrvQ512j5LUgycLVzbDiwgIEhEkfne5RuJBjLOa1cWiGpzIj1458Br7cVzCykYFLeJ4g==} + /@frontify/fondue-charts@1.8.3(@react-spring/web@9.7.3)(@react-three/fiber@8.16.2)(konva@9.3.6)(react-dom@18.2.0)(react-konva@18.2.10)(react-native@0.74.0)(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3)(three@0.163.0)(zdog@1.1.3): + resolution: {integrity: sha512-m3uO3/JtQqdZNYbVQqu2DNbJgfbI8Xeokk4AwIW3N3OAXgco7As4m1wFULsgiX0amjSIlrYZYrz5V4P3/gfADw==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 + react-dom: ^18 dependencies: - postcss: 8.4.38 - tailwindcss: 3.4.3(ts-node@10.9.2) + '@frontify/fondue-tokens': 3.5.0(tailwindcss@3.4.3) + '@visx/axis': 3.10.1(react@18.2.0) + '@visx/glyph': 3.3.0(react@18.2.0) + '@visx/grid': 3.5.0(react@18.2.0) + '@visx/group': 3.3.0(react@18.2.0) + '@visx/hierarchy': 3.3.0(react@18.2.0) + '@visx/responsive': 3.10.2(react@18.2.0) + '@visx/scale': 3.5.0 + '@visx/shape': 3.5.0(react@18.2.0) + '@visx/text': 3.3.0(react@18.2.0) + '@visx/tooltip': 3.3.0(react-dom@18.2.0)(react@18.2.0) + '@visx/xychart': 3.10.2(@react-spring/web@9.7.3)(react-dom@18.2.0)(react@18.2.0) + lodash-es: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-spring: 9.7.3(@react-three/fiber@8.16.2)(konva@9.3.6)(react-dom@18.2.0)(react-konva@18.2.10)(react-native@0.74.0)(react-zdog@1.2.2)(react@18.2.0)(three@0.163.0)(zdog@1.1.3) + use-font-face-observer: 1.2.1(react@18.2.0) transitivePeerDependencies: - - ts-node + - '@react-spring/web' + - '@react-three/fiber' + - konva + - react-konva + - react-native + - react-zdog + - tailwindcss + - three + - zdog + + /@frontify/fondue-components@1.2.2(@frontify/fondue-icons@0.2.1)(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-rT9cXBUD4QpFjiwUcHY4rI33zNPC8ZJ3/iZ0pKS6A2SxVtAIRF+EMa6fu92Y/z0iwgzBgTPaqWA9ZY7RZhhuGA==} + engines: {node: '>=18'} + peerDependencies: + '@frontify/fondue-icons': ^0.2.1 + react: ^18 + react-dom: ^18 + dependencies: + '@frontify/fondue-icons': 0.2.1(react@18.2.0) + '@radix-ui/react-progress': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + /@frontify/fondue-icons@0.2.1(react@18.2.0): + resolution: {integrity: sha512-9+kWouvhbsrBryrFRgBB9ulVjWuO7jalSZc7aN9/pZvQANY3KCJCHGlDQ7UyAOR8BX5zNNIksHYCCRg30ozN6A==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 + dependencies: + react: 18.2.0 + + /@frontify/fondue-tokens@3.5.0(tailwindcss@3.4.3): + resolution: {integrity: sha512-ZIV12bkg2N+z8AV+yA8nYy2eainfdE1hihwPavoLhXfjFH9iAzS34fv/IkcoKUi1vZkfpmcUKBA4h40IgZSaPg==} + peerDependencies: + tailwindcss: ^3.0.0 + dependencies: + tailwindcss: 3.4.3(ts-node@10.9.2) - /@frontify/fondue@12.0.0-beta.427(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.3)(ts-node@10.9.2)(zustand@4.5.2): - resolution: {integrity: sha512-Y8aOPzGTQoVh39h/l8esv6Q2F9sO9Z934qw2bz1nsyOMmE9GzyS63SYeTv3AQO5t/cFB53DVPlWprqbR9zMqGQ==} + /@frontify/fondue@12.0.8(@react-spring/web@9.7.3)(@react-three/fiber@8.16.2)(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2)(konva@9.3.6)(react-dom@18.2.0)(react-konva@18.2.10)(react-native@0.74.0)(react-zdog@1.2.2)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(tailwindcss@3.4.3)(three@0.163.0)(zdog@1.1.3)(zustand@4.5.2): + resolution: {integrity: sha512-+YCyWh0VNoyTZrXR7ARO5TKjUjSP++qFi9/8Nssw0Z6L1b/Jxl0B5VUTGSYZbg+F2/z6DQ/7+GfN4KOprRh+0A==} engines: {node: '>=18'} peerDependencies: react: ^18 @@ -1745,7 +3069,10 @@ packages: '@dnd-kit/modifiers': 7.0.0(@dnd-kit/core@6.1.0)(react@18.2.0) '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.1.0)(react@18.2.0) '@dnd-kit/utilities': 3.2.2(react@18.2.0) - '@frontify/fondue-tokens': 3.3.0-next.8(ts-node@10.9.2) + '@frontify/fondue-charts': 1.8.3(@react-spring/web@9.7.3)(@react-three/fiber@8.16.2)(konva@9.3.6)(react-dom@18.2.0)(react-konva@18.2.10)(react-native@0.74.0)(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3)(three@0.163.0)(zdog@1.1.3) + '@frontify/fondue-components': 1.2.2(@frontify/fondue-icons@0.2.1)(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@frontify/fondue-icons': 0.2.1(react@18.2.0) + '@frontify/fondue-tokens': 3.5.0(tailwindcss@3.4.3) '@popperjs/core': 2.11.8 '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) @@ -1791,7 +3118,7 @@ packages: '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-emoji': 31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) @@ -1800,13 +3127,13 @@ packages: '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) - '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@udecode/slate': 31.0.0(slate-history@0.100.0)(slate@0.102.0) '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/slate-utils': 31.3.2(slate-history@0.100.0)(slate@0.102.0) '@udecode/utils': 31.0.0 - '@udecode/zustood': 2.0.0(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.2) + '@udecode/zustood': 2.0.0(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.2) '@xstate/immer': 0.3.3(immer@9.0.21)(xstate@4.38.3) '@xstate/react': 1.6.3(@types/react@18.2.75)(react@18.2.0)(xstate@4.38.3) date-fns: 3.6.0 @@ -1826,27 +3153,41 @@ packages: react-textarea-autosize: 8.5.3(@types/react@18.2.75)(react@18.2.0) remark-gfm: 3.0.1 remark-parse: 10.0.2 - scheduler: 0.23.0 slate: 0.102.0 slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) unified: 10.1.2 unist-util-visit: 5.0.0 xstate: 4.38.3 transitivePeerDependencies: + - '@react-spring/web' + - '@react-three/fiber' - '@types/hoist-non-react-statics' - '@types/node' - '@types/react' - '@types/react-dom' - '@udecode/plate-common' - '@xstate/fsm' + - konva + - react-konva - react-native + - react-zdog + - scheduler - slate-history - slate-hyperscript - supports-color - tailwindcss - - ts-node + - three + - zdog - zustand + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + /@humanwhocodes/config-array@0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -1899,17 +3240,67 @@ packages: wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 + /@isaacs/ttlcache@1.4.1: + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.31 + jest-mock: 29.7.0 + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.19.31 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 - dev: true + + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.19.31 + '@types/yargs': 15.0.19 + chalk: 4.1.2 + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.19.31 + '@types/yargs': 17.0.32 + chalk: 4.1.2 /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -1939,6 +3330,12 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} @@ -2378,6 +3775,27 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + /@radix-ui/react-progress@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5G6Om/tYSxjSeEdrb1VfKkfZfn/1IlPWd731h2RfPuSbIfNUgfqAwbKfJCg/PP6nuUCTrYzalwHSpSinoWoCag==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: @@ -3156,50 +4574,489 @@ packages: clsx: 1.2.1 react: 18.2.0 - /@react-aria/utils@3.23.2(react@18.2.0): - resolution: {integrity: sha512-yznR9jJ0GG+YJvTMZxijQwVp+ahP66DY0apZf7X+dllyN+ByEDW+yaL1ewYPIpugxVzH5P8jhnBXsIyHKN411g==} + /@react-aria/utils@3.23.2(react@18.2.0): + resolution: {integrity: sha512-yznR9jJ0GG+YJvTMZxijQwVp+ahP66DY0apZf7X+dllyN+ByEDW+yaL1ewYPIpugxVzH5P8jhnBXsIyHKN411g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/ssr': 3.9.2(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.1 + clsx: 2.1.0 + react: 18.2.0 + + /@react-aria/visually-hidden@3.6.0(react@18.2.0): + resolution: {integrity: sha512-W3Ix5wdlVzh2GY7dytqOAyLCXiHzk3S4jLKSaoiCwPJX9fHE5zMlZwahhDy27V0LXfjmdjBltbwyEZOq4G/Q0w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@babel/runtime': 7.23.9 + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + clsx: 1.2.1 + react: 18.2.0 + + /@react-aria/visually-hidden@3.6.1(react@18.2.0): + resolution: {integrity: sha512-7rUbiaIiR1nok9HAHPn/WcyQlvuldUqxnvh81V4dlI3NtXOgMw7/QaNc5Xo5FFWlsSVpbyK3UVJgzIui0Ns0Xg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.4.14 + clsx: 1.2.1 + react: 18.2.0 + + /@react-dnd/asap@5.0.2: + resolution: {integrity: sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==} + + /@react-dnd/invariant@4.0.2: + resolution: {integrity: sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==} + + /@react-dnd/shallowequal@4.0.2: + resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==} + + /@react-native-community/cli-clean@13.6.4: + resolution: {integrity: sha512-nS1BJ+2Z+aLmqePxB4AYgJ+C/bgQt02xAgSYtCUv+lneRBGhL2tHRrK8/Iolp0y+yQoUtHHf4txYi90zGXLVfw==} + dependencies: + '@react-native-community/cli-tools': 13.6.4 + chalk: 4.1.2 + execa: 5.1.1 + fast-glob: 3.3.2 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-config@13.6.4: + resolution: {integrity: sha512-GGK415WoTx1R9FXtfb/cTnan9JIWwSm+a5UCuFd6+suzS0oIt1Md1vCzjNh6W1CK3b43rZC2e+3ZU7Ljd7YtyQ==} + dependencies: + '@react-native-community/cli-tools': 13.6.4 + chalk: 4.1.2 + cosmiconfig: 5.2.1 + deepmerge: 4.3.1 + fast-glob: 3.3.2 + joi: 17.13.0 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-debugger-ui@13.6.4: + resolution: {integrity: sha512-9Gs31s6tA1kuEo69ay9qLgM3x2gsN/RI994DCUKnFSW+qSusQJyyrmfllR2mGU3Wl1W09/nYpIg87W9JPf5y4A==} + dependencies: + serve-static: 1.15.0 + transitivePeerDependencies: + - supports-color + + /@react-native-community/cli-doctor@13.6.4: + resolution: {integrity: sha512-lWOXCISH/cHtLvO0cWTr+IPSzA54FewVOw7MoCMEvWusH+1n7c3hXTAve78mLozGQ7iuUufkHFWwKf3dzOkflQ==} + dependencies: + '@react-native-community/cli-config': 13.6.4 + '@react-native-community/cli-platform-android': 13.6.4 + '@react-native-community/cli-platform-apple': 13.6.4 + '@react-native-community/cli-platform-ios': 13.6.4 + '@react-native-community/cli-tools': 13.6.4 + chalk: 4.1.2 + command-exists: 1.2.9 + deepmerge: 4.3.1 + envinfo: 7.12.0 + execa: 5.1.1 + hermes-profile-transformer: 0.0.6 + node-stream-zip: 1.15.0 + ora: 5.4.1 + semver: 7.6.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + yaml: 2.3.2 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-hermes@13.6.4: + resolution: {integrity: sha512-VIAufA/2wTccbMYBT9o+mQs9baOEpTxCiIdWeVdkPWKzIwtKsLpDZJlUqj4r4rI66mwjFyQ60PhwSzEJ2ApFeQ==} + dependencies: + '@react-native-community/cli-platform-android': 13.6.4 + '@react-native-community/cli-tools': 13.6.4 + chalk: 4.1.2 + hermes-profile-transformer: 0.0.6 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-platform-android@13.6.4: + resolution: {integrity: sha512-WhknYwIobKKCqaGCN3BzZEQHTbaZTDiGvcXzevvN867ldfaGdtbH0DVqNunbPoV1RNzeV9qKoQHFdWBkg83tpg==} + dependencies: + '@react-native-community/cli-tools': 13.6.4 + chalk: 4.1.2 + execa: 5.1.1 + fast-glob: 3.3.2 + fast-xml-parser: 4.3.6 + logkitty: 0.7.1 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-platform-apple@13.6.4: + resolution: {integrity: sha512-TLBiotdIz0veLbmvNQIdUv9fkBx7m34ANGYqr5nH7TFxdmey+Z+omoBqG/HGpvyR7d0AY+kZzzV4k+HkYHM/aQ==} + dependencies: + '@react-native-community/cli-tools': 13.6.4 + chalk: 4.1.2 + execa: 5.1.1 + fast-glob: 3.3.2 + fast-xml-parser: 4.3.6 + ora: 5.4.1 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-platform-ios@13.6.4: + resolution: {integrity: sha512-8Dlva8RY+MY5nhWAj6V7voG3+JOEzDTJmD0FHqL+4p0srvr9v7IEVcxfw5lKBDIUNd0OMAHNevGA+cyz1J60jg==} + dependencies: + '@react-native-community/cli-platform-apple': 13.6.4 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-server-api@13.6.4: + resolution: {integrity: sha512-D2qSuYCFwrrUJUM0SDc9l3lEhU02yjf+9Peri/xhspzAhALnsf6Z/H7BCjddMV42g9/eY33LqiGyN5chr83a+g==} + dependencies: + '@react-native-community/cli-debugger-ui': 13.6.4 + '@react-native-community/cli-tools': 13.6.4 + compression: 1.7.4 + connect: 3.7.0 + errorhandler: 1.5.1 + nocache: 3.0.4 + pretty-format: 26.6.2 + serve-static: 1.15.0 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@react-native-community/cli-tools@13.6.4: + resolution: {integrity: sha512-N4oHLLbeTdg8opqJozjClmuTfazo1Mt+oxU7mr7m45VCsFgBqTF70Uwad289TM/3l44PP679NRMAHVYqpIRYtQ==} + dependencies: + appdirsjs: 1.2.7 + chalk: 4.1.2 + execa: 5.1.1 + find-up: 5.0.0 + mime: 2.6.0 + node-fetch: 2.6.9 + open: 6.4.0 + ora: 5.4.1 + semver: 7.6.0 + shell-quote: 1.8.1 + sudo-prompt: 9.2.1 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-types@13.6.4: + resolution: {integrity: sha512-NxGCNs4eYtVC8x0wj0jJ/MZLRy8C+B9l8lY8kShuAcvWTv5JXRqmXjg8uK1aA+xikPh0maq4cc/zLw1roroY/A==} + dependencies: + joi: 17.13.0 + + /@react-native-community/cli@13.6.4: + resolution: {integrity: sha512-V7rt2N5JY7M4dJFgdNfR164r3hZdR/Z7V54dv85TFQHRbdwF4QrkG+GeagAU54qrkK/OU8OH3AF2+mKuiNWpGA==} + engines: {node: '>=18'} + hasBin: true + dependencies: + '@react-native-community/cli-clean': 13.6.4 + '@react-native-community/cli-config': 13.6.4 + '@react-native-community/cli-debugger-ui': 13.6.4 + '@react-native-community/cli-doctor': 13.6.4 + '@react-native-community/cli-hermes': 13.6.4 + '@react-native-community/cli-server-api': 13.6.4 + '@react-native-community/cli-tools': 13.6.4 + '@react-native-community/cli-types': 13.6.4 + chalk: 4.1.2 + commander: 9.5.0 + deepmerge: 4.3.1 + execa: 5.1.1 + find-up: 4.1.0 + fs-extra: 8.1.0 + graceful-fs: 4.2.11 + prompts: 2.4.2 + semver: 7.6.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@react-native/assets-registry@0.74.81: + resolution: {integrity: sha512-ms+D6pJ6l30epm53pwnAislW79LEUHJxWfe1Cu0LWyTTBlg1OFoqXfB3eIbpe4WyH3nrlkQAh0yyk4huT2mCvw==} + engines: {node: '>=18'} + + /@react-native/babel-plugin-codegen@0.74.81(@babel/preset-env@7.24.4): + resolution: {integrity: sha512-Bj6g5/xkLMBAdC6665TbD3uCKCQSmLQpGv3gyqya/ydZpv3dDmDXfkGmO4fqTwEMunzu09Sk55st2ipmuXAaAg==} + engines: {node: '>=18'} + dependencies: + '@react-native/codegen': 0.74.81(@babel/preset-env@7.24.4) + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + + /@react-native/babel-preset@0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4): + resolution: {integrity: sha512-H80B3Y3lBBVC4x9tceTEQq/04lx01gW6ajWCcVbd7sHvGEAxfMFEZUmVZr0451Cafn02wVnDJ8psto1F+0w5lw==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.23.9 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.23.9) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.23.9) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.23.9) + '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.23.9) + '@babel/template': 7.24.0 + '@react-native/babel-plugin-codegen': 0.74.81(@babel/preset-env@7.24.4) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.23.9) + react-refresh: 0.14.0 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + + /@react-native/codegen@0.74.81(@babel/preset-env@7.24.4): + resolution: {integrity: sha512-hhXo4ccv2lYWaJrZDsdbRTZ5SzSOdyZ0MY6YXwf3xEFLuSunbUMu17Rz5LXemKXlpVx4KEgJ/TDc2pPVaRPZgA==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/parser': 7.24.4 + '@babel/preset-env': 7.24.4(@babel/core@7.23.9) + glob: 7.2.3 + hermes-parser: 0.19.1 + invariant: 2.2.4 + jscodeshift: 0.14.0(@babel/preset-env@7.24.4) + mkdirp: 0.5.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + /@react-native/community-cli-plugin@0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4): + resolution: {integrity: sha512-ezPOwPxbDgrBZLJJMcXryXJXjv3VWt+Mt4jRZiEtvy6pAoi2owSH0b178T5cEZaWsxQN0BbyJ7F/xJsNiF4z0Q==} + engines: {node: '>=18'} + dependencies: + '@react-native-community/cli-server-api': 13.6.4 + '@react-native-community/cli-tools': 13.6.4 + '@react-native/dev-middleware': 0.74.81 + '@react-native/metro-babel-transformer': 0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4) + chalk: 4.1.2 + execa: 5.1.1 + metro: 0.80.8 + metro-config: 0.80.8 + metro-core: 0.80.8 + node-fetch: 2.6.9 + querystring: 0.2.1 + readline: 1.3.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@react-native/debugger-frontend@0.74.81: + resolution: {integrity: sha512-HCYF1/88AfixG75558HkNh9wcvGweRaSZGBA71KoZj03umXM8XJy0/ZpacGOml2Fwiqpil72gi6uU+rypcc/vw==} + engines: {node: '>=18'} + + /@react-native/dev-middleware@0.74.81: + resolution: {integrity: sha512-x2IpvUJN1LJE0WmPsSfQIbQaa9xwH+2VDFOUrzuO9cbQap8rNfZpcvVNbrZgrlKbgS4LXbbsj6VSL8b6SnMKMA==} + engines: {node: '>=18'} + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.74.81 + '@rnx-kit/chromium-edge-launcher': 1.0.0 + chrome-launcher: 0.15.2 + connect: 3.7.0 + debug: 2.6.9 + node-fetch: 2.6.9 + nullthrows: 1.1.1 + open: 7.4.2 + selfsigned: 2.4.1 + serve-static: 1.15.0 + temp-dir: 2.0.0 + ws: 6.2.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@react-native/gradle-plugin@0.74.81: + resolution: {integrity: sha512-7YQ4TLnqfe2kplWWzBWO6k0rPSrWEbuEiRXSJNZQCtCk+t2YX985G62p/9jWm3sGLN4UTcpDXaFNTTPBvlycoQ==} + engines: {node: '>=18'} + + /@react-native/js-polyfills@0.74.81: + resolution: {integrity: sha512-o4MiR+/kkHoeoQ/zPwt81LnTm6pqdg0wOhU7S7vIZUqzJ7YUpnpaAvF+/z7HzUOPudnavoCN0wvcZPe/AMEyCA==} + engines: {node: '>=18'} + + /@react-native/metro-babel-transformer@0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4): + resolution: {integrity: sha512-PVcMjj23poAK6Uemflz4MIJdEpONpjqF7JASNqqQkY6wfDdaIiZSNk8EBCWKb0t7nKqhMvtTq11DMzYJ0JFITg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.23.9 + '@react-native/babel-preset': 0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4) + hermes-parser: 0.19.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + + /@react-native/normalize-colors@0.74.81: + resolution: {integrity: sha512-g3YvkLO7UsSWiDfYAU+gLhRHtEpUyz732lZB+N8IlLXc5MnfXHC8GKneDGY3Mh52I3gBrs20o37D5viQX9E1CA==} + + /@react-native/virtualized-lists@0.74.81(react-native@0.74.0)(react@18.2.0): + resolution: {integrity: sha512-5jF9S10Ug2Wl+L/0+O8WmbC726sMMX8jk/1JrvDDK+0DRLMobfjLc1L26fONlVBF7lE5ctqvKZ9TlKdhPTNOZg==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.6 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 18.2.0 + react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4)(react@18.2.0) + + /@react-spring/animated@9.7.3(react@18.2.0): + resolution: {integrity: sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 + react: 18.2.0 + + /@react-spring/core@9.7.3(react@18.2.0): + resolution: {integrity: sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@react-spring/animated': 9.7.3(react@18.2.0) + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 + react: 18.2.0 + + /@react-spring/konva@9.7.3(konva@9.3.6)(react-konva@18.2.10)(react@18.2.0): + resolution: {integrity: sha512-R9sY6SiPGYqz1383P5qppg5z57YfChVknOC1UxxaGxpw+WiZa8fZ4zmZobslrw+os3/+HAXZv8O+EvU/nQpf7g==} + peerDependencies: + konva: '>=2.6' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-konva: ^16.8.0 || ^16.8.7-0 || ^16.9.0-0 || ^16.10.1-0 || ^16.12.0-0 || ^16.13.0-0 || ^17.0.0-0 || ^17.0.1-0 || ^17.0.2-0 || ^18.0.0-0 + dependencies: + '@react-spring/animated': 9.7.3(react@18.2.0) + '@react-spring/core': 9.7.3(react@18.2.0) + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 + konva: 9.3.6 + react: 18.2.0 + react-konva: 18.2.10(konva@9.3.6)(react-dom@18.2.0)(react@18.2.0) + + /@react-spring/native@9.7.3(react-native@0.74.0)(react@18.2.0): + resolution: {integrity: sha512-4mpxX3FuEBCUT6ae2fjhxcJW6bhr2FBwFf274eXB7n+U30Gdg8Wo2qYwcUnmiAA0S3dvP8vLTazx3+CYWFShnA==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react: ^16.8.0 || >=17.0.0 || >=18.0.0 + react-native: '>=0.58' dependencies: - '@react-aria/ssr': 3.9.2(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.5.1 - clsx: 2.1.0 + '@react-spring/animated': 9.7.3(react@18.2.0) + '@react-spring/core': 9.7.3(react@18.2.0) + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 react: 18.2.0 + react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4)(react@18.2.0) - /@react-aria/visually-hidden@3.6.0(react@18.2.0): - resolution: {integrity: sha512-W3Ix5wdlVzh2GY7dytqOAyLCXiHzk3S4jLKSaoiCwPJX9fHE5zMlZwahhDy27V0LXfjmdjBltbwyEZOq4G/Q0w==} + /@react-spring/shared@9.7.3(react@18.2.0): + resolution: {integrity: sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - clsx: 1.2.1 + '@react-spring/types': 9.7.3 react: 18.2.0 - /@react-aria/visually-hidden@3.6.1(react@18.2.0): - resolution: {integrity: sha512-7rUbiaIiR1nok9HAHPn/WcyQlvuldUqxnvh81V4dlI3NtXOgMw7/QaNc5Xo5FFWlsSVpbyK3UVJgzIui0Ns0Xg==} + /@react-spring/three@9.7.3(@react-three/fiber@8.16.2)(react@18.2.0)(three@0.163.0): + resolution: {integrity: sha512-Q1p512CqUlmMK8UMBF/Rj79qndhOWq4XUTayxMP9S892jiXzWQuj+xC3Xvm59DP/D4JXusXpxxqfgoH+hmOktA==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@react-three/fiber': '>=6.0' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + three: '>=0.126' dependencies: - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - clsx: 1.2.1 + '@react-spring/animated': 9.7.3(react@18.2.0) + '@react-spring/core': 9.7.3(react@18.2.0) + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 + '@react-three/fiber': 8.16.2(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(three@0.163.0) react: 18.2.0 + three: 0.163.0 - /@react-dnd/asap@5.0.2: - resolution: {integrity: sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==} + /@react-spring/types@9.7.3: + resolution: {integrity: sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==} - /@react-dnd/invariant@4.0.2: - resolution: {integrity: sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==} + /@react-spring/web@9.7.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@react-spring/animated': 9.7.3(react@18.2.0) + '@react-spring/core': 9.7.3(react@18.2.0) + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) - /@react-dnd/shallowequal@4.0.2: - resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==} + /@react-spring/zdog@9.7.3(react-dom@18.2.0)(react-zdog@1.2.2)(react@18.2.0)(zdog@1.1.3): + resolution: {integrity: sha512-L+yK/1PvNi9n8cldiJ309k4LdxcPkeWE0W18l1zrP1IBIyd5NB5EPA8DMsGr9gtNnnIujtEzZk+4JIOjT8u/tw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-zdog: '>=1.0' + zdog: '>=1.0' + dependencies: + '@react-spring/animated': 9.7.3(react@18.2.0) + '@react-spring/core': 9.7.3(react@18.2.0) + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-zdog: 1.2.2 + zdog: 1.1.3 /@react-stately/checkbox@3.3.2(react@18.2.0): resolution: {integrity: sha512-eU3zvWgQrcqS8UK8ZVkb3fMP816PeuN9N0/dOJKuOXXhkoLPuxtuja1oEqKU3sFMa5+bx3czZhhNIRpr60NAdw==} @@ -3530,6 +5387,47 @@ packages: '@swc/helpers': 0.4.14 react: 18.2.0 + /@react-three/fiber@8.16.2(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(three@0.163.0): + resolution: {integrity: sha512-3Z5FW8mxzomBbrw2iF0lNOAlNBr2OK6HR0NM416PzcTs0UcSoPj/nD4eqmrV5Kut6kvCc/TJua5LyeoPE7vSmw==} + peerDependencies: + expo: '>=43.0' + expo-asset: '>=8.4' + expo-file-system: '>=11.0' + expo-gl: '>=11.0' + react: '>=18.0' + react-dom: '>=18.0' + react-native: '>=0.64' + three: '>=0.133' + peerDependenciesMeta: + expo: + optional: true + expo-asset: + optional: true + expo-file-system: + optional: true + expo-gl: + optional: true + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@types/react-reconciler': 0.26.7 + '@types/webxr': 0.5.15 + base64-js: 1.5.1 + buffer: 6.0.3 + its-fine: 1.2.5(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4)(react@18.2.0) + react-reconciler: 0.27.0(react@18.2.0) + react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0) + scheduler: 0.21.0 + suspend-react: 0.1.3(react@18.2.0) + three: 0.163.0 + zustand: 3.7.2(react@18.2.0) + /@react-types/accordion@3.0.0-alpha.13(react@18.2.0): resolution: {integrity: sha512-RQP+UInEdPjyyX8IbmUbPXgx6NJaKYpNrMDa8yxqDKLH0MIfsKQldu/lBHuRP3OIrVTr18r/ICjdOZjtVObtLw==} peerDependencies: @@ -3704,6 +5602,19 @@ packages: '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 + /@rnx-kit/chromium-edge-launcher@1.0.0: + resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} + engines: {node: '>=14.15'} + dependencies: + '@types/node': 18.19.31 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color + /@rollup/pluginutils@5.1.0(rollup@4.14.1): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -3724,7 +5635,6 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true /@rollup/rollup-android-arm64@4.14.1: @@ -3732,7 +5642,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /@rollup/rollup-darwin-arm64@4.14.1: @@ -3740,7 +5649,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /@rollup/rollup-darwin-x64@4.14.1: @@ -3748,7 +5656,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-arm-gnueabihf@4.14.1: @@ -3756,7 +5663,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-arm64-gnu@4.14.1: @@ -3764,7 +5670,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-arm64-musl@4.14.1: @@ -3772,7 +5677,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-powerpc64le-gnu@4.14.1: @@ -3780,7 +5684,6 @@ packages: cpu: [ppc64le] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-riscv64-gnu@4.14.1: @@ -3788,7 +5691,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-s390x-gnu@4.14.1: @@ -3796,7 +5698,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-x64-gnu@4.14.1: @@ -3804,7 +5705,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-x64-musl@4.14.1: @@ -3812,7 +5712,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-win32-arm64-msvc@4.14.1: @@ -3820,7 +5719,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /@rollup/rollup-win32-ia32-msvc@4.14.1: @@ -3828,7 +5726,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /@rollup/rollup-win32-x64-msvc@4.14.1: @@ -3836,7 +5733,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@rushstack/node-core-library@4.0.2(@types/node@18.19.31): @@ -3887,9 +5783,19 @@ packages: - '@types/node' dev: true + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + dependencies: + '@hapi/hoek': 9.3.0 + + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true /@sinonjs/commons@2.0.0: resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} @@ -3901,13 +5807,11 @@ packages: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: type-detect: 4.0.8 - dev: true /@sinonjs/fake-timers@10.3.0: resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: '@sinonjs/commons': 3.0.0 - dev: true /@sinonjs/fake-timers@11.2.2: resolution: {integrity: sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==} @@ -4063,6 +5967,53 @@ packages: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: true + /@types/d3-array@3.0.3: + resolution: {integrity: sha512-Reoy+pKnvsksN0lQUlcH6dOGjRZ/3WRwXR//m+/8lt1BXeI4xyaUZoqULNjyXXRuh0Mj4LNpkCvhUpQlY3X5xQ==} + + /@types/d3-color@3.1.0: + resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} + + /@types/d3-delaunay@6.0.1: + resolution: {integrity: sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==} + + /@types/d3-format@3.0.1: + resolution: {integrity: sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==} + + /@types/d3-geo@3.1.0: + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + dependencies: + '@types/geojson': 7946.0.14 + + /@types/d3-hierarchy@1.1.11: + resolution: {integrity: sha512-lnQiU7jV+Gyk9oQYk0GGYccuexmQPTp08E0+4BidgFdiJivjEvf+esPSdZqCZ2C7UwTWejWpqetVaU8A+eX3FA==} + + /@types/d3-interpolate@3.0.1: + resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} + dependencies: + '@types/d3-color': 3.1.0 + + /@types/d3-path@1.0.11: + resolution: {integrity: sha512-4pQMp8ldf7UaB/gR8Fvvy69psNHkTpD/pVw3vmEi8iZAB9EPMBruB1JvHO4BIq9QkUUd2lV1F5YXpMNj7JPBpw==} + + /@types/d3-scale@4.0.2: + resolution: {integrity: sha512-Yk4htunhPAwN0XGlIwArRomOjdoBFXC3+kCxK2Ubg7I9shQlVSJy/pG/Ht5ASN+gdMIalpk8TJ5xV74jFsetLA==} + dependencies: + '@types/d3-time': 3.0.0 + + /@types/d3-shape@1.3.12: + resolution: {integrity: sha512-8oMzcd4+poSLGgV0R1Q1rOlx/xdmozS4Xab7np0eamFFUYq71AU9pOCJEFnkXW2aI/oXdVYJzw6pssbSut7Z9Q==} + dependencies: + '@types/d3-path': 1.0.11 + + /@types/d3-time-format@2.1.0: + resolution: {integrity: sha512-/myT3I7EwlukNOX2xVdMzb8FRgNzRMpsZddwst9Ld/VFe6LyJyRp0s32l/V9XoUzk+Gqu56F/oGk6507+8BxrA==} + + /@types/d3-time@3.0.0: + resolution: {integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==} + + /@types/d3-voronoi@1.1.12: + resolution: {integrity: sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==} + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: @@ -4070,7 +6021,9 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true + + /@types/geojson@7946.0.14: + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} /@types/glob-to-regexp@0.4.4: resolution: {integrity: sha512-nDKoaKJYbnn1MZxUY0cA1bPmmgZbg0cTq7Rh13d0KWYNOiKbqoR+2d89SnRPszGh7ROzSwZ/GOjZ4jPbmmZ6Eg==} @@ -4081,7 +6034,16 @@ packages: /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 /@types/js-levenshtein@1.1.1: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} @@ -4126,6 +6088,11 @@ packages: /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 18.19.31 + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true @@ -4154,6 +6121,16 @@ packages: dependencies: '@types/react': 18.2.75 + /@types/react-reconciler@0.26.7: + resolution: {integrity: sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==} + dependencies: + '@types/react': 18.2.75 + + /@types/react-reconciler@0.28.8: + resolution: {integrity: sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==} + dependencies: + '@types/react': 18.2.75 + /@types/react@18.2.75: resolution: {integrity: sha512-+DNnF7yc5y0bHkBTiLKqXFe+L4B3nvOphiMY3tuA5X10esmjqk7smyBZzbGTy2vsiy/Bnzj8yFIBL8xhRacoOg==} dependencies: @@ -4188,18 +6165,37 @@ packages: resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} dev: true + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} /@types/unist@3.0.2: resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + /@types/webxr@0.5.15: + resolution: {integrity: sha512-nC9116Gd4N+CqTxqo6gvCfhAMAzgRcfS8ZsciNodHq8uwW4JCVKwhagw8yN0XmC7mHrLnWqniJpoVEiR+72Drw==} + /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: '@types/node': 18.19.31 dev: true + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + /@types/yargs@15.0.19: + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + dependencies: + '@types/yargs-parser': 21.0.3 + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + /@types/yauzl@2.10.3: resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} requiresBuild: true @@ -4351,7 +6347,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -4370,7 +6366,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4390,7 +6386,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -4409,7 +6405,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -4428,7 +6424,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) prismjs: 1.29.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4448,7 +6444,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) downshift: 6.1.12(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4457,7 +6453,7 @@ packages: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + /@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): resolution: {integrity: sha512-yhfFoJUlX81gOur093uDXrZu8lflm43DpcRhjHtX0pE6MiwSWIGygTNdjyXEE/MWC4/mwdeU1k94ahCXkfiffw==} peerDependencies: react: '>=16.8.0' @@ -4467,8 +6463,8 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) - '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@udecode/slate': 31.0.0(slate-history@0.100.0)(slate@0.102.0) '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.102.0)(slate@0.102.0) @@ -4486,7 +6482,7 @@ packages: - react-native - scheduler - /@udecode/plate-core@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + /@udecode/plate-core@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): resolution: {integrity: sha512-sBEB2vMu2KG4/KTBwyui1mBzORBm+tPg05p/mk+/Ihy/gBlxBpIyiuRUo3iRD9ZTm+sAJLZT5e3Vv8wWyu3Bfg==} peerDependencies: react: '>=16.8.0' @@ -4517,7 +6513,7 @@ packages: slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) use-deep-compare: 1.2.1(react@18.2.0) zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) - zustand-x: 3.0.2(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.2) + zustand-x: 3.0.2(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.2) transitivePeerDependencies: - '@types/react' - immer @@ -4537,7 +6533,7 @@ packages: dependencies: '@emoji-mart/data': 1.1.2 '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -4559,7 +6555,7 @@ packages: dependencies: '@floating-ui/core': 1.6.0 '@floating-ui/react': 0.22.3(react-dom@18.2.0)(react@18.2.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -4578,7 +6574,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -4597,7 +6593,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 @@ -4618,7 +6614,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/plate-reset-node': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) lodash: 4.17.21 react: 18.2.0 @@ -4640,7 +6636,7 @@ packages: slate-react: '>=0.99.0' dependencies: '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -4659,7 +6655,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4679,7 +6675,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -4698,7 +6694,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -4706,7 +6702,7 @@ packages: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0)(react@18.2.0)(slate@0.102.0) - /@udecode/plate-utils@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): + /@udecode/plate-utils@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0): resolution: {integrity: sha512-IedyGPqF/yrSjc1ODBSM5xZXC5yPORyqq5vFlk+uNV4khPMDer2PMGnv5se6yVQhSMdAN81gLtlFKONDKIjAjQ==} peerDependencies: react: '>=16.8.0' @@ -4716,7 +6712,7 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' dependencies: - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@udecode/slate': 31.0.0(slate-history@0.100.0)(slate@0.102.0) '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.102.0)(slate@0.102.0) @@ -4785,33 +6781,298 @@ packages: /@udecode/slate@31.0.0(slate-history@0.100.0)(slate@0.102.0): resolution: {integrity: sha512-VK84em/ZQYgu2PnXBLG8ON47n3DAZZL//yA3oWs4J3hTg92UTXpizNZiwk9iA+mb+xcRomwuWwpTUCyE8VI3rQ==} peerDependencies: - slate: '>=0.94.0' - slate-history: '>=0.93.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + dependencies: + '@udecode/utils': 31.0.0 + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + + /@udecode/utils@31.0.0: + resolution: {integrity: sha512-06JTl1UAm3mzLLAx8hdMUFw4XRQG727z9JoJ9PeBnmFb9q4Cg3DdmbFnhVJMrBPWlyOwoHtPrBjnanTFeiP36Q==} + + /@udecode/zustood@2.0.0(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.2): + resolution: {integrity: sha512-zMmEhP55PHVxIsMWuBf7LbNUTkGDPAGeCtcbJUD+k47ubkLR/yg0hjQh0hD0DARl2X86U+SJNe628qxVtMARVw==} + peerDependencies: + zustand: '>=4.3.9' + dependencies: + immer: 10.0.4 + react-tracked: 1.7.11(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0) + zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + - react-native + - scheduler + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@visx/annotation@3.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-v0htpd/sT1kdU1N7frqmj078UByJXUwPQJT9LENv0ypssjGyRgvZERjkgSUuMKMjZquOBs/f6XOzxF4mLV57sA==} + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/react': 18.2.75 + '@visx/drag': 3.3.0(react@18.2.0) + '@visx/group': 3.3.0(react@18.2.0) + '@visx/text': 3.3.0(react@18.2.0) + classnames: 2.3.2 + prop-types: 15.8.1 + react: 18.2.0 + react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - react-dom + + /@visx/axis@3.10.1(react@18.2.0): + resolution: {integrity: sha512-HBEDLcpZoJ16hFbkYu3S6mN5mbwlFmUWY5yN967X06RdIL4LmAG3gnZ7u4F9buA3LQo+trJXW78moN005odD4Q==} + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/react': 18.2.75 + '@visx/group': 3.3.0(react@18.2.0) + '@visx/point': 3.3.0 + '@visx/scale': 3.5.0 + '@visx/shape': 3.5.0(react@18.2.0) + '@visx/text': 3.3.0(react@18.2.0) + classnames: 2.3.2 + prop-types: 15.8.1 + react: 18.2.0 + + /@visx/bounds@3.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-gESmN+4N2NkeUzqQEDZaS63umkGfMp9XjQcKBqtOR64mjjQtamh3lNVRWvKjJ2Zb421RbYHWq22Wv9nay6ZUOg==} + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + react-dom: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@visx/curve@3.3.0: + resolution: {integrity: sha512-G1l1rzGWwIs8ka3mBhO/gj8uYK6XdU/3bwRSoiZ+MockMahQFPog0bUkuVgPwwzPSJfsA/E5u53Y/DNesnHQxg==} + dependencies: + '@types/d3-shape': 1.3.12 + d3-shape: 1.3.7 + + /@visx/drag@3.3.0(react@18.2.0): + resolution: {integrity: sha512-fLNsorq6GyANCqAE/dToG0q7YoGVxihGC9FZQUp0MCV1wMJIJ45ximhrl5NDng2ytbpWnBmXu8M8hdsdFuvIXw==} + peerDependencies: + react: ^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/react': 18.2.75 + '@visx/event': 3.3.0 + '@visx/point': 3.3.0 + prop-types: 15.8.1 + react: 18.2.0 + + /@visx/event@3.3.0: + resolution: {integrity: sha512-fKalbNgNz2ooVOTXhvcOx5IlEQDgVfX66rI7bgZhBxI2/scy+5rWcXJXpwkheRF68SMx9R93SjKW6tmiD0h+jA==} + dependencies: + '@types/react': 18.2.75 + '@visx/point': 3.3.0 + + /@visx/glyph@3.3.0(react@18.2.0): + resolution: {integrity: sha512-U2r1rFLpim3afKuuAmrbxXGSDCaLwXHmjXxWN8PiIQPMxpS7eaa/V5g2TRd/+x0KCkaf3Ismk4VKMl8ZlrmxIQ==} + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/d3-shape': 1.3.12 + '@types/react': 18.2.75 + '@visx/group': 3.3.0(react@18.2.0) + classnames: 2.3.2 + d3-shape: 1.3.7 + prop-types: 15.8.1 + react: 18.2.0 + + /@visx/grid@3.5.0(react@18.2.0): + resolution: {integrity: sha512-i1pdobTE223ItMiER3q4ojIaZWja3vg46TkS6FotnBZ4c0VRDHSrALQPdi0na+YEgppASWCQ2WrI/vD6mIkhSg==} + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/react': 18.2.75 + '@visx/curve': 3.3.0 + '@visx/group': 3.3.0(react@18.2.0) + '@visx/point': 3.3.0 + '@visx/scale': 3.5.0 + '@visx/shape': 3.5.0(react@18.2.0) + classnames: 2.3.2 + prop-types: 15.8.1 + react: 18.2.0 + + /@visx/group@3.3.0(react@18.2.0): + resolution: {integrity: sha512-yKepDKwJqlzvnvPS0yDuW13XNrYJE4xzT6xM7J++441nu6IybWWwextyap8ey+kU651cYDb+q1Oi6aHvQwyEyw==} + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/react': 18.2.75 + classnames: 2.3.2 + prop-types: 15.8.1 + react: 18.2.0 + + /@visx/hierarchy@3.3.0(react@18.2.0): + resolution: {integrity: sha512-nPOZDsSst95+eZOQjZQbq1cuVywriiNAOQp2yXDkZov/32b7Qj0aakXvwU1Yd2DhriuSxlNzMecwVX7L6azrIg==} + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/d3-hierarchy': 1.1.11 + '@types/react': 18.2.75 + '@visx/group': 3.3.0(react@18.2.0) + classnames: 2.3.2 + d3-hierarchy: 1.1.9 + prop-types: 15.8.1 + react: 18.2.0 + + /@visx/point@3.3.0: + resolution: {integrity: sha512-03eBBIJarkmX79WbeEGTUZwmS5/MUuabbiM9KfkGS9pETBTWkp1DZtEHZdp5z34x5TDQVLSi0rk1Plg3/8RtDg==} + + /@visx/react-spring@3.10.1(@react-spring/web@9.7.3)(react@18.2.0): + resolution: {integrity: sha512-OB64l98nGF0pBFXUmAgzQVJNhQvLXTw3RpyP11LpljJh4NRtpcnuHAYCruVQJjRrN7MIrqPdhhG0xvibLib2rg==} + peerDependencies: + '@react-spring/web': ^9.4.5 + react: ^16.3.0-0 || ^17.0.0 || ^18.0.0 + dependencies: + '@react-spring/web': 9.7.3(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.75 + '@visx/axis': 3.10.1(react@18.2.0) + '@visx/grid': 3.5.0(react@18.2.0) + '@visx/scale': 3.5.0 + '@visx/text': 3.3.0(react@18.2.0) + classnames: 2.3.2 + prop-types: 15.8.1 + react: 18.2.0 + + /@visx/responsive@3.10.2(react@18.2.0): + resolution: {integrity: sha512-oDzFnLLpGpvTcFDoixVJX6iKOVzNJJW4dlAnsfgtxa/ibgMFZGoN4QL3NIzVlgg9s0fTDFCgQ+0FSMv1VvgKlQ==} + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/lodash': 4.14.202 + '@types/react': 18.2.75 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + + /@visx/scale@3.5.0: + resolution: {integrity: sha512-xo3zrXV2IZxrMq9Y9RUVJUpd93h3NO/r/y3GVi5F9AsbOzOhsLIbsPkunhO9mpUSR8LZ9TiumLEBrY+3frRBSg==} + dependencies: + '@visx/vendor': 3.5.0 + + /@visx/shape@3.5.0(react@18.2.0): + resolution: {integrity: sha512-DP3t9jBQ7dSE3e6ptA1xO4QAIGxO55GrY/6P+S6YREuQGjZgq20TLYLAsiaoPEzFSS4tp0m12ZTPivWhU2VBTw==} + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/d3-path': 1.0.11 + '@types/d3-shape': 1.3.12 + '@types/lodash': 4.14.202 + '@types/react': 18.2.75 + '@visx/curve': 3.3.0 + '@visx/group': 3.3.0(react@18.2.0) + '@visx/scale': 3.5.0 + classnames: 2.3.2 + d3-path: 1.0.9 + d3-shape: 1.3.7 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + + /@visx/text@3.3.0(react@18.2.0): + resolution: {integrity: sha512-fOimcsf0GtQE9whM5MdA/xIkHMaV29z7qNqNXysUDE8znSMKsN+ott7kSg2ljAEE89CQo3WKHkPNettoVsa84w==} + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/lodash': 4.14.202 + '@types/react': 18.2.75 + classnames: 2.3.2 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + reduce-css-calc: 1.3.0 + + /@visx/tooltip@3.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0ovbxnvAphEU/RVJprWHdOJT7p3YfBDpwXclXRuhIY2EkH59g8sDHatDcYwiNPeqk61jBh1KACRZxqToMuutlg==} + peerDependencies: + react: ^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0 + react-dom: ^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0 dependencies: - '@udecode/utils': 31.0.0 - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - - /@udecode/utils@31.0.0: - resolution: {integrity: sha512-06JTl1UAm3mzLLAx8hdMUFw4XRQG727z9JoJ9PeBnmFb9q4Cg3DdmbFnhVJMrBPWlyOwoHtPrBjnanTFeiP36Q==} + '@types/react': 18.2.75 + '@visx/bounds': 3.3.0(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0) + + /@visx/vendor@3.5.0: + resolution: {integrity: sha512-yt3SEZRVmt36+APsCISSO9eSOtzQkBjt+QRxNRzcTWuzwMAaF3PHCCSe31++kkpgY9yFoF+Gfes1TBe5NlETiQ==} + dependencies: + '@types/d3-array': 3.0.3 + '@types/d3-color': 3.1.0 + '@types/d3-delaunay': 6.0.1 + '@types/d3-format': 3.0.1 + '@types/d3-geo': 3.1.0 + '@types/d3-interpolate': 3.0.1 + '@types/d3-scale': 4.0.2 + '@types/d3-time': 3.0.0 + '@types/d3-time-format': 2.1.0 + d3-array: 3.2.1 + d3-color: 3.1.0 + d3-delaunay: 6.0.2 + d3-format: 3.1.0 + d3-geo: 3.1.0 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + internmap: 2.0.3 + + /@visx/voronoi@3.3.0(react@18.2.0): + resolution: {integrity: sha512-twVovwdcEZZRkFV+x6yXGcyohf7gYHz0y/dFoS0SfGtEwT+CMEQgfO3ZDNQjU8X/m8je/wu9qtd35Zur+0RYOQ==} + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + dependencies: + '@types/d3-voronoi': 1.1.12 + '@types/react': 18.2.75 + classnames: 2.3.2 + d3-voronoi: 1.1.4 + prop-types: 15.8.1 + react: 18.2.0 - /@udecode/zustood@2.0.0(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.2): - resolution: {integrity: sha512-zMmEhP55PHVxIsMWuBf7LbNUTkGDPAGeCtcbJUD+k47ubkLR/yg0hjQh0hD0DARl2X86U+SJNe628qxVtMARVw==} + /@visx/xychart@3.10.2(@react-spring/web@9.7.3)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5anIMd8QELJP+FMYYeC4vtdhSfHZlz+bx5NGe5eNSAfMFmrEJavYmhV8WblnjBa2DAm46E4yAP+8FJJG24MrSA==} peerDependencies: - zustand: '>=4.3.9' + '@react-spring/web': ^9.4.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - immer: 10.0.4 - react-tracked: 1.7.11(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) - zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) + '@react-spring/web': 9.7.3(react-dom@18.2.0)(react@18.2.0) + '@types/lodash': 4.14.202 + '@types/react': 18.2.75 + '@visx/annotation': 3.3.0(react-dom@18.2.0)(react@18.2.0) + '@visx/axis': 3.10.1(react@18.2.0) + '@visx/event': 3.3.0 + '@visx/glyph': 3.3.0(react@18.2.0) + '@visx/grid': 3.5.0(react@18.2.0) + '@visx/react-spring': 3.10.1(@react-spring/web@9.7.3)(react@18.2.0) + '@visx/responsive': 3.10.2(react@18.2.0) + '@visx/scale': 3.5.0 + '@visx/shape': 3.5.0(react@18.2.0) + '@visx/text': 3.3.0(react@18.2.0) + '@visx/tooltip': 3.3.0(react-dom@18.2.0)(react@18.2.0) + '@visx/vendor': 3.5.0 + '@visx/voronoi': 3.3.0(react@18.2.0) + classnames: 2.3.2 + d3-interpolate-path: 2.2.1 + d3-shape: 2.1.0 + lodash: 4.17.21 + mitt: 2.1.0 + prop-types: 15.8.1 + react: 18.2.0 transitivePeerDependencies: - - react - react-dom - - react-native - - scheduler - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true /@vitejs/plugin-react@4.2.1(vite@4.5.3): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} @@ -4827,8 +7088,9 @@ packages: vite: 4.5.3(@types/node@18.19.31) transitivePeerDependencies: - supports-color + dev: true - /@vitejs/plugin-react@4.2.1(vite@5.2.8): + /@vitejs/plugin-react@4.2.1(vite@5.2.10): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4839,10 +7101,9 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.2.8(@types/node@18.19.31) + vite: 5.2.10(@types/node@18.19.31) transitivePeerDependencies: - supports-color - dev: true /@vitest/coverage-v8@1.4.0(vitest@1.4.0): resolution: {integrity: sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==} @@ -5025,12 +7286,18 @@ packages: engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - dev: false /abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} dev: false + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -5090,6 +7357,9 @@ packages: uri-js: 4.4.1 dev: false + /anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -5102,6 +7372,17 @@ packages: type-fest: 0.21.3 dev: true + /ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + dependencies: + colorette: 1.4.0 + slice-ansi: 2.1.0 + strip-ansi: 5.2.0 + + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -5125,7 +7406,6 @@ packages: /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - dev: true /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} @@ -5141,6 +7421,9 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 + /appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true @@ -5185,7 +7468,6 @@ packages: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - dev: true /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -5335,6 +7617,9 @@ packages: engines: {node: '>=0.10.0'} dev: true + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + /asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: @@ -5354,11 +7639,24 @@ packages: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true + /ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.2 + + /astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: true + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} @@ -5440,9 +7738,59 @@ packages: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} dev: false + /babel-core@7.0.0-bridge.0(@babel/core@7.24.4): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.23.9): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.23.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.23.9) + core-js-compat: 3.36.1 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.23.9): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.23.9) + transitivePeerDependencies: + - supports-color + + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.23.9): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + dependencies: + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.23.9) + transitivePeerDependencies: + - '@babel/core' + /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + /balanced-match@0.4.2: + resolution: {integrity: sha512-STw03mQKnGUYtoNjmowo4F2cRmIIxYEGiMsjjwla/u5P1lxadj/05WkNaFjNiKTgJkj8KiXbgAiRTmcQRwQNtg==} + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -5472,7 +7820,6 @@ packages: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.0 - dev: true /blob-util@2.0.2: resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} @@ -5519,6 +7866,11 @@ packages: node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true @@ -5528,19 +7880,20 @@ packages: engines: {node: '>=8.0.0'} dev: false + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: true /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} @@ -5554,6 +7907,10 @@ packages: run-applescript: 7.0.0 dev: false + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -5574,6 +7931,22 @@ packages: set-function-length: 1.2.1 dev: true + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + dependencies: + callsites: 2.0.0 + + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + dependencies: + caller-callsite: 2.0.0 + + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -5595,7 +7968,10 @@ packages: /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} /caniuse-lite@1.0.30001588: resolution: {integrity: sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==} @@ -5646,7 +8022,6 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true /character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} @@ -5692,6 +8067,21 @@ packages: optionalDependencies: fsevents: 2.3.3 + /chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + dependencies: + '@types/node': 18.19.31 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + transitivePeerDependencies: + - supports-color + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} @@ -5700,7 +8090,6 @@ packages: /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - dev: true /ci-info@4.0.0: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} @@ -5727,12 +8116,10 @@ packages: engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - dev: true /cli-spinners@2.7.0: resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} engines: {node: '>=6'} - dev: true /cli-table3@0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} @@ -5762,7 +8149,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: true /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -5771,12 +8157,18 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - dev: true /clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} @@ -5803,6 +8195,9 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true @@ -5814,11 +8209,12 @@ packages: delayed-stream: 1.0.0 dev: true + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} requiresBuild: true - dev: true - optional: true /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} @@ -5829,11 +8225,18 @@ packages: engines: {node: '>= 6'} dev: true + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} dev: true + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + /compress-commons@6.0.2: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} @@ -5845,6 +8248,26 @@ packages: readable-stream: 4.3.0 dev: false + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + /compute-scroll-into-view@1.0.20: resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} @@ -5873,6 +8296,17 @@ packages: uint8array-extras: 0.3.0 dev: false + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -5890,7 +8324,6 @@ packages: resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} dependencies: browserslist: 4.23.0 - dev: true /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -5898,7 +8331,15 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false + + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 /crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} @@ -6040,6 +8481,85 @@ packages: yauzl: 2.10.0 dev: true + /d3-array@3.2.1: + resolution: {integrity: sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + /d3-delaunay@6.0.2: + resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} + engines: {node: '>=12'} + dependencies: + delaunator: 5.0.1 + + /d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + /d3-geo@3.1.0: + resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.1 + + /d3-hierarchy@1.1.9: + resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==} + + /d3-interpolate-path@2.2.1: + resolution: {integrity: sha512-6qLLh/KJVzls0XtMsMpcxhqMhgVEN7VIbR/6YGZe2qlS8KDgyyVB20XcmGnDyB051HcefQXM/Tppa9vcANEA4Q==} + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + + /d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + /d3-path@2.0.0: + resolution: {integrity: sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==} + + /d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.1 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + /d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + dependencies: + d3-path: 1.0.9 + + /d3-shape@2.1.0: + resolution: {integrity: sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==} + dependencies: + d3-path: 2.0.0 + + /d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + dependencies: + d3-time: 3.1.0 + + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.1 + + /d3-voronoi@1.1.4: + resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==} + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true @@ -6098,7 +8618,6 @@ packages: /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dev: true /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -6111,6 +8630,19 @@ packages: mimic-fn: 4.0.0 dev: false + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + /debug@3.2.7(supports-color@8.1.1): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -6146,7 +8678,6 @@ packages: /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - dev: true /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -6186,6 +8717,10 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + /default-browser-id@5.0.0: resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} engines: {node: '>=18'} @@ -6203,7 +8738,6 @@ packages: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - dev: true /define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} @@ -6228,15 +8762,31 @@ packages: object-keys: 1.1.1 dev: true + /delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + dependencies: + robust-predicates: 3.0.2 + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true + /denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -6365,6 +8915,9 @@ packages: safer-buffer: 2.1.2 dev: true + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + /electron-to-chromium@1.4.673: resolution: {integrity: sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw==} @@ -6374,6 +8927,10 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -6417,11 +8974,27 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false + /envinfo@7.12.0: + resolution: {integrity: sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==} + engines: {node: '>=4'} + hasBin: true + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: true + + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + + /errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} + dependencies: + accepts: 1.3.8 + escape-html: 1.0.3 /es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} @@ -6587,6 +9160,7 @@ packages: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 + dev: true /esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} @@ -6617,7 +9191,6 @@ packages: '@esbuild/win32-arm64': 0.20.2 '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 - dev: true /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -6630,10 +9203,13 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - dev: true /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} @@ -7028,7 +9604,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} @@ -7062,12 +9637,14 @@ packages: /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - dev: false /eventemitter2@6.4.7: resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} @@ -7092,6 +9669,20 @@ packages: strip-final-newline: 2.0.0 dev: true + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -7213,6 +9804,12 @@ packages: resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} dev: false + /fast-xml-parser@4.3.6: + resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} + hasBin: true + dependencies: + strnum: 1.0.5 + /fastify-plugin@4.5.0: resolution: {integrity: sha512-79ak0JxddO0utAXAQ5ccKhvs6vX2MGyHHMMsmZkBANrq3hXc1CHzvNPHOcvTsVMEPl5I+NT+RO4YKMGehOfSIg==} dev: false @@ -7245,6 +9842,11 @@ packages: dependencies: reusify: 1.0.4 + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: @@ -7277,11 +9879,33 @@ packages: flat-cache: 3.0.4 dev: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} dependencies: - to-regex-range: 5.0.1 + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 /find-my-way@8.1.0: resolution: {integrity: sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==} @@ -7296,13 +9920,18 @@ packages: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: true + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -7310,7 +9939,6 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} @@ -7339,6 +9967,16 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true + /flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + + /flow-parser@0.234.0: + resolution: {integrity: sha512-J1Wn32xDF1l8FqwshoQnTwC9K3aJ83MFuXUx9AcBQr8ttbI/rkjEgAqnjxaIJuZ6RGMfccN5ZxDJSOMM64qy9Q==} + engines: {node: '>=0.4.0'} + + /fontfaceobserver@2.1.0: + resolution: {integrity: sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng==} + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -7398,6 +10036,10 @@ packages: optionalDependencies: '@emotion/is-prop-valid': 0.8.8 + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -7431,7 +10073,6 @@ packages: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: true /fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} @@ -7477,7 +10118,6 @@ packages: /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: true /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -7509,6 +10149,10 @@ packages: pump: 3.0.0 dev: true + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -7587,7 +10231,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -7719,6 +10362,28 @@ packages: resolution: {integrity: sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==} dev: true + /hermes-estree@0.19.1: + resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} + + /hermes-estree@0.20.1: + resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} + + /hermes-parser@0.19.1: + resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + dependencies: + hermes-estree: 0.19.1 + + /hermes-parser@0.20.1: + resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} + dependencies: + hermes-estree: 0.20.1 + + /hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} + dependencies: + source-map: 0.7.4 + /hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: @@ -7732,6 +10397,16 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + /http-signature@1.3.6: resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} engines: {node: '>=0.10'} @@ -7750,6 +10425,10 @@ packages: engines: {node: '>=8.12.0'} dev: true + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -7770,12 +10449,26 @@ packages: engines: {node: '>= 4'} dev: true + /image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + dependencies: + queue: 6.0.2 + /immer@10.0.4: resolution: {integrity: sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==} /immer@9.0.21: resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -7792,7 +10485,6 @@ packages: /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - dev: true /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} @@ -7843,6 +10535,10 @@ packages: side-channel: 1.0.6 dev: true + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + /intl-messageformat@10.3.3: resolution: {integrity: sha512-un/f07/g2e/3Q8e1ghDKET+el22Bi49M7O/rHxd597R+oLpPOMykSv5s51cABVfu3FZW+fea4hrzf2MHu1W4hw==} dependencies: @@ -7898,7 +10594,6 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} @@ -7973,6 +10668,15 @@ packages: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} dev: true + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7989,6 +10693,10 @@ packages: call-bind: 1.0.7 dev: true + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -8032,7 +10740,6 @@ packages: /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - dev: true /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -8077,6 +10784,12 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -8155,7 +10868,6 @@ packages: /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - dev: true /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} @@ -8179,6 +10891,16 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + /is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} @@ -8192,7 +10914,6 @@ packages: /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -8206,6 +10927,10 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: true @@ -8253,6 +10978,14 @@ packages: set-function-name: 2.0.2 dev: true + /its-fine@1.2.5(react@18.2.0): + resolution: {integrity: sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==} + peerDependencies: + react: '>=18.0' + dependencies: + '@types/react-reconciler': 0.28.8 + react: 18.2.0 + /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -8261,6 +10994,74 @@ packages: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.31 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.24.2 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.31 + jest-util: 29.7.0 + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.31 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 18.19.31 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true @@ -8269,6 +11070,15 @@ packages: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true + /joi@17.13.0: + resolution: {integrity: sha512-9qcrTyoBmFZRNHeVP4edKqIUEgFzq7MHvTNSDuHSqkpOPtiBkgNgcmTSqmiw1kw9tdKaiddvIDv/eCJDxmqWCA==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + /jotai-optics@0.3.2(jotai@2.8.0)(optics-ts@2.4.1): resolution: {integrity: sha512-RH6SvqU5hmkVqnHmaqf9zBXvIAs4jLxkDHS4fr5ljuBKHs8+HQ02v+9hX7ahTppxx6dUb0GGUE80jQKJ0kFTLw==} peerDependencies: @@ -8327,7 +11137,6 @@ packages: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -8340,10 +11149,44 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: true + /jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + + /jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + + /jscodeshift@0.14.0(@babel/preset-env@7.24.4): + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/core': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.4) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.4) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) + '@babel/preset-env': 7.24.4(@babel/core@7.23.9) + '@babel/preset-flow': 7.24.1(@babel/core@7.24.4) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.4) + '@babel/register': 7.23.7(@babel/core@7.24.4) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.4) + chalk: 4.1.2 + flow-parser: 0.234.0 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.21.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true - dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -8356,6 +11199,9 @@ packages: hasBin: true dev: true + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true @@ -8420,7 +11266,6 @@ packages: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 - dev: true /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -8456,7 +11301,6 @@ packages: /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: true /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -8470,6 +11314,9 @@ packages: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} dev: true + /konva@9.3.6: + resolution: {integrity: sha512-dqR8EbcM0hjuilZCBP6xauQ5V3kH3m9kBcsDkqPypQuRgsXbcXUrxqYxhNbdvKZpYNW8Amq94jAD/C0NY3qfBQ==} + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -8493,6 +11340,10 @@ packages: readable-stream: 2.3.7 dev: false + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -8509,6 +11360,14 @@ packages: set-cookie-parser: 2.6.0 dev: false + /lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + dependencies: + debug: 2.6.9 + marky: 1.2.5 + transitivePeerDependencies: + - supports-color + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -8554,19 +11413,24 @@ packages: pkg-types: 1.0.3 dev: true + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - dev: true /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: true /locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} @@ -8577,7 +11441,9 @@ packages: /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: false + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} @@ -8602,6 +11468,9 @@ packages: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -8611,7 +11480,6 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: true /log-update@4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} @@ -8623,6 +11491,14 @@ packages: wrap-ansi: 6.2.0 dev: true + /logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true + dependencies: + ansi-fragments: 0.2.1 + dayjs: 1.11.10 + yargs: 15.4.1 + /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -8692,6 +11568,13 @@ packages: source-map-js: 1.0.2 dev: true + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.2 + /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -8702,6 +11585,11 @@ packages: /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -8715,6 +11603,12 @@ packages: /markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + /marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + + /math-expression-evaluator@1.4.0: + resolution: {integrity: sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==} + /mdast-util-find-and-replace@2.2.2: resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} dependencies: @@ -8803,61 +11697,260 @@ packages: transitivePeerDependencies: - supports-color - /mdast-util-phrasing@3.0.1: - resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + /mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + dependencies: + '@types/mdast': 3.0.10 + unist-util-is: 5.2.1 + + /mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.0.2 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true + + /mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + dependencies: + '@types/mdast': 3.0.10 + + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + /meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 2.5.0 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.13.1 + yargs-parser: 18.1.3 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /metric-lcs@0.1.2: + resolution: {integrity: sha512-+TZ5dUDPKPJaU/rscTzxyN8ZkX7eAVLAiQU/e+YINleXPv03SCmJShaMT1If1liTH8OcmWXZs0CmzCBRBLcMpA==} + dev: true + + /metro-babel-transformer@0.80.8: + resolution: {integrity: sha512-TTzNwRZb2xxyv4J/+yqgtDAP2qVqH3sahsnFu6Xv4SkLqzrivtlnyUbaeTdJ9JjtADJUEjCbgbFgUVafrXdR9Q==} + engines: {node: '>=18'} + dependencies: + '@babel/core': 7.24.4 + hermes-parser: 0.20.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + /metro-cache-key@0.80.8: + resolution: {integrity: sha512-qWKzxrLsRQK5m3oH8ePecqCc+7PEhR03cJE6Z6AxAj0idi99dHOSitTmY0dclXVB9vP2tQIAE8uTd8xkYGk8fA==} + engines: {node: '>=18'} + + /metro-cache@0.80.8: + resolution: {integrity: sha512-5svz+89wSyLo7BxdiPDlwDTgcB9kwhNMfNhiBZPNQQs1vLFXxOkILwQiV5F2EwYT9DEr6OPZ0hnJkZfRQ8lDYQ==} + engines: {node: '>=18'} + dependencies: + metro-core: 0.80.8 + rimraf: 3.0.2 + + /metro-config@0.80.8: + resolution: {integrity: sha512-VGQJpfJawtwRzGzGXVUoohpIkB0iPom4DmSbAppKfumdhtLA8uVeEPp2GM61kL9hRvdbMhdWA7T+hZFDlo4mJA==} + engines: {node: '>=18'} + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + jest-validate: 29.7.0 + metro: 0.80.8 + metro-cache: 0.80.8 + metro-core: 0.80.8 + metro-runtime: 0.80.8 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /metro-core@0.80.8: + resolution: {integrity: sha512-g6lud55TXeISRTleW6SHuPFZHtYrpwNqbyFIVd9j9Ofrb5IReiHp9Zl8xkAfZQp8v6ZVgyXD7c130QTsCz+vBw==} + engines: {node: '>=18'} + dependencies: + lodash.throttle: 4.1.1 + metro-resolver: 0.80.8 + + /metro-file-map@0.80.8: + resolution: {integrity: sha512-eQXMFM9ogTfDs2POq7DT2dnG7rayZcoEgRbHPXvhUWkVwiKkro2ngcBE++ck/7A36Cj5Ljo79SOkYwHaWUDYDw==} + engines: {node: '>=18'} + dependencies: + anymatch: 3.1.3 + debug: 2.6.9 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.5 + node-abort-controller: 3.1.1 + nullthrows: 1.1.1 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - supports-color + + /metro-minify-terser@0.80.8: + resolution: {integrity: sha512-y8sUFjVvdeUIINDuW1sejnIjkZfEF+7SmQo0EIpYbWmwh+kq/WMj74yVaBWuqNjirmUp1YNfi3alT67wlbBWBQ==} + engines: {node: '>=18'} + dependencies: + terser: 5.30.4 + + /metro-resolver@0.80.8: + resolution: {integrity: sha512-JdtoJkP27GGoZ2HJlEsxs+zO7jnDUCRrmwXJozTlIuzLHMRrxgIRRby9fTCbMhaxq+iA9c+wzm3iFb4NhPmLbQ==} + engines: {node: '>=18'} + + /metro-runtime@0.80.8: + resolution: {integrity: sha512-2oScjfv6Yb79PelU1+p8SVrCMW9ZjgEiipxq7jMRn8mbbtWzyv3g8Mkwr+KwOoDFI/61hYPUbY8cUnu278+x1g==} + engines: {node: '>=18'} + dependencies: + '@babel/runtime': 7.23.9 + + /metro-source-map@0.80.8: + resolution: {integrity: sha512-+OVISBkPNxjD4eEKhblRpBf463nTMk3KMEeYS8Z4xM/z3qujGJGSsWUGRtH27+c6zElaSGtZFiDMshEb8mMKQg==} + engines: {node: '>=18'} + dependencies: + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + invariant: 2.2.4 + metro-symbolicate: 0.80.8 + nullthrows: 1.1.1 + ob1: 0.80.8 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + /metro-symbolicate@0.80.8: + resolution: {integrity: sha512-nwhYySk79jQhwjL9QmOUo4wS+/0Au9joEryDWw7uj4kz2yvw1uBjwmlql3BprQCBzRdB3fcqOP8kO8Es+vE31g==} + engines: {node: '>=18'} + hasBin: true dependencies: - '@types/mdast': 3.0.10 - unist-util-is: 5.2.1 + invariant: 2.2.4 + metro-source-map: 0.80.8 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color - /mdast-util-to-markdown@1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + /metro-transform-plugins@0.80.8: + resolution: {integrity: sha512-sSu8VPL9Od7w98MftCOkQ1UDeySWbsIAS5I54rW22BVpPnI3fQ42srvqMLaJUQPjLehUanq8St6OMBCBgH/UWw==} + engines: {node: '>=18'} dependencies: - '@types/mdast': 3.0.10 - '@types/unist': 2.0.6 - longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.0.2 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 - - /mdast-util-to-string@2.0.0: - resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} - dev: true + '@babel/core': 7.24.4 + '@babel/generator': 7.24.4 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color - /mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + /metro-transform-worker@0.80.8: + resolution: {integrity: sha512-+4FG3TQk3BTbNqGkFb2uCaxYTfsbuFOCKMMURbwu0ehCP8ZJuTUramkaNZoATS49NSAkRgUltgmBa4YaKZ5mqw==} + engines: {node: '>=18'} dependencies: - '@types/mdast': 3.0.10 + '@babel/core': 7.24.4 + '@babel/generator': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + metro: 0.80.8 + metro-babel-transformer: 0.80.8 + metro-cache: 0.80.8 + metro-cache-key: 0.80.8 + metro-minify-terser: 0.80.8 + metro-source-map: 0.80.8 + metro-transform-plugins: 0.80.8 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate - /meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} + /metro@0.80.8: + resolution: {integrity: sha512-in7S0W11mg+RNmcXw+2d9S3zBGmCARDxIwoXJAmLUQOQoYsRP3cpGzyJtc7WOw8+FXfpgXvceD0u+PZIHXEL7g==} + engines: {node: '>=18'} + hasBin: true dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - /metric-lcs@0.1.2: - resolution: {integrity: sha512-+TZ5dUDPKPJaU/rscTzxyN8ZkX7eAVLAiQU/e+YINleXPv03SCmJShaMT1If1liTH8OcmWXZs0CmzCBRBLcMpA==} - dev: true + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.4 + '@babel/generator': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + denodeify: 1.2.1 + error-stack-parser: 2.1.4 + graceful-fs: 4.2.11 + hermes-parser: 0.20.1 + image-size: 1.1.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.80.8 + metro-cache: 0.80.8 + metro-cache-key: 0.80.8 + metro-config: 0.80.8 + metro-core: 0.80.8 + metro-file-map: 0.80.8 + metro-resolver: 0.80.8 + metro-runtime: 0.80.8 + metro-source-map: 0.80.8 + metro-symbolicate: 0.80.8 + metro-transform-plugins: 0.80.8 + metro-transform-worker: 0.80.8 + mime-types: 2.1.35 + node-fetch: 2.6.9 + nullthrows: 1.1.1 + rimraf: 3.0.2 + serialize-error: 2.1.0 + source-map: 0.5.7 + strip-ansi: 6.0.1 + throat: 5.0.0 + ws: 7.5.9 + yargs: 17.7.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate /micromark-core-commonmark@1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} @@ -9098,19 +12191,26 @@ packages: /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - dev: true /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: true + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - dev: true /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -9160,12 +12260,14 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true /minipass@7.0.4: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} + /mitt@2.1.0: + resolution: {integrity: sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==} + /mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -9174,6 +12276,17 @@ packages: engines: {node: '>= 8.0.0'} dev: true + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + /mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} dependencies: @@ -9203,12 +12316,14 @@ packages: engines: {node: '>=10'} dev: true + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true /msw@1.3.3(typescript@5.4.4): resolution: {integrity: sha512-CiPyRFiYJCXYyH/vwxT7m+sa4VZHuUH6cGwRBj0kaTjBGpsk4EnL47YzhoA859htVCF2vzqZuOsomIUlFqg9GQ==} @@ -9270,6 +12385,13 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + /nise@5.1.5: resolution: {integrity: sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==} dependencies: @@ -9280,6 +12402,10 @@ packages: path-to-regexp: 1.8.0 dev: true + /nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + /nock@13.5.4: resolution: {integrity: sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==} engines: {node: '>= 10.13'} @@ -9291,6 +12417,15 @@ packages: - supports-color dev: true + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + dependencies: + minimatch: 3.1.2 + /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -9306,7 +12441,6 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 - dev: true /node-fetch@3.3.2: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} @@ -9317,6 +12451,10 @@ packages: formdata-polyfill: 4.0.10 dev: false + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + /node-html-parser@5.3.3: resolution: {integrity: sha512-ncg1033CaX9UexbyA7e1N0aAoAYRDiV8jkTvzEnfd1GDvzFdrsXLzR4p4ik8mwLgnaKP/jyUFWDy9q3jvRT2Jw==} dependencies: @@ -9324,9 +12462,16 @@ packages: he: 1.2.0 dev: true + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -9350,7 +12495,6 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: true /npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} @@ -9365,6 +12509,13 @@ packages: boolbase: 1.0.0 dev: true + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + /ob1@0.80.8: + resolution: {integrity: sha512-QHJQk/lXMmAW8I7AIM3in1MSlwe1umR72Chhi8B7Xnq6mzjhBKkA6Fy/zAhQnGkA4S912EPCEvTij5yh+EQTAA==} + engines: {node: '>=18'} + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -9454,6 +12605,22 @@ packages: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} dev: false + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -9464,7 +12631,6 @@ packages: engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: true /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -9483,6 +12649,19 @@ packages: is-wsl: 3.1.0 dev: false + /open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + dependencies: + is-wsl: 1.1.0 + + /open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + /optics-ts@2.4.1: resolution: {integrity: sha512-HaYzMHvC80r7U/LqAd4hQyopDezC60PO2qF5GuIwALut2cl5rK1VWHsqTp0oqoJJWjiv6uXKqsO+Q2OO0C3MmQ==} @@ -9511,7 +12690,6 @@ packages: log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: true /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} @@ -9542,14 +12720,12 @@ packages: engines: {node: '>=6'} dependencies: p-try: 2.2.0 - dev: true /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: true /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -9565,19 +12741,23 @@ packages: yocto-queue: 1.0.0 dev: true + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - dev: true /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: true /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} @@ -9601,7 +12781,6 @@ packages: /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - dev: true /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -9621,6 +12800,13 @@ packages: is-hexadecimal: 1.0.4 dev: true + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -9631,14 +12817,21 @@ packages: lines-and-columns: 1.2.4 dev: true + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: true + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true /path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} @@ -9713,7 +12906,6 @@ packages: /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - dev: true /pino-abstract-transport@1.1.0: resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} @@ -9747,6 +12939,12 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -9875,6 +13073,15 @@ packages: engines: {node: '>=6'} dev: true + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -9891,7 +13098,6 @@ packages: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: true /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} @@ -9899,7 +13105,6 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false /process-warning@2.2.0: resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} @@ -9913,13 +13118,17 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + dependencies: + asap: 2.0.6 + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: false /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -9979,6 +13188,11 @@ packages: side-channel: 1.0.6 dev: true + /querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true @@ -9990,6 +13204,11 @@ packages: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} dev: false + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + dependencies: + inherits: 2.0.4 + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} dev: false @@ -9999,6 +13218,10 @@ packages: engines: {node: '>=8'} dev: true + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + /react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} peerDependencies: @@ -10023,6 +13246,15 @@ packages: react-onclickoutside: 6.13.0(react-dom@18.2.0)(react@18.2.0) react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0) + /react-devtools-core@5.1.0: + resolution: {integrity: sha512-NRtLBqYVLrIY+lOa2oTpFiAhI7Hru0AUXI0tP9neCyaPPAzlZyeH0i+VZ0shIyRTJbpvyqbD/uCsewA2hpfZHw==} + dependencies: + shell-quote: 1.8.1 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + /react-dnd-html5-backend@16.0.1: resolution: {integrity: sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==} dependencies: @@ -10082,6 +13314,78 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ohcX1BJINL43m4ynjZ24MxFI1syjBdrXhqVxYVDw2rKgr3yuS0x/6m1Y2Z4sl4T/gKhfreBx8KHisd0XC6OT1g==} + peerDependencies: + konva: ^8.0.1 || ^7.2.5 || ^9.0.0 + react: '>=18.0.0' + react-dom: '>=18.0.0' + dependencies: + '@types/react-reconciler': 0.28.8 + its-fine: 1.2.5(react@18.2.0) + konva: 9.3.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-reconciler: 0.29.0(react@18.2.0) + scheduler: 0.23.0 + + /react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4)(react@18.2.0): + resolution: {integrity: sha512-Vpp9WPmkCm4TUH5YDxwQhqktGVon/yLpjbTgjgLqup3GglOgWagYCX3MlmK1iksIcqtyMJHMEWa+UEzJ3G9T8w==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.6 + react: 18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native-community/cli': 13.6.4 + '@react-native-community/cli-platform-android': 13.6.4 + '@react-native-community/cli-platform-ios': 13.6.4 + '@react-native/assets-registry': 0.74.81 + '@react-native/codegen': 0.74.81(@babel/preset-env@7.24.4) + '@react-native/community-cli-plugin': 0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4) + '@react-native/gradle-plugin': 0.74.81 + '@react-native/js-polyfills': 0.74.81 + '@react-native/normalize-colors': 0.74.81 + '@react-native/virtualized-lists': 0.74.81(react-native@0.74.0)(react@18.2.0) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + base64-js: 1.5.1 + chalk: 4.1.2 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + jsc-android: 250231.0.0 + memoize-one: 5.2.1 + metro-runtime: 0.80.8 + metro-source-map: 0.80.8 + mkdirp: 0.5.6 + nullthrows: 1.1.1 + pretty-format: 26.6.2 + promise: 8.3.0 + react: 18.2.0 + react-devtools-core: 5.1.0 + react-refresh: 0.14.0 + react-shallow-renderer: 16.15.0(react@18.2.0) + regenerator-runtime: 0.13.11 + scheduler: 0.24.0-canary-efb381bbf-20230505 + stacktrace-parser: 0.1.10 + whatwg-fetch: 3.6.20 + ws: 6.2.2 + yargs: 17.7.1 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + /react-onclickoutside@6.13.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==} peerDependencies: @@ -10104,6 +13408,26 @@ packages: react-fast-compare: 3.2.2 warning: 4.0.3 + /react-reconciler@0.27.0(react@18.2.0): + resolution: {integrity: sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^18.0.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.21.0 + + /react-reconciler@0.29.0(react@18.2.0): + resolution: {integrity: sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} @@ -10141,6 +13465,38 @@ packages: use-callback-ref: 1.3.0(@types/react@18.2.75)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.75)(react@18.2.0) + /react-shallow-renderer@16.15.0(react@18.2.0): + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + object-assign: 4.1.1 + react: 18.2.0 + react-is: 18.2.0 + + /react-spring@9.7.3(@react-three/fiber@8.16.2)(konva@9.3.6)(react-dom@18.2.0)(react-konva@18.2.10)(react-native@0.74.0)(react-zdog@1.2.2)(react@18.2.0)(three@0.163.0)(zdog@1.1.3): + resolution: {integrity: sha512-oTxDpFV5gzq7jQX6+bU0SVq+vX8VnuuT5c8Zwn6CpDErOPvCmV+DRkPiEBtaL3Ozgzwiy5yFx83N0h303j/r3A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@react-spring/core': 9.7.3(react@18.2.0) + '@react-spring/konva': 9.7.3(konva@9.3.6)(react-konva@18.2.10)(react@18.2.0) + '@react-spring/native': 9.7.3(react-native@0.74.0)(react@18.2.0) + '@react-spring/three': 9.7.3(@react-three/fiber@8.16.2)(react@18.2.0)(three@0.163.0) + '@react-spring/web': 9.7.3(react-dom@18.2.0)(react@18.2.0) + '@react-spring/zdog': 9.7.3(react-dom@18.2.0)(react-zdog@1.2.2)(react@18.2.0)(zdog@1.1.3) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@react-three/fiber' + - konva + - react-konva + - react-native + - react-zdog + - three + - zdog + /react-style-singleton@2.2.1(@types/react@18.2.75)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -10170,7 +13526,7 @@ packages: transitivePeerDependencies: - '@types/react' - /react-tracked@1.7.11(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0): + /react-tracked@1.7.11(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0): resolution: {integrity: sha512-+XXv4dJH7NnLtSD/cPVL9omra4A3KRK91L33owevXZ81r7qF/a9DdCsVZa90jMGht/V1Ym9sasbmidsJykhULQ==} peerDependencies: react: '>=16.8.0' @@ -10186,8 +13542,26 @@ packages: proxy-compare: 2.4.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - scheduler: 0.23.0 - use-context-selector: 1.4.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) + react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4)(react@18.2.0) + scheduler: 0.23.0 + use-context-selector: 1.4.1(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0) + + /react-use-measure@2.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==} + peerDependencies: + react: '>=16.13' + react-dom: '>=16.13' + dependencies: + debounce: 1.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /react-zdog@1.2.2: + resolution: {integrity: sha512-Ix7ALha91aOEwiHuxumCeYbARS5XNpc/w0v145oGkM6poF/CvhKJwzLhM5sEZbtrghMA+psAhOJkCTzJoseicA==} + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resize-observer-polyfill: 1.5.1 /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} @@ -10239,7 +13613,6 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: false /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} @@ -10248,7 +13621,6 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: true /readable-stream@4.3.0: resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} @@ -10272,11 +13644,23 @@ packages: dependencies: picomatch: 2.3.1 + /readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} dev: false + /recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.15.2 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.6.2 + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -10285,6 +13669,18 @@ packages: strip-indent: 3.0.0 dev: true + /reduce-css-calc@1.3.0: + resolution: {integrity: sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA==} + dependencies: + balanced-match: 0.4.2 + math-expression-evaluator: 1.4.0 + reduce-function-call: 1.0.3 + + /reduce-function-call@1.0.3: + resolution: {integrity: sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==} + dependencies: + balanced-match: 1.0.2 + /redux@4.2.1: resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} dependencies: @@ -10303,13 +13699,26 @@ packages: which-builtin-type: 1.1.3 dev: true + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: true /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.9 + /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -10325,6 +13734,17 @@ packages: set-function-name: 2.0.2 dev: true + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + /regjsparser@0.10.0: resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} hasBin: true @@ -10332,6 +13752,12 @@ packages: jsesc: 0.5.0 dev: true + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + /remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} dependencies: @@ -10360,7 +13786,6 @@ packages: /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: true /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} @@ -10369,12 +13794,18 @@ packages: /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true + /resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -10427,7 +13858,6 @@ packages: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} @@ -10441,12 +13871,20 @@ packages: /rfdc@1.3.1: resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - dev: true + + /robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} /rollup@3.29.4: resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} @@ -10454,6 +13892,7 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: true /rollup@4.14.1: resolution: {integrity: sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==} @@ -10478,7 +13917,6 @@ packages: '@rollup/rollup-win32-ia32-msvc': 4.14.1 '@rollup/rollup-win32-x64-msvc': 4.14.1 fsevents: 2.3.3 - dev: true /run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} @@ -10519,11 +13957,9 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true /safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} @@ -10549,11 +13985,21 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true + /scheduler@0.21.0: + resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} + dependencies: + loose-envify: 1.4.0 + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 + /scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + dependencies: + loose-envify: 1.4.0 + /scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} dependencies: @@ -10563,10 +14009,16 @@ packages: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: false + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -10586,9 +14038,43 @@ packages: dependencies: lru-cache: 6.0.0 + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + /serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} @@ -10615,6 +14101,15 @@ packages: has-property-descriptors: 1.0.2 dev: true + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -10637,6 +14132,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + /side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -10653,7 +14151,6 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -10681,12 +14178,10 @@ packages: /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: true /slate-history@0.100.0(slate@0.102.0): resolution: {integrity: sha512-x5rUuWLNtH97hs9PrFovGgt3Qc5zkTm/5mcUB+0NR/TK923eLax4HsL6xACLHMs245nI6aJElyM1y6hN0y5W/Q==} @@ -10731,6 +14226,14 @@ packages: is-plain-object: 5.0.0 tiny-warning: 1.0.3 + /slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -10777,10 +14280,23 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} @@ -10822,7 +14338,6 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true /sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} @@ -10840,10 +14355,33 @@ packages: tweetnacl: 0.14.5 dev: true + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true @@ -10948,13 +14486,11 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - dev: false /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: true /stringify-object@4.0.1: resolution: {integrity: sha512-qpV1FBpN0R1gDAhCHIU71SYGZb35Te+gOQbQ6lYRmVJT7pF1NB8mkHeEJvyYNiHXw+fB4KIbeIjQl1rgiIijiA==} @@ -10965,6 +14501,12 @@ packages: is-regexp: 3.1.0 dev: true + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -10985,7 +14527,6 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: true /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -11010,6 +14551,9 @@ packages: js-tokens: 8.0.3 dev: true + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + /stubborn-fs@1.2.5: resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} dev: false @@ -11027,6 +14571,9 @@ packages: pirates: 4.0.6 ts-interface-checker: 0.1.13 + /sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -11038,7 +14585,6 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: true /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} @@ -11050,6 +14596,13 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /suspend-react@0.1.3(react@18.2.0): + resolution: {integrity: sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==} + peerDependencies: + react: '>=17.0' + dependencies: + react: 18.2.0 + /synckit@0.6.2: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} @@ -11111,11 +14664,31 @@ packages: streamx: 2.15.5 dev: false + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + dependencies: + rimraf: 2.6.3 + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true + /terser@5.30.4: + resolution: {integrity: sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -11146,10 +14719,22 @@ packages: real-require: 0.2.0 dev: false + /three@0.163.0: + resolution: {integrity: sha512-HlMgCb2TF/dTLRtknBnjUTsR8FsDqBY43itYop2+Zg822I+Kd0Ua2vs8CvfBVefXkBdNDrLMoRTGCIIpfCuDew==} + + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + /throttleit@1.0.1: resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} dev: true + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.7 + xtend: 4.0.2 + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -11188,6 +14773,9 @@ packages: rimraf: 3.0.2 dev: true + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -11203,6 +14791,10 @@ packages: engines: {node: '>=12'} dev: false + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + /totalist@3.0.0: resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} engines: {node: '>=6'} @@ -11220,7 +14812,6 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} @@ -11334,7 +14925,6 @@ packages: /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - dev: true /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} @@ -11356,6 +14946,10 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} @@ -11452,6 +15046,25 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: @@ -11513,7 +15126,6 @@ packages: /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - dev: true /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} @@ -11528,6 +15140,10 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -11576,7 +15192,7 @@ packages: dependencies: react: 18.2.0 - /use-context-selector@1.4.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0): + /use-context-selector@1.4.1(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0): resolution: {integrity: sha512-Io2ArvcRO+6MWIhkdfMFt+WKQX+Vb++W8DS2l03z/Vw/rz3BclKpM0ynr4LYGyU85Eke+Yx5oIhTY++QR0ZDoA==} peerDependencies: react: '>=16.8.0' @@ -11591,6 +15207,7 @@ packages: dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4)(react@18.2.0) scheduler: 0.23.0 /use-deep-compare@1.2.1(react@18.2.0): @@ -11601,6 +15218,14 @@ packages: dequal: 2.0.3 react: 18.2.0 + /use-font-face-observer@1.2.1(react@18.2.0): + resolution: {integrity: sha512-5ieKTMvtUux0l7YoOEz842djfgMH3oVg+tO13E/kyS+gGRLDyfAMmRv0D3fzM7UdFag1kz+3AQIFLkkfEF3TUg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + fontfaceobserver: 2.1.0 + react: 18.2.0 + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.75)(react@18.2.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: @@ -11669,6 +15294,10 @@ packages: which-typed-array: 1.1.15 dev: true + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -11708,6 +15337,10 @@ packages: engines: {node: '>= 0.10'} dev: true + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + /verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} @@ -11740,7 +15373,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.8(@types/node@18.19.31) + vite: 5.2.10(@types/node@18.19.31) transitivePeerDependencies: - '@types/node' - less @@ -11752,7 +15385,7 @@ packages: - terser dev: true - /vite-plugin-dts@3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.8): + /vite-plugin-dts@3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10): resolution: {integrity: sha512-zEYyQxH7lKto1VTKZHF3ZZeOPkkJgnMrePY4VxDHfDSvDjmYMMfWjZxYmNwW8QxbaItWJQhhXY+geAbyNphI7g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -11769,7 +15402,7 @@ packages: kolorist: 1.8.0 magic-string: 0.30.9 typescript: 5.4.4 - vite: 5.2.8(@types/node@18.19.31) + vite: 5.2.10(@types/node@18.19.31) vue-tsc: 1.8.27(typescript@5.4.4) transitivePeerDependencies: - '@types/node' @@ -11777,20 +15410,7 @@ packages: - supports-color dev: true - /vite-plugin-externals@0.6.2(vite@4.5.3): - resolution: {integrity: sha512-R5oVY8xDJjLXLTs2XDYzvYbc/RTZuIwOx2xcFbYf+/VXB6eJuatDgt8jzQ7kZ+IrgwQhe6tU8U2fTyy72C25CQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: '>=2.0.0' - dependencies: - acorn: 8.8.2 - es-module-lexer: 0.4.1 - fs-extra: 10.1.0 - magic-string: 0.25.9 - vite: 4.5.3(@types/node@18.19.31) - dev: false - - /vite-plugin-externals@0.6.2(vite@5.2.8): + /vite-plugin-externals@0.6.2(vite@5.2.10): resolution: {integrity: sha512-R5oVY8xDJjLXLTs2XDYzvYbc/RTZuIwOx2xcFbYf+/VXB6eJuatDgt8jzQ7kZ+IrgwQhe6tU8U2fTyy72C25CQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -11800,10 +15420,9 @@ packages: es-module-lexer: 0.4.1 fs-extra: 10.1.0 magic-string: 0.25.9 - vite: 5.2.8(@types/node@18.19.31) - dev: true + vite: 5.2.10(@types/node@18.19.31) - /vite-plugin-static-copy@1.0.2(vite@5.2.8): + /vite-plugin-static-copy@1.0.2(vite@5.2.10): resolution: {integrity: sha512-AfmEF+a/mfjsUsrgjbCkhzUCeIUF4EKQXXt3Ie1cour9MBpy6f6GphbdW2td28oYfOrwCyRzFCksgLkpk58q6Q==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: @@ -11813,7 +15432,7 @@ packages: fast-glob: 3.3.2 fs-extra: 11.1.1 picocolors: 1.0.0 - vite: 5.2.8(@types/node@18.19.31) + vite: 5.2.10(@types/node@18.19.31) dev: true /vite@4.5.3(@types/node@18.19.31): @@ -11850,6 +15469,42 @@ packages: rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 + dev: true + + /vite@5.2.10(@types/node@18.19.31): + resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.19.31 + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.14.1 + optionalDependencies: + fsevents: 2.3.3 /vite@5.2.8(@types/node@18.19.31): resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} @@ -11945,6 +15600,9 @@ packages: - terser dev: true + /vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + /vue-template-compiler@2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: @@ -11964,6 +15622,11 @@ packages: typescript: 5.4.4 dev: true + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + /warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} dependencies: @@ -11973,7 +15636,6 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - dev: true /web-encoding@1.1.5: resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} @@ -11990,13 +15652,15 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} @@ -12007,7 +15671,6 @@ packages: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: true /when-exit@2.0.0: resolution: {integrity: sha512-17lB0PWIgOuil9dgC/vdQY0aq5lwT0umemaIsOTNDBsc1TwclvocXOvkwenwUXEawN5mW3F64X52xPkTFnihDw==} @@ -12052,7 +15715,6 @@ packages: /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - dev: true /which-pm@2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} @@ -12115,7 +15777,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -12136,17 +15797,51 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + /ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + /xstate@4.38.3: resolution: {integrity: sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw==} + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} @@ -12177,12 +15872,10 @@ packages: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - dev: true /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} @@ -12199,7 +15892,6 @@ packages: which-module: 2.0.0 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: true /yargs@17.7.1: resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} @@ -12212,7 +15904,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} @@ -12228,7 +15919,6 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: true /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} @@ -12247,6 +15937,9 @@ packages: commander: 2.20.3 dev: true + /zdog@1.1.3: + resolution: {integrity: sha512-raRj6r0gPzopFm5XWBJZr/NuV4EEnT4iE+U3dp5FV5pCb588Gmm3zLIp/j9yqqcMiHH8VNQlerLTgOqL7krh6w==} + /zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} @@ -12260,14 +15953,14 @@ packages: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - /zustand-x@3.0.2(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.2): + /zustand-x@3.0.2(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.5.2): resolution: {integrity: sha512-tb4qMWbmgrWEdemb+LlrJiHI1ZMxwlQNz7jDHN5iA/vmU8xlpAX80MQZ2FNLP2KejBFEnsA1RWRAO/0D5O0rPw==} peerDependencies: zustand: '>=4.3.9' dependencies: immer: 10.0.4 lodash.mapvalues: 4.6.0 - react-tracked: 1.7.11(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) + react-tracked: 1.7.11(react-dom@18.2.0)(react-native@0.74.0)(react@18.2.0)(scheduler@0.23.0) zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) transitivePeerDependencies: - react @@ -12275,6 +15968,17 @@ packages: - react-native - scheduler + /zustand@3.7.2(react@18.2.0): + resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} + engines: {node: '>=12.7.0'} + peerDependencies: + react: '>=16.8' + peerDependenciesMeta: + react: + optional: true + dependencies: + react: 18.2.0 + /zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0): resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} engines: {node: '>=12.7.0'} From 52962fa56228111a7a70edf81e57e80913ef2a9d Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Wed, 1 May 2024 13:36:15 +0200 Subject: [PATCH 056/182] fix: changelog --- packages/app-bridge/CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 0872e93fc..81ffb5af5 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -32,6 +32,19 @@ - [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` +## 3.6.2 + +### Patch Changes + +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` + +## 3.6.1 + +### Patch Changes + +- [#882](https://github.com/Frontify/brand-sdk/pull/882) [`f6897fb`](https://github.com/Frontify/brand-sdk/commit/f6897fb6b758c03053fcf88805f100c3c0b33d1e) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed + fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed + ## 3.6.0 ### Minor Changes From d8e3a3b7481f53d3682aaf8bed872b6837e14429 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 14:26:31 +0200 Subject: [PATCH 057/182] chore: release packages (alpha) (#906) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 3 +++ packages/app-bridge/CHANGELOG.md | 10 ++++++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 160026511..2c773f92f 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -9,7 +9,9 @@ "@frontify/platform-app": "0.0.5" }, "changesets": [ + "calm-candles-wink", "cuddly-pets-hammer", + "five-mangos-search", "giant-shrimps-dream", "hip-days-applaud", "khaki-dryers-shout", @@ -26,6 +28,7 @@ "polite-eels-shake", "pretty-items-marry", "shaggy-mugs-speak", + "shy-moons-taste", "smart-suns-type", "smooth-planets-pay", "stale-hairs-wash", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 81ffb5af5..4ca162cec 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,15 @@ # @frontify/app-bridge +## 4.0.0-alpha.20 + +### Patch Changes + +- [#900](https://github.com/Frontify/brand-sdk/pull/900) [`9294b16`](https://github.com/Frontify/brand-sdk/commit/9294b164ad2b3fc502004e3d8d86ee29737ac822) Thanks [@julianiff](https://github.com/julianiff)! - feat(AppBridgePlatformApp): only one app bridge per iframe + +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` + +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeTheme): add isSearchDialogOpen to context + ## 4.0.0-alpha.19 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 9e7577a71..3947a2147 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.19", + "version": "4.0.0-alpha.20", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 0723d89575f47682bc146661e693651f61965c8c Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Wed, 8 May 2024 12:30:57 +0200 Subject: [PATCH 058/182] feat: update appBridgeThemeStub w context/state (#910) * feat: update AppBridgeThemeStub with context and state * changeset --- .changeset/four-crabs-bake.md | 5 ++ .../src/tests/AppBridgeThemeStub.ts | 59 ++++++++++++++++++- 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 .changeset/four-crabs-bake.md diff --git a/.changeset/four-crabs-bake.md b/.changeset/four-crabs-bake.md new file mode 100644 index 000000000..8e28ee068 --- /dev/null +++ b/.changeset/four-crabs-bake.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: (AppBridgeTheme) update appBridgeThemeStub with context and state diff --git a/packages/app-bridge/src/tests/AppBridgeThemeStub.ts b/packages/app-bridge/src/tests/AppBridgeThemeStub.ts index b04cd8a36..dd08751ea 100644 --- a/packages/app-bridge/src/tests/AppBridgeThemeStub.ts +++ b/packages/app-bridge/src/tests/AppBridgeThemeStub.ts @@ -379,8 +379,63 @@ export const getAppBridgeThemeStub = ({ openAssetChooser(callback); }), api: stub>().resolves(), - state: stub>().resolves(), - context: stub>().resolves(), + context: stub>().callsFake((args) => { + if (args === undefined) { + return { + get: () => ({ portalId, brandId, projectId, isEditing: editorState }), + }; + } else { + switch (args) { + case 'portalId': + return { + get: () => portalId, + }; + case 'brandId': + return { + get: () => brandId, + }; + case 'projectId': + return { + get: () => projectId, + }; + case 'isEditing': + return { + get: () => editorState, + }; + default: + return { + get: () => { + throw new Error(`Unknown context key: ${args}`); + }, + }; + } + } + }), + state: stub>().callsFake((args) => { + if (args === undefined) { + return { + get: () => [themeSettings], + set: () => undefined, + }; + } else { + switch (args) { + case 'settings': + return { + get: () => themeSettings, + set: () => undefined, + }; + default: + return { + get: () => { + throw new Error(`Unknown context key: ${args}`); + }, + set: () => { + throw new Error(`Unknown context key: ${args}`); + }, + }; + } + } + }), subscribe: stub>().resolves(), dispatch: stub>().resolves(), }; From 614e13f66735f9c68ba780090b8b05b62318955f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 12:40:07 +0200 Subject: [PATCH 059/182] chore: release packages (alpha) (#911) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 2c773f92f..063cf09ab 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -12,6 +12,7 @@ "calm-candles-wink", "cuddly-pets-hammer", "five-mangos-search", + "four-crabs-bake", "giant-shrimps-dream", "hip-days-applaud", "khaki-dryers-shout", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 4ca162cec..71865ba6c 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.21 + +### Patch Changes + +- [#910](https://github.com/Frontify/brand-sdk/pull/910) [`0723d89`](https://github.com/Frontify/brand-sdk/commit/0723d89575f47682bc146661e693651f61965c8c) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: (AppBridgeTheme) update appBridgeThemeStub with context and state + ## 4.0.0-alpha.20 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 3947a2147..8c9504efa 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.20", + "version": "4.0.0-alpha.21", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From f58ea80695bc84e2ace370dfe2de0cffb1070d60 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 May 2024 18:19:44 +0200 Subject: [PATCH 060/182] chore: release packages (alpha) (#915) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 +- packages/app-bridge/CHANGELOG.md | 162 ++++++++++++++++--------------- packages/app-bridge/package.json | 2 +- 3 files changed, 86 insertions(+), 80 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 063cf09ab..a8c0461b8 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -14,6 +14,7 @@ "five-mangos-search", "four-crabs-bake", "giant-shrimps-dream", + "gorgeous-seas-search", "hip-days-applaud", "khaki-dryers-shout", "kind-fishes-flash", @@ -29,7 +30,6 @@ "polite-eels-shake", "pretty-items-marry", "shaggy-mugs-speak", - "shy-moons-taste", "smart-suns-type", "smooth-planets-pay", "stale-hairs-wash", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index e0e8044f8..08c53887d 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,39 +1,45 @@ # @frontify/app-bridge +## 4.0.0-alpha.22 + +### Patch Changes + +- chore: merge branch `main` into dev + ## 4.0.0-alpha.21 ### Patch Changes -- [#910](https://github.com/Frontify/brand-sdk/pull/910) [`0723d89`](https://github.com/Frontify/brand-sdk/commit/0723d89575f47682bc146661e693651f61965c8c) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: (AppBridgeTheme) update appBridgeThemeStub with context and state +- [#910](https://github.com/Frontify/brand-sdk/pull/910) [`0723d89`](https://github.com/Frontify/brand-sdk/commit/0723d89575f47682bc146661e693651f61965c8c) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: (AppBridgeTheme) update appBridgeThemeStub with context and state ## 4.0.0-alpha.20 ### Patch Changes -- [#900](https://github.com/Frontify/brand-sdk/pull/900) [`9294b16`](https://github.com/Frontify/brand-sdk/commit/9294b164ad2b3fc502004e3d8d86ee29737ac822) Thanks [@julianiff](https://github.com/julianiff)! - feat(AppBridgePlatformApp): only one app bridge per iframe +- [#900](https://github.com/Frontify/brand-sdk/pull/900) [`9294b16`](https://github.com/Frontify/brand-sdk/commit/9294b164ad2b3fc502004e3d8d86ee29737ac822) Thanks [@julianiff](https://github.com/julianiff)! - feat(AppBridgePlatformApp): only one app bridge per iframe -- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` -- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeTheme): add isSearchDialogOpen to context +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeTheme): add isSearchDialogOpen to context ## 4.0.0-alpha.19 ### Patch Changes -- [#895](https://github.com/Frontify/brand-sdk/pull/895) [`b31a73d`](https://github.com/Frontify/brand-sdk/commit/b31a73d1756f01374682552a3013173f3c8f5384) Thanks [@julianiff](https://github.com/julianiff)! - feat: add user state variable +- [#895](https://github.com/Frontify/brand-sdk/pull/895) [`b31a73d`](https://github.com/Frontify/brand-sdk/commit/b31a73d1756f01374682552a3013173f3c8f5384) Thanks [@julianiff](https://github.com/julianiff)! - feat: add user state variable ## 4.0.0-alpha.18 ### Patch Changes -- [#884](https://github.com/Frontify/brand-sdk/pull/884) [`4fe96c8`](https://github.com/Frontify/brand-sdk/commit/4fe96c8808d1b85541dd6cc5ed2711bc5a47f4eb) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed - fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed +- [#884](https://github.com/Frontify/brand-sdk/pull/884) [`4fe96c8`](https://github.com/Frontify/brand-sdk/commit/4fe96c8808d1b85541dd6cc5ed2711bc5a47f4eb) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed + fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed ## 4.0.0-alpha.17 ### Minor Changes -- # [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` +- # [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` ## 3.7.0 @@ -49,312 +55,312 @@ ### Patch Changes -- [#903](https://github.com/Frontify/brand-sdk/pull/903) [`b8c5bb7`](https://github.com/Frontify/brand-sdk/commit/b8c5bb7156a58f6fa020dd56fa1cb6a016440666) Thanks [@Kenny806](https://github.com/Kenny806)! - feat(AppBridgeTheme): add isSearchDialogOpen to context +- [#903](https://github.com/Frontify/brand-sdk/pull/903) [`b8c5bb7`](https://github.com/Frontify/brand-sdk/commit/b8c5bb7156a58f6fa020dd56fa1cb6a016440666) Thanks [@Kenny806](https://github.com/Kenny806)! - feat(AppBridgeTheme): add isSearchDialogOpen to context ## 3.6.2 ### Patch Changes -- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` ## 3.6.1 ### Patch Changes -- [#882](https://github.com/Frontify/brand-sdk/pull/882) [`f6897fb`](https://github.com/Frontify/brand-sdk/commit/f6897fb6b758c03053fcf88805f100c3c0b33d1e) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed - fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed +- [#882](https://github.com/Frontify/brand-sdk/pull/882) [`f6897fb`](https://github.com/Frontify/brand-sdk/commit/f6897fb6b758c03053fcf88805f100c3c0b33d1e) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed + fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed ## 3.6.0 ### Minor Changes -- [#871](https://github.com/Frontify/brand-sdk/pull/871) [`cc7532a`](https://github.com/Frontify/brand-sdk/commit/cc7532ae5a3803f12997887e9f1ca9993e9f8e7c) Thanks [@ryancarville](https://github.com/ryancarville)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` +- [#871](https://github.com/Frontify/brand-sdk/pull/871) [`cc7532a`](https://github.com/Frontify/brand-sdk/commit/cc7532ae5a3803f12997887e9f1ca9993e9f8e7c) Thanks [@ryancarville](https://github.com/ryancarville)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` ## 4.0.0-alpha.16 ### Patch Changes -- [#877](https://github.com/Frontify/brand-sdk/pull/877) [`1dd80ad`](https://github.com/Frontify/brand-sdk/commit/1dd80ad39568e96e97ab73c04feee3a949764ae9) Thanks [@mike85](https://github.com/mike85)! - feat(usePageTemplateSettings): returns also templateThemeSettings +- [#877](https://github.com/Frontify/brand-sdk/pull/877) [`1dd80ad`](https://github.com/Frontify/brand-sdk/commit/1dd80ad39568e96e97ab73c04feee3a949764ae9) Thanks [@mike85](https://github.com/mike85)! - feat(usePageTemplateSettings): returns also templateThemeSettings ## 3.5.9 ### Patch Changes -- [#875](https://github.com/Frontify/brand-sdk/pull/875) [`d74dc90`](https://github.com/Frontify/brand-sdk/commit/d74dc90501cd0aac39f67a834014fd9c261abfb0) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(usePageTemplateSettings): returns also templateThemeSettings +- [#875](https://github.com/Frontify/brand-sdk/pull/875) [`d74dc90`](https://github.com/Frontify/brand-sdk/commit/d74dc90501cd0aac39f67a834014fd9c261abfb0) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(usePageTemplateSettings): returns also templateThemeSettings ## 4.0.0-alpha.15 ### Patch Changes -- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`0f17eb8`](https://github.com/Frontify/brand-sdk/commit/0f17eb82afdc30692e02d1cf150d622f38d0913a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`0f17eb8`](https://github.com/Frontify/brand-sdk/commit/0f17eb82afdc30692e02d1cf150d622f38d0913a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` ## 3.5.8 ### Patch Changes -- [#868](https://github.com/Frontify/brand-sdk/pull/868) [`88fb3c3`](https://github.com/Frontify/brand-sdk/commit/88fb3c3b0235d9fc89c9a352273bacfaf53fdb0e) Thanks [@mike85](https://github.com/mike85)! - feat(AppBridgeTheme): add useDocumentNavigation hook +- [#868](https://github.com/Frontify/brand-sdk/pull/868) [`88fb3c3`](https://github.com/Frontify/brand-sdk/commit/88fb3c3b0235d9fc89c9a352273bacfaf53fdb0e) Thanks [@mike85](https://github.com/mike85)! - feat(AppBridgeTheme): add useDocumentNavigation hook ## 4.0.0-alpha.14 ### Major Changes -- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: modify `DocumentSection` and `DocumentSectionApi` type to allow `title` to be `null`. +- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: modify `DocumentSection` and `DocumentSectionApi` type to allow `title` to be `null`. ### Patch Changes -- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - feat(useDocumentSection): Subscribe hook to emitter event listeners. A new emitter type, `AppBridge:GuidelineDocumentSection:Action` has been added. This emitter can be used to add and remove items from the sections saved in the hook state. +- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - feat(useDocumentSection): Subscribe hook to emitter event listeners. A new emitter type, `AppBridge:GuidelineDocumentSection:Action` has been added. This emitter can be used to add and remove items from the sections saved in the hook state. - - feat(useDocumentSection): `navigationItems` is now returned from this hook. This array filters out sections with an unreadable title and should be used to create section navigation links. + - feat(useDocumentSection): `navigationItems` is now returned from this hook. This array filters out sections with an unreadable title and should be used to create section navigation links. ## 3.5.7 ### Patch Changes -- [#856](https://github.com/Frontify/brand-sdk/pull/856) [`b2060ff`](https://github.com/Frontify/brand-sdk/commit/b2060ff02448ca127c34d0745f363ff8bd06ec77) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeTheme): add usePortalNavigation hook +- [#856](https://github.com/Frontify/brand-sdk/pull/856) [`b2060ff`](https://github.com/Frontify/brand-sdk/commit/b2060ff02448ca127c34d0745f363ff8bd06ec77) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeTheme): add usePortalNavigation hook ## 3.5.6 ### Patch Changes -- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files +- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files -- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies +- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies ## 4.0.0-alpha.13 ### Patch Changes -- [#843](https://github.com/Frontify/brand-sdk/pull/843) [`3109e66`](https://github.com/Frontify/brand-sdk/commit/3109e66248fb9185c312d8170055452dce796bc4) Thanks [@julianiff](https://github.com/julianiff)! - chore: move up to v4 +- [#843](https://github.com/Frontify/brand-sdk/pull/843) [`3109e66`](https://github.com/Frontify/brand-sdk/commit/3109e66248fb9185c312d8170055452dce796bc4) Thanks [@julianiff](https://github.com/julianiff)! - chore: move up to v4 -- [`0d9d0af`](https://github.com/Frontify/brand-sdk/commit/0d9d0afe4fc55b0e0c5b1e397aeaf77e7e8c4a69) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev +- [`0d9d0af`](https://github.com/Frontify/brand-sdk/commit/0d9d0afe4fc55b0e0c5b1e397aeaf77e7e8c4a69) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev ## 4.0.0-alpha.12 ### Patch Changes -- [`18c91b1`](https://github.com/Frontify/brand-sdk/commit/18c91b184651f49c490d381054b3ec543f928551) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge `main` into `dev` +- [`18c91b1`](https://github.com/Frontify/brand-sdk/commit/18c91b184651f49c490d381054b3ec543f928551) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge `main` into `dev` ## 4.0.0-alpha.11 ### Minor Changes -- [#830](https://github.com/Frontify/brand-sdk/pull/830) [`e14ef89`](https://github.com/Frontify/brand-sdk/commit/e14ef895606e72af066e614983b61ca8778c108d) Thanks [@ragi96](https://github.com/ragi96)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type +- [#830](https://github.com/Frontify/brand-sdk/pull/830) [`e14ef89`](https://github.com/Frontify/brand-sdk/commit/e14ef895606e72af066e614983b61ca8778c108d) Thanks [@ragi96](https://github.com/ragi96)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type ## 4.0.0-alpha.10 ### Minor Changes -- [#808](https://github.com/Frontify/brand-sdk/pull/808) [`4529beb`](https://github.com/Frontify/brand-sdk/commit/4529beb4b9f20ba94c7d6226257b422d6b560d5a) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme +- [#808](https://github.com/Frontify/brand-sdk/pull/808) [`4529beb`](https://github.com/Frontify/brand-sdk/commit/4529beb4b9f20ba94c7d6226257b422d6b560d5a) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme ### Patch Changes -- [#810](https://github.com/Frontify/brand-sdk/pull/810) [`0ac69ea`](https://github.com/Frontify/brand-sdk/commit/0ac69eaa52ba58a5be06ce75afa63cf5838e958b) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests +- [#810](https://github.com/Frontify/brand-sdk/pull/810) [`0ac69ea`](https://github.com/Frontify/brand-sdk/commit/0ac69eaa52ba58a5be06ce75afa63cf5838e958b) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests ## 4.0.0-alpha.9 ### Patch Changes -- Merge main into dev +- Merge main into dev ## 3.5.4 ### Patch Changes -- [#821](https://github.com/Frontify/brand-sdk/pull/821) [`efde7a5`](https://github.com/Frontify/brand-sdk/commit/efde7a511b3d4fbbe17af5f0e41982d003743b35) Thanks [@imoutaharik](https://github.com/imoutaharik)! - feat(AppBridgePlatformApp): add the `proxyMethodCall` method +- [#821](https://github.com/Frontify/brand-sdk/pull/821) [`efde7a5`](https://github.com/Frontify/brand-sdk/commit/efde7a511b3d4fbbe17af5f0e41982d003743b35) Thanks [@imoutaharik](https://github.com/imoutaharik)! - feat(AppBridgePlatformApp): add the `proxyMethodCall` method ## 3.5.3 ### Patch Changes -- [#834](https://github.com/Frontify/brand-sdk/pull/834) [`1612681`](https://github.com/Frontify/brand-sdk/commit/1612681472c6eff8b732aed10c33d0ac83269b83) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: useTemplateAssets hook to return themeAsset as well +- [#834](https://github.com/Frontify/brand-sdk/pull/834) [`1612681`](https://github.com/Frontify/brand-sdk/commit/1612681472c6eff8b732aed10c33d0ac83269b83) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: useTemplateAssets hook to return themeAsset as well ## 3.5.2 ### Patch Changes -- [#825](https://github.com/Frontify/brand-sdk/pull/825) [`8430626`](https://github.com/Frontify/brand-sdk/commit/8430626870f7fb139d2b10b4f1f26040be1c6bbc) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type +- [#825](https://github.com/Frontify/brand-sdk/pull/825) [`8430626`](https://github.com/Frontify/brand-sdk/commit/8430626870f7fb139d2b10b4f1f26040be1c6bbc) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type ## 3.5.1 ### Patch Changes -- [#818](https://github.com/Frontify/brand-sdk/pull/818) [`c25d717`](https://github.com/Frontify/brand-sdk/commit/c25d71757e44406c065c65374d1d800a6d5694de) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(useBlockSettings): `setBlockSettings` has been wrapped in a `useCallback` so it can be safely used as a dependency in react hooks. The following code will no longer cause unexpected rerenders. +- [#818](https://github.com/Frontify/brand-sdk/pull/818) [`c25d717`](https://github.com/Frontify/brand-sdk/commit/c25d71757e44406c065c65374d1d800a6d5694de) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(useBlockSettings): `setBlockSettings` has been wrapped in a `useCallback` so it can be safely used as a dependency in react hooks. The following code will no longer cause unexpected rerenders. - ```jsx - const Component = () => { - const [blockSettings, setBlockSettings] = useBlockSettings(appBridge); + ```jsx + const Component = () => { + const [blockSettings, setBlockSettings] = useBlockSettings(appBridge); - useEffect(() => { - setBlockSettings({ ...blockSettings }); - }, [setBlockSettings]); - }; - ``` + useEffect(() => { + setBlockSettings({ ...blockSettings }); + }, [setBlockSettings]); + }; + ``` ## 3.5.0 ### Minor Changes -- [#807](https://github.com/Frontify/brand-sdk/pull/807) [`909e0f5`](https://github.com/Frontify/brand-sdk/commit/909e0f5ef98e7bd1da6b0d96e32fdcde74a87d8d) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme +- [#807](https://github.com/Frontify/brand-sdk/pull/807) [`909e0f5`](https://github.com/Frontify/brand-sdk/commit/909e0f5ef98e7bd1da6b0d96e32fdcde74a87d8d) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme ### Patch Changes -- [#806](https://github.com/Frontify/brand-sdk/pull/806) [`5115dfd`](https://github.com/Frontify/brand-sdk/commit/5115dfda65ce87e53a26831e05034534d50a05be) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests +- [#806](https://github.com/Frontify/brand-sdk/pull/806) [`5115dfd`](https://github.com/Frontify/brand-sdk/commit/5115dfda65ce87e53a26831e05034534d50a05be) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests ## 3.4.2 ### Patch Changes -- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages +- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages ## 4.0.0-alpha.8 ### Patch Changes -- [#777](https://github.com/Frontify/brand-sdk/pull/777) [`b5d1cb8`](https://github.com/Frontify/brand-sdk/commit/b5d1cb8a376ccada20d0234913584a6bdba0cba9) Thanks [@julianiff](https://github.com/julianiff)! - Fix: add retry to subscription +- [#777](https://github.com/Frontify/brand-sdk/pull/777) [`b5d1cb8`](https://github.com/Frontify/brand-sdk/commit/b5d1cb8a376ccada20d0234913584a6bdba0cba9) Thanks [@julianiff](https://github.com/julianiff)! - Fix: add retry to subscription -- Merge main into dev +- Merge main into dev ## 3.4.1 ### Patch Changes -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM +- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM ## 3.4.0 ### Minor Changes -- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.7 ### Minor Changes -- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.6 ### Patch Changes -- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 +- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 -- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext - refactor: rename from type to surface +- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext + refactor: rename from type to surface ## 4.0.0-alpha.5 ### Patch Changes -- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type -- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev +- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev ## 3.3.2 ### Patch Changes -- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type ## 4.0.0-alpha.4 ### Patch Changes -- Merge main into dev +- Merge main into dev ## 3.3.1 ### Patch Changes -- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 4.0.0-alpha.3 ### Patch Changes -- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision +- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision ## 4.0.0-alpha.2 ### Patch Changes -- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 4.0.0-alpha.1 ### Patch Changes -- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme +- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme ## 3.3.0 ### Minor Changes -- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 3.2.0 ### Minor Changes -- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context +- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context ## 4.0.0-alpha.0 ### Major Changes -- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock +- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock ## 3.1.0 ### Minor Changes -- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. - You will need to update the import paths in your tests: +- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. + You will need to update the import paths in your tests: - ```git - - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; - + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; - ``` + ```git + - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; + + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; + ``` ## 3.0.4 ### Patch Changes -- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json +- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json ## 3.0.3 ### Patch Changes -- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order +- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order ## 3.0.2 ### Patch Changes -- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions +- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions ## 3.0.1 ### Patch Changes -- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings +- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings ## 3.0.0 ### Major Changes -- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release +- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release ## 3.0.0-beta.32 ### Patch Changes -- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions +- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions ## 3.0.0-beta.31 ### Minor Changes -- Add Brandportal link +- Add Brandportal link diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 8c9504efa..f114a8fae 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.21", + "version": "4.0.0-alpha.22", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 1d48008561a2dc3f4b7b4c9fcb7bc44cd7d04bc6 Mon Sep 17 00:00:00 2001 From: Sam Creasey Date: Wed, 15 May 2024 17:59:28 +1000 Subject: [PATCH 061/182] chore: merge main into dev (#918) * feat: add new useAfterInsertion hook (#909) * add new insertion hook * fix lint errors * fix lockfile * fix pr comments * add changeset * adjust changeset * update with review changes * chore: release packages (#916) Signed-off-by: Sam Creasey Co-authored-by: github-actions[bot] * delete config * remove formatting changes * add changeset --------- Signed-off-by: Sam Creasey Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] --- .changeset/fuzzy-walls-repeat.md | 5 +++ packages/app-bridge/CHANGELOG.md | 24 +++++++++++ packages/app-bridge/src/AppBridgeBlock.ts | 1 + packages/app-bridge/src/react/index.ts | 1 + .../src/react/useAfterInsertion.spec.tsx | 42 +++++++++++++++++++ .../src/react/useAfterInsertion.tsx | 17 ++++++++ .../src/tests/AppBridgeBlockStub.ts | 6 +++ 7 files changed, 96 insertions(+) create mode 100644 .changeset/fuzzy-walls-repeat.md create mode 100644 packages/app-bridge/src/react/useAfterInsertion.spec.tsx create mode 100644 packages/app-bridge/src/react/useAfterInsertion.tsx diff --git a/.changeset/fuzzy-walls-repeat.md b/.changeset/fuzzy-walls-repeat.md new file mode 100644 index 000000000..3d0f4d81a --- /dev/null +++ b/.changeset/fuzzy-walls-repeat.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +chore: Merge main into dev diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 08c53887d..d5554eba9 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -41,6 +41,30 @@ - # [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` +## 3.8.0 + +### Minor Changes + +- [#909](https://github.com/Frontify/brand-sdk/pull/909) [`14b9fdf`](https://github.com/Frontify/brand-sdk/commit/14b9fdfb5bc58b482350109d1eee1a8c4ff942d6) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(useAfterInsertion): A new hook to execute a callback after a block has been inserted, can be used to focus a specific element for faster editing. The callback is only executed when the third argument is true (default). This hook is only usable with instances of AppBridgeBlock. + + ```jsx + const ExampleBlock = ({ appBridge }: BlockProps) => { + const buttonRef = useRef(null); + const [data, setData] = useState(null); + const hasData = data !== null; + + useEffect(() => { + getAsyncData().then((data) => setData(data)); + }, []); + + useAfterInsertion(appBridge, () => buttonRef.current?.focus(), hasData); + + return hasData ? + : +
Loading...
; + }; + ``` + ## 3.7.0 ### Minor Changes diff --git a/packages/app-bridge/src/AppBridgeBlock.ts b/packages/app-bridge/src/AppBridgeBlock.ts index 6b8fc1ad6..8f0bca74c 100644 --- a/packages/app-bridge/src/AppBridgeBlock.ts +++ b/packages/app-bridge/src/AppBridgeBlock.ts @@ -69,6 +69,7 @@ export type BlockContext = { blockId: number; sectionId?: number; isAuthenticated: boolean; + isNewlyInserted: boolean; }; export type BlockEvent = EventNameValidator< diff --git a/packages/app-bridge/src/react/index.ts b/packages/app-bridge/src/react/index.ts index 4d8e6d209..11220d580 100644 --- a/packages/app-bridge/src/react/index.ts +++ b/packages/app-bridge/src/react/index.ts @@ -1,5 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ +export * from './useAfterInsertion'; export * from './useAssetBulkDownload'; export * from './useAssetChooser'; export * from './useAssetUpload'; diff --git a/packages/app-bridge/src/react/useAfterInsertion.spec.tsx b/packages/app-bridge/src/react/useAfterInsertion.spec.tsx new file mode 100644 index 000000000..70307fd98 --- /dev/null +++ b/packages/app-bridge/src/react/useAfterInsertion.spec.tsx @@ -0,0 +1,42 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; + +import { getAppBridgeBlockStub } from '../tests'; + +import { useAfterInsertion } from './useAfterInsertion'; + +describe('useAfterInsertion', () => { + it('should execute a callback after the block has been inserted', () => { + const appBridge = getAppBridgeBlockStub({ isNewlyInserted: true }); + const callbackStub = vi.fn(); + renderHook(() => useAfterInsertion(appBridge, callbackStub)); + + expect(callbackStub).toHaveBeenCalledOnce(); + }); + + it('should not execute a callback if the block is not newly inserted', () => { + const appBridge = getAppBridgeBlockStub({ isNewlyInserted: false }); + const callbackStub = vi.fn(); + renderHook(() => useAfterInsertion(appBridge, callbackStub)); + + expect(callbackStub).not.toHaveBeenCalledOnce(); + }); + + it('should execute callback if the hook is enabled', () => { + const appBridge = getAppBridgeBlockStub({ isNewlyInserted: true }); + const callbackStub = vi.fn(); + renderHook(() => useAfterInsertion(appBridge, callbackStub, true)); + + expect(callbackStub).toHaveBeenCalledOnce(); + }); + + it('should not execute callback if the hook is disabled', () => { + const appBridge = getAppBridgeBlockStub({ isNewlyInserted: true }); + const callbackStub = vi.fn(); + renderHook(() => useAfterInsertion(appBridge, callbackStub, false)); + + expect(callbackStub).not.toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge/src/react/useAfterInsertion.tsx b/packages/app-bridge/src/react/useAfterInsertion.tsx new file mode 100644 index 000000000..19374ae54 --- /dev/null +++ b/packages/app-bridge/src/react/useAfterInsertion.tsx @@ -0,0 +1,17 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useEffect } from 'react'; + +import { type AppBridgeBlock } from '../AppBridgeBlock'; + +export const useAfterInsertion = (appBridge: T, callback: () => void, enabled = true) => { + useEffect(() => { + const isNewlyInserted = appBridge.context('isNewlyInserted').get(); + if (enabled && isNewlyInserted) { + callback(); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [enabled, appBridge]); + + return appBridge; +}; diff --git a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts index 024610fbb..0a62329eb 100644 --- a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts +++ b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts @@ -31,6 +31,7 @@ export type getAppBridgeBlockStubProps = { blockId?: number; sectionId?: number; projectId?: number; + isNewlyInserted?: boolean; isAuthenticated?: boolean; user?: User; language?: string; @@ -46,6 +47,7 @@ export const getAppBridgeBlockStub = ({ blockId = BLOCK_ID, sectionId = SECTION_ID, projectId = PROJECT_ID, + isNewlyInserted = false, isAuthenticated = true, user = UserDummy.with(USER_ID), language = 'en', @@ -199,6 +201,10 @@ export const getAppBridgeBlockStub = ({ return { get: () => isAuthenticated, }; + case 'isNewlyInserted': + return { + get: () => isNewlyInserted, + }; default: return { get: () => { From bc4c48301d1bc4a3dfcec0f75f1c84d3dc6974c8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 18:13:18 +1000 Subject: [PATCH 062/182] chore: release packages (alpha) (#919) Signed-off-by: Sam Creasey Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a8c0461b8..d4e75e31a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ "cuddly-pets-hammer", "five-mangos-search", "four-crabs-bake", + "fuzzy-walls-repeat", "giant-shrimps-dream", "gorgeous-seas-search", "hip-days-applaud", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index d5554eba9..22fffe324 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.23 + +### Patch Changes + +- [#918](https://github.com/Frontify/brand-sdk/pull/918) [`1d48008`](https://github.com/Frontify/brand-sdk/commit/1d48008561a2dc3f4b7b4c9fcb7bc44cd7d04bc6) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: Merge main into dev + ## 4.0.0-alpha.22 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index f114a8fae..f09e42f03 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.22", + "version": "4.0.0-alpha.23", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 24b668ca40c5e03ed5420e3aba8266de6bf83e62 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 13:52:42 +0200 Subject: [PATCH 063/182] chore: release packages (alpha) (#923) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index d4e75e31a..15a5f9a6c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -35,6 +35,7 @@ "smooth-planets-pay", "stale-hairs-wash", "strong-tools-check", + "tough-nails-shout", "tricky-boats-sip", "warm-hounds-refuse", "wild-bags-judge", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 4fca3d8bc..8736e30b2 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.24 + +### Patch Changes + +- chore: merge main to dev + ## 4.0.0-alpha.23 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index f09e42f03..51389e64a 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.23", + "version": "4.0.0-alpha.24", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 1431822951fd1140615237b6bfb7af4f8806b704 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 16:53:31 +0200 Subject: [PATCH 064/182] chore: release packages (alpha) (#926) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 15a5f9a6c..6f314243a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -31,6 +31,7 @@ "polite-eels-shake", "pretty-items-marry", "shaggy-mugs-speak", + "shy-jobs-protect", "smart-suns-type", "smooth-planets-pay", "stale-hairs-wash", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index e59c96579..398631c82 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.25 + +### Patch Changes + +- chore: merge main to dev + ## 4.0.0-alpha.24 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 51389e64a..0b85d0a35 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.24", + "version": "4.0.0-alpha.25", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 76bf4644605534c40ed30d8ab6f242682c0a7b41 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Fri, 17 May 2024 16:32:47 +0200 Subject: [PATCH 065/182] fix: adjust regex to be more strict (#927) * chore: adjust test and restrict regex * Create blue-lions-brush.md * Update packages/cli/src/utils/verifyManifest.ts --- .changeset/blue-lions-brush.md | 5 +++++ packages/cli/src/utils/verifyManifest.ts | 4 ++-- packages/cli/tests/utils/verifyManifest.spec.ts | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/blue-lions-brush.md diff --git a/.changeset/blue-lions-brush.md b/.changeset/blue-lions-brush.md new file mode 100644 index 000000000..0d84f8992 --- /dev/null +++ b/.changeset/blue-lions-brush.md @@ -0,0 +1,5 @@ +--- +"@frontify/frontify-cli": patch +--- + +Fix: adjust regex to be more strict diff --git a/packages/cli/src/utils/verifyManifest.ts b/packages/cli/src/utils/verifyManifest.ts index c7fe0cfd5..f647547a4 100644 --- a/packages/cli/src/utils/verifyManifest.ts +++ b/packages/cli/src/utils/verifyManifest.ts @@ -32,11 +32,11 @@ const secretSchema = object({ } secretKeySet.add(key); - return /^[\w-]+$/.test(key); + return /^\w+$/.test(key); }, { message: - "Secret Key must be unique and should only contain letters from a-z, A-Z, numbers from 0-9, '-' and '_' without any spaces", + "Secret Key must be unique and should only contain letters from a-z, A-Z, numbers from 0-9 and '_' without any spaces", }, ), }); diff --git a/packages/cli/tests/utils/verifyManifest.spec.ts b/packages/cli/tests/utils/verifyManifest.spec.ts index e5ed3c059..562c49e59 100644 --- a/packages/cli/tests/utils/verifyManifest.spec.ts +++ b/packages/cli/tests/utils/verifyManifest.spec.ts @@ -153,7 +153,7 @@ const MANIFEST_WITH_TOO_LONG_TITLE_ASSET_CREATION = { const VALID_MANIFEST_WITH_SECRETS = { appType: 'platform-app', appId: 'abcdabcdabcdabcdabcdabcda', - secrets: [{ label: 'first label', key: 'first-key' }], + secrets: [{ label: 'first label', key: 'first_key' }], surfaces: { mediaLibrary: { assetAction: { From 414ea4092d5446815df032a87471829801604634 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Wed, 22 May 2024 13:54:22 +0200 Subject: [PATCH 066/182] refactor: Method to reflect feature (#929) * refactor: rename to reflect new name * chore: adjust types * Create red-islands-report.md --- .changeset/red-islands-report.md | 5 +++++ packages/app-bridge/src/AppBridgePlatformApp.ts | 2 +- .../src/registries/api/ApiMethodRegistry.ts | 4 ++-- .../registries/api/GetProxyNetworkCall.spec.ts | 17 ----------------- .../src/registries/api/GetProxyNetworkCall.ts | 12 ------------ .../src/registries/api/GetSecretRequest.spec.ts | 17 +++++++++++++++++ .../src/registries/api/GetSecretRequest.ts | 15 +++++++++++++++ packages/app-bridge/src/registries/api/index.ts | 2 +- 8 files changed, 41 insertions(+), 33 deletions(-) create mode 100644 .changeset/red-islands-report.md delete mode 100644 packages/app-bridge/src/registries/api/GetProxyNetworkCall.spec.ts delete mode 100644 packages/app-bridge/src/registries/api/GetProxyNetworkCall.ts create mode 100644 packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts create mode 100644 packages/app-bridge/src/registries/api/GetSecretRequest.ts diff --git a/.changeset/red-islands-report.md b/.changeset/red-islands-report.md new file mode 100644 index 000000000..8460e449a --- /dev/null +++ b/.changeset/red-islands-report.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +refactor: Method to reflect feature diff --git a/packages/app-bridge/src/AppBridgePlatformApp.ts b/packages/app-bridge/src/AppBridgePlatformApp.ts index 053a10cc8..4bcf2393c 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.ts @@ -25,7 +25,7 @@ import { ErrorMessageBus, type IMessageBus, MessageBus } from './utilities/Messa import { getQueryParameters } from './utilities/queryParams'; export type PlatformAppApiMethod = ApiMethodNameValidator< - Pick + Pick >; export type PlatformAppCommandRegistry = CommandNameValidator<{ diff --git a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts index 8cab26265..76615f97d 100644 --- a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts +++ b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts @@ -14,7 +14,7 @@ import { import { type GetCurrentUserPayload, type GetCurrentUserResponse } from './GetCurrentUser'; import { type GetDocumentNavigationPayload, type GetDocumentNavigationResponse } from './GetDocumentNavigation'; import { type GetPortalNavigationResponse } from './GetPortalNavigation'; -import { type GetProxyNetworkCallPayload, type GetProxyNetworkCallResponse } from './GetProxyNetworkCall'; +import { type GetSecretRequestPayload, type GetSecretRequestResponse } from './GetSecretRequest.ts'; import { type SetAssetIdsByBlockAssetKeyPayload, type SetAssetIdsByBlockAssetKeyResponse, @@ -35,7 +35,7 @@ export type ApiMethodRegistry = ApiMethodNameValidator<{ payload: SetAssetIdsByBlockAssetKeyPayload; response: SetAssetIdsByBlockAssetKeyResponse; }; - getProxyNetworkCall: { payload: GetProxyNetworkCallPayload; response: GetProxyNetworkCallResponse }; + getSecretRequest: { payload: GetSecretRequestPayload; response: GetSecretRequestResponse }; getDocumentNavigation: { payload: GetDocumentNavigationPayload; response: GetDocumentNavigationResponse }; getPortalNavigation: { payload: void; response: GetPortalNavigationResponse }; }>; diff --git a/packages/app-bridge/src/registries/api/GetProxyNetworkCall.spec.ts b/packages/app-bridge/src/registries/api/GetProxyNetworkCall.spec.ts deleted file mode 100644 index 1d6ce37d0..000000000 --- a/packages/app-bridge/src/registries/api/GetProxyNetworkCall.spec.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it } from 'vitest'; - -import { getProxyNetworkCall } from './GetProxyNetworkCall'; - -describe('GetProxyNetworkCall', () => { - it('should return correct method name', () => { - const TEST_ID = 'user-api'; - const proxyNetworkCall = getProxyNetworkCall({ id: TEST_ID, props: 'data' }); - expect(proxyNetworkCall.name).toBe('getProxyNetworkCall'); - expect(proxyNetworkCall.payload).toStrictEqual({ - id: TEST_ID, - props: 'data', - }); - }); -}); diff --git a/packages/app-bridge/src/registries/api/GetProxyNetworkCall.ts b/packages/app-bridge/src/registries/api/GetProxyNetworkCall.ts deleted file mode 100644 index c0e800190..000000000 --- a/packages/app-bridge/src/registries/api/GetProxyNetworkCall.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type GetProxyNetworkCallPayload = { - id: string; - props: unknown; -}; - -export type GetProxyNetworkCallResponse = { - data: unknown; -}; - -export const getProxyNetworkCall = (payload: GetProxyNetworkCallPayload) => ({ name: 'getProxyNetworkCall', payload }); diff --git a/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts b/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts new file mode 100644 index 000000000..70cc1afa9 --- /dev/null +++ b/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts @@ -0,0 +1,17 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; + +import { getSecretRequest } from './GetSecretRequest.ts'; + +describe('GetSecretRequest', () => { + it('should return correct method name', () => { + const TEST_ID = 'user-api'; + const secretRequest = getSecretRequest({ id: TEST_ID, requestParams: 'data' }); + expect(secretRequest.name).toBe('getSecretRequest'); + expect(secretRequest.payload).toStrictEqual({ + id: TEST_ID, + requestParams: 'data', + }); + }); +}); diff --git a/packages/app-bridge/src/registries/api/GetSecretRequest.ts b/packages/app-bridge/src/registries/api/GetSecretRequest.ts new file mode 100644 index 000000000..98c796848 --- /dev/null +++ b/packages/app-bridge/src/registries/api/GetSecretRequest.ts @@ -0,0 +1,15 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type GetSecretRequestPayload = { + id: string; + requestParams: unknown; +}; + +export type GetSecretRequestResponse = { + data: unknown; +}; + +export const getSecretRequest = (payload: GetSecretRequestPayload) => ({ + name: 'getSecretRequest', + payload, +}); diff --git a/packages/app-bridge/src/registries/api/index.ts b/packages/app-bridge/src/registries/api/index.ts index 4ed17f00d..afe608785 100644 --- a/packages/app-bridge/src/registries/api/index.ts +++ b/packages/app-bridge/src/registries/api/index.ts @@ -6,6 +6,6 @@ export * from './CreateAsset'; export * from './GetAssetResourceInformation'; export * from './GetCurrentUser'; export * from './SetAssetIdsByBlockAssetKey'; -export * from './GetProxyNetworkCall'; +export * from './GetSecretRequest'; export * from './GetDocumentNavigation'; export * from './GetPortalNavigation'; From 5faf96af292035f2e51bb8b54a684898d09a2e56 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 14:01:11 +0200 Subject: [PATCH 067/182] chore: release packages (alpha) (#928) Co-authored-by: julianiff --- .changeset/pre.json | 2 ++ packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- packages/cli/CHANGELOG.md | 6 ++++++ packages/cli/package.json | 2 +- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 6f314243a..ee64d53f1 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -9,6 +9,7 @@ "@frontify/platform-app": "0.0.5" }, "changesets": [ + "blue-lions-brush", "calm-candles-wink", "cuddly-pets-hammer", "five-mangos-search", @@ -30,6 +31,7 @@ "pink-geckos-change", "polite-eels-shake", "pretty-items-marry", + "red-islands-report", "shaggy-mugs-speak", "shy-jobs-protect", "smart-suns-type", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 398631c82..6454e0833 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.26 + +### Patch Changes + +- [#929](https://github.com/Frontify/brand-sdk/pull/929) [`414ea40`](https://github.com/Frontify/brand-sdk/commit/414ea4092d5446815df032a87471829801604634) Thanks [@julianiff](https://github.com/julianiff)! - refactor: Method to reflect feature + ## 4.0.0-alpha.25 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 0b85d0a35..a8bcd3055 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.25", + "version": "4.0.0-alpha.26", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index af5a1164a..578e30481 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/frontify-cli +## 5.6.18-alpha.0 + +### Patch Changes + +- [#927](https://github.com/Frontify/brand-sdk/pull/927) [`76bf464`](https://github.com/Frontify/brand-sdk/commit/76bf4644605534c40ed30d8ab6f242682c0a7b41) Thanks [@julianiff](https://github.com/julianiff)! - Fix: adjust regex to be more strict + ## 5.6.17 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 4e545a41c..f1dcf18b5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "type": "module", - "version": "5.6.17", + "version": "5.6.18-alpha.0", "author": "Frontify Developers ", "repository": { "type": "git", From 456c31d1d6b013d75b6c3dece0b2632716e14d3e Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Wed, 22 May 2024 14:20:00 +0200 Subject: [PATCH 068/182] fix: revert release stuff of cli (#930) * fix: revert release stuff of cli * adjust pre.json --- .changeset/blue-lions-brush.md | 5 ----- .changeset/pre.json | 1 - packages/cli/CHANGELOG.md | 6 ------ packages/cli/package.json | 2 +- 4 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 .changeset/blue-lions-brush.md diff --git a/.changeset/blue-lions-brush.md b/.changeset/blue-lions-brush.md deleted file mode 100644 index 0d84f8992..000000000 --- a/.changeset/blue-lions-brush.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@frontify/frontify-cli": patch ---- - -Fix: adjust regex to be more strict diff --git a/.changeset/pre.json b/.changeset/pre.json index ee64d53f1..308dff857 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -9,7 +9,6 @@ "@frontify/platform-app": "0.0.5" }, "changesets": [ - "blue-lions-brush", "calm-candles-wink", "cuddly-pets-hammer", "five-mangos-search", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 578e30481..af5a1164a 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,11 +1,5 @@ # @frontify/frontify-cli -## 5.6.18-alpha.0 - -### Patch Changes - -- [#927](https://github.com/Frontify/brand-sdk/pull/927) [`76bf464`](https://github.com/Frontify/brand-sdk/commit/76bf4644605534c40ed30d8ab6f242682c0a7b41) Thanks [@julianiff](https://github.com/julianiff)! - Fix: adjust regex to be more strict - ## 5.6.17 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index f1dcf18b5..4e545a41c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "type": "module", - "version": "5.6.18-alpha.0", + "version": "5.6.17", "author": "Frontify Developers ", "repository": { "type": "git", From 341886e9d16184048f9285d692df5177bfd2d0d1 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Wed, 29 May 2024 10:11:02 +0200 Subject: [PATCH 069/182] chore: rename brand sdk name (#937) * chore: rename to endpoint * Create clever-suns-laugh.md --- .changeset/clever-suns-laugh.md | 5 +++++ .../app-bridge/src/registries/api/GetSecretRequest.spec.ts | 4 ++-- packages/app-bridge/src/registries/api/GetSecretRequest.ts | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/clever-suns-laugh.md diff --git a/.changeset/clever-suns-laugh.md b/.changeset/clever-suns-laugh.md new file mode 100644 index 000000000..3cbac03e7 --- /dev/null +++ b/.changeset/clever-suns-laugh.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +chore: rename brand sdk name diff --git a/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts b/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts index 70cc1afa9..2cabc4bd5 100644 --- a/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts +++ b/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts @@ -7,10 +7,10 @@ import { getSecretRequest } from './GetSecretRequest.ts'; describe('GetSecretRequest', () => { it('should return correct method name', () => { const TEST_ID = 'user-api'; - const secretRequest = getSecretRequest({ id: TEST_ID, requestParams: 'data' }); + const secretRequest = getSecretRequest({ endpoint: TEST_ID, requestParams: 'data' }); expect(secretRequest.name).toBe('getSecretRequest'); expect(secretRequest.payload).toStrictEqual({ - id: TEST_ID, + endpoint: TEST_ID, requestParams: 'data', }); }); diff --git a/packages/app-bridge/src/registries/api/GetSecretRequest.ts b/packages/app-bridge/src/registries/api/GetSecretRequest.ts index 98c796848..5cbb790cf 100644 --- a/packages/app-bridge/src/registries/api/GetSecretRequest.ts +++ b/packages/app-bridge/src/registries/api/GetSecretRequest.ts @@ -1,7 +1,7 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export type GetSecretRequestPayload = { - id: string; + endpoint: string; requestParams: unknown; }; From 565ce629b90c29a26844d77f6a2779d32e5dc858 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 29 May 2024 10:17:18 +0200 Subject: [PATCH 070/182] chore: release packages (alpha) (#938) Co-authored-by: julianiff --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 308dff857..66ccb8f12 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,6 +10,7 @@ }, "changesets": [ "calm-candles-wink", + "clever-suns-laugh", "cuddly-pets-hammer", "five-mangos-search", "four-crabs-bake", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 6454e0833..5c5def2e8 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.27 + +### Patch Changes + +- [#937](https://github.com/Frontify/brand-sdk/pull/937) [`341886e`](https://github.com/Frontify/brand-sdk/commit/341886e9d16184048f9285d692df5177bfd2d0d1) Thanks [@julianiff](https://github.com/julianiff)! - chore: rename brand sdk name + ## 4.0.0-alpha.26 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index a8bcd3055..1beaae379 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.26", + "version": "4.0.0-alpha.27", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 7ea653ca17f2a16c72e8ee5525580eaee0d6405a Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Wed, 29 May 2024 10:44:47 +0200 Subject: [PATCH 071/182] refactor: rename brandsdk name from secret to secure (#939) * chore: rename from secret to secure * Create odd-geckos-end.md * chore: rename api metho * chore: fixup --- .changeset/odd-geckos-end.md | 5 +++++ packages/app-bridge/src/AppBridgePlatformApp.ts | 2 +- .../src/registries/api/ApiMethodRegistry.ts | 4 ++-- .../src/registries/api/GetSecretRequest.spec.ts | 10 +++++----- .../src/registries/api/GetSecretRequest.ts | 15 --------------- .../src/registries/api/GetSecureRequest.ts | 15 +++++++++++++++ packages/app-bridge/src/registries/api/index.ts | 2 +- 7 files changed, 29 insertions(+), 24 deletions(-) create mode 100644 .changeset/odd-geckos-end.md delete mode 100644 packages/app-bridge/src/registries/api/GetSecretRequest.ts create mode 100644 packages/app-bridge/src/registries/api/GetSecureRequest.ts diff --git a/.changeset/odd-geckos-end.md b/.changeset/odd-geckos-end.md new file mode 100644 index 000000000..5a7a253de --- /dev/null +++ b/.changeset/odd-geckos-end.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +refactor: rename brandsdk name from secretRequest to secureRequest diff --git a/packages/app-bridge/src/AppBridgePlatformApp.ts b/packages/app-bridge/src/AppBridgePlatformApp.ts index 4bcf2393c..c7c51a4da 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.ts @@ -25,7 +25,7 @@ import { ErrorMessageBus, type IMessageBus, MessageBus } from './utilities/Messa import { getQueryParameters } from './utilities/queryParams'; export type PlatformAppApiMethod = ApiMethodNameValidator< - Pick + Pick >; export type PlatformAppCommandRegistry = CommandNameValidator<{ diff --git a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts index 76615f97d..b5cd82bcd 100644 --- a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts +++ b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts @@ -14,7 +14,7 @@ import { import { type GetCurrentUserPayload, type GetCurrentUserResponse } from './GetCurrentUser'; import { type GetDocumentNavigationPayload, type GetDocumentNavigationResponse } from './GetDocumentNavigation'; import { type GetPortalNavigationResponse } from './GetPortalNavigation'; -import { type GetSecretRequestPayload, type GetSecretRequestResponse } from './GetSecretRequest.ts'; +import { type GetSecureRequestPayload, type GetSecureRequestResponse } from './GetSecureRequest.ts'; import { type SetAssetIdsByBlockAssetKeyPayload, type SetAssetIdsByBlockAssetKeyResponse, @@ -35,7 +35,7 @@ export type ApiMethodRegistry = ApiMethodNameValidator<{ payload: SetAssetIdsByBlockAssetKeyPayload; response: SetAssetIdsByBlockAssetKeyResponse; }; - getSecretRequest: { payload: GetSecretRequestPayload; response: GetSecretRequestResponse }; + getSecureRequest: { payload: GetSecureRequestPayload; response: GetSecureRequestResponse }; getDocumentNavigation: { payload: GetDocumentNavigationPayload; response: GetDocumentNavigationResponse }; getPortalNavigation: { payload: void; response: GetPortalNavigationResponse }; }>; diff --git a/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts b/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts index 2cabc4bd5..2a424fb40 100644 --- a/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts +++ b/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts @@ -2,14 +2,14 @@ import { describe, expect, it } from 'vitest'; -import { getSecretRequest } from './GetSecretRequest.ts'; +import { getSecureRequest } from './GetSecureRequest'; -describe('GetSecretRequest', () => { +describe('GetSecureRequest', () => { it('should return correct method name', () => { const TEST_ID = 'user-api'; - const secretRequest = getSecretRequest({ endpoint: TEST_ID, requestParams: 'data' }); - expect(secretRequest.name).toBe('getSecretRequest'); - expect(secretRequest.payload).toStrictEqual({ + const secureRequest = getSecureRequest({ endpoint: TEST_ID, requestParams: 'data' }); + expect(secureRequest.name).toBe('getSecureRequest'); + expect(secureRequest.payload).toStrictEqual({ endpoint: TEST_ID, requestParams: 'data', }); diff --git a/packages/app-bridge/src/registries/api/GetSecretRequest.ts b/packages/app-bridge/src/registries/api/GetSecretRequest.ts deleted file mode 100644 index 5cbb790cf..000000000 --- a/packages/app-bridge/src/registries/api/GetSecretRequest.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type GetSecretRequestPayload = { - endpoint: string; - requestParams: unknown; -}; - -export type GetSecretRequestResponse = { - data: unknown; -}; - -export const getSecretRequest = (payload: GetSecretRequestPayload) => ({ - name: 'getSecretRequest', - payload, -}); diff --git a/packages/app-bridge/src/registries/api/GetSecureRequest.ts b/packages/app-bridge/src/registries/api/GetSecureRequest.ts new file mode 100644 index 000000000..6b4c23d00 --- /dev/null +++ b/packages/app-bridge/src/registries/api/GetSecureRequest.ts @@ -0,0 +1,15 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type GetSecureRequestPayload = { + endpoint: string; + requestParams: unknown; +}; + +export type GetSecureRequestResponse = { + data: unknown; +}; + +export const getSecureRequest = (payload: GetSecureRequestPayload) => ({ + name: 'getSecureRequest', + payload, +}); diff --git a/packages/app-bridge/src/registries/api/index.ts b/packages/app-bridge/src/registries/api/index.ts index afe608785..45e961473 100644 --- a/packages/app-bridge/src/registries/api/index.ts +++ b/packages/app-bridge/src/registries/api/index.ts @@ -6,6 +6,6 @@ export * from './CreateAsset'; export * from './GetAssetResourceInformation'; export * from './GetCurrentUser'; export * from './SetAssetIdsByBlockAssetKey'; -export * from './GetSecretRequest'; +export * from './GetSecureRequest'; export * from './GetDocumentNavigation'; export * from './GetPortalNavigation'; From 58efba6efac4b48de48c74a6d6e0c8ddb16dcc31 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 29 May 2024 10:51:52 +0200 Subject: [PATCH 072/182] chore: release packages (alpha) (#940) Co-authored-by: julianiff --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 66ccb8f12..f63df2fb5 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -26,6 +26,7 @@ "nasty-feet-repair", "neat-plants-smile", "nervous-walls-repair", + "odd-geckos-end", "orange-jokes-listen", "pink-bugs-behave", "pink-geckos-change", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 5c5def2e8..449442024 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.28 + +### Patch Changes + +- [#939](https://github.com/Frontify/brand-sdk/pull/939) [`7ea653c`](https://github.com/Frontify/brand-sdk/commit/7ea653ca17f2a16c72e8ee5525580eaee0d6405a) Thanks [@julianiff](https://github.com/julianiff)! - refactor: rename brandsdk name from secretRequest to secureRequest + ## 4.0.0-alpha.27 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 1beaae379..c7372e884 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.27", + "version": "4.0.0-alpha.28", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 4e643ec9414e5671f877c556b68436a1a06569cb Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Wed, 29 May 2024 16:09:22 +0200 Subject: [PATCH 073/182] feat: adjust secure request response (#941) * chore: add secureRequestResponse * Create spicy-books-shout.md * chore: change to statusText --- .changeset/spicy-books-shout.md | 5 +++++ packages/app-bridge/src/registries/api/GetSecureRequest.ts | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 .changeset/spicy-books-shout.md diff --git a/.changeset/spicy-books-shout.md b/.changeset/spicy-books-shout.md new file mode 100644 index 000000000..28e101143 --- /dev/null +++ b/.changeset/spicy-books-shout.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +Feat: adjust secure request response diff --git a/packages/app-bridge/src/registries/api/GetSecureRequest.ts b/packages/app-bridge/src/registries/api/GetSecureRequest.ts index 6b4c23d00..553e18cff 100644 --- a/packages/app-bridge/src/registries/api/GetSecureRequest.ts +++ b/packages/app-bridge/src/registries/api/GetSecureRequest.ts @@ -7,6 +7,8 @@ export type GetSecureRequestPayload = { export type GetSecureRequestResponse = { data: unknown; + statusText: string; + status: string; }; export const getSecureRequest = (payload: GetSecureRequestPayload) => ({ From 050c7869ac6f9100cf23e109472dbc1fbeee4f67 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 29 May 2024 16:18:01 +0200 Subject: [PATCH 074/182] chore: release packages (alpha) (#942) Co-authored-by: julianiff --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index f63df2fb5..c97e55b0c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -37,6 +37,7 @@ "shy-jobs-protect", "smart-suns-type", "smooth-planets-pay", + "spicy-books-shout", "stale-hairs-wash", "strong-tools-check", "tough-nails-shout", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 449442024..12186ef23 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.29 + +### Patch Changes + +- [#941](https://github.com/Frontify/brand-sdk/pull/941) [`4e643ec`](https://github.com/Frontify/brand-sdk/commit/4e643ec9414e5671f877c556b68436a1a06569cb) Thanks [@julianiff](https://github.com/julianiff)! - Feat: adjust secure request response + ## 4.0.0-alpha.28 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index c7372e884..ad15adad4 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.28", + "version": "4.0.0-alpha.29", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 703fdaec21ba4102b9d92bef2a0339e1030ba032 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Jun 2024 12:33:06 +0200 Subject: [PATCH 075/182] chore: release packages (alpha) (#951) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 7 +++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index c97e55b0c..00460c253 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -33,6 +33,7 @@ "polite-eels-shake", "pretty-items-marry", "red-islands-report", + "rich-olives-repeat", "shaggy-mugs-speak", "shy-jobs-protect", "smart-suns-type", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 51aca4664..23185d98c 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.30 + +### Patch Changes + +- chore: merge branch `main` into dev + ## 4.0.0-alpha.29 ### Patch Changes @@ -82,6 +88,7 @@ ### Minor Changes - # [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` + ## 3.9.2 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index ad15adad4..ab5fa6526 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.29", + "version": "4.0.0-alpha.30", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 2491b6e88fc41ca8eafff5e41ec181247a968c46 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Mon, 17 Jun 2024 16:56:31 +0200 Subject: [PATCH 076/182] feat: add state listener to allow push from parent (#956) * chore:Adjust for 2 way communication * feat: add state Listener with push from Parent. * Create ten-guests-wash.md * chore: remove unused type --- .changeset/ten-guests-wash.md | 5 +++++ .../app-bridge/src/AppBridgePlatformApp.ts | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 .changeset/ten-guests-wash.md diff --git a/.changeset/ten-guests-wash.md b/.changeset/ten-guests-wash.md new file mode 100644 index 000000000..6febbe912 --- /dev/null +++ b/.changeset/ten-guests-wash.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: adds state listener to allow push from parent diff --git a/packages/app-bridge/src/AppBridgePlatformApp.ts b/packages/app-bridge/src/AppBridgePlatformApp.ts index c7c51a4da..9726341cb 100644 --- a/packages/app-bridge/src/AppBridgePlatformApp.ts +++ b/packages/app-bridge/src/AppBridgePlatformApp.ts @@ -144,6 +144,10 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { this.apiMessageBus = new MessageBus(apiPort); this.stateMessageBus = new MessageBus(statePort); + statePort.onmessage = (event: MessageEvent<{ token: string; message: Record }>) => { + this.onStateChangeListener(event); + }; + this.localContext = context; this.localState = state; this.initialized = true; @@ -257,6 +261,20 @@ export class AppBridgePlatformApp implements IAppBridgePlatformApp { } } } + + private onStateChangeListener(event: MessageEvent<{ token: string; message: Record }>) { + const { token } = event.data; + + if (token === 'DEV_UPDATE_STATE' && 'settings' in event.data.message && 'userState' in event.data.message) { + const message = event.data.message as PlatformAppState; + + this.callSubscribedTopic('State.*', [message, this.localState]); + this.callSubscribedTopic('State.settings', [message.settings, this.localState.settings]); + this.callSubscribedTopic('State.userState', [message.userState, this.localState.userState]); + + this.localState = message; + } + } } export interface IAppBridgePlatformApp< From 4d191a8b61645afacb279e72bcbc67111ec6af3f Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Tue, 18 Jun 2024 10:57:10 +0200 Subject: [PATCH 077/182] feat: app bridge theme dev (#958) * feat: add app-bridge-theme package * first fine build * sonar * basic typing and definitions * fix: add missing export * deprecate searchInGuideline * cleaning and typing * assetsSettings type * export types needed * updates * more * chore: update lock file * changeset * deleting unused file --------- Co-authored-by: Jiri Matyas --- .changeset/pink-lobsters-beg.md | 5 + ...pp-bridge-theme-continuous-integration.yml | 43 +++ packages/app-bridge-theme/.browserslistrc | 3 + packages/app-bridge-theme/.eslintrc.cjs | 58 +++ packages/app-bridge-theme/.gitignore | 6 + packages/app-bridge-theme/.prettierrc.cjs | 10 + packages/app-bridge-theme/CHANGELOG.md | 1 + packages/app-bridge-theme/README.md | 2 + packages/app-bridge-theme/package.json | 54 +++ .../app-bridge-theme/src/AppBridgeTheme.ts | 35 ++ .../src/commands/CommandRegistry.ts | 13 + packages/app-bridge-theme/src/global.d.ts | 3 + packages/app-bridge-theme/src/index.ts | 3 + packages/app-bridge-theme/src/types.ts | 74 ++++ packages/app-bridge-theme/src/types/Asset.ts | 26 ++ .../app-bridge-theme/src/types/Context.ts | 64 ++++ .../app-bridge-theme/src/types/Guideline.ts | 102 +++++ .../src/types/GuidelineSearchResult.ts | 30 ++ .../app-bridge-theme/src/types/Language.ts | 23 ++ .../src/types/ThemeTemplate.ts | 3 + packages/app-bridge-theme/tsconfig.json | 23 ++ packages/app-bridge-theme/tsconfig.node.json | 12 + packages/app-bridge-theme/vite.config.mts | 31 ++ pnpm-lock.yaml | 348 ++++++++++++------ 24 files changed, 855 insertions(+), 117 deletions(-) create mode 100644 .changeset/pink-lobsters-beg.md create mode 100644 .github/workflows/app-bridge-theme-continuous-integration.yml create mode 100644 packages/app-bridge-theme/.browserslistrc create mode 100644 packages/app-bridge-theme/.eslintrc.cjs create mode 100644 packages/app-bridge-theme/.gitignore create mode 100644 packages/app-bridge-theme/.prettierrc.cjs create mode 100644 packages/app-bridge-theme/CHANGELOG.md create mode 100644 packages/app-bridge-theme/README.md create mode 100644 packages/app-bridge-theme/package.json create mode 100644 packages/app-bridge-theme/src/AppBridgeTheme.ts create mode 100644 packages/app-bridge-theme/src/commands/CommandRegistry.ts create mode 100644 packages/app-bridge-theme/src/global.d.ts create mode 100644 packages/app-bridge-theme/src/index.ts create mode 100644 packages/app-bridge-theme/src/types.ts create mode 100644 packages/app-bridge-theme/src/types/Asset.ts create mode 100644 packages/app-bridge-theme/src/types/Context.ts create mode 100644 packages/app-bridge-theme/src/types/Guideline.ts create mode 100644 packages/app-bridge-theme/src/types/GuidelineSearchResult.ts create mode 100644 packages/app-bridge-theme/src/types/Language.ts create mode 100644 packages/app-bridge-theme/src/types/ThemeTemplate.ts create mode 100644 packages/app-bridge-theme/tsconfig.json create mode 100644 packages/app-bridge-theme/tsconfig.node.json create mode 100644 packages/app-bridge-theme/vite.config.mts diff --git a/.changeset/pink-lobsters-beg.md b/.changeset/pink-lobsters-beg.md new file mode 100644 index 000000000..835c0e161 --- /dev/null +++ b/.changeset/pink-lobsters-beg.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat(AppBridgeThemes): initial alpha release of AppBridgeThemes diff --git a/.github/workflows/app-bridge-theme-continuous-integration.yml b/.github/workflows/app-bridge-theme-continuous-integration.yml new file mode 100644 index 000000000..fbcaf1f28 --- /dev/null +++ b/.github/workflows/app-bridge-theme-continuous-integration.yml @@ -0,0 +1,43 @@ +name: App Bridge Theme CI + +on: + pull_request: + paths: + - packages/app-bridge-theme/** + +# Ensures that only one workflow per branch will run at a time. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + app-bridge-theme-ci: + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Checkout default branch + uses: actions/checkout@v4 + with: + # Disabling shallow clone is recommended for improving relevancy of reporting + fetch-depth: 0 + + - name: Use pnpm + uses: pnpm/action-setup@v3 + with: + run_install: false + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + cache: "pnpm" + + - name: Install npm dependencies + run: pnpm i --frozen-lockfile + + - name: Typecheck code + run: pnpm --stream --filter {packages/app-bridge-theme} typecheck + + - name: Lint code + run: pnpm --stream --filter {packages/app-bridge-theme} lint diff --git a/packages/app-bridge-theme/.browserslistrc b/packages/app-bridge-theme/.browserslistrc new file mode 100644 index 000000000..d388ec78b --- /dev/null +++ b/packages/app-bridge-theme/.browserslistrc @@ -0,0 +1,3 @@ +last 2 versions +> 1% +not dead diff --git a/packages/app-bridge-theme/.eslintrc.cjs b/packages/app-bridge-theme/.eslintrc.cjs new file mode 100644 index 000000000..04ef1024d --- /dev/null +++ b/packages/app-bridge-theme/.eslintrc.cjs @@ -0,0 +1,58 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +module.exports = { + root: true, + extends: ['@frontify/eslint-config-react'], + plugins: ['notice'], + settings: { + react: { + version: 'detect', + }, + }, + parserOptions: { + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + sourceType: 'module', + }, + overrides: [ + { + files: ['*.js', '*.ts', '*.tsx'], + rules: { + 'notice/notice': [ + 'error', + { + template: '/* (c) Copyright Frontify Ltd., all rights reserved. */\n\n', + messages: { + whenFailedToMatch: 'No Frontify copyright header set.', + }, + }, + ], + }, + }, + { + files: ['*.ts', '*.tsx', '*.mts', '*.cts'], + rules: { + 'no-prototype-builtins': 'warn', + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-misused-promises': 'warn', + '@typescript-eslint/no-unsafe-argument': 'warn', + '@typescript-eslint/no-unsafe-assignment': 'warn', + '@typescript-eslint/no-unsafe-call': 'warn', + '@typescript-eslint/no-unsafe-member-access': 'warn', + '@typescript-eslint/no-unsafe-return': 'warn', + '@typescript-eslint/require-await': 'warn', + '@typescript-eslint/await-thenable': 'warn', + '@typescript-eslint/no-unsafe-enum-comparison': 'warn', + '@typescript-eslint/restrict-plus-operands': 'warn', + }, + }, + { + files: ['**/*.md/**/*'], + processor: 'markdown/markdown', + parserOptions: { + project: null, + }, + }, + ], +}; diff --git a/packages/app-bridge-theme/.gitignore b/packages/app-bridge-theme/.gitignore new file mode 100644 index 000000000..fc016d6fa --- /dev/null +++ b/packages/app-bridge-theme/.gitignore @@ -0,0 +1,6 @@ +node_modules +dist +.idea +coverage +.DS_Store +package.json.d.ts diff --git a/packages/app-bridge-theme/.prettierrc.cjs b/packages/app-bridge-theme/.prettierrc.cjs new file mode 100644 index 000000000..ac04664a5 --- /dev/null +++ b/packages/app-bridge-theme/.prettierrc.cjs @@ -0,0 +1,10 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +module.exports = { + singleQuote: true, + tabWidth: 4, + printWidth: 120, + trailingComma: 'all', + arrowParens: 'always', + endOfLine: 'lf', +}; diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md new file mode 100644 index 000000000..d0eda5458 --- /dev/null +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -0,0 +1 @@ +# @frontify/app-bridge-theme diff --git a/packages/app-bridge-theme/README.md b/packages/app-bridge-theme/README.md new file mode 100644 index 000000000..6ada156a8 --- /dev/null +++ b/packages/app-bridge-theme/README.md @@ -0,0 +1,2 @@ +# App Bridge Theme +Package to establish communication between Frontify and third party themes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json new file mode 100644 index 000000000..eb6adc516 --- /dev/null +++ b/packages/app-bridge-theme/package.json @@ -0,0 +1,54 @@ +{ + "name": "@frontify/app-bridge-theme", + "type": "module", + "version": "1.0.0-alpha.1", + "description": "Package to establish communication between Frontify and themes", + "author": "Frontify Developers ", + "repository": { + "type": "git", + "url": "https://github.com/Frontify/brand-sdk", + "directory": "packages/app-bridge-theme" + }, + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/index.js", + "import": "./dist/index.js" + } + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist", + "package.json.d.ts" + ], + "engines": { + "node": ">=16" + }, + "scripts": { + "build": "ts-json-as-const ./package.json && vite build", + "dev": "vite build --watch", + "lint": "eslint .", + "lint:fix": "eslint --fix .", + "typecheck": "tsc --noEmit" + }, + "peerDependencies": { + "react": "^18" + }, + "dependencies": {}, + "devDependencies": { + "@frontify/eslint-config-react": "^0.17.6", + "@types/react": "^18.2.75", + "@types/react-dom": "^18.2.24", + "eslint": "^8.57.0", + "eslint-plugin-notice": "^0.9.10", + "prettier": "^3.2.5", + "react": "^18.2.0", + "ts-json-as-const": "^1.0.7", + "type-fest": "^4.15.0", + "typescript": "^5.4.4", + "vite": "^5.2.10", + "vite-plugin-dts": "^3.8.1" + } +} diff --git a/packages/app-bridge-theme/src/AppBridgeTheme.ts b/packages/app-bridge-theme/src/AppBridgeTheme.ts new file mode 100644 index 000000000..02c9714ad --- /dev/null +++ b/packages/app-bridge-theme/src/AppBridgeTheme.ts @@ -0,0 +1,35 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { + type Command, + type DispatchHandlerParameter, + type AppBridgeThemeEvent, + type EventNameParameter, + type EventCallbackParameter, + type EventUnsubscribeFunction, +} from './types'; +import { type ContextReturn, type Context } from './types/Context'; +import { type GuidelineSearchResult } from './types/GuidelineSearchResult'; + +export interface AppBridgeTheme { + dispatch( + dispatchHandler: DispatchHandlerParameter, + ): Promise; + + context(): ContextReturn; + context(key: Key): ContextReturn; + context(key?: keyof Context | void): unknown; + + subscribe( + eventName: EventNameParameter, + callback: EventCallbackParameter, + ): EventUnsubscribeFunction; + + /** + * @deprecated + * Search in the current Guideline for a given query. + * @param query - The query to search for. + * @param order - The order in which the results should be returned. Defaults to 'relevance'. + */ + searchInGuideline(query: string, order?: 'relevance' | 'newest' | 'oldest'): Promise; +} diff --git a/packages/app-bridge-theme/src/commands/CommandRegistry.ts b/packages/app-bridge-theme/src/commands/CommandRegistry.ts new file mode 100644 index 000000000..5bb5440f1 --- /dev/null +++ b/packages/app-bridge-theme/src/commands/CommandRegistry.ts @@ -0,0 +1,13 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type CommandNameValidator } from 'src/types'; + +type OpenSearchDialog = void; +type CloseSearchDialog = void; +type NavigateToDocumentSection = number | string; + +export type CommandRegistry = CommandNameValidator<{ + openSearchDialog: OpenSearchDialog; + closeSearchDialog: CloseSearchDialog; + navigateToDocumentSection: NavigateToDocumentSection; +}>; diff --git a/packages/app-bridge-theme/src/global.d.ts b/packages/app-bridge-theme/src/global.d.ts new file mode 100644 index 000000000..fddff887f --- /dev/null +++ b/packages/app-bridge-theme/src/global.d.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +type Nullable = T | null; diff --git a/packages/app-bridge-theme/src/index.ts b/packages/app-bridge-theme/src/index.ts new file mode 100644 index 000000000..9232746e5 --- /dev/null +++ b/packages/app-bridge-theme/src/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './AppBridgeTheme'; diff --git a/packages/app-bridge-theme/src/types.ts b/packages/app-bridge-theme/src/types.ts new file mode 100644 index 000000000..0bfe7ed34 --- /dev/null +++ b/packages/app-bridge-theme/src/types.ts @@ -0,0 +1,74 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type Simplify } from 'type-fest'; + +import { type CommandRegistry } from './commands/CommandRegistry'; +import { type Context } from './types/Context'; + +type CommandVerb = 'open' | 'close' | 'navigate' | 'download'; +type EventVerb = 'chosen'; + +type NameContextList = 'Command' | 'Event'; +type WrongNamePattern = ApiMethodName extends string + ? `The following ${NameContext} do not match the naming pattern: ${ApiMethodName}` + : never; + +type ObjectNameValidator< + NameObject, + PatternObject, + NameContext extends NameContextList, +> = keyof NameObject extends keyof PatternObject + ? NameObject + : WrongNamePattern< + `${Exclude, Extract>}`, + NameContext + >; + +type CommandNamePattern = { [commandName: `${CommandVerb}${string}`]: unknown }; +export type CommandNameValidator = Simplify< + ObjectNameValidator +>; + +export type Command = CommandNameValidator< + Pick +>; + +type EventNameValidator = Simplify>; + +type ContextAsEventName = { + [ContextKey in keyof Context as ContextKey extends string ? `Context.${ContextKey}` : never]: [ + Context[ContextKey], + Context[ContextKey], + ]; +}; + +type DispatchHandler< + CommandName extends keyof CommandNamePattern, + Command extends CommandNamePattern, +> = Command[CommandName] extends void ? { name: CommandName } : { name: CommandName; payload: Command[CommandName] }; + +export type DispatchHandlerParameter< + CommandName, + Command extends CommandNamePattern, +> = CommandName extends keyof CommandNamePattern + ? DispatchHandler + : WrongNamePattern; + +export type AppBridgeThemeEvent = EventNameValidator>; + +export type EventNamePattern = { + [eventName: `Context.${string}` | `${string}${Capitalize}`]: unknown; +}; +export type EventNameParameter< + EventName, + EventNameParameter extends EventNamePattern, +> = EventName extends keyof EventNameParameter ? EventName : WrongNamePattern; + +export type EventCallbackParameter = EventName extends keyof AppBridgeThemeEvent + ? // eslint-disable-next-line @typescript-eslint/no-explicit-any + AppBridgeThemeEvent[EventName] extends any[] + ? (...eventReturn: AppBridgeThemeEvent[EventName]) => void + : (eventReturn: AppBridgeThemeEvent[EventName]) => void + : () => void; + +export type EventUnsubscribeFunction = () => void; diff --git a/packages/app-bridge-theme/src/types/Asset.ts b/packages/app-bridge-theme/src/types/Asset.ts new file mode 100644 index 000000000..385c92f15 --- /dev/null +++ b/packages/app-bridge-theme/src/types/Asset.ts @@ -0,0 +1,26 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type Asset = { + id: number; + creatorName: string; + extension: string; + externalUrl: Nullable; + fileName: string; + title: string; + status: string; + objectType: string; + height: Nullable; + width: Nullable; + genericUrl: string; + previewUrl: string; + originUrl: string; + projectId: number; + fileSize: number; + fileSizeHumanReadable: string; + fileId: string; + token: string; + projectType: Nullable; + revisionId: Nullable; + backgroundColor: Nullable; + isDownloadProtected: boolean; +}; diff --git a/packages/app-bridge-theme/src/types/Context.ts b/packages/app-bridge-theme/src/types/Context.ts new file mode 100644 index 000000000..10073826e --- /dev/null +++ b/packages/app-bridge-theme/src/types/Context.ts @@ -0,0 +1,64 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type EventUnsubscribeFunction } from 'src/types'; + +import { type Asset } from './Asset'; +import { + type GuidelineCoverPage, + type GuidelineDocument, + type GuidelineDocumentLibrary, + type GuidelineDocumentPage, +} from './Guideline'; +import { type Language } from './Language'; +import { type ThemeTemplate } from './ThemeTemplate'; + +export type TemplateContext = { templateId: string; type: ThemeTemplate } & ( + | { type: 'documentPage'; document: GuidelineDocument; documentPage: GuidelineDocumentPage } + | { type: 'library'; document: GuidelineDocumentLibrary } + | { type: 'cover'; coverPage: GuidelineCoverPage } +); + +export type Context = { + brandId: number; + projectId: number; + portalId: number; + portalToken: string | null; + currentLanguage: string; + defaultLanguage: string; + isEditing: boolean; + isPublicLink: boolean; + isAuthenticated: boolean; + isSearchDialogOpen: boolean; + languages: Language[]; + template: TemplateContext | null; + settings: { + templateSettings: Record; + templateAssets: Record; + }; +}; + +export type ContextReturn = Key extends keyof Context + ? { + /** + * Gets the current value of the context object at the given key. + */ + get(): Readonly; + /** + * Subscribes to changes in the context object at the given key. + */ + subscribe( + callbackFunction: (nextContext: Context[Key], previousContext: Context[Key]) => void, + ): EventUnsubscribeFunction; + } + : { + /** + * Gets the current value of the context object. + */ + get(): Readonly; + /** + * Subscribes to changes in the context object. + */ + subscribe( + callbackFunction: (nextContext: Context, previousContext: Context) => void, + ): EventUnsubscribeFunction; + }; diff --git a/packages/app-bridge-theme/src/types/Guideline.ts b/packages/app-bridge-theme/src/types/Guideline.ts new file mode 100644 index 000000000..9e5862c45 --- /dev/null +++ b/packages/app-bridge-theme/src/types/Guideline.ts @@ -0,0 +1,102 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export enum LinkSettingsDisplay { + TextAndIcon = 'ICON_TEXT', + IconOnly = 'ICON', + TextOnly = 'TEXT', +} + +export enum LinkSettingsIconPosition { + Right = 'RIGHT', + Left = 'LEFT', +} + +export interface GuidelineCoverPage { + id(): number; + title(language?: string): string; + isPublished(): boolean; + isHiddenInNavigation(): boolean; + url(language?: string): string; + type: 'cover-page'; +} + +export interface GuidelineDocumentGroup { + id(): number; + title(language?: string): string; + children(): (GuidelineDocument | GuidelineDocumentLibrary | GuidelineDocumentLink)[]; + type: 'document-group'; +} + +export interface GuidelineDocument { + id(): number; + title(language?: string): string; + slug(language?: string): string; + url(language?: string): string; + parentId(): Nullable; + type: 'document'; +} + +export interface GuidelineDocumentLibrary { + id(): number; + title(language?: string): string; + slug(language?: string): string; + url(language?: string): string; + parentId(): Nullable; + type: 'document-library'; +} + +export interface GuidelineDocumentLink { + id(): number; + title(language?: string): string; + url(): string; + displayMode(): LinkSettingsDisplay; + iconPosition(): LinkSettingsIconPosition; + customIconUrl(): Nullable; + shouldOpenInNewTab(): boolean; + parentId(): Nullable; + type: 'document-link'; +} + +export interface GuidelinePageCategory { + id(): number; + title(language?: string): string; + slug(language?: string): string; + children(): (GuidelineDocumentPage | GuidelineDocumentPageLink)[]; + type: 'page-category'; +} + +export interface GuidelineDocumentPage { + id(): number; + title(language?: string): string; + slug(language?: string): string; + url(language?: string): string; + headings(): GuidelineDocumentPageHeading[]; + type: 'document-page'; +} + +export interface GuidelineDocumentPageLink { + id(): number; + title(language?: string): string; + url(): string; + type: 'document-page-link'; +} + +export interface GuidelineDocumentPageHeading { + id(): number; + title(language?: string): string; + slug(language?: string): string; + type: 'document-page-heading'; +} + +export type PortalNavigationItem = + | GuidelineCoverPage + | GuidelineDocumentGroup + | GuidelineDocument + | GuidelineDocumentLibrary + | GuidelineDocumentLink; + +export type DocumentNavigationItem = + | GuidelinePageCategory + | GuidelineDocumentPage + | GuidelineDocumentPageLink + | GuidelineDocumentPageHeading; diff --git a/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts b/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts new file mode 100644 index 000000000..34f7863e7 --- /dev/null +++ b/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts @@ -0,0 +1,30 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export const GuidelineSearchResultTypeMap = { + block: 'BLOCK', + section: 'SECTION', + page: 'PAGE', + color: 'COLOR', +} as const; +type GuidelineSearchResultType = (typeof GuidelineSearchResultTypeMap)[keyof typeof GuidelineSearchResultTypeMap]; + +export type GuidelineSearchResult = { + highlights: string[]; + type: GuidelineSearchResultType; + objectId: number; + pageId: number; + pageSlug: string; + pageTitle: string; + pageCategorySlug: string | null; + blockId: number; + documentId: number; + documentSlug: string; + documentTitle: string; + portalId: number; + portalToken: string | null; + sectionId: string | null; + sectionSlug: string | null; + sectionTitle: string | null; + colorHex?: string; + projectColorId?: string; +}; diff --git a/packages/app-bridge-theme/src/types/Language.ts b/packages/app-bridge-theme/src/types/Language.ts new file mode 100644 index 000000000..ea2838728 --- /dev/null +++ b/packages/app-bridge-theme/src/types/Language.ts @@ -0,0 +1,23 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type Language = { + /** + * The language code in ISO 639-1 format. + */ + isoCode: string; + + /** + * The name of the language. + */ + name: string; + + /** + * Indicates whether the language is the default language. + */ + isDefault: boolean; + + /** + * Indicates whether the language is in draft state. + */ + isDraft: boolean; +}; diff --git a/packages/app-bridge-theme/src/types/ThemeTemplate.ts b/packages/app-bridge-theme/src/types/ThemeTemplate.ts new file mode 100644 index 000000000..1b3df14e9 --- /dev/null +++ b/packages/app-bridge-theme/src/types/ThemeTemplate.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type ThemeTemplate = 'documentPage' | 'cover' | 'library'; diff --git a/packages/app-bridge-theme/tsconfig.json b/packages/app-bridge-theme/tsconfig.json new file mode 100644 index 000000000..35cd9dce7 --- /dev/null +++ b/packages/app-bridge-theme/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2021", + "useDefineForClassFields": true, + "lib": ["ES2021", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUncheckedIndexedAccess": false, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "baseUrl": ".", + "types": ["vite/client"] + }, + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/packages/app-bridge-theme/tsconfig.node.json b/packages/app-bridge-theme/tsconfig.node.json new file mode 100644 index 000000000..dcb1d4ec2 --- /dev/null +++ b/packages/app-bridge-theme/tsconfig.node.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "lib": ["ESNext"], + "target": "ESNext" + }, + "include": [".eslintrc.cjs", ".prettierrc.cjs", "vite.config.mts", "package.json"] +} diff --git a/packages/app-bridge-theme/vite.config.mts b/packages/app-bridge-theme/vite.config.mts new file mode 100644 index 000000000..e6eabb2a0 --- /dev/null +++ b/packages/app-bridge-theme/vite.config.mts @@ -0,0 +1,31 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { defineConfig } from 'vite'; +import dts from 'vite-plugin-dts'; + +import { dependencies as dependenciesMap, peerDependencies as peerDependenciesMap } from './package.json'; + +const dependencies = Object.keys(dependenciesMap); +const peerDependencies = Object.keys(peerDependenciesMap); + +export const globals = { + react: 'React', + 'react-dom': 'ReactDOM', +}; + +export default defineConfig({ + plugins: [dts({ insertTypesEntry: true, rollupTypes: true })], + build: { + lib: { + entry: { + index: './src/index.ts', + }, + name: 'app-bridge-theme', + }, + sourcemap: true, + minify: true, + rollupOptions: { + external: [...dependencies, ...peerDependencies], + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 43543d6da..5d423c6f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,7 +24,7 @@ importers: version: 5.0.7 '@frontify/fondue': specifier: ^12.0.10 - version: 12.0.10(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)) + version: 12.0.10(jhbqyupum772ivndo3xkwf7iuu) '@vitejs/plugin-react': specifier: ^4.2.1 version: 4.2.1(vite@4.5.3(@types/node@18.19.31)(terser@5.30.4)) @@ -141,6 +141,45 @@ importers: specifier: ^1.4.0 version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + packages/app-bridge-theme: + devDependencies: + '@frontify/eslint-config-react': + specifier: ^0.17.6 + version: 0.17.6(eslint@8.57.0)(prettier@3.2.5)(react@18.2.0)(typescript@5.4.4) + '@types/react': + specifier: ^18.2.75 + version: 18.2.75 + '@types/react-dom': + specifier: ^18.2.24 + version: 18.2.24 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-plugin-notice: + specifier: ^0.9.10 + version: 0.9.10(eslint@8.57.0) + prettier: + specifier: ^3.2.5 + version: 3.2.5 + react: + specifier: ^18.2.0 + version: 18.2.0 + ts-json-as-const: + specifier: ^1.0.7 + version: 1.0.7(typescript@5.4.4) + type-fest: + specifier: ^4.15.0 + version: 4.15.0 + typescript: + specifier: ^5.4.4 + version: 5.4.4 + vite: + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + vite-plugin-dts: + specifier: ^3.8.1 + version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + packages/cli: dependencies: '@fastify/cors': @@ -257,7 +296,7 @@ importers: version: 3.9.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sinon@17.0.1) '@frontify/fondue': specifier: ^12.0.10 - version: 12.0.10(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)) + version: 12.0.10(g2qxhbirnett3q6vknbfcsddau) '@frontify/sidebar-settings': specifier: workspace:^ version: link:../sidebar-settings @@ -412,7 +451,7 @@ importers: dependencies: '@frontify/fondue': specifier: ^12.0.10 - version: 12.0.10(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)) + version: 12.0.10(g2qxhbirnett3q6vknbfcsddau) devDependencies: '@babel/core': specifier: ^7.24.4 @@ -1786,6 +1825,7 @@ packages: '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -1793,6 +1833,7 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead '@internationalized/date@3.3.0': resolution: {integrity: sha512-qfRd7jCIgUjabI8RxeAsxhLDRS1u8eUPX96GB5uBp1Tpm6YY6dVveE7YwsTEV6L4QOp5LKFirFHHGsL/XQwJIA==} @@ -7468,6 +7509,7 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true robust-predicates@3.0.2: @@ -10393,7 +10435,7 @@ snapshots: '@changesets/apply-release-plan@7.0.0': dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@changesets/config': 3.0.0 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.0 @@ -10405,16 +10447,16 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 7.6.0 '@changesets/assemble-release-plan@6.0.0': dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.0.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 + semver: 7.6.0 '@changesets/changelog-git@0.2.0': dependencies: @@ -10483,7 +10525,7 @@ snapshots: '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.5.4 + semver: 7.6.0 '@changesets/get-github-info@0.6.0': dependencies: @@ -10494,7 +10536,7 @@ snapshots: '@changesets/get-release-plan@4.0.0': dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@changesets/assemble-release-plan': 6.0.0 '@changesets/config': 3.0.0 '@changesets/pre': 2.0.0 @@ -10506,7 +10548,7 @@ snapshots: '@changesets/git@3.0.0': dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -10525,7 +10567,7 @@ snapshots: '@changesets/pre@2.0.0': dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -10533,7 +10575,7 @@ snapshots: '@changesets/read@0.6.0': dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/parse': 0.4.0 @@ -10548,7 +10590,7 @@ snapshots: '@changesets/write@0.3.0': dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -10891,9 +10933,9 @@ snapshots: '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4) eslint: 8.57.0 eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsonc: 2.15.0(eslint@8.57.0) eslint-plugin-lodash: 7.4.0(eslint@8.57.0) eslint-plugin-markdown: 4.0.1(eslint@8.57.0) @@ -11005,14 +11047,14 @@ snapshots: dependencies: tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)) - ? '@frontify/fondue@12.0.10(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0))' - : dependencies: + '@frontify/fondue@12.0.10(g2qxhbirnett3q6vknbfcsddau)': + dependencies: '@ctrl/tinycolor': 4.0.4 '@dnd-kit/core': 6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@dnd-kit/modifiers': 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) '@dnd-kit/utilities': 3.2.2(react@18.2.0) - '@frontify/fondue-charts': 1.8.3(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3) + '@frontify/fondue-charts': 1.8.3(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3) '@frontify/fondue-components': 1.2.3(@frontify/fondue-icons@0.2.1(react@18.2.0))(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@frontify/fondue-icons': 0.2.1(react@18.2.0) '@frontify/fondue-tokens': 3.5.0(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) @@ -11055,28 +11097,28 @@ snapshots: '@react-types/dialog': 3.4.5(react@18.2.0) '@react-types/shared': 3.16.0(react@18.2.0) '@tailwindcss/forms': 0.5.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) - '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-emoji': 31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-emoji': 31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/utils': 31.0.0 - '@udecode/zustood': 2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)) + '@udecode/zustood': 2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0)) '@xstate/immer': 0.3.3(immer@9.0.21)(xstate@4.38.3) '@xstate/react': 1.6.3(@types/react@18.2.75)(react@18.2.0)(xstate@4.38.3) date-fns: 3.6.0 @@ -11123,14 +11165,14 @@ snapshots: - zdog - zustand - ? '@frontify/fondue@12.0.10(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(@types/node@18.19.31)(@types/react-dom@18.2.24)(@types/react@18.2.75)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0))' - : dependencies: + '@frontify/fondue@12.0.10(jhbqyupum772ivndo3xkwf7iuu)': + dependencies: '@ctrl/tinycolor': 4.0.4 '@dnd-kit/core': 6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@dnd-kit/modifiers': 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) '@dnd-kit/utilities': 3.2.2(react@18.2.0) - '@frontify/fondue-charts': 1.8.3(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3) + '@frontify/fondue-charts': 1.8.3(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3) '@frontify/fondue-components': 1.2.3(@frontify/fondue-icons@0.2.1(react@18.2.0))(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@frontify/fondue-icons': 0.2.1(react@18.2.0) '@frontify/fondue-tokens': 3.5.0(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) @@ -11173,28 +11215,28 @@ snapshots: '@react-types/dialog': 3.4.5(react@18.2.0) '@react-types/shared': 3.16.0(react@18.2.0) '@tailwindcss/forms': 0.5.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) - '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-emoji': 31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-emoji': 31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/utils': 31.0.0 - '@udecode/zustood': 2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)) + '@udecode/zustood': 2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)) '@xstate/immer': 0.3.3(immer@9.0.21)(xstate@4.38.3) '@xstate/react': 1.6.3(@types/react@18.2.75)(react@18.2.0)(xstate@4.38.3) date-fns: 3.6.0 @@ -11383,7 +11425,7 @@ snapshots: '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.23.9 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -13261,7 +13303,7 @@ snapshots: '@testing-library/dom@9.3.4': dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 '@babel/runtime': 7.23.9 '@types/aria-query': 5.0.4 aria-query: 5.1.3 @@ -13321,7 +13363,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.23.6 + '@babel/parser': 7.24.4 '@babel/types': 7.23.6 '@types/babel__traverse@7.20.4': @@ -13577,6 +13619,16 @@ snapshots: '@typescript-eslint/types': 7.5.0 eslint-visitor-keys: 3.4.3 + '@udecode/plate-alignment@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + dependencies: + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + '@udecode/plate-alignment@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) @@ -13587,9 +13639,10 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-alignment@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-autoformat@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13608,10 +13661,9 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-autoformat@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-basic-marks@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - lodash: 4.17.21 + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13629,9 +13681,9 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-basic-marks@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-break@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13649,9 +13701,10 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-break@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-code-block@31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + prismjs: 1.29.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13670,10 +13723,10 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-code-block@31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-combobox@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - prismjs: 1.29.0 + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + downshift: 6.1.12(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13692,16 +13745,26 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-combobox@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - downshift: 6.1.12(react@18.2.0) + '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/utils': 31.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler '@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: @@ -13724,21 +13787,30 @@ snapshots: - react-native - scheduler - '@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-core@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/utils': 31.0.0 + clsx: 1.2.1 + is-hotkey: 0.2.0 + jotai: 2.8.0(@types/react@18.2.75)(react@18.2.0) + jotai-optics: 0.3.2(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(optics-ts@2.4.1) + jotai-x: 1.2.2(@types/react@18.2.75)(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(react@18.2.0) + lodash: 4.17.21 + nanoid: 3.3.7 + optics-ts: 2.4.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-hotkeys-hook: 4.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + use-deep-compare: 1.2.1(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0) + zustand-x: 3.0.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0)) transitivePeerDependencies: - '@types/react' - immer @@ -13805,6 +13877,18 @@ snapshots: - react-native - scheduler + '@udecode/plate-emoji@31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + dependencies: + '@emoji-mart/data': 1.1.2 + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.102.0 + slate-history: 0.100.0(slate@0.102.0) + slate-hyperscript: 0.100.0(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + '@udecode/plate-emoji@31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: '@emoji-mart/data': 1.1.2 @@ -13817,11 +13901,11 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-emoji@31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-floating@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@emoji-mart/data': 1.1.2 - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@floating-ui/core': 1.6.0 + '@floating-ui/react': 0.22.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13841,11 +13925,9 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-floating@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-indent@31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/react': 0.22.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13863,9 +13945,11 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-indent@31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-link@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13885,11 +13969,11 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-link@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-list@31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-reset-node': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13909,11 +13993,10 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-list@31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-mention@31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-reset-node': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - lodash: 4.17.21 + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13932,10 +14015,10 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-mention@31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-normalizers@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13954,10 +14037,9 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-normalizers@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-paragraph@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - lodash: 4.17.21 + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13975,9 +14057,9 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-paragraph@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-reset-node@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 @@ -13995,15 +14077,27 @@ snapshots: slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - '@udecode/plate-reset-node@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-utils@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/utils': 31.0.0 + clsx: 1.2.1 + lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler '@udecode/plate-utils@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': dependencies: @@ -14099,11 +14193,11 @@ snapshots: - react-native - scheduler - '@udecode/zustood@2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0))': + '@udecode/zustood@2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0))': dependencies: immer: 10.0.4 react-tracked: 1.7.11(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505) - zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0) transitivePeerDependencies: - react - react-dom @@ -14420,10 +14514,10 @@ snapshots: '@vue/compiler-core@3.3.4': dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - source-map-js: 1.0.2 + source-map-js: 1.2.0 '@vue/compiler-dom@3.3.4': dependencies: @@ -15782,13 +15876,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0))(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -15799,14 +15893,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -15816,7 +15910,7 @@ snapshots: eslint: 8.57.0 ignore: 5.2.4 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: array-includes: 3.1.7 array.prototype.findlastindex: 1.2.4 @@ -15826,7 +15920,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.1 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -18185,7 +18279,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -20270,6 +20364,18 @@ snapshots: - react-native - scheduler + zustand-x@3.0.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0)): + dependencies: + immer: 10.0.4 + lodash.mapvalues: 4.6.0 + react-tracked: 1.7.11(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505) + zustand: 4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + - react-native + - scheduler + zustand-x@3.0.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)): dependencies: immer: 10.0.4 @@ -20286,6 +20392,14 @@ snapshots: optionalDependencies: react: 18.2.0 + zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0): + dependencies: + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.75 + immer: 10.0.4 + react: 18.2.0 + zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0): dependencies: use-sync-external-store: 1.2.0(react@18.2.0) From b1c103be294bba6b2106e074945ac6d37585800b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 11:07:18 +0200 Subject: [PATCH 078/182] chore: release packages (alpha) (#959) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 5 ++++- packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 00460c253..1304297de 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -6,7 +6,8 @@ "@frontify/frontify-cli": "5.5.3", "@frontify/guideline-blocks-settings": "0.29.16", "@frontify/sidebar-settings": "0.8.1", - "@frontify/platform-app": "0.0.5" + "@frontify/platform-app": "0.0.5", + "@frontify/app-bridge-theme": "1.0.0-alpha.1" }, "changesets": [ "calm-candles-wink", @@ -30,6 +31,7 @@ "orange-jokes-listen", "pink-bugs-behave", "pink-geckos-change", + "pink-lobsters-beg", "polite-eels-shake", "pretty-items-marry", "red-islands-report", @@ -41,6 +43,7 @@ "spicy-books-shout", "stale-hairs-wash", "strong-tools-check", + "ten-guests-wash", "tough-nails-shout", "tricky-boats-sip", "warm-hounds-refuse", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index d0eda5458..b10891a13 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1 +1,7 @@ # @frontify/app-bridge-theme + +## 1.0.0-alpha.2 + +### Patch Changes + +- [#958](https://github.com/Frontify/brand-sdk/pull/958) [`4d191a8`](https://github.com/Frontify/brand-sdk/commit/4d191a8b61645afacb279e72bcbc67111ec6af3f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeThemes): initial alpha release of AppBridgeThemes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index eb6adc516..659cf527b 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "1.0.0-alpha.1", + "version": "1.0.0-alpha.2", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 23185d98c..637d3fc70 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.31 + +### Patch Changes + +- [#956](https://github.com/Frontify/brand-sdk/pull/956) [`2491b6e`](https://github.com/Frontify/brand-sdk/commit/2491b6e88fc41ca8eafff5e41ec181247a968c46) Thanks [@julianiff](https://github.com/julianiff)! - feat: adds state listener to allow push from parent + ## 4.0.0-alpha.30 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index ab5fa6526..ebcbc962f 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.30", + "version": "4.0.0-alpha.31", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 7a88fb512a8209ab377ef12a70e2c8484d5b6799 Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Tue, 18 Jun 2024 11:25:04 +0200 Subject: [PATCH 079/182] refactor: AppBridgeTheme version fix (#960) * refactor: fix appBridgeTheme version * changeset --- .changeset/few-islands-build.md | 5 +++++ packages/app-bridge-theme/package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/few-islands-build.md diff --git a/.changeset/few-islands-build.md b/.changeset/few-islands-build.md new file mode 100644 index 000000000..542e6a686 --- /dev/null +++ b/.changeset/few-islands-build.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +refactor(AppBridgeTheme): version number change diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 659cf527b..3a521190c 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "1.0.0-alpha.2", + "version": "0.0.0-alpha.0", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 6f485969416d6c35b03eaddac382e56ccfd20b0e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 11:53:03 +0200 Subject: [PATCH 080/182] chore: release packages (alpha) (#961) * chore: release packages (alpha) * fix changelog --------- Co-authored-by: github-actions[bot] Co-authored-by: Anxo botana --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 4 ++-- packages/app-bridge-theme/package.json | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 1304297de..23b1093f1 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ "calm-candles-wink", "clever-suns-laugh", "cuddly-pets-hammer", + "few-islands-build", "five-mangos-search", "four-crabs-bake", "fuzzy-walls-repeat", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index b10891a13..4b38d66c7 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,7 +1,7 @@ # @frontify/app-bridge-theme -## 1.0.0-alpha.2 +## 0.0.0-alpha.1 ### Patch Changes -- [#958](https://github.com/Frontify/brand-sdk/pull/958) [`4d191a8`](https://github.com/Frontify/brand-sdk/commit/4d191a8b61645afacb279e72bcbc67111ec6af3f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeThemes): initial alpha release of AppBridgeThemes +- [#960](https://github.com/Frontify/brand-sdk/pull/960) [`7a88fb5`](https://github.com/Frontify/brand-sdk/commit/7a88fb512a8209ab377ef12a70e2c8484d5b6799) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeThemes): initial alpha release of AppBridgeThemes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 3a521190c..95cea4daf 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.0", + "version": "0.0.0-alpha.1", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 43472d5f7ea4fd6bcdc44dc26103d1c3ce92cf4c Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Tue, 18 Jun 2024 12:48:42 +0200 Subject: [PATCH 081/182] fix: appBridgeTheme fix build and codeowners (#963) * fix: appBridgeTheme fix build and codeowners * changeset --- .changeset/modern-experts-dream.md | 5 +++++ CODEOWNERS | 20 +++++++++++++++++++ package.json | 3 ++- .../app-bridge-theme/src/commands/index.ts | 3 +++ packages/app-bridge-theme/src/index.ts | 3 +++ packages/app-bridge-theme/src/types/index.ts | 8 ++++++++ packages/app-bridge-theme/tsconfig.json | 1 + 7 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 .changeset/modern-experts-dream.md create mode 100644 packages/app-bridge-theme/src/commands/index.ts create mode 100644 packages/app-bridge-theme/src/types/index.ts diff --git a/.changeset/modern-experts-dream.md b/.changeset/modern-experts-dream.md new file mode 100644 index 000000000..58a7b60aa --- /dev/null +++ b/.changeset/modern-experts-dream.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +fix(AppBridgeThemes): fix build and codeowners diff --git a/CODEOWNERS b/CODEOWNERS index f730b351e..073b7230b 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,4 +1,5 @@ # App Bridge + packages/app-bridge/src/types @Frontify/api-and-sdk ## App Bridge Errors @@ -9,9 +10,11 @@ packages/app-bridge/src/errors/TimeoutReachedError.ts @Frontify/apps-and-integra packages/app-bridge/src/errors/ValidationError.ts @Frontify/apps-and-integrations ## App Bridge Helpers + packages/app-bridge/src/helpers/ @Frontify/themes-and-navigation ## React Hooks + packages/app-bridge/src/react/useAssetBulkDownload.spec.tsx @Frontify/content-and-blocks packages/app-bridge/src/react/useAssetBulkDownload.ts @Frontify/content-and-blocks packages/app-bridge/src/react/useAssetChooser.spec.tsx @Frontify/content-and-blocks @@ -77,6 +80,7 @@ packages/app-bridge/src/react/useUngroupedDocuments.spec.ts @Frontify/content-an packages/app-bridge/src/react/useUngroupedDocuments.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation ### App Bridge registries api + packages/app-bridge/src/registries/api/CreateAsset.ts @Frontify/apps-and-integrations packages/app-bridge/src/registries/api/CreateAsset.spec.ts @Frontify/apps-and-integrations packages/app-bridge/src/registries/api/GetAssetResourceInformation.ts @Frontify/apps-and-integrations @@ -97,15 +101,19 @@ packages/app-bridge/src/registries/commands/NewPublication.ts @Frontify/content- packages/app-bridge/src/registries/commands/TemplateChooser.ts @Frontify/content-and-blocks ### App Bridge registries events + packages/app-bridge/src/registries/events/ @Frontify/content-and-blocks @Frontify/themes-and-navigation ### App Bridge registries verbs + packages/app-bridge/src/registries/verbs/ @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations ## App Bridge repositories + packages/app-bridge/src/repositories/ @Frontify/content-and-blocks ## App Bridge Tests + packages/app-bridge/src/tests/AppBridgeBlockStub.ts @Frontify/content-and-blocks packages/app-bridge/src/tests/AppBridgePlatformAppStub.ts @Frontify/apps-and-integrations packages/app-bridge/src/tests/AppBridgeThemeStub.ts @Frontify/themes-and-navigation @@ -113,6 +121,7 @@ packages/app-bridge/src/tests/withAppBridgeBlockStubs.tsx @Frontify/content-and- packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx @Frontify/themes-and-navigation ## App Bridge Utilities + packages/app-bridge/src/utilities/hash.ts @Frontify/apps-and-integrations packages/app-bridge/src/utilities/httpClient.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations packages/app-bridge/src/utilities/MessageBus.ts @Frontify/apps-and-integrations @@ -125,9 +134,11 @@ packages/app-bridge/src/utilities/queryParams.ts @Frontify/apps-and-integrations packages/app-bridge/src/utilities/subscribe.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations ## App Bridge Worker + packages/app-bridge/src/worker/ @Frontify/content-and-blocks ## App Bridge Interfaces + packages/app-bridge/src/AppBridge.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations packages/app-bridge/src/AppBridgeBlock.ts @Frontify/content-and-blocks packages/app-bridge/src/AppBridgeCreateAsset.spec.ts @Frontify/apps-and-integrations @@ -138,6 +149,7 @@ packages/app-bridge/src/AppBridgeTheme.ts @Frontify/themes-and-navigation packages/app-bridge/src/window.d.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations # CLI + packages/cli/src/commands/ @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations packages/cli/src/errors/ @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations packages/cli/src/utils/ @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations @@ -151,11 +163,19 @@ packages/cli/templates/platform-app-css-modules @Frontify/apps-and-integrations packages/cli/templates/platform-app-tailwind @Frontify/apps-and-integrations # Platform Apps types + packages/platform-app @Frontify/apps-and-integrations + # Guideline Blocks Settings + packages/guideline-blocks-settings @Frontify/content-and-blocks # Sidebar Settings + packages/sidebar-settings @Frontify/content-and-blocks @Frontify/themes-and-navigation +# App Bridge Theme + +packages/app-bridge-theme @Frontify/themes-and-navigation + CODEOWNERS @Frontify/architecture diff --git a/package.json b/package.json index 0ec1b6b60..fe5bdcdae 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,9 @@ "private": true, "packageManager": "pnpm@9.1.3+sha512.7c2ea089e1a6af306409c4fc8c4f0897bdac32b772016196c469d9428f1fe2d5a21daf8ad6512762654ac645b5d9136bb210ec9a00afa8dbc4677843ba362ecd", "scripts": { - "build": "pnpm build:app-bridge && pnpm build:sidebar-settings && pnpm build:guideline-blocks-settings && pnpm build:platform-app && pnpm build:cli", + "build": "pnpm build:app-bridge && pnpm build:sidebar-settings && pnpm build:guideline-blocks-settings && pnpm build:platform-app && pnpm build:cli && pnpm build:app-bridge-theme", "build:app-bridge": "pnpm --stream --filter {packages/app-bridge} build", + "build:app-bridge-theme": "pnpm --stream --filter {packages/app-bridge-theme} build", "build:sidebar-settings": "pnpm --stream --filter {packages/sidebar-settings} build", "build:guideline-blocks-settings": "pnpm --stream --filter {packages/guideline-blocks-settings} build", "build:platform-app": "pnpm --stream --filter {packages/platform-app} build", diff --git a/packages/app-bridge-theme/src/commands/index.ts b/packages/app-bridge-theme/src/commands/index.ts new file mode 100644 index 000000000..376f11c25 --- /dev/null +++ b/packages/app-bridge-theme/src/commands/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './CommandRegistry'; diff --git a/packages/app-bridge-theme/src/index.ts b/packages/app-bridge-theme/src/index.ts index 9232746e5..3a20636eb 100644 --- a/packages/app-bridge-theme/src/index.ts +++ b/packages/app-bridge-theme/src/index.ts @@ -1,3 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './AppBridgeTheme'; +export * from './types/index'; +export * from './types'; +export * from './commands'; diff --git a/packages/app-bridge-theme/src/types/index.ts b/packages/app-bridge-theme/src/types/index.ts new file mode 100644 index 000000000..54cced7ca --- /dev/null +++ b/packages/app-bridge-theme/src/types/index.ts @@ -0,0 +1,8 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './Asset'; +export * from './Context'; +export * from './Guideline'; +export * from './GuidelineSearchResult'; +export * from './Language'; +export * from './ThemeTemplate'; diff --git a/packages/app-bridge-theme/tsconfig.json b/packages/app-bridge-theme/tsconfig.json index 35cd9dce7..0e6aac3c5 100644 --- a/packages/app-bridge-theme/tsconfig.json +++ b/packages/app-bridge-theme/tsconfig.json @@ -19,5 +19,6 @@ "baseUrl": ".", "types": ["vite/client"] }, + "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }] } From 496ec592207fa3b9fc72d8774d9285354bc5abb8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 12:56:28 +0200 Subject: [PATCH 082/182] chore: release packages (alpha) (#964) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 8 +++++++- packages/app-bridge-theme/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 23b1093f1..6f99ade93 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -25,6 +25,7 @@ "light-crews-report", "lovely-books-hear", "lucky-taxis-kneel", + "modern-experts-dream", "nasty-feet-repair", "neat-plants-smile", "nervous-walls-repair", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 4b38d66c7..d371cf81f 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,7 +1,13 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.2 + +### Patch Changes + +- [#963](https://github.com/Frontify/brand-sdk/pull/963) [`43472d5`](https://github.com/Frontify/brand-sdk/commit/43472d5f7ea4fd6bcdc44dc26103d1c3ce92cf4c) Thanks [@anxobotana](https://github.com/anxobotana)! - fix(AppBridgeThemes): fix build and codeowners + ## 0.0.0-alpha.1 ### Patch Changes -- [#960](https://github.com/Frontify/brand-sdk/pull/960) [`7a88fb5`](https://github.com/Frontify/brand-sdk/commit/7a88fb512a8209ab377ef12a70e2c8484d5b6799) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeThemes): initial alpha release of AppBridgeThemes +- [#960](https://github.com/Frontify/brand-sdk/pull/960) [`7a88fb5`](https://github.com/Frontify/brand-sdk/commit/7a88fb512a8209ab377ef12a70e2c8484d5b6799) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeThemes): initial alpha release of AppBridgeThemes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 95cea4daf..8ca7cd02c 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.1", + "version": "0.0.0-alpha.2", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 578e3e40025b1fbc88959181759257fe0e71d874 Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Tue, 18 Jun 2024 14:10:34 +0200 Subject: [PATCH 083/182] feat: add SubscribeMap type in AppBridgeTheme (#965) * feat: add SubscribeMap type in AppBridgeTheme * add changeset --- .changeset/thirty-pears-lay.md | 5 +++++ packages/app-bridge-theme/src/types.ts | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 .changeset/thirty-pears-lay.md diff --git a/.changeset/thirty-pears-lay.md b/.changeset/thirty-pears-lay.md new file mode 100644 index 000000000..9ef168f6a --- /dev/null +++ b/.changeset/thirty-pears-lay.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +Added a SubscribeMap type diff --git a/packages/app-bridge-theme/src/types.ts b/packages/app-bridge-theme/src/types.ts index 0bfe7ed34..40f32ee71 100644 --- a/packages/app-bridge-theme/src/types.ts +++ b/packages/app-bridge-theme/src/types.ts @@ -72,3 +72,7 @@ export type EventCallbackParameter = EventName e : () => void; export type EventUnsubscribeFunction = () => void; + +export type SubscribeMap = { + [EventName in keyof Event as EventName]: Map, boolean>; +}; From 15ee5e1a0bc2bfb60a80ecfa906b7a5d65139670 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 14:31:43 +0200 Subject: [PATCH 084/182] chore: release packages (alpha) (#966) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 6f99ade93..3cfa22eea 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -46,6 +46,7 @@ "stale-hairs-wash", "strong-tools-check", "ten-guests-wash", + "thirty-pears-lay", "tough-nails-shout", "tricky-boats-sip", "warm-hounds-refuse", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index d371cf81f..137ae3f51 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.3 + +### Patch Changes + +- [#965](https://github.com/Frontify/brand-sdk/pull/965) [`578e3e4`](https://github.com/Frontify/brand-sdk/commit/578e3e40025b1fbc88959181759257fe0e71d874) Thanks [@Kenny806](https://github.com/Kenny806)! - Added a SubscribeMap type + ## 0.0.0-alpha.2 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 8ca7cd02c..e642b3368 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.2", + "version": "0.0.0-alpha.3", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 14d59f1164555a121db3172f999055abaee077af Mon Sep 17 00:00:00 2001 From: Oliver Schwendener Date: Wed, 19 Jun 2024 08:53:17 +0200 Subject: [PATCH 085/182] Added GuidelineBrandPortalLink interface (#969) --- packages/app-bridge-theme/src/types/Guideline.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/app-bridge-theme/src/types/Guideline.ts b/packages/app-bridge-theme/src/types/Guideline.ts index 9e5862c45..8c85cdae7 100644 --- a/packages/app-bridge-theme/src/types/Guideline.ts +++ b/packages/app-bridge-theme/src/types/Guideline.ts @@ -88,6 +88,12 @@ export interface GuidelineDocumentPageHeading { type: 'document-page-heading'; } +export interface GuidelineBrandPortalLink { + isEnabled(): boolean; + title(language?: string): string; + url(language?: string): string; +} + export type PortalNavigationItem = | GuidelineCoverPage | GuidelineDocumentGroup From 599df4fd1db1ad43a8163538513c36a9ab3e938a Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Wed, 19 Jun 2024 11:13:51 +0200 Subject: [PATCH 086/182] fix: extend AppBridgeThemeEvent to include assetsChosen (#967) * fix: extend AppBridgeThemeEvent to include assetsChosen * fix imports * Update packages/app-bridge-theme/src/registries/CommandRegistry.ts Co-authored-by: Anxo Botana --------- Co-authored-by: Anxo Botana --- .changeset/curly-pots-scream.md | 5 ++ .../app-bridge-theme/src/AppBridgeTheme.ts | 9 ++- .../app-bridge-theme/src/commands/index.ts | 3 - packages/app-bridge-theme/src/index.ts | 1 - .../CommandRegistry.ts | 2 +- .../src/registries/EventRegistry.ts | 8 +++ packages/app-bridge-theme/src/types.ts | 61 +------------------ .../app-bridge-theme/src/types/Command.ts | 30 +++++++++ .../app-bridge-theme/src/types/Context.ts | 3 +- packages/app-bridge-theme/src/types/Event.ts | 47 ++++++++++++++ 10 files changed, 99 insertions(+), 70 deletions(-) create mode 100644 .changeset/curly-pots-scream.md delete mode 100644 packages/app-bridge-theme/src/commands/index.ts rename packages/app-bridge-theme/src/{commands => registries}/CommandRegistry.ts (85%) create mode 100644 packages/app-bridge-theme/src/registries/EventRegistry.ts create mode 100644 packages/app-bridge-theme/src/types/Command.ts create mode 100644 packages/app-bridge-theme/src/types/Event.ts diff --git a/.changeset/curly-pots-scream.md b/.changeset/curly-pots-scream.md new file mode 100644 index 000000000..7e893ff38 --- /dev/null +++ b/.changeset/curly-pots-scream.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +fix: extend AppBridgeThemeEvent to include assetsChosen diff --git a/packages/app-bridge-theme/src/AppBridgeTheme.ts b/packages/app-bridge-theme/src/AppBridgeTheme.ts index 02c9714ad..873ea5165 100644 --- a/packages/app-bridge-theme/src/AppBridgeTheme.ts +++ b/packages/app-bridge-theme/src/AppBridgeTheme.ts @@ -1,14 +1,13 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ +import { type Command, type DispatchHandlerParameter } from './types/Command'; +import { type ContextReturn, type Context } from './types/Context'; import { - type Command, - type DispatchHandlerParameter, type AppBridgeThemeEvent, - type EventNameParameter, type EventCallbackParameter, + type EventNameParameter, type EventUnsubscribeFunction, -} from './types'; -import { type ContextReturn, type Context } from './types/Context'; +} from './types/Event'; import { type GuidelineSearchResult } from './types/GuidelineSearchResult'; export interface AppBridgeTheme { diff --git a/packages/app-bridge-theme/src/commands/index.ts b/packages/app-bridge-theme/src/commands/index.ts deleted file mode 100644 index 376f11c25..000000000 --- a/packages/app-bridge-theme/src/commands/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export * from './CommandRegistry'; diff --git a/packages/app-bridge-theme/src/index.ts b/packages/app-bridge-theme/src/index.ts index 3a20636eb..2bc14a88f 100644 --- a/packages/app-bridge-theme/src/index.ts +++ b/packages/app-bridge-theme/src/index.ts @@ -3,4 +3,3 @@ export * from './AppBridgeTheme'; export * from './types/index'; export * from './types'; -export * from './commands'; diff --git a/packages/app-bridge-theme/src/commands/CommandRegistry.ts b/packages/app-bridge-theme/src/registries/CommandRegistry.ts similarity index 85% rename from packages/app-bridge-theme/src/commands/CommandRegistry.ts rename to packages/app-bridge-theme/src/registries/CommandRegistry.ts index 5bb5440f1..c645e42db 100644 --- a/packages/app-bridge-theme/src/commands/CommandRegistry.ts +++ b/packages/app-bridge-theme/src/registries/CommandRegistry.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type CommandNameValidator } from 'src/types'; +import { type CommandNameValidator } from '../types/Command'; type OpenSearchDialog = void; type CloseSearchDialog = void; diff --git a/packages/app-bridge-theme/src/registries/EventRegistry.ts b/packages/app-bridge-theme/src/registries/EventRegistry.ts new file mode 100644 index 000000000..d14f0f5e9 --- /dev/null +++ b/packages/app-bridge-theme/src/registries/EventRegistry.ts @@ -0,0 +1,8 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type Asset } from '../types/Asset'; +import { type EventNameValidator } from '../types/Event'; + +export type EventRegistry = EventNameValidator<{ + assetsChosen: { assets: Asset[] }; +}>; diff --git a/packages/app-bridge-theme/src/types.ts b/packages/app-bridge-theme/src/types.ts index 40f32ee71..155a9c2a5 100644 --- a/packages/app-bridge-theme/src/types.ts +++ b/packages/app-bridge-theme/src/types.ts @@ -1,19 +1,13 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type Simplify } from 'type-fest'; - -import { type CommandRegistry } from './commands/CommandRegistry'; -import { type Context } from './types/Context'; - -type CommandVerb = 'open' | 'close' | 'navigate' | 'download'; -type EventVerb = 'chosen'; +import { type EventCallbackParameter } from './types/Event'; type NameContextList = 'Command' | 'Event'; -type WrongNamePattern = ApiMethodName extends string +export type WrongNamePattern = ApiMethodName extends string ? `The following ${NameContext} do not match the naming pattern: ${ApiMethodName}` : never; -type ObjectNameValidator< +export type ObjectNameValidator< NameObject, PatternObject, NameContext extends NameContextList, @@ -24,55 +18,6 @@ type ObjectNameValidator< NameContext >; -type CommandNamePattern = { [commandName: `${CommandVerb}${string}`]: unknown }; -export type CommandNameValidator = Simplify< - ObjectNameValidator ->; - -export type Command = CommandNameValidator< - Pick ->; - -type EventNameValidator = Simplify>; - -type ContextAsEventName = { - [ContextKey in keyof Context as ContextKey extends string ? `Context.${ContextKey}` : never]: [ - Context[ContextKey], - Context[ContextKey], - ]; -}; - -type DispatchHandler< - CommandName extends keyof CommandNamePattern, - Command extends CommandNamePattern, -> = Command[CommandName] extends void ? { name: CommandName } : { name: CommandName; payload: Command[CommandName] }; - -export type DispatchHandlerParameter< - CommandName, - Command extends CommandNamePattern, -> = CommandName extends keyof CommandNamePattern - ? DispatchHandler - : WrongNamePattern; - -export type AppBridgeThemeEvent = EventNameValidator>; - -export type EventNamePattern = { - [eventName: `Context.${string}` | `${string}${Capitalize}`]: unknown; -}; -export type EventNameParameter< - EventName, - EventNameParameter extends EventNamePattern, -> = EventName extends keyof EventNameParameter ? EventName : WrongNamePattern; - -export type EventCallbackParameter = EventName extends keyof AppBridgeThemeEvent - ? // eslint-disable-next-line @typescript-eslint/no-explicit-any - AppBridgeThemeEvent[EventName] extends any[] - ? (...eventReturn: AppBridgeThemeEvent[EventName]) => void - : (eventReturn: AppBridgeThemeEvent[EventName]) => void - : () => void; - -export type EventUnsubscribeFunction = () => void; - export type SubscribeMap = { [EventName in keyof Event as EventName]: Map, boolean>; }; diff --git a/packages/app-bridge-theme/src/types/Command.ts b/packages/app-bridge-theme/src/types/Command.ts new file mode 100644 index 000000000..0a6b8f3a7 --- /dev/null +++ b/packages/app-bridge-theme/src/types/Command.ts @@ -0,0 +1,30 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type Simplify } from 'type-fest'; + +import { type CommandRegistry } from '../registries/CommandRegistry'; +import { type ObjectNameValidator, type WrongNamePattern } from '../types'; + +type CommandVerb = 'open' | 'close' | 'navigate' | 'download'; + +type CommandNamePattern = { [commandName: `${CommandVerb}${string}`]: unknown }; + +export type CommandNameValidator = Simplify< + ObjectNameValidator +>; + +export type Command = CommandNameValidator< + Pick +>; + +type DispatchHandler< + CommandName extends keyof CommandNamePattern, + Command extends CommandNamePattern, +> = Command[CommandName] extends void ? { name: CommandName } : { name: CommandName; payload: Command[CommandName] }; + +export type DispatchHandlerParameter< + CommandName, + Command extends CommandNamePattern, +> = CommandName extends keyof CommandNamePattern + ? DispatchHandler + : WrongNamePattern; diff --git a/packages/app-bridge-theme/src/types/Context.ts b/packages/app-bridge-theme/src/types/Context.ts index 10073826e..60fe34443 100644 --- a/packages/app-bridge-theme/src/types/Context.ts +++ b/packages/app-bridge-theme/src/types/Context.ts @@ -1,8 +1,7 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type EventUnsubscribeFunction } from 'src/types'; - import { type Asset } from './Asset'; +import { type EventUnsubscribeFunction } from './Event'; import { type GuidelineCoverPage, type GuidelineDocument, diff --git a/packages/app-bridge-theme/src/types/Event.ts b/packages/app-bridge-theme/src/types/Event.ts new file mode 100644 index 000000000..bdb4391f9 --- /dev/null +++ b/packages/app-bridge-theme/src/types/Event.ts @@ -0,0 +1,47 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type Simplify } from 'type-fest'; + +import { type EventRegistry } from '../registries/EventRegistry'; +import { type ObjectNameValidator, type WrongNamePattern } from '../types'; + +import { type Context } from './Context'; + +type EventVerb = 'chosen'; + +export type EventNameValidator = Simplify< + ObjectNameValidator +>; + +type ContextAsEventName = { + [ContextKey in keyof Context as ContextKey extends string ? `Context.${ContextKey}` : never]: [ + Context[ContextKey], + Context[ContextKey], + ]; +}; + +export type AppBridgeThemeEvent = EventNameValidator< + Pick & + ContextAsEventName< + Context & { + '*': Context; + } + > +>; + +export type EventNamePattern = { + [eventName: `Context.${string}` | `${string}${Capitalize}`]: unknown; +}; +export type EventNameParameter< + EventName, + EventNameParameter extends EventNamePattern, +> = EventName extends keyof EventNameParameter ? EventName : WrongNamePattern; + +export type EventCallbackParameter = EventName extends keyof AppBridgeThemeEvent + ? // eslint-disable-next-line @typescript-eslint/no-explicit-any + AppBridgeThemeEvent[EventName] extends any[] + ? (...eventReturn: AppBridgeThemeEvent[EventName]) => void + : (eventReturn: AppBridgeThemeEvent[EventName]) => void + : () => void; + +export type EventUnsubscribeFunction = () => void; From 9fda038ed7e3781b25d64a9d56d36b62cccd86bb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 Jun 2024 11:34:37 +0200 Subject: [PATCH 087/182] chore: release packages (alpha) (#970) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 3cfa22eea..2b28122e1 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ "calm-candles-wink", "clever-suns-laugh", "cuddly-pets-hammer", + "curly-pots-scream", "few-islands-build", "five-mangos-search", "four-crabs-bake", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 137ae3f51..acf6c3569 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.4 + +### Patch Changes + +- [#967](https://github.com/Frontify/brand-sdk/pull/967) [`599df4f`](https://github.com/Frontify/brand-sdk/commit/599df4fd1db1ad43a8163538513c36a9ab3e938a) Thanks [@Kenny806](https://github.com/Kenny806)! - fix: extend AppBridgeThemeEvent to include assetsChosen + ## 0.0.0-alpha.3 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index e642b3368..d1e9d9330 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.3", + "version": "0.0.0-alpha.4", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 08b3506f1b8dba87fed1b6eb3f379bf619327d45 Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Wed, 19 Jun 2024 13:20:46 +0200 Subject: [PATCH 088/182] fix: fix exports (#971) * fix: fix exports * chore: add changeset --- .changeset/angry-dolphins-fry.md | 5 +++++ packages/app-bridge-theme/src/AppBridgeTheme.ts | 10 ++++++---- packages/app-bridge-theme/src/index.ts | 2 +- .../app-bridge-theme/src/registries/CommandRegistry.ts | 2 +- .../app-bridge-theme/src/registries/EventRegistry.ts | 3 +-- packages/app-bridge-theme/src/registries/index.ts | 4 ++++ packages/app-bridge-theme/src/types/Command.ts | 5 +++-- .../app-bridge-theme/src/{types.ts => types/Common.ts} | 6 ------ packages/app-bridge-theme/src/types/Event.ts | 8 ++++++-- packages/app-bridge-theme/src/types/index.ts | 3 +++ 10 files changed, 30 insertions(+), 18 deletions(-) create mode 100644 .changeset/angry-dolphins-fry.md create mode 100644 packages/app-bridge-theme/src/registries/index.ts rename packages/app-bridge-theme/src/{types.ts => types/Common.ts} (75%) diff --git a/.changeset/angry-dolphins-fry.md b/.changeset/angry-dolphins-fry.md new file mode 100644 index 000000000..4c0ca9802 --- /dev/null +++ b/.changeset/angry-dolphins-fry.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +Fixed exports diff --git a/packages/app-bridge-theme/src/AppBridgeTheme.ts b/packages/app-bridge-theme/src/AppBridgeTheme.ts index 873ea5165..77ac95f56 100644 --- a/packages/app-bridge-theme/src/AppBridgeTheme.ts +++ b/packages/app-bridge-theme/src/AppBridgeTheme.ts @@ -1,14 +1,16 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type Command, type DispatchHandlerParameter } from './types/Command'; -import { type ContextReturn, type Context } from './types/Context'; import { type AppBridgeThemeEvent, + type Command, + type Context, + type ContextReturn, + type DispatchHandlerParameter, type EventCallbackParameter, type EventNameParameter, type EventUnsubscribeFunction, -} from './types/Event'; -import { type GuidelineSearchResult } from './types/GuidelineSearchResult'; + type GuidelineSearchResult, +} from './types'; export interface AppBridgeTheme { dispatch( diff --git a/packages/app-bridge-theme/src/index.ts b/packages/app-bridge-theme/src/index.ts index 2bc14a88f..7cc022c57 100644 --- a/packages/app-bridge-theme/src/index.ts +++ b/packages/app-bridge-theme/src/index.ts @@ -1,5 +1,5 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './AppBridgeTheme'; -export * from './types/index'; +export * from './registries'; export * from './types'; diff --git a/packages/app-bridge-theme/src/registries/CommandRegistry.ts b/packages/app-bridge-theme/src/registries/CommandRegistry.ts index c645e42db..13a369115 100644 --- a/packages/app-bridge-theme/src/registries/CommandRegistry.ts +++ b/packages/app-bridge-theme/src/registries/CommandRegistry.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type CommandNameValidator } from '../types/Command'; +import { type CommandNameValidator } from '../types'; type OpenSearchDialog = void; type CloseSearchDialog = void; diff --git a/packages/app-bridge-theme/src/registries/EventRegistry.ts b/packages/app-bridge-theme/src/registries/EventRegistry.ts index d14f0f5e9..3f541f39d 100644 --- a/packages/app-bridge-theme/src/registries/EventRegistry.ts +++ b/packages/app-bridge-theme/src/registries/EventRegistry.ts @@ -1,7 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type Asset } from '../types/Asset'; -import { type EventNameValidator } from '../types/Event'; +import { type Asset, type EventNameValidator } from '../types'; export type EventRegistry = EventNameValidator<{ assetsChosen: { assets: Asset[] }; diff --git a/packages/app-bridge-theme/src/registries/index.ts b/packages/app-bridge-theme/src/registries/index.ts new file mode 100644 index 000000000..24c572e4b --- /dev/null +++ b/packages/app-bridge-theme/src/registries/index.ts @@ -0,0 +1,4 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './CommandRegistry'; +export * from './EventRegistry'; diff --git a/packages/app-bridge-theme/src/types/Command.ts b/packages/app-bridge-theme/src/types/Command.ts index 0a6b8f3a7..c75ab0c04 100644 --- a/packages/app-bridge-theme/src/types/Command.ts +++ b/packages/app-bridge-theme/src/types/Command.ts @@ -2,8 +2,9 @@ import { type Simplify } from 'type-fest'; -import { type CommandRegistry } from '../registries/CommandRegistry'; -import { type ObjectNameValidator, type WrongNamePattern } from '../types'; +import { type CommandRegistry } from '../registries'; + +import { type ObjectNameValidator, type WrongNamePattern } from './Common'; type CommandVerb = 'open' | 'close' | 'navigate' | 'download'; diff --git a/packages/app-bridge-theme/src/types.ts b/packages/app-bridge-theme/src/types/Common.ts similarity index 75% rename from packages/app-bridge-theme/src/types.ts rename to packages/app-bridge-theme/src/types/Common.ts index 155a9c2a5..69da2781b 100644 --- a/packages/app-bridge-theme/src/types.ts +++ b/packages/app-bridge-theme/src/types/Common.ts @@ -1,7 +1,5 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type EventCallbackParameter } from './types/Event'; - type NameContextList = 'Command' | 'Event'; export type WrongNamePattern = ApiMethodName extends string ? `The following ${NameContext} do not match the naming pattern: ${ApiMethodName}` @@ -17,7 +15,3 @@ export type ObjectNameValidator< `${Exclude, Extract>}`, NameContext >; - -export type SubscribeMap = { - [EventName in keyof Event as EventName]: Map, boolean>; -}; diff --git a/packages/app-bridge-theme/src/types/Event.ts b/packages/app-bridge-theme/src/types/Event.ts index bdb4391f9..3d3dd74b7 100644 --- a/packages/app-bridge-theme/src/types/Event.ts +++ b/packages/app-bridge-theme/src/types/Event.ts @@ -2,9 +2,9 @@ import { type Simplify } from 'type-fest'; -import { type EventRegistry } from '../registries/EventRegistry'; -import { type ObjectNameValidator, type WrongNamePattern } from '../types'; +import { type EventRegistry } from '../registries'; +import { type ObjectNameValidator, type WrongNamePattern } from './Common'; import { type Context } from './Context'; type EventVerb = 'chosen'; @@ -45,3 +45,7 @@ export type EventCallbackParameter = EventName e : () => void; export type EventUnsubscribeFunction = () => void; + +export type SubscribeMap = { + [EventName in keyof Event as EventName]: Map, boolean>; +}; diff --git a/packages/app-bridge-theme/src/types/index.ts b/packages/app-bridge-theme/src/types/index.ts index 54cced7ca..cc7fcfe16 100644 --- a/packages/app-bridge-theme/src/types/index.ts +++ b/packages/app-bridge-theme/src/types/index.ts @@ -1,7 +1,10 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './Asset'; +export * from './Command'; +export * from './Common'; export * from './Context'; +export * from './Event'; export * from './Guideline'; export * from './GuidelineSearchResult'; export * from './Language'; From 42231b8f51ad93506514a3f9c316dfa1a13f634d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 Jun 2024 13:32:32 +0200 Subject: [PATCH 089/182] chore: release packages (alpha) (#972) Co-authored-by: github-actions[bot] --- .changeset/angry-dolphins-fry.md | 2 +- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.changeset/angry-dolphins-fry.md b/.changeset/angry-dolphins-fry.md index 4c0ca9802..b7596dfa0 100644 --- a/.changeset/angry-dolphins-fry.md +++ b/.changeset/angry-dolphins-fry.md @@ -2,4 +2,4 @@ "@frontify/app-bridge-theme": patch --- -Fixed exports +fix: exports diff --git a/.changeset/pre.json b/.changeset/pre.json index 2b28122e1..1ed43ebcb 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,6 +10,7 @@ "@frontify/app-bridge-theme": "1.0.0-alpha.1" }, "changesets": [ + "angry-dolphins-fry", "calm-candles-wink", "clever-suns-laugh", "cuddly-pets-hammer", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index acf6c3569..c00daf7d9 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.5 + +### Patch Changes + +- [#971](https://github.com/Frontify/brand-sdk/pull/971) [`08b3506`](https://github.com/Frontify/brand-sdk/commit/08b3506f1b8dba87fed1b6eb3f379bf619327d45) Thanks [@Kenny806](https://github.com/Kenny806)! - fix: exports + ## 0.0.0-alpha.4 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index d1e9d9330..5953b097c 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.4", + "version": "0.0.0-alpha.5", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 508f51e1de4d091f8761f4b7897940574d819eee Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Thu, 20 Jun 2024 10:49:28 +0200 Subject: [PATCH 090/182] feat: templateContext and NavigationItem types (#974) * feat: templateContext and NavigationItem types * update * changeset * updates per PR review * one more update * interface updates --- .changeset/great-dolls-enjoy.md | 5 ++ .../app-bridge-theme/src/types/Context.ts | 13 ++-- .../app-bridge-theme/src/types/Guideline.ts | 67 ++++++++++++------- 3 files changed, 51 insertions(+), 34 deletions(-) create mode 100644 .changeset/great-dolls-enjoy.md diff --git a/.changeset/great-dolls-enjoy.md b/.changeset/great-dolls-enjoy.md new file mode 100644 index 000000000..74c47b9b8 --- /dev/null +++ b/.changeset/great-dolls-enjoy.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: templateContext and NavigationItem types diff --git a/packages/app-bridge-theme/src/types/Context.ts b/packages/app-bridge-theme/src/types/Context.ts index 60fe34443..2869ffa35 100644 --- a/packages/app-bridge-theme/src/types/Context.ts +++ b/packages/app-bridge-theme/src/types/Context.ts @@ -2,19 +2,14 @@ import { type Asset } from './Asset'; import { type EventUnsubscribeFunction } from './Event'; -import { - type GuidelineCoverPage, - type GuidelineDocument, - type GuidelineDocumentLibrary, - type GuidelineDocumentPage, -} from './Guideline'; +import { type CoverPage, type Document, type DocumentLibrary, type DocumentPage } from './Guideline'; import { type Language } from './Language'; import { type ThemeTemplate } from './ThemeTemplate'; export type TemplateContext = { templateId: string; type: ThemeTemplate } & ( - | { type: 'documentPage'; document: GuidelineDocument; documentPage: GuidelineDocumentPage } - | { type: 'library'; document: GuidelineDocumentLibrary } - | { type: 'cover'; coverPage: GuidelineCoverPage } + | { type: 'documentPage'; document: Document; documentPage: DocumentPage } + | { type: 'library'; document: DocumentLibrary } + | { type: 'cover'; coverPage: CoverPage } ); export type Context = { diff --git a/packages/app-bridge-theme/src/types/Guideline.ts b/packages/app-bridge-theme/src/types/Guideline.ts index 8c85cdae7..816bb29d8 100644 --- a/packages/app-bridge-theme/src/types/Guideline.ts +++ b/packages/app-bridge-theme/src/types/Guideline.ts @@ -11,7 +11,7 @@ export enum LinkSettingsIconPosition { Left = 'LEFT', } -export interface GuidelineCoverPage { +interface CoverPageBase { id(): number; title(language?: string): string; isPublished(): boolean; @@ -19,33 +19,45 @@ export interface GuidelineCoverPage { url(language?: string): string; type: 'cover-page'; } +export interface CoverPageNavigationItem extends CoverPageBase {} +export interface CoverPage extends CoverPageBase {} -export interface GuidelineDocumentGroup { +export interface DocumentGroupNavigationItem { id(): number; title(language?: string): string; - children(): (GuidelineDocument | GuidelineDocumentLibrary | GuidelineDocumentLink)[]; + children(): (DocumentNavigationItem | DocumentLibraryNavigationItem | DocumentLinkNavigationItem)[]; type: 'document-group'; } -export interface GuidelineDocument { +interface DocumentBase { id(): number; title(language?: string): string; slug(language?: string): string; url(language?: string): string; - parentId(): Nullable; type: 'document'; } +export interface DocumentNavigationItem extends DocumentBase { + parentId(): Nullable; +} +export interface Document extends DocumentBase { + documentGroupId(): Nullable; +} -export interface GuidelineDocumentLibrary { +interface DocumentLibraryBase { id(): number; title(language?: string): string; slug(language?: string): string; url(language?: string): string; - parentId(): Nullable; type: 'document-library'; } +export interface DocumentLibraryNavigationItem extends DocumentLibraryBase { + parentId(): Nullable; +} +export interface DocumentLibrary extends DocumentLibraryBase { + documentGroupId(): Nullable; +} -export interface GuidelineDocumentLink { +export interface DocumentLinkNavigationItem { id(): number; title(language?: string): string; url(): string; @@ -57,52 +69,57 @@ export interface GuidelineDocumentLink { type: 'document-link'; } -export interface GuidelinePageCategory { +export interface PageCategoryNavigationItem { id(): number; title(language?: string): string; slug(language?: string): string; - children(): (GuidelineDocumentPage | GuidelineDocumentPageLink)[]; + children(): (DocumentPageNavigationItem | DocumentPageLinkNavigationItem)[]; type: 'page-category'; } -export interface GuidelineDocumentPage { +interface DocumentPageBase { id(): number; title(language?: string): string; slug(language?: string): string; url(language?: string): string; - headings(): GuidelineDocumentPageHeading[]; type: 'document-page'; } +export interface DocumentPageNavigationItem extends DocumentPageBase { + headings(): DocumentPageHeadingNavigationItem[]; +} +export interface DocumentPage extends DocumentPageBase { + categoryId(): Nullable; + documentId(): number; +} -export interface GuidelineDocumentPageLink { +export interface DocumentPageLinkNavigationItem { id(): number; title(language?: string): string; url(): string; type: 'document-page-link'; } -export interface GuidelineDocumentPageHeading { +export interface DocumentPageHeadingNavigationItem { id(): number; title(language?: string): string; slug(language?: string): string; type: 'document-page-heading'; } -export interface GuidelineBrandPortalLink { +export interface BrandPortalLink { isEnabled(): boolean; title(language?: string): string; url(language?: string): string; } export type PortalNavigationItem = - | GuidelineCoverPage - | GuidelineDocumentGroup - | GuidelineDocument - | GuidelineDocumentLibrary - | GuidelineDocumentLink; + | CoverPageNavigationItem + | DocumentGroupNavigationItem + | DocumentNavigationItem + | DocumentLibraryNavigationItem + | DocumentLinkNavigationItem; -export type DocumentNavigationItem = - | GuidelinePageCategory - | GuidelineDocumentPage - | GuidelineDocumentPageLink - | GuidelineDocumentPageHeading; +export type DocumentChildNavigationItem = + | PageCategoryNavigationItem + | DocumentPageNavigationItem + | DocumentPageLinkNavigationItem; From f2b80bad8be4386f03ea2c7fdf55cf6eed3af72d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Jun 2024 10:58:21 +0200 Subject: [PATCH 091/182] chore: release packages (alpha) (#975) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 1ed43ebcb..1e6578cf5 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -21,6 +21,7 @@ "fuzzy-walls-repeat", "giant-shrimps-dream", "gorgeous-seas-search", + "great-dolls-enjoy", "hip-days-applaud", "khaki-dryers-shout", "kind-fishes-flash", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index c00daf7d9..0d9a20e41 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.6 + +### Patch Changes + +- [#974](https://github.com/Frontify/brand-sdk/pull/974) [`508f51e`](https://github.com/Frontify/brand-sdk/commit/508f51e1de4d091f8761f4b7897940574d819eee) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: templateContext and NavigationItem types + ## 0.0.0-alpha.5 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 5953b097c..83775e51e 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.5", + "version": "0.0.0-alpha.6", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 5eb030695cc105a3ed514a5b38840b015a8d85ac Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Fri, 21 Jun 2024 16:59:31 +0200 Subject: [PATCH 092/182] feat(app-bridge-theme): add a navigate command (#978) * feat(app-bridge-theme): add a navigate command * chore: lint * refactor: move CommandNameValidator to CommandRegistry and only use it internally * chore: lint * chore: changeset --- .changeset/dry-mangos-fix.md | 5 ++++ .../app-bridge-theme/src/AppBridgeTheme.ts | 6 ++-- .../src/registries/CommandRegistry.ts | 21 +++++++++----- .../app-bridge-theme/src/types/Command.ts | 28 +++++-------------- 4 files changed, 29 insertions(+), 31 deletions(-) create mode 100644 .changeset/dry-mangos-fix.md diff --git a/.changeset/dry-mangos-fix.md b/.changeset/dry-mangos-fix.md new file mode 100644 index 000000000..196d8f2e3 --- /dev/null +++ b/.changeset/dry-mangos-fix.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: add a navigate command diff --git a/packages/app-bridge-theme/src/AppBridgeTheme.ts b/packages/app-bridge-theme/src/AppBridgeTheme.ts index 77ac95f56..7574e165c 100644 --- a/packages/app-bridge-theme/src/AppBridgeTheme.ts +++ b/packages/app-bridge-theme/src/AppBridgeTheme.ts @@ -1,8 +1,8 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ +import { type CommandRegistry } from './registries'; import { type AppBridgeThemeEvent, - type Command, type Context, type ContextReturn, type DispatchHandlerParameter, @@ -13,8 +13,8 @@ import { } from './types'; export interface AppBridgeTheme { - dispatch( - dispatchHandler: DispatchHandlerParameter, + dispatch( + dispatchHandler: DispatchHandlerParameter, ): Promise; context(): ContextReturn; diff --git a/packages/app-bridge-theme/src/registries/CommandRegistry.ts b/packages/app-bridge-theme/src/registries/CommandRegistry.ts index 13a369115..4e0dc2a48 100644 --- a/packages/app-bridge-theme/src/registries/CommandRegistry.ts +++ b/packages/app-bridge-theme/src/registries/CommandRegistry.ts @@ -1,13 +1,20 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type CommandNameValidator } from '../types'; +import { type Simplify } from 'type-fest'; -type OpenSearchDialog = void; -type CloseSearchDialog = void; -type NavigateToDocumentSection = number | string; +import { type ObjectNameValidator } from '../types'; export type CommandRegistry = CommandNameValidator<{ - openSearchDialog: OpenSearchDialog; - closeSearchDialog: CloseSearchDialog; - navigateToDocumentSection: NavigateToDocumentSection; + openSearchDialog: string[]; + closeSearchDialog: void; + navigate: string; + navigateToDocumentSection: number | string; }>; + +type CommandNameValidator = Simplify< + ObjectNameValidator +>; + +type CommandNamePattern = { [commandName: `${CommandVerb}${string}`]: unknown }; + +type CommandVerb = 'open' | 'close' | 'navigate' | 'download'; diff --git a/packages/app-bridge-theme/src/types/Command.ts b/packages/app-bridge-theme/src/types/Command.ts index c75ab0c04..9f9bcf78d 100644 --- a/packages/app-bridge-theme/src/types/Command.ts +++ b/packages/app-bridge-theme/src/types/Command.ts @@ -1,31 +1,17 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type Simplify } from 'type-fest'; - import { type CommandRegistry } from '../registries'; -import { type ObjectNameValidator, type WrongNamePattern } from './Common'; - -type CommandVerb = 'open' | 'close' | 'navigate' | 'download'; - -type CommandNamePattern = { [commandName: `${CommandVerb}${string}`]: unknown }; - -export type CommandNameValidator = Simplify< - ObjectNameValidator ->; - -export type Command = CommandNameValidator< - Pick ->; +import { type WrongNamePattern } from './Common'; type DispatchHandler< - CommandName extends keyof CommandNamePattern, - Command extends CommandNamePattern, -> = Command[CommandName] extends void ? { name: CommandName } : { name: CommandName; payload: Command[CommandName] }; + CommandName extends keyof CommandRegistry, + TCommand extends CommandRegistry, +> = TCommand[CommandName] extends void ? { name: CommandName } : { name: CommandName; payload: TCommand[CommandName] }; export type DispatchHandlerParameter< CommandName, - Command extends CommandNamePattern, -> = CommandName extends keyof CommandNamePattern - ? DispatchHandler + TCommand extends CommandRegistry, +> = CommandName extends keyof CommandRegistry + ? DispatchHandler : WrongNamePattern; From 7ceeadd7537092b02a520f8feb117dad5e058579 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Jun 2024 17:07:07 +0200 Subject: [PATCH 093/182] chore: release packages (alpha) (#979) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 1e6578cf5..b2755908f 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -15,6 +15,7 @@ "clever-suns-laugh", "cuddly-pets-hammer", "curly-pots-scream", + "dry-mangos-fix", "few-islands-build", "five-mangos-search", "four-crabs-bake", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 0d9a20e41..7d9f1a72f 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.7 + +### Patch Changes + +- [#978](https://github.com/Frontify/brand-sdk/pull/978) [`5eb0306`](https://github.com/Frontify/brand-sdk/commit/5eb030695cc105a3ed514a5b38840b015a8d85ac) Thanks [@Kenny806](https://github.com/Kenny806)! - feat: add a navigate command + ## 0.0.0-alpha.6 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 83775e51e..3ebc60c93 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.6", + "version": "0.0.0-alpha.7", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 02cd695c896847691eae43ed774637614ad3fd32 Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Tue, 25 Jun 2024 14:53:50 +0200 Subject: [PATCH 094/182] feat: AppBridgeThemes update context (#981) * feat: appBridgeTheme update context * changeset --- .changeset/fast-houses-hunt.md | 5 +++++ packages/app-bridge-theme/src/types/Context.ts | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/fast-houses-hunt.md diff --git a/.changeset/fast-houses-hunt.md b/.changeset/fast-houses-hunt.md new file mode 100644 index 000000000..1c92b00cc --- /dev/null +++ b/.changeset/fast-houses-hunt.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: AppBridgeTheme update context keys diff --git a/packages/app-bridge-theme/src/types/Context.ts b/packages/app-bridge-theme/src/types/Context.ts index 2869ffa35..fe93409ff 100644 --- a/packages/app-bridge-theme/src/types/Context.ts +++ b/packages/app-bridge-theme/src/types/Context.ts @@ -2,7 +2,14 @@ import { type Asset } from './Asset'; import { type EventUnsubscribeFunction } from './Event'; -import { type CoverPage, type Document, type DocumentLibrary, type DocumentPage } from './Guideline'; +import { + type PortalNavigationItem, + type BrandPortalLink, + type CoverPage, + type Document, + type DocumentLibrary, + type DocumentPage, +} from './Guideline'; import { type Language } from './Language'; import { type ThemeTemplate } from './ThemeTemplate'; @@ -14,8 +21,10 @@ export type TemplateContext = { templateId: string; type: ThemeTemplate } & ( export type Context = { brandId: number; + brandPortalLink: BrandPortalLink | null; projectId: number; portalId: number; + portalNavigation: PortalNavigationItem[] | null; portalToken: string | null; currentLanguage: string; defaultLanguage: string; From 9e203c1385535ca2aa1e0cfa7127cceec299a369 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jun 2024 15:03:06 +0200 Subject: [PATCH 095/182] chore: release packages (alpha) (#982) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index b2755908f..9419a8749 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -16,6 +16,7 @@ "cuddly-pets-hammer", "curly-pots-scream", "dry-mangos-fix", + "fast-houses-hunt", "few-islands-build", "five-mangos-search", "four-crabs-bake", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 7d9f1a72f..91473fd2e 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.8 + +### Patch Changes + +- [#981](https://github.com/Frontify/brand-sdk/pull/981) [`02cd695`](https://github.com/Frontify/brand-sdk/commit/02cd695c896847691eae43ed774637614ad3fd32) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: AppBridgeTheme update context keys + ## 0.0.0-alpha.7 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 3ebc60c93..d8a80b0a7 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.7", + "version": "0.0.0-alpha.8", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 57b2f90c8042e05774e57c1065fc86242f468f48 Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Tue, 25 Jun 2024 15:58:17 +0200 Subject: [PATCH 096/182] fix: appBridgeTheme command typing (#983) * fix: appBridgeTheme command type * changeset --- .changeset/new-zebras-unite.md | 5 +++++ packages/app-bridge-theme/src/registries/CommandRegistry.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/new-zebras-unite.md diff --git a/.changeset/new-zebras-unite.md b/.changeset/new-zebras-unite.md new file mode 100644 index 000000000..ff932b225 --- /dev/null +++ b/.changeset/new-zebras-unite.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +fix: AppBridgeTheme command typing diff --git a/packages/app-bridge-theme/src/registries/CommandRegistry.ts b/packages/app-bridge-theme/src/registries/CommandRegistry.ts index 4e0dc2a48..38d69f88c 100644 --- a/packages/app-bridge-theme/src/registries/CommandRegistry.ts +++ b/packages/app-bridge-theme/src/registries/CommandRegistry.ts @@ -5,7 +5,7 @@ import { type Simplify } from 'type-fest'; import { type ObjectNameValidator } from '../types'; export type CommandRegistry = CommandNameValidator<{ - openSearchDialog: string[]; + openSearchDialog: void; closeSearchDialog: void; navigate: string; navigateToDocumentSection: number | string; From 69ddf0260a34216cba6005be4a4ca60c373f8317 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jun 2024 16:05:07 +0200 Subject: [PATCH 097/182] chore: release packages (alpha) (#985) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 9419a8749..9bd13e85f 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -34,6 +34,7 @@ "nasty-feet-repair", "neat-plants-smile", "nervous-walls-repair", + "new-zebras-unite", "odd-geckos-end", "orange-jokes-listen", "pink-bugs-behave", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 91473fd2e..e6ee88eab 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.9 + +### Patch Changes + +- [#983](https://github.com/Frontify/brand-sdk/pull/983) [`57b2f90`](https://github.com/Frontify/brand-sdk/commit/57b2f90c8042e05774e57c1065fc86242f468f48) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: AppBridgeTheme command typing + ## 0.0.0-alpha.8 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index d8a80b0a7..16b600ea5 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.8", + "version": "0.0.0-alpha.9", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From f60bbf42218880ee8042e5830152a2112eef09dc Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Wed, 26 Jun 2024 15:49:27 +0200 Subject: [PATCH 098/182] feat: deprecate react hooks (#992) * chore: add deprecation notice * Create witty-tools-check.md --- .changeset/witty-tools-check.md | 5 +++++ packages/app-bridge/src/react/usePlatformAppBridge.ts | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 .changeset/witty-tools-check.md diff --git a/.changeset/witty-tools-check.md b/.changeset/witty-tools-check.md new file mode 100644 index 000000000..dca04c628 --- /dev/null +++ b/.changeset/witty-tools-check.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: deprecate react hooks for platform apps diff --git a/packages/app-bridge/src/react/usePlatformAppBridge.ts b/packages/app-bridge/src/react/usePlatformAppBridge.ts index db8e587fb..f5d1dfada 100644 --- a/packages/app-bridge/src/react/usePlatformAppBridge.ts +++ b/packages/app-bridge/src/react/usePlatformAppBridge.ts @@ -4,6 +4,9 @@ import { useEffect, useState } from 'react'; import { AppBridgePlatformApp } from '../AppBridgePlatformApp'; +/** + * @deprecated Use new AppBridgePlatformApp() directly in code. This hook is not needed anymore + */ export const usePlatformAppBridge = () => { const [platformAppBridge, setPlatformAppBridge] = useState(); From 2c0ebf209915a11dd018b7453d7932d0f0ee6f3e Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Fri, 28 Jun 2024 15:46:18 +0200 Subject: [PATCH 099/182] chore: merge main to dev (#1007) * chore: merge main to dev * add changeset for release --- .changeset/brave-queens-work.md | 5 + CODEOWNERS | 3 +- package.json | 7 +- packages/app-bridge-app/.eslintrc.cjs | 58 + packages/app-bridge-app/.gitignore | 3 + packages/app-bridge-app/.prettierrc | 5 + packages/app-bridge-app/CHANGELOG.md | 31 + packages/app-bridge-app/README.md | 1 + packages/app-bridge-app/package.json | 61 + .../src/AppBridgePlatformApp.spec.ts | 84 + .../src/AppBridgePlatformApp.ts | 259 + .../src/errors/HttpClientError.ts | 13 + .../src/errors/InitializationError.ts | 8 + .../app-bridge-app/src/errors/NotifyError.ts | 8 + .../src/errors/TimeoutReachedError.ts | 8 + .../src/errors/ValidationError.ts | 8 + packages/app-bridge-app/src/errors/index.ts | 7 + packages/app-bridge-app/src/global.d.ts | 3 + packages/app-bridge-app/src/index.ts | 10 + .../src/react/appContext.spec.tsx | 48 + .../app-bridge-app/src/react/appContext.ts | 11 + .../src/react/appSettings.spec.tsx | 33 + .../app-bridge-app/src/react/appSettings.ts | 9 + .../src/react/appUserState.spec.tsx | 33 + .../app-bridge-app/src/react/appUserState.ts | 12 + .../src/react/renderReactApp.spec.tsx | 69 + .../src/react/renderReactApp.ts | 24 + .../src/registries/api/ApiMethodRegistry.ts | 21 + .../src/registries/api/CreateAsset.spec.ts | 22 + .../src/registries/api/CreateAsset.ts | 19 + .../api/GetAssetResourceInformation.spec.ts | 18 + .../api/GetAssetResourceInformation.ts | 23 + .../src/registries/api/GetCurrentUser.spec.ts | 12 + .../src/registries/api/GetCurrentUser.ts | 12 + .../registries/api/GetSecretRequest.spec.ts | 17 + .../src/registries/api/GetSecureRequest.ts | 17 + .../src/registries/api/index.ts | 7 + .../app-bridge-app/src/registries/commands.ts | 3 + .../app-bridge-app/src/registries/index.ts | 3 + packages/app-bridge-app/src/setupTests.ts | 13 + .../src/types/CrossDocumentMessageResponse.ts | 10 + packages/app-bridge-app/src/types/Notify.ts | 7 + packages/app-bridge-app/src/types/Topic.ts | 5 + .../src/utilities/MessageBus.spec.ts | 120 + .../src/utilities/MessageBus.ts | 50 + packages/app-bridge-app/src/utilities/hash.ts | 5 + .../app-bridge-app/src/utilities/index.ts | 5 + .../app-bridge-app/src/utilities/notify.ts | 15 + .../src/utilities/queryParams.spec.ts | 35 + .../src/utilities/queryParams.ts | 24 + .../app-bridge-app/src/utilities/subscribe.ts | 33 + packages/app-bridge-app/src/window.d.ts | 11 + packages/app-bridge-app/tsconfig.json | 23 + packages/app-bridge-app/tsconfig.node.json | 12 + packages/app-bridge-app/vite.config.mts | 33 + packages/app-bridge/CHANGELOG.md | 138 +- .../tests/GuidelineSearchResultApiDummy.ts | 1 + .../src/types/GuidelineSearchResult.ts | 1 + packages/cli/CHANGELOG.md | 198 +- packages/cli/package.json | 3 +- packages/cli/src/commands/serve.ts | 47 +- packages/cli/src/index.ts | 2 +- .../content-block-tailwind/package.json | 2 +- .../content-block-tailwind/tailwind.config.ts | 1 + .../platform-app-css-modules/.gitignore | 1 + .../.secret-example.json | 4 + .../platform-app-css-modules/index.html | 11 +- .../platform-app-css-modules/package.json | 4 +- .../platform-app-css-modules/src/App.tsx | 16 +- .../cli/templates/platform-app-css/.gitignore | 1 + .../platform-app-css/.secret-example.json | 4 + .../cli/templates/platform-app-css/index.html | 11 +- .../templates/platform-app-css/package.json | 4 +- .../templates/platform-app-css/src/App.tsx | 16 +- .../platform-app-tailwind/.gitignore | 1 + .../.secret-example.json | 4 + .../platform-app-tailwind/index.html | 11 +- .../platform-app-tailwind/package.json | 4 +- .../platform-app-tailwind/src/App.tsx | 18 +- .../guideline-blocks-settings/CHANGELOG.md | 815 +- .../guideline-blocks-settings/package.json | 8 +- .../RichTextEditor/RichTextEditor.spec.ct.tsx | 46 +- .../RichTextEditor/RichTextEditor.tsx | 14 +- .../RichTextEditor/SerializedText.tsx | 6 +- .../ColumnBreakPlugin/ColumnBreakPlugin.ts | 28 + .../plugins/ColumnBreakPlugin/helper.spec.ts | 21 + .../plugins/ColumnBreakPlugin/helpers.ts | 17 + .../plugins/ColumnBreakPlugin/index.ts | 3 + .../RichTextEditor/plugins/index.ts | 1 + .../src/components/RichTextEditor/types.ts | 2 +- .../tailwind.config.ts | 4 +- .../guideline-blocks-settings/vite.config.ts | 2 +- packages/platform-app/CHANGELOG.md | 91 +- packages/platform-app/package.json | 2 +- packages/sidebar-settings/CHANGELOG.md | 188 +- packages/sidebar-settings/package.json | 4 +- packages/sidebar-settings/vite.config.ts | 5 + ...tch => @udecode__plate-emoji@31.4.0.patch} | 8 +- pnpm-lock.yaml | 12336 +++++++--------- 99 files changed, 7761 insertions(+), 7739 deletions(-) create mode 100644 .changeset/brave-queens-work.md create mode 100644 packages/app-bridge-app/.eslintrc.cjs create mode 100644 packages/app-bridge-app/.gitignore create mode 100644 packages/app-bridge-app/.prettierrc create mode 100644 packages/app-bridge-app/CHANGELOG.md create mode 100644 packages/app-bridge-app/README.md create mode 100644 packages/app-bridge-app/package.json create mode 100644 packages/app-bridge-app/src/AppBridgePlatformApp.spec.ts create mode 100644 packages/app-bridge-app/src/AppBridgePlatformApp.ts create mode 100644 packages/app-bridge-app/src/errors/HttpClientError.ts create mode 100644 packages/app-bridge-app/src/errors/InitializationError.ts create mode 100644 packages/app-bridge-app/src/errors/NotifyError.ts create mode 100644 packages/app-bridge-app/src/errors/TimeoutReachedError.ts create mode 100644 packages/app-bridge-app/src/errors/ValidationError.ts create mode 100644 packages/app-bridge-app/src/errors/index.ts create mode 100644 packages/app-bridge-app/src/global.d.ts create mode 100644 packages/app-bridge-app/src/index.ts create mode 100644 packages/app-bridge-app/src/react/appContext.spec.tsx create mode 100644 packages/app-bridge-app/src/react/appContext.ts create mode 100644 packages/app-bridge-app/src/react/appSettings.spec.tsx create mode 100644 packages/app-bridge-app/src/react/appSettings.ts create mode 100644 packages/app-bridge-app/src/react/appUserState.spec.tsx create mode 100644 packages/app-bridge-app/src/react/appUserState.ts create mode 100644 packages/app-bridge-app/src/react/renderReactApp.spec.tsx create mode 100644 packages/app-bridge-app/src/react/renderReactApp.ts create mode 100644 packages/app-bridge-app/src/registries/api/ApiMethodRegistry.ts create mode 100644 packages/app-bridge-app/src/registries/api/CreateAsset.spec.ts create mode 100644 packages/app-bridge-app/src/registries/api/CreateAsset.ts create mode 100644 packages/app-bridge-app/src/registries/api/GetAssetResourceInformation.spec.ts create mode 100644 packages/app-bridge-app/src/registries/api/GetAssetResourceInformation.ts create mode 100644 packages/app-bridge-app/src/registries/api/GetCurrentUser.spec.ts create mode 100644 packages/app-bridge-app/src/registries/api/GetCurrentUser.ts create mode 100644 packages/app-bridge-app/src/registries/api/GetSecretRequest.spec.ts create mode 100644 packages/app-bridge-app/src/registries/api/GetSecureRequest.ts create mode 100644 packages/app-bridge-app/src/registries/api/index.ts create mode 100644 packages/app-bridge-app/src/registries/commands.ts create mode 100644 packages/app-bridge-app/src/registries/index.ts create mode 100644 packages/app-bridge-app/src/setupTests.ts create mode 100644 packages/app-bridge-app/src/types/CrossDocumentMessageResponse.ts create mode 100644 packages/app-bridge-app/src/types/Notify.ts create mode 100644 packages/app-bridge-app/src/types/Topic.ts create mode 100644 packages/app-bridge-app/src/utilities/MessageBus.spec.ts create mode 100644 packages/app-bridge-app/src/utilities/MessageBus.ts create mode 100644 packages/app-bridge-app/src/utilities/hash.ts create mode 100644 packages/app-bridge-app/src/utilities/index.ts create mode 100644 packages/app-bridge-app/src/utilities/notify.ts create mode 100644 packages/app-bridge-app/src/utilities/queryParams.spec.ts create mode 100644 packages/app-bridge-app/src/utilities/queryParams.ts create mode 100644 packages/app-bridge-app/src/utilities/subscribe.ts create mode 100644 packages/app-bridge-app/src/window.d.ts create mode 100644 packages/app-bridge-app/tsconfig.json create mode 100644 packages/app-bridge-app/tsconfig.node.json create mode 100644 packages/app-bridge-app/vite.config.mts create mode 100644 packages/cli/templates/platform-app-css-modules/.secret-example.json create mode 100644 packages/cli/templates/platform-app-css/.secret-example.json create mode 100644 packages/cli/templates/platform-app-tailwind/.secret-example.json create mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/ColumnBreakPlugin.ts create mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/helper.spec.ts create mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/helpers.ts create mode 100644 packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/index.ts rename patches/{@udecode__plate-emoji@31.0.0.patch => @udecode__plate-emoji@31.4.0.patch} (76%) diff --git a/.changeset/brave-queens-work.md b/.changeset/brave-queens-work.md new file mode 100644 index 000000000..c8892e305 --- /dev/null +++ b/.changeset/brave-queens-work.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +chore: merge main to dev diff --git a/CODEOWNERS b/CODEOWNERS index 073b7230b..42ce10b8a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -162,9 +162,10 @@ packages/cli/templates/platform-app-css @Frontify/apps-and-integrations packages/cli/templates/platform-app-css-modules @Frontify/apps-and-integrations packages/cli/templates/platform-app-tailwind @Frontify/apps-and-integrations -# Platform Apps types +# Platform Apps packages/platform-app @Frontify/apps-and-integrations +packages/app-bridge-app @Frontify/apps-and-integrations # Guideline Blocks Settings diff --git a/package.json b/package.json index fe5bdcdae..530a1a9a8 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,10 @@ "private": true, "packageManager": "pnpm@9.1.3+sha512.7c2ea089e1a6af306409c4fc8c4f0897bdac32b772016196c469d9428f1fe2d5a21daf8ad6512762654ac645b5d9136bb210ec9a00afa8dbc4677843ba362ecd", "scripts": { - "build": "pnpm build:app-bridge && pnpm build:sidebar-settings && pnpm build:guideline-blocks-settings && pnpm build:platform-app && pnpm build:cli && pnpm build:app-bridge-theme", + "build": "pnpm build:app-bridge && pnpm build:sidebar-settings && pnpm build:guideline-blocks-settings && pnpm build:platform-app && pnpm build:cli && pnpm build:app-bridge-theme && pnpm build:app-bridge-app", "build:app-bridge": "pnpm --stream --filter {packages/app-bridge} build", "build:app-bridge-theme": "pnpm --stream --filter {packages/app-bridge-theme} build", + "build:app-bridge-app": "pnpm --stream --filter {packages/app-bridge-app} build", "build:sidebar-settings": "pnpm --stream --filter {packages/sidebar-settings} build", "build:guideline-blocks-settings": "pnpm --stream --filter {packages/guideline-blocks-settings} build", "build:platform-app": "pnpm --stream --filter {packages/platform-app} build", @@ -23,7 +24,7 @@ "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.1", "@cypress/vite-dev-server": "^5.0.7", - "@frontify/fondue": "^12.0.10", + "@frontify/fondue": "^12.1.8", "@vitejs/plugin-react": "^4.2.1", "cypress": "^13.7.2", "cypress-real-events": "^1.12.0", @@ -38,7 +39,7 @@ }, "pnpm": { "patchedDependencies": { - "@udecode/plate-emoji@31.0.0": "patches/@udecode__plate-emoji@31.0.0.patch" + "@udecode/plate-emoji@31.4.0": "patches/@udecode__plate-emoji@31.4.0.patch" } } } diff --git a/packages/app-bridge-app/.eslintrc.cjs b/packages/app-bridge-app/.eslintrc.cjs new file mode 100644 index 000000000..04ef1024d --- /dev/null +++ b/packages/app-bridge-app/.eslintrc.cjs @@ -0,0 +1,58 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +module.exports = { + root: true, + extends: ['@frontify/eslint-config-react'], + plugins: ['notice'], + settings: { + react: { + version: 'detect', + }, + }, + parserOptions: { + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + sourceType: 'module', + }, + overrides: [ + { + files: ['*.js', '*.ts', '*.tsx'], + rules: { + 'notice/notice': [ + 'error', + { + template: '/* (c) Copyright Frontify Ltd., all rights reserved. */\n\n', + messages: { + whenFailedToMatch: 'No Frontify copyright header set.', + }, + }, + ], + }, + }, + { + files: ['*.ts', '*.tsx', '*.mts', '*.cts'], + rules: { + 'no-prototype-builtins': 'warn', + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-misused-promises': 'warn', + '@typescript-eslint/no-unsafe-argument': 'warn', + '@typescript-eslint/no-unsafe-assignment': 'warn', + '@typescript-eslint/no-unsafe-call': 'warn', + '@typescript-eslint/no-unsafe-member-access': 'warn', + '@typescript-eslint/no-unsafe-return': 'warn', + '@typescript-eslint/require-await': 'warn', + '@typescript-eslint/await-thenable': 'warn', + '@typescript-eslint/no-unsafe-enum-comparison': 'warn', + '@typescript-eslint/restrict-plus-operands': 'warn', + }, + }, + { + files: ['**/*.md/**/*'], + processor: 'markdown/markdown', + parserOptions: { + project: null, + }, + }, + ], +}; diff --git a/packages/app-bridge-app/.gitignore b/packages/app-bridge-app/.gitignore new file mode 100644 index 000000000..007ea8a7c --- /dev/null +++ b/packages/app-bridge-app/.gitignore @@ -0,0 +1,3 @@ +dist +node_modules +coverage diff --git a/packages/app-bridge-app/.prettierrc b/packages/app-bridge-app/.prettierrc new file mode 100644 index 000000000..ca0c14e7c --- /dev/null +++ b/packages/app-bridge-app/.prettierrc @@ -0,0 +1,5 @@ +{ + "printWidth": 120, + "tabWidth": 4, + "singleQuote": true +} diff --git a/packages/app-bridge-app/CHANGELOG.md b/packages/app-bridge-app/CHANGELOG.md new file mode 100644 index 000000000..d2330c007 --- /dev/null +++ b/packages/app-bridge-app/CHANGELOG.md @@ -0,0 +1,31 @@ +# @frontify/app-bridge-app + +## 0.0.5 + +### Patch Changes + +- [#1005](https://github.com/Frontify/brand-sdk/pull/1005) [`9790524`](https://github.com/Frontify/brand-sdk/commit/979052451ee69cbd9f60c397a30b4e5fd08fa779) Thanks [@julianiff](https://github.com/julianiff)! - chore: update app-bridge-app + +## 0.0.4 + +### Patch Changes + +- [#1003](https://github.com/Frontify/brand-sdk/pull/1003) [`bca28e1`](https://github.com/Frontify/brand-sdk/commit/bca28e193e59e04618a1b172f7bc14790b24efe2) Thanks [@julianiff](https://github.com/julianiff)! - chore: add exports + +## 0.0.3 + +### Patch Changes + +- [#998](https://github.com/Frontify/brand-sdk/pull/998) [`39b4f32`](https://github.com/Frontify/brand-sdk/commit/39b4f32e6b96bc5a1d39517f268e930995ab960c) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adds utility methods and an updated renderReact method + +- [#995](https://github.com/Frontify/brand-sdk/pull/995) [`99b28d3`](https://github.com/Frontify/brand-sdk/commit/99b28d3baec9ff928daf8847514202f85be3e64f) Thanks [@julianiff](https://github.com/julianiff)! - feat: add renderAppReact utility + +- [#996](https://github.com/Frontify/brand-sdk/pull/996) [`f1c7360`](https://github.com/Frontify/brand-sdk/commit/f1c7360ea59e49f13170f80d6ce51dad7b30f23e) Thanks [@julianiff](https://github.com/julianiff)! - feat: add typed settings + +## 0.0.2 + +### Patch Changes + +- [#986](https://github.com/Frontify/brand-sdk/pull/986) [`6adb54b`](https://github.com/Frontify/brand-sdk/commit/6adb54bb2a3af14a016b3d979f1c43129953b5f4) Thanks [@julianiff](https://github.com/julianiff)! - feat: copy appBridgePlatformApp to app-bridge-app + +- [#990](https://github.com/Frontify/brand-sdk/pull/990) [`e1ec08a`](https://github.com/Frontify/brand-sdk/commit/e1ec08a988950997ddc70213300639fd8f3866d9) Thanks [@julianiff](https://github.com/julianiff)! - fix: fix linting and tests diff --git a/packages/app-bridge-app/README.md b/packages/app-bridge-app/README.md new file mode 100644 index 000000000..072560e0c --- /dev/null +++ b/packages/app-bridge-app/README.md @@ -0,0 +1 @@ +# App Bridge App diff --git a/packages/app-bridge-app/package.json b/packages/app-bridge-app/package.json new file mode 100644 index 000000000..651df0782 --- /dev/null +++ b/packages/app-bridge-app/package.json @@ -0,0 +1,61 @@ +{ + "name": "@frontify/app-bridge-app", + "type": "module", + "version": "0.0.5", + "description": "Package to establish communication between Frontify and apps", + "author": "Frontify Developers ", + "repository": { + "type": "git", + "url": "https://github.com/Frontify/brand-sdk", + "directory": "packages/app-bridge-app" + }, + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/index.js", + "import": "./dist/index.js" + } + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ], + "scripts": { + "build": "vite build", + "lint": "eslint .", + "lint:fix": "eslint --fix .", + "prettier": "prettier --check .", + "prettier:fix": "prettier --write .", + "typecheck": "tsc --noEmit", + "test": "vitest run", + "test:watch": "vitest" + }, + "peerDependencies": { + "react": "^18", + "react-dom": "^18" + }, + "devDependencies": { + "@frontify/app-bridge": "workspace:^", + "@frontify/eslint-config-react": "^0.17.6", + "@frontify/platform-app": "workspace:^", + "@testing-library/react": "^14.3.1", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.2.24", + "eslint": "^8.57.0", + "eslint-plugin-notice": "^0.9.10", + "happy-dom": "^13.10.1", + "immer": "^10.1.1", + "prettier": "^3.3.2", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "typescript": "^5.5.2", + "vite": "^5.3.1", + "vite-plugin-dts": "^3.9.1", + "vitest": "^1.6.0" + } +} diff --git a/packages/app-bridge-app/src/AppBridgePlatformApp.spec.ts b/packages/app-bridge-app/src/AppBridgePlatformApp.spec.ts new file mode 100644 index 000000000..c3590c4f2 --- /dev/null +++ b/packages/app-bridge-app/src/AppBridgePlatformApp.spec.ts @@ -0,0 +1,84 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { AppBridgePlatformApp } from './AppBridgePlatformApp'; +import { InitializationError } from './errors'; +import { openConnection } from './registries/commands.ts'; +import { notify } from './utilities'; + +const TOKEN = 'AjY34F87Dsat^J'; + +describe('AppBridgePlatformApp', () => { + vi.mock('./utilities/subscribe', () => ({ + subscribe: vi.fn().mockResolvedValue({ + statePort: { onmessage: vi.fn() }, + apiPort: { onmessage: vi.fn() }, + context: { parentId: 'parentId-test', connected: true }, + state: { settings: 'settings-test', userState: 'state-test' }, + }), + })); + + vi.mock('./utilities/notify', () => ({ + notify: vi.fn(), + })); + + afterEach(() => { + vi.clearAllMocks(); + }); + + it('should be instantiable', () => { + expect(new AppBridgePlatformApp()).toBeInstanceOf(AppBridgePlatformApp); + }); + + it('should not initialize without a token', async () => { + window.location.search = '?token='; + + const platformApp = new AppBridgePlatformApp(); + + await expect(() => platformApp.dispatch(openConnection())).rejects.toThrow(new InitializationError()); + expect(notify).toHaveBeenCalledTimes(0); + }); + + it('should yield true for Context.connected after dispatch', async () => { + const connected = true; + window.location.search = `?token=${TOKEN}`; + const platformApp = new AppBridgePlatformApp(); + platformApp.subscribe('Context.connected', () => { + expect(connected).toBe(true); + }); + platformApp.dispatch(openConnection()); + }); + + it('should return empty state when not inititalized', async () => { + const platformApp = new AppBridgePlatformApp(); + const state = platformApp.state().get(); + expect(state).toEqual({ settings: 'settings-test', userState: 'state-test' }); + }); + + it('should return state after app is initialized', async () => { + window.location.search = `?token=${TOKEN}`; + const platformApp = new AppBridgePlatformApp(); + platformApp.subscribe('Context.connected', (connected) => { + const state = platformApp.state().get(); + + expect(connected).toBe(true); + expect(state).toEqual({ settings: 'settings-test' }); + }); + platformApp.dispatch(openConnection()); + }); + + it('should yield true for Context.connected after dispatch', async () => { + window.location.search = `?token=${TOKEN}`; + const platformApp = new AppBridgePlatformApp(); + platformApp.subscribe('Context.connected', (connected) => { + const context = platformApp.context().get(); + const parentId = platformApp.context('parentId').get(); + + expect(connected).toBe(true); + expect(context).toEqual({ parentId: 'parentId-test', connected: true }); + expect(parentId).toEqual('parentId-test'); + }); + platformApp.dispatch(openConnection()); + }); +}); diff --git a/packages/app-bridge-app/src/AppBridgePlatformApp.ts b/packages/app-bridge-app/src/AppBridgePlatformApp.ts new file mode 100644 index 000000000..0454a2ab9 --- /dev/null +++ b/packages/app-bridge-app/src/AppBridgePlatformApp.ts @@ -0,0 +1,259 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { + type ApiHandlerParameter, + type ApiMethodNameValidator, + type ApiReturn, + type CommandNameValidator, + type ContextAsEventName, + type ContextReturn, + type DispatchHandlerParameter, + type EventCallbackParameter, + type EventNameParameter, + type EventNameValidator, + type EventUnsubscribeFunction, + type StateAsEventName, + type StateReturn, + type SubscribeMap, +} from '@frontify/app-bridge'; + +import { InitializationError } from './errors'; +import { type ApiMethodRegistry } from './registries'; +import { openConnection } from './registries/commands.ts'; +import { Topic } from './types/Topic'; +import { generateRandomString, notify, subscribe } from './utilities'; +import { ErrorMessageBus, type IMessageBus, MessageBus } from './utilities/MessageBus'; +import { getQueryParameters } from './utilities/queryParams'; + +export type PlatformAppApiMethod = ApiMethodNameValidator< + Pick +>; + +export type PlatformAppCommandRegistry = CommandNameValidator<{ + openConnection: void; +}>; + +export type PlatformAppCommand = CommandNameValidator>; + +export type PlatformAppState = { + settings: Record; + userState: Record; +}; + +type InitializeEvent = { + apiPort: MessagePort; + statePort: MessagePort; + context: PlatformAppContext; + state: PlatformAppState; +}; + +type AppBaseProps = { + token: string; + marketplaceServiceAppId: string; + connected: boolean; + brandId: number; + domain: string; + parentId: string; +}; + +export type AssetActionContext = { + surface: 'assetAction'; + assetId: string; +} & AppBaseProps; + +export type AssetCreationContext = { + surface: 'assetCreation'; +} & AppBaseProps; + +export type PlatformAppContext = AssetActionContext | AssetCreationContext; + +export type PlatformAppEvent = EventNameValidator< + StateAsEventName & + ContextAsEventName +>; + +export class AppBridgePlatformApp { + private apiMessageBus: IMessageBus = new ErrorMessageBus(); + private statePort: MessagePort | undefined; + private initialized: boolean = false; + private localContext?: PlatformAppContext; + private localState: PlatformAppState = { settings: {}, userState: {} }; + private maxRetries: number = 5; + + private readonly subscribeMap: SubscribeMap = { + 'State.*': new Map(), + 'State.settings': new Map(), + 'State.userState': new Map(), + 'Context.*': new Map(), + 'Context.marketplaceServiceAppId': new Map(), + 'Context.token': new Map(), + 'Context.assetId': new Map(), + 'Context.brandId': new Map(), + 'Context.parentId': new Map(), + 'Context.domain': new Map(), + 'Context.surface': new Map(), + 'Context.connected': new Map(), + }; + + constructor() { + if (window.appBridgePlatformApp) { + return window.appBridgePlatformApp; + } + + window.appBridgePlatformApp = this; + } + + api( + apiHandler: ApiHandlerParameter, + ): ApiReturn { + return this.apiMessageBus.post({ + parameter: apiHandler, + }) as ApiReturn; + } + + private guardForInitialization() { + const initialContext = getQueryParameters(window.location.href); + if (!initialContext.token) { + throw new InitializationError(); + } + return this.initialized; + } + + async dispatch( + dispatchHandler: DispatchHandlerParameter, + ): Promise { + if (dispatchHandler.name === openConnection().name) { + if (this.guardForInitialization()) { + return; + } + + const checksum = generateRandomString(); + + notify(Topic.Init, checksum, { + token: getQueryParameters(window.location.href).token, + appBridgeVersion: 'v4', + }); + + await this.attemptSubscription(1, checksum); + } + } + + private async attemptSubscription(attempt: number, checksum: string): Promise { + try { + const { statePort, apiPort, context, state } = await subscribe(Topic.Init, checksum); + + this.apiMessageBus = new MessageBus(apiPort); + + this.statePort = statePort; + this.statePort.onmessage = (event: MessageEvent<{ message: PlatformAppState }>) => { + this.onStateChangeListener(event); + }; + + this.localContext = context; + this.localState = state; + this.initialized = true; + + this.callSubscribedTopic('Context.connected', [true, false]); + this.callSubscribedTopic('Context.*', [this.localContext, this.localContext]); + this.callSubscribedTopic('State.*', [this.localState, this.localState]); + } catch (error) { + if (attempt < this.maxRetries) { + await this.attemptSubscription(attempt + 1, checksum); + } else { + console.error('Could not connect to the platform.'); + } + } + } + + context(key?: void): ContextReturn; + context(key?: Key): ContextReturn; + context(key?: keyof PlatformAppContext | void): unknown { + if (typeof key === 'undefined') { + return { + get: () => this.localContext, + }; + } + return { + get: () => (this.localContext ? this.localContext[key] : {}), + }; + } + + state(): StateReturn; + state(key: Key): StateReturn; + state(key?: keyof PlatformAppState | void): unknown { + if (typeof key === 'undefined') { + return { + get: () => this.localState, + set: (nextState: PlatformAppState) => { + if (this.statePort) { + this.statePort.postMessage({ + message: { + parameter: { nextState }, + }, + token: 'state', + }); + } + }, + subscribe: (callback: (nextState: PlatformAppState, previousState: PlatformAppState) => void) => { + return this.subscribe('State.*', callback); + }, + }; + } + + return { + get: () => this.localState[key], + set: (nextState: PlatformAppState[Key]) => { + if (this.statePort) { + this.statePort.postMessage({ + message: { + parameter: { key, nextState }, + }, + token: 'state', + }); + } + }, + subscribe: (callback: (nextState: PlatformAppState[Key], previousState: PlatformAppState[Key]) => void) => { + return this.subscribe(`State.${key}`, callback); + }, + }; + } + + subscribe( + eventName: EventNameParameter, + callback: EventCallbackParameter, + ): EventUnsubscribeFunction { + if (!(eventName in this.subscribeMap)) { + this.subscribeMap[eventName] = new Map(); + } + + this.subscribeMap[eventName].set(callback, true); + + return () => { + this.subscribeMap[eventName].delete(callback); + }; + } + + callSubscribedTopic( + eventName: EventNameParameter, + callbackParameters: PlatformAppEvent[EventName], + ) { + const callbackMap = this.subscribeMap[eventName]; + if (callbackMap && callbackMap?.size !== undefined) { + for (const [callback] of callbackMap.entries()) { + // @ts-expect-error if there are multiple parameters, we spread them in the callback call + callback(...(Array.isArray(callbackParameters) ? callbackParameters : [callbackParameters])); + } + } + } + + private onStateChangeListener(event: MessageEvent<{ message: PlatformAppState; key?: 'settings' | 'userState' }>) { + const { message, key } = event.data; + + if (!key) { + this.callSubscribedTopic('State.*', [message, this.localState]); + } else { + this.callSubscribedTopic(`State.${key}`, [message[key], this.localState[key]]); + } + this.localState = message; + } +} diff --git a/packages/app-bridge-app/src/errors/HttpClientError.ts b/packages/app-bridge-app/src/errors/HttpClientError.ts new file mode 100644 index 000000000..b0577b985 --- /dev/null +++ b/packages/app-bridge-app/src/errors/HttpClientError.ts @@ -0,0 +1,13 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export class HttpClientError extends Error { + public code = 0; + public responseBody: object; + + constructor(message: string, code: number, responseBody: Record) { + super(`Status code ${code} - ${message}`); + this.name = 'HttpClientError'; + this.code = code; + this.responseBody = responseBody; + } +} diff --git a/packages/app-bridge-app/src/errors/InitializationError.ts b/packages/app-bridge-app/src/errors/InitializationError.ts new file mode 100644 index 000000000..2cfbf5bc8 --- /dev/null +++ b/packages/app-bridge-app/src/errors/InitializationError.ts @@ -0,0 +1,8 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export class InitializationError extends Error { + constructor(message?: string) { + super(`Initialization failed. ${message}`); + this.name = 'InitializationError'; + } +} diff --git a/packages/app-bridge-app/src/errors/NotifyError.ts b/packages/app-bridge-app/src/errors/NotifyError.ts new file mode 100644 index 000000000..0057a78fd --- /dev/null +++ b/packages/app-bridge-app/src/errors/NotifyError.ts @@ -0,0 +1,8 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export class FetchError extends Error { + constructor(topic: string) { + super(`Call with topic ${topic} failed.`); + this.name = 'FetchError'; + } +} diff --git a/packages/app-bridge-app/src/errors/TimeoutReachedError.ts b/packages/app-bridge-app/src/errors/TimeoutReachedError.ts new file mode 100644 index 000000000..0044ca987 --- /dev/null +++ b/packages/app-bridge-app/src/errors/TimeoutReachedError.ts @@ -0,0 +1,8 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export class TimeoutReachedError extends Error { + constructor(topic: string) { + super(`Timeout for call with topic "${topic}" expired. Call was aborted.`); + this.name = 'TimeoutReachedError'; + } +} diff --git a/packages/app-bridge-app/src/errors/ValidationError.ts b/packages/app-bridge-app/src/errors/ValidationError.ts new file mode 100644 index 000000000..3872fcb12 --- /dev/null +++ b/packages/app-bridge-app/src/errors/ValidationError.ts @@ -0,0 +1,8 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export class ValidationError extends Error { + constructor(message?: string) { + super(`Validation failed. ${message}`); + this.name = 'ValidationError'; + } +} diff --git a/packages/app-bridge-app/src/errors/index.ts b/packages/app-bridge-app/src/errors/index.ts new file mode 100644 index 000000000..d90f172b4 --- /dev/null +++ b/packages/app-bridge-app/src/errors/index.ts @@ -0,0 +1,7 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './HttpClientError'; +export * from './InitializationError'; +export * from './NotifyError'; +export * from './TimeoutReachedError'; +export * from './ValidationError'; diff --git a/packages/app-bridge-app/src/global.d.ts b/packages/app-bridge-app/src/global.d.ts new file mode 100644 index 000000000..fddff887f --- /dev/null +++ b/packages/app-bridge-app/src/global.d.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +type Nullable = T | null; diff --git a/packages/app-bridge-app/src/index.ts b/packages/app-bridge-app/src/index.ts new file mode 100644 index 000000000..cbbc04b5c --- /dev/null +++ b/packages/app-bridge-app/src/index.ts @@ -0,0 +1,10 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './AppBridgePlatformApp'; +export * from './errors'; +export * from './registries'; +export * from './utilities'; +export * from './react/appUserState'; +export * from './react/appSettings'; +export * from './react/appContext'; +export * from './react/renderReactApp'; diff --git a/packages/app-bridge-app/src/react/appContext.spec.tsx b/packages/app-bridge-app/src/react/appContext.spec.tsx new file mode 100644 index 000000000..bcfe82c09 --- /dev/null +++ b/packages/app-bridge-app/src/react/appContext.spec.tsx @@ -0,0 +1,48 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, it, vi, expect } from 'vitest'; + +import * as AppBridge from '../AppBridgePlatformApp.ts'; +import { + type AppBridgePlatformApp, + type AssetActionContext, + type AssetCreationContext, +} from '../AppBridgePlatformApp.ts'; + +import { appContext } from './appContext.ts'; + +describe('appContext', () => { + it('should have type of AssetActionContext when adding AssetActionContext generic', () => { + vi.spyOn(AppBridge, 'AppBridgePlatformApp').mockImplementation( + () => + ({ + context: () => ({ + get: vi.fn().mockImplementation(() => ({ surface: 'assetAction', assetId: 'test-123' })), + }), + }) as unknown as AppBridgePlatformApp, + ); + + const context = appContext(); + + if (context.surface === 'assetAction') { + expect(context.assetId).toBe('test-123'); + } + + const genericContext = appContext(); + expect(genericContext.assetId).toBe('test-123'); + }); + it('should have type of AssetCreation when adding AssetCreationContext generic', () => { + vi.spyOn(AppBridge, 'AppBridgePlatformApp').mockImplementationOnce( + () => + ({ + context: () => ({ + get: vi.fn().mockImplementation(() => ({ brandId: 'test-123' })), + }), + }) as unknown as AppBridgePlatformApp, + ); + + const context = appContext(); + + expect(context.brandId).toBe('test-123'); + }); +}); diff --git a/packages/app-bridge-app/src/react/appContext.ts b/packages/app-bridge-app/src/react/appContext.ts new file mode 100644 index 000000000..eb18b5656 --- /dev/null +++ b/packages/app-bridge-app/src/react/appContext.ts @@ -0,0 +1,11 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { AppBridgePlatformApp, type AssetActionContext, type AssetCreationContext } from '../AppBridgePlatformApp.ts'; + +/** + * This function just helps to get the Context + */ +export const appContext = (): T => { + const appBridge = new AppBridgePlatformApp(); + return appBridge.context().get() as T; +}; diff --git a/packages/app-bridge-app/src/react/appSettings.spec.tsx b/packages/app-bridge-app/src/react/appSettings.spec.tsx new file mode 100644 index 000000000..9668963c3 --- /dev/null +++ b/packages/app-bridge-app/src/react/appSettings.spec.tsx @@ -0,0 +1,33 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, it, vi, expect } from 'vitest'; + +import * as AppBridge from '../AppBridgePlatformApp.ts'; +import { type AppBridgePlatformApp } from '../AppBridgePlatformApp.ts'; + +import { appSettings } from './appSettings.ts'; + +describe('appSettings', () => { + it('should return the settings object and an object setter', () => { + const setMock = vi.fn(); + vi.spyOn(AppBridge, 'AppBridgePlatformApp').mockImplementationOnce( + () => + ({ + state: () => ({ + get: vi.fn().mockImplementation(() => ({ 'test-settings': 'output' })), + set: setMock, + }), + }) as unknown as AppBridgePlatformApp, + ); + const testSetter = { 'test-settings': 'fun' }; + + const [settings, setSettings] = appSettings<{ + 'test-settings': string; + 'another-settings': string; + }>(); + expect(settings['test-settings']).toBe('output'); + + setSettings(testSetter); + expect(setMock).toHaveBeenCalledWith(testSetter); + }); +}); diff --git a/packages/app-bridge-app/src/react/appSettings.ts b/packages/app-bridge-app/src/react/appSettings.ts new file mode 100644 index 000000000..a67131789 --- /dev/null +++ b/packages/app-bridge-app/src/react/appSettings.ts @@ -0,0 +1,9 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { AppBridgePlatformApp } from '../AppBridgePlatformApp.ts'; + +export const appSettings = (): [T, (settings: Partial) => void] => { + const appBridge = new AppBridgePlatformApp(); + + return [appBridge.state('settings').get() as T, appBridge.state('settings').set as (settings: Partial) => void]; +}; diff --git a/packages/app-bridge-app/src/react/appUserState.spec.tsx b/packages/app-bridge-app/src/react/appUserState.spec.tsx new file mode 100644 index 000000000..d93bcb6b4 --- /dev/null +++ b/packages/app-bridge-app/src/react/appUserState.spec.tsx @@ -0,0 +1,33 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, it, vi, expect } from 'vitest'; + +import * as AppBridge from '../AppBridgePlatformApp.ts'; +import { type AppBridgePlatformApp } from '../AppBridgePlatformApp.ts'; + +import { appUserState } from './appUserState.ts'; + +describe('appUserState', () => { + it('should return the userState object and an object setter', () => { + const setMock = vi.fn(); + vi.spyOn(AppBridge, 'AppBridgePlatformApp').mockImplementationOnce( + () => + ({ + state: () => ({ + get: vi.fn().mockImplementation(() => ({ 'test-userState': 'output' })), + set: setMock, + }), + }) as unknown as AppBridgePlatformApp, + ); + const testSetter = { 'test-userState': 'fun' }; + + const [userState, setUserState] = appUserState<{ + 'test-userState': string; + 'another-settings': string; + }>(); + expect(userState['test-userState']).toBe('output'); + + setUserState(testSetter); + expect(setMock).toHaveBeenCalledWith(testSetter); + }); +}); diff --git a/packages/app-bridge-app/src/react/appUserState.ts b/packages/app-bridge-app/src/react/appUserState.ts new file mode 100644 index 000000000..7f1c58042 --- /dev/null +++ b/packages/app-bridge-app/src/react/appUserState.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { AppBridgePlatformApp } from '../AppBridgePlatformApp.ts'; + +export const appUserState = (): [T, (settings: Partial) => void] => { + const appBridge = new AppBridgePlatformApp(); + + return [ + appBridge.state('userState').get() as T, + appBridge.state('userState').set as (settings: Partial) => void, + ]; +}; diff --git a/packages/app-bridge-app/src/react/renderReactApp.spec.tsx b/packages/app-bridge-app/src/react/renderReactApp.spec.tsx new file mode 100644 index 000000000..72bc2a7e8 --- /dev/null +++ b/packages/app-bridge-app/src/react/renderReactApp.spec.tsx @@ -0,0 +1,69 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { screen, waitFor } from '@testing-library/react'; +import { describe, it, vi, beforeEach, afterEach, expect } from 'vitest'; + +import * as AppBridge from '../AppBridgePlatformApp.ts'; +import { type AppBridgePlatformApp } from '../AppBridgePlatformApp.ts'; + +import { renderReactApp } from './renderReactApp.ts'; + +const AppTest = () => { + return
This component got rendered
; +}; + +describe('renderAppReact', () => { + beforeEach(() => { + window.location.search = "?token='test'"; + document.body.innerHTML = '
'; + }); + + afterEach(() => { + vi.restoreAllMocks(); + }); + + it('should call the dispatch method to openConnection', async () => { + const dispatchMock = vi.fn(); + + vi.spyOn(AppBridge, 'AppBridgePlatformApp').mockImplementationOnce( + () => + ({ + subscribe: vi.fn(), + dispatch: dispatchMock, + }) as unknown as AppBridgePlatformApp, + ); + + renderReactApp({ app: AppTest, settings: {} }); + + await waitFor(() => { + expect(dispatchMock).toHaveBeenCalledWith({ name: 'openConnection' }); + }); + }); + + it('should call the subscribe method and then render the test Component correctly when callback called', async () => { + let callbackMock: () => void; + let nameMock = ''; + + vi.spyOn(AppBridge, 'AppBridgePlatformApp').mockImplementationOnce( + () => + ({ + subscribe: (name: string, callback: () => void) => { + callbackMock = callback; + nameMock = name; + }, + dispatch: vi.fn(), + }) as unknown as AppBridgePlatformApp, + ); + + renderReactApp({ app: AppTest, settings: {} }); + + await waitFor(() => { + callbackMock(); + expect(nameMock).toBe('Context.connected'); + }); + + await waitFor(() => { + expect(screen.getAllByTestId('test-id')).toBeDefined; + }); + }); +}); diff --git a/packages/app-bridge-app/src/react/renderReactApp.ts b/packages/app-bridge-app/src/react/renderReactApp.ts new file mode 100644 index 000000000..9d99d1f40 --- /dev/null +++ b/packages/app-bridge-app/src/react/renderReactApp.ts @@ -0,0 +1,24 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type PlatformAppConfigExport } from '@frontify/platform-app'; +import { createElement } from 'react'; +import { createRoot } from 'react-dom/client'; + +import { AppBridgePlatformApp } from '../AppBridgePlatformApp.ts'; + +export const renderReactApp = (module: PlatformAppConfigExport) => { + const appBridge = new AppBridgePlatformApp(); + + appBridge.subscribe('Context.connected', () => { + const rootElement = document.getElementById('root'); + + if (rootElement) { + const root = createRoot(rootElement); + root.render(createElement(module.app)); + } else { + throw new Error("Element with id 'root' not found"); + } + }); + + appBridge.dispatch({ name: 'openConnection' }); +}; diff --git a/packages/app-bridge-app/src/registries/api/ApiMethodRegistry.ts b/packages/app-bridge-app/src/registries/api/ApiMethodRegistry.ts new file mode 100644 index 000000000..0f04924c8 --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/ApiMethodRegistry.ts @@ -0,0 +1,21 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type ApiMethodNameValidator } from '@frontify/app-bridge'; + +import { type CreateAssetPayload, type CreateAssetResponse } from './CreateAsset'; +import { + type GetAssetResourceInformationPayload, + type GetAssetResourceInformationResponse, +} from './GetAssetResourceInformation'; +import { type GetCurrentUserPayload, type GetCurrentUserResponse } from './GetCurrentUser'; +import { type GetSecureRequestPayload, type GetSecureRequestResponse } from './GetSecureRequest.ts'; + +export type ApiMethodRegistry = ApiMethodNameValidator<{ + getCurrentUser: { payload: GetCurrentUserPayload; response: GetCurrentUserResponse }; + createAsset: { payload: CreateAssetPayload; response: CreateAssetResponse }; + getAssetResourceInformation: { + payload: GetAssetResourceInformationPayload; + response: GetAssetResourceInformationResponse; + }; + getSecureRequest: { payload: GetSecureRequestPayload; response: GetSecureRequestResponse }; +}>; diff --git a/packages/app-bridge-app/src/registries/api/CreateAsset.spec.ts b/packages/app-bridge-app/src/registries/api/CreateAsset.spec.ts new file mode 100644 index 000000000..c3c26abe6 --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/CreateAsset.spec.ts @@ -0,0 +1,22 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; + +import { createAsset } from './CreateAsset'; + +describe('CreateAsset', () => { + it('should return correct method name and payload', () => { + const TEST_DATA = 'test'; + const payload = { + data: TEST_DATA, + filename: TEST_DATA, + parentId: TEST_DATA, + description: TEST_DATA, + externalId: TEST_DATA, + tags: [{ value: TEST_DATA }], + }; + const currentUser = createAsset(payload); + expect(currentUser.name).toBe('createAsset'); + expect(currentUser.payload).toBe(payload); + }); +}); diff --git a/packages/app-bridge-app/src/registries/api/CreateAsset.ts b/packages/app-bridge-app/src/registries/api/CreateAsset.ts new file mode 100644 index 000000000..9bfb8a445 --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/CreateAsset.ts @@ -0,0 +1,19 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type CreateAssetPayload = { + data: File | Blob | string; + filename: string; + parentId?: string; + description?: string; + externalId?: string; + tags?: { value: string }[]; +}; + +export type CreateAssetResponse = { + assetId: string; +}; + +export const createAsset = (payload: CreateAssetPayload): { name: 'createAsset'; payload: CreateAssetPayload } => ({ + name: 'createAsset', + payload, +}); diff --git a/packages/app-bridge-app/src/registries/api/GetAssetResourceInformation.spec.ts b/packages/app-bridge-app/src/registries/api/GetAssetResourceInformation.spec.ts new file mode 100644 index 000000000..3e2788fae --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/GetAssetResourceInformation.spec.ts @@ -0,0 +1,18 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; + +import { getAssetResourceInformation } from './GetAssetResourceInformation'; + +describe('GetAssetResourceInformation', () => { + it('should return correct method name', () => { + const TEST_ID = 'test-123'; + const assetResourceInformation = getAssetResourceInformation({ + assetId: TEST_ID, + }); + expect(assetResourceInformation.name).toBe('getAssetResourceInformation'); + expect(assetResourceInformation.payload).toStrictEqual({ + assetId: TEST_ID, + }); + }); +}); diff --git a/packages/app-bridge-app/src/registries/api/GetAssetResourceInformation.ts b/packages/app-bridge-app/src/registries/api/GetAssetResourceInformation.ts new file mode 100644 index 000000000..ecfa5e9bb --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/GetAssetResourceInformation.ts @@ -0,0 +1,23 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type GetAssetResourceInformationPayload = { + assetId: string; +}; + +export type GetAssetResourceInformationResponse = { + type: string; + id: string; + title?: string; + previewUrl?: string; + downloadUrl?: string; + filename?: string | null; + sourceUrl?: string; + html?: string; +}; + +export const getAssetResourceInformation = ( + payload: GetAssetResourceInformationPayload, +): { name: 'getAssetResourceInformation'; payload: GetAssetResourceInformationPayload } => ({ + name: 'getAssetResourceInformation', + payload, +}); diff --git a/packages/app-bridge-app/src/registries/api/GetCurrentUser.spec.ts b/packages/app-bridge-app/src/registries/api/GetCurrentUser.spec.ts new file mode 100644 index 000000000..d114151bb --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/GetCurrentUser.spec.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; + +import { getCurrentUser } from './GetCurrentUser'; + +describe('GetCurrentUser', () => { + it('should return correct method name', () => { + const currentUser = getCurrentUser(); + expect(currentUser.name).toBe('getCurrentUser'); + }); +}); diff --git a/packages/app-bridge-app/src/registries/api/GetCurrentUser.ts b/packages/app-bridge-app/src/registries/api/GetCurrentUser.ts new file mode 100644 index 000000000..779fbabba --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/GetCurrentUser.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type GetCurrentUserPayload = void; + +export type GetCurrentUserResponse = { + id: string; + name?: string | null; + avatar?: string | null; + email: string; +}; + +export const getCurrentUser = (payload: GetCurrentUserPayload) => ({ name: 'getCurrentUser', payload }); diff --git a/packages/app-bridge-app/src/registries/api/GetSecretRequest.spec.ts b/packages/app-bridge-app/src/registries/api/GetSecretRequest.spec.ts new file mode 100644 index 000000000..2a424fb40 --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/GetSecretRequest.spec.ts @@ -0,0 +1,17 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; + +import { getSecureRequest } from './GetSecureRequest'; + +describe('GetSecureRequest', () => { + it('should return correct method name', () => { + const TEST_ID = 'user-api'; + const secureRequest = getSecureRequest({ endpoint: TEST_ID, requestParams: 'data' }); + expect(secureRequest.name).toBe('getSecureRequest'); + expect(secureRequest.payload).toStrictEqual({ + endpoint: TEST_ID, + requestParams: 'data', + }); + }); +}); diff --git a/packages/app-bridge-app/src/registries/api/GetSecureRequest.ts b/packages/app-bridge-app/src/registries/api/GetSecureRequest.ts new file mode 100644 index 000000000..553e18cff --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/GetSecureRequest.ts @@ -0,0 +1,17 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type GetSecureRequestPayload = { + endpoint: string; + requestParams: unknown; +}; + +export type GetSecureRequestResponse = { + data: unknown; + statusText: string; + status: string; +}; + +export const getSecureRequest = (payload: GetSecureRequestPayload) => ({ + name: 'getSecureRequest', + payload, +}); diff --git a/packages/app-bridge-app/src/registries/api/index.ts b/packages/app-bridge-app/src/registries/api/index.ts new file mode 100644 index 000000000..f29edc722 --- /dev/null +++ b/packages/app-bridge-app/src/registries/api/index.ts @@ -0,0 +1,7 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './ApiMethodRegistry'; +export * from './CreateAsset'; +export * from './GetAssetResourceInformation'; +export * from './GetCurrentUser'; +export * from './GetSecureRequest'; diff --git a/packages/app-bridge-app/src/registries/commands.ts b/packages/app-bridge-app/src/registries/commands.ts new file mode 100644 index 000000000..89919daa8 --- /dev/null +++ b/packages/app-bridge-app/src/registries/commands.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export const openConnection = (): { name: 'openConnection' } => ({ name: 'openConnection' }); diff --git a/packages/app-bridge-app/src/registries/index.ts b/packages/app-bridge-app/src/registries/index.ts new file mode 100644 index 000000000..066256b32 --- /dev/null +++ b/packages/app-bridge-app/src/registries/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './api'; diff --git a/packages/app-bridge-app/src/setupTests.ts b/packages/app-bridge-app/src/setupTests.ts new file mode 100644 index 000000000..e4c931464 --- /dev/null +++ b/packages/app-bridge-app/src/setupTests.ts @@ -0,0 +1,13 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { configure } from '@testing-library/react'; +import { enableMapSet } from 'immer'; +import { beforeAll } from 'vitest'; + +enableMapSet(); + +globalThis.structuredClone = (data: unknown) => JSON.parse(JSON.stringify(data)); + +beforeAll(() => { + configure({ testIdAttribute: 'data-test-id' }); +}); diff --git a/packages/app-bridge-app/src/types/CrossDocumentMessageResponse.ts b/packages/app-bridge-app/src/types/CrossDocumentMessageResponse.ts new file mode 100644 index 000000000..0b171d6b0 --- /dev/null +++ b/packages/app-bridge-app/src/types/CrossDocumentMessageResponse.ts @@ -0,0 +1,10 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type Topic } from './Topic'; + +export type CrossDocumentMessageResponse = { + success: boolean; + topic: Topic; + token: string; + data?: T; +}; diff --git a/packages/app-bridge-app/src/types/Notify.ts b/packages/app-bridge-app/src/types/Notify.ts new file mode 100644 index 000000000..0b619a4f0 --- /dev/null +++ b/packages/app-bridge-app/src/types/Notify.ts @@ -0,0 +1,7 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export type NotifyOptions = { + origin?: string; +}; + +export type NotifyData> = T; diff --git a/packages/app-bridge-app/src/types/Topic.ts b/packages/app-bridge-app/src/types/Topic.ts new file mode 100644 index 000000000..9f19ed366 --- /dev/null +++ b/packages/app-bridge-app/src/types/Topic.ts @@ -0,0 +1,5 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export enum Topic { + Init = 'Init', +} diff --git a/packages/app-bridge-app/src/utilities/MessageBus.spec.ts b/packages/app-bridge-app/src/utilities/MessageBus.spec.ts new file mode 100644 index 000000000..7e1831429 --- /dev/null +++ b/packages/app-bridge-app/src/utilities/MessageBus.spec.ts @@ -0,0 +1,120 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it, vi } from 'vitest'; + +import { MessageBus } from './MessageBus'; + +describe('MessageBus', () => { + it('should be instantiable', () => { + const { port1 } = new MessageChannel(); + + const messageBus = new MessageBus(port1); + expect(messageBus).toBeInstanceOf(MessageBus); + }); + + it('should call postMessage from the MessageChannel on post', () => { + const postMessageMock = vi.fn(); + + class PortMock { + postMessage = postMessageMock; + onmessage = vi.fn(); + onmessageerror = vi.fn(); + } + + const messageBus = new MessageBus(new PortMock() as unknown as MessagePort); + messageBus.post({ operation: 'test' }); + expect(postMessageMock).toHaveBeenCalledTimes(1); + }); + + it('should return message from port2', async () => { + const channel = new MessageChannel(); + + const messageBus = new MessageBus(channel.port1); + + const testResponse = 'test-message'; + channel.port2.onmessage = (event) => { + const { token } = event.data; + channel.port2.postMessage({ message: testResponse, token }); + }; + const result = await messageBus.post({ operation: 'test' }); + + expect(result).toEqual(testResponse); + }); + + it('should trigger onmessage error on message sending error', async () => { + const channel = new MessageChannel(); + const messageBus = new MessageBus(channel.port1); + + channel.port1.postMessage = () => { + throw new Error('Simulated message sending error'); + }; + + await expect(() => messageBus.post({ operation: 'test' })).rejects.toThrow(); + }); + + it('should send a token with the channel', async () => { + const channel = new MessageChannel(); + const messageBus = new MessageBus(channel.port1); + + channel.port2.onmessage = (event) => { + expect(event.data.token).toBeDefined(); + }; + + messageBus.post({ operation: 'test' }); + }); + + it('should return a message with a token', async () => { + const channel = new MessageChannel(); + const messageBus = new MessageBus(channel.port1); + + channel.port2.onmessage = (event) => { + const { token } = event.data; + channel.port2.postMessage({ message: 'test-message', token }); + }; + + const response = await messageBus.post({ operation: 'test' }); + expect(response).toBe('test-message'); + }); + + it('should handle multiple messages with their tokens and return correct message', async () => { + const channel = new MessageChannel(); + const messageBus = new MessageBus(channel.port1); + + const message1 = 'test-message-1'; + const message2 = 'test-message-2'; + const message3 = 'test-message-3'; + + channel.port2.onmessage = (event) => { + const { token, message } = event.data; + if (message.operation === 'message1') { + setTimeout(() => { + channel.port2.postMessage({ message: message1, token }); + }, 1); + } else if (message.operation === 'message2') { + setTimeout(() => { + channel.port2.postMessage({ message: message2, token }); + }, 2); + } else if (message.operation === 'message3') { + channel.port2.postMessage({ message: message3, token }); + } + }; + + const response2 = await messageBus.post({ operation: 'message2' }); + const response1 = await messageBus.post({ operation: 'message1' }); + const response3 = await messageBus.post({ operation: 'message3' }); + + const allPromises = await Promise.all([ + messageBus.post({ operation: 'message3' }), + messageBus.post({ operation: 'message1' }), + messageBus.post({ operation: 'message2' }), + ]); + + expect(response1).toBe(message1); + expect(response2).toBe(message2); + expect(response3).toBe(message3); + + expect(allPromises.includes(message1)).toBe(true); + expect(allPromises.includes(message2)).toBe(true); + expect(allPromises.includes(message3)).toBe(true); + }); +}); diff --git a/packages/app-bridge-app/src/utilities/MessageBus.ts b/packages/app-bridge-app/src/utilities/MessageBus.ts new file mode 100644 index 000000000..9bc8a9355 --- /dev/null +++ b/packages/app-bridge-app/src/utilities/MessageBus.ts @@ -0,0 +1,50 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { InitializationError, TimeoutReachedError } from '../errors'; + +import { generateRandomString } from './hash'; +import { SUBSCRIBE_TIMEOUT } from './subscribe'; + +export interface IMessageBus { + post(message: { parameter: unknown }): unknown; +} + +export class MessageBus implements IMessageBus { + private messageBucket: { + message: unknown; + token: string; + resolve: (value: unknown) => void; + }[] = []; + + constructor(private port: MessagePort) { + this.port.onmessage = (event) => { + const { token } = event.data; + const messageIndex = this.messageBucket.findIndex((item) => item.token === token); + if (messageIndex > -1) { + const message = this.messageBucket.splice(messageIndex, 1)[0]; + if (message) { + message.resolve(event.data.message); + } + } + }; + } + + public post(message: unknown) { + return new Promise((resolve, reject) => { + const token = generateRandomString(); + + this.messageBucket.push({ message, resolve, token }); + this.port.postMessage({ message, token }); + + setTimeout(() => { + reject(new TimeoutReachedError('operation')); + }, SUBSCRIBE_TIMEOUT * 10); + }); + } +} + +export class ErrorMessageBus implements IMessageBus { + post() { + throw new InitializationError('First use await platformApp.dispatch({ name: "openConnection" })'); + } +} diff --git a/packages/app-bridge-app/src/utilities/hash.ts b/packages/app-bridge-app/src/utilities/hash.ts new file mode 100644 index 000000000..bcbceb84a --- /dev/null +++ b/packages/app-bridge-app/src/utilities/hash.ts @@ -0,0 +1,5 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export const generateRandomString = (length = 6): string => { + return Math.random().toString(20).substr(2, length); +}; diff --git a/packages/app-bridge-app/src/utilities/index.ts b/packages/app-bridge-app/src/utilities/index.ts new file mode 100644 index 000000000..23d6e918d --- /dev/null +++ b/packages/app-bridge-app/src/utilities/index.ts @@ -0,0 +1,5 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './hash'; +export * from './notify'; +export * from './subscribe'; diff --git a/packages/app-bridge-app/src/utilities/notify.ts b/packages/app-bridge-app/src/utilities/notify.ts new file mode 100644 index 000000000..796ce170f --- /dev/null +++ b/packages/app-bridge-app/src/utilities/notify.ts @@ -0,0 +1,15 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type NotifyData, type NotifyOptions } from '../types/Notify.ts'; + +export function notify(topic: string, token: string, data?: NotifyData, options?: NotifyOptions): void { + const parentWindow = window.top; + parentWindow?.postMessage( + { + topic, + token, + data, + }, + options?.origin || '*', + ); +} diff --git a/packages/app-bridge-app/src/utilities/queryParams.spec.ts b/packages/app-bridge-app/src/utilities/queryParams.spec.ts new file mode 100644 index 000000000..2052bc938 --- /dev/null +++ b/packages/app-bridge-app/src/utilities/queryParams.spec.ts @@ -0,0 +1,35 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; + +import { getQueryParameters } from './queryParams'; + +describe('queryParams', () => { + it('should return correct queryParams from url', () => { + expect(getQueryParameters('https://www.frontify.com?foo=bar&baz=qux')).toEqual({ foo: 'bar', baz: 'qux' }); + }); + + it('should return empty object if no queryParams are present', () => { + expect(getQueryParameters('https://www.frontify.com')).toEqual({}); + }); + + it('should return empty object if url is empty', () => { + expect(() => getQueryParameters('')).toThrowError('Validation failed. "" is not a valid url'); + }); + + it('should return empty object if url is undefined', () => { + expect(() => getQueryParameters(undefined as unknown as string)).toThrowError( + 'Validation failed. "undefined" is not a valid url', + ); + }); + + it('should return empty object if url is null', () => { + expect(() => getQueryParameters(null as unknown as string)).toThrowError( + 'Validation failed. "null" is not a valid url', + ); + }); + + it('should return objects of well formed query parameters', () => { + expect(getQueryParameters('https://www.frontify.com?foo=bar&baz')).toEqual({ foo: 'bar', baz: '' }); + }); +}); diff --git a/packages/app-bridge-app/src/utilities/queryParams.ts b/packages/app-bridge-app/src/utilities/queryParams.ts new file mode 100644 index 000000000..9a56ac377 --- /dev/null +++ b/packages/app-bridge-app/src/utilities/queryParams.ts @@ -0,0 +1,24 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { ValidationError } from '../errors'; + +export type QueryParams = { [key: string]: string }; + +export const getQueryParameters = (url: string): QueryParams => { + const paramsToObject = (entries: IterableIterator<[string, string]>) => { + const result: QueryParams = {}; + + for (const [key, value] of entries) { + result[key] = value; + } + + return result; + }; + + try { + const urlObject = new URL(url); + return paramsToObject(urlObject.searchParams.entries()); + } catch { + throw new ValidationError(`"${url}" is not a valid url`); + } +}; diff --git a/packages/app-bridge-app/src/utilities/subscribe.ts b/packages/app-bridge-app/src/utilities/subscribe.ts new file mode 100644 index 000000000..a12e18c75 --- /dev/null +++ b/packages/app-bridge-app/src/utilities/subscribe.ts @@ -0,0 +1,33 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { FetchError, TimeoutReachedError } from '../errors'; +import { type CrossDocumentMessageResponse } from '../types/CrossDocumentMessageResponse.ts'; +import { type Topic } from '../types/Topic.ts'; + +export type SubscribeOptions = { + timeout?: number; +}; + +export const SUBSCRIBE_TIMEOUT = 3 * 1000; + +export function subscribe(topic: Topic, token: string, options?: SubscribeOptions): Promise { + return new Promise((resolve, reject) => { + const subscribeResponseCallback = (event: MessageEvent) => { + const response: CrossDocumentMessageResponse = event.data; + + if (response.token === token && response.topic === topic && response.success) { + resolve((response.data || true)); + } else { + reject(new FetchError(topic)); + } + + window.removeEventListener('message', subscribeResponseCallback); + }; + + window.addEventListener('message', subscribeResponseCallback); + + setTimeout(() => { + reject(new TimeoutReachedError(topic)); + }, options?.timeout || SUBSCRIBE_TIMEOUT); + }); +} diff --git a/packages/app-bridge-app/src/window.d.ts b/packages/app-bridge-app/src/window.d.ts new file mode 100644 index 000000000..596d61878 --- /dev/null +++ b/packages/app-bridge-app/src/window.d.ts @@ -0,0 +1,11 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { AppBridgePlatformApp } from './AppBridgePlatformApp.ts'; + +declare global { + interface Window { + appBridgePlatformApp: AppBridgePlatformApp; + } +} + +export {}; diff --git a/packages/app-bridge-app/tsconfig.json b/packages/app-bridge-app/tsconfig.json new file mode 100644 index 000000000..798910eb2 --- /dev/null +++ b/packages/app-bridge-app/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2021", + "useDefineForClassFields": true, + "lib": ["ES2021", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "baseUrl": "." + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/packages/app-bridge-app/tsconfig.node.json b/packages/app-bridge-app/tsconfig.node.json new file mode 100644 index 000000000..71a3a257e --- /dev/null +++ b/packages/app-bridge-app/tsconfig.node.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "lib": ["ESNext"], + "target": "ESNext" + }, + "include": [".eslintrc.cjs", "vite.config.mts", "package.json"] +} diff --git a/packages/app-bridge-app/vite.config.mts b/packages/app-bridge-app/vite.config.mts new file mode 100644 index 000000000..77e1ad3da --- /dev/null +++ b/packages/app-bridge-app/vite.config.mts @@ -0,0 +1,33 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { defineConfig } from 'vite'; +import dts from 'vite-plugin-dts'; + +import { peerDependencies as peerDependenciesMap } from './package.json'; + +const peerDependencies = Object.keys(peerDependenciesMap); +export const globals = { + react: 'React', + 'react-dom': 'ReactDOM', +}; + +export default defineConfig({ + plugins: [dts({ insertTypesEntry: true, rollupTypes: true })], + build: { + lib: { + entry: { + index: './src/index.ts', + }, + name: 'app-bridge-app', + }, + sourcemap: true, + minify: true, + rollupOptions: { + external: [...peerDependencies], + }, + }, + test: { + environment: 'happy-dom', + css: true, + }, +}); diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 637d3fc70..67af9cec7 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -95,82 +95,88 @@ - # [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` +## 3.10.0 + +### Minor Changes + +- [#980](https://github.com/Frontify/brand-sdk/pull/980) [`bf9529d`](https://github.com/Frontify/brand-sdk/commit/bf9529d50ef1d31ad147b08d52009e2d2df6f289) Thanks [@bojangles-m](https://github.com/bojangles-m)! - feat: added additional prop `guideline_title` to the `GuidelineSearchResultApi`. + ## 3.9.2 ### Patch Changes -- [#950](https://github.com/Frontify/brand-sdk/pull/950) [`d938929`](https://github.com/Frontify/brand-sdk/commit/d9389295b856b93d73e5defdd2a347964e1b5377) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - fix: remove unused properties from `DocumentSectionApi` +- [#950](https://github.com/Frontify/brand-sdk/pull/950) [`d938929`](https://github.com/Frontify/brand-sdk/commit/d9389295b856b93d73e5defdd2a347964e1b5377) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - fix: remove unused properties from `DocumentSectionApi` ## 3.9.1 ### Patch Changes -- [#920](https://github.com/Frontify/brand-sdk/pull/920) [`c2477e7`](https://github.com/Frontify/brand-sdk/commit/c2477e76f7c221ae5435c783f3ef85ceb6295ca0) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(assetViewer): add isDownloadable option to asset viewer +- [#920](https://github.com/Frontify/brand-sdk/pull/920) [`c2477e7`](https://github.com/Frontify/brand-sdk/commit/c2477e76f7c221ae5435c783f3ef85ceb6295ca0) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(assetViewer): add isDownloadable option to asset viewer ## 3.9.0 ### Minor Changes -- [#921](https://github.com/Frontify/brand-sdk/pull/921) [`17af9f1`](https://github.com/Frontify/brand-sdk/commit/17af9f135a85b55f7e7757a112adf34125d03502) Thanks [@ragi96](https://github.com/ragi96)! - feat: add `ìsDownloadProtected` to the `Asset` +- [#921](https://github.com/Frontify/brand-sdk/pull/921) [`17af9f1`](https://github.com/Frontify/brand-sdk/commit/17af9f135a85b55f7e7757a112adf34125d03502) Thanks [@ragi96](https://github.com/ragi96)! - feat: add `ìsDownloadProtected` to the `Asset` ## 3.8.0 ### Minor Changes -- [#909](https://github.com/Frontify/brand-sdk/pull/909) [`14b9fdf`](https://github.com/Frontify/brand-sdk/commit/14b9fdfb5bc58b482350109d1eee1a8c4ff942d6) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(useAfterInsertion): A new hook to execute a callback after a block has been inserted, can be used to focus a specific element for faster editing. The callback is only executed when the third argument is true (default). This hook is only usable with instances of AppBridgeBlock. +- [#909](https://github.com/Frontify/brand-sdk/pull/909) [`14b9fdf`](https://github.com/Frontify/brand-sdk/commit/14b9fdfb5bc58b482350109d1eee1a8c4ff942d6) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(useAfterInsertion): A new hook to execute a callback after a block has been inserted, can be used to focus a specific element for faster editing. The callback is only executed when the third argument is true (default). This hook is only usable with instances of AppBridgeBlock. - ```jsx - const ExampleBlock = ({ appBridge }: BlockProps) => { - const buttonRef = useRef(null); - const [data, setData] = useState(null); - const hasData = data !== null; + ```jsx + const ExampleBlock = ({ appBridge }: BlockProps) => { + const buttonRef = useRef(null); + const [data, setData] = useState(null); + const hasData = data !== null; - useEffect(() => { - getAsyncData().then((data) => setData(data)); - }, []); + useEffect(() => { + getAsyncData().then((data) => setData(data)); + }, []); - useAfterInsertion(appBridge, () => buttonRef.current?.focus(), hasData); + useAfterInsertion(appBridge, () => buttonRef.current?.focus(), hasData); - return hasData ? - : -
Loading...
; - }; - ``` + return hasData ? + : +
Loading...
; + }; + ``` ## 3.7.0 ### Minor Changes -- [#912](https://github.com/Frontify/brand-sdk/pull/912) [`fa18d35`](https://github.com/Frontify/brand-sdk/commit/fa18d35a554f32d561d7ed33d3e2e5fa3fb90a89) Thanks [@bojangles-m](https://github.com/bojangles-m)! - feat: added additional prop `project_color_id` to the `GuidelineSearchResultApi`. +- [#912](https://github.com/Frontify/brand-sdk/pull/912) [`fa18d35`](https://github.com/Frontify/brand-sdk/commit/fa18d35a554f32d561d7ed33d3e2e5fa3fb90a89) Thanks [@bojangles-m](https://github.com/bojangles-m)! - feat: added additional prop `project_color_id` to the `GuidelineSearchResultApi`. ### Patch Changes -- [#913](https://github.com/Frontify/brand-sdk/pull/913) [`bf41e48`](https://github.com/Frontify/brand-sdk/commit/bf41e480d93b75084deee811099cc3ea094696fb) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds nullable `backgroundColor` to the `asset` +- [#913](https://github.com/Frontify/brand-sdk/pull/913) [`bf41e48`](https://github.com/Frontify/brand-sdk/commit/bf41e480d93b75084deee811099cc3ea094696fb) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds nullable `backgroundColor` to the `asset` ## 3.6.3 ### Patch Changes -- [#903](https://github.com/Frontify/brand-sdk/pull/903) [`b8c5bb7`](https://github.com/Frontify/brand-sdk/commit/b8c5bb7156a58f6fa020dd56fa1cb6a016440666) Thanks [@Kenny806](https://github.com/Kenny806)! - feat(AppBridgeTheme): add isSearchDialogOpen to context +- [#903](https://github.com/Frontify/brand-sdk/pull/903) [`b8c5bb7`](https://github.com/Frontify/brand-sdk/commit/b8c5bb7156a58f6fa020dd56fa1cb6a016440666) Thanks [@Kenny806](https://github.com/Kenny806)! - feat(AppBridgeTheme): add isSearchDialogOpen to context ## 3.6.2 ### Patch Changes -- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` ## 3.6.1 ### Patch Changes -- [#882](https://github.com/Frontify/brand-sdk/pull/882) [`f6897fb`](https://github.com/Frontify/brand-sdk/commit/f6897fb6b758c03053fcf88805f100c3c0b33d1e) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed - fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed +- [#882](https://github.com/Frontify/brand-sdk/pull/882) [`f6897fb`](https://github.com/Frontify/brand-sdk/commit/f6897fb6b758c03053fcf88805f100c3c0b33d1e) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed + fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed ## 3.6.0 ### Minor Changes -- [#871](https://github.com/Frontify/brand-sdk/pull/871) [`cc7532a`](https://github.com/Frontify/brand-sdk/commit/cc7532ae5a3803f12997887e9f1ca9993e9f8e7c) Thanks [@ryancarville](https://github.com/ryancarville)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` +- [#871](https://github.com/Frontify/brand-sdk/pull/871) [`cc7532a`](https://github.com/Frontify/brand-sdk/commit/cc7532ae5a3803f12997887e9f1ca9993e9f8e7c) Thanks [@ryancarville](https://github.com/ryancarville)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` ## 4.0.0-alpha.16 @@ -182,7 +188,7 @@ ### Patch Changes -- [#875](https://github.com/Frontify/brand-sdk/pull/875) [`d74dc90`](https://github.com/Frontify/brand-sdk/commit/d74dc90501cd0aac39f67a834014fd9c261abfb0) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(usePageTemplateSettings): returns also templateThemeSettings +- [#875](https://github.com/Frontify/brand-sdk/pull/875) [`d74dc90`](https://github.com/Frontify/brand-sdk/commit/d74dc90501cd0aac39f67a834014fd9c261abfb0) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(usePageTemplateSettings): returns also templateThemeSettings ## 4.0.0-alpha.15 @@ -194,7 +200,7 @@ ### Patch Changes -- [#868](https://github.com/Frontify/brand-sdk/pull/868) [`88fb3c3`](https://github.com/Frontify/brand-sdk/commit/88fb3c3b0235d9fc89c9a352273bacfaf53fdb0e) Thanks [@mike85](https://github.com/mike85)! - feat(AppBridgeTheme): add useDocumentNavigation hook +- [#868](https://github.com/Frontify/brand-sdk/pull/868) [`88fb3c3`](https://github.com/Frontify/brand-sdk/commit/88fb3c3b0235d9fc89c9a352273bacfaf53fdb0e) Thanks [@mike85](https://github.com/mike85)! - feat(AppBridgeTheme): add useDocumentNavigation hook ## 4.0.0-alpha.14 @@ -212,21 +218,21 @@ ### Patch Changes -- [#856](https://github.com/Frontify/brand-sdk/pull/856) [`b2060ff`](https://github.com/Frontify/brand-sdk/commit/b2060ff02448ca127c34d0745f363ff8bd06ec77) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeTheme): add usePortalNavigation hook +- [#856](https://github.com/Frontify/brand-sdk/pull/856) [`b2060ff`](https://github.com/Frontify/brand-sdk/commit/b2060ff02448ca127c34d0745f363ff8bd06ec77) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeTheme): add usePortalNavigation hook ## 3.5.6 ### Patch Changes -- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files +- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files -- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies +- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies ## 4.0.0-alpha.13 ### Patch Changes -- [#843](https://github.com/Frontify/brand-sdk/pull/843) [`3109e66`](https://github.com/Frontify/brand-sdk/commit/3109e66248fb9185c312d8170055452dce796bc4) Thanks [@julianiff](https://github.com/julianiff)! - chore: move up to v4 +- [#843](https://github.com/Frontify/brand-sdk/pull/843) [`3109e66`](https://github.com/Frontify/brand-sdk/commit/3109e66248fb9185c312d8170055452dce796bc4) Thanks [@julianiff](https://github.com/julianiff)! - chore: move up to v4 - [`0d9d0af`](https://github.com/Frontify/brand-sdk/commit/0d9d0afe4fc55b0e0c5b1e397aeaf77e7e8c4a69) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev @@ -262,51 +268,51 @@ ### Patch Changes -- [#821](https://github.com/Frontify/brand-sdk/pull/821) [`efde7a5`](https://github.com/Frontify/brand-sdk/commit/efde7a511b3d4fbbe17af5f0e41982d003743b35) Thanks [@imoutaharik](https://github.com/imoutaharik)! - feat(AppBridgePlatformApp): add the `proxyMethodCall` method +- [#821](https://github.com/Frontify/brand-sdk/pull/821) [`efde7a5`](https://github.com/Frontify/brand-sdk/commit/efde7a511b3d4fbbe17af5f0e41982d003743b35) Thanks [@imoutaharik](https://github.com/imoutaharik)! - feat(AppBridgePlatformApp): add the `proxyMethodCall` method ## 3.5.3 ### Patch Changes -- [#834](https://github.com/Frontify/brand-sdk/pull/834) [`1612681`](https://github.com/Frontify/brand-sdk/commit/1612681472c6eff8b732aed10c33d0ac83269b83) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: useTemplateAssets hook to return themeAsset as well +- [#834](https://github.com/Frontify/brand-sdk/pull/834) [`1612681`](https://github.com/Frontify/brand-sdk/commit/1612681472c6eff8b732aed10c33d0ac83269b83) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: useTemplateAssets hook to return themeAsset as well ## 3.5.2 ### Patch Changes -- [#825](https://github.com/Frontify/brand-sdk/pull/825) [`8430626`](https://github.com/Frontify/brand-sdk/commit/8430626870f7fb139d2b10b4f1f26040be1c6bbc) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type +- [#825](https://github.com/Frontify/brand-sdk/pull/825) [`8430626`](https://github.com/Frontify/brand-sdk/commit/8430626870f7fb139d2b10b4f1f26040be1c6bbc) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type ## 3.5.1 ### Patch Changes -- [#818](https://github.com/Frontify/brand-sdk/pull/818) [`c25d717`](https://github.com/Frontify/brand-sdk/commit/c25d71757e44406c065c65374d1d800a6d5694de) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(useBlockSettings): `setBlockSettings` has been wrapped in a `useCallback` so it can be safely used as a dependency in react hooks. The following code will no longer cause unexpected rerenders. +- [#818](https://github.com/Frontify/brand-sdk/pull/818) [`c25d717`](https://github.com/Frontify/brand-sdk/commit/c25d71757e44406c065c65374d1d800a6d5694de) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(useBlockSettings): `setBlockSettings` has been wrapped in a `useCallback` so it can be safely used as a dependency in react hooks. The following code will no longer cause unexpected rerenders. - ```jsx - const Component = () => { - const [blockSettings, setBlockSettings] = useBlockSettings(appBridge); + ```jsx + const Component = () => { + const [blockSettings, setBlockSettings] = useBlockSettings(appBridge); - useEffect(() => { - setBlockSettings({ ...blockSettings }); - }, [setBlockSettings]); - }; - ``` + useEffect(() => { + setBlockSettings({ ...blockSettings }); + }, [setBlockSettings]); + }; + ``` ## 3.5.0 ### Minor Changes -- [#807](https://github.com/Frontify/brand-sdk/pull/807) [`909e0f5`](https://github.com/Frontify/brand-sdk/commit/909e0f5ef98e7bd1da6b0d96e32fdcde74a87d8d) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme +- [#807](https://github.com/Frontify/brand-sdk/pull/807) [`909e0f5`](https://github.com/Frontify/brand-sdk/commit/909e0f5ef98e7bd1da6b0d96e32fdcde74a87d8d) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme ### Patch Changes -- [#806](https://github.com/Frontify/brand-sdk/pull/806) [`5115dfd`](https://github.com/Frontify/brand-sdk/commit/5115dfda65ce87e53a26831e05034534d50a05be) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests +- [#806](https://github.com/Frontify/brand-sdk/pull/806) [`5115dfd`](https://github.com/Frontify/brand-sdk/commit/5115dfda65ce87e53a26831e05034534d50a05be) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests ## 3.4.2 ### Patch Changes -- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages +- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages ## 4.0.0-alpha.8 @@ -320,15 +326,15 @@ ### Patch Changes -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM +- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM ## 3.4.0 ### Minor Changes -- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#775](https://github.com/Frontify/brand-sdk/pull/775) [`3837782`](https://github.com/Frontify/brand-sdk/commit/383778258e862fb4fef62bf33aa71db71727aca1) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.7 @@ -357,7 +363,7 @@ ### Patch Changes -- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [#769](https://github.com/Frontify/brand-sdk/pull/769) [`dde3283`](https://github.com/Frontify/brand-sdk/commit/dde328355d240a730ba6a6d465166c0ecc773548) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type ## 4.0.0-alpha.4 @@ -369,7 +375,7 @@ ### Patch Changes -- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 4.0.0-alpha.3 @@ -393,13 +399,13 @@ ### Minor Changes -- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#730](https://github.com/Frontify/brand-sdk/pull/730) [`816751c`](https://github.com/Frontify/brand-sdk/commit/816751c66476dc85af09364344de23f8b5f68483) Thanks [@hochreutenerl](https://github.com/hochreutenerl)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 3.2.0 ### Minor Changes -- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context +- [#731](https://github.com/Frontify/brand-sdk/pull/731) [`b9c4fc4`](https://github.com/Frontify/brand-sdk/commit/b9c4fc4fddacabb988ceb0cbe125c1793a697e19) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add theme template context to appBridgeThemes context ## 4.0.0-alpha.0 @@ -411,52 +417,52 @@ ### Minor Changes -- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. - You will need to update the import paths in your tests: +- [#714](https://github.com/Frontify/brand-sdk/pull/714) [`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Split the testing utilities out of the main bundle, so they don't end up in production builds. + You will need to update the import paths in your tests: - ```git - - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; - + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; - ``` + ```git + - import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge'; + + import { AssetDummy, withAppBridgeBlockStubs } from '@frontify/app-bridge/testing'; + ``` ## 3.0.4 ### Patch Changes -- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json +- [#713](https://github.com/Frontify/brand-sdk/pull/713) [`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add typing for package.json ## 3.0.3 ### Patch Changes -- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order +- [#711](https://github.com/Frontify/brand-sdk/pull/711) [`6672186`](https://github.com/Frontify/brand-sdk/commit/6672186580907a4ef74870696bb3720da1390f30) Thanks [@julianiff](https://github.com/julianiff)! - refactor: change variable order ## 3.0.2 ### Patch Changes -- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions +- [#680](https://github.com/Frontify/brand-sdk/pull/680) [`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d) Thanks [@ragi96](https://github.com/ragi96)! - chore: replace usage of deprecated appBridgeBlock functions ## 3.0.1 ### Patch Changes -- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings +- [`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change Theme Settings to be Theme Template Settings ## 3.0.0 ### Major Changes -- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release +- [#620](https://github.com/Frontify/brand-sdk/pull/620) [`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929) Thanks [@ragi96](https://github.com/ragi96)! - chore: stable version release ## 3.0.0-beta.32 ### Patch Changes -- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions +- [`3205f68`](https://github.com/Frontify/brand-sdk/commit/3205f682dbe0080dd2a00abee5e785f87d014f0d) Thanks [@GoranRibic](https://github.com/GoranRibic)! - Added more guideline actions ## 3.0.0-beta.31 ### Minor Changes -- Add Brandportal link +- Add Brandportal link diff --git a/packages/app-bridge/src/tests/GuidelineSearchResultApiDummy.ts b/packages/app-bridge/src/tests/GuidelineSearchResultApiDummy.ts index 9e7bea909..b22f5085f 100644 --- a/packages/app-bridge/src/tests/GuidelineSearchResultApiDummy.ts +++ b/packages/app-bridge/src/tests/GuidelineSearchResultApiDummy.ts @@ -16,6 +16,7 @@ export class GuidelineSearchResultApiDummy { document_id: 1, document_slug: 'document-slug', document_title: 'Document Title', + guideline_title: 'Guideline Title', portal_id: 1, portal_token: 'portal-token', section_id: null, diff --git a/packages/app-bridge/src/types/GuidelineSearchResult.ts b/packages/app-bridge/src/types/GuidelineSearchResult.ts index efe8f70ce..3b39d72e9 100644 --- a/packages/app-bridge/src/types/GuidelineSearchResult.ts +++ b/packages/app-bridge/src/types/GuidelineSearchResult.ts @@ -22,6 +22,7 @@ export type GuidelineSearchResultApi = { document_id: number; document_slug: string; document_title: string; + guideline_title: string; portal_id: number; portal_token: string | null; section_id: string | null; diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 92a03c434..75e856aec 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,383 +1,401 @@ # @frontify/frontify-cli +## 5.7.2 + +### Patch Changes + +- [#989](https://github.com/Frontify/brand-sdk/pull/989) [`9155ed9`](https://github.com/Frontify/brand-sdk/commit/9155ed91c27c1aa6830600d8cf8003be46fddd20) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(templates): add tailwind preset to template + +## 5.7.1 + +### Patch Changes + +- [#968](https://github.com/Frontify/brand-sdk/pull/968) [`6d0c3dd`](https://github.com/Frontify/brand-sdk/commit/6d0c3dd22ffdf15d2c04b8fb6a57cef65e3f0001) Thanks [@julianiff](https://github.com/julianiff)! - chore: update templates + +## 5.7.0 + +### Minor Changes + +- [#955](https://github.com/Frontify/brand-sdk/pull/955) [`739a7a5`](https://github.com/Frontify/brand-sdk/commit/739a7a51515b78f2732d486673c824166369fcfc) Thanks [@julianiff](https://github.com/julianiff)! - feat: add additional build step for platform Apps to also serve settings while in development mode + ## 5.6.19 ### Patch Changes -- [#945](https://github.com/Frontify/brand-sdk/pull/945) [`c095277`](https://github.com/Frontify/brand-sdk/commit/c0952770c001fb1ea4dc20996ff3c90ec2499d73) Thanks [@julianiff](https://github.com/julianiff)! - feat: add new property allowedHosts to manifest +- [#945](https://github.com/Frontify/brand-sdk/pull/945) [`c095277`](https://github.com/Frontify/brand-sdk/commit/c0952770c001fb1ea4dc20996ff3c90ec2499d73) Thanks [@julianiff](https://github.com/julianiff)! - feat: add new property allowedHosts to manifest -- [#943](https://github.com/Frontify/brand-sdk/pull/943) [`0814fc2`](https://github.com/Frontify/brand-sdk/commit/0814fc2aefbb69074a119a59ae3f16c1d8f8afd0) Thanks [@julianiff](https://github.com/julianiff)! - chore: bump dependency `@frontify/frontify-cli` to `^5.6.19`, `@frontify/fondue` to `^12.1.2`and `@frontify/app-bridge` to `4.0.0-alpha.29` for the templates . +- [#943](https://github.com/Frontify/brand-sdk/pull/943) [`0814fc2`](https://github.com/Frontify/brand-sdk/commit/0814fc2aefbb69074a119a59ae3f16c1d8f8afd0) Thanks [@julianiff](https://github.com/julianiff)! - chore: bump dependency `@frontify/frontify-cli` to `^5.6.19`, `@frontify/fondue` to `^12.1.2`and `@frontify/app-bridge` to `4.0.0-alpha.29` for the templates . ## 5.6.18 ### Patch Changes -- [#931](https://github.com/Frontify/brand-sdk/pull/931) [`a005421`](https://github.com/Frontify/brand-sdk/commit/a00542163dce5b4034af362bbc6aeb8e2ba86474) Thanks [@julianiff](https://github.com/julianiff)! - fix: change regex to be more restrictive +- [#931](https://github.com/Frontify/brand-sdk/pull/931) [`a005421`](https://github.com/Frontify/brand-sdk/commit/a00542163dce5b4034af362bbc6aeb8e2ba86474) Thanks [@julianiff](https://github.com/julianiff)! - fix: change regex to be more restrictive -- [#935](https://github.com/Frontify/brand-sdk/pull/935) [`3ca09bb`](https://github.com/Frontify/brand-sdk/commit/3ca09bb3b248a0ce27f49e8548821626ff609410) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - fix: add `@type/node` in the platform app templates +- [#935](https://github.com/Frontify/brand-sdk/pull/935) [`3ca09bb`](https://github.com/Frontify/brand-sdk/commit/3ca09bb3b248a0ce27f49e8548821626ff609410) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - fix: add `@type/node` in the platform app templates -- [#936](https://github.com/Frontify/brand-sdk/pull/936) [`b90ad75`](https://github.com/Frontify/brand-sdk/commit/b90ad75b7f196456358476f17a35e0c0959a788d) Thanks [@julianiff](https://github.com/julianiff)! - chore: Limit secret length +- [#936](https://github.com/Frontify/brand-sdk/pull/936) [`b90ad75`](https://github.com/Frontify/brand-sdk/commit/b90ad75b7f196456358476f17a35e0c0959a788d) Thanks [@julianiff](https://github.com/julianiff)! - chore: Limit secret length ## 5.6.17 ### Patch Changes -- [#907](https://github.com/Frontify/brand-sdk/pull/907) [`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump `@frontify/fondue` to `12.0.10` +- [#907](https://github.com/Frontify/brand-sdk/pull/907) [`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump `@frontify/fondue` to `12.0.10` ## 5.6.16 ### Patch Changes -- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` ## 5.6.15 ### Patch Changes -- [#890](https://github.com/Frontify/brand-sdk/pull/890) [`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.7` +- [#890](https://github.com/Frontify/brand-sdk/pull/890) [`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.7` ## 5.6.14 ### Patch Changes -- [#862](https://github.com/Frontify/brand-sdk/pull/862) [`d6f716d`](https://github.com/Frontify/brand-sdk/commit/d6f716d759841e9fa5f0cc08526f65fb210f557e) Thanks [@julianiff](https://github.com/julianiff)! - feat: add secret and endpoint restrictions +- [#862](https://github.com/Frontify/brand-sdk/pull/862) [`d6f716d`](https://github.com/Frontify/brand-sdk/commit/d6f716d759841e9fa5f0cc08526f65fb210f557e) Thanks [@julianiff](https://github.com/julianiff)! - feat: add secret and endpoint restrictions ## 5.6.13 ### Patch Changes -- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update dependencies in CLI and templates +- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update dependencies in CLI and templates -- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files +- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files -- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: add `type: module` for ESM +- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: add `type: module` for ESM -- [#857](https://github.com/Frontify/brand-sdk/pull/857) [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.0-beta.427` +- [#857](https://github.com/Frontify/brand-sdk/pull/857) [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.0-beta.427` -- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies +- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies ## 5.6.12 ### Patch Changes -- [#846](https://github.com/Frontify/brand-sdk/pull/846) [`137605b`](https://github.com/Frontify/brand-sdk/commit/137605b4600bf2b8dbb1cc3921cef8f948936704) Thanks [@julianiff](https://github.com/julianiff)! - fix: update naming to fit network endpoints naming +- [#846](https://github.com/Frontify/brand-sdk/pull/846) [`137605b`](https://github.com/Frontify/brand-sdk/commit/137605b4600bf2b8dbb1cc3921cef8f948936704) Thanks [@julianiff](https://github.com/julianiff)! - fix: update naming to fit network endpoints naming ## 5.6.11 ### Patch Changes -- [#827](https://github.com/Frontify/brand-sdk/pull/827) [`f3a7dc2`](https://github.com/Frontify/brand-sdk/commit/f3a7dc24090fec27ee2d5a780131bc1a2feb2d24) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds validator for the proxyNetworkCall +- [#827](https://github.com/Frontify/brand-sdk/pull/827) [`f3a7dc2`](https://github.com/Frontify/brand-sdk/commit/f3a7dc24090fec27ee2d5a780131bc1a2feb2d24) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds validator for the proxyNetworkCall ## 5.6.10 ### Patch Changes -- [#812](https://github.com/Frontify/brand-sdk/pull/812) [`67b5ca1`](https://github.com/Frontify/brand-sdk/commit/67b5ca134b86ccddd0d2ab8a36b5b08261a4d9b3) Thanks [@julianiff](https://github.com/julianiff)! - feat: add manifest secret key validator +- [#812](https://github.com/Frontify/brand-sdk/pull/812) [`67b5ca1`](https://github.com/Frontify/brand-sdk/commit/67b5ca134b86ccddd0d2ab8a36b5b08261a4d9b3) Thanks [@julianiff](https://github.com/julianiff)! - feat: add manifest secret key validator -- [#815](https://github.com/Frontify/brand-sdk/pull/815) [`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue to 12.0.0-beta.415 +- [#815](https://github.com/Frontify/brand-sdk/pull/815) [`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue to 12.0.0-beta.415 ## 5.6.9 ### Patch Changes -- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to ^12.0.0-beta.411 +- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to ^12.0.0-beta.411 ## 5.6.8 ### Patch Changes -- [#800](https://github.com/Frontify/brand-sdk/pull/800) [`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to 12.0.0-beta.410 +- [#800](https://github.com/Frontify/brand-sdk/pull/800) [`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to 12.0.0-beta.410 ## 5.6.7 ### Patch Changes -- [#796](https://github.com/Frontify/brand-sdk/pull/796) [`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue +- [#796](https://github.com/Frontify/brand-sdk/pull/796) [`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue ## 5.6.6 ### Patch Changes -- [#750](https://github.com/Frontify/brand-sdk/pull/750) [`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue +- [#750](https://github.com/Frontify/brand-sdk/pull/750) [`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue ## 5.6.5 ### Patch Changes -- [`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix broken build produced in `dev` branch +- [`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix broken build produced in `dev` branch ## 5.6.4 ### Patch Changes -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#788](https://github.com/Frontify/brand-sdk/pull/788) [`db5151e`](https://github.com/Frontify/brand-sdk/commit/db5151eccbee139fc086ad7d34b7ef832095bb2f) Thanks [@ragi96](https://github.com/ragi96)! - Fix: adjust templates +- [#788](https://github.com/Frontify/brand-sdk/pull/788) [`db5151e`](https://github.com/Frontify/brand-sdk/commit/db5151eccbee139fc086ad7d34b7ef832095bb2f) Thanks [@ragi96](https://github.com/ragi96)! - Fix: adjust templates ## 5.6.3 ### Patch Changes -- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.6.2 ### Patch Changes -- [#760](https://github.com/Frontify/brand-sdk/pull/760) [`6493f06`](https://github.com/Frontify/brand-sdk/commit/6493f06b934f2ea815fadda3aaf74a7ee76ec60c) Thanks [@julianiff](https://github.com/julianiff)! - chore: update sample apps +- [#760](https://github.com/Frontify/brand-sdk/pull/760) [`6493f06`](https://github.com/Frontify/brand-sdk/commit/6493f06b934f2ea815fadda3aaf74a7ee76ec60c) Thanks [@julianiff](https://github.com/julianiff)! - chore: update sample apps ## 5.6.1 ### Patch Changes -- [#732](https://github.com/Frontify/brand-sdk/pull/732) [`8395479`](https://github.com/Frontify/brand-sdk/commit/83954793533e63a67ee02cb94f24095cd4119e36) Thanks [@julianiff](https://github.com/julianiff)! - feat: adjust serve and compile command +- [#732](https://github.com/Frontify/brand-sdk/pull/732) [`8395479`](https://github.com/Frontify/brand-sdk/commit/83954793533e63a67ee02cb94f24095cd4119e36) Thanks [@julianiff](https://github.com/julianiff)! - feat: adjust serve and compile command ## 5.6.0 ### Minor Changes -- [#724](https://github.com/Frontify/brand-sdk/pull/724) [`b6c65ba`](https://github.com/Frontify/brand-sdk/commit/b6c65bafa134d8de07fbf990f27462f3005ea744) Thanks [@floriangaechter](https://github.com/floriangaechter)! - feat: add the option to deploy with token - - `-i, --instance `: url of the Frontify instance - - `-t, --token `: the access token to authenticate with the Frontify instance +- [#724](https://github.com/Frontify/brand-sdk/pull/724) [`b6c65ba`](https://github.com/Frontify/brand-sdk/commit/b6c65bafa134d8de07fbf990f27462f3005ea744) Thanks [@floriangaechter](https://github.com/floriangaechter)! - feat: add the option to deploy with token + - `-i, --instance `: url of the Frontify instance + - `-t, --token `: the access token to authenticate with the Frontify instance ### Patch Changes -- [#719](https://github.com/Frontify/brand-sdk/pull/719) [`4a676dc`](https://github.com/Frontify/brand-sdk/commit/4a676dcccc90dd56ba63cc75b97eea03b534177e) Thanks [@floriangaechter](https://github.com/floriangaechter)! - fix: Path handling on windows +- [#719](https://github.com/Frontify/brand-sdk/pull/719) [`4a676dc`](https://github.com/Frontify/brand-sdk/commit/4a676dcccc90dd56ba63cc75b97eea03b534177e) Thanks [@floriangaechter](https://github.com/floriangaechter)! - fix: Path handling on windows -- [#726](https://github.com/Frontify/brand-sdk/pull/726) [`935c591`](https://github.com/Frontify/brand-sdk/commit/935c591b83865e3a4eaa5bab472861d6a5656a4d) Thanks [@ragi96](https://github.com/ragi96)! - fix: nested template literals and also some typos +- [#726](https://github.com/Frontify/brand-sdk/pull/726) [`935c591`](https://github.com/Frontify/brand-sdk/commit/935c591b83865e3a4eaa5bab472861d6a5656a4d) Thanks [@ragi96](https://github.com/ragi96)! - fix: nested template literals and also some typos ## 5.5.9 ### Patch Changes -- [#701](https://github.com/Frontify/brand-sdk/pull/701) [`a84f65c`](https://github.com/Frontify/brand-sdk/commit/a84f65c16678bf8fae07416971e0262aadd230dc) Thanks [@julianiff](https://github.com/julianiff)! - feat: add title to manifest.json of platform Apps +- [#701](https://github.com/Frontify/brand-sdk/pull/701) [`a84f65c`](https://github.com/Frontify/brand-sdk/commit/a84f65c16678bf8fae07416971e0262aadd230dc) Thanks [@julianiff](https://github.com/julianiff)! - feat: add title to manifest.json of platform Apps ## 5.5.8 ### Patch Changes -- [#676](https://github.com/Frontify/brand-sdk/pull/676) [`e6e2abd`](https://github.com/Frontify/brand-sdk/commit/e6e2abd0050c81ebff79e282e23c1fcf45ee4aea) Thanks [@julianiff](https://github.com/julianiff)! - chore: update cli version of templates +- [#676](https://github.com/Frontify/brand-sdk/pull/676) [`e6e2abd`](https://github.com/Frontify/brand-sdk/commit/e6e2abd0050c81ebff79e282e23c1fcf45ee4aea) Thanks [@julianiff](https://github.com/julianiff)! - chore: update cli version of templates ## 5.5.7 ### Patch Changes -- [#674](https://github.com/Frontify/brand-sdk/pull/674) [`d7385ea`](https://github.com/Frontify/brand-sdk/commit/d7385ea6ff2c034e47b5d9727eae73600522bb2f) Thanks [@julianiff](https://github.com/julianiff)! - chore: update manifest +- [#674](https://github.com/Frontify/brand-sdk/pull/674) [`d7385ea`](https://github.com/Frontify/brand-sdk/commit/d7385ea6ff2c034e47b5d9727eae73600522bb2f) Thanks [@julianiff](https://github.com/julianiff)! - chore: update manifest -- [#670](https://github.com/Frontify/brand-sdk/pull/670) [`f28dd67`](https://github.com/Frontify/brand-sdk/commit/f28dd67dd2d5058a10e8420252ba213a1d3d62cd) Thanks [@julianiff](https://github.com/julianiff)! - chore: add optional to assetAction +- [#670](https://github.com/Frontify/brand-sdk/pull/670) [`f28dd67`](https://github.com/Frontify/brand-sdk/commit/f28dd67dd2d5058a10e8420252ba213a1d3d62cd) Thanks [@julianiff](https://github.com/julianiff)! - chore: add optional to assetAction -- [#673](https://github.com/Frontify/brand-sdk/pull/673) [`1bd6524`](https://github.com/Frontify/brand-sdk/commit/1bd6524a9b7b9021d1173c16f984c7944a628867) Thanks [@julianiff](https://github.com/julianiff)! - chore: change naming to workspace +- [#673](https://github.com/Frontify/brand-sdk/pull/673) [`1bd6524`](https://github.com/Frontify/brand-sdk/commit/1bd6524a9b7b9021d1173c16f984c7944a628867) Thanks [@julianiff](https://github.com/julianiff)! - chore: change naming to workspace ## 5.5.6 ### Patch Changes -- [#668](https://github.com/Frontify/brand-sdk/pull/668) [`e8bf308`](https://github.com/Frontify/brand-sdk/commit/e8bf308262124356a0d13b8bf251fb208de7f19f) Thanks [@julianiff](https://github.com/julianiff)! - chore: fix css and js filename exchanged +- [#668](https://github.com/Frontify/brand-sdk/pull/668) [`e8bf308`](https://github.com/Frontify/brand-sdk/commit/e8bf308262124356a0d13b8bf251fb208de7f19f) Thanks [@julianiff](https://github.com/julianiff)! - chore: fix css and js filename exchanged ## 5.5.5 ### Patch Changes -- [#664](https://github.com/Frontify/brand-sdk/pull/664) [`5cf77ee`](https://github.com/Frontify/brand-sdk/commit/5cf77eefad4fceea1baed23cd5750c4d95fd91cc) Thanks [@julianiff](https://github.com/julianiff)! - fix: platform app compiler +- [#664](https://github.com/Frontify/brand-sdk/pull/664) [`5cf77ee`](https://github.com/Frontify/brand-sdk/commit/5cf77eefad4fceea1baed23cd5750c4d95fd91cc) Thanks [@julianiff](https://github.com/julianiff)! - fix: platform app compiler ## 5.5.4 ### Patch Changes -- [#645](https://github.com/Frontify/brand-sdk/pull/645) [`0e34987`](https://github.com/Frontify/brand-sdk/commit/0e349871c67c8c5260c6456af1af2aec58ab6e2e) Thanks [@julianiff](https://github.com/julianiff)! - feat: add manifest verification step +- [#645](https://github.com/Frontify/brand-sdk/pull/645) [`0e34987`](https://github.com/Frontify/brand-sdk/commit/0e349871c67c8c5260c6456af1af2aec58ab6e2e) Thanks [@julianiff](https://github.com/julianiff)! - feat: add manifest verification step ## 5.5.3 ### Patch Changes -- [#642](https://github.com/Frontify/brand-sdk/pull/642) [`913e697`](https://github.com/Frontify/brand-sdk/commit/913e697be0e37e734cf098cca41803ee86307cbf) Thanks [@julianiff](https://github.com/julianiff)! - chore: move into common create folder +- [#642](https://github.com/Frontify/brand-sdk/pull/642) [`913e697`](https://github.com/Frontify/brand-sdk/commit/913e697be0e37e734cf098cca41803ee86307cbf) Thanks [@julianiff](https://github.com/julianiff)! - chore: move into common create folder ## 5.5.2 ### Patch Changes -- [#621](https://github.com/Frontify/brand-sdk/pull/621) [`e86676e`](https://github.com/Frontify/brand-sdk/commit/e86676e98cb8e1f35205804069b2a9a8ac1f69aa) Thanks [@ragi96](https://github.com/ragi96)! - chore: templates using stable version of app-bridge +- [#621](https://github.com/Frontify/brand-sdk/pull/621) [`e86676e`](https://github.com/Frontify/brand-sdk/commit/e86676e98cb8e1f35205804069b2a9a8ac1f69aa) Thanks [@ragi96](https://github.com/ragi96)! - chore: templates using stable version of app-bridge -- [#636](https://github.com/Frontify/brand-sdk/pull/636) [`1dbc48e`](https://github.com/Frontify/brand-sdk/commit/1dbc48e9b8421a893d0b2da8f17ac201abc2b113) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#636](https://github.com/Frontify/brand-sdk/pull/636) [`1dbc48e`](https://github.com/Frontify/brand-sdk/commit/1dbc48e9b8421a893d0b2da8f17ac201abc2b113) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.5.1 ### Patch Changes -- [#630](https://github.com/Frontify/brand-sdk/pull/630) [`d5635c2`](https://github.com/Frontify/brand-sdk/commit/d5635c2fa24a39d09e62708674888de27dade290) Thanks [@floriangaechter](https://github.com/floriangaechter)! - Show more information when login fails +- [#630](https://github.com/Frontify/brand-sdk/pull/630) [`d5635c2`](https://github.com/Frontify/brand-sdk/commit/d5635c2fa24a39d09e62708674888de27dade290) Thanks [@floriangaechter](https://github.com/floriangaechter)! - Show more information when login fails ## 5.5.0 ### Minor Changes -- [#623](https://github.com/Frontify/brand-sdk/pull/623) [`22b7a0b`](https://github.com/Frontify/brand-sdk/commit/22b7a0b007981fac0c1b3d838a644232acc21e85) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds the appBridge version to the block bundle +- [#623](https://github.com/Frontify/brand-sdk/pull/623) [`22b7a0b`](https://github.com/Frontify/brand-sdk/commit/22b7a0b007981fac0c1b3d838a644232acc21e85) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds the appBridge version to the block bundle ## 5.4.1 ### Patch Changes -- [#607](https://github.com/Frontify/brand-sdk/pull/607) [`e3ea35d`](https://github.com/Frontify/brand-sdk/commit/e3ea35dc3c3433b5d09712463534b681eef718f9) Thanks [@julianiff](https://github.com/julianiff)! - chore: update app-bridge version +- [#607](https://github.com/Frontify/brand-sdk/pull/607) [`e3ea35d`](https://github.com/Frontify/brand-sdk/commit/e3ea35dc3c3433b5d09712463534b681eef718f9) Thanks [@julianiff](https://github.com/julianiff)! - chore: update app-bridge version -- [#610](https://github.com/Frontify/brand-sdk/pull/610) [`49958e4`](https://github.com/Frontify/brand-sdk/commit/49958e4c1fb7caef2ea2394fef0966625f6e4804) Thanks [@ragi96](https://github.com/ragi96)! - fix: never ignore manifest.json on deploy" +- [#610](https://github.com/Frontify/brand-sdk/pull/610) [`49958e4`](https://github.com/Frontify/brand-sdk/commit/49958e4c1fb7caef2ea2394fef0966625f6e4804) Thanks [@ragi96](https://github.com/ragi96)! - fix: never ignore manifest.json on deploy" -- [#608](https://github.com/Frontify/brand-sdk/pull/608) [`6659cbf`](https://github.com/Frontify/brand-sdk/commit/6659cbff1e6d84809cb6637e08b2960ad7d4d315) Thanks [@julianiff](https://github.com/julianiff)! - chore: update frontify-cli in templates +- [#608](https://github.com/Frontify/brand-sdk/pull/608) [`6659cbf`](https://github.com/Frontify/brand-sdk/commit/6659cbff1e6d84809cb6637e08b2960ad7d4d315) Thanks [@julianiff](https://github.com/julianiff)! - chore: update frontify-cli in templates -- [#614](https://github.com/Frontify/brand-sdk/pull/614) [`b571cbf`](https://github.com/Frontify/brand-sdk/commit/b571cbf86a0d0ebc47aead17bb51edc407dd3196) Thanks [@floriangaechter](https://github.com/floriangaechter)! - Fix: move eslint ignore information to .eslintrc and fix a typo +- [#614](https://github.com/Frontify/brand-sdk/pull/614) [`b571cbf`](https://github.com/Frontify/brand-sdk/commit/b571cbf86a0d0ebc47aead17bb51edc407dd3196) Thanks [@floriangaechter](https://github.com/floriangaechter)! - Fix: move eslint ignore information to .eslintrc and fix a typo -- [#615](https://github.com/Frontify/brand-sdk/pull/615) [`d68cabc`](https://github.com/Frontify/brand-sdk/commit/d68cabcc7a6b95ad5194ae374779d1ef10dcc130) Thanks [@julianiff](https://github.com/julianiff)! - chore: change from dev to serve +- [#615](https://github.com/Frontify/brand-sdk/pull/615) [`d68cabc`](https://github.com/Frontify/brand-sdk/commit/d68cabcc7a6b95ad5194ae374779d1ef10dcc130) Thanks [@julianiff](https://github.com/julianiff)! - chore: change from dev to serve ## 5.4.0 ### Minor Changes -- [#600](https://github.com/Frontify/brand-sdk/pull/600) [`4599249`](https://github.com/Frontify/brand-sdk/commit/45992493e16789688e3447fe0cf1d2feb9f3fcea) Thanks [@julianiff](https://github.com/julianiff)! - feat: add platform App cli deploy command +- [#600](https://github.com/Frontify/brand-sdk/pull/600) [`4599249`](https://github.com/Frontify/brand-sdk/commit/45992493e16789688e3447fe0cf1d2feb9f3fcea) Thanks [@julianiff](https://github.com/julianiff)! - feat: add platform App cli deploy command -- [#596](https://github.com/Frontify/brand-sdk/pull/596) [`e3a7a94`](https://github.com/Frontify/brand-sdk/commit/e3a7a942a5c77e57525c7f232156811b9115cbf4) Thanks [@julianiff](https://github.com/julianiff)! - feat: add platform app to CLI and add a sample-app +- [#596](https://github.com/Frontify/brand-sdk/pull/596) [`e3a7a94`](https://github.com/Frontify/brand-sdk/commit/e3a7a942a5c77e57525c7f232156811b9115cbf4) Thanks [@julianiff](https://github.com/julianiff)! - feat: add platform app to CLI and add a sample-app ### Patch Changes -- [#604](https://github.com/Frontify/brand-sdk/pull/604) [`bec5207`](https://github.com/Frontify/brand-sdk/commit/bec52077c52a9c03648274e5ea3caf2eac5f7c45) Thanks [@floriangaechter](https://github.com/floriangaechter)! - Fix deprecated dropdown types in templates +- [#604](https://github.com/Frontify/brand-sdk/pull/604) [`bec5207`](https://github.com/Frontify/brand-sdk/commit/bec52077c52a9c03648274e5ea3caf2eac5f7c45) Thanks [@floriangaechter](https://github.com/floriangaechter)! - Fix deprecated dropdown types in templates -- [#599](https://github.com/Frontify/brand-sdk/pull/599) [`6332d4e`](https://github.com/Frontify/brand-sdk/commit/6332d4e64cd30ac1dbb38c24cf14cebfc5e62820) Thanks [@julianiff](https://github.com/julianiff)! - feat: add flag to run serve as a platformApp +- [#599](https://github.com/Frontify/brand-sdk/pull/599) [`6332d4e`](https://github.com/Frontify/brand-sdk/commit/6332d4e64cd30ac1dbb38c24cf14cebfc5e62820) Thanks [@julianiff](https://github.com/julianiff)! - feat: add flag to run serve as a platformApp ## 5.3.17 ### Patch Changes -- [`3c1e752`](https://github.com/Frontify/brand-sdk/commit/3c1e7520967c5055c944a0f1afe6b41e046dcdd8) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`3c1e752`](https://github.com/Frontify/brand-sdk/commit/3c1e7520967c5055c944a0f1afe6b41e046dcdd8) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.16 ### Patch Changes -- [`22684e3`](https://github.com/Frontify/brand-sdk/commit/22684e358fd2b073790a0959606c6a5d44e35c4e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`22684e3`](https://github.com/Frontify/brand-sdk/commit/22684e358fd2b073790a0959606c6a5d44e35c4e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.15 ### Patch Changes -- [`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.14 ### Patch Changes -- [`af7d797`](https://github.com/Frontify/brand-sdk/commit/af7d797e12d66c8af60df70c8bf9505f3459cd1f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`af7d797`](https://github.com/Frontify/brand-sdk/commit/af7d797e12d66c8af60df70c8bf9505f3459cd1f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#467](https://github.com/Frontify/brand-sdk/pull/467) [`7f4717f`](https://github.com/Frontify/brand-sdk/commit/7f4717f62cbb3a0904dfd91fcf809bb14e1e8b20) Thanks [@floriangaechter](https://github.com/floriangaechter)! - feat: add info message in case browser window couldn't be opened automatically +- [#467](https://github.com/Frontify/brand-sdk/pull/467) [`7f4717f`](https://github.com/Frontify/brand-sdk/commit/7f4717f62cbb3a0904dfd91fcf809bb14e1e8b20) Thanks [@floriangaechter](https://github.com/floriangaechter)! - feat: add info message in case browser window couldn't be opened automatically ## 5.3.13 ### Patch Changes -- [`4b9ea6a`](https://github.com/Frontify/brand-sdk/commit/4b9ea6a27b787d0282eb11dc70cece1c597f8b65) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update templates dependencies +- [`4b9ea6a`](https://github.com/Frontify/brand-sdk/commit/4b9ea6a27b787d0282eb11dc70cece1c597f8b65) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update templates dependencies ## 5.3.12 ### Patch Changes -- [`caecf03`](https://github.com/Frontify/brand-sdk/commit/caecf03ffd52a07cd1c846f4a99f9736fef76b76) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`caecf03`](https://github.com/Frontify/brand-sdk/commit/caecf03ffd52a07cd1c846f4a99f9736fef76b76) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`4c88c23`](https://github.com/Frontify/brand-sdk/commit/4c88c23a261e3cd1837cdd70d9e96062ce1a5a4b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies in templates +- [`4c88c23`](https://github.com/Frontify/brand-sdk/commit/4c88c23a261e3cd1837cdd70d9e96062ce1a5a4b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies in templates -- [`2179c95`](https://github.com/Frontify/brand-sdk/commit/2179c95e787d89d1e75671d394b4dde61673638d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update App Bridge +- [`2179c95`](https://github.com/Frontify/brand-sdk/commit/2179c95e787d89d1e75671d394b4dde61673638d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update App Bridge ## 5.3.11 ### Patch Changes -- [`57228f5`](https://github.com/Frontify/brand-sdk/commit/57228f557c20f2a2a291ecabc560a8e7c1bb0e41) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update deps +- [`57228f5`](https://github.com/Frontify/brand-sdk/commit/57228f557c20f2a2a291ecabc560a8e7c1bb0e41) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update deps ## 5.3.10 ### Patch Changes -- [`c38bfa8`](https://github.com/Frontify/brand-sdk/commit/c38bfa8fa65170ea56d078abcfecbadc2167b39b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update deps template and remove lock file +- [`c38bfa8`](https://github.com/Frontify/brand-sdk/commit/c38bfa8fa65170ea56d078abcfecbadc2167b39b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update deps template and remove lock file -- [`c38bfa8`](https://github.com/Frontify/brand-sdk/commit/c38bfa8fa65170ea56d078abcfecbadc2167b39b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix use correct package name +- [`c38bfa8`](https://github.com/Frontify/brand-sdk/commit/c38bfa8fa65170ea56d078abcfecbadc2167b39b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix use correct package name -- [`440e463`](https://github.com/Frontify/brand-sdk/commit/440e463326fb55dabc28dba346e1ec2e6ee03450) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`440e463`](https://github.com/Frontify/brand-sdk/commit/440e463326fb55dabc28dba346e1ec2e6ee03450) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.9 ### Patch Changes -- [`f6fcc6e`](https://github.com/Frontify/brand-sdk/commit/f6fcc6ec3a4bd56ae8c43718079d5d78dc755a9f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`f6fcc6e`](https://github.com/Frontify/brand-sdk/commit/f6fcc6ec3a4bd56ae8c43718079d5d78dc755a9f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`bc9c16c`](https://github.com/Frontify/brand-sdk/commit/bc9c16c69ca26eb8c87edd6eeb559fc050d52a31) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Typos in errors +- [`bc9c16c`](https://github.com/Frontify/brand-sdk/commit/bc9c16c69ca26eb8c87edd6eeb559fc050d52a31) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Typos in errors -- [`f0efea8`](https://github.com/Frontify/brand-sdk/commit/f0efea87d161f9e6cda668399d4bd7420303fe5a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Error message when deploying and not logged in +- [`f0efea8`](https://github.com/Frontify/brand-sdk/commit/f0efea87d161f9e6cda668399d4bd7420303fe5a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Error message when deploying and not logged in ## 5.3.8 ### Patch Changes -- [`b334c60`](https://github.com/Frontify/brand-sdk/commit/b334c60c33900a65739686d5c581c36fbcfe8498) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b334c60`](https://github.com/Frontify/brand-sdk/commit/b334c60c33900a65739686d5c581c36fbcfe8498) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.7 ### Patch Changes -- [`787f147`](https://github.com/Frontify/brand-sdk/commit/787f147fa56ad16c53da68061632936d6756276e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update `vite-plugin-externals` because of broken exports +- [`787f147`](https://github.com/Frontify/brand-sdk/commit/787f147fa56ad16c53da68061632936d6756276e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update `vite-plugin-externals` because of broken exports -- [#335](https://github.com/Frontify/brand-sdk/pull/335) [`8d692d1`](https://github.com/Frontify/brand-sdk/commit/8d692d16594f4c2fcd2c5db6dd71c2b6946eecb7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix path issue on Windows when deploying the app +- [#335](https://github.com/Frontify/brand-sdk/pull/335) [`8d692d1`](https://github.com/Frontify/brand-sdk/commit/8d692d16594f4c2fcd2c5db6dd71c2b6946eecb7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix path issue on Windows when deploying the app -- [`10b2d28`](https://github.com/Frontify/brand-sdk/commit/10b2d2875170c57c5f8bdc155a1589ef4e1a57fd) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Improve Http Client error handling +- [`10b2d28`](https://github.com/Frontify/brand-sdk/commit/10b2d2875170c57c5f8bdc155a1589ef4e1a57fd) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Improve Http Client error handling -- [`528f81b`](https://github.com/Frontify/brand-sdk/commit/528f81bc02c36157c7e77971102f68e31f27714b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove extra css module file in tailwind template +- [`528f81b`](https://github.com/Frontify/brand-sdk/commit/528f81bc02c36157c7e77971102f68e31f27714b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove extra css module file in tailwind template -- [`c1275a6`](https://github.com/Frontify/brand-sdk/commit/c1275a6c094cb0ca3567d7fd7e3d01e258f2b09f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update errors messages +- [`c1275a6`](https://github.com/Frontify/brand-sdk/commit/c1275a6c094cb0ca3567d7fd7e3d01e258f2b09f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update errors messages -- [`60627d5`](https://github.com/Frontify/brand-sdk/commit/60627d51ce04645b3df72d8b0dff281675bd6508) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Use module resolution `node16` +- [`60627d5`](https://github.com/Frontify/brand-sdk/commit/60627d51ce04645b3df72d8b0dff281675bd6508) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Use module resolution `node16` -- [`0198626`](https://github.com/Frontify/brand-sdk/commit/0198626b9d8e49f31d861a05e15ca6e59d349b59) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`0198626`](https://github.com/Frontify/brand-sdk/commit/0198626b9d8e49f31d861a05e15ca6e59d349b59) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.6 ### Patch Changes -- [`b9a3f51`](https://github.com/Frontify/brand-sdk/commit/b9a3f513c957a0fd604d926d87fe221af2337681) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b9a3f51`](https://github.com/Frontify/brand-sdk/commit/b9a3f513c957a0fd604d926d87fe221af2337681) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`45653fa`](https://github.com/Frontify/brand-sdk/commit/45653faaf4168517ccbb3a9775bbf88871149692) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`45653fa`](https://github.com/Frontify/brand-sdk/commit/45653faaf4168517ccbb3a9775bbf88871149692) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.5 ### Patch Changes -- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.4 ### Patch Changes -- [#299](https://github.com/Frontify/brand-sdk/pull/299) [`187466a`](https://github.com/Frontify/brand-sdk/commit/187466ae50c08f4abf5d0b257951ccf083d6344d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update to Vite 4 and TS 4.9 +- [#299](https://github.com/Frontify/brand-sdk/pull/299) [`187466a`](https://github.com/Frontify/brand-sdk/commit/187466ae50c08f4abf5d0b257951ccf083d6344d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update to Vite 4 and TS 4.9 -- [`e47c574`](https://github.com/Frontify/brand-sdk/commit/e47c5747ab1041a62dc880fa92436b8ab464bfef) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`e47c574`](https://github.com/Frontify/brand-sdk/commit/e47c5747ab1041a62dc880fa92436b8ab464bfef) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.3 ### Patch Changes -- [`4063217`](https://github.com/Frontify/brand-sdk/commit/4063217a946f0896f7dd3aacbc0b21f4c355b21c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`4063217`](https://github.com/Frontify/brand-sdk/commit/4063217a946f0896f7dd3aacbc0b21f4c355b21c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 5.3.2 ### Patch Changes -- [`6637b3d`](https://github.com/Frontify/brand-sdk/commit/6637b3d8ca27680007d8078095c72ae3b83660ae) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix `block create` command +- [`6637b3d`](https://github.com/Frontify/brand-sdk/commit/6637b3d8ca27680007d8078095c72ae3b83660ae) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix `block create` command -- [`a03d515`](https://github.com/Frontify/brand-sdk/commit/a03d515bef69d2f7aff64bc56bcdc89f3e90fcd9) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update templates dependencies +- [`a03d515`](https://github.com/Frontify/brand-sdk/commit/a03d515bef69d2f7aff64bc56bcdc89f3e90fcd9) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update templates dependencies ## 5.3.1 ### Patch Changes -- [`b3ded3b`](https://github.com/Frontify/brand-sdk/commit/b3ded3b5c3d9ea036008fb09bca96e89fdc94598) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Aligned templates to the same example +- [`b3ded3b`](https://github.com/Frontify/brand-sdk/commit/b3ded3b5c3d9ea036008fb09bca96e89fdc94598) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Aligned templates to the same example -- [`40e4285`](https://github.com/Frontify/brand-sdk/commit/40e428512b5eecd82a6d31adf40f5f53c0025994) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update templates package json +- [`40e4285`](https://github.com/Frontify/brand-sdk/commit/40e428512b5eecd82a6d31adf40f5f53c0025994) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update templates package json ## 5.3.0 ### Minor Changes -- [#274](https://github.com/Frontify/frontify-cli/pull/274) [`c0095fc`](https://github.com/Frontify/frontify-cli/commit/c0095fc46d5dd95e7fd91779be586756f3a7dc0e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add template to CLI creation +- [#274](https://github.com/Frontify/frontify-cli/pull/274) [`c0095fc`](https://github.com/Frontify/frontify-cli/commit/c0095fc46d5dd95e7fd91779be586756f3a7dc0e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add template to CLI creation diff --git a/packages/cli/package.json b/packages/cli/package.json index 5d3c50335..d8cd5609e 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/frontify-cli", "type": "module", - "version": "5.6.19", + "version": "5.7.2", "author": "Frontify Developers ", "repository": { "type": "git", @@ -36,6 +36,7 @@ "archiver": "^7.0.1", "cac": "^6.7.14", "conf": "^12.0.0", + "esbuild": "^0.21.5", "fast-glob": "^3.3.2", "fastify": "^4.26.2", "glob-to-regexp": "^0.4.1", diff --git a/packages/cli/src/commands/serve.ts b/packages/cli/src/commands/serve.ts index 738f8a816..08f3f5b60 100644 --- a/packages/cli/src/commands/serve.ts +++ b/packages/cli/src/commands/serve.ts @@ -1,6 +1,9 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ +import path from 'node:path'; + import react from '@vitejs/plugin-react'; +import * as esbuild from 'esbuild'; import { createServer } from 'vite'; import { viteExternalsPlugin } from 'vite-plugin-externals'; @@ -9,20 +12,52 @@ import { getAppBridgeVersion } from '../utils/appBridgeVersion'; import { Logger } from '../utils/logger'; class PlatformAppDevelopmentServer { - constructor(private readonly port: number) {} + constructor( + private readonly entryFilePath: string, + private readonly port: number, + ) {} async serve(): Promise { try { - const viteServer = await createServer({ + const settingsSchema = await esbuild.context({ + entryPoints: [this.entryFilePath], + outfile: './dist/dev-settings.js', + minify: true, + globalName: 'devSettings', + format: 'iife', + bundle: true, + loader: { + '.css': 'empty', + }, + }); + + const viteServerDev = await createServer({ root: process.cwd(), configFile: false, - plugins: [react()], define: { 'process.env.NODE_ENV': JSON.stringify('development'), }, + plugins: [ + react(), + { + name: 'prebuild-commands', + handleHotUpdate: ({ file, server }) => { + const relativeFilePath = path.relative(process.cwd(), file); + + if (relativeFilePath === 'src/settings.ts' || relativeFilePath === 'src/index.ts') { + // if the change is either in settings.ts or index.ts do a rebuild to load settings + settingsSchema.rebuild(); + server.restart(); + } + }, + buildStart: () => { + settingsSchema.rebuild(); + }, + }, + ], }); - const server = await viteServer.listen(this.port, true); + const server = await viteServerDev.listen(this.port, true); server.printUrls(); } catch (error) { console.error(error); @@ -115,9 +150,9 @@ export const createDevelopmentServer = async ( await developmentServer.serve(); }; -export const createDevelopmentServerForPlatformApp = async (port: number): Promise => { +export const createDevelopmentServerForPlatformApp = async (entryFilePath: string, port: number): Promise => { Logger.info('Starting the development server for Apps...'); - const developmentServer = new PlatformAppDevelopmentServer(port); + const developmentServer = new PlatformAppDevelopmentServer(entryFilePath, port); await developmentServer.serve(); }; diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 87fe42f29..2e684f594 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -88,7 +88,7 @@ cli.command('serve', 'serve the app locally') const appType = options.appType || manifest.appType; if (appType === 'platform-app') { - await createDevelopmentServerForPlatformApp(options.port); + await createDevelopmentServerForPlatformApp(options.entryPath, options.port); } else { await createDevelopmentServer(options.entryPath, options.port, options.allowExternal); } diff --git a/packages/cli/templates/content-block-tailwind/package.json b/packages/cli/templates/content-block-tailwind/package.json index e3a06b803..d83a50016 100644 --- a/packages/cli/templates/content-block-tailwind/package.json +++ b/packages/cli/templates/content-block-tailwind/package.json @@ -18,7 +18,7 @@ "devDependencies": { "@frontify/eslint-config-react": "^0.17.6", "@frontify/frontify-cli": "^5.6.19", - "@frontify/guideline-blocks-settings": "^0.34.9", + "@frontify/guideline-blocks-settings": "^0.35.1", "@types/react": "^18.2.74", "@types/react-dom": "^18.2.24", "autoprefixer": "^10.4.19", diff --git a/packages/cli/templates/content-block-tailwind/tailwind.config.ts b/packages/cli/templates/content-block-tailwind/tailwind.config.ts index 2df7a9aa0..d2a0f3df5 100644 --- a/packages/cli/templates/content-block-tailwind/tailwind.config.ts +++ b/packages/cli/templates/content-block-tailwind/tailwind.config.ts @@ -1,6 +1,7 @@ import { type Config } from 'tailwindcss'; export default { + presets: [require('@frontify/guideline-blocks-settings/tailwind')], content: ['src/**/*.{ts,tsx}'], prefix: 'tw-', corePlugins: { diff --git a/packages/cli/templates/platform-app-css-modules/.gitignore b/packages/cli/templates/platform-app-css-modules/.gitignore index bd5b1469f..22f2e90f5 100644 --- a/packages/cli/templates/platform-app-css-modules/.gitignore +++ b/packages/cli/templates/platform-app-css-modules/.gitignore @@ -19,3 +19,4 @@ dist-ssr *.njsproj *.sln *.sw? +.secret.json diff --git a/packages/cli/templates/platform-app-css-modules/.secret-example.json b/packages/cli/templates/platform-app-css-modules/.secret-example.json new file mode 100644 index 000000000..d5e413d24 --- /dev/null +++ b/packages/cli/templates/platform-app-css-modules/.secret-example.json @@ -0,0 +1,4 @@ +{ + "THIRD_PARTY_API_KEY": 1, + "__DONT_COMMIT_THIS_FILE_WITH_TOKENS__": true +} diff --git a/packages/cli/templates/platform-app-css-modules/index.html b/packages/cli/templates/platform-app-css-modules/index.html index afd3f34c8..f33a3f649 100644 --- a/packages/cli/templates/platform-app-css-modules/index.html +++ b/packages/cli/templates/platform-app-css-modules/index.html @@ -11,9 +11,16 @@ import module from '/src/index.ts'; import ReactDOM from 'react-dom/client'; import React from 'react'; + import { AppBridgePlatformApp } from '@frontify/app-bridge'; - const root = ReactDOM.createRoot(document.getElementById('root')); - root.render(React.createElement(module.app)); + const appBridge = new AppBridgePlatformApp(); + + appBridge.subscribe('Context.connected', () => { + const root = ReactDOM.createRoot(document.getElementById('root')); + root.render(React.createElement(module.app)); + }); + + appBridge.dispatch({ name: 'openConnection' }); diff --git a/packages/cli/templates/platform-app-css-modules/package.json b/packages/cli/templates/platform-app-css-modules/package.json index a0bdc7212..9f3a98720 100644 --- a/packages/cli/templates/platform-app-css-modules/package.json +++ b/packages/cli/templates/platform-app-css-modules/package.json @@ -11,7 +11,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@frontify/app-bridge": "4.0.0-alpha.29", + "@frontify/app-bridge": "4.0.0-alpha.31", "@frontify/fondue": "^12.1.2", "@frontify/platform-app": "^0.1.4", "react": "^18.3.1", @@ -19,7 +19,7 @@ }, "devDependencies": { "@frontify/eslint-config-react": "^0.17.6", - "@frontify/frontify-cli": "^5.6.19", + "@frontify/frontify-cli": "^5.7.0", "@types/node": "^20.12.12", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/packages/cli/templates/platform-app-css-modules/src/App.tsx b/packages/cli/templates/platform-app-css-modules/src/App.tsx index d0580b56c..9d3c6ee29 100644 --- a/packages/cli/templates/platform-app-css-modules/src/App.tsx +++ b/packages/cli/templates/platform-app-css-modules/src/App.tsx @@ -1,24 +1,14 @@ -import { type PlatformAppContext, usePlatformAppBridge } from '@frontify/app-bridge'; -import { useEffect, useState } from 'react'; +import { AppBridgePlatformApp } from '@frontify/app-bridge'; import style from './style.module.css'; export const App = () => { - const appBridge = usePlatformAppBridge(); - const [context, setContext] = useState(); - - useEffect(() => { - if (!appBridge) { - return; - } - - setContext(appBridge.context().get()); - }, [appBridge]); + const appBridge = new AppBridgePlatformApp(); return (
A Frontify Platform App in React with CSS Modules - Entrypoint: {context?.surface}. + Entrypoint: {appBridge.context().get().surface}.
); }; diff --git a/packages/cli/templates/platform-app-css/.gitignore b/packages/cli/templates/platform-app-css/.gitignore index bd5b1469f..22f2e90f5 100644 --- a/packages/cli/templates/platform-app-css/.gitignore +++ b/packages/cli/templates/platform-app-css/.gitignore @@ -19,3 +19,4 @@ dist-ssr *.njsproj *.sln *.sw? +.secret.json diff --git a/packages/cli/templates/platform-app-css/.secret-example.json b/packages/cli/templates/platform-app-css/.secret-example.json new file mode 100644 index 000000000..d5e413d24 --- /dev/null +++ b/packages/cli/templates/platform-app-css/.secret-example.json @@ -0,0 +1,4 @@ +{ + "THIRD_PARTY_API_KEY": 1, + "__DONT_COMMIT_THIS_FILE_WITH_TOKENS__": true +} diff --git a/packages/cli/templates/platform-app-css/index.html b/packages/cli/templates/platform-app-css/index.html index a6f04ed64..b0a725066 100644 --- a/packages/cli/templates/platform-app-css/index.html +++ b/packages/cli/templates/platform-app-css/index.html @@ -11,9 +11,16 @@ import module from '/src/index.ts'; import ReactDOM from 'react-dom/client'; import React from 'react'; + import { AppBridgePlatformApp } from '@frontify/app-bridge'; - const root = ReactDOM.createRoot(document.getElementById('root')); - root.render(React.createElement(module.app)); + const appBridge = new AppBridgePlatformApp(); + + appBridge.subscribe('Context.connected', () => { + const root = ReactDOM.createRoot(document.getElementById('root')); + root.render(React.createElement(module.app)); + }); + + appBridge.dispatch({ name: 'openConnection' }); diff --git a/packages/cli/templates/platform-app-css/package.json b/packages/cli/templates/platform-app-css/package.json index 90aefd06b..a7df212b4 100644 --- a/packages/cli/templates/platform-app-css/package.json +++ b/packages/cli/templates/platform-app-css/package.json @@ -11,7 +11,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@frontify/app-bridge": "4.0.0-alpha.29", + "@frontify/app-bridge": "4.0.0-alpha.31", "@frontify/fondue": "^12.1.2", "@frontify/platform-app": "^0.1.4", "react": "^18.3.1", @@ -19,7 +19,7 @@ }, "devDependencies": { "@frontify/eslint-config-react": "^0.17.6", - "@frontify/frontify-cli": "^5.6.19", + "@frontify/frontify-cli": "^5.7.0", "@types/node": "^20.12.12", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/packages/cli/templates/platform-app-css/src/App.tsx b/packages/cli/templates/platform-app-css/src/App.tsx index 6345e8624..ad484324a 100644 --- a/packages/cli/templates/platform-app-css/src/App.tsx +++ b/packages/cli/templates/platform-app-css/src/App.tsx @@ -1,22 +1,12 @@ -import { type PlatformAppContext, usePlatformAppBridge } from '@frontify/app-bridge'; -import { useEffect, useState } from 'react'; +import { AppBridgePlatformApp } from '@frontify/app-bridge'; export const App = () => { - const appBridge = usePlatformAppBridge(); - const [context, setContext] = useState(); - - useEffect(() => { - if (!appBridge) { - return; - } - - setContext(appBridge.context().get()); - }, [appBridge]); + const appBridge = new AppBridgePlatformApp(); return (
A Frontify Platform App in React with pure CSS - Entrypoint: {context?.surface}. + Entrypoint: {appBridge.context().get().surface}.
); }; diff --git a/packages/cli/templates/platform-app-tailwind/.gitignore b/packages/cli/templates/platform-app-tailwind/.gitignore index bd5b1469f..22f2e90f5 100644 --- a/packages/cli/templates/platform-app-tailwind/.gitignore +++ b/packages/cli/templates/platform-app-tailwind/.gitignore @@ -19,3 +19,4 @@ dist-ssr *.njsproj *.sln *.sw? +.secret.json diff --git a/packages/cli/templates/platform-app-tailwind/.secret-example.json b/packages/cli/templates/platform-app-tailwind/.secret-example.json new file mode 100644 index 000000000..d5e413d24 --- /dev/null +++ b/packages/cli/templates/platform-app-tailwind/.secret-example.json @@ -0,0 +1,4 @@ +{ + "THIRD_PARTY_API_KEY": 1, + "__DONT_COMMIT_THIS_FILE_WITH_TOKENS__": true +} diff --git a/packages/cli/templates/platform-app-tailwind/index.html b/packages/cli/templates/platform-app-tailwind/index.html index a6f04ed64..b0a725066 100644 --- a/packages/cli/templates/platform-app-tailwind/index.html +++ b/packages/cli/templates/platform-app-tailwind/index.html @@ -11,9 +11,16 @@ import module from '/src/index.ts'; import ReactDOM from 'react-dom/client'; import React from 'react'; + import { AppBridgePlatformApp } from '@frontify/app-bridge'; - const root = ReactDOM.createRoot(document.getElementById('root')); - root.render(React.createElement(module.app)); + const appBridge = new AppBridgePlatformApp(); + + appBridge.subscribe('Context.connected', () => { + const root = ReactDOM.createRoot(document.getElementById('root')); + root.render(React.createElement(module.app)); + }); + + appBridge.dispatch({ name: 'openConnection' }); diff --git a/packages/cli/templates/platform-app-tailwind/package.json b/packages/cli/templates/platform-app-tailwind/package.json index 519fe40ba..728200acf 100644 --- a/packages/cli/templates/platform-app-tailwind/package.json +++ b/packages/cli/templates/platform-app-tailwind/package.json @@ -11,7 +11,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@frontify/app-bridge": "4.0.0-alpha.29", + "@frontify/app-bridge": "4.0.0-alpha.31", "@frontify/fondue": "^12.1.2", "@frontify/platform-app": "^0.1.4", "react": "^18.3.1", @@ -19,7 +19,7 @@ }, "devDependencies": { "@frontify/eslint-config-react": "^0.17.6", - "@frontify/frontify-cli": "^5.6.19", + "@frontify/frontify-cli": "^5.7.0", "@types/node": "^20.12.12", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/packages/cli/templates/platform-app-tailwind/src/App.tsx b/packages/cli/templates/platform-app-tailwind/src/App.tsx index 8a1ac17f6..81965d575 100644 --- a/packages/cli/templates/platform-app-tailwind/src/App.tsx +++ b/packages/cli/templates/platform-app-tailwind/src/App.tsx @@ -1,24 +1,12 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type PlatformAppContext, usePlatformAppBridge } from '@frontify/app-bridge'; -import { useEffect, useState } from 'react'; +import { AppBridgePlatformApp } from '@frontify/app-bridge'; export const App = () => { - const appBridge = usePlatformAppBridge(); - const [context, setContext] = useState(); - - useEffect(() => { - if (!appBridge) { - return; - } - - setContext(appBridge.context().get()); - }, [appBridge]); + const appBridge = new AppBridgePlatformApp(); return (
A Frontify Platform App in React with tailwind. -

Entrypoint: {context?.surface}

. +

Entrypoint: {appBridge.context().get().surface}

.
); }; diff --git a/packages/guideline-blocks-settings/CHANGELOG.md b/packages/guideline-blocks-settings/CHANGELOG.md index 91a58e827..f63e45ca7 100644 --- a/packages/guideline-blocks-settings/CHANGELOG.md +++ b/packages/guideline-blocks-settings/CHANGELOG.md @@ -1,948 +1,963 @@ # @frontify/guideline-blocks-settings +## 0.36.0 + +### Minor Changes + +- [#984](https://github.com/Frontify/brand-sdk/pull/984) [`81319fd`](https://github.com/Frontify/brand-sdk/commit/81319fd5cd9aaad649c1d7ce41915c1706f3c769) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(RTE): add custom column break plugin + Use simply as: `new BreakAfterPlugin({ columns, gap })`, and the plugin will take care of responsivity using container queries. Don't forget to also supply columns and gap to the `RichTextEditor` component. + +### Patch Changes + +- [#976](https://github.com/Frontify/brand-sdk/pull/976) [`be18559`](https://github.com/Frontify/brand-sdk/commit/be18559f7e31e2ad738fd4c875d119f8c839fa4d) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue dependency to 12.1.8 + +- Updated dependencies [[`be18559`](https://github.com/Frontify/brand-sdk/commit/be18559f7e31e2ad738fd4c875d119f8c839fa4d)]: + - @frontify/sidebar-settings@0.9.18 + +## 0.35.1 + +### Patch Changes + +- [#952](https://github.com/Frontify/brand-sdk/pull/952) [`a0f07c9`](https://github.com/Frontify/brand-sdk/commit/a0f07c9077f7d1c766b6b78df1e7a5ce1babca82) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(\*): move `@tailwindcss/container-queries` to a public dependency + ## 0.35.0 ### Minor Changes -- [#949](https://github.com/Frontify/brand-sdk/pull/949) [`1d67cc1`](https://github.com/Frontify/brand-sdk/commit/1d67cc1f8e0cd5387b914d61d944e9756542a6e6) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(tailwind): introduce container queries - `@frontify/guideline-block-settings/tailwind` can now be used as a tailwind preset in your tailwind.config.ts file to enable container queries. On how to use them refer to tailwind documentation: https://github.com/tailwindlabs/tailwindcss-container-queries +- [#949](https://github.com/Frontify/brand-sdk/pull/949) [`1d67cc1`](https://github.com/Frontify/brand-sdk/commit/1d67cc1f8e0cd5387b914d61d944e9756542a6e6) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(tailwind): introduce container queries + `@frontify/guideline-block-settings/tailwind` can now be used as a tailwind preset in your tailwind.config.ts file to enable container queries. On how to use them refer to tailwind documentation: https://github.com/tailwindlabs/tailwindcss-container-queries ### Patch Changes -- [#948](https://github.com/Frontify/brand-sdk/pull/948) [`cc7f942`](https://github.com/Frontify/brand-sdk/commit/cc7f9427df1a3d8d621850adff4c3d59f2f8e308) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(RTE): on safari the first click is not recognized +- [#948](https://github.com/Frontify/brand-sdk/pull/948) [`cc7f942`](https://github.com/Frontify/brand-sdk/commit/cc7f9427df1a3d8d621850adff4c3d59f2f8e308) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(RTE): on safari the first click is not recognized -- Updated dependencies [[`7baceff`](https://github.com/Frontify/brand-sdk/commit/7baceffc87773e9f6a1e169aa45151b92c614cbc)]: - - @frontify/sidebar-settings@0.9.17 +- Updated dependencies [[`7baceff`](https://github.com/Frontify/brand-sdk/commit/7baceffc87773e9f6a1e169aa45151b92c614cbc)]: + - @frontify/sidebar-settings@0.9.17 ## 0.34.15 ### Patch Changes -- [#907](https://github.com/Frontify/brand-sdk/pull/907) [`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump `@frontify/fondue` to `12.0.10` +- [#907](https://github.com/Frontify/brand-sdk/pull/907) [`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump `@frontify/fondue` to `12.0.10` -- Updated dependencies [[`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8)]: - - @frontify/sidebar-settings@0.9.16 +- Updated dependencies [[`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8)]: + - @frontify/sidebar-settings@0.9.16 ## 0.34.14 ### Patch Changes -- [#901](https://github.com/Frontify/brand-sdk/pull/901) [`2bfb9f6`](https://github.com/Frontify/brand-sdk/commit/2bfb9f6f8028df00e571f87b4be288b579bf53ad) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(BlockItemWrapper): memoize BlockItemWrapper component +- [#901](https://github.com/Frontify/brand-sdk/pull/901) [`2bfb9f6`](https://github.com/Frontify/brand-sdk/commit/2bfb9f6f8028df00e571f87b4be288b579bf53ad) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(BlockItemWrapper): memoize BlockItemWrapper component ## 0.34.13 ### Patch Changes -- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` -- Updated dependencies [[`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d)]: - - @frontify/sidebar-settings@0.9.15 +- Updated dependencies [[`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d)]: + - @frontify/sidebar-settings@0.9.15 ## 0.34.12 ### Patch Changes -- [#890](https://github.com/Frontify/brand-sdk/pull/890) [`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.7` +- [#890](https://github.com/Frontify/brand-sdk/pull/890) [`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.7` -- Updated dependencies [[`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc)]: - - @frontify/sidebar-settings@0.9.14 +- Updated dependencies [[`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc)]: + - @frontify/sidebar-settings@0.9.14 ## 0.34.11 ### Patch Changes -- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files +- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files -- [#857](https://github.com/Frontify/brand-sdk/pull/857) [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.0-beta.427` +- [#857](https://github.com/Frontify/brand-sdk/pull/857) [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.0-beta.427` -- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies +- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies -- Updated dependencies [[`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab), [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be), [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c)]: - - @frontify/sidebar-settings@0.9.13 +- Updated dependencies [[`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab), [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be), [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c)]: + - @frontify/sidebar-settings@0.9.13 ## 0.34.10 ### Patch Changes -- [#852](https://github.com/Frontify/brand-sdk/pull/852) [`28f5ec2`](https://github.com/Frontify/brand-sdk/commit/28f5ec282a14bd22871b84570c00630ba07dfa14) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(BlockItemWrapper): hide toolbar segment if there are no items +- [#852](https://github.com/Frontify/brand-sdk/pull/852) [`28f5ec2`](https://github.com/Frontify/brand-sdk/commit/28f5ec282a14bd22871b84570c00630ba07dfa14) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(BlockItemWrapper): hide toolbar segment if there are no items ## 0.34.9 ### Patch Changes -- [#848](https://github.com/Frontify/brand-sdk/pull/848) [`68533d1`](https://github.com/Frontify/brand-sdk/commit/68533d15490c0ac313f43b68472dfa44bea8b5c6) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix: border settings does not add px automatically +- [#848](https://github.com/Frontify/brand-sdk/pull/848) [`68533d1`](https://github.com/Frontify/brand-sdk/commit/68533d15490c0ac313f43b68472dfa44bea8b5c6) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix: border settings does not add px automatically ## 0.34.8 ### Patch Changes -- [#842](https://github.com/Frontify/brand-sdk/pull/842) [`0a86be7`](https://github.com/Frontify/brand-sdk/commit/0a86be761b5d3283d275d11dc8ba684821d8c17d) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(LinkSelector): Internal section links will now not be shown if they have an unreadable title, such as an empty string. +- [#842](https://github.com/Frontify/brand-sdk/pull/842) [`0a86be7`](https://github.com/Frontify/brand-sdk/commit/0a86be761b5d3283d275d11dc8ba684821d8c17d) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(LinkSelector): Internal section links will now not be shown if they have an unreadable title, such as an empty string. ## 0.34.7 ### Patch Changes -- Updated dependencies [[`b116dec`](https://github.com/Frontify/brand-sdk/commit/b116decf09a486d5c25e8f9cf9e4213cd2c65d3c)]: - - @frontify/sidebar-settings@0.9.12 +- Updated dependencies [[`b116dec`](https://github.com/Frontify/brand-sdk/commit/b116decf09a486d5c25e8f9cf9e4213cd2c65d3c)]: + - @frontify/sidebar-settings@0.9.12 ## 0.34.6 ### Patch Changes -- [#822](https://github.com/Frontify/brand-sdk/pull/822) [`b8ca543`](https://github.com/Frontify/brand-sdk/commit/b8ca54328becb5a084833bbdfdb3a7a2c9ea3d09) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(RichTextEditor): always reset page leave when text changes. This fixes an issue introduced in v0.34.5. +- [#822](https://github.com/Frontify/brand-sdk/pull/822) [`b8ca543`](https://github.com/Frontify/brand-sdk/commit/b8ca54328becb5a084833bbdfdb3a7a2c9ea3d09) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(RichTextEditor): always reset page leave when text changes. This fixes an issue introduced in v0.34.5. -- [#823](https://github.com/Frontify/brand-sdk/pull/823) [`a7a39ba`](https://github.com/Frontify/brand-sdk/commit/a7a39ba8d6de66bc56da497d043d73b860aa77b6) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(RichTextEditor): Reset `hasEnteredViewport` state every time view mode is entered +- [#823](https://github.com/Frontify/brand-sdk/pull/823) [`a7a39ba`](https://github.com/Frontify/brand-sdk/commit/a7a39ba8d6de66bc56da497d043d73b860aa77b6) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(RichTextEditor): Reset `hasEnteredViewport` state every time view mode is entered ## 0.34.5 ### Patch Changes -- [#817](https://github.com/Frontify/brand-sdk/pull/817) [`7307201`](https://github.com/Frontify/brand-sdk/commit/7307201f42889938c2a68664abebbc1da21ae9e4) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(RichTextEditor): using the new `useIsInViewport` hook the RichTextEditor will now only be initialized once the component enters the viewport. +- [#817](https://github.com/Frontify/brand-sdk/pull/817) [`7307201`](https://github.com/Frontify/brand-sdk/commit/7307201f42889938c2a68664abebbc1da21ae9e4) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(RichTextEditor): using the new `useIsInViewport` hook the RichTextEditor will now only be initialized once the component enters the viewport. ## 0.34.4 ### Patch Changes -- [#815](https://github.com/Frontify/brand-sdk/pull/815) [`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue to 12.0.0-beta.415 +- [#815](https://github.com/Frontify/brand-sdk/pull/815) [`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue to 12.0.0-beta.415 -- Updated dependencies [[`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f)]: - - @frontify/sidebar-settings@0.9.11 +- Updated dependencies [[`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f)]: + - @frontify/sidebar-settings@0.9.11 ## 0.34.3 ### Patch Changes -- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(RichTextEditor): replace outer-most modal element with `FloatingModalWrapper`. +- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat(RichTextEditor): replace outer-most modal element with `FloatingModalWrapper`. -- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to ^12.0.0-beta.411 +- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to ^12.0.0-beta.411 -- Updated dependencies [[`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1)]: - - @frontify/sidebar-settings@0.9.10 +- Updated dependencies [[`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1)]: + - @frontify/sidebar-settings@0.9.10 ## 0.34.2 ### Patch Changes -- [#800](https://github.com/Frontify/brand-sdk/pull/800) [`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to 12.0.0-beta.410 +- [#800](https://github.com/Frontify/brand-sdk/pull/800) [`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to 12.0.0-beta.410 -- [#801](https://github.com/Frontify/brand-sdk/pull/801) [`51d5537`](https://github.com/Frontify/brand-sdk/commit/51d55375a86547f1036c4c892da97f6cb64b1e88) Thanks [@SamCreasey](https://github.com/SamCreasey)! - perf(RichTextEditor): Stabilize props to avoid unneccessary rerenders. +- [#801](https://github.com/Frontify/brand-sdk/pull/801) [`51d5537`](https://github.com/Frontify/brand-sdk/commit/51d55375a86547f1036c4c892da97f6cb64b1e88) Thanks [@SamCreasey](https://github.com/SamCreasey)! - perf(RichTextEditor): Stabilize props to avoid unneccessary rerenders. -- Updated dependencies [[`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c)]: - - @frontify/sidebar-settings@0.9.9 +- Updated dependencies [[`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c)]: + - @frontify/sidebar-settings@0.9.9 ## 0.34.1 ### Patch Changes -- [#796](https://github.com/Frontify/brand-sdk/pull/796) [`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue +- [#796](https://github.com/Frontify/brand-sdk/pull/796) [`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue -- Updated dependencies [[`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce)]: - - @frontify/sidebar-settings@0.9.8 +- Updated dependencies [[`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce)]: + - @frontify/sidebar-settings@0.9.8 ## 0.34.0 ### Minor Changes -- [#750](https://github.com/Frontify/brand-sdk/pull/750) [`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(\*): update fondue which comes with plate v30 +- [#750](https://github.com/Frontify/brand-sdk/pull/750) [`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(\*): update fondue which comes with plate v30 - @udecode/plate libraries are no longer used as a direct dependency, instead all required parts are now imported from @frontify/fondue + @udecode/plate libraries are no longer used as a direct dependency, instead all required parts are now imported from @frontify/fondue ### Patch Changes -- Updated dependencies [[`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32)]: - - @frontify/sidebar-settings@0.9.7 +- Updated dependencies [[`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32)]: + - @frontify/sidebar-settings@0.9.7 ## 0.33.5 ### Patch Changes -- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages +- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages -- Updated dependencies [[`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d)]: - - @frontify/sidebar-settings@0.9.6 +- Updated dependencies [[`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d)]: + - @frontify/sidebar-settings@0.9.6 ## 0.33.4 ### Patch Changes -- [`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix broken build produced in `dev` branch +- [`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix broken build produced in `dev` branch -- Updated dependencies [[`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00)]: - - @frontify/sidebar-settings@0.9.5 +- Updated dependencies [[`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00)]: + - @frontify/sidebar-settings@0.9.5 ## 0.33.3 ### Patch Changes -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM +- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM -- Updated dependencies [[`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7), [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a), [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7)]: - - @frontify/sidebar-settings@0.9.4 +- Updated dependencies [[`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7), [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a), [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7)]: + - @frontify/sidebar-settings@0.9.4 ## 0.33.2 ### Patch Changes -- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- Updated dependencies [[`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6)]: - - @frontify/sidebar-settings@0.9.3 +- Updated dependencies [[`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6)]: + - @frontify/sidebar-settings@0.9.3 ## 0.33.1 ### Patch Changes -- [#764](https://github.com/Frontify/brand-sdk/pull/764) [`ecd13ce`](https://github.com/Frontify/brand-sdk/commit/ecd13ced94615a5b9fd0d5d0ae5ff726930c556f) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(Toolbar): export `ToolbarFlyoutMenu` component and `ToolbarFlyoutMenuItem` type +- [#764](https://github.com/Frontify/brand-sdk/pull/764) [`ecd13ce`](https://github.com/Frontify/brand-sdk/commit/ecd13ced94615a5b9fd0d5d0ae5ff726930c556f) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(Toolbar): export `ToolbarFlyoutMenu` component and `ToolbarFlyoutMenuItem` type ## 0.33.0 ### Minor Changes -- [#756](https://github.com/Frontify/brand-sdk/pull/756) [`dc4b57d`](https://github.com/Frontify/brand-sdk/commit/dc4b57d698e037cac4d6eca75e45f2ef65e96b47) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - feat(Toolbar): extend `items` to include `menu` and `flyout` type. Each `item` must now contain a `type` prop (`"dragHandle"`, `"button"`, `"flyout"`, `"menu"`). The `flyoutItems` prop has been removed as any item in the items array can now be a flyout. This change is also reflected in the `BlockItemWrapper`, where `toolbarFlyoutItems` has now been removed. - - Migration Example: - - ```jsx - , - draggableProps, - setActivatorNodeRef, - }, - { - icon: , - tooltip: "Delete Item", - onClick: onRemoveSelf, - }, - ]} - flyoutItems={[ - [ - { - title: "Delete", - icon: , - onClick, - }, - ], - ]} - /> - ``` - - The above component should now be written as: - - ```jsx - , - draggableProps, - setActivatorNodeRef, - }, - { - type: "button", - icon: , - tooltip: "Delete Item", - onClick: onRemoveSelf, - }, - { - type: "menu", - items: [ - { - title: "Delete", - icon: , - onClick, - }, - ], - flyoutId: "special-menu", - }, - ]} - /> - ``` - - Full "Flyout as a toolbar button" example: - - ```jsx - const FlyoutFooterWithCloseButton = ({ flyoutId }) => { - // The flyout footer can close the flyout by accessing the flyout context - const { onOpenChange } = useMultiFlyoutState(flyoutId); - - return ; - }; - - const ExampleToolbar = () => { - const [openFlyoutIds, setOpenFlyoutIds] = useState([]); +- [#756](https://github.com/Frontify/brand-sdk/pull/756) [`dc4b57d`](https://github.com/Frontify/brand-sdk/commit/dc4b57d698e037cac4d6eca75e45f2ef65e96b47) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - feat(Toolbar): extend `items` to include `menu` and `flyout` type. Each `item` must now contain a `type` prop (`"dragHandle"`, `"button"`, `"flyout"`, `"menu"`). The `flyoutItems` prop has been removed as any item in the items array can now be a flyout. This change is also reflected in the `BlockItemWrapper`, where `toolbarFlyoutItems` has now been removed. - return ( - - , - tooltip: "Move To", - content:
Content
, - flyoutHeader:
Fixed Header
, - flyoutFooter: , - flyoutId: "move", + icon: , + draggableProps, + setActivatorNodeRef, }, - ]} - /> -
- ); - }; - ``` + { + icon: , + tooltip: 'Delete Item', + onClick: onRemoveSelf, + }, + ]} + flyoutItems={[ + [ + { + title: 'Delete', + icon: , + onClick, + }, + ], + ]} + /> + ``` -### Patch Changes + The above component should now be written as: -- Updated dependencies [[`7f57867`](https://github.com/Frontify/brand-sdk/commit/7f57867274c7ba21a0a1ab5ecc46852d559d968d)]: - - @frontify/sidebar-settings@0.9.2 + ```jsx + , + draggableProps, + setActivatorNodeRef, + }, + { + type: 'button', + icon: , + tooltip: 'Delete Item', + onClick: onRemoveSelf, + }, + { + type: 'menu', + items: [ + { + title: 'Delete', + icon: , + onClick, + }, + ], + flyoutId: 'special-menu', + }, + ]} + /> + ``` + + Full "Flyout as a toolbar button" example: + + ```jsx + const FlyoutFooterWithCloseButton = ({ flyoutId }) => { + // The flyout footer can close the flyout by accessing the flyout context + const { onOpenChange } = useMultiFlyoutState(flyoutId); + + return ; + }; + + const ExampleToolbar = () => { + const [openFlyoutIds, setOpenFlyoutIds] = useState([]); + + return ( + + , + tooltip: 'Move To', + content:
Content
, + flyoutHeader:
Fixed Header
, + flyoutFooter: , + flyoutId: 'move', + }, + ]} + /> +
+ ); + }; + ``` + +### Patch Changes + +- Updated dependencies [[`7f57867`](https://github.com/Frontify/brand-sdk/commit/7f57867274c7ba21a0a1ab5ecc46852d559d968d)]: + - @frontify/sidebar-settings@0.9.2 ## 0.32.2 ### Patch Changes -- [#749](https://github.com/Frontify/brand-sdk/pull/749) [`5393e3a`](https://github.com/Frontify/brand-sdk/commit/5393e3aed9822bb00521a22b1cc75a62fafb4a59) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - refactor (Toolbar): split Toolbar into smaller subcomponents. `ToolbarFlyoutState` type has been removed, as well as `flyoutMenu.isOpen`, `flyoutMenu.onOpenChange`, `attachments.isOpen`, `attachments.onOpenChange` props that could be passed to the `Toolbar` component. To control the state of open `Flyouts` the `Toolbar` must instead be wrapped in a `MultiFlyoutContextProvider`. +- [#749](https://github.com/Frontify/brand-sdk/pull/749) [`5393e3a`](https://github.com/Frontify/brand-sdk/commit/5393e3aed9822bb00521a22b1cc75a62fafb4a59) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - refactor (Toolbar): split Toolbar into smaller subcomponents. `ToolbarFlyoutState` type has been removed, as well as `flyoutMenu.isOpen`, `flyoutMenu.onOpenChange`, `attachments.isOpen`, `attachments.onOpenChange` props that could be passed to the `Toolbar` component. To control the state of open `Flyouts` the `Toolbar` must instead be wrapped in a `MultiFlyoutContextProvider`. - Migration Example: + Migration Example: - ```jsx - // Inside your component - const [flyoutIsOpen, setFlyoutIsOpen] = useState(false); - const [attachmentsIsOpen, setAttachmentsIsOpen] = useState(false); + ```jsx + // Inside your component + const [flyoutIsOpen, setFlyoutIsOpen] = useState(false); + const [attachmentsIsOpen, setAttachmentsIsOpen] = useState(false); - return ( - - ); - ``` + return ( + + ); + ``` - The above component should now be written as: + The above component should now be written as: - ```jsx - // Inside your component - const [openFlyoutIds, setOpenFlyoutIds] = useState([]); + ```jsx + // Inside your component + const [openFlyoutIds, setOpenFlyoutIds] = useState([]); - return( - - - ) - ``` + return( + + + ) + ``` -- [#757](https://github.com/Frontify/brand-sdk/pull/757) [`07f2dd3`](https://github.com/Frontify/brand-sdk/commit/07f2dd356663f678b8912c9bf669834c515f43f7) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(Attachments): allow sorting +- [#757](https://github.com/Frontify/brand-sdk/pull/757) [`07f2dd3`](https://github.com/Frontify/brand-sdk/commit/07f2dd356663f678b8912c9bf669834c515f43f7) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(Attachments): allow sorting -- [#744](https://github.com/Frontify/brand-sdk/pull/744) [`7aad48f`](https://github.com/Frontify/brand-sdk/commit/7aad48f022aab38577cf0233c108b4997587c939) Thanks [@ragi96](https://github.com/ragi96)! - feat: add support for the new color type of app-bridge v4 +- [#744](https://github.com/Frontify/brand-sdk/pull/744) [`7aad48f`](https://github.com/Frontify/brand-sdk/commit/7aad48f022aab38577cf0233c108b4997587c939) Thanks [@ragi96](https://github.com/ragi96)! - feat: add support for the new color type of app-bridge v4 ## 0.32.1 ### Patch Changes -- [#747](https://github.com/Frontify/brand-sdk/pull/747) [`447bf26`](https://github.com/Frontify/brand-sdk/commit/447bf26ad6816f354cc9de91f6451cf807458ffb) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump `tailwindcss` to 3.4.1 +- [#747](https://github.com/Frontify/brand-sdk/pull/747) [`447bf26`](https://github.com/Frontify/brand-sdk/commit/447bf26ad6816f354cc9de91f6451cf807458ffb) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump `tailwindcss` to 3.4.1 ## 0.32.0 ### Minor Changes -- [#736](https://github.com/Frontify/brand-sdk/pull/736) [`2f7f30f`](https://github.com/Frontify/brand-sdk/commit/2f7f30f902f3c8ed3bacf5fa378014e148bb20aa) Thanks [@ragi96](https://github.com/ragi96)! - refactor(LinkSelector): Removed `appBridge` prop in favor of directly passing document handling functions: `getAllDocuments`, `getDocumentPagesByDocumentId`, and `getDocumentSectionsByDocumentPageId` for clearer API and enhanced modularity - - Replace this: - - ```jsx - - ``` - - with: - - ```jsx - appBridge.getAllDocuments()} - getDocumentPagesByDocumentId={(documentId) => - appBridge.getDocumentPagesByDocumentId(documentId) - } - getDocumentSectionsByDocumentPageId={(documentPageId) => - appBridge.getDocumentSectionsByDocumentPageId(documentPageId) - } - /> - ``` +- [#736](https://github.com/Frontify/brand-sdk/pull/736) [`2f7f30f`](https://github.com/Frontify/brand-sdk/commit/2f7f30f902f3c8ed3bacf5fa378014e148bb20aa) Thanks [@ragi96](https://github.com/ragi96)! - refactor(LinkSelector): Removed `appBridge` prop in favor of directly passing document handling functions: `getAllDocuments`, `getDocumentPagesByDocumentId`, and `getDocumentSectionsByDocumentPageId` for clearer API and enhanced modularity + + Replace this: + + ```jsx + + ``` + + with: + + ```jsx + appBridge.getAllDocuments()} + getDocumentPagesByDocumentId={(documentId) => appBridge.getDocumentPagesByDocumentId(documentId)} + getDocumentSectionsByDocumentPageId={(documentPageId) => + appBridge.getDocumentSectionsByDocumentPageId(documentPageId) + } + /> + ``` ## 0.31.5 ### Patch Changes -- [#728](https://github.com/Frontify/brand-sdk/pull/728) [`9de8764`](https://github.com/Frontify/brand-sdk/commit/9de87643decdbff847c2e29b9aa895773c8321b3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - fix: Add missing path for types in the export list +- [#728](https://github.com/Frontify/brand-sdk/pull/728) [`9de8764`](https://github.com/Frontify/brand-sdk/commit/9de87643decdbff847c2e29b9aa895773c8321b3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - fix: Add missing path for types in the export list ## 0.31.4 ### Patch Changes -- [#722](https://github.com/Frontify/brand-sdk/pull/722) [`975f9c8`](https://github.com/Frontify/brand-sdk/commit/975f9c86409db9041ebcfa02ad8f684b4e5bc24c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: add "label" to customizable options for getBackgroundSettings +- [#722](https://github.com/Frontify/brand-sdk/pull/722) [`975f9c8`](https://github.com/Frontify/brand-sdk/commit/975f9c86409db9041ebcfa02ad8f684b4e5bc24c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: add "label" to customizable options for getBackgroundSettings ## 0.31.3 ### Patch Changes -- [#720](https://github.com/Frontify/brand-sdk/pull/720) [`7b8a520`](https://github.com/Frontify/brand-sdk/commit/7b8a5209df3b2116cf83838e6da2aae3f83fa33f) Thanks [@ragi96](https://github.com/ragi96)! - fix(Attachments): use the appropriate function for removing and adding asset +- [#720](https://github.com/Frontify/brand-sdk/pull/720) [`7b8a520`](https://github.com/Frontify/brand-sdk/commit/7b8a5209df3b2116cf83838e6da2aae3f83fa33f) Thanks [@ragi96](https://github.com/ragi96)! - fix(Attachments): use the appropriate function for removing and adding asset ## 0.31.2 ### Patch Changes -- Updated dependencies [[`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b)]: - - @frontify/app-bridge@3.1.0 +- Updated dependencies [[`68a9298`](https://github.com/Frontify/brand-sdk/commit/68a9298df9e2177e70333f47dc433a056d76625b)]: + - @frontify/app-bridge@3.1.0 ## 0.31.1 ### Patch Changes -- [#708](https://github.com/Frontify/brand-sdk/pull/708) [`e2a0023`](https://github.com/Frontify/brand-sdk/commit/e2a0023256001dcc64a597f6dcd9df66a1c9f186) Thanks [@ragi96](https://github.com/ragi96)! - feat: add support for @frontify/app-bridge 4.0.0-alpha.0 +- [#708](https://github.com/Frontify/brand-sdk/pull/708) [`e2a0023`](https://github.com/Frontify/brand-sdk/commit/e2a0023256001dcc64a597f6dcd9df66a1c9f186) Thanks [@ragi96](https://github.com/ragi96)! - feat: add support for @frontify/app-bridge 4.0.0-alpha.0 -- Updated dependencies [[`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0)]: - - @frontify/app-bridge@3.0.4 +- Updated dependencies [[`c98d8c4`](https://github.com/Frontify/brand-sdk/commit/c98d8c414b2cdd00d4945f0c29581370b0a7daa0)]: + - @frontify/app-bridge@3.0.4 ## 0.31.0 ### Minor Changes -- [#698](https://github.com/Frontify/brand-sdk/pull/698) [`1003fea`](https://github.com/Frontify/brand-sdk/commit/1003feab2b08e4cc4db5629306e2f25cda8bae86) Thanks [@ragi96](https://github.com/ragi96)! - feat: move @frontify/app-bridge to peer dependencies +- [#698](https://github.com/Frontify/brand-sdk/pull/698) [`1003fea`](https://github.com/Frontify/brand-sdk/commit/1003feab2b08e4cc4db5629306e2f25cda8bae86) Thanks [@ragi96](https://github.com/ragi96)! - feat: move @frontify/app-bridge to peer dependencies ### Patch Changes -- [#697](https://github.com/Frontify/brand-sdk/pull/697) [`759188b`](https://github.com/Frontify/brand-sdk/commit/759188b28219e23ef7ce19edbc2d5e3248270ea8) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bumps @frontify/fondue to 12.0.0-beta.396 +- [#697](https://github.com/Frontify/brand-sdk/pull/697) [`759188b`](https://github.com/Frontify/brand-sdk/commit/759188b28219e23ef7ce19edbc2d5e3248270ea8) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bumps @frontify/fondue to 12.0.0-beta.396 -- Updated dependencies [[`759188b`](https://github.com/Frontify/brand-sdk/commit/759188b28219e23ef7ce19edbc2d5e3248270ea8)]: - - @frontify/sidebar-settings@0.9.1 +- Updated dependencies [[`759188b`](https://github.com/Frontify/brand-sdk/commit/759188b28219e23ef7ce19edbc2d5e3248270ea8)]: + - @frontify/sidebar-settings@0.9.1 ## 0.30.2 ### Patch Changes -- [#687](https://github.com/Frontify/brand-sdk/pull/687) [`b044981`](https://github.com/Frontify/brand-sdk/commit/b0449814d55554e82507e1341d0f42a35f17a5e5) Thanks [@ragi96](https://github.com/ragi96)! - chore(Attachments): replace deprecated functions with hooks +- [#687](https://github.com/Frontify/brand-sdk/pull/687) [`b044981`](https://github.com/Frontify/brand-sdk/commit/b0449814d55554e82507e1341d0f42a35f17a5e5) Thanks [@ragi96](https://github.com/ragi96)! - chore(Attachments): replace deprecated functions with hooks -- [#696](https://github.com/Frontify/brand-sdk/pull/696) [`edc00b0`](https://github.com/Frontify/brand-sdk/commit/edc00b0cb1b04753e1563231eb1e28f9e7d05670) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(Attachments): Add line-height class to `AttachmentsButtonTrigger`. +- [#696](https://github.com/Frontify/brand-sdk/pull/696) [`edc00b0`](https://github.com/Frontify/brand-sdk/commit/edc00b0cb1b04753e1563231eb1e28f9e7d05670) Thanks [@SamCreasey](https://github.com/SamCreasey)! - fix(Attachments): Add line-height class to `AttachmentsButtonTrigger`. -- [#695](https://github.com/Frontify/brand-sdk/pull/695) [`d7764c1`](https://github.com/Frontify/brand-sdk/commit/d7764c129ee1d61aaed4ce519e70eb5d0984bfec) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump @frontify/fondue to v12.0.0-beta.395 +- [#695](https://github.com/Frontify/brand-sdk/pull/695) [`d7764c1`](https://github.com/Frontify/brand-sdk/commit/d7764c129ee1d61aaed4ce519e70eb5d0984bfec) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump @frontify/fondue to v12.0.0-beta.395 -- [#689](https://github.com/Frontify/brand-sdk/pull/689) [`6c34c1c`](https://github.com/Frontify/brand-sdk/commit/6c34c1c8e354f95bb873a70bceef0939198574c4) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(Attachments): temporarily disable sorting +- [#689](https://github.com/Frontify/brand-sdk/pull/689) [`6c34c1c`](https://github.com/Frontify/brand-sdk/commit/6c34c1c8e354f95bb873a70bceef0939198574c4) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(Attachments): temporarily disable sorting -- Updated dependencies [[`d79e69a`](https://github.com/Frontify/brand-sdk/commit/d79e69a1c6d8f901b7f91866a92fd0d99363f07d), [`d7764c1`](https://github.com/Frontify/brand-sdk/commit/d7764c129ee1d61aaed4ce519e70eb5d0984bfec)]: - - @frontify/sidebar-settings@0.9.0 +- Updated dependencies [[`d79e69a`](https://github.com/Frontify/brand-sdk/commit/d79e69a1c6d8f901b7f91866a92fd0d99363f07d), [`d7764c1`](https://github.com/Frontify/brand-sdk/commit/d7764c129ee1d61aaed4ce519e70eb5d0984bfec)]: + - @frontify/sidebar-settings@0.9.0 ## 0.30.1 ### Patch Changes -- [#691](https://github.com/Frontify/brand-sdk/pull/691) [`2a2f106`](https://github.com/Frontify/brand-sdk/commit/2a2f106c0f79c7d43dfddf3d0193fa9eeb7835a3) Thanks [@SamCreasey](https://github.com/SamCreasey)! - Toolbar components and types have been made available in build +- [#691](https://github.com/Frontify/brand-sdk/pull/691) [`2a2f106`](https://github.com/Frontify/brand-sdk/commit/2a2f106c0f79c7d43dfddf3d0193fa9eeb7835a3) Thanks [@SamCreasey](https://github.com/SamCreasey)! - Toolbar components and types have been made available in build -- [#692](https://github.com/Frontify/brand-sdk/pull/692) [`43866c2`](https://github.com/Frontify/brand-sdk/commit/43866c28fa470d5dbf4e61a7d42796904629fead) Thanks [@SamCreasey](https://github.com/SamCreasey)! - BlockItemToolbar: Force line-height to be 1 on toolbar items to prevent wrapping element height from being miscalculated. +- [#692](https://github.com/Frontify/brand-sdk/pull/692) [`43866c2`](https://github.com/Frontify/brand-sdk/commit/43866c28fa470d5dbf4e61a7d42796904629fead) Thanks [@SamCreasey](https://github.com/SamCreasey)! - BlockItemToolbar: Force line-height to be 1 on toolbar items to prevent wrapping element height from being miscalculated. -- Updated dependencies [[`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d)]: - - @frontify/app-bridge@3.0.2 - - @frontify/sidebar-settings@0.8.3 +- Updated dependencies [[`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d)]: + - @frontify/app-bridge@3.0.2 + - @frontify/sidebar-settings@0.8.3 ## 0.30.0 ### Minor Changes -- [#672](https://github.com/Frontify/brand-sdk/pull/672) [`22eb8eb`](https://github.com/Frontify/brand-sdk/commit/22eb8eb8dce8f2d4dccf040376b3368b2962a59b) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - Toolbar design updated - - Add Attachments to the Toolbar component. `isFlyoutOpen`, `setIsFlyoutOpen` and `flyoutItems` props have been removed from the Toolbar and replaced - with a `flyoutMenu` object (`{ items: FlyoutItem[]; isOpen: boolean; onOpenChange: (isOpen: boolean)=>void }`). - `isFlyoutDisabled` prop has been removed. - `attachments` prop has been added (`{ isEnabled: boolean; isOpen: boolean; onOpenChange: (isOpen: boolean)=>void }`). - To enable block attachments in the Toolbar from the `BlockWrapper` component, set `showAttachments` to `true` and wrap the block in the `withAttachmentsProvider` HOC or alternatively, wrap the `BlockWrapper` in an `AttachmentsProvider`. - - `onAddAttachments` has been replaced with `onAttachmentsAdd` in the object returned from `useAttachments` hook. +- [#672](https://github.com/Frontify/brand-sdk/pull/672) [`22eb8eb`](https://github.com/Frontify/brand-sdk/commit/22eb8eb8dce8f2d4dccf040376b3368b2962a59b) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - Toolbar design updated + - Add Attachments to the Toolbar component. `isFlyoutOpen`, `setIsFlyoutOpen` and `flyoutItems` props have been removed from the Toolbar and replaced + with a `flyoutMenu` object (`{ items: FlyoutItem[]; isOpen: boolean; onOpenChange: (isOpen: boolean)=>void }`). + `isFlyoutDisabled` prop has been removed. + `attachments` prop has been added (`{ isEnabled: boolean; isOpen: boolean; onOpenChange: (isOpen: boolean)=>void }`). + To enable block attachments in the Toolbar from the `BlockWrapper` component, set `showAttachments` to `true` and wrap the block in the `withAttachmentsProvider` HOC or alternatively, wrap the `BlockWrapper` in an `AttachmentsProvider`. + - `onAddAttachments` has been replaced with `onAttachmentsAdd` in the object returned from `useAttachments` hook. ### Patch Changes -- [#679](https://github.com/Frontify/brand-sdk/pull/679) [`61edea9`](https://github.com/Frontify/brand-sdk/commit/61edea939fc9c2c64badafb054a5c254c8cef580) Thanks [@ragi96](https://github.com/ragi96)! - feat(Attachments): replace download function to use the appBridge +- [#679](https://github.com/Frontify/brand-sdk/pull/679) [`61edea9`](https://github.com/Frontify/brand-sdk/commit/61edea939fc9c2c64badafb054a5c254c8cef580) Thanks [@ragi96](https://github.com/ragi96)! - feat(Attachments): replace download function to use the appBridge ## 0.29.17 ### Patch Changes -- Updated dependencies [[`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7)]: - - @frontify/app-bridge@3.0.1 - - @frontify/sidebar-settings@0.8.2 +- Updated dependencies [[`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7)]: + - @frontify/app-bridge@3.0.1 + - @frontify/sidebar-settings@0.8.2 ## 0.29.16 ### Patch Changes -- [#652](https://github.com/Frontify/brand-sdk/pull/652) [`eef2c98`](https://github.com/Frontify/brand-sdk/commit/eef2c982e12c50d6b5bd573c2ba73266a8a78ec8) Thanks [@mikeyrayvon](https://github.com/mikeyrayvon)! - feat: export type FlyoutToolbarItem +- [#652](https://github.com/Frontify/brand-sdk/pull/652) [`eef2c98`](https://github.com/Frontify/brand-sdk/commit/eef2c982e12c50d6b5bd573c2ba73266a8a78ec8) Thanks [@mikeyrayvon](https://github.com/mikeyrayvon)! - feat: export type FlyoutToolbarItem ## 0.29.15 ### Patch Changes -- [#636](https://github.com/Frontify/brand-sdk/pull/636) [`1dbc48e`](https://github.com/Frontify/brand-sdk/commit/1dbc48e9b8421a893d0b2da8f17ac201abc2b113) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#636](https://github.com/Frontify/brand-sdk/pull/636) [`1dbc48e`](https://github.com/Frontify/brand-sdk/commit/1dbc48e9b8421a893d0b2da8f17ac201abc2b113) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- Updated dependencies [[`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929), [`1dbc48e`](https://github.com/Frontify/brand-sdk/commit/1dbc48e9b8421a893d0b2da8f17ac201abc2b113)]: - - @frontify/app-bridge@3.0.0 - - @frontify/sidebar-settings@0.8.1 +- Updated dependencies [[`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929), [`1dbc48e`](https://github.com/Frontify/brand-sdk/commit/1dbc48e9b8421a893d0b2da8f17ac201abc2b113)]: + - @frontify/app-bridge@3.0.0 + - @frontify/sidebar-settings@0.8.1 ## 0.29.14 ### Patch Changes -- Updated dependencies [[`13ca57e`](https://github.com/Frontify/brand-sdk/commit/13ca57e7440e5d7175e54109b89eb8dc60eee4fd), [`d55bd9f`](https://github.com/Frontify/brand-sdk/commit/d55bd9f39fdfa6e5c45a80744c058a605d81c893)]: - - @frontify/sidebar-settings@0.8.0 +- Updated dependencies [[`13ca57e`](https://github.com/Frontify/brand-sdk/commit/13ca57e7440e5d7175e54109b89eb8dc60eee4fd), [`d55bd9f`](https://github.com/Frontify/brand-sdk/commit/d55bd9f39fdfa6e5c45a80744c058a605d81c893)]: + - @frontify/sidebar-settings@0.8.0 ## 0.29.13 ### Patch Changes -- Updated dependencies [[`dfe83ee`](https://github.com/Frontify/brand-sdk/commit/dfe83ee7417d3916d9bc52b96e600deb130bf147), [`8920ec9`](https://github.com/Frontify/brand-sdk/commit/8920ec993401caf94813974c7fad476c3decc2c6)]: - - @frontify/sidebar-settings@0.7.0 +- Updated dependencies [[`dfe83ee`](https://github.com/Frontify/brand-sdk/commit/dfe83ee7417d3916d9bc52b96e600deb130bf147), [`8920ec9`](https://github.com/Frontify/brand-sdk/commit/8920ec993401caf94813974c7fad476c3decc2c6)]: + - @frontify/sidebar-settings@0.7.0 ## 0.29.12 ### Patch Changes -- [#628](https://github.com/Frontify/brand-sdk/pull/628) [`44efda9`](https://github.com/Frontify/brand-sdk/commit/44efda90fd454298ea623c7f41b370f81ad1a203) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(BlockItemWRapper): fix toolbar focus style +- [#628](https://github.com/Frontify/brand-sdk/pull/628) [`44efda9`](https://github.com/Frontify/brand-sdk/commit/44efda90fd454298ea623c7f41b370f81ad1a203) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(BlockItemWRapper): fix toolbar focus style ## 0.29.11 ### Patch Changes -- [#622](https://github.com/Frontify/brand-sdk/pull/622) [`34aa320`](https://github.com/Frontify/brand-sdk/commit/34aa32063c306826d35a6b973c3e5f6931dabc76) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(BlockItemWrapper): add focus visible style to drag btn +- [#622](https://github.com/Frontify/brand-sdk/pull/622) [`34aa320`](https://github.com/Frontify/brand-sdk/commit/34aa32063c306826d35a6b973c3e5f6931dabc76) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(BlockItemWrapper): add focus visible style to drag btn ## 0.29.10 ### Patch Changes -- [#591](https://github.com/Frontify/brand-sdk/pull/591) [`076ee92`](https://github.com/Frontify/brand-sdk/commit/076ee92016edadc2c775072db7c9df40c6968032) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.341 +- [#591](https://github.com/Frontify/brand-sdk/pull/591) [`076ee92`](https://github.com/Frontify/brand-sdk/commit/076ee92016edadc2c775072db7c9df40c6968032) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.341 -- Updated dependencies [[`076ee92`](https://github.com/Frontify/brand-sdk/commit/076ee92016edadc2c775072db7c9df40c6968032)]: - - @frontify/sidebar-settings@0.6.13 +- Updated dependencies [[`076ee92`](https://github.com/Frontify/brand-sdk/commit/076ee92016edadc2c775072db7c9df40c6968032)]: + - @frontify/sidebar-settings@0.6.13 ## 0.29.9 ### Patch Changes -- [#583](https://github.com/Frontify/brand-sdk/pull/583) [`aed99a3`](https://github.com/Frontify/brand-sdk/commit/aed99a3a62e58c7b9436f8f031c64ac024566c2c) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.337 +- [#583](https://github.com/Frontify/brand-sdk/pull/583) [`aed99a3`](https://github.com/Frontify/brand-sdk/commit/aed99a3a62e58c7b9436f8f031c64ac024566c2c) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.337 -- Updated dependencies [[`aed99a3`](https://github.com/Frontify/brand-sdk/commit/aed99a3a62e58c7b9436f8f031c64ac024566c2c)]: - - @frontify/sidebar-settings@0.6.12 +- Updated dependencies [[`aed99a3`](https://github.com/Frontify/brand-sdk/commit/aed99a3a62e58c7b9436f8f031c64ac024566c2c)]: + - @frontify/sidebar-settings@0.6.12 ## 0.29.8 ### Patch Changes -- [#577](https://github.com/Frontify/brand-sdk/pull/577) [`2c17f39`](https://github.com/Frontify/brand-sdk/commit/2c17f396b7f3670cf8c9c041937a414bcd22ae94) Thanks [@ragi96](https://github.com/ragi96)! - feat: add autoFormatPlugin to defaultPluginsWithLinkChooser +- [#577](https://github.com/Frontify/brand-sdk/pull/577) [`2c17f39`](https://github.com/Frontify/brand-sdk/commit/2c17f396b7f3670cf8c9c041937a414bcd22ae94) Thanks [@ragi96](https://github.com/ragi96)! - feat: add autoFormatPlugin to defaultPluginsWithLinkChooser -- [#570](https://github.com/Frontify/brand-sdk/pull/570) [`9b2e5f3`](https://github.com/Frontify/brand-sdk/commit/9b2e5f3853832dfa3cf0ec9fe0ec2ad1c5927d23) Thanks [@ragi96](https://github.com/ragi96)! - fix(RTE): list style inconsistent between view and edit mode +- [#570](https://github.com/Frontify/brand-sdk/pull/570) [`9b2e5f3`](https://github.com/Frontify/brand-sdk/commit/9b2e5f3853832dfa3cf0ec9fe0ec2ad1c5927d23) Thanks [@ragi96](https://github.com/ragi96)! - fix(RTE): list style inconsistent between view and edit mode -- [#577](https://github.com/Frontify/brand-sdk/pull/577) [`2c17f39`](https://github.com/Frontify/brand-sdk/commit/2c17f396b7f3670cf8c9c041937a414bcd22ae94) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.334 +- [#577](https://github.com/Frontify/brand-sdk/pull/577) [`2c17f39`](https://github.com/Frontify/brand-sdk/commit/2c17f396b7f3670cf8c9c041937a414bcd22ae94) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.334 -- [#574](https://github.com/Frontify/brand-sdk/pull/574) [`a025aee`](https://github.com/Frontify/brand-sdk/commit/a025aeecfd3647a7bd75d139d9309310092d5b54) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(LinkSelector): initial click triggered twice +- [#574](https://github.com/Frontify/brand-sdk/pull/574) [`a025aee`](https://github.com/Frontify/brand-sdk/commit/a025aeecfd3647a7bd75d139d9309310092d5b54) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(LinkSelector): initial click triggered twice -- Updated dependencies [[`2c17f39`](https://github.com/Frontify/brand-sdk/commit/2c17f396b7f3670cf8c9c041937a414bcd22ae94)]: - - @frontify/sidebar-settings@0.6.11 +- Updated dependencies [[`2c17f39`](https://github.com/Frontify/brand-sdk/commit/2c17f396b7f3670cf8c9c041937a414bcd22ae94)]: + - @frontify/sidebar-settings@0.6.11 ## 0.29.7 ### Patch Changes -- [#566](https://github.com/Frontify/brand-sdk/pull/566) [`ece6876`](https://github.com/Frontify/brand-sdk/commit/ece68765bcd1675cf32f9fd20b77c8dd5e665ee1) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.324 +- [#566](https://github.com/Frontify/brand-sdk/pull/566) [`ece6876`](https://github.com/Frontify/brand-sdk/commit/ece68765bcd1675cf32f9fd20b77c8dd5e665ee1) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.324 -- Updated dependencies [[`ece6876`](https://github.com/Frontify/brand-sdk/commit/ece68765bcd1675cf32f9fd20b77c8dd5e665ee1)]: - - @frontify/sidebar-settings@0.6.10 +- Updated dependencies [[`ece6876`](https://github.com/Frontify/brand-sdk/commit/ece68765bcd1675cf32f9fd20b77c8dd5e665ee1)]: + - @frontify/sidebar-settings@0.6.10 ## 0.29.6 ### Patch Changes -- [#560](https://github.com/Frontify/brand-sdk/pull/560) [`7460f29`](https://github.com/Frontify/brand-sdk/commit/7460f298fa346f89da7de2a0465c12c077e22f05) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.319 +- [#560](https://github.com/Frontify/brand-sdk/pull/560) [`7460f29`](https://github.com/Frontify/brand-sdk/commit/7460f298fa346f89da7de2a0465c12c077e22f05) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.319 -- [#559](https://github.com/Frontify/brand-sdk/pull/559) [`0a75910`](https://github.com/Frontify/brand-sdk/commit/0a75910955da33d6866af1f42e82280f64118701) Thanks [@ragi96](https://github.com/ragi96)! - fix: button plugin add margins to button +- [#559](https://github.com/Frontify/brand-sdk/pull/559) [`0a75910`](https://github.com/Frontify/brand-sdk/commit/0a75910955da33d6866af1f42e82280f64118701) Thanks [@ragi96](https://github.com/ragi96)! - fix: button plugin add margins to button -- [#564](https://github.com/Frontify/brand-sdk/pull/564) [`3684397`](https://github.com/Frontify/brand-sdk/commit/368439792d855bbc5117f97931b7d52f75295677) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.321 +- [#564](https://github.com/Frontify/brand-sdk/pull/564) [`3684397`](https://github.com/Frontify/brand-sdk/commit/368439792d855bbc5117f97931b7d52f75295677) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.321 -- [#563](https://github.com/Frontify/brand-sdk/pull/563) [`c3b2f6c`](https://github.com/Frontify/brand-sdk/commit/c3b2f6cb86844a10cc7ff2d4ef8802945d5d1e5b) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(RTE): edit modal styles can be invisible +- [#563](https://github.com/Frontify/brand-sdk/pull/563) [`c3b2f6c`](https://github.com/Frontify/brand-sdk/commit/c3b2f6cb86844a10cc7ff2d4ef8802945d5d1e5b) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(RTE): edit modal styles can be invisible -- Updated dependencies [[`7460f29`](https://github.com/Frontify/brand-sdk/commit/7460f298fa346f89da7de2a0465c12c077e22f05), [`3684397`](https://github.com/Frontify/brand-sdk/commit/368439792d855bbc5117f97931b7d52f75295677)]: - - @frontify/sidebar-settings@0.6.9 +- Updated dependencies [[`7460f29`](https://github.com/Frontify/brand-sdk/commit/7460f298fa346f89da7de2a0465c12c077e22f05), [`3684397`](https://github.com/Frontify/brand-sdk/commit/368439792d855bbc5117f97931b7d52f75295677)]: + - @frontify/sidebar-settings@0.6.9 ## 0.29.5 ### Patch Changes -- [#548](https://github.com/Frontify/brand-sdk/pull/548) [`792804d`](https://github.com/Frontify/brand-sdk/commit/792804d17bca975a598ff9f919ee70cb1a09e720) Thanks [@ragi96](https://github.com/ragi96)! - fix: blockItemWrapper Toolbar z-index +- [#548](https://github.com/Frontify/brand-sdk/pull/548) [`792804d`](https://github.com/Frontify/brand-sdk/commit/792804d17bca975a598ff9f919ee70cb1a09e720) Thanks [@ragi96](https://github.com/ragi96)! - fix: blockItemWrapper Toolbar z-index ## 0.29.4 ### Patch Changes -- [#546](https://github.com/Frontify/brand-sdk/pull/546) [`69d862e`](https://github.com/Frontify/brand-sdk/commit/69d862e966954d521bdd856280c76f6a40483be8) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump app-bridge +- [#546](https://github.com/Frontify/brand-sdk/pull/546) [`69d862e`](https://github.com/Frontify/brand-sdk/commit/69d862e966954d521bdd856280c76f6a40483be8) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump app-bridge -- [`6c5d4f6`](https://github.com/Frontify/brand-sdk/commit/6c5d4f63ef8c5995790aa444dc29469b095d63ba) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change App Bridge dependency selector +- [`6c5d4f6`](https://github.com/Frontify/brand-sdk/commit/6c5d4f63ef8c5995790aa444dc29469b095d63ba) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change App Bridge dependency selector -- Updated dependencies [[`69d862e`](https://github.com/Frontify/brand-sdk/commit/69d862e966954d521bdd856280c76f6a40483be8), [`6c5d4f6`](https://github.com/Frontify/brand-sdk/commit/6c5d4f63ef8c5995790aa444dc29469b095d63ba)]: - - @frontify/sidebar-settings@0.6.8 +- Updated dependencies [[`69d862e`](https://github.com/Frontify/brand-sdk/commit/69d862e966954d521bdd856280c76f6a40483be8), [`6c5d4f6`](https://github.com/Frontify/brand-sdk/commit/6c5d4f63ef8c5995790aa444dc29469b095d63ba)]: + - @frontify/sidebar-settings@0.6.8 ## 0.29.3 ### Patch Changes -- [#545](https://github.com/Frontify/brand-sdk/pull/545) [`755bcc0`](https://github.com/Frontify/brand-sdk/commit/755bcc0ec121da805a69ab6c9a48854cb97a71be) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(RTE): default target is \_blank instead of \_self +- [#545](https://github.com/Frontify/brand-sdk/pull/545) [`755bcc0`](https://github.com/Frontify/brand-sdk/commit/755bcc0ec121da805a69ab6c9a48854cb97a71be) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(RTE): default target is \_blank instead of \_self -- [#543](https://github.com/Frontify/brand-sdk/pull/543) [`29c8128`](https://github.com/Frontify/brand-sdk/commit/29c8128c113ce2163a22274e5440c8df05025777) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.315 +- [#543](https://github.com/Frontify/brand-sdk/pull/543) [`29c8128`](https://github.com/Frontify/brand-sdk/commit/29c8128c113ce2163a22274e5440c8df05025777) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.315 -- [#545](https://github.com/Frontify/brand-sdk/pull/545) [`755bcc0`](https://github.com/Frontify/brand-sdk/commit/755bcc0ec121da805a69ab6c9a48854cb97a71be) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue +- [#545](https://github.com/Frontify/brand-sdk/pull/545) [`755bcc0`](https://github.com/Frontify/brand-sdk/commit/755bcc0ec121da805a69ab6c9a48854cb97a71be) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue -- Updated dependencies [[`29c8128`](https://github.com/Frontify/brand-sdk/commit/29c8128c113ce2163a22274e5440c8df05025777), [`755bcc0`](https://github.com/Frontify/brand-sdk/commit/755bcc0ec121da805a69ab6c9a48854cb97a71be)]: - - @frontify/sidebar-settings@0.6.7 +- Updated dependencies [[`29c8128`](https://github.com/Frontify/brand-sdk/commit/29c8128c113ce2163a22274e5440c8df05025777), [`755bcc0`](https://github.com/Frontify/brand-sdk/commit/755bcc0ec121da805a69ab6c9a48854cb97a71be)]: + - @frontify/sidebar-settings@0.6.7 ## 0.29.2 ### Patch Changes -- [#540](https://github.com/Frontify/brand-sdk/pull/540) [`98f876a`](https://github.com/Frontify/brand-sdk/commit/98f876a05cec68c51e9a6986b38bde3cf08597e7) Thanks [@ragi96](https://github.com/ragi96)! - fix: improving the toolbar style +- [#540](https://github.com/Frontify/brand-sdk/pull/540) [`98f876a`](https://github.com/Frontify/brand-sdk/commit/98f876a05cec68c51e9a6986b38bde3cf08597e7) Thanks [@ragi96](https://github.com/ragi96)! - fix: improving the toolbar style -- [#542](https://github.com/Frontify/brand-sdk/pull/542) [`eea4b74`](https://github.com/Frontify/brand-sdk/commit/eea4b746ccd69e2a96251b7d0e909237c20ca0ae) Thanks [@ragi96](https://github.com/ragi96)! - fix: BlockItemWrapper type issue +- [#542](https://github.com/Frontify/brand-sdk/pull/542) [`eea4b74`](https://github.com/Frontify/brand-sdk/commit/eea4b746ccd69e2a96251b7d0e909237c20ca0ae) Thanks [@ragi96](https://github.com/ragi96)! - fix: BlockItemWrapper type issue -- [#539](https://github.com/Frontify/brand-sdk/pull/539) [`5e94f00`](https://github.com/Frontify/brand-sdk/commit/5e94f00401dbe7451e2b90c157e89f808bd2fa06) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(RTE): link edit looks for button instead of a tags +- [#539](https://github.com/Frontify/brand-sdk/pull/539) [`5e94f00`](https://github.com/Frontify/brand-sdk/commit/5e94f00401dbe7451e2b90c157e89f808bd2fa06) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(RTE): link edit looks for button instead of a tags ## 0.29.1 ### Patch Changes -- [`2df4a2e`](https://github.com/Frontify/brand-sdk/commit/2df4a2ef0830c7d4a72a5b77e86d0645e33ad757) Thanks [@ragi96](https://github.com/ragi96)! - fix: export TextStyles enum correctly +- [`2df4a2e`](https://github.com/Frontify/brand-sdk/commit/2df4a2ef0830c7d4a72a5b77e86d0645e33ad757) Thanks [@ragi96](https://github.com/ragi96)! - fix: export TextStyles enum correctly -- [`3c1e752`](https://github.com/Frontify/brand-sdk/commit/3c1e7520967c5055c944a0f1afe6b41e046dcdd8) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`3c1e752`](https://github.com/Frontify/brand-sdk/commit/3c1e7520967c5055c944a0f1afe6b41e046dcdd8) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`9199d24`](https://github.com/Frontify/brand-sdk/commit/9199d24dd1221640687d6d157897eedc40ed3d43) Thanks [@ragi96](https://github.com/ragi96)! - fix: BlockItemWrapper typing issue +- [`9199d24`](https://github.com/Frontify/brand-sdk/commit/9199d24dd1221640687d6d157897eedc40ed3d43) Thanks [@ragi96](https://github.com/ragi96)! - fix: BlockItemWrapper typing issue -- Updated dependencies [[`3c1e752`](https://github.com/Frontify/brand-sdk/commit/3c1e7520967c5055c944a0f1afe6b41e046dcdd8)]: - - @frontify/sidebar-settings@0.6.6 +- Updated dependencies [[`3c1e752`](https://github.com/Frontify/brand-sdk/commit/3c1e7520967c5055c944a0f1afe6b41e046dcdd8)]: + - @frontify/sidebar-settings@0.6.6 ## 0.29.0 ### Minor Changes -- [#504](https://github.com/Frontify/brand-sdk/pull/504) [`b0d2b28`](https://github.com/Frontify/brand-sdk/commit/b0d2b28838e917a4fb3332a1f043ee29d8060752) Thanks [@ragi96](https://github.com/ragi96)! - refactor: use Fondue serializer instead of internal version +- [#504](https://github.com/Frontify/brand-sdk/pull/504) [`b0d2b28`](https://github.com/Frontify/brand-sdk/commit/b0d2b28838e917a4fb3332a1f043ee29d8060752) Thanks [@ragi96](https://github.com/ragi96)! - refactor: use Fondue serializer instead of internal version ### Patch Changes -- [#504](https://github.com/Frontify/brand-sdk/pull/504) [`b0d2b28`](https://github.com/Frontify/brand-sdk/commit/b0d2b28838e917a4fb3332a1f043ee29d8060752) Thanks [@ragi96](https://github.com/ragi96)! - Update dependencies +- [#504](https://github.com/Frontify/brand-sdk/pull/504) [`b0d2b28`](https://github.com/Frontify/brand-sdk/commit/b0d2b28838e917a4fb3332a1f043ee29d8060752) Thanks [@ragi96](https://github.com/ragi96)! - Update dependencies -- Updated dependencies [[`b0d2b28`](https://github.com/Frontify/brand-sdk/commit/b0d2b28838e917a4fb3332a1f043ee29d8060752)]: - - @frontify/sidebar-settings@0.6.5 +- Updated dependencies [[`b0d2b28`](https://github.com/Frontify/brand-sdk/commit/b0d2b28838e917a4fb3332a1f043ee29d8060752)]: + - @frontify/sidebar-settings@0.6.5 ## 0.28.6 ### Patch Changes -- [#522](https://github.com/Frontify/brand-sdk/pull/522) [`0fdb3c7`](https://github.com/Frontify/brand-sdk/commit/0fdb3c79590964ba0e66f0c95e2a30ea8a34836b) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.309 +- [#522](https://github.com/Frontify/brand-sdk/pull/522) [`0fdb3c7`](https://github.com/Frontify/brand-sdk/commit/0fdb3c79590964ba0e66f0c95e2a30ea8a34836b) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.309 -- [#524](https://github.com/Frontify/brand-sdk/pull/524) [`c0b8cff`](https://github.com/Frontify/brand-sdk/commit/c0b8cff9b69f4cc5f83ebd150d3640fe50da501d) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(types): extend app bridge type +- [#524](https://github.com/Frontify/brand-sdk/pull/524) [`c0b8cff`](https://github.com/Frontify/brand-sdk/commit/c0b8cff9b69f4cc5f83ebd150d3640fe50da501d) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(types): extend app bridge type -- Updated dependencies [[`0fdb3c7`](https://github.com/Frontify/brand-sdk/commit/0fdb3c79590964ba0e66f0c95e2a30ea8a34836b)]: - - @frontify/sidebar-settings@0.6.4 +- Updated dependencies [[`0fdb3c7`](https://github.com/Frontify/brand-sdk/commit/0fdb3c79590964ba0e66f0c95e2a30ea8a34836b)]: + - @frontify/sidebar-settings@0.6.4 ## 0.28.5 ### Patch Changes -- [#502](https://github.com/Frontify/brand-sdk/pull/502) [`d1a60e9`](https://github.com/Frontify/brand-sdk/commit/d1a60e9fabb2920d3fc716e18f58d8de1527ab26) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(\*): add link selector +- [#502](https://github.com/Frontify/brand-sdk/pull/502) [`d1a60e9`](https://github.com/Frontify/brand-sdk/commit/d1a60e9fabb2920d3fc716e18f58d8de1527ab26) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(\*): add link selector -- Updated dependencies [[`d1a60e9`](https://github.com/Frontify/brand-sdk/commit/d1a60e9fabb2920d3fc716e18f58d8de1527ab26)]: - - @frontify/sidebar-settings@0.6.3 +- Updated dependencies [[`d1a60e9`](https://github.com/Frontify/brand-sdk/commit/d1a60e9fabb2920d3fc716e18f58d8de1527ab26)]: + - @frontify/sidebar-settings@0.6.3 ## 0.28.4 ### Patch Changes -- [#503](https://github.com/Frontify/brand-sdk/pull/503) [`c56e7e9`](https://github.com/Frontify/brand-sdk/commit/c56e7e9112e04ae0e9ae35e4b7a98c11665045f2) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(RTE): add dir to serializer +- [#503](https://github.com/Frontify/brand-sdk/pull/503) [`c56e7e9`](https://github.com/Frontify/brand-sdk/commit/c56e7e9112e04ae0e9ae35e4b7a98c11665045f2) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(RTE): add dir to serializer -- [`22684e3`](https://github.com/Frontify/brand-sdk/commit/22684e358fd2b073790a0959606c6a5d44e35c4e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`22684e3`](https://github.com/Frontify/brand-sdk/commit/22684e358fd2b073790a0959606c6a5d44e35c4e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- Updated dependencies [[`22684e3`](https://github.com/Frontify/brand-sdk/commit/22684e358fd2b073790a0959606c6a5d44e35c4e)]: - - @frontify/sidebar-settings@0.6.2 +- Updated dependencies [[`22684e3`](https://github.com/Frontify/brand-sdk/commit/22684e358fd2b073790a0959606c6a5d44e35c4e)]: + - @frontify/sidebar-settings@0.6.2 ## 0.28.3 ### Patch Changes -- [`07624cb`](https://github.com/Frontify/brand-sdk/commit/07624cb8fba8d9ede4e5ea5db43780658f69f0ba) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix react being bundled into the package +- [`07624cb`](https://github.com/Frontify/brand-sdk/commit/07624cb8fba8d9ede4e5ea5db43780658f69f0ba) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix react being bundled into the package ## 0.28.2 ### Patch Changes -- [`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix issues with styles export +- [`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix issues with styles export -- Updated dependencies [[`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3)]: - - @frontify/sidebar-settings@0.6.1 +- Updated dependencies [[`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3)]: + - @frontify/sidebar-settings@0.6.1 ## 0.28.1 ### Patch Changes -- [`382f7fb`](https://github.com/Frontify/brand-sdk/commit/382f7fbde444170f8f7b90d2ab655edbfd260692) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix build +- [`382f7fb`](https://github.com/Frontify/brand-sdk/commit/382f7fbde444170f8f7b90d2ab655edbfd260692) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix build ## 0.28.0 ### Minor Changes -- [#453](https://github.com/Frontify/brand-sdk/pull/453) [`0807349`](https://github.com/Frontify/brand-sdk/commit/0807349856fe972953493c253ac8e4ce352d3ede) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - Added components, helpers and utilities to simplify Blocks development +- [#453](https://github.com/Frontify/brand-sdk/pull/453) [`0807349`](https://github.com/Frontify/brand-sdk/commit/0807349856fe972953493c253ac8e4ce352d3ede) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - Added components, helpers and utilities to simplify Blocks development -- [#466](https://github.com/Frontify/brand-sdk/pull/466) [`9f81a23`](https://github.com/Frontify/brand-sdk/commit/9f81a2363cd3c842d0ac5c014e0b07c46a3a1cca) Thanks [@triggertoo](https://github.com/triggertoo)! - Remove downloadAsset helper since it's unrelated to the settings +- [#466](https://github.com/Frontify/brand-sdk/pull/466) [`9f81a23`](https://github.com/Frontify/brand-sdk/commit/9f81a2363cd3c842d0ac5c014e0b07c46a3a1cca) Thanks [@triggertoo](https://github.com/triggertoo)! - Remove downloadAsset helper since it's unrelated to the settings ### Patch Changes -- [#482](https://github.com/Frontify/brand-sdk/pull/482) [`6b18a74`](https://github.com/Frontify/brand-sdk/commit/6b18a74794612f61bd2e34ea8fdd4572ebb5274e) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(\*): update shared folder with latest changes +- [#482](https://github.com/Frontify/brand-sdk/pull/482) [`6b18a74`](https://github.com/Frontify/brand-sdk/commit/6b18a74794612f61bd2e34ea8fdd4572ebb5274e) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(\*): update shared folder with latest changes -- Updated dependencies [[`4105251`](https://github.com/Frontify/brand-sdk/commit/4105251969f8ae639014a013a2cbc88df8e4935d), [`af49f65`](https://github.com/Frontify/brand-sdk/commit/af49f6572592522a550f970c98e3d8fd2d377cc3)]: - - @frontify/sidebar-settings@0.6.0 +- Updated dependencies [[`4105251`](https://github.com/Frontify/brand-sdk/commit/4105251969f8ae639014a013a2cbc88df8e4935d), [`af49f65`](https://github.com/Frontify/brand-sdk/commit/af49f6572592522a550f970c98e3d8fd2d377cc3)]: + - @frontify/sidebar-settings@0.6.0 ## 0.27.0 ### Minor Changes -- [#447](https://github.com/Frontify/brand-sdk/pull/447) [`86d8e33`](https://github.com/Frontify/brand-sdk/commit/86d8e333896642ca076aab4aeec3620f2d6d20b3) Thanks [@julianiff](https://github.com/julianiff)! - Allow function return (sync or async) for `defineSettings` +- [#447](https://github.com/Frontify/brand-sdk/pull/447) [`86d8e33`](https://github.com/Frontify/brand-sdk/commit/86d8e333896642ca076aab4aeec3620f2d6d20b3) Thanks [@julianiff](https://github.com/julianiff)! - Allow function return (sync or async) for `defineSettings` ### Patch Changes -- Updated dependencies [[`3eabb89`](https://github.com/Frontify/brand-sdk/commit/3eabb8959c2b68be50ab1bcef3996100ed877864), [`33e0a8f`](https://github.com/Frontify/brand-sdk/commit/33e0a8f49de433aca8cc06bafed6e5515b755dd2)]: - - @frontify/sidebar-settings@0.5.0 +- Updated dependencies [[`3eabb89`](https://github.com/Frontify/brand-sdk/commit/3eabb8959c2b68be50ab1bcef3996100ed877864), [`33e0a8f`](https://github.com/Frontify/brand-sdk/commit/33e0a8f49de433aca8cc06bafed6e5515b755dd2)]: + - @frontify/sidebar-settings@0.5.0 ## 0.26.8 ### Patch Changes -- [#426](https://github.com/Frontify/brand-sdk/pull/426) [`7729287`](https://github.com/Frontify/brand-sdk/commit/77292877e2bce6207196b5a8373711db94ab1716) Thanks [@triggertoo](https://github.com/triggertoo)! - Update @frontify/sidebar-settings to get react 18 support +- [#426](https://github.com/Frontify/brand-sdk/pull/426) [`7729287`](https://github.com/Frontify/brand-sdk/commit/77292877e2bce6207196b5a8373711db94ab1716) Thanks [@triggertoo](https://github.com/triggertoo)! - Update @frontify/sidebar-settings to get react 18 support -- Updated dependencies [[`b78b376`](https://github.com/Frontify/brand-sdk/commit/b78b3764d1c01e1c0cc81542fdea2d813bb62e33)]: - - @frontify/sidebar-settings@0.4.0 +- Updated dependencies [[`b78b376`](https://github.com/Frontify/brand-sdk/commit/b78b3764d1c01e1c0cc81542fdea2d813bb62e33)]: + - @frontify/sidebar-settings@0.4.0 ## 0.26.7 ### Patch Changes -- [#419](https://github.com/Frontify/brand-sdk/pull/419) [`ada3b73`](https://github.com/Frontify/brand-sdk/commit/ada3b73d4af947649b6135b26b8e5a1c26f79aad) Thanks [@triggertoo](https://github.com/triggertoo)! - Update @frontify/sidebar-settings to the latest version +- [#419](https://github.com/Frontify/brand-sdk/pull/419) [`ada3b73`](https://github.com/Frontify/brand-sdk/commit/ada3b73d4af947649b6135b26b8e5a1c26f79aad) Thanks [@triggertoo](https://github.com/triggertoo)! - Update @frontify/sidebar-settings to the latest version ## 0.26.6 ### Patch Changes -- [`caecf03`](https://github.com/Frontify/brand-sdk/commit/caecf03ffd52a07cd1c846f4a99f9736fef76b76) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`caecf03`](https://github.com/Frontify/brand-sdk/commit/caecf03ffd52a07cd1c846f4a99f9736fef76b76) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`2179c95`](https://github.com/Frontify/brand-sdk/commit/2179c95e787d89d1e75671d394b4dde61673638d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update App Bridge +- [`2179c95`](https://github.com/Frontify/brand-sdk/commit/2179c95e787d89d1e75671d394b4dde61673638d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update App Bridge -- Updated dependencies [[`caecf03`](https://github.com/Frontify/brand-sdk/commit/caecf03ffd52a07cd1c846f4a99f9736fef76b76), [`2179c95`](https://github.com/Frontify/brand-sdk/commit/2179c95e787d89d1e75671d394b4dde61673638d)]: - - @frontify/sidebar-settings@0.3.3 +- Updated dependencies [[`caecf03`](https://github.com/Frontify/brand-sdk/commit/caecf03ffd52a07cd1c846f4a99f9736fef76b76), [`2179c95`](https://github.com/Frontify/brand-sdk/commit/2179c95e787d89d1e75671d394b4dde61673638d)]: + - @frontify/sidebar-settings@0.3.3 ## 0.26.5 ### Patch Changes -- [`f11eaef`](https://github.com/Frontify/brand-sdk/commit/f11eaef8b3a602562994460059e2c30ea307cda1) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - fix version of fondue dependency +- [`f11eaef`](https://github.com/Frontify/brand-sdk/commit/f11eaef8b3a602562994460059e2c30ea307cda1) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - fix version of fondue dependency -- Updated dependencies [[`f11eaef`](https://github.com/Frontify/brand-sdk/commit/f11eaef8b3a602562994460059e2c30ea307cda1)]: - - @frontify/sidebar-settings@0.3.2 +- Updated dependencies [[`f11eaef`](https://github.com/Frontify/brand-sdk/commit/f11eaef8b3a602562994460059e2c30ea307cda1)]: + - @frontify/sidebar-settings@0.3.2 ## 0.26.4 ### Patch Changes -- [`3835898`](https://github.com/Frontify/brand-sdk/commit/38358988674acc7cad728357b146558ebba3964a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix Fondue dependency version issue +- [`3835898`](https://github.com/Frontify/brand-sdk/commit/38358988674acc7cad728357b146558ebba3964a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix Fondue dependency version issue -- Updated dependencies [[`3835898`](https://github.com/Frontify/brand-sdk/commit/38358988674acc7cad728357b146558ebba3964a)]: - - @frontify/sidebar-settings@0.3.1 +- Updated dependencies [[`3835898`](https://github.com/Frontify/brand-sdk/commit/38358988674acc7cad728357b146558ebba3964a)]: + - @frontify/sidebar-settings@0.3.1 ## 0.26.3 ### Patch Changes -- [`57228f5`](https://github.com/Frontify/brand-sdk/commit/57228f557c20f2a2a291ecabc560a8e7c1bb0e41) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update deps +- [`57228f5`](https://github.com/Frontify/brand-sdk/commit/57228f557c20f2a2a291ecabc560a8e7c1bb0e41) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update deps -- [#396](https://github.com/Frontify/brand-sdk/pull/396) [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Unpin dev dependencies +- [#396](https://github.com/Frontify/brand-sdk/pull/396) [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Unpin dev dependencies -- Updated dependencies [[`57228f5`](https://github.com/Frontify/brand-sdk/commit/57228f557c20f2a2a291ecabc560a8e7c1bb0e41), [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b), [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b)]: - - @frontify/sidebar-settings@0.3.0 +- Updated dependencies [[`57228f5`](https://github.com/Frontify/brand-sdk/commit/57228f557c20f2a2a291ecabc560a8e7c1bb0e41), [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b), [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b)]: + - @frontify/sidebar-settings@0.3.0 ## 0.26.2 ### Patch Changes -- Updated dependencies [[`366ca28`](https://github.com/Frontify/brand-sdk/commit/366ca280e754cf875d91026ee0a3cf8e767b05ab)]: - - @frontify/sidebar-settings@0.2.0 +- Updated dependencies [[`366ca28`](https://github.com/Frontify/brand-sdk/commit/366ca280e754cf875d91026ee0a3cf8e767b05ab)]: + - @frontify/sidebar-settings@0.2.0 ## 0.26.1 ### Patch Changes -- [`0ed6221`](https://github.com/Frontify/brand-sdk/commit/0ed62215b22410d12b028eed0cc5c74c0f8453b2) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix issue with version of sidebar-settings +- [`0ed6221`](https://github.com/Frontify/brand-sdk/commit/0ed62215b22410d12b028eed0cc5c74c0f8453b2) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix issue with version of sidebar-settings ## 0.26.0 ### Minor Changes -- [#382](https://github.com/Frontify/brand-sdk/pull/382) [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Renamed `slider` to `segmentedControls` +- [#382](https://github.com/Frontify/brand-sdk/pull/382) [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Renamed `slider` to `segmentedControls` -- [#382](https://github.com/Frontify/brand-sdk/pull/382) [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Inline enums to union types to have less Fondue breakage +- [#382](https://github.com/Frontify/brand-sdk/pull/382) [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Inline enums to union types to have less Fondue breakage ### Patch Changes -- [`440e463`](https://github.com/Frontify/brand-sdk/commit/440e463326fb55dabc28dba346e1ec2e6ee03450) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`440e463`](https://github.com/Frontify/brand-sdk/commit/440e463326fb55dabc28dba346e1ec2e6ee03450) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- Updated dependencies [[`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557), [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557), [`440e463`](https://github.com/Frontify/brand-sdk/commit/440e463326fb55dabc28dba346e1ec2e6ee03450)]: - - @frontify/sidebar-settings@0.1.0 +- Updated dependencies [[`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557), [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557), [`440e463`](https://github.com/Frontify/brand-sdk/commit/440e463326fb55dabc28dba346e1ec2e6ee03450)]: + - @frontify/sidebar-settings@0.1.0 ## 0.25.12 ### Patch Changes -- [`d89d0e0`](https://github.com/Frontify/brand-sdk/commit/d89d0e06be900fd6bba897d05ad8427e5d44f1f0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Allow beta versions of Fondue +- [`d89d0e0`](https://github.com/Frontify/brand-sdk/commit/d89d0e06be900fd6bba897d05ad8427e5d44f1f0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Allow beta versions of Fondue -- Updated dependencies [[`d89d0e0`](https://github.com/Frontify/brand-sdk/commit/d89d0e06be900fd6bba897d05ad8427e5d44f1f0)]: - - @frontify/sidebar-settings@0.0.16 +- Updated dependencies [[`d89d0e0`](https://github.com/Frontify/brand-sdk/commit/d89d0e06be900fd6bba897d05ad8427e5d44f1f0)]: + - @frontify/sidebar-settings@0.0.16 ## 0.25.11 ### Patch Changes -- [`0198626`](https://github.com/Frontify/brand-sdk/commit/0198626b9d8e49f31d861a05e15ca6e59d349b59) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`0198626`](https://github.com/Frontify/brand-sdk/commit/0198626b9d8e49f31d861a05e15ca6e59d349b59) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- Updated dependencies [[`2f58027`](https://github.com/Frontify/brand-sdk/commit/2f580271ca0540729539da3dfe66286ee3f50eda), [`0198626`](https://github.com/Frontify/brand-sdk/commit/0198626b9d8e49f31d861a05e15ca6e59d349b59)]: - - @frontify/sidebar-settings@0.0.14 +- Updated dependencies [[`2f58027`](https://github.com/Frontify/brand-sdk/commit/2f580271ca0540729539da3dfe66286ee3f50eda), [`0198626`](https://github.com/Frontify/brand-sdk/commit/0198626b9d8e49f31d861a05e15ca6e59d349b59)]: + - @frontify/sidebar-settings@0.0.14 ## 0.25.10 ### Patch Changes -- [`5fb81d6`](https://github.com/Frontify/brand-sdk/commit/5fb81d6a3f8e0bd7083b2a2c1cc95b7a2d98e395) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`5fb81d6`](https://github.com/Frontify/brand-sdk/commit/5fb81d6a3f8e0bd7083b2a2c1cc95b7a2d98e395) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#329](https://github.com/Frontify/brand-sdk/pull/329) [`d2ecd25`](https://github.com/Frontify/brand-sdk/commit/d2ecd2592d129d40de72d4793c8848f2f291f896) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add font input setting +- [#329](https://github.com/Frontify/brand-sdk/pull/329) [`d2ecd25`](https://github.com/Frontify/brand-sdk/commit/d2ecd2592d129d40de72d4793c8848f2f291f896) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add font input setting -- [`45653fa`](https://github.com/Frontify/brand-sdk/commit/45653faaf4168517ccbb3a9775bbf88871149692) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`45653fa`](https://github.com/Frontify/brand-sdk/commit/45653faaf4168517ccbb3a9775bbf88871149692) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- Updated dependencies [[`5fb81d6`](https://github.com/Frontify/brand-sdk/commit/5fb81d6a3f8e0bd7083b2a2c1cc95b7a2d98e395), [`d2ecd25`](https://github.com/Frontify/brand-sdk/commit/d2ecd2592d129d40de72d4793c8848f2f291f896), [`45653fa`](https://github.com/Frontify/brand-sdk/commit/45653faaf4168517ccbb3a9775bbf88871149692)]: - - @frontify/sidebar-settings@0.0.13 +- Updated dependencies [[`5fb81d6`](https://github.com/Frontify/brand-sdk/commit/5fb81d6a3f8e0bd7083b2a2c1cc95b7a2d98e395), [`d2ecd25`](https://github.com/Frontify/brand-sdk/commit/d2ecd2592d129d40de72d4793c8848f2f291f896), [`45653fa`](https://github.com/Frontify/brand-sdk/commit/45653faaf4168517ccbb3a9775bbf88871149692)]: + - @frontify/sidebar-settings@0.0.13 ## 0.25.9 ### Patch Changes -- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add clearable to color input and dropdown +- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add clearable to color input and dropdown -- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- Updated dependencies [[`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f), [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f)]: - - @frontify/sidebar-settings@0.0.12 +- Updated dependencies [[`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f), [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f)]: + - @frontify/sidebar-settings@0.0.12 ## 0.25.8 ### Patch Changes -- Updated dependencies [[`fa95406`](https://github.com/Frontify/brand-sdk/commit/fa9540631337193ffa0225a58f7b7b46b4f48e2a)]: - - @frontify/sidebar-settings@0.0.11 +- Updated dependencies [[`fa95406`](https://github.com/Frontify/brand-sdk/commit/fa9540631337193ffa0225a58f7b7b46b4f48e2a)]: + - @frontify/sidebar-settings@0.0.11 ## 0.25.7 ### Patch Changes -- [#299](https://github.com/Frontify/brand-sdk/pull/299) [`187466a`](https://github.com/Frontify/brand-sdk/commit/187466ae50c08f4abf5d0b257951ccf083d6344d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update to Vite 4 and TS 4.9 +- [#299](https://github.com/Frontify/brand-sdk/pull/299) [`187466a`](https://github.com/Frontify/brand-sdk/commit/187466ae50c08f4abf5d0b257951ccf083d6344d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update to Vite 4 and TS 4.9 -- [`e47c574`](https://github.com/Frontify/brand-sdk/commit/e47c5747ab1041a62dc880fa92436b8ab464bfef) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`e47c574`](https://github.com/Frontify/brand-sdk/commit/e47c5747ab1041a62dc880fa92436b8ab464bfef) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`3afb60d`](https://github.com/Frontify/brand-sdk/commit/3afb60d849a8ffb262aed4dc8e53d46b9b9a04ea) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Move App Bridge from peerDependencies to dependencies +- [`3afb60d`](https://github.com/Frontify/brand-sdk/commit/3afb60d849a8ffb262aed4dc8e53d46b9b9a04ea) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Move App Bridge from peerDependencies to dependencies -- [`64a68da`](https://github.com/Frontify/brand-sdk/commit/64a68da0d60cf0e529d534ae120ee1a35c1d587d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export `SimpleSettingBlock` type +- [`64a68da`](https://github.com/Frontify/brand-sdk/commit/64a68da0d60cf0e529d534ae120ee1a35c1d587d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export `SimpleSettingBlock` type -- Updated dependencies [[`187466a`](https://github.com/Frontify/brand-sdk/commit/187466ae50c08f4abf5d0b257951ccf083d6344d), [`e47c574`](https://github.com/Frontify/brand-sdk/commit/e47c5747ab1041a62dc880fa92436b8ab464bfef), [`3afb60d`](https://github.com/Frontify/brand-sdk/commit/3afb60d849a8ffb262aed4dc8e53d46b9b9a04ea)]: - - @frontify/sidebar-settings@0.0.10 +- Updated dependencies [[`187466a`](https://github.com/Frontify/brand-sdk/commit/187466ae50c08f4abf5d0b257951ccf083d6344d), [`e47c574`](https://github.com/Frontify/brand-sdk/commit/e47c5747ab1041a62dc880fa92436b8ab464bfef), [`3afb60d`](https://github.com/Frontify/brand-sdk/commit/3afb60d849a8ffb262aed4dc8e53d46b9b9a04ea)]: + - @frontify/sidebar-settings@0.0.10 ## 0.25.6 ### Patch Changes -- Updated dependencies [[`ff4cf93`](https://github.com/Frontify/brand-sdk/commit/ff4cf935fbffa4933b31eeea6cad3a0c89b8bf88)]: - - @frontify/sidebar-settings@0.0.9 +- Updated dependencies [[`ff4cf93`](https://github.com/Frontify/brand-sdk/commit/ff4cf935fbffa4933b31eeea6cad3a0c89b8bf88)]: + - @frontify/sidebar-settings@0.0.9 ## 0.25.5 ### Patch Changes -- [`4063217`](https://github.com/Frontify/brand-sdk/commit/4063217a946f0896f7dd3aacbc0b21f4c355b21c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`4063217`](https://github.com/Frontify/brand-sdk/commit/4063217a946f0896f7dd3aacbc0b21f4c355b21c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`13be4e4`](https://github.com/Frontify/brand-sdk/commit/13be4e40dee7cc13c20de53d2c5c44a1ee1c3c8f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export more types with generic +- [`13be4e4`](https://github.com/Frontify/brand-sdk/commit/13be4e40dee7cc13c20de53d2c5c44a1ee1c3c8f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export more types with generic -- Updated dependencies [[`4063217`](https://github.com/Frontify/brand-sdk/commit/4063217a946f0896f7dd3aacbc0b21f4c355b21c)]: - - @frontify/sidebar-settings@0.0.8 +- Updated dependencies [[`4063217`](https://github.com/Frontify/brand-sdk/commit/4063217a946f0896f7dd3aacbc0b21f4c355b21c)]: + - @frontify/sidebar-settings@0.0.8 ## 0.25.4 ### Patch Changes -- [`56eecbe`](https://github.com/Frontify/brand-sdk/commit/56eecbe5c5b60080d814dc5678510af8aeb111f8) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add more export with AppBridge passed to generic +- [`56eecbe`](https://github.com/Frontify/brand-sdk/commit/56eecbe5c5b60080d814dc5678510af8aeb111f8) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add more export with AppBridge passed to generic ## 0.25.3 ### Patch Changes -- [`f140510`](https://github.com/Frontify/brand-sdk/commit/f14051013520f73a9e60bcbac704eb607a69468a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Added documentation link to the types. - Added custom section handling in types. -- Updated dependencies [[`ac89fc6`](https://github.com/Frontify/brand-sdk/commit/ac89fc60cdf58d1a7cae2aae2a057c744fc7e9b6)]: - - @frontify/sidebar-settings@0.0.7 +- [`f140510`](https://github.com/Frontify/brand-sdk/commit/f14051013520f73a9e60bcbac704eb607a69468a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Added documentation link to the types. + Added custom section handling in types. +- Updated dependencies [[`ac89fc6`](https://github.com/Frontify/brand-sdk/commit/ac89fc60cdf58d1a7cae2aae2a057c744fc7e9b6)]: + - @frontify/sidebar-settings@0.0.7 ## 0.25.2 ### Patch Changes -- Updated dependencies [[`e58c9d5`](https://github.com/Frontify/brand-sdk/commit/e58c9d5ef0b20e33d91c831f4b19c37afae4f9aa), [`b651e3d`](https://github.com/Frontify/brand-sdk/commit/b651e3d06d19cbf9de6e85ed58aae8a9f2ed2615)]: - - @frontify/sidebar-settings@0.0.6 +- Updated dependencies [[`e58c9d5`](https://github.com/Frontify/brand-sdk/commit/e58c9d5ef0b20e33d91c831f4b19c37afae4f9aa), [`b651e3d`](https://github.com/Frontify/brand-sdk/commit/b651e3d06d19cbf9de6e85ed58aae8a9f2ed2615)]: + - @frontify/sidebar-settings@0.0.6 ## 0.25.1 ### Patch Changes -- [`712730e`](https://github.com/Frontify/frontify-cli/commit/712730ec8abda54a1fbc6df5447dcd10fd159ed1) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - export `SettingBlock` with generic +- [`712730e`](https://github.com/Frontify/frontify-cli/commit/712730ec8abda54a1fbc6df5447dcd10fd159ed1) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - export `SettingBlock` with generic -- Updated dependencies [[`d4bd194`](https://github.com/Frontify/frontify-cli/commit/d4bd194133470d2a212be80d14e299e63bc12783)]: - - @frontify/sidebar-settings@0.0.5 +- Updated dependencies [[`d4bd194`](https://github.com/Frontify/frontify-cli/commit/d4bd194133470d2a212be80d14e299e63bc12783)]: + - @frontify/sidebar-settings@0.0.5 ## 0.24.3 ### Patch Changes -- Updated dependencies [[`ab6318e`](https://github.com/Frontify/frontify-cli/commit/ab6318e02b460271fa4ca4d80aa2f95f70a1db2d)]: - - @frontify/sidebar-settings@0.0.4 +- Updated dependencies [[`ab6318e`](https://github.com/Frontify/frontify-cli/commit/ab6318e02b460271fa4ca4d80aa2f95f70a1db2d)]: + - @frontify/sidebar-settings@0.0.4 ## 0.24.2 ### Patch Changes -- [#279](https://github.com/Frontify/frontify-cli/pull/279) [`aa91a2d`](https://github.com/Frontify/frontify-cli/commit/aa91a2d7df7e8f6947b1852d2d2a4d1a12e0d5af) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export everything from the sidebar types +- [#279](https://github.com/Frontify/frontify-cli/pull/279) [`aa91a2d`](https://github.com/Frontify/frontify-cli/commit/aa91a2d7df7e8f6947b1852d2d2a4d1a12e0d5af) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export everything from the sidebar types -- Updated dependencies [[`aa91a2d`](https://github.com/Frontify/frontify-cli/commit/aa91a2d7df7e8f6947b1852d2d2a4d1a12e0d5af)]: - - @frontify/sidebar-settings@0.0.3 +- Updated dependencies [[`aa91a2d`](https://github.com/Frontify/frontify-cli/commit/aa91a2d7df7e8f6947b1852d2d2a4d1a12e0d5af)]: + - @frontify/sidebar-settings@0.0.3 ## 0.24.1 ### Patch Changes -- [#277](https://github.com/Frontify/frontify-cli/pull/277) [`6e3bb0c`](https://github.com/Frontify/frontify-cli/commit/6e3bb0cf08bc616496dcb413dbde8d95094b3a9d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Use `@frontify/sidebar-settings` type package +- [#277](https://github.com/Frontify/frontify-cli/pull/277) [`6e3bb0c`](https://github.com/Frontify/frontify-cli/commit/6e3bb0cf08bc616496dcb413dbde8d95094b3a9d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Use `@frontify/sidebar-settings` type package -- Updated dependencies [[`6e3bb0c`](https://github.com/Frontify/frontify-cli/commit/6e3bb0cf08bc616496dcb413dbde8d95094b3a9d)]: - - @frontify/sidebar-settings@0.0.2 +- Updated dependencies [[`6e3bb0c`](https://github.com/Frontify/frontify-cli/commit/6e3bb0cf08bc616496dcb413dbde8d95094b3a9d)]: + - @frontify/sidebar-settings@0.0.2 diff --git a/packages/guideline-blocks-settings/package.json b/packages/guideline-blocks-settings/package.json index 2322e1099..ea7045ecb 100644 --- a/packages/guideline-blocks-settings/package.json +++ b/packages/guideline-blocks-settings/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-blocks-settings", "type": "module", - "version": "0.35.0", + "version": "0.36.0", "description": "Provides types and helpers for the guideline block development", "author": "Frontify Developers ", "repository": { @@ -49,15 +49,15 @@ "@dnd-kit/core": "^6.1.0", "@dnd-kit/modifiers": "^7.0.0", "@dnd-kit/sortable": "^8.0.0", - "@frontify/fondue": "^12.0.10", + "@frontify/fondue": "^12.1.8", "@frontify/sidebar-settings": "workspace:^", "@react-aria/focus": "^3.16.2", - "@react-stately/overlays": "^3.6.5" + "@react-stately/overlays": "^3.6.5", + "@tailwindcss/container-queries": "^0.1.1" }, "devDependencies": { "@babel/core": "^7.24.4", "@frontify/eslint-config-react": "0.17.6", - "@tailwindcss/container-queries": "^0.1.1", "@testing-library/jest-dom": "^6.4.2", "@testing-library/react": "^14.3.0", "@testing-library/user-event": "14.5.2", diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.spec.ct.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.spec.ct.tsx index 046b8295e..3a42cb400 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.spec.ct.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.spec.ct.tsx @@ -7,10 +7,19 @@ import { type SinonStub } from 'sinon'; import { convertToRteValue } from '../../helpers'; -import { ButtonPlugin, LinkPlugin, RichTextEditor, TextStyles, getDefaultPluginsWithLinkChooser } from '.'; +import { + BreakAfterPlugin, + ButtonPlugin, + LinkPlugin, + RichTextEditor, + TextStyles, + getDefaultPluginsWithLinkChooser, +} from '.'; const RteHtmlSelector = '[data-test-id="rte-content-html"]'; const RichTextSelector = '[data-test-id="rich-text-editor"]'; +const RichTextContentSelector = '[data-test-id="rich-text-editor"] [contenteditable]'; +const RichTextContainerSelector = '[data-test-id="rich-text-editor-container"]'; const ButtonSelector = '[data-test-id="button"]'; const CheckboxSelector = '[data-test-id="checkbox-icon-box"]'; const ToolbarButtonSelector = '[data-testid="ToolbarButton"]'; @@ -247,4 +256,39 @@ describe('RichTextEditor', () => { cy.get(FloatingButtonModalSelector).find(ButtonSelector).last().click(); cy.get(RichTextSelector).find('a[href="/r/document"]').should('exist'); }); + + it('should render responsive columns in edit mode', () => { + (appBridge.getDocumentGroups as SinonStub) = cy.stub().returns([]); + (appBridge.getAllDocuments as SinonStub) = cy.stub().returns(Promise.resolve(apiDocuments)); + + mount( + , + ); + cy.get(RichTextContainerSelector).should('have.class', 'tw-@container'); + cy.get(RichTextContentSelector).should('have.class', 'tw-columns-1 @sm:!tw-columns-2 @md:!tw-columns-4'); + cy.get(RichTextContentSelector).should('have.css', 'column-gap', '30px'); + }); + + it('should render responsive columns in view mode', () => { + (appBridge.getDocumentGroups as SinonStub) = cy.stub().returns([]); + (appBridge.getAllDocuments as SinonStub) = cy.stub().returns(Promise.resolve(apiDocuments)); + + mount( + , + ); + + cy.get(RichTextContainerSelector).should('have.class', 'tw-@container'); + cy.get(`${RteHtmlSelector} > div`).should('have.class', 'tw-columns-1 @sm:!tw-columns-2 @md:!tw-columns-4'); + cy.get(`${RteHtmlSelector} > div`).should('have.css', 'column-gap', '30px'); + }); }); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.tsx index 91294845b..d4cefbff5 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/RichTextEditor.tsx @@ -7,6 +7,7 @@ import { useIsInViewport } from '../../hooks/useIsInViewport'; import { SerializedText } from './SerializedText'; import { floatingButtonActions, floatingButtonSelectors } from './plugins/ButtonPlugin/components'; +import { getResponsiveColumnClasses } from './plugins/ColumnBreakPlugin/helpers'; import { type RichTextEditorProps } from './types'; const InternalRichTextEditor = memo( @@ -21,6 +22,7 @@ const InternalRichTextEditor = memo( onTextChange, showSerializedText, }: Omit & { isEnabled: boolean }) => { + const customClass = getResponsiveColumnClasses(columns); const [shouldPreventPageLeave, setShouldPreventPageLeave] = useState(false); const handleTextChange = useCallback( @@ -68,7 +70,15 @@ const InternalRichTextEditor = memo( /> ); } - return ; + return ( + + ); }, ); InternalRichTextEditor.displayName = 'InternalRichTextEditor'; @@ -94,7 +104,7 @@ export const RichTextEditor = (props: RichTextEditorProps) => { }, [isEditing]); return ( -
+
); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/SerializedText.tsx b/packages/guideline-blocks-settings/src/components/RichTextEditor/SerializedText.tsx index 68c01b00e..3674ca292 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/SerializedText.tsx +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/SerializedText.tsx @@ -5,14 +5,14 @@ import { useEffect, useState } from 'react'; import { type SerializedTextProps } from './types'; -export const SerializedText = ({ value = '', gap, columns, show = true, plugins }: SerializedTextProps) => { +export const SerializedText = ({ value = '', gap, customClass, show = true, plugins }: SerializedTextProps) => { const [html, setHtml] = useState(null); useEffect(() => { (async () => { - setHtml(await serializeRawToHtmlAsync(value, plugins, columns, gap)); + setHtml(await serializeRawToHtmlAsync(value, plugins, undefined, gap, customClass)); })(); - }, [value, columns, gap, plugins]); + }, [value, gap, plugins, customClass]); if (!show || html === '
') { return null; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/ColumnBreakPlugin.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/ColumnBreakPlugin.ts new file mode 100644 index 000000000..9faf6675d --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/ColumnBreakPlugin.ts @@ -0,0 +1,28 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type PlatePlugin, Plugin, createColumnBreakPlugin, ColumnBreakButton } from '@frontify/fondue'; +import { type CSSProperties } from 'react'; + +import { getResponsiveColumnClasses } from './helpers'; + +export const KEY_ELEMENT_BREAK_AFTER_COLUMN = 'breakAfterColumn'; +export const GAP_DEFAULT = 'normal'; + +export class BreakAfterPlugin extends Plugin { + private columns: number; + private gap: CSSProperties['gap']; + private customClass: string | undefined; + constructor(props?: { columns?: number; gap?: string | number }) { + super('break-after-plugin', { + button: ColumnBreakButton, + ...props, + }); + this.columns = props?.columns ?? 1; + this.gap = props?.gap ?? GAP_DEFAULT; + this.customClass = getResponsiveColumnClasses(this.columns); + } + + plugins(): PlatePlugin[] { + return [createColumnBreakPlugin(this.columns, this.gap, this.customClass)]; + } +} diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/helper.spec.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/helper.spec.ts new file mode 100644 index 000000000..05c281423 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/helper.spec.ts @@ -0,0 +1,21 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it, test } from 'vitest'; + +import { columnClassMap, getResponsiveColumnClasses } from './helpers'; + +describe('RichTextEditor helpers', () => { + it('should return empty string if no column count is provided', () => { + expect(getResponsiveColumnClasses()).toBe(''); + }); + + test.each([ + [1, columnClassMap[1]], + [2, columnClassMap[2]], + [3, columnClassMap[3]], + [4, columnClassMap[4]], + [123, columnClassMap[1]], + ])('should return the proper classes for %i column count', (columnCount, expectedClasses) => { + expect(getResponsiveColumnClasses(columnCount)).toBe(expectedClasses); + }); +}); diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/helpers.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/helpers.ts new file mode 100644 index 000000000..0d9661f4a --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/helpers.ts @@ -0,0 +1,17 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export const columnClassMap = { + 1: 'tw-columns-1', + 2: 'tw-columns-1 @sm:!tw-columns-2', + 3: 'tw-columns-1 @sm:!tw-columns-2 @md:!tw-columns-3', + 4: 'tw-columns-1 @sm:!tw-columns-2 @md:!tw-columns-4', + 5: 'tw-columns-1 @sm:!tw-columns-2 @md:!tw-columns-5', +}; + +export const getResponsiveColumnClasses = (columnCount?: number) => { + if (!columnCount) { + return ''; + } + + return columnClassMap[columnCount as keyof typeof columnClassMap] || columnClassMap[1]; +}; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/index.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/index.ts new file mode 100644 index 000000000..53e80e5f4 --- /dev/null +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/ColumnBreakPlugin/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './ColumnBreakPlugin'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/index.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/index.ts index ce3e47507..eab295762 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/index.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/plugins/index.ts @@ -2,5 +2,6 @@ export * from './LinkPlugin'; export * from './ButtonPlugin'; +export * from './ColumnBreakPlugin'; export * from './TextStylePlugins'; export * from './styles'; diff --git a/packages/guideline-blocks-settings/src/components/RichTextEditor/types.ts b/packages/guideline-blocks-settings/src/components/RichTextEditor/types.ts index a7e562b94..125e0e44d 100644 --- a/packages/guideline-blocks-settings/src/components/RichTextEditor/types.ts +++ b/packages/guideline-blocks-settings/src/components/RichTextEditor/types.ts @@ -17,7 +17,7 @@ export type RichTextEditorProps = { export type SerializedTextProps = { value?: string; show?: boolean; - columns?: number; gap?: string; + customClass?: string; plugins?: PluginComposer; }; diff --git a/packages/guideline-blocks-settings/tailwind.config.ts b/packages/guideline-blocks-settings/tailwind.config.ts index 90e847c21..ec29e2877 100644 --- a/packages/guideline-blocks-settings/tailwind.config.ts +++ b/packages/guideline-blocks-settings/tailwind.config.ts @@ -1,12 +1,14 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ +import containerQueryPlugin from '@tailwindcss/container-queries'; + module.exports = { presets: [require('@frontify/fondue/tailwind')], content: ['src/**/*.{ts,tsx}'], corePlugins: { preflight: false, }, - plugins: [require('@tailwindcss/container-queries')], + plugins: [containerQueryPlugin], theme: { extend: { colors: { diff --git a/packages/guideline-blocks-settings/vite.config.ts b/packages/guideline-blocks-settings/vite.config.ts index 466f2143a..0d50c0efa 100644 --- a/packages/guideline-blocks-settings/vite.config.ts +++ b/packages/guideline-blocks-settings/vite.config.ts @@ -33,7 +33,7 @@ export default defineConfig({ test: { environment: 'happy-dom', deps: { - inline: ['clsx', '@juggle/resize-observer'], + inline: ['clsx', '@juggle/resize-observer', '@frontify/fondue'], }, setupFiles: ['setupTests.ts'], }, diff --git a/packages/platform-app/CHANGELOG.md b/packages/platform-app/CHANGELOG.md index 8bd017ee8..38626c206 100644 --- a/packages/platform-app/CHANGELOG.md +++ b/packages/platform-app/CHANGELOG.md @@ -1,137 +1,144 @@ # @frontify/platform-app +## 0.1.6 + +### Patch Changes + +- Updated dependencies [[`be18559`](https://github.com/Frontify/brand-sdk/commit/be18559f7e31e2ad738fd4c875d119f8c839fa4d)]: + - @frontify/sidebar-settings@0.9.18 + ## 0.1.5 ### Patch Changes -- Updated dependencies [[`7baceff`](https://github.com/Frontify/brand-sdk/commit/7baceffc87773e9f6a1e169aa45151b92c614cbc)]: - - @frontify/sidebar-settings@0.9.17 +- Updated dependencies [[`7baceff`](https://github.com/Frontify/brand-sdk/commit/7baceffc87773e9f6a1e169aa45151b92c614cbc)]: + - @frontify/sidebar-settings@0.9.17 ## 0.1.4 ### Patch Changes -- Updated dependencies [[`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8)]: - - @frontify/sidebar-settings@0.9.16 +- Updated dependencies [[`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8)]: + - @frontify/sidebar-settings@0.9.16 ## 0.1.3 ### Patch Changes -- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` -- Updated dependencies [[`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d)]: - - @frontify/sidebar-settings@0.9.15 +- Updated dependencies [[`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d)]: + - @frontify/sidebar-settings@0.9.15 ## 0.1.2 ### Patch Changes -- Updated dependencies [[`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc)]: - - @frontify/sidebar-settings@0.9.14 +- Updated dependencies [[`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc)]: + - @frontify/sidebar-settings@0.9.14 ## 0.1.1 ### Patch Changes -- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files +- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files -- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies +- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies -- Updated dependencies [[`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab), [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be), [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c)]: - - @frontify/sidebar-settings@0.9.13 +- Updated dependencies [[`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab), [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be), [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c)]: + - @frontify/sidebar-settings@0.9.13 ## 0.1.0 ### Minor Changes -- [#851](https://github.com/Frontify/brand-sdk/pull/851) [`b29b41a`](https://github.com/Frontify/brand-sdk/commit/b29b41af4ae61e01e71c0d82653c6b3e00e87ccb) Thanks [@julianiff](https://github.com/julianiff)! - feat: restrict settings options +- [#851](https://github.com/Frontify/brand-sdk/pull/851) [`b29b41a`](https://github.com/Frontify/brand-sdk/commit/b29b41af4ae61e01e71c0d82653c6b3e00e87ccb) Thanks [@julianiff](https://github.com/julianiff)! - feat: restrict settings options ## 0.0.16 ### Patch Changes -- Updated dependencies [[`b116dec`](https://github.com/Frontify/brand-sdk/commit/b116decf09a486d5c25e8f9cf9e4213cd2c65d3c)]: - - @frontify/sidebar-settings@0.9.12 +- Updated dependencies [[`b116dec`](https://github.com/Frontify/brand-sdk/commit/b116decf09a486d5c25e8f9cf9e4213cd2c65d3c)]: + - @frontify/sidebar-settings@0.9.12 ## 0.0.15 ### Patch Changes -- Updated dependencies [[`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f)]: - - @frontify/sidebar-settings@0.9.11 +- Updated dependencies [[`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f)]: + - @frontify/sidebar-settings@0.9.11 ## 0.0.14 ### Patch Changes -- Updated dependencies [[`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1)]: - - @frontify/sidebar-settings@0.9.10 +- Updated dependencies [[`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1)]: + - @frontify/sidebar-settings@0.9.10 ## 0.0.13 ### Patch Changes -- Updated dependencies [[`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c)]: - - @frontify/sidebar-settings@0.9.9 +- Updated dependencies [[`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c)]: + - @frontify/sidebar-settings@0.9.9 ## 0.0.12 ### Patch Changes -- Updated dependencies [[`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce)]: - - @frontify/sidebar-settings@0.9.8 +- Updated dependencies [[`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce)]: + - @frontify/sidebar-settings@0.9.8 ## 0.0.11 ### Patch Changes -- Updated dependencies [[`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32)]: - - @frontify/sidebar-settings@0.9.7 +- Updated dependencies [[`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32)]: + - @frontify/sidebar-settings@0.9.7 ## 0.0.10 ### Patch Changes -- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages +- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages -- Updated dependencies [[`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d)]: - - @frontify/sidebar-settings@0.9.6 +- Updated dependencies [[`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d)]: + - @frontify/sidebar-settings@0.9.6 ## 0.0.9 ### Patch Changes -- [`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix broken build produced in `dev` branch +- [`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix broken build produced in `dev` branch -- Updated dependencies [[`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00)]: - - @frontify/sidebar-settings@0.9.5 +- Updated dependencies [[`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00)]: + - @frontify/sidebar-settings@0.9.5 ## 0.0.8 ### Patch Changes -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM +- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Lint with newer version of Frontify eslint config +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Lint with newer version of Frontify eslint config -- Updated dependencies [[`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7), [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a), [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7)]: - - @frontify/sidebar-settings@0.9.4 +- Updated dependencies [[`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7), [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a), [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7)]: + - @frontify/sidebar-settings@0.9.4 ## 0.0.7 ### Patch Changes -- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- Updated dependencies [[`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6)]: - - @frontify/sidebar-settings@0.9.3 +- Updated dependencies [[`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6)]: + - @frontify/sidebar-settings@0.9.3 ## 0.0.6 ### Patch Changes -- Updated dependencies [[`7f57867`](https://github.com/Frontify/brand-sdk/commit/7f57867274c7ba21a0a1ab5ecc46852d559d968d)]: - - @frontify/sidebar-settings@0.9.2 +- Updated dependencies [[`7f57867`](https://github.com/Frontify/brand-sdk/commit/7f57867274c7ba21a0a1ab5ecc46852d559d968d)]: + - @frontify/sidebar-settings@0.9.2 diff --git a/packages/platform-app/package.json b/packages/platform-app/package.json index 6df0aee08..cace5cfd0 100644 --- a/packages/platform-app/package.json +++ b/packages/platform-app/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/platform-app", "type": "module", - "version": "0.1.5", + "version": "0.1.6", "description": "Provides the types for the Apps", "author": "Frontify Developers ", "repository": { diff --git a/packages/sidebar-settings/CHANGELOG.md b/packages/sidebar-settings/CHANGELOG.md index 5ac6d41ee..74435d408 100644 --- a/packages/sidebar-settings/CHANGELOG.md +++ b/packages/sidebar-settings/CHANGELOG.md @@ -1,444 +1,450 @@ # @frontify/sidebar-settings +## 0.9.18 + +### Patch Changes + +- [#976](https://github.com/Frontify/brand-sdk/pull/976) [`be18559`](https://github.com/Frontify/brand-sdk/commit/be18559f7e31e2ad738fd4c875d119f8c839fa4d) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue dependency to 12.1.8 + ## 0.9.17 ### Patch Changes -- [#944](https://github.com/Frontify/brand-sdk/pull/944) [`7baceff`](https://github.com/Frontify/brand-sdk/commit/7baceffc87773e9f6a1e169aa45151b92c614cbc) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - refactor: decouple Fondue from the sidebar settings +- [#944](https://github.com/Frontify/brand-sdk/pull/944) [`7baceff`](https://github.com/Frontify/brand-sdk/commit/7baceffc87773e9f6a1e169aa45151b92c614cbc) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - refactor: decouple Fondue from the sidebar settings ## 0.9.16 ### Patch Changes -- [#907](https://github.com/Frontify/brand-sdk/pull/907) [`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump `@frontify/fondue` to `12.0.10` +- [#907](https://github.com/Frontify/brand-sdk/pull/907) [`f824d37`](https://github.com/Frontify/brand-sdk/commit/f824d371ed6fb8f46a22ca39d2a8e211a9fb4ca8) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump `@frontify/fondue` to `12.0.10` ## 0.9.15 ### Patch Changes -- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` +- [#892](https://github.com/Frontify/brand-sdk/pull/892) [`fe3323c`](https://github.com/Frontify/brand-sdk/commit/fe3323ccb4c6b9c18bc5eee9564b3468e645fa4d) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `vite` to `5.2.10` ## 0.9.14 ### Patch Changes -- [#890](https://github.com/Frontify/brand-sdk/pull/890) [`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.7` +- [#890](https://github.com/Frontify/brand-sdk/pull/890) [`c7712e8`](https://github.com/Frontify/brand-sdk/commit/c7712e84ec90b6db1b23a23c56db63ed90d812bc) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.7` ## 0.9.13 ### Patch Changes -- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files +- [#853](https://github.com/Frontify/brand-sdk/pull/853) [`d980eb3`](https://github.com/Frontify/brand-sdk/commit/d980eb367062b4c4cd6416f852408da4f13c74ab) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: update eslint and lint fix all files -- [#857](https://github.com/Frontify/brand-sdk/pull/857) [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.0-beta.427` +- [#857](https://github.com/Frontify/brand-sdk/pull/857) [`7d818d8`](https://github.com/Frontify/brand-sdk/commit/7d818d88eb5b18da2015c3a9f823350e507be3be) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump `@frontify/fondue` to `12.0.0-beta.427` -- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies +- [#855](https://github.com/Frontify/brand-sdk/pull/855) [`bcfe9ab`](https://github.com/Frontify/brand-sdk/commit/bcfe9abea8872b8341b053159827a953bdbea16c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: bump dependencies ## 0.9.12 ### Patch Changes -- [#832](https://github.com/Frontify/brand-sdk/pull/832) [`b116dec`](https://github.com/Frontify/brand-sdk/commit/b116decf09a486d5c25e8f9cf9e4213cd2c65d3c) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add assetInput 'allowDelete' optional prop +- [#832](https://github.com/Frontify/brand-sdk/pull/832) [`b116dec`](https://github.com/Frontify/brand-sdk/commit/b116decf09a486d5c25e8f9cf9e4213cd2c65d3c) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add assetInput 'allowDelete' optional prop ## 0.9.11 ### Patch Changes -- [#815](https://github.com/Frontify/brand-sdk/pull/815) [`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue to 12.0.0-beta.415 +- [#815](https://github.com/Frontify/brand-sdk/pull/815) [`17491e9`](https://github.com/Frontify/brand-sdk/commit/17491e923d9b66d158ee03003b3ac47899e6423f) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue to 12.0.0-beta.415 ## 0.9.10 ### Patch Changes -- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to ^12.0.0-beta.411 +- [#803](https://github.com/Frontify/brand-sdk/pull/803) [`b4a72a2`](https://github.com/Frontify/brand-sdk/commit/b4a72a23c7ea5aa65beb1b264fb36930c0493ba1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to ^12.0.0-beta.411 ## 0.9.9 ### Patch Changes -- [#800](https://github.com/Frontify/brand-sdk/pull/800) [`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to 12.0.0-beta.410 +- [#800](https://github.com/Frontify/brand-sdk/pull/800) [`7e83e75`](https://github.com/Frontify/brand-sdk/commit/7e83e75243fdbfc5379be3bdf15c210039c4459c) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: bump @frontify/fondue to 12.0.0-beta.410 ## 0.9.8 ### Patch Changes -- [#796](https://github.com/Frontify/brand-sdk/pull/796) [`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue +- [#796](https://github.com/Frontify/brand-sdk/pull/796) [`d24dcf3`](https://github.com/Frontify/brand-sdk/commit/d24dcf3fd78a871229e64b82690084ccfbd521ce) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue ## 0.9.7 ### Patch Changes -- [#750](https://github.com/Frontify/brand-sdk/pull/750) [`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue +- [#750](https://github.com/Frontify/brand-sdk/pull/750) [`8b4ded2`](https://github.com/Frontify/brand-sdk/commit/8b4ded214bd781c5aa3c917121bc013f4262da32) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue ## 0.9.6 ### Patch Changes -- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages +- [`babce0e`](https://github.com/Frontify/brand-sdk/commit/babce0eb251fa78ef9c7b4c2c0ce740c7d66718d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add the dist folder to published packages ## 0.9.5 ### Patch Changes -- [`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix broken build produced in `dev` branch +- [`de53c69`](https://github.com/Frontify/brand-sdk/commit/de53c69b43e3f0a9b245cc2b193d6edef390dc00) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix broken build produced in `dev` branch ## 0.9.4 ### Patch Changes -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM +- [#776](https://github.com/Frontify/brand-sdk/pull/776) [`29ef8e1`](https://github.com/Frontify/brand-sdk/commit/29ef8e1e64a6372d580af06a86ef39ca2052662a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Remove CJS to embrace ESM -- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Lint with newer version of Frontify eslint config +- [`b0424c0`](https://github.com/Frontify/brand-sdk/commit/b0424c0a6dc1beef011c0d32124f53aed2e2a4b7) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Lint with newer version of Frontify eslint config ## 0.9.3 ### Patch Changes -- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#766](https://github.com/Frontify/brand-sdk/pull/766) [`3775b46`](https://github.com/Frontify/brand-sdk/commit/3775b4651b6d700e7179a360190a92e7f0fe51e6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 0.9.2 ### Patch Changes -- [#759](https://github.com/Frontify/brand-sdk/pull/759) [`7f57867`](https://github.com/Frontify/brand-sdk/commit/7f57867274c7ba21a0a1ab5ecc46852d559d968d) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: typo on fontInput `aligmentChoiceValues` to `alignmentChoiceValues ` +- [#759](https://github.com/Frontify/brand-sdk/pull/759) [`7f57867`](https://github.com/Frontify/brand-sdk/commit/7f57867274c7ba21a0a1ab5ecc46852d559d968d) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: typo on fontInput `aligmentChoiceValues` to `alignmentChoiceValues ` ## 0.9.1 ### Patch Changes -- [#697](https://github.com/Frontify/brand-sdk/pull/697) [`759188b`](https://github.com/Frontify/brand-sdk/commit/759188b28219e23ef7ce19edbc2d5e3248270ea8) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bumps @frontify/fondue to 12.0.0-beta.396 +- [#697](https://github.com/Frontify/brand-sdk/pull/697) [`759188b`](https://github.com/Frontify/brand-sdk/commit/759188b28219e23ef7ce19edbc2d5e3248270ea8) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bumps @frontify/fondue to 12.0.0-beta.396 ## 0.9.0 ### Minor Changes -- [#694](https://github.com/Frontify/brand-sdk/pull/694) [`d79e69a`](https://github.com/Frontify/brand-sdk/commit/d79e69a1c6d8f901b7f91866a92fd0d99363f07d) Thanks [@ragi96](https://github.com/ragi96)! - chore: decouples the sidebar-settings from the app-bridge +- [#694](https://github.com/Frontify/brand-sdk/pull/694) [`d79e69a`](https://github.com/Frontify/brand-sdk/commit/d79e69a1c6d8f901b7f91866a92fd0d99363f07d) Thanks [@ragi96](https://github.com/ragi96)! - chore: decouples the sidebar-settings from the app-bridge ### Patch Changes -- [#695](https://github.com/Frontify/brand-sdk/pull/695) [`d7764c1`](https://github.com/Frontify/brand-sdk/commit/d7764c129ee1d61aaed4ce519e70eb5d0984bfec) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump @frontify/fondue to v12.0.0-beta.395 +- [#695](https://github.com/Frontify/brand-sdk/pull/695) [`d7764c1`](https://github.com/Frontify/brand-sdk/commit/d7764c129ee1d61aaed4ce519e70eb5d0984bfec) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump @frontify/fondue to v12.0.0-beta.395 ## 0.8.3 ### Patch Changes -- Updated dependencies [[`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d)]: - - @frontify/app-bridge@3.0.2 +- Updated dependencies [[`3fa74ba`](https://github.com/Frontify/brand-sdk/commit/3fa74badfedd8c52661f23e0528dc35d8a10062d)]: + - @frontify/app-bridge@3.0.2 ## 0.8.2 ### Patch Changes -- Updated dependencies [[`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7)]: - - @frontify/app-bridge@3.0.1 +- Updated dependencies [[`a2b2ee7`](https://github.com/Frontify/brand-sdk/commit/a2b2ee78b8df136c823a3603c284aba4db08bbf7)]: + - @frontify/app-bridge@3.0.1 ## 0.8.1 ### Patch Changes -- [#636](https://github.com/Frontify/brand-sdk/pull/636) [`1dbc48e`](https://github.com/Frontify/brand-sdk/commit/1dbc48e9b8421a893d0b2da8f17ac201abc2b113) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [#636](https://github.com/Frontify/brand-sdk/pull/636) [`1dbc48e`](https://github.com/Frontify/brand-sdk/commit/1dbc48e9b8421a893d0b2da8f17ac201abc2b113) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- Updated dependencies [[`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929)]: - - @frontify/app-bridge@3.0.0 +- Updated dependencies [[`728cfd9`](https://github.com/Frontify/brand-sdk/commit/728cfd9e16a5c286fda4b2ae31dd96118c811929)]: + - @frontify/app-bridge@3.0.0 ## 0.8.0 ### Minor Changes -- [#638](https://github.com/Frontify/brand-sdk/pull/638) [`13ca57e`](https://github.com/Frontify/brand-sdk/commit/13ca57e7440e5d7175e54109b89eb8dc60eee4fd) Thanks [@mike85](https://github.com/mike85)! - feat: add minimumNumericalOrPixelRule +- [#638](https://github.com/Frontify/brand-sdk/pull/638) [`13ca57e`](https://github.com/Frontify/brand-sdk/commit/13ca57e7440e5d7175e54109b89eb8dc60eee4fd) Thanks [@mike85](https://github.com/mike85)! - feat: add minimumNumericalOrPixelRule ### Patch Changes -- [#639](https://github.com/Frontify/brand-sdk/pull/639) [`d55bd9f`](https://github.com/Frontify/brand-sdk/commit/d55bd9f39fdfa6e5c45a80744c058a605d81c893) Thanks [@mike85](https://github.com/mike85)! - feat: export minimumNumericalOrPixelRule +- [#639](https://github.com/Frontify/brand-sdk/pull/639) [`d55bd9f`](https://github.com/Frontify/brand-sdk/commit/d55bd9f39fdfa6e5c45a80744c058a605d81c893) Thanks [@mike85](https://github.com/mike85)! - feat: export minimumNumericalOrPixelRule ## 0.7.0 ### Minor Changes -- [#626](https://github.com/Frontify/brand-sdk/pull/626) [`8920ec9`](https://github.com/Frontify/brand-sdk/commit/8920ec993401caf94813974c7fad476c3decc2c6) Thanks [@mike85](https://github.com/mike85)! - feat: add url rule +- [#626](https://github.com/Frontify/brand-sdk/pull/626) [`8920ec9`](https://github.com/Frontify/brand-sdk/commit/8920ec993401caf94813974c7fad476c3decc2c6) Thanks [@mike85](https://github.com/mike85)! - feat: add url rule ### Patch Changes -- [#619](https://github.com/Frontify/brand-sdk/pull/619) [`dfe83ee`](https://github.com/Frontify/brand-sdk/commit/dfe83ee7417d3916d9bc52b96e600deb130bf147) Thanks [@anxobotana](https://github.com/anxobotana)! - extends fontInput typing +- [#619](https://github.com/Frontify/brand-sdk/pull/619) [`dfe83ee`](https://github.com/Frontify/brand-sdk/commit/dfe83ee7417d3916d9bc52b96e600deb130bf147) Thanks [@anxobotana](https://github.com/anxobotana)! - extends fontInput typing ## 0.6.13 ### Patch Changes -- [#591](https://github.com/Frontify/brand-sdk/pull/591) [`076ee92`](https://github.com/Frontify/brand-sdk/commit/076ee92016edadc2c775072db7c9df40c6968032) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.341 +- [#591](https://github.com/Frontify/brand-sdk/pull/591) [`076ee92`](https://github.com/Frontify/brand-sdk/commit/076ee92016edadc2c775072db7c9df40c6968032) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.341 ## 0.6.12 ### Patch Changes -- [#583](https://github.com/Frontify/brand-sdk/pull/583) [`aed99a3`](https://github.com/Frontify/brand-sdk/commit/aed99a3a62e58c7b9436f8f031c64ac024566c2c) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.337 +- [#583](https://github.com/Frontify/brand-sdk/pull/583) [`aed99a3`](https://github.com/Frontify/brand-sdk/commit/aed99a3a62e58c7b9436f8f031c64ac024566c2c) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.337 ## 0.6.11 ### Patch Changes -- [#577](https://github.com/Frontify/brand-sdk/pull/577) [`2c17f39`](https://github.com/Frontify/brand-sdk/commit/2c17f396b7f3670cf8c9c041937a414bcd22ae94) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.334 +- [#577](https://github.com/Frontify/brand-sdk/pull/577) [`2c17f39`](https://github.com/Frontify/brand-sdk/commit/2c17f396b7f3670cf8c9c041937a414bcd22ae94) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.334 ## 0.6.10 ### Patch Changes -- [#566](https://github.com/Frontify/brand-sdk/pull/566) [`ece6876`](https://github.com/Frontify/brand-sdk/commit/ece68765bcd1675cf32f9fd20b77c8dd5e665ee1) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.324 +- [#566](https://github.com/Frontify/brand-sdk/pull/566) [`ece6876`](https://github.com/Frontify/brand-sdk/commit/ece68765bcd1675cf32f9fd20b77c8dd5e665ee1) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.324 ## 0.6.9 ### Patch Changes -- [#560](https://github.com/Frontify/brand-sdk/pull/560) [`7460f29`](https://github.com/Frontify/brand-sdk/commit/7460f298fa346f89da7de2a0465c12c077e22f05) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.319 +- [#560](https://github.com/Frontify/brand-sdk/pull/560) [`7460f29`](https://github.com/Frontify/brand-sdk/commit/7460f298fa346f89da7de2a0465c12c077e22f05) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.319 -- [#564](https://github.com/Frontify/brand-sdk/pull/564) [`3684397`](https://github.com/Frontify/brand-sdk/commit/368439792d855bbc5117f97931b7d52f75295677) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.321 +- [#564](https://github.com/Frontify/brand-sdk/pull/564) [`3684397`](https://github.com/Frontify/brand-sdk/commit/368439792d855bbc5117f97931b7d52f75295677) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.321 ## 0.6.8 ### Patch Changes -- [#546](https://github.com/Frontify/brand-sdk/pull/546) [`69d862e`](https://github.com/Frontify/brand-sdk/commit/69d862e966954d521bdd856280c76f6a40483be8) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump app-bridge +- [#546](https://github.com/Frontify/brand-sdk/pull/546) [`69d862e`](https://github.com/Frontify/brand-sdk/commit/69d862e966954d521bdd856280c76f6a40483be8) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump app-bridge -- [`6c5d4f6`](https://github.com/Frontify/brand-sdk/commit/6c5d4f63ef8c5995790aa444dc29469b095d63ba) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change App Bridge dependency selector +- [`6c5d4f6`](https://github.com/Frontify/brand-sdk/commit/6c5d4f63ef8c5995790aa444dc29469b095d63ba) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Change App Bridge dependency selector ## 0.6.7 ### Patch Changes -- [#543](https://github.com/Frontify/brand-sdk/pull/543) [`29c8128`](https://github.com/Frontify/brand-sdk/commit/29c8128c113ce2163a22274e5440c8df05025777) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.315 +- [#543](https://github.com/Frontify/brand-sdk/pull/543) [`29c8128`](https://github.com/Frontify/brand-sdk/commit/29c8128c113ce2163a22274e5440c8df05025777) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.315 -- [#545](https://github.com/Frontify/brand-sdk/pull/545) [`755bcc0`](https://github.com/Frontify/brand-sdk/commit/755bcc0ec121da805a69ab6c9a48854cb97a71be) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue +- [#545](https://github.com/Frontify/brand-sdk/pull/545) [`755bcc0`](https://github.com/Frontify/brand-sdk/commit/755bcc0ec121da805a69ab6c9a48854cb97a71be) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore: bump fondue ## 0.6.6 ### Patch Changes -- [`3c1e752`](https://github.com/Frontify/brand-sdk/commit/3c1e7520967c5055c944a0f1afe6b41e046dcdd8) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`3c1e752`](https://github.com/Frontify/brand-sdk/commit/3c1e7520967c5055c944a0f1afe6b41e046dcdd8) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 0.6.5 ### Patch Changes -- [#504](https://github.com/Frontify/brand-sdk/pull/504) [`b0d2b28`](https://github.com/Frontify/brand-sdk/commit/b0d2b28838e917a4fb3332a1f043ee29d8060752) Thanks [@ragi96](https://github.com/ragi96)! - Update dependencies +- [#504](https://github.com/Frontify/brand-sdk/pull/504) [`b0d2b28`](https://github.com/Frontify/brand-sdk/commit/b0d2b28838e917a4fb3332a1f043ee29d8060752) Thanks [@ragi96](https://github.com/ragi96)! - Update dependencies ## 0.6.4 ### Patch Changes -- [#522](https://github.com/Frontify/brand-sdk/pull/522) [`0fdb3c7`](https://github.com/Frontify/brand-sdk/commit/0fdb3c79590964ba0e66f0c95e2a30ea8a34836b) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.309 +- [#522](https://github.com/Frontify/brand-sdk/pull/522) [`0fdb3c7`](https://github.com/Frontify/brand-sdk/commit/0fdb3c79590964ba0e66f0c95e2a30ea8a34836b) Thanks [@ragi96](https://github.com/ragi96)! - chore: bump fondue to v12.0.0-beta.309 ## 0.6.3 ### Patch Changes -- [#502](https://github.com/Frontify/brand-sdk/pull/502) [`d1a60e9`](https://github.com/Frontify/brand-sdk/commit/d1a60e9fabb2920d3fc716e18f58d8de1527ab26) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(\*): add link block +- [#502](https://github.com/Frontify/brand-sdk/pull/502) [`d1a60e9`](https://github.com/Frontify/brand-sdk/commit/d1a60e9fabb2920d3fc716e18f58d8de1527ab26) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - feat(\*): add link block ## 0.6.2 ### Patch Changes -- [`22684e3`](https://github.com/Frontify/brand-sdk/commit/22684e358fd2b073790a0959606c6a5d44e35c4e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`22684e3`](https://github.com/Frontify/brand-sdk/commit/22684e358fd2b073790a0959606c6a5d44e35c4e) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 0.6.1 ### Patch Changes -- [`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`fa969e9`](https://github.com/Frontify/brand-sdk/commit/fa969e90c980411273ff3c8c6f015b303fd59fe3) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 0.6.0 ### Minor Changes -- [#446](https://github.com/Frontify/brand-sdk/pull/446) [`4105251`](https://github.com/Frontify/brand-sdk/commit/4105251969f8ae639014a013a2cbc88df8e4935d) Thanks [@ruslan-sazonov](https://github.com/ruslan-sazonov)! - Change signature of Template +- [#446](https://github.com/Frontify/brand-sdk/pull/446) [`4105251`](https://github.com/Frontify/brand-sdk/commit/4105251969f8ae639014a013a2cbc88df8e4935d) Thanks [@ruslan-sazonov](https://github.com/ruslan-sazonov)! - Change signature of Template -- [#444](https://github.com/Frontify/brand-sdk/pull/444) [`af49f65`](https://github.com/Frontify/brand-sdk/commit/af49f6572592522a550f970c98e3d8fd2d377cc3) Thanks [@lzurbriggen](https://github.com/lzurbriggen)! - add time unit types +- [#444](https://github.com/Frontify/brand-sdk/pull/444) [`af49f65`](https://github.com/Frontify/brand-sdk/commit/af49f6572592522a550f970c98e3d8fd2d377cc3) Thanks [@lzurbriggen](https://github.com/lzurbriggen)! - add time unit types ## 0.5.0 ### Minor Changes -- [#450](https://github.com/Frontify/brand-sdk/pull/450) [`33e0a8f`](https://github.com/Frontify/brand-sdk/commit/33e0a8f49de433aca8cc06bafed6e5515b755dd2) Thanks [@celine-s](https://github.com/celine-s)! - Add footer event 'general-settings.open' to notification block +- [#450](https://github.com/Frontify/brand-sdk/pull/450) [`33e0a8f`](https://github.com/Frontify/brand-sdk/commit/33e0a8f49de433aca8cc06bafed6e5515b755dd2) Thanks [@celine-s](https://github.com/celine-s)! - Add footer event 'general-settings.open' to notification block ### Patch Changes -- [#448](https://github.com/Frontify/brand-sdk/pull/448) [`3eabb89`](https://github.com/Frontify/brand-sdk/commit/3eabb8959c2b68be50ab1bcef3996100ed877864) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore(\*): bump fondue +- [#448](https://github.com/Frontify/brand-sdk/pull/448) [`3eabb89`](https://github.com/Frontify/brand-sdk/commit/3eabb8959c2b68be50ab1bcef3996100ed877864) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - chore(\*): bump fondue ## 0.4.0 ### Minor Changes -- [#425](https://github.com/Frontify/brand-sdk/pull/425) [`b78b376`](https://github.com/Frontify/brand-sdk/commit/b78b3764d1c01e1c0cc81542fdea2d813bb62e33) Thanks [@celine-s](https://github.com/celine-s)! - Updated types of sectionHeading settings block +- [#425](https://github.com/Frontify/brand-sdk/pull/425) [`b78b376`](https://github.com/Frontify/brand-sdk/commit/b78b3764d1c01e1c0cc81542fdea2d813bb62e33) Thanks [@celine-s](https://github.com/celine-s)! - Updated types of sectionHeading settings block ## 0.3.5 ### Patch Changes -- [#424](https://github.com/Frontify/brand-sdk/pull/424) [`2d38f02`](https://github.com/Frontify/brand-sdk/commit/2d38f027d5d609b8318fc4ba7bfb501a58812613) Thanks [@triggertoo](https://github.com/triggertoo)! - Fix @frontify/fondue due to semver +- [#424](https://github.com/Frontify/brand-sdk/pull/424) [`2d38f02`](https://github.com/Frontify/brand-sdk/commit/2d38f027d5d609b8318fc4ba7bfb501a58812613) Thanks [@triggertoo](https://github.com/triggertoo)! - Fix @frontify/fondue due to semver ## 0.3.4 ### Patch Changes -- [#416](https://github.com/Frontify/brand-sdk/pull/416) [`6ae4bfd`](https://github.com/Frontify/brand-sdk/commit/6ae4bfd76c9eb9bd546fea6398cf173531e67f1f) Thanks [@triggertoo](https://github.com/triggertoo)! - Update fondue version to support React 18 +- [#416](https://github.com/Frontify/brand-sdk/pull/416) [`6ae4bfd`](https://github.com/Frontify/brand-sdk/commit/6ae4bfd76c9eb9bd546fea6398cf173531e67f1f) Thanks [@triggertoo](https://github.com/triggertoo)! - Update fondue version to support React 18 ## 0.3.3 ### Patch Changes -- [`caecf03`](https://github.com/Frontify/brand-sdk/commit/caecf03ffd52a07cd1c846f4a99f9736fef76b76) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`caecf03`](https://github.com/Frontify/brand-sdk/commit/caecf03ffd52a07cd1c846f4a99f9736fef76b76) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`2179c95`](https://github.com/Frontify/brand-sdk/commit/2179c95e787d89d1e75671d394b4dde61673638d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update App Bridge +- [`2179c95`](https://github.com/Frontify/brand-sdk/commit/2179c95e787d89d1e75671d394b4dde61673638d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update App Bridge ## 0.3.2 ### Patch Changes -- [`f11eaef`](https://github.com/Frontify/brand-sdk/commit/f11eaef8b3a602562994460059e2c30ea307cda1) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - fix version of fondue dependency +- [`f11eaef`](https://github.com/Frontify/brand-sdk/commit/f11eaef8b3a602562994460059e2c30ea307cda1) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - fix version of fondue dependency ## 0.3.1 ### Patch Changes -- [`3835898`](https://github.com/Frontify/brand-sdk/commit/38358988674acc7cad728357b146558ebba3964a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix Fondue dependency version issue +- [`3835898`](https://github.com/Frontify/brand-sdk/commit/38358988674acc7cad728357b146558ebba3964a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Fix Fondue dependency version issue ## 0.3.0 ### Minor Changes -- [#396](https://github.com/Frontify/brand-sdk/pull/396) [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add support of custom icon in the settings sidebar +- [#396](https://github.com/Frontify/brand-sdk/pull/396) [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add support of custom icon in the settings sidebar ### Patch Changes -- [`57228f5`](https://github.com/Frontify/brand-sdk/commit/57228f557c20f2a2a291ecabc560a8e7c1bb0e41) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update deps +- [`57228f5`](https://github.com/Frontify/brand-sdk/commit/57228f557c20f2a2a291ecabc560a8e7c1bb0e41) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update deps -- [#396](https://github.com/Frontify/brand-sdk/pull/396) [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Unpin dev dependencies +- [#396](https://github.com/Frontify/brand-sdk/pull/396) [`a213ee6`](https://github.com/Frontify/brand-sdk/commit/a213ee68b2f11377d94df578a86ec360704d727b) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Unpin dev dependencies ## 0.2.0 ### Minor Changes -- [#374](https://github.com/Frontify/brand-sdk/pull/374) [`366ca28`](https://github.com/Frontify/brand-sdk/commit/366ca280e754cf875d91026ee0a3cf8e767b05ab) Thanks [@celine-s](https://github.com/celine-s)! - Updated types of notification setting block +- [#374](https://github.com/Frontify/brand-sdk/pull/374) [`366ca28`](https://github.com/Frontify/brand-sdk/commit/366ca280e754cf875d91026ee0a3cf8e767b05ab) Thanks [@celine-s](https://github.com/celine-s)! - Updated types of notification setting block ## 0.1.0 ### Minor Changes -- [#382](https://github.com/Frontify/brand-sdk/pull/382) [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Renamed `slider` to `segmentedControls` +- [#382](https://github.com/Frontify/brand-sdk/pull/382) [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Renamed `slider` to `segmentedControls` -- [#382](https://github.com/Frontify/brand-sdk/pull/382) [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Inline enums to union types to have less Fondue breakage +- [#382](https://github.com/Frontify/brand-sdk/pull/382) [`6a31872`](https://github.com/Frontify/brand-sdk/commit/6a31872fbe0cc426f1f2f384fab52e48dbaad557) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Inline enums to union types to have less Fondue breakage ### Patch Changes -- [`440e463`](https://github.com/Frontify/brand-sdk/commit/440e463326fb55dabc28dba346e1ec2e6ee03450) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`440e463`](https://github.com/Frontify/brand-sdk/commit/440e463326fb55dabc28dba346e1ec2e6ee03450) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 0.0.17 ### Patch Changes -- [`b8b0b78`](https://github.com/Frontify/brand-sdk/commit/b8b0b783f1a1cc0968c04c5f392f6bb6db518f86) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Simplify type of font value +- [`b8b0b78`](https://github.com/Frontify/brand-sdk/commit/b8b0b783f1a1cc0968c04c5f392f6bb6db518f86) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Simplify type of font value ## 0.0.16 ### Patch Changes -- [`d89d0e0`](https://github.com/Frontify/brand-sdk/commit/d89d0e06be900fd6bba897d05ad8427e5d44f1f0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Allow beta versions of Fondue +- [`d89d0e0`](https://github.com/Frontify/brand-sdk/commit/d89d0e06be900fd6bba897d05ad8427e5d44f1f0) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Allow beta versions of Fondue ## 0.0.15 ### Patch Changes -- [#356](https://github.com/Frontify/brand-sdk/pull/356) [`c6a1aff`](https://github.com/Frontify/brand-sdk/commit/c6a1affe88b6f1ab87cbe74ca1daa0e9c28640e0) Thanks [@SamCreasey](https://github.com/SamCreasey)! - SectionHeadingBlock now supports an asynchronous label type +- [#356](https://github.com/Frontify/brand-sdk/pull/356) [`c6a1aff`](https://github.com/Frontify/brand-sdk/commit/c6a1affe88b6f1ab87cbe74ca1daa0e9c28640e0) Thanks [@SamCreasey](https://github.com/SamCreasey)! - SectionHeadingBlock now supports an asynchronous label type ## 0.0.14 ### Patch Changes -- [#332](https://github.com/Frontify/brand-sdk/pull/332) [`2f58027`](https://github.com/Frontify/brand-sdk/commit/2f580271ca0540729539da3dfe66286ee3f50eda) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add JSDoc on sidebar settings types +- [#332](https://github.com/Frontify/brand-sdk/pull/332) [`2f58027`](https://github.com/Frontify/brand-sdk/commit/2f580271ca0540729539da3dfe66286ee3f50eda) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add JSDoc on sidebar settings types -- [`0198626`](https://github.com/Frontify/brand-sdk/commit/0198626b9d8e49f31d861a05e15ca6e59d349b59) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`0198626`](https://github.com/Frontify/brand-sdk/commit/0198626b9d8e49f31d861a05e15ca6e59d349b59) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 0.0.13 ### Patch Changes -- [`5fb81d6`](https://github.com/Frontify/brand-sdk/commit/5fb81d6a3f8e0bd7083b2a2c1cc95b7a2d98e395) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`5fb81d6`](https://github.com/Frontify/brand-sdk/commit/5fb81d6a3f8e0bd7083b2a2c1cc95b7a2d98e395) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [#329](https://github.com/Frontify/brand-sdk/pull/329) [`d2ecd25`](https://github.com/Frontify/brand-sdk/commit/d2ecd2592d129d40de72d4793c8848f2f291f896) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add font input setting +- [#329](https://github.com/Frontify/brand-sdk/pull/329) [`d2ecd25`](https://github.com/Frontify/brand-sdk/commit/d2ecd2592d129d40de72d4793c8848f2f291f896) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add font input setting -- [`45653fa`](https://github.com/Frontify/brand-sdk/commit/45653faaf4168517ccbb3a9775bbf88871149692) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`45653fa`](https://github.com/Frontify/brand-sdk/commit/45653faaf4168517ccbb3a9775bbf88871149692) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 0.0.12 ### Patch Changes -- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add clearable to color input and dropdown +- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add clearable to color input and dropdown -- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`d955377`](https://github.com/Frontify/brand-sdk/commit/d955377f1a6f115dac3cad8513627973c7bf428f) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 0.0.11 ### Patch Changes -- [`fa95406`](https://github.com/Frontify/brand-sdk/commit/fa9540631337193ffa0225a58f7b7b46b4f48e2a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export Checkbox type +- [`fa95406`](https://github.com/Frontify/brand-sdk/commit/fa9540631337193ffa0225a58f7b7b46b4f48e2a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export Checkbox type ## 0.0.10 ### Patch Changes -- [#299](https://github.com/Frontify/brand-sdk/pull/299) [`187466a`](https://github.com/Frontify/brand-sdk/commit/187466ae50c08f4abf5d0b257951ccf083d6344d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update to Vite 4 and TS 4.9 +- [#299](https://github.com/Frontify/brand-sdk/pull/299) [`187466a`](https://github.com/Frontify/brand-sdk/commit/187466ae50c08f4abf5d0b257951ccf083d6344d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update to Vite 4 and TS 4.9 -- [`e47c574`](https://github.com/Frontify/brand-sdk/commit/e47c5747ab1041a62dc880fa92436b8ab464bfef) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`e47c574`](https://github.com/Frontify/brand-sdk/commit/e47c5747ab1041a62dc880fa92436b8ab464bfef) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies -- [`3afb60d`](https://github.com/Frontify/brand-sdk/commit/3afb60d849a8ffb262aed4dc8e53d46b9b9a04ea) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Move App Bridge from peerDependencies to dependencies +- [`3afb60d`](https://github.com/Frontify/brand-sdk/commit/3afb60d849a8ffb262aed4dc8e53d46b9b9a04ea) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Move App Bridge from peerDependencies to dependencies ## 0.0.9 ### Patch Changes -- [`ff4cf93`](https://github.com/Frontify/brand-sdk/commit/ff4cf935fbffa4933b31eeea6cad3a0c89b8bf88) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update App Bridge to latest +- [`ff4cf93`](https://github.com/Frontify/brand-sdk/commit/ff4cf935fbffa4933b31eeea6cad3a0c89b8bf88) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update App Bridge to latest ## 0.0.8 ### Patch Changes -- [`4063217`](https://github.com/Frontify/brand-sdk/commit/4063217a946f0896f7dd3aacbc0b21f4c355b21c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies +- [`4063217`](https://github.com/Frontify/brand-sdk/commit/4063217a946f0896f7dd3aacbc0b21f4c355b21c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update dependencies ## 0.0.7 ### Patch Changes -- [`ac89fc6`](https://github.com/Frontify/brand-sdk/commit/ac89fc60cdf58d1a7cae2aae2a057c744fc7e9b6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - export `FileExtensionSets` +- [`ac89fc6`](https://github.com/Frontify/brand-sdk/commit/ac89fc60cdf58d1a7cae2aae2a057c744fc7e9b6) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - export `FileExtensionSets` ## 0.0.6 ### Patch Changes -- [`e58c9d5`](https://github.com/Frontify/brand-sdk/commit/e58c9d5ef0b20e33d91c831f4b19c37afae4f9aa) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add some basic sidebar rules +- [`e58c9d5`](https://github.com/Frontify/brand-sdk/commit/e58c9d5ef0b20e33d91c831f4b19c37afae4f9aa) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Add some basic sidebar rules -- [`b651e3d`](https://github.com/Frontify/brand-sdk/commit/b651e3d06d19cbf9de6e85ed58aae8a9f2ed2615) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Added few helpers for the `onChange` hook +- [`b651e3d`](https://github.com/Frontify/brand-sdk/commit/b651e3d06d19cbf9de6e85ed58aae8a9f2ed2615) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Added few helpers for the `onChange` hook ## 0.0.5 ### Patch Changes -- [`d4bd194`](https://github.com/Frontify/frontify-cli/commit/d4bd194133470d2a212be80d14e299e63bc12783) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update choice to allow promises +- [`d4bd194`](https://github.com/Frontify/frontify-cli/commit/d4bd194133470d2a212be80d14e299e63bc12783) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Update choice to allow promises ## 0.0.4 ### Patch Changes -- [#281](https://github.com/Frontify/frontify-cli/pull/281) [`ab6318e`](https://github.com/Frontify/frontify-cli/commit/ab6318e02b460271fa4ca4d80aa2f95f70a1db2d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export all enum from Fondue +- [#281](https://github.com/Frontify/frontify-cli/pull/281) [`ab6318e`](https://github.com/Frontify/frontify-cli/commit/ab6318e02b460271fa4ca4d80aa2f95f70a1db2d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export all enum from Fondue ## 0.0.3 ### Patch Changes -- [#279](https://github.com/Frontify/frontify-cli/pull/279) [`aa91a2d`](https://github.com/Frontify/frontify-cli/commit/aa91a2d7df7e8f6947b1852d2d2a4d1a12e0d5af) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export enum correctly +- [#279](https://github.com/Frontify/frontify-cli/pull/279) [`aa91a2d`](https://github.com/Frontify/frontify-cli/commit/aa91a2d7df7e8f6947b1852d2d2a4d1a12e0d5af) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Export enum correctly ## 0.0.2 ### Patch Changes -- [#277](https://github.com/Frontify/frontify-cli/pull/277) [`6e3bb0c`](https://github.com/Frontify/frontify-cli/commit/6e3bb0cf08bc616496dcb413dbde8d95094b3a9d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Initial release +- [#277](https://github.com/Frontify/frontify-cli/pull/277) [`6e3bb0c`](https://github.com/Frontify/frontify-cli/commit/6e3bb0cf08bc616496dcb413dbde8d95094b3a9d) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Initial release diff --git a/packages/sidebar-settings/package.json b/packages/sidebar-settings/package.json index 34ab3ec2a..a8363dfc4 100644 --- a/packages/sidebar-settings/package.json +++ b/packages/sidebar-settings/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/sidebar-settings", "type": "module", - "version": "0.9.17", + "version": "0.9.18", "description": "Provides types and helpers for the settings sidebar", "author": "Frontify Developers ", "repository": { @@ -33,7 +33,7 @@ "react-dom": "^18" }, "dependencies": { - "@frontify/fondue": "^12.0.10" + "@frontify/fondue": "^12.1.8" }, "devDependencies": { "@babel/core": "^7.24.4", diff --git a/packages/sidebar-settings/vite.config.ts b/packages/sidebar-settings/vite.config.ts index 1f2853e7a..4d134433f 100644 --- a/packages/sidebar-settings/vite.config.ts +++ b/packages/sidebar-settings/vite.config.ts @@ -11,6 +11,11 @@ const dependencies = Object.keys(dependenciesMap); export default defineConfig({ plugins: [dts({ insertTypesEntry: true, rollupTypes: true })], + test: { + deps: { + inline: ['@frontify/fondue'], + }, + }, build: { lib: { entry: resolve(__dirname, 'src/index.ts'), diff --git a/patches/@udecode__plate-emoji@31.0.0.patch b/patches/@udecode__plate-emoji@31.4.0.patch similarity index 76% rename from patches/@udecode__plate-emoji@31.0.0.patch rename to patches/@udecode__plate-emoji@31.4.0.patch index fa97cd12b..0f5434dad 100644 --- a/patches/@udecode__plate-emoji@31.0.0.patch +++ b/patches/@udecode__plate-emoji@31.4.0.patch @@ -1,14 +1,14 @@ diff --git a/dist/index.mjs b/dist/index.mjs -index efc12cbd4f1e8f06dc724d8921b5d7d9c244de33..69173eec772ff448d0cee3fce922ab76f0edca75 100644 +index 3db72c864241a438a9ed3ea2860c311edcc2c410..1f8db9d86cf6e80d0c19312d145da847021e9bf6 100644 --- a/dist/index.mjs +++ b/dist/index.mjs -@@ -348,10 +348,10 @@ var EmojiFloatingGridBuilder = class { +@@ -312,10 +312,10 @@ var EmojiFloatingGridBuilder = class { }; - + // src/utils/EmojiLibrary/EmojiFloatingLibrary.ts -import emojiMartData2 from "@emoji-mart/data"; +import emojiMartData2 from "@emoji-mart/data" assert { type: "json" }; - + // src/utils/EmojiLibrary/EmojiInlineLibrary.ts -import emojiMartData from "@emoji-mart/data"; +import emojiMartData from "@emoji-mart/data" assert { type: "json" }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d423c6f3..10510938a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,9 +5,9 @@ settings: excludeLinksFromLockfile: false patchedDependencies: - '@udecode/plate-emoji@31.0.0': - hash: zd65gtokaotoa2xfhortjmkmjm - path: patches/@udecode__plate-emoji@31.0.0.patch + '@udecode/plate-emoji@31.4.0': + hash: qe3otflfq45s3qpehitpsd2wsy + path: patches/@udecode__plate-emoji@31.4.0.patch importers: @@ -18,52 +18,52 @@ importers: version: 0.5.0 '@changesets/cli': specifier: ^2.27.1 - version: 2.27.1 + version: 2.27.6 '@cypress/vite-dev-server': specifier: ^5.0.7 - version: 5.0.7 + version: 5.1.1 '@frontify/fondue': - specifier: ^12.0.10 - version: 12.0.10(jhbqyupum772ivndo3xkwf7iuu) + specifier: ^12.1.8 + version: 12.1.9(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(@types/node@20.14.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)))(three@0.165.0)(zdog@1.1.3)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.2.1(vite@4.5.3(@types/node@18.19.31)(terser@5.30.4)) + version: 4.3.1(vite@4.5.3(@types/node@20.14.9)(terser@5.31.1)) cypress: specifier: ^13.7.2 - version: 13.7.2 + version: 13.12.0 cypress-real-events: specifier: ^1.12.0 - version: 1.12.0(cypress@13.7.2) + version: 1.13.0(cypress@13.12.0) glob: specifier: ^10.3.12 - version: 10.3.12 + version: 10.4.2 react: specifier: ^18.2.0 - version: 18.2.0 + version: 18.3.1 react-dom: specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + version: 18.3.1(react@18.3.1) tailwindcss: specifier: ^3.4.3 - version: 3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)) + version: 3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@18.19.31)(typescript@5.4.4) + version: 10.9.2(@types/node@20.14.9)(typescript@5.5.2) typescript: specifier: ^5.4.4 - version: 5.4.4 + version: 5.5.2 vite: specifier: ^4.5.2 - version: 4.5.3(@types/node@18.19.31)(terser@5.30.4) + version: 4.5.3(@types/node@20.14.9)(terser@5.31.1) vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + version: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) packages/app-bridge: dependencies: immer: specifier: ^10.0.4 - version: 10.0.4 + version: 10.1.1 lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -72,32 +72,32 @@ importers: version: 3.0.1 type-fest: specifier: ^4.15.0 - version: 4.15.0 + version: 4.20.1 devDependencies: '@frontify/eslint-config-react': specifier: ^0.17.6 - version: 0.17.6(eslint@8.57.0)(prettier@3.2.5)(react@18.2.0)(typescript@5.4.4) + version: 0.17.6(eslint@8.57.0)(prettier@3.3.2)(react@18.3.1)(typescript@5.5.2) '@testing-library/react': specifier: ^14.3.0 - version: 14.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/react': specifier: ^18.2.75 - version: 18.2.75 + version: 18.3.3 '@types/react-dom': specifier: ^18.2.24 - version: 18.2.24 + version: 18.3.0 '@types/sinon': specifier: ^17.0.3 version: 17.0.3 '@vitest/coverage-v8': specifier: ^1.4.0 - version: 1.4.0(vitest@1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4)) + version: 1.4.0(vitest@1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1)) '@vitest/ui': specifier: ^1.4.0 - version: 1.4.0(vitest@1.4.0) + version: 1.6.0(vitest@1.6.0) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -109,49 +109,103 @@ importers: version: 13.10.1 msw: specifier: ^1.3.3 - version: 1.3.3(typescript@5.4.4) + version: 1.3.3(typescript@5.5.2) prettier: specifier: ^3.2.5 - version: 3.2.5 + version: 3.3.2 react: specifier: ^18.2.0 - version: 18.2.0 + version: 18.3.1 react-dom: specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + version: 18.3.1(react@18.3.1) sinon: specifier: ^17.0.1 version: 17.0.1 ts-json-as-const: specifier: ^1.0.7 - version: 1.0.7(typescript@5.4.4) + version: 1.0.7(typescript@5.5.2) typescript: specifier: ^5.4.4 - version: 5.4.4 + version: 5.5.2 vite: specifier: ^5.2.10 - version: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + version: 5.3.1(@types/node@20.14.9)(terser@5.31.1) vite-plugin-dts: specifier: ^3.8.1 - version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@20.14.9)(terser@5.31.1)) vite-plugin-static-copy: specifier: ^1.0.2 - version: 1.0.2(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 1.0.5(vite@5.3.1(@types/node@20.14.9)(terser@5.31.1)) vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + version: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) + + packages/app-bridge-app: + devDependencies: + '@frontify/app-bridge': + specifier: workspace:^ + version: link:../app-bridge + '@frontify/eslint-config-react': + specifier: ^0.17.6 + version: 0.17.6(eslint@8.57.0)(prettier@3.3.2)(react@18.3.1)(typescript@5.5.2) + '@frontify/platform-app': + specifier: workspace:^ + version: link:../platform-app + '@testing-library/react': + specifier: ^14.3.1 + version: 14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/react': + specifier: ^18.3.3 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.2.24 + version: 18.3.0 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-plugin-notice: + specifier: ^0.9.10 + version: 0.9.10(eslint@8.57.0) + happy-dom: + specifier: ^13.10.1 + version: 13.10.1 + immer: + specifier: ^10.1.1 + version: 10.1.1 + prettier: + specifier: ^3.3.2 + version: 3.3.2 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + typescript: + specifier: ^5.5.2 + version: 5.5.2 + vite: + specifier: ^5.3.1 + version: 5.3.1(@types/node@20.14.9)(terser@5.31.1) + vite-plugin-dts: + specifier: ^3.9.1 + version: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@20.14.9)(terser@5.31.1)) + vitest: + specifier: ^1.6.0 + version: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) packages/app-bridge-theme: devDependencies: '@frontify/eslint-config-react': specifier: ^0.17.6 - version: 0.17.6(eslint@8.57.0)(prettier@3.2.5)(react@18.2.0)(typescript@5.4.4) + version: 0.17.6(eslint@8.57.0)(prettier@3.3.2)(react@18.3.1)(typescript@5.5.2) '@types/react': specifier: ^18.2.75 - version: 18.2.75 + version: 18.3.3 '@types/react-dom': specifier: ^18.2.24 - version: 18.2.24 + version: 18.3.0 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -160,25 +214,25 @@ importers: version: 0.9.10(eslint@8.57.0) prettier: specifier: ^3.2.5 - version: 3.2.5 + version: 3.3.2 react: specifier: ^18.2.0 - version: 18.2.0 + version: 18.3.1 ts-json-as-const: specifier: ^1.0.7 - version: 1.0.7(typescript@5.4.4) + version: 1.0.7(typescript@5.5.2) type-fest: specifier: ^4.15.0 - version: 4.15.0 + version: 4.20.1 typescript: specifier: ^5.4.4 - version: 5.4.4 + version: 5.5.2 vite: specifier: ^5.2.10 - version: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + version: 5.3.1(@types/node@20.14.9)(terser@5.31.1) vite-plugin-dts: specifier: ^3.8.1 - version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@20.14.9)(terser@5.31.1)) packages/cli: dependencies: @@ -187,7 +241,7 @@ importers: version: 9.0.1 '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.2.1(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 4.3.1(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1)) archiver: specifier: ^7.0.1 version: 7.0.1 @@ -197,12 +251,15 @@ importers: conf: specifier: ^12.0.0 version: 12.0.0 + esbuild: + specifier: ^0.21.5 + version: 0.21.5 fast-glob: specifier: ^3.3.2 version: 3.3.2 fastify: specifier: ^4.26.2 - version: 4.26.2 + version: 4.28.0 glob-to-regexp: specifier: ^0.4.1 version: 0.4.1 @@ -214,23 +271,23 @@ importers: version: 10.1.0 picocolors: specifier: ^1.0.0 - version: 1.0.0 + version: 1.0.1 prompts: specifier: ^2.4.2 version: 2.4.2 vite: specifier: ^5.2.10 - version: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + version: 5.3.1(@types/node@18.19.39)(terser@5.31.1) vite-plugin-externals: specifier: ^0.6.2 - version: 0.6.2(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 0.6.2(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1)) zod: specifier: ^3.22.4 - version: 3.22.4 + version: 3.23.8 devDependencies: '@frontify/eslint-config-basic': specifier: ^0.20.5 - version: 0.20.5(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.4) + version: 0.20.5(eslint@8.57.0)(prettier@3.3.2)(typescript@5.5.2) '@types/glob-to-regexp': specifier: ^0.4.4 version: 0.4.4 @@ -239,7 +296,7 @@ importers: version: 4.13.4 '@types/node': specifier: ^18.19.31 - version: 18.19.31 + version: 18.19.39 '@types/prompts': specifier: ^2.4.9 version: 2.4.9 @@ -248,10 +305,10 @@ importers: version: 8.5.10 '@vitest/coverage-v8': specifier: 1.4.0 - version: 1.4.0(vitest@1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4)) + version: 1.4.0(vitest@1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1)) '@vitest/ui': specifier: ^1.4.0 - version: 1.4.0(vitest@1.4.0) + version: 1.6.0(vitest@1.6.0) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -266,92 +323,92 @@ importers: version: 13.5.4 prettier: specifier: ^3.2.5 - version: 3.2.5 + version: 3.3.2 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@18.19.31)(typescript@5.4.4) + version: 10.9.2(@types/node@18.19.39)(typescript@5.5.2) typescript: specifier: ^5.4.4 - version: 5.4.4 + version: 5.5.2 vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + version: 1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) packages/guideline-blocks-settings: dependencies: '@ctrl/tinycolor': specifier: ^4.0.4 - version: 4.0.4 + version: 4.1.0 '@dnd-kit/core': specifier: ^6.1.0 - version: 6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dnd-kit/modifiers': specifier: ^7.0.0 - version: 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + version: 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@dnd-kit/sortable': specifier: ^8.0.0 - version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@frontify/app-bridge': specifier: ^3.0.0 || ^4.0.0-alpha.0 - version: 3.9.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sinon@17.0.1) + version: 3.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sinon@17.0.1) '@frontify/fondue': - specifier: ^12.0.10 - version: 12.0.10(g2qxhbirnett3q6vknbfcsddau) + specifier: ^12.1.8 + version: 12.1.9(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(three@0.165.0)(zdog@1.1.3)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) '@frontify/sidebar-settings': specifier: workspace:^ version: link:../sidebar-settings '@react-aria/focus': specifier: ^3.16.2 - version: 3.16.2(react@18.2.0) + version: 3.17.1(react@18.3.1) '@react-stately/overlays': specifier: ^3.6.5 - version: 3.6.5(react@18.2.0) + version: 3.6.7(react@18.3.1) + '@tailwindcss/container-queries': + specifier: ^0.1.1 + version: 0.1.1(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) devDependencies: '@babel/core': specifier: ^7.24.4 - version: 7.24.4 + version: 7.24.7 '@frontify/eslint-config-react': specifier: 0.17.6 - version: 0.17.6(eslint@8.57.0)(prettier@3.2.5)(react@18.2.0)(typescript@5.4.4) - '@tailwindcss/container-queries': - specifier: ^0.1.1 - version: 0.1.1(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) + version: 0.17.6(eslint@8.57.0)(prettier@3.3.2)(react@18.3.1)(typescript@5.5.2) '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(vitest@1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4)) + version: 6.4.6(vitest@1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1)) '@testing-library/react': specifier: ^14.3.0 - version: 14.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': specifier: 14.5.2 version: 14.5.2(@testing-library/dom@9.3.4) '@types/node': specifier: ^18.19.31 - version: 18.19.31 + version: 18.19.39 '@types/react': specifier: ^18.2.75 - version: 18.2.75 + version: 18.3.3 '@types/react-dom': specifier: ^18.2.24 - version: 18.2.24 + version: 18.3.0 '@types/sinon': specifier: ^17.0.3 version: 17.0.3 '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.2.1(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 4.3.1(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1)) '@vitest/ui': specifier: ^1.4.0 - version: 1.4.0(vitest@1.4.0) + version: 1.6.0(vitest@1.6.0) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) cypress: specifier: ^13.7.2 - version: 13.7.2 + version: 13.12.0 cypress-real-events: specifier: ^1.12.0 - version: 1.12.0(cypress@13.7.2) + version: 1.13.0(cypress@13.12.0) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -366,43 +423,43 @@ importers: version: 3.0.1 msw: specifier: ^1.3.3 - version: 1.3.3(typescript@5.4.4) + version: 1.3.3(typescript@5.5.2) postcss: specifier: ^8.4.38 version: 8.4.38 prettier: specifier: ^3.2.5 - version: 3.2.5 + version: 3.3.2 react: specifier: ^18.2.0 - version: 18.2.0 + version: 18.3.1 react-dom: specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + version: 18.3.1(react@18.3.1) rollup: specifier: ^4.14.1 - version: 4.14.1 + version: 4.18.0 sinon: specifier: 17.0.1 version: 17.0.1 tailwindcss: specifier: ^3.4.3 - version: 3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)) + version: 3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)) typescript: specifier: ^5.4.4 - version: 5.4.4 + version: 5.5.2 vite: specifier: ^5.2.10 - version: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + version: 5.3.1(@types/node@18.19.39)(terser@5.31.1) vite-plugin-dts: specifier: ^3.8.1 - version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 3.9.1(@types/node@18.19.39)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1)) vite-plugin-externals: specifier: ^0.6.2 - version: 0.6.2(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 0.6.2(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1)) vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + version: 1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) packages/platform-app: dependencies: @@ -415,10 +472,10 @@ importers: version: link:../app-bridge '@frontify/eslint-config-react': specifier: ^0.17.6 - version: 0.17.6(eslint@8.57.0)(prettier@3.2.5)(react@18.2.0)(typescript@5.4.4) + version: 0.17.6(eslint@8.57.0)(prettier@3.3.2)(react@18.3.1)(typescript@5.5.2) '@types/react': specifier: ^18.2.75 - version: 18.2.75 + version: 18.3.3 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -427,44 +484,44 @@ importers: version: 0.9.10(eslint@8.57.0) prettier: specifier: ^3.2.5 - version: 3.2.5 + version: 3.3.2 react: specifier: ^18.2.0 - version: 18.2.0 + version: 18.3.1 react-dom: specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + version: 18.3.1(react@18.3.1) typescript: specifier: ^5.4.4 - version: 5.4.4 + version: 5.5.2 vite: specifier: ^5.2.10 - version: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + version: 5.3.1(@types/node@20.14.9)(terser@5.31.1) vite-plugin-dts: specifier: ^3.8.1 - version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@20.14.9)(terser@5.31.1)) vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + version: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) packages/sidebar-settings: dependencies: '@frontify/fondue': - specifier: ^12.0.10 - version: 12.0.10(g2qxhbirnett3q6vknbfcsddau) + specifier: ^12.1.8 + version: 12.1.9(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(@types/node@20.14.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)))(three@0.165.0)(zdog@1.1.3)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) devDependencies: '@babel/core': specifier: ^7.24.4 - version: 7.24.4 + version: 7.24.7 '@frontify/eslint-config-basic': specifier: ^0.20.5 - version: 0.20.5(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.4) + version: 0.20.5(eslint@8.57.0)(prettier@3.3.2)(typescript@5.5.2) '@types/react': specifier: ^18.2.75 - version: 18.2.75 + version: 18.3.3 '@types/react-dom': specifier: ^18.2.24 - version: 18.2.24 + version: 18.3.0 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -473,95 +530,75 @@ importers: version: 0.9.10(eslint@8.57.0) prettier: specifier: ^3.2.5 - version: 3.2.5 + version: 3.3.2 react: specifier: ^18.2.0 - version: 18.2.0 + version: 18.3.1 react-dom: specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + version: 18.3.1(react@18.3.1) typescript: specifier: ^5.4.4 - version: 5.4.4 + version: 5.5.2 vite: specifier: ^5.2.10 - version: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + version: 5.3.1(@types/node@20.14.9)(terser@5.31.1) vite-plugin-dts: specifier: ^3.8.1 - version: 3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)) + version: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@20.14.9)(terser@5.31.1)) vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + version: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@adobe/css-tools@4.3.3': - resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + '@adobe/css-tools@4.4.0': + resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} - engines: {node: '>=6.9.0'} - - '@babel/code-frame@7.24.2': - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.23.5': - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.24.4': - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.23.9': - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.4': - resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} + '@babel/compat-data@7.24.7': + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.23.6': - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + '@babel/core@7.24.7': + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.4': - resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} + '@babel/generator@7.24.7': + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.22.5': - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.23.6': - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + '@babel/helper-compilation-targets@7.24.7': + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.4': - resolution: {integrity: sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==} + '@babel/helper-create-class-features-plugin@7.24.7': + resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.22.15': - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + '@babel/helper-create-regexp-features-plugin@7.24.7': + resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -571,139 +608,113 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.23.0': - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.22.15': - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + '@babel/helper-member-expression-to-functions@7.24.7': + resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.3': - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.23.3': - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + '@babel/helper-module-transforms@7.24.7': + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.22.5': - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.22.5': - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.0': - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + '@babel/helper-plugin-utils@7.24.7': + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.22.20': - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + '@babel/helper-remap-async-to-generator@7.24.7': + resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.24.1': - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + '@babel/helper-replace-supers@7.24.7': + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.23.4': - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + '@babel/helper-string-parser@7.24.7': + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.22.20': - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.23.9': - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + '@babel/helper-validator-option@7.24.7': + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.4': - resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + '@babel/helper-wrap-function@7.24.7': + resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + '@babel/helpers@7.24.7': + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.2': - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.23.6': - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.23.9': - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.24.4': - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4': - resolution: {integrity: sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7': + resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': - resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7': + resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': - resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': - resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7': + resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -722,8 +733,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-export-default-from@7.24.1': - resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} + '@babel/plugin-proposal-export-default-from@7.24.7': + resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -797,8 +808,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-export-default-from@7.24.1': - resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} + '@babel/plugin-syntax-export-default-from@7.24.7': + resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -808,20 +819,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-flow@7.24.1': - resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} + '@babel/plugin-syntax-flow@7.24.7': + resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.24.1': - resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} + '@babel/plugin-syntax-import-assertions@7.24.7': + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.24.1': - resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + '@babel/plugin-syntax-import-attributes@7.24.7': + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -836,8 +847,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.24.1': - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -884,8 +895,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.24.1': - resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -896,344 +907,344 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.24.1': - resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} + '@babel/plugin-transform-arrow-functions@7.24.7': + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.24.3': - resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} + '@babel/plugin-transform-async-generator-functions@7.24.7': + resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.24.1': - resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} + '@babel/plugin-transform-async-to-generator@7.24.7': + resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.24.1': - resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} + '@babel/plugin-transform-block-scoped-functions@7.24.7': + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.24.4': - resolution: {integrity: sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==} + '@babel/plugin-transform-block-scoping@7.24.7': + resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.24.1': - resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} + '@babel/plugin-transform-class-properties@7.24.7': + resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.24.4': - resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} + '@babel/plugin-transform-class-static-block@7.24.7': + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.24.1': - resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} + '@babel/plugin-transform-classes@7.24.7': + resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.24.1': - resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} + '@babel/plugin-transform-computed-properties@7.24.7': + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.24.1': - resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} + '@babel/plugin-transform-destructuring@7.24.7': + resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.24.1': - resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} + '@babel/plugin-transform-dotall-regex@7.24.7': + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.24.1': - resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + '@babel/plugin-transform-duplicate-keys@7.24.7': + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dynamic-import@7.24.1': - resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + '@babel/plugin-transform-dynamic-import@7.24.7': + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.24.1': - resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + '@babel/plugin-transform-exponentiation-operator@7.24.7': + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.24.1': - resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + '@babel/plugin-transform-export-namespace-from@7.24.7': + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-flow-strip-types@7.24.1': - resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} + '@babel/plugin-transform-flow-strip-types@7.24.7': + resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.24.1': - resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + '@babel/plugin-transform-for-of@7.24.7': + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.24.1': - resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + '@babel/plugin-transform-function-name@7.24.7': + resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.24.1': - resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + '@babel/plugin-transform-json-strings@7.24.7': + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.24.1': - resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + '@babel/plugin-transform-literals@7.24.7': + resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.24.1': - resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + '@babel/plugin-transform-logical-assignment-operators@7.24.7': + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.24.1': - resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + '@babel/plugin-transform-member-expression-literals@7.24.7': + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.24.1': - resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + '@babel/plugin-transform-modules-amd@7.24.7': + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.24.1': - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + '@babel/plugin-transform-modules-commonjs@7.24.7': + resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.24.1': - resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + '@babel/plugin-transform-modules-systemjs@7.24.7': + resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.24.1': - resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + '@babel/plugin-transform-modules-umd@7.24.7': + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': + resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.24.1': - resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + '@babel/plugin-transform-new-target@7.24.7': + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': - resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.24.1': - resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + '@babel/plugin-transform-numeric-separator@7.24.7': + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.24.1': - resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} + '@babel/plugin-transform-object-rest-spread@7.24.7': + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.24.1': - resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} + '@babel/plugin-transform-object-super@7.24.7': + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.24.1': - resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + '@babel/plugin-transform-optional-catch-binding@7.24.7': + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.24.1': - resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} + '@babel/plugin-transform-optional-chaining@7.24.7': + resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.24.1': - resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} + '@babel/plugin-transform-parameters@7.24.7': + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.1': - resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + '@babel/plugin-transform-private-methods@7.24.7': + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.24.1': - resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} + '@babel/plugin-transform-private-property-in-object@7.24.7': + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.24.1': - resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + '@babel/plugin-transform-property-literals@7.24.7': + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.24.1': - resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} + '@babel/plugin-transform-react-display-name@7.24.7': + resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.23.3': - resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.23.3': - resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.23.4': - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + '@babel/plugin-transform-react-jsx@7.24.7': + resolution: {integrity: sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.24.1': - resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + '@babel/plugin-transform-regenerator@7.24.7': + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-reserved-words@7.24.1': - resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + '@babel/plugin-transform-reserved-words@7.24.7': + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.24.3': - resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} + '@babel/plugin-transform-runtime@7.24.7': + resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.24.1': - resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + '@babel/plugin-transform-shorthand-properties@7.24.7': + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.24.1': - resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + '@babel/plugin-transform-spread@7.24.7': + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.24.1': - resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + '@babel/plugin-transform-sticky-regex@7.24.7': + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.24.1': - resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + '@babel/plugin-transform-template-literals@7.24.7': + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.24.1': - resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} + '@babel/plugin-transform-typeof-symbol@7.24.7': + resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.24.4': - resolution: {integrity: sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==} + '@babel/plugin-transform-typescript@7.24.7': + resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.24.1': - resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + '@babel/plugin-transform-unicode-escapes@7.24.7': + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.24.1': - resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} + '@babel/plugin-transform-unicode-property-regex@7.24.7': + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.24.1': - resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} + '@babel/plugin-transform-unicode-regex@7.24.7': + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.24.1': - resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} + '@babel/plugin-transform-unicode-sets-regex@7.24.7': + resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.4': - resolution: {integrity: sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==} + '@babel/preset-env@7.24.7': + resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-flow@7.24.1': - resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} + '@babel/preset-flow@7.24.7': + resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1243,14 +1254,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-typescript@7.24.1': - resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} + '@babel/preset-typescript@7.24.7': + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/register@7.23.7': - resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} + '@babel/register@7.24.6': + resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1258,50 +1269,30 @@ packages: '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime@7.21.0': - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.23.9': - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.23.9': - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.24.0': - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.23.9': - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.24.1': - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + '@babel/runtime@7.24.7': + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} engines: {node: '>=6.9.0'} - '@babel/types@7.23.6': - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + '@babel/template@7.24.7': + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} - '@babel/types@7.23.9': - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + '@babel/traverse@7.24.7': + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@changesets/apply-release-plan@7.0.0': - resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} + '@changesets/apply-release-plan@7.0.3': + resolution: {integrity: sha512-klL6LCdmfbEe9oyfLxnidIf/stFXmrbFO/3gT5LU5pcyoZytzJe4gWpTBx3BPmyNPl16dZ1xrkcW7b98e3tYkA==} - '@changesets/assemble-release-plan@6.0.0': - resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} + '@changesets/assemble-release-plan@6.0.2': + resolution: {integrity: sha512-n9/Tdq+ze+iUtjmq0mZO3pEhJTKkku9hUxtUadW30jlN7kONqJG3O6ALeXrmc6gsi/nvoCuKjqEJ68Hk8RbMTQ==} '@changesets/changelog-git@0.2.0': resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} @@ -1309,24 +1300,24 @@ packages: '@changesets/changelog-github@0.5.0': resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==} - '@changesets/cli@2.27.1': - resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} + '@changesets/cli@2.27.6': + resolution: {integrity: sha512-PB7KS5JkCQ4WSXlnfThn8CXAHVwYxFdZvYTimhi12fls/tzj9iimUhKsYwkrKSbw1AiVlGCZtihj5Wkt6siIjA==} hasBin: true - '@changesets/config@3.0.0': - resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} + '@changesets/config@3.0.1': + resolution: {integrity: sha512-nCr8pOemUjvGJ8aUu8TYVjqnUL+++bFOQHBVmtNbLvKzIDkN/uiP/Z4RKmr7NNaiujIURHySDEGFPftR4GbTUA==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@2.0.0': - resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} + '@changesets/get-dependents-graph@2.1.0': + resolution: {integrity: sha512-QOt6pQq9RVXKGHPVvyKimJDYJumx7p4DO5MO9AhRJYgAPgv0emhNqAqqysSVKHBm4sxKlGN4S1zXOIb5yCFuhQ==} '@changesets/get-github-info@0.6.0': resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} - '@changesets/get-release-plan@4.0.0': - resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} + '@changesets/get-release-plan@4.0.2': + resolution: {integrity: sha512-rOalz7nMuMV2vyeP7KBeAhqEB7FM2GFPO5RQSoOoUKKH9L6wW3QyPA2K+/rG9kBrWl2HckPVES73/AuwPvbH3w==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -1346,14 +1337,17 @@ packages: '@changesets/read@0.6.0': resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + '@changesets/should-skip-package@0.1.0': + resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} + '@changesets/types@4.1.0': resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} '@changesets/types@6.0.0': resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - '@changesets/write@0.3.0': - resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} + '@changesets/write@0.3.1': + resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -1363,16 +1357,16 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@ctrl/tinycolor@4.0.4': - resolution: {integrity: sha512-DIjWxEgyP+YGh7Znx9PjsunmpVsAySYRofMUjZCRWUZ1JVS8GHurry6OebnQD2dPviRUTH9VmiupFivS7Ik9ew==} + '@ctrl/tinycolor@4.1.0': + resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} engines: {node: '>=14'} '@cypress/request@3.0.1': resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} engines: {node: '>= 6'} - '@cypress/vite-dev-server@5.0.7': - resolution: {integrity: sha512-OeVsEvDtoWV/CnvnUEjWny7tsuw84DF78tvnibOWNTOuZzav62U3A07QKK2JDuGAoXQlVTiDWzcCObKIEcOGGg==} + '@cypress/vite-dev-server@5.1.1': + resolution: {integrity: sha512-US2ZA1XcbJFdWx/nnOTtwvSD35MAk2cYbIWIXgrHpIo1J1XJDFAv9uivQ0dHx0TVE8QbMubzGhAICDSI97TtCg==} '@cypress/xvfb@1.2.4': resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} @@ -1408,8 +1402,8 @@ packages: peerDependencies: react: '>=16.8.0' - '@emoji-mart/data@1.1.2': - resolution: {integrity: sha512-1HP8BxD2azjqWJvxIaWAMyTySeZY0Osr83ukYjltPVkNXeJvTz7yDrPLBtnrD5uqJ3tg4CcLuuBW09wahqL/fg==} + '@emoji-mart/data@1.2.1': + resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} '@emotion/is-prop-valid@0.8.8': resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} @@ -1417,8 +1411,8 @@ packages: '@emotion/memoize@0.7.4': resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -1429,8 +1423,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1441,8 +1435,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -1453,8 +1447,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1465,8 +1459,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1477,8 +1471,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1489,8 +1483,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1501,8 +1495,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1513,8 +1507,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1525,8 +1519,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1537,8 +1531,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1549,8 +1543,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1561,8 +1555,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1573,8 +1567,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1585,8 +1579,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1597,8 +1591,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1609,8 +1603,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1621,8 +1615,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1633,8 +1627,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1645,8 +1639,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1657,8 +1651,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1669,8 +1663,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1681,8 +1675,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1693,8 +1687,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.6.1': - resolution: {integrity: sha512-O7x6dMstWLn2ktjcoiNLDkAGG2EjveHL+Vvc+n0fXumkJYAcSqcVYKtwDU+hDZ0uDUsnUagSYaZrOLAYE8un1A==} + '@eslint-community/regexpp@4.10.1': + resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@2.1.4': @@ -1705,26 +1699,26 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@fastify/ajv-compiler@3.5.0': - resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} + '@fastify/ajv-compiler@3.6.0': + resolution: {integrity: sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==} '@fastify/cors@9.0.1': resolution: {integrity: sha512-YY9Ho3ovI+QHIL2hW+9X4XqQjXLjJqsU+sMV/xFsxZkE8p3GNnYVFpoOxF7SsP5ZL76gwvbo3V9L+FIekBGU4Q==} - '@fastify/deepmerge@1.3.0': - resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} - '@fastify/error@3.4.1': resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==} '@fastify/fast-json-stringify-compiler@4.3.0': resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} - '@floating-ui/core@1.6.0': - resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + '@fastify/merge-json-schemas@0.1.1': + resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==} + + '@floating-ui/core@1.6.3': + resolution: {integrity: sha512-1ZpCvYf788/ZXOhRQGFxnYQOVgeU+pi0i+d0Ow34La7qjIXETi6RNswGVKkA6KcDO8/+Ysu2E/CeUmmeEBDvTg==} - '@floating-ui/dom@1.3.0': - resolution: {integrity: sha512-qIAwejE3r6NeA107u4ELDKkH8+VtgRKdXqtSPaKflL2S2V+doyN+Wt9s5oHKXPDo4E8TaVXaHT3+6BbagH31xw==} + '@floating-ui/dom@1.6.6': + resolution: {integrity: sha512-qiTYajAnh3P+38kECeffMSQgbvXty2VB6rS+42iWR4FPIlZjLK84E9qtLnMTLIpPz2znD/TaFqaiavMUrS+Hcw==} '@floating-ui/react-dom@1.3.0': resolution: {integrity: sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==} @@ -1732,8 +1726,8 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/react-dom@2.0.1': - resolution: {integrity: sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==} + '@floating-ui/react-dom@2.1.1': + resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -1744,26 +1738,32 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/utils@0.2.1': - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + '@floating-ui/react@0.26.18': + resolution: {integrity: sha512-enDDX09Jpi3kmhcXXpvs+fvRXOfBj1jUV2KF6uDMf5HjS+SOZJzNTFUW71lKbFcxz0BkmQqwbvqdmHIxMq/fyQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.3': + resolution: {integrity: sha512-XGndio0l5/Gvd6CLIABvsav9HHezgDFFhDfHk1bvLfr9ni8dojqLSvBbotJEjmIwNHL7vK4QzBJTdBRoB+c1ww==} - '@formatjs/ecma402-abstract@1.14.3': - resolution: {integrity: sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg==} + '@formatjs/ecma402-abstract@2.0.0': + resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} - '@formatjs/fast-memoize@2.0.1': - resolution: {integrity: sha512-M2GgV+qJn5WJQAYewz7q2Cdl6fobQa69S1AzSM2y0P68ZDbK5cWrJIcPCO395Of1ksftGZoOt4LYCO/j9BKBSA==} + '@formatjs/fast-memoize@2.2.0': + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} - '@formatjs/icu-messageformat-parser@2.3.0': - resolution: {integrity: sha512-xqtlqYAbfJDF4b6e4O828LBNOWXrFcuYadqAbYORlDRwhyJ2bH+xpUBPldZbzRGUN2mxlZ4Ykhm7jvERtmI8NQ==} + '@formatjs/icu-messageformat-parser@2.7.8': + resolution: {integrity: sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==} - '@formatjs/icu-skeleton-parser@1.3.18': - resolution: {integrity: sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg==} + '@formatjs/icu-skeleton-parser@1.8.2': + resolution: {integrity: sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==} - '@formatjs/intl-localematcher@0.2.32': - resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} + '@formatjs/intl-localematcher@0.5.4': + resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} - '@frontify/app-bridge@3.9.1': - resolution: {integrity: sha512-X4N0LLEGwOK0rjV2HSykAoqdcXQQV7WQc7kFlz8ajbM0ZHjytWVFBRSJ3HS7Fcij6w/DNQ9zRU3gGoq2nBEWIw==} + '@frontify/app-bridge@3.9.2': + resolution: {integrity: sha512-87JF8vizY2YA3FCB/g6o6aC5eVcqYd/Iceb1OUU9Htxpk1DSjAuN1axDeW4bY/B984nU6RVq4scRdK553X8sJw==} engines: {node: '>=16'} peerDependencies: react: ^18 @@ -1783,34 +1783,36 @@ packages: prettier: ^3.0.0 react: ^18.2.0 - '@frontify/fondue-charts@1.8.3': - resolution: {integrity: sha512-m3uO3/JtQqdZNYbVQqu2DNbJgfbI8Xeokk4AwIW3N3OAXgco7As4m1wFULsgiX0amjSIlrYZYrz5V4P3/gfADw==} + '@frontify/fondue-charts@1.8.5': + resolution: {integrity: sha512-2qRghmVyQ/RHT4Rhw7BatnkkA1VUuk6RJi/3aJA1wDnQYHMRRDKowm9TFTVUZ1bTSC0h/hfHFZ6nEruj2DaV1w==} engines: {node: '>=18'} peerDependencies: + '@frontify/fondue-tokens': ^3.5.2 react: ^18 react-dom: ^18 - '@frontify/fondue-components@1.2.3': - resolution: {integrity: sha512-H7pmiOO2GjBgezdbiIDXlqvwFL4ADapfLP8XEa14VbJ5kSPBqO/q9nFwKm/rx8gFpelYBX/emO6kCcqdzevzPw==} + '@frontify/fondue-components@1.5.0': + resolution: {integrity: sha512-UYa79vevBeI1Ve+JFpYOds1cb41NOj/2FUlQARLXR4vFXAVn7q+JHXuvu7QlYaygc7pAOlSIbGL6VbmHcw73TA==} engines: {node: '>=18'} peerDependencies: - '@frontify/fondue-icons': ^0.2.1 + '@frontify/fondue-icons': ^0.2.2 + '@frontify/fondue-tokens': ^3.5.2 react: ^18 react-dom: ^18 - '@frontify/fondue-icons@0.2.1': - resolution: {integrity: sha512-9+kWouvhbsrBryrFRgBB9ulVjWuO7jalSZc7aN9/pZvQANY3KCJCHGlDQ7UyAOR8BX5zNNIksHYCCRg30ozN6A==} + '@frontify/fondue-icons@0.2.2': + resolution: {integrity: sha512-CxcQgwf5gl+IGUVz7svDhTQOSaMkIkaOmkIKuWXoMn1Mnor9+IivpEWalpzEZz5En2nPn2qTfyaAknGxvTKvAQ==} engines: {node: '>=18'} peerDependencies: react: ^18 - '@frontify/fondue-tokens@3.5.0': - resolution: {integrity: sha512-ZIV12bkg2N+z8AV+yA8nYy2eainfdE1hihwPavoLhXfjFH9iAzS34fv/IkcoKUi1vZkfpmcUKBA4h40IgZSaPg==} + '@frontify/fondue-tokens@3.5.2': + resolution: {integrity: sha512-rDX0//3KcaE7Tf++42XYlf24m0DexQmnPgnXpqlZBBz/FR/lSULg7aT8EH0onYe2/o/9Le+JwE47EJwVTMpMHw==} peerDependencies: tailwindcss: ^3.0.0 - '@frontify/fondue@12.0.10': - resolution: {integrity: sha512-flwcYB2bhPwjd7aRld+j8oq74E60oXQhbVOTEzdkCnegE4P8vIJ6joTdWXG3+2CEenL4vjclAGeZ2WyfQ+S6mg==} + '@frontify/fondue@12.1.9': + resolution: {integrity: sha512-Fgu19h6QvdKzeVAU5PTs/84tl2mLH9TTx/HODHRhz2YWtaIDbw8K2W+BVy6fOjGbdUtE+uinDCkmlOroXMoF+A==} engines: {node: '>=18'} peerDependencies: react: ^18 @@ -1835,17 +1837,17 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@internationalized/date@3.3.0': - resolution: {integrity: sha512-qfRd7jCIgUjabI8RxeAsxhLDRS1u8eUPX96GB5uBp1Tpm6YY6dVveE7YwsTEV6L4QOp5LKFirFHHGsL/XQwJIA==} + '@internationalized/date@3.5.4': + resolution: {integrity: sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==} - '@internationalized/message@3.1.1': - resolution: {integrity: sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==} + '@internationalized/message@3.1.4': + resolution: {integrity: sha512-Dygi9hH1s7V9nha07pggCkvmRfDd3q2lWnMGvrJyrOwYMe1yj4D2T9BoH9I6MGR7xz0biQrtLPsqUkqXzIrBOw==} - '@internationalized/number@3.2.1': - resolution: {integrity: sha512-hK30sfBlmB1aIe3/OwAPg9Ey0DjjXvHEiGVhNaOiBJl31G0B6wMaX8BN3ibzdlpyRNE9p7X+3EBONmxtJO9Yfg==} + '@internationalized/number@3.5.3': + resolution: {integrity: sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==} - '@internationalized/string@3.1.1': - resolution: {integrity: sha512-fvSr6YRoVPgONiVIUhgCmIAlifMVCeej/snPZVzbzRPxGpHl3o1GRe+d/qh92D8KhgOciruDUH8I5mjdfdjzfA==} + '@internationalized/string@3.2.3': + resolution: {integrity: sha512-9kpfLoA8HegiWTeCbR2livhdVeKobCnVv8tlJ6M2jF+4tcMqDo94ezwlnrUANBWPgd8U7OXIHCk2Ov2qhk4KXw==} '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -1883,20 +1885,12 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.3': - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.0': - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} '@jridgewell/set-array@1.2.1': @@ -1906,15 +1900,9 @@ packages: '@jridgewell/source-map@0.3.6': resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - '@jridgewell/sourcemap-codec@1.4.14': - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - '@jridgewell/trace-mapping@0.3.18': - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} - '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -1974,531 +1962,583 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@polka/url@1.0.0-next.24': - resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} - '@radix-ui/react-arrow@1.0.3': - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-arrow@1.1.0': + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-collection@1.0.3': - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + '@radix-ui/react-checkbox@1.1.0': + resolution: {integrity: sha512-3+kSzVfMONtP3B6CvaOrXLVTyGYws7tGmG5kOY0AfyH9sexkLytIwciNwjZhY0RoGOEbxI7bMS21XYB8H5itWQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-direction@1.0.1': - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + '@radix-ui/react-dialog@1.1.1': + resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.0': + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true - '@radix-ui/react-focus-scope@1.0.4': - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + '@radix-ui/react-dropdown-menu@2.1.1': + resolution: {integrity: sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + '@radix-ui/react-focus-guards@1.1.0': + resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-popover@1.0.7': - resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-popper@1.1.3': - resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.0': + resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-portal@1.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + '@radix-ui/react-menu@2.1.1': + resolution: {integrity: sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + '@radix-ui/react-popover@1.1.1': + resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + '@radix-ui/react-popper@1.2.0': + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-progress@1.0.3': - resolution: {integrity: sha512-5G6Om/tYSxjSeEdrb1VfKkfZfn/1IlPWd731h2RfPuSbIfNUgfqAwbKfJCg/PP6nuUCTrYzalwHSpSinoWoCag==} + '@radix-ui/react-portal@1.1.1': + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.0.4': - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + '@radix-ui/react-presence@1.1.0': + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-separator@1.0.3': - resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + '@radix-ui/react-progress@1.1.0': + resolution: {integrity: sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true - '@radix-ui/react-toggle-group@1.0.4': - resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} + '@radix-ui/react-roving-focus@1.1.0': + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-toggle@1.0.3': - resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} + '@radix-ui/react-select@2.1.1': + resolution: {integrity: sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-toolbar@1.0.4': - resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} + '@radix-ui/react-separator@1.1.0': + resolution: {integrity: sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.0.7': - resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-toggle-group@1.1.0': + resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + '@radix-ui/react-toggle@1.1.0': + resolution: {integrity: sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + '@radix-ui/react-toolbar@1.1.0': + resolution: {integrity: sha512-ZUKknxhMTL/4hPh+4DuaTot9aO7UD6Kupj4gqXCsBTayX1pD1L+0C2/2VZKXb4tIifQklZ3pf2hG9T+ns+FclQ==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + '@radix-ui/react-tooltip@1.1.1': + resolution: {integrity: sha512-LLE8nzNE4MzPMw3O2zlVlkLFid3y9hMUs7uCbSHyKSo+tCN4yMCf+ZCCcfrYgsOC0TiHBPQ1mtpJ2liY3ZT3SQ==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-rect@1.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-size@1.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-visually-hidden@1.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/rect@1.0.1': - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} - - '@react-aria/accordion@3.0.0-alpha.17': - resolution: {integrity: sha512-Kp1AYZ+iPcsLRZ7JHVagaViHXblszAtyU0nglT97/a90eC0TcdTrmt/APNK+ltZzvFhkaBQu4Anf99l9q9g1HQ==} + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@react-aria/aria-modal-polyfill@3.7.8': - resolution: {integrity: sha512-enjYsEiTEQ//EJyXpYawOIG8B1LKuXXGOjHeb9sRr6wqZ76XNZx7L0v04j20Oovfv63MzkYF8j5EdXuxH2MV0w==} + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@react-aria/breadcrumbs@3.5.2': - resolution: {integrity: sha512-un10i3vzT7oCftb6jzbMkt6BI/WGlkr+JvWLWFl9CFXH4AlsIU8jWEsrVFUCySSI8Xsj43074zLsnpxgxLgSOA==} + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@react-aria/button@3.9.3': - resolution: {integrity: sha512-ZXo2VGTxfbaTEnfeIlm5ym4vYpGAy8sGrad8Scv+EyDAJWLMKokqctfaN6YSWbqUApC3FN63IvMqASflbmnYig==} + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@react-aria/checkbox@3.7.0': - resolution: {integrity: sha512-CGVfBcCK3e8YwjPSgIMTQbMxbjTtsDy9xGkw/7iCMVIsHC7MfzO8Ny5qJJbQ2dVkNnSfIgQdtWikYGJN2QjeDw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - '@react-aria/combobox@3.4.3': - resolution: {integrity: sha512-MrpxrpJOOIRKMKkFDxTzQFu6y31eL15IsMbTRttO0NsrnQiJl19ojz6MpnhIJjnaC/Wz2EEWqnUawQsJjAVxyQ==} + '@react-aria/accordion@3.0.0-alpha.29': + resolution: {integrity: sha512-WFbXfZ9Z6mk7jto9LI+3z9QNvWNKmAhH44jmRQADKG4JE3p7ATFRdxaLhLVsMktbSKhSrDipwrCWqAkl0HZ1rg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/dialog@3.4.1': - resolution: {integrity: sha512-1P6zCn78OP9nv7/1i4QsysOKQ6gxHy9JUyOj0ixrR1jwYI/psCM2MwT9cfPjuj7pGQys6lsu4glSmZ82zARURQ==} + '@react-aria/aria-modal-polyfill@3.7.10': + resolution: {integrity: sha512-OBRyVwA6orodO6K4e2YDXziWYDIV54FEDUOmSfRO4r6o7Zg0TGxQw8bM1ZIskje9jo2FZb+2vrypR3cKNUy9dQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/focus@3.12.0': - resolution: {integrity: sha512-nY6/2lpXzLep6dzQEESoowiSqNcy7DFWuRD/qHj9uKcQwWpYH/rqBrHVS/RNvL6Cz/fBA7L/4AzByJ6pTBtoeA==} + '@react-aria/breadcrumbs@3.5.13': + resolution: {integrity: sha512-G1Gqf/P6kVdfs94ovwP18fTWuIxadIQgHsXS08JEVcFVYMjb9YjqnEBaohUxD1tq2WldMbYw53ahQblT4NTG+g==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/focus@3.16.2': - resolution: {integrity: sha512-Rqo9ummmgotESfypzFjI3uh58yMpL+E+lJBbQuXkBM0u0cU2YYzu0uOrFrq3zcHk997udZvq1pGK/R+2xk9B7g==} + '@react-aria/button@3.9.5': + resolution: {integrity: sha512-dgcYR6j8WDOMLKuVrtxzx4jIC05cVKDzc+HnPO8lNkBAOfjcuN5tkGRtIjLtqjMvpZHhQT5aDbgFpIaZzxgFIg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/grid@3.7.0': - resolution: {integrity: sha512-jXo+/wQotHDSaMSVdVT7Hxzz65Nj2yK1wssIUQPEZalRhcosGWI1vhdQOD0g9GQL1l5DLyw0m55sych6naeBlw==} + '@react-aria/checkbox@3.14.3': + resolution: {integrity: sha512-EtBJL6iu0gvrw3A4R7UeVLR6diaVk/mh4kFBc7c8hQjpEJweRr4hmJT3hrNg3MBcTWLxFiMEXPGgWEwXDBygtA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/i18n@3.8.0': - resolution: {integrity: sha512-zeohg7d66zPLnGQl1rJuVJJ/gP7GmUMxEKIFRwE+rg2u02ldKxJMSb8QKGo605QpFWqo7CuuWYvKJP5Mj+Em/w==} + '@react-aria/combobox@3.9.1': + resolution: {integrity: sha512-SpK92dCmT8qn8aEcUAihRQrBb5LZUhwIbDExFII8PvUvEFy/PoQHXIo3j1V29WkutDBDpMvBv/6XRCHGXPqrhQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/interactions@3.13.0': - resolution: {integrity: sha512-gbZL+qs+6FPitR/abAramth4lqz/drEzXwzIDF6p6WyajF805mjyAgZin1/3mQygSE5BwJNDU7jMUSGRvgFyTw==} + '@react-aria/dialog@3.5.14': + resolution: {integrity: sha512-oqDCjQ8hxe3GStf48XWBf2CliEnxlR9GgSYPHJPUc69WBj68D9rVcCW3kogJnLAnwIyf3FnzbX4wSjvUa88sAQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/interactions@3.21.1': - resolution: {integrity: sha512-AlHf5SOzsShkHfV8GLLk3v9lEmYqYHURKcXWue0JdYbmquMRkUsf/+Tjl1+zHVAQ8lKqRnPYbTmc4AcZbqxltw==} + '@react-aria/focus@3.17.1': + resolution: {integrity: sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/label@3.5.1': - resolution: {integrity: sha512-3KNg6/MJNMN25o0psBbCWzhJNFjtT5NtYJPrFwGHbAfVWvMTRqNftoyrhR490Ac0q2eMKIXkULl1HVn3izrAuw==} + '@react-aria/form@3.0.5': + resolution: {integrity: sha512-n290jRwrrRXO3fS82MyWR+OKN7yznVesy5Q10IclSTVYHHI3VI53xtAPr/WzNjJR1um8aLhOcDNFKwnNIUUCsQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/link@3.3.5': - resolution: {integrity: sha512-BbyoJ73IAQcQMYWFxhV/zJWYFlx4Edprm6xfBZKMEBrEpUcvBwe/X3QsCQmRXZ8fJodMjQ9SdQPyue1yi8Ksrw==} + '@react-aria/grid@3.9.1': + resolution: {integrity: sha512-fGEZqAEaS8mqzV/II3N4ndoNWegIcbh+L3PmKbXdpKKUP8VgMs/WY5rYl5WAF0f5RoFwXqx3ibDLeR9tKj/bOg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/link@3.5.2': - resolution: {integrity: sha512-CCFP11Uietro6TUZpWBoq3Ql/6qss/ODC5XM6oNxckj72IHruFIj8V7Y0tL5x0aE6h38hlKcDf8NCxkQqz2edg==} + '@react-aria/i18n@3.11.1': + resolution: {integrity: sha512-vuiBHw1kZruNMYeKkTGGnmPyMnM5T+gT8bz97H1FqIq1hQ6OPzmtBZ6W6l6OIMjeHI5oJo4utTwfZl495GALFQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/listbox@3.7.1': - resolution: {integrity: sha512-vKovd+u8F7jdcogZeDPtm89gn390cR0xpMbOoyPzbACOdST43SYexDXWV4Ww/M2YWkdJxT3jZ576NeifcfO2MA==} + '@react-aria/interactions@3.21.3': + resolution: {integrity: sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/listbox@3.7.2': - resolution: {integrity: sha512-e3O/u2T3TccinmfS/UvHywxLbASmh28U4020WTpZnIrsaoriVCkGZvG1AYNNPDIESz2WO0oRF6vDrmGunglJ2A==} + '@react-aria/label@3.7.8': + resolution: {integrity: sha512-MzgTm5+suPA3KX7Ug6ZBK2NX9cin/RFLsv1BdafJ6CZpmUSpWnGE/yQfYUB7csN7j31OsZrD3/P56eShYWAQfg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/live-announcer@3.3.0': - resolution: {integrity: sha512-6diTS6mIf70KdxfGqiDxHV+9Qv8a9A88EqBllzXGF6HWPdcwde/GIEmfpTwj8g1ImNGZYUwDkv4Hd9lFj0MXEg==} - - '@react-aria/menu@3.7.0': - resolution: {integrity: sha512-dCSg67G3vEXOovZyaojZXvcq19MLqual6oTSJC9WhNS/SR0AuNPbwMbD34a/b1Je73ro5bzjIbmQPyt/i3XaCA==} + '@react-aria/link@3.7.1': + resolution: {integrity: sha512-a4IaV50P3fXc7DQvEIPYkJJv26JknFbRzFT5MJOMgtzuhyJoQdILEUK6XHYjcSSNCA7uLgzpojArVk5Hz3lCpw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/menu@3.7.1': - resolution: {integrity: sha512-5KIUTs3xYSmERB8qzofFghznMVLcG3RWDnJcQjpRtrrYjm6Oc39TJeodDH874fiEr6o3i5WwMrEYVp7NSxz/TQ==} + '@react-aria/listbox@3.12.1': + resolution: {integrity: sha512-7JiUp0NGykbv/HgSpmTY1wqhuf/RmjFxs1HZcNaTv8A+DlzgJYc7yQqFjP3ZA/z5RvJFuuIxggIYmgIFjaRYdA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/overlays@3.12.0': - resolution: {integrity: sha512-jsGeLTB3W3S5Cf2zDTxh1ODTNkE69miFDOGMB0VLwS1GWDwDvytcTRpBKY9JBrxad+4u0x6evnah7IbJ61qNBA==} + '@react-aria/live-announcer@3.3.4': + resolution: {integrity: sha512-w8lxs35QrRrn6pBNzVfyGOeqWdxeVKf9U6bXIVwhq7rrTqRULL8jqy8RJIMfIs1s8G5FpwWYjyBOjl2g5Cu1iA==} + + '@react-aria/menu@3.14.1': + resolution: {integrity: sha512-BYliRb38uAzq05UOFcD5XkjA5foQoXRbcH3ZufBsc4kvh79BcP1PMW6KsXKGJ7dC/PJWUwCui6QL1kUg8PqMHA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/overlays@3.12.1': - resolution: {integrity: sha512-OSgSopk2uQI5unvC3+fUyngbRFFe4GnF0iopCmrsI7qSQEusJUd4M2SuPVXUBBwWFt5TsiH7TnxmIPWeh5LSoA==} + '@react-aria/overlays@3.22.1': + resolution: {integrity: sha512-GHiFMWO4EQ6+j6b5QCnNoOYiyx1Gk8ZiwLzzglCI4q1NY5AG2EAmfU4Z1+Gtrf2S5Y0zHbumC7rs9GnPoGLUYg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/radio@3.4.1': - resolution: {integrity: sha512-a1JFxFOiExX1ZRGBE31LW4dgc3VmW2v3upJ5snGQldC83o0XxqNavmOef+fMsIRV0AQA/mcxAJVNQ0n9SfIiUQ==} + '@react-aria/radio@3.10.4': + resolution: {integrity: sha512-3fmoMcQtCpgjTwJReFjnvIE/C7zOZeCeWUn4JKDqz9s1ILYsC3Rk5zZ4q66tFn6v+IQnecrKT52wH6+hlVLwTA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/select@3.8.3': - resolution: {integrity: sha512-EkbzbpSEkq0oSmFSeOJskjPzopqmKQ2VxsEaJHL8RebVdJiNxp5kSaBOaH1KxZI9DgrzHQNSRKYJaSJ1pUTfbw==} + '@react-aria/select@3.14.5': + resolution: {integrity: sha512-s8jixBuTUNdKWRHe2tIJqp55ORHeUObGMw1s7PQRRVrrHPdNSYseAOI9B2W7qpl3hKhvjJg40UW+45mcb1WKbw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/selection@3.12.0': - resolution: {integrity: sha512-Akzx5Faxw+sOZFXLCOw6OddDNFbP5Kho3EP6bYJfd2pzMkBc8/JemC/YDrtIuy8e9x6Je9HHSZqtKjwiEaXWog==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-aria/selection@3.14.0': - resolution: {integrity: sha512-4/cq3mP75/qbhz2OkWmrfL6MJ+7+KfFsT6wvVNvxgOWR0n4jivHToKi3DXo2TzInvNU+10Ha7FCWavZoUNgSlA==} + '@react-aria/selection@3.18.1': + resolution: {integrity: sha512-GSqN2jX6lh7v+ldqhVjAXDcrWS3N4IsKXxO6L6Ygsye86Q9q9Mq9twWDWWu5IjHD6LoVZLUBCMO+ENGbOkyqeQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/ssr@3.9.2': - resolution: {integrity: sha512-0gKkgDYdnq1w+ey8KzG9l+H5Z821qh9vVjztk55rUg71vTk/Eaebeir+WtzcLLwTjw3m/asIjx8Y59y1lJZhBw==} + '@react-aria/ssr@3.9.4': + resolution: {integrity: sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==} engines: {node: '>= 12'} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/table@3.6.0': - resolution: {integrity: sha512-hwq+5iwXVSirmi9Lr0v5wDOv7uz7UD+BUNFXP5d9nknrAKzVYDfpuNpz/Bbhpczp9R89VRBcFvcKJ3cWhESYnw==} + '@react-aria/table@3.14.1': + resolution: {integrity: sha512-WaPgQe4zQF5OaluO5rm+Y2nEoFR63vsLd4BT4yjK1uaFhKhDY2Zk+1SCVQvBLLKS4WK9dhP05nrNzT0vp/ZPOw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/textfield@3.9.1': - resolution: {integrity: sha512-IxJ6QupBD8yiEwF1etj4BWfwjNpc3Y00j+pzRIuo07bbkEOPl0jtKxW5YHG9un6nC9a5CKIHcILato1Q0Tsy0g==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-aria/toggle@3.6.0': - resolution: {integrity: sha512-W6xncx5zzqCaPU2XsgjWnACHL3WBpxphYLvF5XlICRg0nZVjGPIWPDDUGyDoPsSUeGMW2vxtFY6erKXtcy4Kgw==} + '@react-aria/textfield@3.14.5': + resolution: {integrity: sha512-hj7H+66BjB1iTKKaFXwSZBZg88YT+wZboEXZ0DNdQB2ytzoz/g045wBItUuNi4ZjXI3P+0AOZznVMYadWBAmiA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/tooltip@3.3.3': - resolution: {integrity: sha512-EF58SQ70KEfGJQErsELJh1dk3KUDrBFmCEHo6kD1fVEHCqUgdWLkz+TCfkiP8VgFoj4WoE8zSpl3MpgGOQr/Gg==} + '@react-aria/toggle@3.10.4': + resolution: {integrity: sha512-bRk+CdB8QzrSyGNjENXiTWxfzYKRw753iwQXsEAU7agPCUdB8cZJyrhbaUoD0rwczzTp2zDbZ9rRbUPdsBE2YQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/utils@3.14.1': - resolution: {integrity: sha512-+ynP0YlxN02MHVEBaeuTrIhBsfBYpfJn36pZm2t7ZEFbafH8DPaMGZ70ffYZXAESkWzRULXL3e79DheWOFI1qA==} + '@react-aria/tooltip@3.7.4': + resolution: {integrity: sha512-+XRx4HlLYqWY3fB8Z60bQi/rbWDIGlFUtXYbtoa1J+EyRWfhpvsYImP8qeeNO/vgjUtDy1j9oKa8p6App9mBMQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/utils@3.23.2': - resolution: {integrity: sha512-yznR9jJ0GG+YJvTMZxijQwVp+ahP66DY0apZf7X+dllyN+ByEDW+yaL1ewYPIpugxVzH5P8jhnBXsIyHKN411g==} + '@react-aria/utils@3.24.1': + resolution: {integrity: sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-aria/visually-hidden@3.6.0': - resolution: {integrity: sha512-W3Ix5wdlVzh2GY7dytqOAyLCXiHzk3S4jLKSaoiCwPJX9fHE5zMlZwahhDy27V0LXfjmdjBltbwyEZOq4G/Q0w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-aria/visually-hidden@3.6.1': - resolution: {integrity: sha512-7rUbiaIiR1nok9HAHPn/WcyQlvuldUqxnvh81V4dlI3NtXOgMw7/QaNc5Xo5FFWlsSVpbyK3UVJgzIui0Ns0Xg==} + '@react-aria/visually-hidden@3.8.12': + resolution: {integrity: sha512-Bawm+2Cmw3Xrlr7ARzl2RLtKh0lNUdJ0eNqzWcyx4c0VHUAWtThmH5l+HRqFUGzzutFZVo89SAy40BAbd0gjVw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 @@ -2511,95 +2551,95 @@ packages: '@react-dnd/shallowequal@4.0.2': resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==} - '@react-native-community/cli-clean@13.6.4': - resolution: {integrity: sha512-nS1BJ+2Z+aLmqePxB4AYgJ+C/bgQt02xAgSYtCUv+lneRBGhL2tHRrK8/Iolp0y+yQoUtHHf4txYi90zGXLVfw==} + '@react-native-community/cli-clean@13.6.8': + resolution: {integrity: sha512-B1uxlm1N4BQuWFvBL3yRl3LVvydjswsdbTi7tMrHMtSxfRio1p9HjcmDzlzKco09Y+8qBGgakm3jcMZGLbhXQQ==} - '@react-native-community/cli-config@13.6.4': - resolution: {integrity: sha512-GGK415WoTx1R9FXtfb/cTnan9JIWwSm+a5UCuFd6+suzS0oIt1Md1vCzjNh6W1CK3b43rZC2e+3ZU7Ljd7YtyQ==} + '@react-native-community/cli-config@13.6.8': + resolution: {integrity: sha512-RabCkIsWdP4Ex/sf1uSP9qxc30utm+0uIJAjrZkNQynm7T4Lyqn/kT3LKm4yM6M0Qk61YxGguiaXF4601vAduw==} - '@react-native-community/cli-debugger-ui@13.6.4': - resolution: {integrity: sha512-9Gs31s6tA1kuEo69ay9qLgM3x2gsN/RI994DCUKnFSW+qSusQJyyrmfllR2mGU3Wl1W09/nYpIg87W9JPf5y4A==} + '@react-native-community/cli-debugger-ui@13.6.8': + resolution: {integrity: sha512-2cS+MX/Su6sVSjqpDftFOXbK7EuPg98xzsPkdPhkQnkZwvXqodK9CAMuDMbx3lBHHtrPrpMbBCpFmPN8iVOnlA==} - '@react-native-community/cli-doctor@13.6.4': - resolution: {integrity: sha512-lWOXCISH/cHtLvO0cWTr+IPSzA54FewVOw7MoCMEvWusH+1n7c3hXTAve78mLozGQ7iuUufkHFWwKf3dzOkflQ==} + '@react-native-community/cli-doctor@13.6.8': + resolution: {integrity: sha512-/3Vdy9J3hyiu0y3nd/CU3kBqPlTRxnLXg7V6jrA1jbTOlZAMyV9imEkrqEaGK0SMOyMhh9Pipf98Ozhk0Nl4QA==} - '@react-native-community/cli-hermes@13.6.4': - resolution: {integrity: sha512-VIAufA/2wTccbMYBT9o+mQs9baOEpTxCiIdWeVdkPWKzIwtKsLpDZJlUqj4r4rI66mwjFyQ60PhwSzEJ2ApFeQ==} + '@react-native-community/cli-hermes@13.6.8': + resolution: {integrity: sha512-lZi/OBFuZUj5cLK94oEgtrtmxGoqeYVRcnHXl/R5c4put9PDl+qH2bEMlGZkFiw57ae3UZKr3TMk+1s4jh3FYQ==} - '@react-native-community/cli-platform-android@13.6.4': - resolution: {integrity: sha512-WhknYwIobKKCqaGCN3BzZEQHTbaZTDiGvcXzevvN867ldfaGdtbH0DVqNunbPoV1RNzeV9qKoQHFdWBkg83tpg==} + '@react-native-community/cli-platform-android@13.6.8': + resolution: {integrity: sha512-vWrqeLRRTwp2kO33nbrAgbYn8HR2c2CpIfyVJY9Ckk7HGUSwDyxdcSu7YBvt2ShdfLZH0HctWFNXsgGrfg6BDw==} - '@react-native-community/cli-platform-apple@13.6.4': - resolution: {integrity: sha512-TLBiotdIz0veLbmvNQIdUv9fkBx7m34ANGYqr5nH7TFxdmey+Z+omoBqG/HGpvyR7d0AY+kZzzV4k+HkYHM/aQ==} + '@react-native-community/cli-platform-apple@13.6.8': + resolution: {integrity: sha512-1JPohnlXPqU44zns3ALEzIbH2cKRw6JtEDJERgLuEUbs2r2NeJgqDbKyZ7fTTO8o+pegDnn6+Rr7qGVVOuUzzg==} - '@react-native-community/cli-platform-ios@13.6.4': - resolution: {integrity: sha512-8Dlva8RY+MY5nhWAj6V7voG3+JOEzDTJmD0FHqL+4p0srvr9v7IEVcxfw5lKBDIUNd0OMAHNevGA+cyz1J60jg==} + '@react-native-community/cli-platform-ios@13.6.8': + resolution: {integrity: sha512-/IIcIRM8qaoD7iZqsvtf6Qq1AwtChWYfB9sTn3mTiolZ5Zd5bXH37g+6liPfAICRkj2Ptq3iXmjrDVUQAxrOXw==} - '@react-native-community/cli-server-api@13.6.4': - resolution: {integrity: sha512-D2qSuYCFwrrUJUM0SDc9l3lEhU02yjf+9Peri/xhspzAhALnsf6Z/H7BCjddMV42g9/eY33LqiGyN5chr83a+g==} + '@react-native-community/cli-server-api@13.6.8': + resolution: {integrity: sha512-Lx664oWTzpVfbKUTy+3GIX7e+Mt5Zn+zdkM4ehllNdik/lbB3tM9Nrg8PSvOfI+tTXs2w55+nIydLfH+0FqJVg==} - '@react-native-community/cli-tools@13.6.4': - resolution: {integrity: sha512-N4oHLLbeTdg8opqJozjClmuTfazo1Mt+oxU7mr7m45VCsFgBqTF70Uwad289TM/3l44PP679NRMAHVYqpIRYtQ==} + '@react-native-community/cli-tools@13.6.8': + resolution: {integrity: sha512-1MYlae9EkbjC7DBYOGMH5xF9yDoeNYUKgEdDjL6WAUBoF2gtwiZPM6igLKi/+dhb5sCtC7fiLrLi0Oevdf+RmQ==} - '@react-native-community/cli-types@13.6.4': - resolution: {integrity: sha512-NxGCNs4eYtVC8x0wj0jJ/MZLRy8C+B9l8lY8kShuAcvWTv5JXRqmXjg8uK1aA+xikPh0maq4cc/zLw1roroY/A==} + '@react-native-community/cli-types@13.6.8': + resolution: {integrity: sha512-C4mVByy0i+/NPuPhdMLBR7ubEVkjVS1VwoQu/BoG1crJFNE+167QXAzH01eFbXndsjZaMWmD4Gerx7TYc6lHfA==} - '@react-native-community/cli@13.6.4': - resolution: {integrity: sha512-V7rt2N5JY7M4dJFgdNfR164r3hZdR/Z7V54dv85TFQHRbdwF4QrkG+GeagAU54qrkK/OU8OH3AF2+mKuiNWpGA==} + '@react-native-community/cli@13.6.8': + resolution: {integrity: sha512-0lRdgLNaXixWY4BfFRl1J6Ao9Lapo2z+++iE7TD4GAbuxOWJSyFi+KUA8XNfSDyML4jFO02MZgyBPxAWdaminQ==} engines: {node: '>=18'} hasBin: true - '@react-native/assets-registry@0.74.81': - resolution: {integrity: sha512-ms+D6pJ6l30epm53pwnAislW79LEUHJxWfe1Cu0LWyTTBlg1OFoqXfB3eIbpe4WyH3nrlkQAh0yyk4huT2mCvw==} + '@react-native/assets-registry@0.74.84': + resolution: {integrity: sha512-dzUhwyaX04QosWZ8zyaaNB/WYZIdeDN1lcpfQbqiOhZJShRH+FLTDVONE/dqlMQrP+EO7lDqF0RrlIt9lnOCQQ==} engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.74.81': - resolution: {integrity: sha512-Bj6g5/xkLMBAdC6665TbD3uCKCQSmLQpGv3gyqya/ydZpv3dDmDXfkGmO4fqTwEMunzu09Sk55st2ipmuXAaAg==} + '@react-native/babel-plugin-codegen@0.74.84': + resolution: {integrity: sha512-UR4uiii5szIJA84mSC6GJOfYKDq7/ThyetOQT62+BBcyGeHVtHlNLNRzgaMeLqIQaT8Fq4pccMI+7QqLOMXzdw==} engines: {node: '>=18'} - '@react-native/babel-preset@0.74.81': - resolution: {integrity: sha512-H80B3Y3lBBVC4x9tceTEQq/04lx01gW6ajWCcVbd7sHvGEAxfMFEZUmVZr0451Cafn02wVnDJ8psto1F+0w5lw==} + '@react-native/babel-preset@0.74.84': + resolution: {integrity: sha512-WUfu6Y4aGuVdocQZvx33BJiQWFH6kRCHYbZfBn2psgFrSRLgQWEQrDCxqPFObNAVSayM0rNhp2FvI5K/Eyeqlg==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.74.81': - resolution: {integrity: sha512-hhXo4ccv2lYWaJrZDsdbRTZ5SzSOdyZ0MY6YXwf3xEFLuSunbUMu17Rz5LXemKXlpVx4KEgJ/TDc2pPVaRPZgA==} + '@react-native/codegen@0.74.84': + resolution: {integrity: sha512-0hXlnu9i0o8v+gXKQi+x6T471L85kCDwW4WrJiYAeOheWrQdNNW6rC3g8+LL7HXAf7QcHGU/8/d57iYfdVK2BQ==} engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 - '@react-native/community-cli-plugin@0.74.81': - resolution: {integrity: sha512-ezPOwPxbDgrBZLJJMcXryXJXjv3VWt+Mt4jRZiEtvy6pAoi2owSH0b178T5cEZaWsxQN0BbyJ7F/xJsNiF4z0Q==} + '@react-native/community-cli-plugin@0.74.84': + resolution: {integrity: sha512-GBKE+1sUh86fS2XXV46gMCNHMc1KetshMbYJ0AhDhldpaILZHqRBX50mdVsiYVvkzp4QjM0nmYqefuJ9NVwicQ==} engines: {node: '>=18'} - '@react-native/debugger-frontend@0.74.81': - resolution: {integrity: sha512-HCYF1/88AfixG75558HkNh9wcvGweRaSZGBA71KoZj03umXM8XJy0/ZpacGOml2Fwiqpil72gi6uU+rypcc/vw==} + '@react-native/debugger-frontend@0.74.84': + resolution: {integrity: sha512-YUEA03UNFbiYzHpYxlcS2D9+3eNT5YLGkl5yRg3nOSN6KbCc/OttGnNZme+tuSOJwjMN/vcvtDKYkTqjJw8U0A==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.74.81': - resolution: {integrity: sha512-x2IpvUJN1LJE0WmPsSfQIbQaa9xwH+2VDFOUrzuO9cbQap8rNfZpcvVNbrZgrlKbgS4LXbbsj6VSL8b6SnMKMA==} + '@react-native/dev-middleware@0.74.84': + resolution: {integrity: sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.74.81': - resolution: {integrity: sha512-7YQ4TLnqfe2kplWWzBWO6k0rPSrWEbuEiRXSJNZQCtCk+t2YX985G62p/9jWm3sGLN4UTcpDXaFNTTPBvlycoQ==} + '@react-native/gradle-plugin@0.74.84': + resolution: {integrity: sha512-wYWC5WWXqzCCe4PDogz9pNc4xH5ZamahW5XGSbrrYJ5V3walZ+7z43V6iEBJkZbLjj9YBcSttkXYGr1Xh4veAg==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.74.81': - resolution: {integrity: sha512-o4MiR+/kkHoeoQ/zPwt81LnTm6pqdg0wOhU7S7vIZUqzJ7YUpnpaAvF+/z7HzUOPudnavoCN0wvcZPe/AMEyCA==} + '@react-native/js-polyfills@0.74.84': + resolution: {integrity: sha512-+PgxuUjBw9JVlz6m4ECsIJMLbDopnr4rpLmsG32hQaJrg0wMuvHtsgAY/J/aVCSG2GNUXexfjrnhc+O9yGOZXQ==} engines: {node: '>=18'} - '@react-native/metro-babel-transformer@0.74.81': - resolution: {integrity: sha512-PVcMjj23poAK6Uemflz4MIJdEpONpjqF7JASNqqQkY6wfDdaIiZSNk8EBCWKb0t7nKqhMvtTq11DMzYJ0JFITg==} + '@react-native/metro-babel-transformer@0.74.84': + resolution: {integrity: sha512-YtVGq7jkgyUECv5yt4BOFbOXyW4ddUn8+dnwGGpJKdfhXYL5o5++AxNdE+2x+SZdkj3JUVekGKPwRabFECABaw==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/normalize-colors@0.74.81': - resolution: {integrity: sha512-g3YvkLO7UsSWiDfYAU+gLhRHtEpUyz732lZB+N8IlLXc5MnfXHC8GKneDGY3Mh52I3gBrs20o37D5viQX9E1CA==} + '@react-native/normalize-colors@0.74.84': + resolution: {integrity: sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A==} - '@react-native/virtualized-lists@0.74.81': - resolution: {integrity: sha512-5jF9S10Ug2Wl+L/0+O8WmbC726sMMX8jk/1JrvDDK+0DRLMobfjLc1L26fONlVBF7lE5ctqvKZ9TlKdhPTNOZg==} + '@react-native/virtualized-lists@0.74.84': + resolution: {integrity: sha512-XcV+qdqt2WihaY4iRm/M1FdSy+18lecU9mRXNmy9YK8g9Th/8XbNtmmKI0qWBx3KxyuXMH/zd0ps05YTrX16kw==} engines: {node: '>=18'} peerDependencies: '@types/react': ^18.2.6 @@ -2661,148 +2701,96 @@ packages: react-zdog: '>=1.0' zdog: '>=1.0' - '@react-stately/checkbox@3.3.2': - resolution: {integrity: sha512-eU3zvWgQrcqS8UK8ZVkb3fMP816PeuN9N0/dOJKuOXXhkoLPuxtuja1oEqKU3sFMa5+bx3czZhhNIRpr60NAdw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-stately/collections@3.4.4': - resolution: {integrity: sha512-gryUYCe6uzqE0ea5frTwOxOPpx/6Z42PRk7KetOh3ddN3Ts0j8XQP08jP1IB/7BC1QidrkHWvDCqGHxRiEjiIg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-stately/collections@3.7.0': - resolution: {integrity: sha512-xZHJxjGXFe3LUbuNgR1yATBVSIQnm+ItLq2DJZo3JzTtRu3gEwLoRRoapPsBQnC5VsjcaimgoqvT05P0AlvCTQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-stately/combobox@3.2.2': - resolution: {integrity: sha512-kUMxgXskrtwdeEExZkJ9CjF4EJANetj+7970cOevCpy6ePCdrvdgO6+0cMrVvSgZeMaMDZXDIbbF7fqA6w0uXQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-stately/combobox@3.5.0': - resolution: {integrity: sha512-1klrkm1q1awoPUIXt0kKRrUu+rISLQkHRkStjLupXgGOnJUyYP0XWPYHCnRV+IR2K2RnWYiEY5kOi7TEp/F7Fw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-stately/grid@3.6.0': - resolution: {integrity: sha512-Sq/ivfq9Kskghoe6rYh2PfhB9/jBGfoj8wUZ4bqHcalTrBjfUvkcWMSFosibYPNZFDkA7r00bbJPDJVf1VLhuw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-stately/layout@3.12.0': - resolution: {integrity: sha512-CsBGh1Xp3SL64g5xTxNYEWdnNmmqryOyrK4BW59pzpXFytVquv4MBb6t/YRl5PnhtsORxk5aTR21NZkhDQa7jA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-stately/list@3.5.4': - resolution: {integrity: sha512-AB0r2RevKVAP2AOQM1JRuCVjS2UUxMJFshA53t8pV+OSVWeyirYccsMR49mWwU60ZnxYqBWVMN+Pl7NTPTnT8w==} + '@react-stately/checkbox@3.6.5': + resolution: {integrity: sha512-IXV3f9k+LtmfQLE+DKIN41Q5QB/YBLDCB1YVx5PEdRp52S9+EACD5683rjVm8NVRDwjMi2SP6RnFRk7fVb5Azg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/list@3.8.0': - resolution: {integrity: sha512-eJ1iUFnXPZi5MGW2h/RdNTrKtq4HLoAlFAQbC4eSPlET6VDeFsX9NkKhE/A111ia24DnWCqJB5zH20EvNbOxxA==} + '@react-stately/collections@3.10.7': + resolution: {integrity: sha512-KRo5O2MWVL8n3aiqb+XR3vP6akmHLhLWYZEmPKjIv0ghQaEebBTrN3wiEjtd6dzllv0QqcWvDLM1LntNfJ2TsA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/menu@3.4.4': - resolution: {integrity: sha512-WKak1NSV9yDY0tDB4mzsbj0FboTtR06gekio0VmKb1+FmnrC07mef8eGKUn974F0WhTNUy5A1iI5eM0W2YNynA==} + '@react-stately/combobox@3.8.4': + resolution: {integrity: sha512-iLVGvKRRz0TeJXZhZyK783hveHpYA6xovOSdzSD+WGYpiPXo1QrcrNoH3AE0Z2sHtorU+8nc0j58vh5PB+m2AA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/menu@3.5.1': - resolution: {integrity: sha512-nnuZlDBFIc3gB34kofbKDStFg9r8rijY+7ez2VWQmss72I9D7+JTn7OXJxV0oQt2lBYmNfS5W6bC9uXk3Z4dLg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-stately/overlays@3.4.2': - resolution: {integrity: sha512-UTCnn0aT+JL4ZhYPQYUWHwhmuR2T3vKTFUEZeZN9sTuDCctg08VfGoASJx8qofqkLwYJXeb8D5PMhhTDPiUQPw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-stately/overlays@3.6.5': - resolution: {integrity: sha512-U4rCFj6TPJPXLUvYXAcvh+yP/CO2W+7f0IuqP7ZZGE+Osk9qFkT+zRK5/6ayhBDFpmueNfjIEAzT9gYPQwNHFw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@react-stately/flags@3.0.3': + resolution: {integrity: sha512-/ha7XFA0RZTQsbzSPwu3KkbNMgbvuM0GuMTYLTBWpgBrovBNTM+QqI/PfZTdHg8PwCYF4H5Y8gjdSpdulCvJFw==} - '@react-stately/radio@3.6.0': - resolution: {integrity: sha512-hzNwIapDSnbk5mCim/AgHQTtHRgy2QiW95okfVnGflzO7nnws8WH/s2Va4f7UupWObPv8XTqHADUEng86mVBJA==} + '@react-stately/form@3.0.3': + resolution: {integrity: sha512-92YYBvlHEWUGUpXgIaQ48J50jU9XrxfjYIN8BTvvhBHdD63oWgm8DzQnyT/NIAMzdLnhkg7vP+fjG8LjHeyIAg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/radio@3.8.0': - resolution: {integrity: sha512-3xNocZ8jlS8JcQtlS+pGhGLmrTA/P6zWs7Xi3Cx/I6ialFVL7IE0W37Z0XTYrvpNhE9hmG4+j63ZqQDNj2nu6A==} + '@react-stately/grid@3.8.7': + resolution: {integrity: sha512-he3TXCLAhF5C5z1/G4ySzcwyt7PEiWcVIupxebJQqRyFrNWemSuv+7tolnStmG8maMVIyV3P/3j4eRBbdSlOIg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/select@3.3.2': - resolution: {integrity: sha512-/C9fW7HT+V9XnmSTiZZqH5cn+ifY9vdXvIKDbUyna98lFHtDgn7i/UvD5edunOGY0qqSMIO3kJ6/BiNg+gpn6Q==} + '@react-stately/list@3.10.5': + resolution: {integrity: sha512-fV9plO+6QDHiewsYIhboxcDhF17GO95xepC5ki0bKXo44gr14g/LSo/BMmsaMnV+1BuGdBunB05bO4QOIaigXA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/select@3.5.0': - resolution: {integrity: sha512-65gCPkIcyhGBDlWKYQY+Xvx38r7dtZ/GMp09LFZqqZTYSe29EgY45Owv4+EQ2ZSoZxb3cEvG/sv+hLL0VSGjgQ==} + '@react-stately/menu@3.7.1': + resolution: {integrity: sha512-mX1w9HHzt+xal1WIT2xGrTQsoLvDwuB2R1Er1MBABs//MsJzccycatcgV/J/28m6tO5M9iuFQQvLV+i1dCtodg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/selection@3.13.0': - resolution: {integrity: sha512-F6FiB5GIS6wdmDDJtD2ofr+y6ysLHcvHVyUZHm00aEup2hcNjtNx3x4MlFIc3tO1LvxDSIIWXJhPXdB4sb32uw==} + '@react-stately/overlays@3.6.7': + resolution: {integrity: sha512-6zp8v/iNUm6YQap0loaFx6PlvN8C0DgWHNlrlzMtMmNuvjhjR0wYXVaTfNoUZBWj25tlDM81ukXOjpRXg9rLrw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/table@3.5.0': - resolution: {integrity: sha512-C0HFfKMCOomqPtRCPs85AtoJGPnGu9mzFfwksFxAssdIatw3t66h5SJS0vSSql7Ku9h70scmvJR+nIOckx0IeA==} + '@react-stately/radio@3.10.4': + resolution: {integrity: sha512-kCIc7tAl4L7Hu4Wt9l2jaa+MzYmAJm0qmC8G8yPMbExpWbLRu6J8Un80GZu+JxvzgDlqDyrVvyv9zFifwH/NkQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/table@3.9.0': - resolution: {integrity: sha512-Cl0jmC5eCEhWBAhCjhGklsgYluziNZHF34lHnc99T/DPP+OxwrgwS9rJKTW7L6UOvHU/ADKjEwkE/fZuqVBohg==} + '@react-stately/select@3.6.4': + resolution: {integrity: sha512-whZgF1N53D0/dS8tOFdrswB0alsk5Q5620HC3z+5f2Hpi8gwgAZ8TYa+2IcmMYRiT+bxVuvEc/NirU9yPmqGbA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/toggle@3.4.2': - resolution: {integrity: sha512-+pO13Ap/tj4optu6VjQrEAaAoZvJAEwarMUaZvrkc0kdvMTNPdiT/2vhN32yvsSW0ssuFqToa3jMrTylCbpo8w==} + '@react-stately/selection@3.15.1': + resolution: {integrity: sha512-6TQnN9L0UY9w19B7xzb1P6mbUVBtW840Cw1SjgNXCB3NPaCf59SwqClYzoj8O2ZFzMe8F/nUJtfU1NS65/OLlw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/toggle@3.7.2': - resolution: {integrity: sha512-SHCF2btcoK57c4lyhucRbyPBAFpp0Pdp0vcPdn3hUgqbu6e5gE0CwG/mgFmZRAQoc7PRc7XifL0uNw8diJJI0Q==} + '@react-stately/table@3.11.8': + resolution: {integrity: sha512-EdyRW3lT1/kAVDp5FkEIi1BQ7tvmD2YgniGdLuW/l9LADo0T+oxZqruv60qpUS6sQap+59Riaxl91ClDxrJnpg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/tooltip@3.2.2': - resolution: {integrity: sha512-Y9itW2PDRWi/FdMYhpAC/kmXx22mRElADbM1AqKkMkWiJHhTbn2Cr5ie1uZcm+SMb5Dq2ypMV5rUzuiCVVB8/g==} + '@react-stately/toggle@3.7.4': + resolution: {integrity: sha512-CoYFe9WrhLkDP4HGDpJYQKwfiYCRBAeoBQHv+JWl5eyK61S8xSwoHsveYuEZ3bowx71zyCnNAqWRrmNOxJ4CKA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/tooltip@3.4.0': - resolution: {integrity: sha512-TQyDIcugRah4eGmbK6UsyrtJrKJKte+xKv8X7kgdiGVMWiENiMG5h+3pGa8OT07FJzg7FvQHkMH+hrIuAqXT2g==} + '@react-stately/tooltip@3.4.9': + resolution: {integrity: sha512-P7CDJsdoKarz32qFwf3VNS01lyC+63gXpDZG31pUu+EO5BeQd4WKN/AH1Beuswpr4GWzxzFc1aXQgERFGVzraA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/tree@3.3.4': - resolution: {integrity: sha512-CBgXvwa9qYBsJuxrAiVgGnm48eSxLe/6OjPMwH1pWf4s383Mx73MbbN4fS0oWDeXBVgdqz5/Xg/p8nvPIvl3WQ==} + '@react-stately/tree@3.8.1': + resolution: {integrity: sha512-LOdkkruJWch3W89h4B/bXhfr0t0t1aRfEp+IMrrwdRAl23NaPqwl5ILHs4Xu5XDHqqhg8co73pHrJwUyiTWEjw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/tree@3.6.0': - resolution: {integrity: sha512-9ekYGaebgMmd2p6PGRzsvr8KsDsDnrJF2uLV1GMq9hBaMxOLN5/dpxgfZGdHWoF3MXgeHeLloqrleMNfO6g64Q==} + '@react-stately/utils@3.10.1': + resolution: {integrity: sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/utils@3.9.1': - resolution: {integrity: sha512-yzw75GE0iUWiyps02BOAPTrybcsMIxEJlzXqtvllAb01O9uX5n0i3X+u2eCpj2UoDF4zS08Ps0jPgWxg8xEYtA==} + '@react-stately/virtualizer@3.7.1': + resolution: {integrity: sha512-voHgE6EQ+oZaLv6u2umKxakvIKNkCQuUihqKACTjdslp7SJh4Mvs3oLBI0hf0JOh+rCcFIKDvQtFwy1fXFRYBA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-stately/virtualizer@3.5.1': - resolution: {integrity: sha512-TVszEl8+os5eAwoETAJ0ndz5cnYFQs52OIcWonKRYbNp5KvWAV+OA2HuIrB3SSC29ZRB2bDqpj4S2LY4wWJPCw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-three/fiber@8.16.2': - resolution: {integrity: sha512-3Z5FW8mxzomBbrw2iF0lNOAlNBr2OK6HR0NM416PzcTs0UcSoPj/nD4eqmrV5Kut6kvCc/TJua5LyeoPE7vSmw==} + '@react-three/fiber@8.16.8': + resolution: {integrity: sha512-Lc8fjATtvQEfSd8d5iKdbpHtRm/aPMeFj7jQvp6TNHfpo8IQTW3wwcE1ZMrGGoUH+w2mnyS+0MK1NLPLnuzGkQ==} peerDependencies: expo: '>=43.0' expo-asset: '>=8.4' @@ -2826,108 +2814,88 @@ packages: react-native: optional: true - '@react-types/accordion@3.0.0-alpha.13': - resolution: {integrity: sha512-RQP+UInEdPjyyX8IbmUbPXgx6NJaKYpNrMDa8yxqDKLH0MIfsKQldu/lBHuRP3OIrVTr18r/ICjdOZjtVObtLw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-types/breadcrumbs@3.6.0': - resolution: {integrity: sha512-EnZk/f59yMQUmH2DW21uo3ajQ7nLEZ/sIMSfEZYP69CFe1by0RKi9aFRjJSrYjxRC0PSHTVPTjIG72KeBSsUGA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-types/button@3.9.2': - resolution: {integrity: sha512-EnPTkGHZRtiwAoJy5q9lDjoG30bEzA/qnvKG29VVXKYAGeqY2IlFs1ypmU+z1X/CpJgPcG3I5cakM7yTVm3pSg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-types/checkbox@3.7.1': - resolution: {integrity: sha512-kuGqjQFex0As/3gfWyk+e9njCcad/ZdnYLLiNvhlk15730xfa0MmnOdpqo9jfuFSXBjOcpxoofvEhvrRMtEdUA==} + '@react-types/accordion@3.0.0-alpha.21': + resolution: {integrity: sha512-cbE06jH/ZoI+1898xd7ocQ/A/Rtkz8wTJAVOYgc8VRY1SYNQ/XZTGH5T6dD6aERAmiDwL/kjD7xhsE80DyaEKA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/combobox@3.6.1': - resolution: {integrity: sha512-CydRYMc80d4Wi6HeXUhmVPrVUnvQm60WJUaX2hM71tkKFo9ZOM6oW02YuOicjkNr7gpM7PLUxvM4Poc9EvDQTw==} + '@react-types/breadcrumbs@3.7.5': + resolution: {integrity: sha512-lV9IDYsMiu2TgdMIjEmsOE0YWwjb3jhUNK1DCZZfq6uWuiHLgyx2EncazJBUWSjHJ4ta32j7xTuXch+8Ai6u/A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/dialog@3.4.5': - resolution: {integrity: sha512-FkxZAYNRWkZVH5rjlw6qyQ/SpoGcYtNI/JQvn1H/xtZy/OJh2b2ERxGWv5x0RItGSeyATdSwFO1Qnf1Kl2K02A==} + '@react-types/button@3.9.4': + resolution: {integrity: sha512-raeQBJUxBp0axNF74TXB8/H50GY8Q3eV6cEKMbZFP1+Dzr09Ngv0tJBeW0ewAxAguNH5DRoMUAUGIXtSXskVdA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/dialog@3.5.1': - resolution: {integrity: sha512-a0eeGIITFuOxY2fIL1WkJT5yWIMIQ+VM4vE5MtS59zV9JynDaiL4uNL4yg08kJZm8oyzxIWwrov4gAbEVVWbDQ==} + '@react-types/checkbox@3.8.1': + resolution: {integrity: sha512-5/oVByPw4MbR/8QSdHCaalmyWC71H/QGgd4aduTJSaNi825o+v/hsN2/CH7Fq9atkLKsC8fvKD00Bj2VGaKriQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/grid@3.1.7': - resolution: {integrity: sha512-YKo/AbJrgWErPmr5y0K4o6Ts9ModFv5+2FVujecIydu3zLuHsVcx//6uVeHSy2W+uTV9vU/dpMP+GGgg+vWQhw==} + '@react-types/combobox@3.11.1': + resolution: {integrity: sha512-UNc3OHt5cUt5gCTHqhQIqhaWwKCpaNciD8R7eQazmHiA9fq8ROlV+7l3gdNgdhJbTf5Bu/V5ISnN7Y1xwL3zqQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/label@3.7.3': - resolution: {integrity: sha512-TKuQ2REPl4UVq/wl3CAujzixeNVVso0Kob+0T1nP8jIt9k9ssdLMAgSh8Z4zNNfR+oBIngYOA9IToMnbx6qACA==} + '@react-types/dialog@3.5.10': + resolution: {integrity: sha512-S9ga+edOLNLZw7/zVOnZdT5T40etpzUYBXEKdFPbxyPYnERvRxJAsC1/ASuBU9fQAXMRgLZzADWV+wJoGS/X9g==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/link@3.4.3': - resolution: {integrity: sha512-opKfkcaeV0cir64jPcy7DS0BrmdfuWMjua+MSeNv7FfT/b65rFgPfAOKZcvLWDsaxT5HYb7pivYPBfjKqHsQKw==} + '@react-types/grid@3.2.6': + resolution: {integrity: sha512-XfHenL2jEBUYrhKiPdeM24mbLRXUn79wVzzMhrNYh24nBwhsPPpxF+gjFddT3Cy8dt6tRInfT6pMEu9nsXwaHw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/listbox@3.4.1': - resolution: {integrity: sha512-2h1zJDQI3v4BFBwpjKc+OYXM2EzN2uxG5DiZ4MZUcWJDpa1+rOlfaPtBNUPiEVHt6fm6qeuoYVPf3r65Lo3IDw==} + '@react-types/link@3.5.5': + resolution: {integrity: sha512-G6P5WagHDR87npN7sEuC5IIgL1GsoY4WFWKO4734i2CXRYx24G9P0Su3AX4GA3qpspz8sK1AWkaCzBMmvnunfw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/menu@3.9.0': - resolution: {integrity: sha512-aalUYwOkzcHn8X59vllgtH96YLqZvAr4mTj5GEs8chv5JVlmArUzcDiOymNrYZ0p9JzshzSUqxxXyCFpnnxghw==} + '@react-types/listbox@3.4.9': + resolution: {integrity: sha512-S5G+WmNKUIOPZxZ4svWwWQupP3C6LmVfnf8QQmPDvwYXGzVc0WovkqUWyhhjJirFDswTXRCO9p0yaTHHIlkdwQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/overlays@3.8.5': - resolution: {integrity: sha512-4D7EEBQigD/m8hE68Ys8eloyyZFHHduqykSIgINJ0edmo0jygRbWlTwuhWFR9USgSP4dK54duN0Mvq0m4HEVEw==} + '@react-types/menu@3.9.9': + resolution: {integrity: sha512-FamUaPVs1Fxr4KOMI0YcR2rYZHoN7ypGtgiEiJ11v/tEPjPPGgeKDxii0McCrdOkjheatLN1yd2jmMwYj6hTDg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/radio@3.4.1': - resolution: {integrity: sha512-8r7s+Zj0JoIpYgbuHjhE/eWUHKiptaFvYXMH986yKAg969VQlQiP9Dm4oWv2d+p26WbGK7oJDQJCt8NjASWl8g==} + '@react-types/overlays@3.8.7': + resolution: {integrity: sha512-zCOYvI4at2DkhVpviIClJ7bRrLXYhSg3Z3v9xymuPH3mkiuuP/dm8mUCtkyY4UhVeUTHmrQh1bzaOP00A+SSQA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/select@3.8.0': - resolution: {integrity: sha512-hdaB3CzK8GSip9oGahfnlwolRqdNow85CQwf5P0oEtIDdijihrG6hyphPu5HYGK687EF+lfhnWUYUMwckEwB8Q==} + '@react-types/radio@3.8.1': + resolution: {integrity: sha512-bK0gio/qj1+0Ldu/3k/s9BaOZvnnRgvFtL3u5ky479+aLG5qf1CmYed3SKz8ErZ70JkpuCSrSwSCFf0t1IHovw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/shared@3.16.0': - resolution: {integrity: sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==} + '@react-types/select@3.9.4': + resolution: {integrity: sha512-xI7dnOW2st91fPPcv6hdtrTdcfetYiqZuuVPZ5TRobY7Q10/Zqqe/KqtOw1zFKUj9xqNJe4Ov3xP5GSdcO60Eg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/shared@3.22.1': - resolution: {integrity: sha512-PCpa+Vo6BKnRMuOEzy5zAZ3/H5tnQg1e80khMhK2xys0j6ZqzkgQC+fHMNZ7VDFNLqqNMj/o0eVeSBDh2POjkw==} + '@react-types/shared@3.23.1': + resolution: {integrity: sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/switch@3.3.1': - resolution: {integrity: sha512-EvKWPtcOLTF7Wh8YCxJEtmqRZX3qSLRYPaIntl/CKF+14QXErPXwOn0ObLfy6VNda5jDJBOecWpgC69JEjkvfw==} + '@react-types/table@3.9.5': + resolution: {integrity: sha512-fgM2j9F/UR4Anmd28CueghCgBwOZoCVyN8fjaIFPd2MN4gCwUUfANwxLav65gZk4BpwUXGoQdsW+X50L3555mg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/table@3.6.0': - resolution: {integrity: sha512-jUp8yTWJuJlqpJY+EIEppgjFsZ3oj4y9zg1oUO+l1rqRWEqmAdoq42g3dTZHmnz9hQJkUeo34I1HGaB9kxNqvg==} + '@react-types/textfield@3.9.3': + resolution: {integrity: sha512-DoAY6cYOL0pJhgNGI1Rosni7g72GAt4OVr2ltEx2S9ARmFZ0DBvdhA9lL2nywcnKMf27PEJcKMXzXc10qaHsJw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@react-types/textfield@3.7.1': - resolution: {integrity: sha512-6V5+6/VgDbmgN61pyVct1VrXb2hqq7Y43BFQ+/ZhFDlVaMpC5xKWKgW/gPbGLLc27gax8t2Brt7VHJj+d+yrUw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - - '@react-types/tooltip@3.4.0': - resolution: {integrity: sha512-dvMwX377uJAMTuditfvwWed53YjV62XWMqW29Fave4xg3A807VVK3H1iEgwCIGA9ve2XHF8cJbqSHD635qU+tQ==} + '@react-types/tooltip@3.4.9': + resolution: {integrity: sha512-wZ+uF1+Zc43qG+cOJzioBmLUNjRa7ApdcT0LI1VvaYvH5GdfjzUJOorLX9V/vAci0XMJ50UZ+qsh79aUlw2yqg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 @@ -2944,78 +2912,83 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.14.1': - resolution: {integrity: sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==} + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.14.1': - resolution: {integrity: sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==} + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.14.1': - resolution: {integrity: sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==} + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.14.1': - resolution: {integrity: sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==} + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.14.1': - resolution: {integrity: sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==} + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.14.1': - resolution: {integrity: sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==} + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.14.1': - resolution: {integrity: sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==} + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.14.1': - resolution: {integrity: sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==} - cpu: [ppc64le] + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.14.1': - resolution: {integrity: sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==} + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.14.1': - resolution: {integrity: sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==} + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.14.1': - resolution: {integrity: sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==} + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.14.1': - resolution: {integrity: sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==} + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.14.1': - resolution: {integrity: sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==} + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.14.1': - resolution: {integrity: sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==} + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.14.1': - resolution: {integrity: sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==} + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} cpu: [x64] os: [win32] @@ -3056,8 +3029,8 @@ packages: '@sinonjs/commons@2.0.0': resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} - '@sinonjs/commons@3.0.0': - resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} @@ -3071,11 +3044,8 @@ packages: '@sinonjs/text-encoding@0.7.2': resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} - '@swc/helpers@0.4.14': - resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} - - '@swc/helpers@0.5.1': - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + '@swc/helpers@0.5.11': + resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} '@tailwindcss/container-queries@0.1.1': resolution: {integrity: sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==} @@ -3091,8 +3061,8 @@ packages: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} - '@testing-library/jest-dom@6.4.2': - resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} + '@testing-library/jest-dom@6.4.6': + resolution: {integrity: sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: '@jest/globals': '>= 28' @@ -3112,8 +3082,8 @@ packages: vitest: optional: true - '@testing-library/react@14.3.0': - resolution: {integrity: sha512-AYJGvNFMbCa5vt1UtDCa/dcaABrXq8gph6VN+cffIx0UeA0qiGqS+sT60+sb+Gjc8tGXdECWYQgaF0khf8b+Lg==} + '@testing-library/react@14.3.1': + resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==} engines: {node: '>=14'} peerDependencies: react: ^18.0.0 @@ -3125,8 +3095,8 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -3134,8 +3104,8 @@ packages: '@tsconfig/node14@1.0.3': resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - '@tsconfig/node16@1.0.3': - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -3146,14 +3116,14 @@ packages: '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.7': - resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.4': - resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} '@types/cookie@0.4.1': resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -3197,8 +3167,8 @@ packages: '@types/d3-voronoi@1.1.12': resolution: {integrity: sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==} - '@types/debug@4.1.7': - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -3212,8 +3182,8 @@ packages: '@types/is-hotkey@0.1.10': resolution: {integrity: sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==} - '@types/istanbul-lib-coverage@2.0.4': - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} '@types/istanbul-lib-report@3.0.3': resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} @@ -3221,11 +3191,8 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/js-levenshtein@1.1.1': - resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} - - '@types/json-schema@7.0.12': - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + '@types/js-levenshtein@1.1.3': + resolution: {integrity: sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==} '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -3233,23 +3200,17 @@ packages: '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - '@types/lodash@4.14.192': - resolution: {integrity: sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==} - - '@types/lodash@4.14.202': - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} + '@types/lodash@4.17.5': + resolution: {integrity: sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==} - '@types/mdast@3.0.10': - resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} - - '@types/minimist@1.2.2': - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + '@types/mdast@3.0.15': + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} '@types/mock-fs@4.13.4': resolution: {integrity: sha512-mXmM0o6lULPI8z3XNnQCpL0BGxPwx1Ul1wXYEPBGl4efShyxW2Rln0JOPEWGyZaYZMM6OVXM/15zUuFMY52ljg==} - '@types/ms@0.7.31': - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} @@ -3257,20 +3218,23 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.31': - resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} + '@types/node@18.19.39': + resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==} + + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} - '@types/normalize-package-data@2.4.1': - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} '@types/prompts@2.4.9': resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} - '@types/prop-types@15.7.5': - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - '@types/react-dom@18.2.24': - resolution: {integrity: sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg==} + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} '@types/react-reconciler@0.26.7': resolution: {integrity: sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==} @@ -3278,14 +3242,14 @@ packages: '@types/react-reconciler@0.28.8': resolution: {integrity: sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==} - '@types/react@18.2.75': - resolution: {integrity: sha512-+DNnF7yc5y0bHkBTiLKqXFe+L4B3nvOphiMY3tuA5X10esmjqk7smyBZzbGTy2vsiy/Bnzj8yFIBL8xhRacoOg==} + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - '@types/semver@7.5.0': - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/set-cookie-parser@2.4.3': - resolution: {integrity: sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==} + '@types/set-cookie-parser@2.4.9': + resolution: {integrity: sha512-bCorlULvl0xTdjj4BPUHX4cqs9I+go2TfW/7Do1nnFYWS0CPP429Qr1AY42kiFhCwLpvAkWFr1XIBHd8j6/MCQ==} '@types/sinon@17.0.3': resolution: {integrity: sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==} @@ -3293,8 +3257,8 @@ packages: '@types/sinonjs__fake-timers@8.1.1': resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} - '@types/sinonjs__fake-timers@8.1.2': - resolution: {integrity: sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==} + '@types/sinonjs__fake-timers@8.1.5': + resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==} '@types/sizzle@2.3.8': resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} @@ -3302,14 +3266,14 @@ packages: '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/unist@2.0.6': - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + '@types/unist@2.0.10': + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - '@types/webxr@0.5.15': - resolution: {integrity: sha512-nC9116Gd4N+CqTxqo6gvCfhAMAzgRcfS8ZsciNodHq8uwW4JCVKwhagw8yN0XmC7mHrLnWqniJpoVEiR+72Drw==} + '@types/webxr@0.5.18': + resolution: {integrity: sha512-EM8P5wtYMPUlFbDgKfNoPc5PyhgZvwXz0Wf9gYBfJOpTI8AtPzoLJlvw/D9TmIW/LPLTmwMxWI0axBs3hjLSLg==} '@types/ws@8.5.10': resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} @@ -3326,8 +3290,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@7.5.0': - resolution: {integrity: sha512-HpqNTH8Du34nLxbKgVMGljZMG0rJd2O9ecvr2QLYp+7512ty1j42KnsFwspPXg1Vh8an9YImf6CokUBltisZFQ==} + '@typescript-eslint/eslint-plugin@7.14.1': + resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -3337,8 +3301,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.5.0': - resolution: {integrity: sha512-cj+XGhNujfD2/wzR1tabNsidnYRaFfEkcULdcIyVBYcXjBvBKOes+mpMBP7hMpOyk+gBcfXsrg4NBGAStQyxjQ==} + '@typescript-eslint/parser@7.14.1': + resolution: {integrity: sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3347,12 +3311,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.5.0': - resolution: {integrity: sha512-Z1r7uJY0MDeUlql9XJ6kRVgk/sP11sr3HKXn268HZyqL7i4cEfrdFuSSY/0tUqT37l5zT0tJOsuDP16kio85iA==} + '@typescript-eslint/scope-manager@7.14.1': + resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.5.0': - resolution: {integrity: sha512-A021Rj33+G8mx2Dqh0nMO9GyjjIBK3MqgVgZ2qlKf6CJy51wY/lkkFqq3TqqnH34XyAHUkq27IjlUkWlQRpLHw==} + '@typescript-eslint/type-utils@7.14.1': + resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3361,12 +3325,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.5.0': - resolution: {integrity: sha512-tv5B4IHeAdhR7uS4+bf8Ov3k793VEVHd45viRRkehIUZxm0WF82VPiLgHzA/Xl4TGPg1ZD49vfxBKFPecD5/mg==} + '@typescript-eslint/types@7.14.1': + resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.5.0': - resolution: {integrity: sha512-YklQQfe0Rv2PZEueLTUffiQGKQneiIEKKnfIqPIOxgM9lKSZFCjT5Ad4VqRKj/U4+kQE3fa8YQpskViL7WjdPQ==} + '@typescript-eslint/typescript-estree@7.14.1': + resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -3374,14 +3338,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.5.0': - resolution: {integrity: sha512-3vZl9u0R+/FLQcpy2EHyRGNqAS/ofJ3Ji8aebilfJe+fobK8+LbIFmrHciLVDxjDoONmufDcnVSF38KwMEOjzw==} + '@typescript-eslint/utils@7.14.1': + resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.5.0': - resolution: {integrity: sha512-mcuHM/QircmA6O7fy6nn2w/3ditQkj+SgtOc8DW3uQ10Yfj42amm2i+6F2K4YAOPNNTmE6iM1ynM6lrSwdendA==} + '@typescript-eslint/visitor-keys@7.14.1': + resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} engines: {node: ^18.18.0 || >=20.0.0} '@udecode/plate-alignment@31.0.0': @@ -3470,10 +3434,10 @@ packages: slate-hyperscript: '>=0.66.0' slate-react: '>=0.99.0' - '@udecode/plate-emoji@31.0.0': - resolution: {integrity: sha512-I9cy3WQWpKIZ4tVcgmbqJ2wnsTN3JubzfYkQEHQIfHejNE3UgHwu/8zcQh+TTb0b4BJ8yE9BY7vN7HVouarvPw==} + '@udecode/plate-emoji@31.4.0': + resolution: {integrity: sha512-Vl2kt/IePtIDbEjD7nZacHv21TYuRDB4cRaW5aF9QT+67vI5fJpBooJSod/Zg5Ck5BOHZ/qCiauxJXBfVaPYpw==} peerDependencies: - '@udecode/plate-common': '>=31.0.0' + '@udecode/plate-common': '>=31.3.2' react: '>=16.8.0' react-dom: '>=16.8.0' slate: '>=0.94.0' @@ -3705,14 +3669,14 @@ packages: peerDependencies: react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 - '@visx/xychart@3.10.2': - resolution: {integrity: sha512-5anIMd8QELJP+FMYYeC4vtdhSfHZlz+bx5NGe5eNSAfMFmrEJavYmhV8WblnjBa2DAm46E4yAP+8FJJG24MrSA==} + '@visx/xychart@3.11.0': + resolution: {integrity: sha512-phs/q0eeVNJDaHkKLQ+/0UYVt1fiVTaDZPtOVgcFRpEghpRWFgyApGuZ+BWWnTcGzpLEVv1HBcVA6H555IpvJQ==} peerDependencies: '@react-spring/web': ^9.4.5 react: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@vitejs/plugin-react@4.2.1': - resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} + '@vitejs/plugin-react@4.3.1': + resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 @@ -3722,25 +3686,25 @@ packages: peerDependencies: vitest: 1.4.0 - '@vitest/expect@1.4.0': - resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - '@vitest/runner@1.4.0': - resolution: {integrity: sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==} + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - '@vitest/snapshot@1.4.0': - resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - '@vitest/spy@1.4.0': - resolution: {integrity: sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==} + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - '@vitest/ui@1.4.0': - resolution: {integrity: sha512-XC6CMhN1gzYcGbpn6/Oanj4Au2EXwQEX6vpcOeLlZv8dy7g11Ukx8zwtYQbwxs9duK2s9j2o5rbQiCP5DPAcmw==} + '@vitest/ui@1.6.0': + resolution: {integrity: sha512-k3Lyo+ONLOgylctiGovRKy7V4+dIN2yxstX3eY5cWFXH6WP+ooVX79YSyi0GagdTQzLmT43BF27T0s6dOIPBXA==} peerDependencies: - vitest: 1.4.0 + vitest: 1.6.0 - '@vitest/utils@1.4.0': - resolution: {integrity: sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==} + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} '@volar/language-core@1.11.1': resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} @@ -3751,11 +3715,11 @@ packages: '@volar/typescript@1.11.1': resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} - '@vue/compiler-core@3.3.4': - resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} + '@vue/compiler-core@3.4.30': + resolution: {integrity: sha512-ZL8y4Xxdh8O6PSwfdZ1IpQ24PjTAieOz3jXb/MDTfDtANcKBMxg1KLm6OX2jofsaQGYfIVzd3BAG22i56/cF1w==} - '@vue/compiler-dom@3.3.4': - resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} + '@vue/compiler-dom@3.4.30': + resolution: {integrity: sha512-+16Sd8lYr5j/owCbr9dowcNfrHd+pz+w2/b5Lt26Oz/kB90C9yNbxQ3bYOvt7rI2bxk0nqda39hVcwDFw85c2Q==} '@vue/language-core@1.8.27': resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} @@ -3765,31 +3729,13 @@ packages: typescript: optional: true - '@vue/shared@3.3.4': - resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + '@vue/shared@3.4.30': + resolution: {integrity: sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg==} - '@xmldom/xmldom@0.8.6': - resolution: {integrity: sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==} + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} - '@xstate/immer@0.3.3': - resolution: {integrity: sha512-6AcNYkWdQrU+BKRg0MVjC2HBRZrZWADHJXcUL9uXem4BFpw9qy9NlbLPWkvnDayvmUq2sbYrzWTfxBMaiOhe5A==} - peerDependencies: - immer: ^9.0.6 || ^10 - xstate: ^4.37.2 - - '@xstate/react@1.6.3': - resolution: {integrity: sha512-NCUReRHPGvvCvj2yLZUTfR0qVp6+apc8G83oXSjN4rl89ZjyujiKrTff55bze/HrsvCsP/sUJASf2n0nzMF1KQ==} - peerDependencies: - '@xstate/fsm': ^1.0.0 - react: ^16.8.0 || ^17.0.0 - xstate: ^4.11.0 - peerDependenciesMeta: - '@xstate/fsm': - optional: true - xstate: - optional: true - '@zxing/text-encoding@0.9.0': resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} @@ -3809,17 +3755,12 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} engines: {node: '>=0.4.0'} hasBin: true @@ -3835,11 +3776,19 @@ packages: ajv: optional: true + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.16.0: + resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} anser@1.4.10: resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} @@ -3904,9 +3853,6 @@ packages: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} - archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -3919,8 +3865,8 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} engines: {node: '>=10'} aria-query@5.1.3: @@ -3933,28 +3879,20 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} - array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.filter@1.0.3: - resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} - engines: {node: '>= 0.4'} - array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} - array.prototype.findlastindex@1.2.4: - resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.2: @@ -3968,17 +3906,14 @@ packages: array.prototype.toreversed@1.1.2: resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} arraybuffer.prototype.slice@1.0.3: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -4024,8 +3959,8 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - atomically@2.0.2: - resolution: {integrity: sha512-Xfmb4q5QV7uqTlVdMSTtO5eF4DCHfNOdaPyKlbFShkzeNP+3lj3yjjcbdjSmEY4+pDBKJ9g26aP+ImTe88UHoQ==} + atomically@2.0.3: + resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} autoprefixer@10.4.19: resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} @@ -4038,24 +3973,24 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - avvio@8.3.0: - resolution: {integrity: sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==} + avvio@8.3.2: + resolution: {integrity: sha512-st8e519GWHa/azv8S87mcJvZs4WsgTBjOw/Ih1CP6u+8SZvcOeAYNG6JbsIrAUUJJ7JfmrnOkR8ipDS+u9SIRQ==} aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - aws4@1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + aws4@1.13.0: + resolution: {integrity: sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==} - axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + axe-core@4.9.1: + resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} engines: {node: '>=4'} - axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} - b4a@1.6.4: - resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} babel-core@7.0.0-bridge.0: resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} @@ -4089,6 +4024,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + bare-events@2.4.2: + resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -4099,8 +4037,8 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} bl@4.1.0: @@ -4121,15 +4059,12 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - breakword@1.0.5: - resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} - - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4196,10 +4131,6 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -4208,11 +4139,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001588: - resolution: {integrity: sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==} - - caniuse-lite@1.0.30001607: - resolution: {integrity: sha512-WcvhVRjXLKFB/kmOFVwELtMxyhq3iM/MvmXcyCe2PNf166c39mptscOc/45TTS96n2gpNV2z7+NakArTWZCQ3w==} + caniuse-lite@1.0.30001637: + resolution: {integrity: sha512-1x0qRI1mD1o9e+7mBI7XtzFAP4XszbHaVWsMiGbSPLYekKTJF7K+FNk6AsXH4sUpc+qrsI3pVgf1Jdl/uGkuSQ==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4258,8 +4186,8 @@ packages: resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} engines: {node: '>= 0.8.0'} - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} chrome-launcher@0.15.2: @@ -4270,10 +4198,6 @@ packages: ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -4282,8 +4206,8 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} - classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} @@ -4297,12 +4221,12 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cli-spinners@2.7.0: - resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} cli-truncate@2.1.0: @@ -4332,8 +4256,8 @@ packages: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} - clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} color-convert@1.9.3: @@ -4412,6 +4336,9 @@ packages: resolution: {integrity: sha512-fIWyWUXrJ45cHCIQX+Ck1hrZDIf/9DR0P0Zewn3uNht28hbt5OfGUq8rRWsxi96pZWPyBEd0eY9ama01JTaknA==} engines: {node: '>=18'} + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} @@ -4423,12 +4350,12 @@ packages: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} - core-js-compat@3.36.1: - resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} + core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -4474,29 +4401,16 @@ packages: engines: {node: '>=4'} hasBin: true - csstype@3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - - csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - - csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - - csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - - cypress-real-events@1.12.0: - resolution: {integrity: sha512-oiy+4kGKkzc2PT36k3GGQqkGxNiVypheWjMtfyi89iIk6bYmTzeqxapaLHS3pnhZOX1IEbTDUVxh8T4Nhs1tyQ==} + cypress-real-events@1.13.0: + resolution: {integrity: sha512-LoejtK+dyZ1jaT8wGT5oASTPfsNV8/ClRp99ruN60oPj8cBJYod80iJDyNwfPAu4GCxTXOhhAv9FO65Hpwt6Hg==} peerDependencies: cypress: ^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x || ^13.x - cypress@13.7.2: - resolution: {integrity: sha512-FF5hFI5wlRIHY8urLZjJjj/YvfCBrRpglbZCLr/cYcL9MdDe0+5usa8kTIrDHthlEc9lwihbkb5dmwqBDNS2yw==} + cypress@13.12.0: + resolution: {integrity: sha512-udzS2JilmI9ApO/UuqurEwOvThclin5ntz7K0BtnHBs+tg2Bl9QShLISXpSEMDv/u8b6mqdoAdyKeZiSqKWL8g==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} hasBin: true @@ -4583,15 +4497,11 @@ packages: dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - date-fns@3.6.0: resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -4619,8 +4529,8 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -4628,10 +4538,6 @@ packages: supports-color: optional: true - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -4639,12 +4545,13 @@ packages: decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} - deep-equal@2.2.0: - resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -4716,8 +4623,8 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} dir-glob@3.0.1: @@ -4774,6 +4681,11 @@ packages: peerDependencies: react: '>=16.12.0' + downshift@9.0.6: + resolution: {integrity: sha512-lkqWh0eb34XuH+3z3/BH/LGVRV7ur0rielSlxtlQKsjAFF/wc/c0wsM9phUGXyzK2g1QWHoNHQyc+vVAheI17Q==} + peerDependencies: + react: '>=16.12.0' + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -4783,8 +4695,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.4.673: - resolution: {integrity: sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw==} + electron-to-chromium@1.4.812: + resolution: {integrity: sha512-7L8fC2Ey/b6SePDFKR2zHAy4mbdp1/38Yk5TsARO66W3hC5KEaeKMMHoxwtuH+jcu2AYLSn9QX04i95t6Fl1Hg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4799,14 +4711,10 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} engines: {node: '>=10.13.0'} - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -4822,8 +4730,8 @@ packages: resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - envinfo@7.12.0: - resolution: {integrity: sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==} + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} engines: {node: '>=4'} hasBin: true @@ -4841,9 +4749,6 @@ packages: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} - es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -4855,8 +4760,8 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-iterator-helpers@1.0.18: - resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} engines: {node: '>= 0.4'} es-module-lexer@0.4.1: @@ -4882,13 +4787,13 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} escape-html@1.0.3: @@ -4910,8 +4815,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-compat-utils@0.5.0: - resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' @@ -4932,8 +4837,8 @@ packages: eslint: '*' eslint-plugin-import: '*' - eslint-module-utils@2.8.0: - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + eslint-module-utils@2.8.1: + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -4969,14 +4874,14 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsonc@2.15.0: - resolution: {integrity: sha512-wAphMVgTQPAKAYV8d/QEkEYDg8uer9nMQ85N17IUiJcAWLxJs83/Exe59dEH9yKUpvpLf46H+wR7/U7lZ3/NpQ==} + eslint-plugin-jsonc@2.16.0: + resolution: {integrity: sha512-Af/ZL5mgfb8FFNleH6KlO4/VdmDuTqmM+SPnWcdoWywTetv7kq+vQe99UyQb9XO3b0OWLVuTH7H0d/PXYCMdSg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' - eslint-plugin-jsx-a11y@6.8.0: - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + eslint-plugin-jsx-a11y@6.9.0: + resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -5016,20 +4921,20 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-promise@6.1.1: - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + eslint-plugin-promise@6.2.0: + resolution: {integrity: sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.34.1: - resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} + eslint-plugin-react@7.34.3: + resolution: {integrity: sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -5149,8 +5054,8 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} @@ -5162,31 +5067,31 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-json-stringify@5.9.1: - resolution: {integrity: sha512-NMrf+uU9UJnTzfxaumMDXK1NWqtPCfGoM9DYIE+ESlaTQqjlANFBy0VAbsm6FB88Mx0nceyi18zTo5kIEUlzxg==} + fast-json-stringify@5.16.1: + resolution: {integrity: sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==} fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-querystring@1.1.0: - resolution: {integrity: sha512-LWkjBCZlxjnSanuPpZ6mHswjy8hQv3VcPJsQB3ltUF2zjvrycr0leP3TSTEEfvQ1WEMSRl5YNsGqaft9bjLqEw==} + fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - fast-redact@3.1.2: - resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} engines: {node: '>=6'} - fast-uri@2.2.0: - resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} + fast-uri@2.4.0: + resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==} - fast-xml-parser@4.3.6: - resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} + fast-xml-parser@4.4.0: + resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} hasBin: true - fastify-plugin@4.5.0: - resolution: {integrity: sha512-79ak0JxddO0utAXAQ5ccKhvs6vX2MGyHHMMsmZkBANrq3hXc1CHzvNPHOcvTsVMEPl5I+NT+RO4YKMGehOfSIg==} + fastify-plugin@4.5.1: + resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} - fastify@4.26.2: - resolution: {integrity: sha512-90pjTuPGrfVKtdpLeLzND5nyC4woXZN5VadiNQCicj/iJU4viNHKhsAnb7jmv1vu2IzkLXyBiCzdWuzeXgQ5Ug==} + fastify@4.28.0: + resolution: {integrity: sha512-HhW7UHW07YlqH5qpS0af8d2Gl/o98DhJ8ZDQWHRNDnzeOhZvtreWsX8xanjGgXmkYerGbo8ax/n40Dpwqkot8Q==} fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -5201,8 +5106,8 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} - fflate@0.8.1: - resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} @@ -5212,8 +5117,8 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} finalhandler@1.1.2: @@ -5224,8 +5129,8 @@ packages: resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} engines: {node: '>=6'} - find-my-way@8.1.0: - resolution: {integrity: sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==} + find-my-way@8.2.0: + resolution: {integrity: sha512-HdWXgFYc6b1BJcOBDBwjqWuHJj1WYiqrxSh25qtU4DabpMFdj/gSunNBQb83t+8Zt67D7CXEzJWTkxaShMTMOA==} engines: {node: '>=14'} find-root@1.1.0: @@ -5250,18 +5155,18 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.234.0: - resolution: {integrity: sha512-J1Wn32xDF1l8FqwshoQnTwC9K3aJ83MFuXUx9AcBQr8ttbI/rkjEgAqnjxaIJuZ6RGMfccN5ZxDJSOMM64qy9Q==} + flow-parser@0.238.2: + resolution: {integrity: sha512-fs7FSnzzKF6oSzjk14JlBHt82DPchYHVsXtPi4Fkn+qrunVjWaBZY7nSO/mC9X4l9+wRah/R69DRd5NGDOrWqw==} engines: {node: '>=0.4.0'} fontfaceobserver@2.1.0: @@ -5270,8 +5175,8 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} engines: {node: '>=14'} forever-agent@0.6.1: @@ -5311,8 +5216,8 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} fs-extra@7.0.1: @@ -5383,8 +5288,8 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} @@ -5403,16 +5308,14 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} + glob@10.4.2: + resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} + engines: {node: '>=16 || 14 >=14.18'} hasBin: true - glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -5422,12 +5325,12 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.19.0: - resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@11.1.0: @@ -5440,24 +5343,17 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql@16.8.1: - resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} happy-dom@13.10.1: resolution: {integrity: sha512-9GZLEFvQL5EgfJX2zcBgu1nsPUn98JF/EiJnSfQbdxI6YEQGqpd09lXXxOmYonRBIEFz9JlGCOiPflDzgS1p8w==} engines: {node: '>=16.0.0'} - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -5484,10 +5380,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} - engines: {node: '>= 0.4'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -5554,8 +5446,8 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} image-size@1.1.1: @@ -5563,11 +5455,8 @@ packages: engines: {node: '>=16.x'} hasBin: true - immer@10.0.4: - resolution: {integrity: sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==} - - immer@9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + immer@10.1.1: + resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} import-fresh@2.0.0: resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} @@ -5591,6 +5480,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -5599,8 +5489,8 @@ packages: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} - inquirer@8.2.5: - resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} internal-slot@1.0.7: @@ -5611,8 +5501,8 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - intl-messageformat@10.3.3: - resolution: {integrity: sha512-un/f07/g2e/3Q8e1ghDKET+el22Bi49M7O/rHxd597R+oLpPOMykSv5s51cABVfu3FZW+fea4hrzf2MHu1W4hw==} + intl-messageformat@10.5.14: + resolution: {integrity: sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==} invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -5631,9 +5521,6 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -5672,8 +5559,9 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} @@ -5742,8 +5630,9 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} @@ -5768,10 +5657,6 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -5792,11 +5677,9 @@ packages: resolution: {integrity: sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==} engines: {node: '>=12'} - is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} @@ -5833,14 +5716,16 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} @@ -5858,9 +5743,6 @@ packages: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -5893,8 +5775,8 @@ packages: resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} engines: {node: '>=10'} - istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} iterator.prototype@1.1.2: @@ -5905,8 +5787,8 @@ packages: peerDependencies: react: '>=18.0' - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + jackspeak@3.4.0: + resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} engines: {node: '>=14'} jest-environment-node@29.7.0: @@ -5937,15 +5819,15 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - joi@17.13.0: - resolution: {integrity: sha512-9qcrTyoBmFZRNHeVP4edKqIUEgFzq7MHvTNSDuHSqkpOPtiBkgNgcmTSqmiw1kw9tdKaiddvIDv/eCJDxmqWCA==} + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} jotai-optics@0.3.2: resolution: {integrity: sha512-RH6SvqU5hmkVqnHmaqf9zBXvIAs4jLxkDHS4fr5ljuBKHs8+HQ02v+9hX7ahTppxx6dUb0GGUE80jQKJ0kFTLw==} @@ -5953,8 +5835,8 @@ packages: jotai: '>=1.11.0' optics-ts: '*' - jotai-x@1.2.2: - resolution: {integrity: sha512-HaFl3O4aKdBdeTyuzzcvnBWvicXkxl0DBINsqasqWrL7mZov4AAuXUSAsAY817UDwMe1+k77uBazUCFlaiyU3A==} + jotai-x@1.2.3: + resolution: {integrity: sha512-hQSO2oKZAHvH2Ndm8sMQQ+MjQfSZOh33ET6C0S/D10WWOvKTlvAvwvDkt6NNj8psENt+J2rYP8+brmbyimdYDw==} peerDependencies: '@types/react': '>=17.0.0' jotai: '>=2.0.0' @@ -5965,8 +5847,8 @@ packages: react: optional: true - jotai@2.8.0: - resolution: {integrity: sha512-yZNMC36FdLOksOr8qga0yLf14miCJlEThlp5DeFJNnqzm2+ZG7wLcJzoOyij5K6U6Xlc5ljQqPDlJRgqW0Y18g==} + jotai@2.8.3: + resolution: {integrity: sha512-pR4plVvdbzB6zyt7VLLHPMAkcRSKhRIvZKd+qkifQLa3CEziEo1uwZjePj4acTmQrboiISBlYSdCz3gWcr1Nkg==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=17.0.0' @@ -5984,8 +5866,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -6024,6 +5906,9 @@ packages: engines: {node: '>=6'} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -6060,13 +5945,10 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-eslint-parser@2.1.0: - resolution: {integrity: sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==} + jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -6081,8 +5963,11 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} - just-extend@4.2.1: - resolution: {integrity: sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==} + just-extend@6.2.0: + resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} @@ -6099,11 +5984,11 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - konva@9.3.6: - resolution: {integrity: sha512-dqR8EbcM0hjuilZCBP6xauQ5V3kH3m9kBcsDkqPypQuRgsXbcXUrxqYxhNbdvKZpYNW8Amq94jAD/C0NY3qfBQ==} + konva@9.3.12: + resolution: {integrity: sha512-IxX+ka+gVGm63APkB/taepMxpbUdjfLBUA1OIqx7nbH3126Df6eAuVWasH3qh3vg4ctRseops031sZO0b2O33A==} - language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} @@ -6125,8 +6010,8 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - light-my-request@5.11.0: - resolution: {integrity: sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA==} + light-my-request@5.13.0: + resolution: {integrity: sha512-9IjUN9ZyCS9pTG+KqTDEQo68Sui2lHsYBrfMyVUTTZ3XhH8PMZq7xO94Kr+eP9dhi/kcKsx4N41p2IXEBil1pQ==} lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} @@ -6135,6 +6020,10 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -6223,8 +6112,8 @@ packages: loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} lru-cache@4.1.5: @@ -6244,16 +6133,11 @@ packages: magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.30.7: - resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} - engines: {node: '>=12'} - - magic-string@0.30.9: - resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} - engines: {node: '>=12'} + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - magicast@0.3.3: - resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -6269,14 +6153,6 @@ packages: makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} @@ -6292,8 +6168,8 @@ packages: mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} - mdast-util-from-markdown@1.3.0: - resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} + mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} mdast-util-gfm-autolink-literal@1.0.3: resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} @@ -6328,10 +6204,6 @@ packages: memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -6342,153 +6214,153 @@ packages: metric-lcs@0.1.2: resolution: {integrity: sha512-+TZ5dUDPKPJaU/rscTzxyN8ZkX7eAVLAiQU/e+YINleXPv03SCmJShaMT1If1liTH8OcmWXZs0CmzCBRBLcMpA==} - metro-babel-transformer@0.80.8: - resolution: {integrity: sha512-TTzNwRZb2xxyv4J/+yqgtDAP2qVqH3sahsnFu6Xv4SkLqzrivtlnyUbaeTdJ9JjtADJUEjCbgbFgUVafrXdR9Q==} + metro-babel-transformer@0.80.9: + resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} engines: {node: '>=18'} - metro-cache-key@0.80.8: - resolution: {integrity: sha512-qWKzxrLsRQK5m3oH8ePecqCc+7PEhR03cJE6Z6AxAj0idi99dHOSitTmY0dclXVB9vP2tQIAE8uTd8xkYGk8fA==} + metro-cache-key@0.80.9: + resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} engines: {node: '>=18'} - metro-cache@0.80.8: - resolution: {integrity: sha512-5svz+89wSyLo7BxdiPDlwDTgcB9kwhNMfNhiBZPNQQs1vLFXxOkILwQiV5F2EwYT9DEr6OPZ0hnJkZfRQ8lDYQ==} + metro-cache@0.80.9: + resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} engines: {node: '>=18'} - metro-config@0.80.8: - resolution: {integrity: sha512-VGQJpfJawtwRzGzGXVUoohpIkB0iPom4DmSbAppKfumdhtLA8uVeEPp2GM61kL9hRvdbMhdWA7T+hZFDlo4mJA==} + metro-config@0.80.9: + resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} engines: {node: '>=18'} - metro-core@0.80.8: - resolution: {integrity: sha512-g6lud55TXeISRTleW6SHuPFZHtYrpwNqbyFIVd9j9Ofrb5IReiHp9Zl8xkAfZQp8v6ZVgyXD7c130QTsCz+vBw==} + metro-core@0.80.9: + resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} engines: {node: '>=18'} - metro-file-map@0.80.8: - resolution: {integrity: sha512-eQXMFM9ogTfDs2POq7DT2dnG7rayZcoEgRbHPXvhUWkVwiKkro2ngcBE++ck/7A36Cj5Ljo79SOkYwHaWUDYDw==} + metro-file-map@0.80.9: + resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} engines: {node: '>=18'} - metro-minify-terser@0.80.8: - resolution: {integrity: sha512-y8sUFjVvdeUIINDuW1sejnIjkZfEF+7SmQo0EIpYbWmwh+kq/WMj74yVaBWuqNjirmUp1YNfi3alT67wlbBWBQ==} + metro-minify-terser@0.80.9: + resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} engines: {node: '>=18'} - metro-resolver@0.80.8: - resolution: {integrity: sha512-JdtoJkP27GGoZ2HJlEsxs+zO7jnDUCRrmwXJozTlIuzLHMRrxgIRRby9fTCbMhaxq+iA9c+wzm3iFb4NhPmLbQ==} + metro-resolver@0.80.9: + resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} engines: {node: '>=18'} - metro-runtime@0.80.8: - resolution: {integrity: sha512-2oScjfv6Yb79PelU1+p8SVrCMW9ZjgEiipxq7jMRn8mbbtWzyv3g8Mkwr+KwOoDFI/61hYPUbY8cUnu278+x1g==} + metro-runtime@0.80.9: + resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} engines: {node: '>=18'} - metro-source-map@0.80.8: - resolution: {integrity: sha512-+OVISBkPNxjD4eEKhblRpBf463nTMk3KMEeYS8Z4xM/z3qujGJGSsWUGRtH27+c6zElaSGtZFiDMshEb8mMKQg==} + metro-source-map@0.80.9: + resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} engines: {node: '>=18'} - metro-symbolicate@0.80.8: - resolution: {integrity: sha512-nwhYySk79jQhwjL9QmOUo4wS+/0Au9joEryDWw7uj4kz2yvw1uBjwmlql3BprQCBzRdB3fcqOP8kO8Es+vE31g==} + metro-symbolicate@0.80.9: + resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} engines: {node: '>=18'} hasBin: true - metro-transform-plugins@0.80.8: - resolution: {integrity: sha512-sSu8VPL9Od7w98MftCOkQ1UDeySWbsIAS5I54rW22BVpPnI3fQ42srvqMLaJUQPjLehUanq8St6OMBCBgH/UWw==} + metro-transform-plugins@0.80.9: + resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} engines: {node: '>=18'} - metro-transform-worker@0.80.8: - resolution: {integrity: sha512-+4FG3TQk3BTbNqGkFb2uCaxYTfsbuFOCKMMURbwu0ehCP8ZJuTUramkaNZoATS49NSAkRgUltgmBa4YaKZ5mqw==} + metro-transform-worker@0.80.9: + resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} engines: {node: '>=18'} - metro@0.80.8: - resolution: {integrity: sha512-in7S0W11mg+RNmcXw+2d9S3zBGmCARDxIwoXJAmLUQOQoYsRP3cpGzyJtc7WOw8+FXfpgXvceD0u+PZIHXEL7g==} + metro@0.80.9: + resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} engines: {node: '>=18'} hasBin: true - micromark-core-commonmark@1.0.6: - resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} + micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} - micromark-extension-gfm-autolink-literal@1.0.4: - resolution: {integrity: sha512-WCssN+M9rUyfHN5zPBn3/f0mIA7tqArHL/EKbv3CZK+LT2rG77FEikIQEqBkv46fOqXQK4NEW/Pc7Z27gshpeg==} + micromark-extension-gfm-autolink-literal@1.0.5: + resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} - micromark-extension-gfm-footnote@1.1.0: - resolution: {integrity: sha512-RWYce7j8+c0n7Djzv5NzGEGitNNYO3uj+h/XYMdS/JinH1Go+/Qkomg/rfxExFzYTiydaV6GLeffGO5qcJbMPA==} + micromark-extension-gfm-footnote@1.1.2: + resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} - micromark-extension-gfm-strikethrough@1.0.5: - resolution: {integrity: sha512-X0oI5eYYQVARhiNfbETy7BfLSmSilzN1eOuoRnrf9oUNsPRrWOAe9UqSizgw1vNxQBfOwL+n2610S3bYjVNi7w==} + micromark-extension-gfm-strikethrough@1.0.7: + resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} - micromark-extension-gfm-table@1.0.6: - resolution: {integrity: sha512-92pq7Q+T+4kXH4M6kL+pc8WU23Z9iuhcqmtYFWdFWjm73ZscFpH2xE28+XFpGWlvgq3LUwcN0XC0PGCicYFpgA==} + micromark-extension-gfm-table@1.0.7: + resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} micromark-extension-gfm-tagfilter@1.0.2: resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} - micromark-extension-gfm-task-list-item@1.0.4: - resolution: {integrity: sha512-9XlIUUVnYXHsFF2HZ9jby4h3npfX10S1coXTnV035QGPgrtNYQq3J6IfIvcCIUAJrrqBVi5BqA/LmaOMJqPwMQ==} + micromark-extension-gfm-task-list-item@1.0.5: + resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} - micromark-extension-gfm@2.0.2: - resolution: {integrity: sha512-oMBh++llCWHYftkP1NmeoQDHHlj3nsRYL3HBhjwBqm+CjSQ4l/v05XiQMTWqmYh4MLEVbq473qEi6S1wonCxcA==} + micromark-extension-gfm@2.0.3: + resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} - micromark-factory-destination@1.0.0: - resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} + micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} - micromark-factory-label@1.0.2: - resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} + micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} - micromark-factory-space@1.0.0: - resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} + micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - micromark-factory-title@1.0.2: - resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} + micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} - micromark-factory-whitespace@1.0.0: - resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} + micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} - micromark-util-character@1.1.0: - resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} + micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - micromark-util-chunked@1.0.0: - resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} + micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} - micromark-util-classify-character@1.0.0: - resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} + micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} - micromark-util-combine-extensions@1.0.0: - resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} + micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} - micromark-util-decode-numeric-character-reference@1.0.0: - resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} + micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} - micromark-util-decode-string@1.0.2: - resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} + micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} - micromark-util-encode@1.0.1: - resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} + micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - micromark-util-html-tag-name@1.1.0: - resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} + micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} - micromark-util-normalize-identifier@1.0.0: - resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} + micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} - micromark-util-resolve-all@1.0.0: - resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} + micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} - micromark-util-sanitize-uri@1.1.0: - resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} + micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} - micromark-util-subtokenize@1.0.2: - resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} + micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} - micromark-util-symbol@1.0.1: - resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} + micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - micromark-util-types@1.0.2: - resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} + micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} - micromark@3.1.0: - resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} + micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} mime-db@1.52.0: @@ -6535,19 +6407,15 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} mitt@2.1.0: @@ -6556,10 +6424,6 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -6569,8 +6433,8 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} mnemonist@0.39.6: resolution: {integrity: sha512-A/0v5Z59y63US00cRSLiloEIw3t5G+MiKz4BhX21FI+YBJXBOGW0ohFxTxO08dsOYlzxo87T7vGfZKYp2bcAWA==} @@ -6630,8 +6494,8 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - nise@5.1.5: - resolution: {integrity: sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==} + nise@5.1.9: + resolution: {integrity: sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==} nocache@3.0.4: resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} @@ -6652,8 +6516,8 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} - node-fetch@2.6.9: - resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -6707,8 +6571,8 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - ob1@0.80.8: - resolution: {integrity: sha512-QHJQk/lXMmAW8I7AIM3in1MSlwe1umR72Chhi8B7Xnq6mzjhBKkA6Fy/zAhQnGkA4S912EPCEvTij5yh+EQTAA==} + ob1@0.80.9: + resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} engines: {node: '>=18'} object-assign@4.1.1: @@ -6719,11 +6583,12 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} - object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} object-keys@1.1.1: @@ -6738,26 +6603,28 @@ packages: resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} - object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} - object.groupby@1.0.2: - resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} object.hasown@1.1.4: resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} engines: {node: '>= 0.4'} - object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} obliterator@2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - on-exit-leak-free@2.1.0: - resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} @@ -6797,8 +6664,8 @@ packages: optics-ts@2.4.1: resolution: {integrity: sha512-HaYzMHvC80r7U/LqAd4hQyopDezC60PO2qF5GuIwALut2cl5rK1VWHsqTp0oqoJJWjiv6uXKqsO+Q2OO0C3MmQ==} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} ora@5.4.1: @@ -6815,8 +6682,8 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - outvariant@1.4.0: - resolution: {integrity: sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==} + outvariant@1.4.2: + resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} @@ -6866,6 +6733,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -6915,15 +6785,12 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} - - path-to-regexp@1.8.0: - resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -6941,8 +6808,8 @@ packages: performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -6956,14 +6823,14 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pino-abstract-transport@1.1.0: - resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} + pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} - pino-std-serializers@6.1.0: - resolution: {integrity: sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==} + pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - pino@8.19.0: - resolution: {integrity: sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==} + pino@9.2.0: + resolution: {integrity: sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug==} hasBin: true pirates@4.0.6: @@ -6978,8 +6845,8 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} @@ -7001,8 +6868,8 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: postcss: '>=8.0.9' @@ -7019,8 +6886,8 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-selector-parser@6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} engines: {node: '>=4'} postcss-value-parser@4.2.0: @@ -7030,8 +6897,8 @@ packages: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} - preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} engines: {node: '>=10'} prelude-ls@1.2.1: @@ -7047,8 +6914,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + prettier@3.3.2: + resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} engines: {node: '>=14'} hasBin: true @@ -7075,9 +6942,6 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process-warning@2.2.0: - resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} - process-warning@3.0.0: resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} @@ -7103,8 +6967,8 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - proxy-compare@2.4.0: - resolution: {integrity: sha512-FD8KmQUQD6Mfpd0hywCOzcon/dbkFP8XBd9F1ycbKtvVsfv6TsFUKJ2eC0Iz2y+KzlkdT1Z8SY6ZSgm07zOyqg==} + proxy-compare@2.6.0: + resolution: {integrity: sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw==} proxy-from-env@1.0.0: resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} @@ -7118,10 +6982,6 @@ packages: pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -7150,10 +7010,6 @@ packages: quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -7164,14 +7020,14 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - react-datepicker@4.25.0: - resolution: {integrity: sha512-zB7CSi44SJ0sqo8hUQ3BF1saE/knn7u25qEMTO1CQGofY1VAKahO8k9drZtp0cfW1DMfoYLR3uSY1/uMvbEzbg==} + react-datepicker@6.9.0: + resolution: {integrity: sha512-QTxuzeem7BUfVFWv+g5WuvzT0c5BPo+XTCNbMTZKSZQLU+cMMwSUHwspaxuIcDlwNcOH0tiJ+bh1fJ2yxOGYWA==} peerDependencies: react: ^16.9.0 || ^17 || ^18 react-dom: ^16.9.0 || ^17 || ^18 - react-devtools-core@5.1.0: - resolution: {integrity: sha512-NRtLBqYVLrIY+lOa2oTpFiAhI7Hru0AUXI0tP9neCyaPPAzlZyeH0i+VZ0shIyRTJbpvyqbD/uCsewA2hpfZHw==} + react-devtools-core@5.3.0: + resolution: {integrity: sha512-IG3T+azv48Oc5VLdHR4XdBNKNZIUOKRtx0sJMRvb++Zom/uqtx73j6u37JCsIBNIaq6vA7RPH5Bbcf/Wj53KXA==} react-dnd-html5-backend@16.0.1: resolution: {integrity: sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==} @@ -7191,10 +7047,10 @@ packages: '@types/react': optional: true - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: - react: ^18.2.0 + react: ^18.3.1 react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} @@ -7214,6 +7070,9 @@ packages: react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-konva@18.2.10: resolution: {integrity: sha512-ohcX1BJINL43m4ynjZ24MxFI1syjBdrXhqVxYVDw2rKgr3yuS0x/6m1Y2Z4sl4T/gKhfreBx8KHisd0XC6OT1g==} peerDependencies: @@ -7221,8 +7080,8 @@ packages: react: '>=18.0.0' react-dom: '>=18.0.0' - react-native@0.74.0: - resolution: {integrity: sha512-Vpp9WPmkCm4TUH5YDxwQhqktGVon/yLpjbTgjgLqup3GglOgWagYCX3MlmK1iksIcqtyMJHMEWa+UEzJ3G9T8w==} + react-native@0.74.2: + resolution: {integrity: sha512-EBMBjPPL4/GjHMP4NqsZabT3gI5WU9cSmduABGAGrd8uIcmTZ5F2Ng9k6gFmRm7n8e8CULxDNu98ZpQfBjl7Bw==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -7232,8 +7091,8 @@ packages: '@types/react': optional: true - react-onclickoutside@6.13.0: - resolution: {integrity: sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==} + react-onclickoutside@6.13.1: + resolution: {integrity: sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==} peerDependencies: react: ^15.5.x || ^16.x || ^17.x || ^18.x react-dom: ^15.5.x || ^16.x || ^17.x || ^18.x @@ -7251,18 +7110,18 @@ packages: peerDependencies: react: ^18.0.0 - react-reconciler@0.29.0: - resolution: {integrity: sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==} + react-reconciler@0.29.2: + resolution: {integrity: sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==} engines: {node: '>=0.10.0'} peerDependencies: - react: ^18.2.0 + react: ^18.3.1 - react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.4: - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -7271,8 +7130,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -7308,8 +7167,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-tracked@1.7.11: - resolution: {integrity: sha512-+XXv4dJH7NnLtSD/cPVL9omra4A3KRK91L33owevXZ81r7qF/a9DdCsVZa90jMGht/V1Ym9sasbmidsJykhULQ==} + react-tracked@1.7.14: + resolution: {integrity: sha512-6UMlgQeRAGA+uyYzuQGm7kZB6ZQYFhc7sntgP7Oxwwd6M0Ud/POyb4K3QWT1eXvoifSa80nrAWnXWFGpOvbwkw==} peerDependencies: react: '>=16.8.0' react-dom: '*' @@ -7330,8 +7189,8 @@ packages: react-zdog@1.2.2: resolution: {integrity: sha512-Ix7ALha91aOEwiHuxumCeYbARS5XNpc/w0v145oGkM6poF/CvhKJwzLhM5sEZbtrghMA+psAhOJkCTzJoseicA==} - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -7349,19 +7208,19 @@ packages: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} - readable-stream@2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.3.0: - resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - readdir-glob@1.1.2: - resolution: {integrity: sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==} + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -7475,10 +7334,6 @@ packages: resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} - resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -7491,16 +7346,16 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} - ret@0.2.2: - resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} - engines: {node: '>=4'} + ret@0.4.3: + resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==} + engines: {node: '>=10'} reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.3.1: - resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} @@ -7520,8 +7375,8 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - rollup@4.14.1: - resolution: {integrity: sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==} + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -7557,11 +7412,11 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} - safe-regex2@2.0.0: - resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} + safe-regex2@3.1.0: + resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==} - safe-stable-stringify@2.4.2: - resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==} + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} safer-buffer@2.1.2: @@ -7570,8 +7425,8 @@ packages: scheduler@0.21.0: resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} scheduler@0.24.0-canary-efb381bbf-20230505: resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} @@ -7599,8 +7454,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true @@ -7622,8 +7477,8 @@ packages: set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} set-function-name@2.0.2: @@ -7716,17 +7571,8 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true - - sonic-boom@3.7.0: - resolution: {integrity: sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==} - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} + sonic-boom@4.0.1: + resolution: {integrity: sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==} source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} @@ -7754,20 +7600,20 @@ packages: spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - spdx-correct@3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} - split2@4.1.0: - resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} sprintf-js@1.0.3: @@ -7807,20 +7653,17 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} - stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - - streamx@2.15.5: - resolution: {integrity: sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==} + streamx@2.18.0: + resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} strict-event-emitter@0.2.8: resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} - strict-event-emitter@0.4.4: - resolution: {integrity: sha512-rTCFXHBxs2/XvNc7InSkSwUkwyQ0T9eop/Qvm0atNUXpBxjwsJ5yb7Ih/tgHbjPdeCcB4aCP8K4tuo7hNKssNg==} + strict-event-emitter@0.4.6: + resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} - string-argv@0.3.1: - resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} string-width@4.2.3: @@ -7831,6 +7674,9 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + string.prototype.matchall@4.0.11: resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} @@ -7888,8 +7734,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} @@ -7897,9 +7743,9 @@ packages: stubborn-fs@1.2.5: resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} - sucrase@3.32.0: - resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} - engines: {node: '>=8'} + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true sudo-prompt@9.2.1: @@ -7934,11 +7780,11 @@ packages: resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} - tabbable@6.1.2: - resolution: {integrity: sha512-qCN98uP7i9z0fIS4amQ5zbGBOq+OSigYeGvPy7NDk8Y9yncqDZ9pRPgfsc2PJIVM9RrJj7GIfuRgmjoUU9zTHQ==} + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + tailwindcss@3.4.4: + resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} engines: {node: '>=14.0.0'} hasBin: true @@ -7946,8 +7792,8 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - tar-stream@3.1.6: - resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} @@ -7961,8 +7807,8 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - terser@5.30.4: - resolution: {integrity: sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==} + terser@5.31.1: + resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} engines: {node: '>=10'} hasBin: true @@ -7970,6 +7816,9 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + text-decoder@1.1.0: + resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -7980,11 +7829,11 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - thread-stream@2.3.0: - resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} - three@0.163.0: - resolution: {integrity: sha512-HlMgCb2TF/dTLRtknBnjUTsR8FsDqBY43itYop2+Zg822I+Kd0Ua2vs8CvfBVefXkBdNDrLMoRTGCIIpfCuDew==} + three@0.165.0: + resolution: {integrity: sha512-cc96IlVYGydeceu0e5xq70H8/yoVT/tXBxV/W8A/U6uOq7DXc4/s1Mkmnu6SqoYGhSRWWYFOhVwvq6V0VtbplA==} throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} @@ -8004,11 +7853,11 @@ packages: tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - tinypool@0.8.2: - resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} tinyspy@2.2.1: @@ -8019,9 +7868,9 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -8034,35 +7883,31 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toad-cache@3.3.0: - resolution: {integrity: sha512-3oDzcogWGHZdkwrHyvJVpPjA7oNzY6ENOV3PsWJY9XYPZ6INo94Yd47s5may1U+nleBPwDhrRiTPMIvKaa3MQg==} + toad-cache@3.7.0: + resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} engines: {node: '>=12'} toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - totalist@3.0.0: - resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@1.0.1: - resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} - engines: {node: '>=16.13.0'} + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -8092,16 +7937,8 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tslib@2.6.1: - resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} - engines: {node: '>=8.0.0'} - hasBin: true + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -8117,10 +7954,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -8149,8 +7982,8 @@ packages: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} - type-fest@4.15.0: - resolution: {integrity: sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==} + type-fest@4.20.1: + resolution: {integrity: sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==} engines: {node: '>=16'} typed-array-buffer@1.0.2: @@ -8174,13 +8007,13 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.4.4: - resolution: {integrity: sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==} + typescript@5.5.2: + resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} engines: {node: '>=14.17'} hasBin: true - ufo@1.4.0: - resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} uint8array-extras@0.3.0: resolution: {integrity: sha512-erJsJwQ0tKdwuqI0359U8ijkFmfiTcq25JvvzRVc1VP+2son1NJRXhxcAKJmAW3ajM8JSGAfsAXye8g4s+znxA==} @@ -8243,10 +8076,6 @@ packages: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} - universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -8259,8 +8088,8 @@ packages: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -8271,8 +8100,8 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - use-callback-ref@1.3.0: - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -8286,8 +8115,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - use-context-selector@1.4.1: - resolution: {integrity: sha512-Io2ArvcRO+6MWIhkdfMFt+WKQX+Vb++W8DS2l03z/Vw/rz3BclKpM0ynr4LYGyU85Eke+Yx5oIhTY++QR0ZDoA==} + use-context-selector@1.4.4: + resolution: {integrity: sha512-pS790zwGxxe59GoBha3QYOwk8AFGp4DN6DOtH+eoqVmgBBRXVx4IlPDhJmmMiNQAgUaLlP+58aqRC3A4rdaSjg==} peerDependencies: react: '>=16.8.0' react-dom: '*' @@ -8304,8 +8133,8 @@ packages: peerDependencies: react: '>=16.8.0' - use-font-face-observer@1.2.1: - resolution: {integrity: sha512-5ieKTMvtUux0l7YoOEz842djfgMH3oVg+tO13E/kyS+gGRLDyfAMmRv0D3fzM7UdFag1kz+3AQIFLkkfEF3TUg==} + use-font-face-observer@1.2.2: + resolution: {integrity: sha512-5C11YC9vPQn5TeIKDvHHiUg59FBzV1LDIOjYJ2PVgn1raVoKHcuWf3dxVDb7OiqQVg3M2S1jX3LxbLw16xo8gg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -8337,11 +8166,6 @@ packages: '@types/react': optional: true - use-subscription@1.8.0: - resolution: {integrity: sha512-LISuG0/TmmoDoCRmV5XAqYkd3UCBNM0ML3gGBndze65WITcsExCD3DTvXXTLyNcOC0heFQZzluW88bN/oC1DQQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - use-sync-external-store@1.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -8369,15 +8193,15 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validator@13.9.0: - resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} + validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} engines: {node: '>= 0.10'} vary@1.1.2: @@ -8394,13 +8218,13 @@ packages: vfile@5.3.7: resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - vite-node@1.4.0: - resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-plugin-dts@3.8.1: - resolution: {integrity: sha512-zEYyQxH7lKto1VTKZHF3ZZeOPkkJgnMrePY4VxDHfDSvDjmYMMfWjZxYmNwW8QxbaItWJQhhXY+geAbyNphI7g==} + vite-plugin-dts@3.9.1: + resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -8415,8 +8239,8 @@ packages: peerDependencies: vite: '>=2.0.0' - vite-plugin-static-copy@1.0.2: - resolution: {integrity: sha512-AfmEF+a/mfjsUsrgjbCkhzUCeIUF4EKQXXt3Ie1cour9MBpy6f6GphbdW2td28oYfOrwCyRzFCksgLkpk58q6Q==} + vite-plugin-static-copy@1.0.5: + resolution: {integrity: sha512-02k0Rox+buYdEOfeilKZSgs1gXfPf9RjVztZEIYZgVIxjsVZi6AXssjzdi+qW6zYt00d3bq+tpP2voVXN2fKLw==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 @@ -8449,8 +8273,8 @@ packages: terser: optional: true - vite@5.2.10: - resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==} + vite@5.3.1: + resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -8477,43 +8301,15 @@ packages: terser: optional: true - vite@5.2.8: - resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitest@1.4.0: - resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.4.0 - '@vitest/ui': 1.4.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -8533,8 +8329,8 @@ packages: vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - vue-template-compiler@2.7.14: - resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} vue-tsc@1.8.27: resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} @@ -8554,8 +8350,8 @@ packages: web-encoding@1.1.5: resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - web-streams-polyfill@3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} webidl-conversions@3.0.1: @@ -8575,8 +8371,8 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - when-exit@2.0.0: - resolution: {integrity: sha512-17lB0PWIgOuil9dgC/vdQY0aq5lwT0umemaIsOTNDBsc1TwclvocXOvkwenwUXEawN5mW3F64X52xPkTFnihDw==} + when-exit@2.1.2: + resolution: {integrity: sha512-u9J+toaf3CCxCAzM/484qNAxQE75rFdVgiFEEV8Xps2gzYhf0tx73s1WXDQhkwV17E3MxRMz40m7Ekd2/121Lg==} which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -8585,11 +8381,12 @@ packages: resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} engines: {node: '>= 0.4'} - which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} - which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} which-pm@2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} @@ -8599,10 +8396,6 @@ packages: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} - which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} - engines: {node: '>= 0.4'} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -8617,6 +8410,10 @@ packages: engines: {node: '>=8'} hasBin: true + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -8635,8 +8432,8 @@ packages: write-file-atomic@2.4.3: resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -8646,8 +8443,8 @@ packages: utf-8-validate: optional: true - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -8658,9 +8455,6 @@ packages: utf-8-validate: optional: true - xstate@4.38.3: - resolution: {integrity: sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw==} - xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -8681,13 +8475,14 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml-eslint-parser@1.2.2: - resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + yaml-eslint-parser@1.2.3: + resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} engines: {node: ^14.17.0 || >=16.0.0} - yaml@2.3.2: - resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} engines: {node: '>= 14'} + hasBin: true yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} @@ -8701,8 +8496,8 @@ packages: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} - yargs@17.7.1: - resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} yauzl@2.10.0: @@ -8720,8 +8515,8 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - z-schema@5.0.4: - resolution: {integrity: sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==} + z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} engines: {node: '>=8.0.0'} hasBin: true @@ -8732,11 +8527,11 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zustand-x@3.0.2: - resolution: {integrity: sha512-tb4qMWbmgrWEdemb+LlrJiHI1ZMxwlQNz7jDHN5iA/vmU8xlpAX80MQZ2FNLP2KejBFEnsA1RWRAO/0D5O0rPw==} + zustand-x@3.0.3: + resolution: {integrity: sha512-EMZAsybLS0JVTeTtZnLap91EAqwgprQgiFEr+/2XmygzaAE8n1aB5kvnFtH7isijBEzNXncq07F98uCWI5roFg==} peerDependencies: zustand: '>=4.3.9' @@ -8749,8 +8544,8 @@ packages: react: optional: true - zustand@4.5.2: - resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} + zustand@4.5.3: + resolution: {integrity: sha512-iH1gA/3uOMR0Gz260Fsklxo7wWEXJ008p1bO9O6gxwkbvBUaTDlcVChkDKGGSsvdbOyVce0nQfBitVH6sbYyew==} engines: {node: '>=12.7.0'} peerDependencies: '@types/react': '>=16.8' @@ -8769,1676 +8564,959 @@ packages: snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@adobe/css-tools@4.3.3': {} + '@adobe/css-tools@4.4.0': {} '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.2.1': + '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.23.5': - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - - '@babel/code-frame@7.24.2': + '@babel/code-frame@7.24.7': dependencies: - '@babel/highlight': 7.24.2 - picocolors: 1.0.0 + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 - '@babel/compat-data@7.23.5': {} + '@babel/compat-data@7.24.7': {} - '@babel/compat-data@7.24.4': {} - - '@babel/core@7.23.9': + '@babel/core@7.24.7': dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.24.4': - dependencies: - '@ampproject/remapping': 2.2.1 - '@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/core@7.24.4) - '@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 + '@ampproject/remapping': 2.3.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/core@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.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.23.6': - dependencies: - '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - - '@babel/generator@7.24.4': + '@babel/generator@7.24.7': 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.2 - '@babel/helper-annotate-as-pure@7.22.5': + '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: - '@babel/types': 7.24.0 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-compilation-targets@7.23.6': + '@babel/helper-compilation-targets@7.24.7': dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@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/core@7.23.9) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@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/core@7.24.4) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 + '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@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/core@7.24.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.4)': + '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.4(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.4)': + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.4(supports-color@8.1.1) + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + debug: 4.3.5(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 - - '@babel/helper-hoist-variables@7.22.5': + '@babel/helper-environment-visitor@7.24.7': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.7 - '@babel/helper-member-expression-to-functions@7.23.0': + '@babel/helper-function-name@7.24.7': dependencies: - '@babel/types': 7.24.0 + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 - '@babel/helper-module-imports@7.22.15': + '@babel/helper-hoist-variables@7.24.7': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.7 - '@babel/helper-module-imports@7.24.3': + '@babel/helper-member-expression-to-functions@7.24.7': dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@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/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': + '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/core': 7.24.4 - '@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/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-optimise-call-expression@7.22.5': + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-plugin-utils@7.22.5': {} - - '@babel/helper-plugin-utils@7.24.0': {} + '@babel/core': 7.24.7 + '@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 + transitivePeerDependencies: + - supports-color - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9)': + '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 + '@babel/types': 7.24.7 - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 + '@babel/helper-plugin-utils@7.24.7': {} - '@babel/helper-replace-supers@7.24.1(@babel/core@7.23.9)': + '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@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/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-wrap-function': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.4)': + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@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/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-simple-access@7.22.5': + '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/types': 7.23.9 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/types': 7.24.0 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-split-export-declaration@7.22.6': + '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-string-parser@7.23.4': {} + '@babel/types': 7.24.7 - '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-string-parser@7.24.7': {} - '@babel/helper-validator-option@7.23.5': {} + '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-wrap-function@7.22.20': - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/helper-validator-option@7.24.7': {} - '@babel/helpers@7.23.9': + '@babel/helper-wrap-function@7.24.7': dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/helper-function-name': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/helpers@7.24.4': + '@babel/helpers@7.24.7': dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 - '@babel/highlight@7.23.4': + '@babel/highlight@7.24.7': dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 + picocolors: 1.0.1 - '@babel/highlight@7.24.2': + '@babel/parser@7.24.7': dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 + '@babel/types': 7.24.7 - '@babel/parser@7.23.6': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/types': 7.23.6 + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/parser@7.23.9': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/types': 7.23.9 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/parser@7.24.4': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/types': 7.24.0 + '@babel/core': 7.24.7 + '@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/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.23.9)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.24.4)': + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@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/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@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/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/compat-data': 7.24.7 + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.9)': + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.4)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@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/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.4)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.23.9)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.4)': + '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.4)': + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.4)': + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)': dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.4)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.4)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.4)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + '@babel/core': 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(@babel/core@7.23.9)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 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(@babel/core@7.24.4)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4)': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.4)': + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-flow@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-classes@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@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/core@7.24.7) + '@babel/helper-split-export-declaration': 7.24.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/template': 7.24.7 - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9)': + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4)': + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9)': + '@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4)': + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9)': + '@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4)': + '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9)': + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.4)': + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9)': + '@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@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/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4)': + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.4)': + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.23.9)': + '@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@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/core@7.24.7) + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.4)': + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + regenerator-transform: 0.15.2 - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.7) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.7) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.23.9)': + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.24.4)': + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.23.9)': + '@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/preset-env@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/core': 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/core@7.24.7) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typeof-symbol': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.7) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.7) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.7) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.7) + core-js-compat: 3.37.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.4)': + '@babel/preset-flow@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-classes@7.24.1(@babel/core@7.23.9)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@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/core@7.23.9) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.24.7 + esutils: 2.0.3 - '@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.4)': + '@babel/preset-typescript@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.4 - '@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/core@7.24.4) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.23.9)': + '@babel/register@7.24.6(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/template': 7.24.0 + '@babel/core': 7.24.7 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/template': 7.24.0 + '@babel/regjsgen@0.8.0': {} - '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.23.9)': + '@babel/runtime@7.24.7': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 + regenerator-runtime: 0.14.1 - '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.4)': + '@babel/template@7.24.7': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.23.9)': + '@babel/traverse@7.24.7': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) - - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) - - '@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.23.9) - - '@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.4) - - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) - - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) - - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.22.5 - - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.22.5 - - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) - - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) - - '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.23.9) - - '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) - - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.23.9) - - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) - - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) - - '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) - - '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - - '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) - - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.23.9) - '@babel/types': 7.24.0 - - '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) - '@babel/types': 7.24.0 - - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.23.9) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.4) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.4) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-typescript@7.24.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.23.9) - - '@babel/plugin-transform-typescript@7.24.4(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4) - - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/preset-env@7.24.4(@babel/core@7.23.9)': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.23.9 - '@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/core@7.23.9) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.23.9) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.23.9) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.23.9) - core-js-compat: 3.36.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-env@7.24.4(@babel/core@7.24.4)': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 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/core@7.24.4) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.4) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.4) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.4) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.24.4) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.4) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.4) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.4) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.4) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.4) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.4) - core-js-compat: 3.36.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-flow@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.4) - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/types': 7.24.0 - esutils: 2.0.3 - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/types': 7.24.0 - esutils: 2.0.3 - - '@babel/preset-typescript@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) - - '@babel/register@7.23.7(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - - '@babel/regjsgen@0.8.0': {} - - '@babel/runtime@7.21.0': - dependencies: - regenerator-runtime: 0.13.11 - - '@babel/runtime@7.23.9': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.23.9': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - - '@babel/template@7.24.0': - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - - '@babel/traverse@7.23.9': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@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.23.9 - '@babel/types': 7.23.9 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.24.1': - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@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.4 - '@babel/types': 7.24.0 - debug: 4.3.4(supports-color@8.1.1) + '@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.5(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.23.6': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@babel/types@7.23.9': + '@babel/types@7.24.7': dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@babel/types@7.24.0': - 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 '@bcoe/v8-coverage@0.2.3': {} - '@changesets/apply-release-plan@7.0.0': + '@changesets/apply-release-plan@7.0.3': dependencies: - '@babel/runtime': 7.23.9 - '@changesets/config': 3.0.0 + '@babel/runtime': 7.24.7 + '@changesets/config': 3.0.1 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.0 + '@changesets/should-skip-package': 0.1.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 @@ -10447,16 +9525,17 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.2 - '@changesets/assemble-release-plan@6.0.0': + '@changesets/assemble-release-plan@6.0.2': dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 + '@changesets/get-dependents-graph': 2.1.0 + '@changesets/should-skip-package': 0.1.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.0 + semver: 7.6.2 '@changesets/changelog-git@0.2.0': dependencies: @@ -10470,75 +9549,75 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.27.1': + '@changesets/cli@2.27.6': dependencies: - '@babel/runtime': 7.21.0 - '@changesets/apply-release-plan': 7.0.0 - '@changesets/assemble-release-plan': 6.0.0 + '@babel/runtime': 7.24.7 + '@changesets/apply-release-plan': 7.0.3 + '@changesets/assemble-release-plan': 6.0.2 '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.0 + '@changesets/config': 3.0.1 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/get-release-plan': 4.0.0 + '@changesets/get-dependents-graph': 2.1.0 + '@changesets/get-release-plan': 4.0.2 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/pre': 2.0.0 '@changesets/read': 0.6.0 + '@changesets/should-skip-package': 0.1.0 '@changesets/types': 6.0.0 - '@changesets/write': 0.3.0 + '@changesets/write': 0.3.1 '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.0 + '@types/semver': 7.5.8 ansi-colors: 4.1.3 chalk: 2.4.2 - ci-info: 3.8.0 - enquirer: 2.3.6 + ci-info: 3.9.0 + enquirer: 2.4.1 external-editor: 3.1.0 fs-extra: 7.0.1 human-id: 1.0.2 - meow: 6.1.1 + mri: 1.2.0 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.0.3 + preferred-pm: 3.1.3 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 7.6.2 spawndamnit: 2.0.0 term-size: 2.2.1 - tty-table: 4.2.1 - '@changesets/config@3.0.0': + '@changesets/config@3.0.1': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 + '@changesets/get-dependents-graph': 2.1.0 '@changesets/logger': 0.1.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - micromatch: 4.0.5 + micromatch: 4.0.7 '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.0.0': + '@changesets/get-dependents-graph@2.1.0': dependencies: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.6.0 + semver: 7.6.2 '@changesets/get-github-info@0.6.0': dependencies: dataloader: 1.4.0 - node-fetch: 2.6.9 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.0': + '@changesets/get-release-plan@4.0.2': dependencies: - '@babel/runtime': 7.23.9 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/config': 3.0.0 + '@babel/runtime': 7.24.7 + '@changesets/assemble-release-plan': 6.0.2 + '@changesets/config': 3.0.1 '@changesets/pre': 2.0.0 '@changesets/read': 0.6.0 '@changesets/types': 6.0.0 @@ -10548,12 +9627,12 @@ snapshots: '@changesets/git@3.0.0': dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 - micromatch: 4.0.5 + micromatch: 4.0.7 spawndamnit: 2.0.0 '@changesets/logger@0.1.0': @@ -10567,7 +9646,7 @@ snapshots: '@changesets/pre@2.0.0': dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -10575,7 +9654,7 @@ snapshots: '@changesets/read@0.6.0': dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/parse': 0.4.0 @@ -10584,13 +9663,19 @@ snapshots: fs-extra: 7.0.1 p-filter: 2.1.0 + '@changesets/should-skip-package@0.1.0': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + '@changesets/types@4.1.0': {} '@changesets/types@6.0.0': {} - '@changesets/write@0.3.0': + '@changesets/write@0.3.1': dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -10603,12 +9688,12 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@ctrl/tinycolor@4.0.4': {} + '@ctrl/tinycolor@4.1.0': {} '@cypress/request@3.0.1': dependencies: aws-sign2: 0.7.0 - aws4: 1.12.0 + aws4: 1.13.0 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -10622,16 +9707,16 @@ snapshots: performance-now: 2.1.0 qs: 6.10.4 safe-buffer: 5.2.1 - tough-cookie: 4.1.3 + tough-cookie: 4.1.4 tunnel-agent: 0.6.0 uuid: 8.3.2 - '@cypress/vite-dev-server@5.0.7': + '@cypress/vite-dev-server@5.1.1': dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) find-up: 6.3.0 node-html-parser: 5.3.3 - semver: 7.5.4 + semver: 7.6.2 transitivePeerDependencies: - supports-color @@ -10644,39 +9729,39 @@ snapshots: '@dfoverdx/tocamelcase@1.0.7': {} - '@dnd-kit/accessibility@3.1.0(react@18.2.0)': + '@dnd-kit/accessibility@3.1.0(react@18.3.1)': dependencies: - react: 18.2.0 - tslib: 2.6.2 + react: 18.3.1 + tslib: 2.6.3 - '@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@dnd-kit/accessibility': 3.1.0(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.1 + '@dnd-kit/accessibility': 3.1.0(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.6.3 - '@dnd-kit/modifiers@7.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': + '@dnd-kit/modifiers@7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 - tslib: 2.6.1 + '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + tslib: 2.6.3 - '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': + '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 - tslib: 2.6.1 + '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + tslib: 2.6.3 - '@dnd-kit/utilities@3.2.2(react@18.2.0)': + '@dnd-kit/utilities@3.2.2(react@18.3.1)': dependencies: - react: 18.2.0 - tslib: 2.6.2 + react: 18.3.1 + tslib: 2.6.3 - '@emoji-mart/data@1.1.2': {} + '@emoji-mart/data@1.2.1': {} '@emotion/is-prop-valid@0.8.8': dependencies: @@ -10686,139 +9771,139 @@ snapshots: '@emotion/memoize@0.7.4': optional: true - '@esbuild/aix-ppc64@0.20.2': + '@esbuild/aix-ppc64@0.21.5': optional: true '@esbuild/android-arm64@0.18.20': optional: true - '@esbuild/android-arm64@0.20.2': + '@esbuild/android-arm64@0.21.5': optional: true '@esbuild/android-arm@0.18.20': optional: true - '@esbuild/android-arm@0.20.2': + '@esbuild/android-arm@0.21.5': optional: true '@esbuild/android-x64@0.18.20': optional: true - '@esbuild/android-x64@0.20.2': + '@esbuild/android-x64@0.21.5': optional: true '@esbuild/darwin-arm64@0.18.20': optional: true - '@esbuild/darwin-arm64@0.20.2': + '@esbuild/darwin-arm64@0.21.5': optional: true '@esbuild/darwin-x64@0.18.20': optional: true - '@esbuild/darwin-x64@0.20.2': + '@esbuild/darwin-x64@0.21.5': optional: true '@esbuild/freebsd-arm64@0.18.20': optional: true - '@esbuild/freebsd-arm64@0.20.2': + '@esbuild/freebsd-arm64@0.21.5': optional: true '@esbuild/freebsd-x64@0.18.20': optional: true - '@esbuild/freebsd-x64@0.20.2': + '@esbuild/freebsd-x64@0.21.5': optional: true '@esbuild/linux-arm64@0.18.20': optional: true - '@esbuild/linux-arm64@0.20.2': + '@esbuild/linux-arm64@0.21.5': optional: true '@esbuild/linux-arm@0.18.20': optional: true - '@esbuild/linux-arm@0.20.2': + '@esbuild/linux-arm@0.21.5': optional: true '@esbuild/linux-ia32@0.18.20': optional: true - '@esbuild/linux-ia32@0.20.2': + '@esbuild/linux-ia32@0.21.5': optional: true '@esbuild/linux-loong64@0.18.20': optional: true - '@esbuild/linux-loong64@0.20.2': + '@esbuild/linux-loong64@0.21.5': optional: true '@esbuild/linux-mips64el@0.18.20': optional: true - '@esbuild/linux-mips64el@0.20.2': + '@esbuild/linux-mips64el@0.21.5': optional: true '@esbuild/linux-ppc64@0.18.20': optional: true - '@esbuild/linux-ppc64@0.20.2': + '@esbuild/linux-ppc64@0.21.5': optional: true '@esbuild/linux-riscv64@0.18.20': optional: true - '@esbuild/linux-riscv64@0.20.2': + '@esbuild/linux-riscv64@0.21.5': optional: true '@esbuild/linux-s390x@0.18.20': optional: true - '@esbuild/linux-s390x@0.20.2': + '@esbuild/linux-s390x@0.21.5': optional: true '@esbuild/linux-x64@0.18.20': optional: true - '@esbuild/linux-x64@0.20.2': + '@esbuild/linux-x64@0.21.5': optional: true '@esbuild/netbsd-x64@0.18.20': optional: true - '@esbuild/netbsd-x64@0.20.2': + '@esbuild/netbsd-x64@0.21.5': optional: true '@esbuild/openbsd-x64@0.18.20': optional: true - '@esbuild/openbsd-x64@0.20.2': + '@esbuild/openbsd-x64@0.21.5': optional: true '@esbuild/sunos-x64@0.18.20': optional: true - '@esbuild/sunos-x64@0.20.2': + '@esbuild/sunos-x64@0.21.5': optional: true '@esbuild/win32-arm64@0.18.20': optional: true - '@esbuild/win32-arm64@0.20.2': + '@esbuild/win32-arm64@0.21.5': optional: true '@esbuild/win32-ia32@0.18.20': optional: true - '@esbuild/win32-ia32@0.20.2': + '@esbuild/win32-ia32@0.21.5': optional: true '@esbuild/win32-x64@0.18.20': optional: true - '@esbuild/win32-x64@0.20.2': + '@esbuild/win32-x64@0.21.5': optional: true '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': @@ -10826,15 +9911,15 @@ snapshots: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.6.1': {} + '@eslint-community/regexpp@4.10.1': {} '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) espree: 9.6.1 - globals: 13.19.0 - ignore: 5.2.4 + globals: 13.24.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -10844,108 +9929,119 @@ snapshots: '@eslint/js@8.57.0': {} - '@fastify/ajv-compiler@3.5.0': + '@fastify/ajv-compiler@3.6.0': dependencies: - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - fast-uri: 2.2.0 + ajv: 8.16.0 + ajv-formats: 2.1.1(ajv@8.16.0) + fast-uri: 2.4.0 '@fastify/cors@9.0.1': dependencies: - fastify-plugin: 4.5.0 + fastify-plugin: 4.5.1 mnemonist: 0.39.6 - '@fastify/deepmerge@1.3.0': {} - '@fastify/error@3.4.1': {} '@fastify/fast-json-stringify-compiler@4.3.0': dependencies: - fast-json-stringify: 5.9.1 + fast-json-stringify: 5.16.1 - '@floating-ui/core@1.6.0': + '@fastify/merge-json-schemas@0.1.1': dependencies: - '@floating-ui/utils': 0.2.1 + fast-deep-equal: 3.1.3 - '@floating-ui/dom@1.3.0': + '@floating-ui/core@1.6.3': dependencies: - '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.3 - '@floating-ui/react-dom@1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@floating-ui/dom@1.6.6': dependencies: - '@floating-ui/dom': 1.3.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@floating-ui/core': 1.6.3 + '@floating-ui/utils': 0.2.3 - '@floating-ui/react-dom@2.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@floating-ui/react-dom@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/dom': 1.3.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@floating-ui/dom': 1.6.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) - '@floating-ui/react@0.22.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/react-dom': 1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tabbable: 6.1.2 + '@floating-ui/dom': 1.6.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/react@0.22.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tabbable: 6.2.0 - '@floating-ui/utils@0.2.1': {} + '@floating-ui/react@0.26.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/utils': 0.2.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.3': {} - '@formatjs/ecma402-abstract@1.14.3': + '@formatjs/ecma402-abstract@2.0.0': dependencies: - '@formatjs/intl-localematcher': 0.2.32 - tslib: 2.6.2 + '@formatjs/intl-localematcher': 0.5.4 + tslib: 2.6.3 - '@formatjs/fast-memoize@2.0.1': + '@formatjs/fast-memoize@2.2.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - '@formatjs/icu-messageformat-parser@2.3.0': + '@formatjs/icu-messageformat-parser@2.7.8': dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/icu-skeleton-parser': 1.3.18 - tslib: 2.6.2 + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/icu-skeleton-parser': 1.8.2 + tslib: 2.6.3 - '@formatjs/icu-skeleton-parser@1.3.18': + '@formatjs/icu-skeleton-parser@1.8.2': dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - tslib: 2.6.2 + '@formatjs/ecma402-abstract': 2.0.0 + tslib: 2.6.3 - '@formatjs/intl-localematcher@0.2.32': + '@formatjs/intl-localematcher@0.5.4': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - '@frontify/app-bridge@3.9.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sinon@17.0.1)': + '@frontify/app-bridge@3.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sinon@17.0.1)': dependencies: - immer: 10.0.4 + immer: 10.1.1 lodash-es: 4.17.21 mitt: 3.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) sinon: 17.0.1 - type-fest: 4.15.0 + type-fest: 4.20.1 - '@frontify/eslint-config-basic@0.20.5(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.4)': + '@frontify/eslint-config-basic@0.20.5(eslint@8.57.0)(prettier@3.3.2)(typescript@5.5.2)': dependencies: - '@typescript-eslint/eslint-plugin': 7.5.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0)(typescript@5.4.4) - '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4) + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.2) eslint: 8.57.0 eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-jsonc: 2.15.0(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-jsonc: 2.16.0(eslint@8.57.0) eslint-plugin-lodash: 7.4.0(eslint@8.57.0) eslint-plugin-markdown: 4.0.1(eslint@8.57.0) eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) - eslint-plugin-promise: 6.1.1(eslint@8.57.0) + eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.2) + eslint-plugin-promise: 6.2.0(eslint@8.57.0) eslint-plugin-unicorn: 51.0.1(eslint@8.57.0) eslint-plugin-yml: 1.14.0(eslint@8.57.0) - prettier: 3.2.5 - yaml-eslint-parser: 1.2.2 + prettier: 3.3.2 + yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - '@types/eslint' - eslint-import-resolver-node @@ -10953,15 +10049,15 @@ snapshots: - supports-color - typescript - '@frontify/eslint-config-react@0.17.6(eslint@8.57.0)(prettier@3.2.5)(react@18.2.0)(typescript@5.4.4)': + '@frontify/eslint-config-react@0.17.6(eslint@8.57.0)(prettier@3.3.2)(react@18.3.1)(typescript@5.5.2)': dependencies: - '@frontify/eslint-config-basic': 0.20.5(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.4) + '@frontify/eslint-config-basic': 0.20.5(eslint@8.57.0)(prettier@3.3.2)(typescript@5.5.2) eslint: 8.57.0 - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) - prettier: 3.2.5 - react: 18.2.0 + eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) + eslint-plugin-react: 7.34.3(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) + prettier: 3.3.2 + react: 18.3.1 transitivePeerDependencies: - '@types/eslint' - eslint-import-resolver-node @@ -10969,25 +10065,25 @@ snapshots: - supports-color - typescript - '@frontify/fondue-charts@1.8.3(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3)': + '@frontify/fondue-charts@1.8.5(@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.165.0)(zdog@1.1.3)': dependencies: - '@frontify/fondue-tokens': 3.5.0(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) - '@visx/axis': 3.10.1(react@18.2.0) - '@visx/glyph': 3.3.0(react@18.2.0) - '@visx/grid': 3.5.0(react@18.2.0) - '@visx/group': 3.3.0(react@18.2.0) - '@visx/hierarchy': 3.3.0(react@18.2.0) - '@visx/responsive': 3.10.2(react@18.2.0) + '@frontify/fondue-tokens': 3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@visx/axis': 3.10.1(react@18.3.1) + '@visx/glyph': 3.3.0(react@18.3.1) + '@visx/grid': 3.5.0(react@18.3.1) + '@visx/group': 3.3.0(react@18.3.1) + '@visx/hierarchy': 3.3.0(react@18.3.1) + '@visx/responsive': 3.10.2(react@18.3.1) '@visx/scale': 3.5.0 - '@visx/shape': 3.5.0(react@18.2.0) - '@visx/text': 3.3.0(react@18.2.0) - '@visx/tooltip': 3.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@visx/xychart': 3.10.2(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@visx/shape': 3.5.0(react@18.3.1) + '@visx/text': 3.3.0(react@18.3.1) + '@visx/tooltip': 3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@visx/xychart': 3.11.0(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lodash-es: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-spring: 9.7.3(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(three@0.163.0)(zdog@1.1.3) - use-font-face-observer: 1.2.1(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-spring: 9.7.3(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.165.0)(zdog@1.1.3) + use-font-face-observer: 1.2.2(react@18.3.1) transitivePeerDependencies: - '@react-spring/web' - '@react-three/fiber' @@ -10995,29 +10091,28 @@ snapshots: - react-konva - react-native - react-zdog - - tailwindcss - three - zdog - '@frontify/fondue-charts@1.8.3(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3)': + '@frontify/fondue-charts@1.8.5(@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))))(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.165.0)(zdog@1.1.3)': dependencies: - '@frontify/fondue-tokens': 3.5.0(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) - '@visx/axis': 3.10.1(react@18.2.0) - '@visx/glyph': 3.3.0(react@18.2.0) - '@visx/grid': 3.5.0(react@18.2.0) - '@visx/group': 3.3.0(react@18.2.0) - '@visx/hierarchy': 3.3.0(react@18.2.0) - '@visx/responsive': 3.10.2(react@18.2.0) + '@frontify/fondue-tokens': 3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))) + '@visx/axis': 3.10.1(react@18.3.1) + '@visx/glyph': 3.3.0(react@18.3.1) + '@visx/grid': 3.5.0(react@18.3.1) + '@visx/group': 3.3.0(react@18.3.1) + '@visx/hierarchy': 3.3.0(react@18.3.1) + '@visx/responsive': 3.10.2(react@18.3.1) '@visx/scale': 3.5.0 - '@visx/shape': 3.5.0(react@18.2.0) - '@visx/text': 3.3.0(react@18.2.0) - '@visx/tooltip': 3.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@visx/xychart': 3.10.2(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@visx/shape': 3.5.0(react@18.3.1) + '@visx/text': 3.3.0(react@18.3.1) + '@visx/tooltip': 3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@visx/xychart': 3.11.0(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lodash-es: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-spring: 9.7.3(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(three@0.163.0)(zdog@1.1.3) - use-font-face-observer: 1.2.1(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-spring: 9.7.3(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.165.0)(zdog@1.1.3) + use-font-face-observer: 1.2.2(react@18.3.1) transitivePeerDependencies: - '@react-spring/web' - '@react-three/fiber' @@ -11025,124 +10120,160 @@ snapshots: - react-konva - react-native - react-zdog - - tailwindcss - three - zdog - '@frontify/fondue-components@1.2.3(@frontify/fondue-icons@0.2.1(react@18.2.0))(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@frontify/fondue-icons': 0.2.1(react@18.2.0) - '@radix-ui/react-progress': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@frontify/fondue-components@1.5.0(@frontify/fondue-icons@0.2.2(react@18.3.1))(@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@frontify/fondue-icons': 0.2.2(react@18.3.1) + '@frontify/fondue-tokens': 3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@radix-ui/react-checkbox': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-label': 2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + downshift: 9.0.6(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + '@frontify/fondue-components@1.5.0(@frontify/fondue-icons@0.2.2(react@18.3.1))(@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))))(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@frontify/fondue-icons': 0.2.2(react@18.3.1) + '@frontify/fondue-tokens': 3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))) + '@radix-ui/react-checkbox': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-label': 2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + downshift: 9.0.6(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - '@frontify/fondue-icons@0.2.1(react@18.2.0)': + '@frontify/fondue-icons@0.2.2(react@18.3.1)': dependencies: - react: 18.2.0 + react: 18.3.1 - '@frontify/fondue-tokens@3.5.0(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))': + '@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))': dependencies: - tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)) + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)) - '@frontify/fondue@12.0.10(g2qxhbirnett3q6vknbfcsddau)': + '@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)))': dependencies: - '@ctrl/tinycolor': 4.0.4 - '@dnd-kit/core': 6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@dnd-kit/modifiers': 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) - '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - '@frontify/fondue-charts': 1.8.3(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3) - '@frontify/fondue-components': 1.2.3(@frontify/fondue-icons@0.2.1(react@18.2.0))(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@frontify/fondue-icons': 0.2.1(react@18.2.0) - '@frontify/fondue-tokens': 3.5.0(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) - '@popperjs/core': 2.11.8 - '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/accordion': 3.0.0-alpha.17(react@18.2.0) - '@react-aria/aria-modal-polyfill': 3.7.8(react@18.2.0) - '@react-aria/breadcrumbs': 3.5.2(react@18.2.0) - '@react-aria/button': 3.9.3(react@18.2.0) - '@react-aria/checkbox': 3.7.0(react@18.2.0) - '@react-aria/combobox': 3.4.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/dialog': 3.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/focus': 3.12.0(react@18.2.0) - '@react-aria/interactions': 3.13.0(react@18.2.0) - '@react-aria/link': 3.3.5(react@18.2.0) - '@react-aria/listbox': 3.7.1(react@18.2.0) - '@react-aria/menu': 3.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/overlays': 3.12.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/radio': 3.4.1(react@18.2.0) - '@react-aria/select': 3.8.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/selection': 3.12.0(react@18.2.0) - '@react-aria/table': 3.6.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/tooltip': 3.3.3(react@18.2.0) - '@react-aria/utils': 3.14.1(react@18.2.0) - '@react-aria/visually-hidden': 3.6.0(react@18.2.0) - '@react-stately/checkbox': 3.3.2(react@18.2.0) - '@react-stately/collections': 3.4.4(react@18.2.0) - '@react-stately/combobox': 3.2.2(react@18.2.0) - '@react-stately/list': 3.5.4(react@18.2.0) - '@react-stately/menu': 3.4.4(react@18.2.0) - '@react-stately/overlays': 3.4.2(react@18.2.0) - '@react-stately/radio': 3.6.0(react@18.2.0) - '@react-stately/select': 3.3.2(react@18.2.0) - '@react-stately/table': 3.5.0(react@18.2.0) - '@react-stately/toggle': 3.4.2(react@18.2.0) - '@react-stately/tooltip': 3.2.2(react@18.2.0) - '@react-stately/tree': 3.3.4(react@18.2.0) - '@react-types/dialog': 3.4.5(react@18.2.0) - '@react-types/shared': 3.16.0(react@18.2.0) - '@tailwindcss/forms': 0.5.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) - '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-emoji': 31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)) + + '@frontify/fondue@12.1.9(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(three@0.165.0)(zdog@1.1.3)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': + dependencies: + '@ctrl/tinycolor': 4.1.0 + '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/modifiers': 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + '@floating-ui/dom': 1.6.6 + '@frontify/fondue-charts': 1.8.5(@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.165.0)(zdog@1.1.3) + '@frontify/fondue-components': 1.5.0(@frontify/fondue-icons@0.2.2(react@18.3.1))(@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@frontify/fondue-icons': 0.2.2(react@18.3.1) + '@frontify/fondue-tokens': 3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@popperjs/core': 2.11.8 + '@radix-ui/react-popover': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toolbar': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/accordion': 3.0.0-alpha.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/aria-modal-polyfill': 3.7.10(react@18.3.1) + '@react-aria/breadcrumbs': 3.5.13(react@18.3.1) + '@react-aria/button': 3.9.5(react@18.3.1) + '@react-aria/checkbox': 3.14.3(react@18.3.1) + '@react-aria/combobox': 3.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/dialog': 3.5.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/link': 3.7.1(react@18.3.1) + '@react-aria/listbox': 3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/menu': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/overlays': 3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/radio': 3.10.4(react@18.3.1) + '@react-aria/select': 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/table': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/tooltip': 3.7.4(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-aria/visually-hidden': 3.8.12(react@18.3.1) + '@react-stately/checkbox': 3.6.5(react@18.3.1) + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/combobox': 3.8.4(react@18.3.1) + '@react-stately/list': 3.10.5(react@18.3.1) + '@react-stately/menu': 3.7.1(react@18.3.1) + '@react-stately/overlays': 3.6.7(react@18.3.1) + '@react-stately/radio': 3.10.4(react@18.3.1) + '@react-stately/select': 3.6.4(react@18.3.1) + '@react-stately/table': 3.11.8(react@18.3.1) + '@react-stately/toggle': 3.7.4(react@18.3.1) + '@react-stately/tooltip': 3.4.9(react@18.3.1) + '@react-stately/tree': 3.8.1(react@18.3.1) + '@react-types/dialog': 3.5.10(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@tailwindcss/forms': 0.5.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-emoji': 31.4.0(patch_hash=qe3otflfq45s3qpehitpsd2wsy)(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/react-utils': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-react': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/utils': 31.0.0 - '@udecode/zustood': 2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0)) - '@xstate/immer': 0.3.3(immer@9.0.21)(xstate@4.38.3) - '@xstate/react': 1.6.3(@types/react@18.2.75)(react@18.2.0)(xstate@4.38.3) + '@udecode/zustood': 2.0.0(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) date-fns: 3.6.0 escape-html: 1.0.3 - framer-motion: 10.18.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - immer: 9.0.21 + framer-motion: 10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + immer: 10.1.1 is-hotkey: 0.2.0 - react: 18.2.0 - react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-datepicker: 4.25.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-dnd: 16.0.1(@types/node@18.19.31)(@types/react@18.2.75)(react@18.2.0) + react: 18.3.1 + react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-datepicker: 6.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dnd: 16.0.1(@types/node@18.19.39)(@types/react@18.3.3)(react@18.3.1) react-dnd-html5-backend: 16.0.1 - react-dom: 18.2.0(react@18.2.0) + react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 - react-is: 18.2.0 - react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-textarea-autosize: 8.5.3(@types/react@18.2.75)(react@18.2.0) + react-is: 18.3.1 + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-textarea-autosize: 8.5.3(@types/react@18.3.3)(react@18.3.1) remark-gfm: 3.0.1 remark-parse: 10.0.2 slate: 0.102.0 - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) unified: 10.1.2 unist-util-visit: 5.0.0 - xstate: 4.38.3 transitivePeerDependencies: - '@react-spring/web' - '@react-three/fiber' @@ -11150,8 +10281,6 @@ snapshots: - '@types/node' - '@types/react' - '@types/react-dom' - - '@udecode/plate-common' - - '@xstate/fsm' - konva - react-konva - react-native @@ -11165,102 +10294,101 @@ snapshots: - zdog - zustand - '@frontify/fondue@12.0.10(jhbqyupum772ivndo3xkwf7iuu)': - dependencies: - '@ctrl/tinycolor': 4.0.4 - '@dnd-kit/core': 6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@dnd-kit/modifiers': 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) - '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - '@frontify/fondue-charts': 1.8.3(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))(three@0.163.0)(zdog@1.1.3) - '@frontify/fondue-components': 1.2.3(@frontify/fondue-icons@0.2.1(react@18.2.0))(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@frontify/fondue-icons': 0.2.1(react@18.2.0) - '@frontify/fondue-tokens': 3.5.0(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) + '@frontify/fondue@12.1.9(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(@types/node@20.14.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)))(three@0.165.0)(zdog@1.1.3)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': + dependencies: + '@ctrl/tinycolor': 4.1.0 + '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/modifiers': 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + '@floating-ui/dom': 1.6.6 + '@frontify/fondue-charts': 1.8.5(@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))))(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.165.0)(zdog@1.1.3) + '@frontify/fondue-components': 1.5.0(@frontify/fondue-icons@0.2.2(react@18.3.1))(@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))))(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@frontify/fondue-icons': 0.2.2(react@18.3.1) + '@frontify/fondue-tokens': 3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))) '@popperjs/core': 2.11.8 - '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/accordion': 3.0.0-alpha.17(react@18.2.0) - '@react-aria/aria-modal-polyfill': 3.7.8(react@18.2.0) - '@react-aria/breadcrumbs': 3.5.2(react@18.2.0) - '@react-aria/button': 3.9.3(react@18.2.0) - '@react-aria/checkbox': 3.7.0(react@18.2.0) - '@react-aria/combobox': 3.4.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/dialog': 3.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/focus': 3.12.0(react@18.2.0) - '@react-aria/interactions': 3.13.0(react@18.2.0) - '@react-aria/link': 3.3.5(react@18.2.0) - '@react-aria/listbox': 3.7.1(react@18.2.0) - '@react-aria/menu': 3.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/overlays': 3.12.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/radio': 3.4.1(react@18.2.0) - '@react-aria/select': 3.8.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/selection': 3.12.0(react@18.2.0) - '@react-aria/table': 3.6.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/tooltip': 3.3.3(react@18.2.0) - '@react-aria/utils': 3.14.1(react@18.2.0) - '@react-aria/visually-hidden': 3.6.0(react@18.2.0) - '@react-stately/checkbox': 3.3.2(react@18.2.0) - '@react-stately/collections': 3.4.4(react@18.2.0) - '@react-stately/combobox': 3.2.2(react@18.2.0) - '@react-stately/list': 3.5.4(react@18.2.0) - '@react-stately/menu': 3.4.4(react@18.2.0) - '@react-stately/overlays': 3.4.2(react@18.2.0) - '@react-stately/radio': 3.6.0(react@18.2.0) - '@react-stately/select': 3.3.2(react@18.2.0) - '@react-stately/table': 3.5.0(react@18.2.0) - '@react-stately/toggle': 3.4.2(react@18.2.0) - '@react-stately/tooltip': 3.2.2(react@18.2.0) - '@react-stately/tree': 3.3.4(react@18.2.0) - '@react-types/dialog': 3.4.5(react@18.2.0) - '@react-types/shared': 3.16.0(react@18.2.0) - '@tailwindcss/forms': 0.5.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4))) - '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-emoji': 31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popover': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toolbar': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/accordion': 3.0.0-alpha.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/aria-modal-polyfill': 3.7.10(react@18.3.1) + '@react-aria/breadcrumbs': 3.5.13(react@18.3.1) + '@react-aria/button': 3.9.5(react@18.3.1) + '@react-aria/checkbox': 3.14.3(react@18.3.1) + '@react-aria/combobox': 3.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/dialog': 3.5.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/link': 3.7.1(react@18.3.1) + '@react-aria/listbox': 3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/menu': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/overlays': 3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/radio': 3.10.4(react@18.3.1) + '@react-aria/select': 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/table': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/tooltip': 3.7.4(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-aria/visually-hidden': 3.8.12(react@18.3.1) + '@react-stately/checkbox': 3.6.5(react@18.3.1) + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/combobox': 3.8.4(react@18.3.1) + '@react-stately/list': 3.10.5(react@18.3.1) + '@react-stately/menu': 3.7.1(react@18.3.1) + '@react-stately/overlays': 3.6.7(react@18.3.1) + '@react-stately/radio': 3.10.4(react@18.3.1) + '@react-stately/select': 3.6.4(react@18.3.1) + '@react-stately/table': 3.11.8(react@18.3.1) + '@react-stately/toggle': 3.7.4(react@18.3.1) + '@react-stately/tooltip': 3.4.9(react@18.3.1) + '@react-stately/tree': 3.8.1(react@18.3.1) + '@react-types/dialog': 3.5.10(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@tailwindcss/forms': 0.5.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2))) + '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-emoji': 31.4.0(patch_hash=qe3otflfq45s3qpehitpsd2wsy)(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/react-utils': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-react': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/utils': 31.0.0 - '@udecode/zustood': 2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)) - '@xstate/immer': 0.3.3(immer@9.0.21)(xstate@4.38.3) - '@xstate/react': 1.6.3(@types/react@18.2.75)(react@18.2.0)(xstate@4.38.3) + '@udecode/zustood': 2.0.0(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) date-fns: 3.6.0 escape-html: 1.0.3 - framer-motion: 10.18.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - immer: 9.0.21 + framer-motion: 10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + immer: 10.1.1 is-hotkey: 0.2.0 - react: 18.2.0 - react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-datepicker: 4.25.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-dnd: 16.0.1(@types/node@18.19.31)(@types/react@18.2.75)(react@18.2.0) + react: 18.3.1 + react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-datepicker: 6.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dnd: 16.0.1(@types/node@20.14.9)(@types/react@18.3.3)(react@18.3.1) react-dnd-html5-backend: 16.0.1 - react-dom: 18.2.0(react@18.2.0) + react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 - react-is: 18.2.0 - react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-textarea-autosize: 8.5.3(@types/react@18.2.75)(react@18.2.0) + react-is: 18.3.1 + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-textarea-autosize: 8.5.3(@types/react@18.3.3)(react@18.3.1) remark-gfm: 3.0.1 remark-parse: 10.0.2 slate: 0.102.0 - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) unified: 10.1.2 unist-util-visit: 5.0.0 - xstate: 4.38.3 transitivePeerDependencies: - '@react-spring/web' - '@react-three/fiber' @@ -11268,8 +10396,6 @@ snapshots: - '@types/node' - '@types/react' - '@types/react-dom' - - '@udecode/plate-common' - - '@xstate/fsm' - konva - react-konva - react-native @@ -11292,7 +10418,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11301,22 +10427,22 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@internationalized/date@3.3.0': + '@internationalized/date@3.5.4': dependencies: - '@swc/helpers': 0.5.1 + '@swc/helpers': 0.5.11 - '@internationalized/message@3.1.1': + '@internationalized/message@3.1.4': dependencies: - '@swc/helpers': 0.5.1 - intl-messageformat: 10.3.3 + '@swc/helpers': 0.5.11 + intl-messageformat: 10.5.14 - '@internationalized/number@3.2.1': + '@internationalized/number@3.5.3': dependencies: - '@swc/helpers': 0.5.1 + '@swc/helpers': 0.5.11 - '@internationalized/string@3.1.1': + '@internationalized/string@3.2.3': dependencies: - '@swc/helpers': 0.5.1 + '@swc/helpers': 0.5.11 '@isaacs/cliui@8.0.2': dependencies: @@ -11339,14 +10465,14 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.31 + '@types/node': 18.19.39 jest-mock: 29.7.0 '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.19.31 + '@types/node': 18.19.39 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -11357,36 +10483,28 @@ snapshots: '@jest/types@26.6.2': dependencies: - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.19.31 + '@types/node': 18.19.39 '@types/yargs': 15.0.19 chalk: 4.1.2 '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.19.31 + '@types/node': 18.19.39 '@types/yargs': 17.0.32 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.3': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.0': {} - - '@jridgewell/set-array@1.1.2': {} + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -11395,60 +10513,79 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.4.14': {} - '@jridgewell/sourcemap-codec@1.4.15': {} - '@jridgewell/trace-mapping@0.3.18': - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping@0.3.25': dependencies: - '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping@0.3.9': dependencies: - '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@juggle/resize-observer@3.4.0': {} '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 - '@microsoft/api-extractor-model@7.28.13(@types/node@18.19.31)': + '@microsoft/api-extractor-model@7.28.13(@types/node@18.19.39)': + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@18.19.39) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor-model@7.28.13(@types/node@20.14.9)': + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@20.14.9) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor@7.43.0(@types/node@18.19.39)': dependencies: + '@microsoft/api-extractor-model': 7.28.13(@types/node@18.19.39) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@18.19.31) + '@rushstack/node-core-library': 4.0.2(@types/node@18.19.39) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.10.0(@types/node@18.19.39) + '@rushstack/ts-command-line': 4.19.1(@types/node@18.19.39) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.43.0(@types/node@18.19.31)': + '@microsoft/api-extractor@7.43.0(@types/node@20.14.9)': dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@18.19.31) + '@microsoft/api-extractor-model': 7.28.13(@types/node@20.14.9) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@18.19.31) + '@rushstack/node-core-library': 4.0.2(@types/node@20.14.9) '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@18.19.31) - '@rushstack/ts-command-line': 4.19.1(@types/node@18.19.31) + '@rushstack/terminal': 0.10.0(@types/node@20.14.9) + '@rushstack/ts-command-line': 4.19.1(@types/node@20.14.9) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -11469,17 +10606,17 @@ snapshots: '@mswjs/cookies@0.2.2': dependencies: - '@types/set-cookie-parser': 2.4.3 + '@types/set-cookie-parser': 2.4.9 set-cookie-parser: 2.6.0 '@mswjs/interceptors@0.17.10': dependencies: '@open-draft/until': 1.0.3 - '@types/debug': 4.1.7 - '@xmldom/xmldom': 0.8.6 - debug: 4.3.4(supports-color@8.1.1) + '@types/debug': 4.1.12 + '@xmldom/xmldom': 0.8.10 + debug: 4.3.5(supports-color@8.1.1) headers-polyfill: 3.2.5 - outvariant: 1.4.0 + outvariant: 1.4.2 strict-event-emitter: 0.2.8 web-encoding: 1.1.5 transitivePeerDependencies: @@ -11504,769 +10641,770 @@ snapshots: '@pkgr/core@0.1.1': {} - '@polka/url@1.0.0-next.24': {} + '@polka/url@1.0.0-next.25': {} '@popperjs/core@2.11.8': {} - '@radix-ui/primitive@1.0.1': + '@radix-ui/number@1.1.0': {} + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-checkbox@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - react: 18.2.0 + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 + + '@radix-ui/react-dialog@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-context@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-direction@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - react: 18.2.0 + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - '@radix-ui/react-direction@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - react: 18.2.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-dropdown-menu@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-menu': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - react: 18.2.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 - '@radix-ui/react-id@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-label@2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - - '@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-menu@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@floating-ui/react-dom': 2.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-popover@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-progress@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-progress@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-select@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-separator@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-slot@1.0.2(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 - - '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 18.3.3 + + '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-toggle@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-toolbar@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-tooltip@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - react: 18.2.0 + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - react: 18.2.0 + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/rect': 1.0.1 - react: 18.2.0 + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - '@radix-ui/react-use-size@1.0.1(@types/react@18.2.75)(react@18.2.0)': + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - react: 18.2.0 + '@radix-ui/rect': 1.1.0 + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-use-size@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - - '@radix-ui/rect@1.0.1': - dependencies: - '@babel/runtime': 7.23.9 - - '@react-aria/accordion@3.0.0-alpha.17(react@18.2.0)': - dependencies: - '@react-aria/button': 3.9.3(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/selection': 3.14.0(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/tree': 3.6.0(react@18.2.0) - '@react-types/accordion': 3.0.0-alpha.13(react@18.2.0) - '@react-types/button': 3.9.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - - '@react-aria/aria-modal-polyfill@3.7.8(react@18.2.0)': - dependencies: - '@swc/helpers': 0.5.1 - aria-hidden: 1.2.3 - react: 18.2.0 - - '@react-aria/breadcrumbs@3.5.2(react@18.2.0)': - dependencies: - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/link': 3.5.2(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/breadcrumbs': 3.6.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - - '@react-aria/button@3.9.3(react@18.2.0)': - dependencies: - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/toggle': 3.7.2(react@18.2.0) - '@react-types/button': 3.9.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.5.1 - react: 18.2.0 - - '@react-aria/checkbox@3.7.0(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/label': 3.5.1(react@18.2.0) - '@react-aria/toggle': 3.6.0(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/checkbox': 3.3.2(react@18.2.0) - '@react-stately/toggle': 3.7.2(react@18.2.0) - '@react-types/checkbox': 3.7.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-aria/combobox@3.4.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/listbox': 3.7.2(react@18.2.0) - '@react-aria/live-announcer': 3.3.0 - '@react-aria/menu': 3.7.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/overlays': 3.12.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/selection': 3.14.0(react@18.2.0) - '@react-aria/textfield': 3.9.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/combobox': 3.5.0(react@18.2.0) - '@react-stately/layout': 3.12.0(react@18.2.0) - '@react-types/button': 3.9.2(react@18.2.0) - '@react-types/combobox': 3.6.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@react-aria/dialog@3.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/overlays': 3.12.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/overlays': 3.6.5(react@18.2.0) - '@react-types/dialog': 3.5.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - react-dom - - '@react-aria/focus@3.12.0(react@18.2.0)': - dependencies: - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - clsx: 1.2.1 - react: 18.2.0 - - '@react-aria/focus@3.16.2(react@18.2.0)': - dependencies: - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.5.1 - clsx: 2.1.0 - react: 18.2.0 - - '@react-aria/grid@3.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/live-announcer': 3.3.0 - '@react-aria/selection': 3.14.0(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/grid': 3.6.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-stately/virtualizer': 3.5.1(react@18.2.0) - '@react-types/checkbox': 3.7.1(react@18.2.0) - '@react-types/grid': 3.1.7(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@react-aria/i18n@3.8.0(react@18.2.0)': - dependencies: - '@internationalized/date': 3.3.0 - '@internationalized/message': 3.1.1 - '@internationalized/number': 3.2.1 - '@internationalized/string': 3.1.1 - '@react-aria/ssr': 3.9.2(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.5.1 - react: 18.2.0 - - '@react-aria/interactions@3.13.0(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-aria/interactions@3.21.1(react@18.2.0)': - dependencies: - '@react-aria/ssr': 3.9.2(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.5.1 - react: 18.2.0 - - '@react-aria/label@3.5.1(react@18.2.0)': - dependencies: - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/label': 3.7.3(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - - '@react-aria/link@3.3.5(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/link': 3.4.3(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-aria/link@3.5.2(react@18.2.0)': - dependencies: - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/link': 3.4.3(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.5.1 - react: 18.2.0 - - '@react-aria/listbox@3.7.1(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/label': 3.5.1(react@18.2.0) - '@react-aria/selection': 3.14.0(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/list': 3.8.0(react@18.2.0) - '@react-types/listbox': 3.4.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-aria/listbox@3.7.2(react@18.2.0)': - dependencies: - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/label': 3.5.1(react@18.2.0) - '@react-aria/selection': 3.14.0(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/list': 3.8.0(react@18.2.0) - '@react-types/listbox': 3.4.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - - '@react-aria/live-announcer@3.3.0': - dependencies: - '@swc/helpers': 0.4.14 - - '@react-aria/menu@3.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/overlays': 3.12.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/selection': 3.14.0(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/menu': 3.5.1(react@18.2.0) - '@react-stately/tree': 3.6.0(react@18.2.0) - '@react-types/button': 3.9.2(react@18.2.0) - '@react-types/menu': 3.9.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@react-aria/menu@3.7.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/overlays': 3.12.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/selection': 3.14.0(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/menu': 3.5.1(react@18.2.0) - '@react-stately/tree': 3.6.0(react@18.2.0) - '@react-types/button': 3.9.2(react@18.2.0) - '@react-types/menu': 3.9.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@react-aria/overlays@3.12.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/ssr': 3.9.2(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-aria/visually-hidden': 3.6.1(react@18.2.0) - '@react-stately/overlays': 3.6.5(react@18.2.0) - '@react-types/button': 3.9.2(react@18.2.0) - '@react-types/overlays': 3.8.5(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@react-aria/overlays@3.12.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/ssr': 3.9.2(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-aria/visually-hidden': 3.6.1(react@18.2.0) - '@react-stately/overlays': 3.6.5(react@18.2.0) - '@react-types/button': 3.9.2(react@18.2.0) - '@react-types/overlays': 3.8.5(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@react-aria/radio@3.4.1(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/label': 3.5.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/radio': 3.8.0(react@18.2.0) - '@react-types/radio': 3.4.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-aria/select@3.8.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/label': 3.5.1(react@18.2.0) - '@react-aria/listbox': 3.7.2(react@18.2.0) - '@react-aria/menu': 3.7.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/selection': 3.14.0(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-aria/visually-hidden': 3.6.1(react@18.2.0) - '@react-stately/select': 3.5.0(react@18.2.0) - '@react-types/button': 3.9.2(react@18.2.0) - '@react-types/select': 3.8.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@react-aria/selection@3.12.0(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-aria/selection@3.14.0(react@18.2.0)': - dependencies: - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - - '@react-aria/ssr@3.9.2(react@18.2.0)': - dependencies: - '@swc/helpers': 0.5.1 - react: 18.2.0 - - '@react-aria/table@3.6.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/grid': 3.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/i18n': 3.8.0(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/live-announcer': 3.3.0 - '@react-aria/selection': 3.14.0(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/table': 3.9.0(react@18.2.0) - '@react-stately/virtualizer': 3.5.1(react@18.2.0) - '@react-types/checkbox': 3.7.1(react@18.2.0) - '@react-types/grid': 3.1.7(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@react-types/table': 3.6.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@react-aria/textfield@3.9.1(react@18.2.0)': - dependencies: - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/label': 3.5.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@react-types/textfield': 3.7.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - - '@react-aria/toggle@3.6.0(react@18.2.0)': - dependencies: - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/toggle': 3.7.2(react@18.2.0) - '@react-types/checkbox': 3.7.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@react-types/switch': 3.3.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - - '@react-aria/tooltip@3.3.3(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/focus': 3.16.2(react@18.2.0) - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-stately/tooltip': 3.4.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@react-types/tooltip': 3.4.0(react@18.2.0) - react: 18.2.0 - - '@react-aria/utils@3.14.1(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/ssr': 3.9.2(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - clsx: 1.2.1 - react: 18.2.0 - - '@react-aria/utils@3.23.2(react@18.2.0)': - dependencies: - '@react-aria/ssr': 3.9.2(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.5.1 - clsx: 2.1.0 - react: 18.2.0 - - '@react-aria/visually-hidden@3.6.0(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - clsx: 1.2.1 - react: 18.2.0 + '@types/react': 18.3.3 - '@react-aria/visually-hidden@3.6.1(react@18.2.0)': + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - clsx: 1.2.1 - react: 18.2.0 + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@radix-ui/rect@1.1.0': {} + + '@react-aria/accordion@3.0.0-alpha.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/button': 3.9.5(react@18.3.1) + '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/tree': 3.8.1(react@18.3.1) + '@react-types/accordion': 3.0.0-alpha.21(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/aria-modal-polyfill@3.7.10(react@18.3.1)': + dependencies: + '@swc/helpers': 0.5.11 + aria-hidden: 1.2.4 + react: 18.3.1 + + '@react-aria/breadcrumbs@3.5.13(react@18.3.1)': + dependencies: + '@react-aria/i18n': 3.11.1(react@18.3.1) + '@react-aria/link': 3.7.1(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-types/breadcrumbs': 3.7.5(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/button@3.9.5(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/toggle': 3.7.4(react@18.3.1) + '@react-types/button': 3.9.4(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/checkbox@3.14.3(react@18.3.1)': + dependencies: + '@react-aria/form': 3.0.5(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/label': 3.7.8(react@18.3.1) + '@react-aria/toggle': 3.10.4(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/checkbox': 3.6.5(react@18.3.1) + '@react-stately/form': 3.0.3(react@18.3.1) + '@react-stately/toggle': 3.7.4(react@18.3.1) + '@react-types/checkbox': 3.8.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/combobox@3.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/i18n': 3.11.1(react@18.3.1) + '@react-aria/listbox': 3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/live-announcer': 3.3.4 + '@react-aria/menu': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/overlays': 3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/textfield': 3.14.5(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/combobox': 3.8.4(react@18.3.1) + '@react-stately/form': 3.0.3(react@18.3.1) + '@react-types/button': 3.9.4(react@18.3.1) + '@react-types/combobox': 3.11.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/dialog@3.5.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/overlays': 3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-types/dialog': 3.5.10(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/focus@3.17.1(react@18.3.1)': + dependencies: + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + clsx: 2.1.1 + react: 18.3.1 + + '@react-aria/form@3.0.5(react@18.3.1)': + dependencies: + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/form': 3.0.3(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/grid@3.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/i18n': 3.11.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/live-announcer': 3.3.4 + '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/grid': 3.8.7(react@18.3.1) + '@react-stately/selection': 3.15.1(react@18.3.1) + '@react-stately/virtualizer': 3.7.1(react@18.3.1) + '@react-types/checkbox': 3.8.1(react@18.3.1) + '@react-types/grid': 3.2.6(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/i18n@3.11.1(react@18.3.1)': + dependencies: + '@internationalized/date': 3.5.4 + '@internationalized/message': 3.1.4 + '@internationalized/number': 3.5.3 + '@internationalized/string': 3.2.3 + '@react-aria/ssr': 3.9.4(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/interactions@3.21.3(react@18.3.1)': + dependencies: + '@react-aria/ssr': 3.9.4(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/label@3.7.8(react@18.3.1)': + dependencies: + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/link@3.7.1(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-types/link': 3.5.5(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/listbox@3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/label': 3.7.8(react@18.3.1) + '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/list': 3.10.5(react@18.3.1) + '@react-types/listbox': 3.4.9(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/live-announcer@3.3.4': + dependencies: + '@swc/helpers': 0.5.11 + + '@react-aria/menu@3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/i18n': 3.11.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/overlays': 3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/menu': 3.7.1(react@18.3.1) + '@react-stately/tree': 3.8.1(react@18.3.1) + '@react-types/button': 3.9.4(react@18.3.1) + '@react-types/menu': 3.9.9(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/overlays@3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/i18n': 3.11.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/ssr': 3.9.4(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-aria/visually-hidden': 3.8.12(react@18.3.1) + '@react-stately/overlays': 3.6.7(react@18.3.1) + '@react-types/button': 3.9.4(react@18.3.1) + '@react-types/overlays': 3.8.7(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/radio@3.10.4(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/form': 3.0.5(react@18.3.1) + '@react-aria/i18n': 3.11.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/label': 3.7.8(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/radio': 3.10.4(react@18.3.1) + '@react-types/radio': 3.8.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/select@3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/form': 3.0.5(react@18.3.1) + '@react-aria/i18n': 3.11.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/label': 3.7.8(react@18.3.1) + '@react-aria/listbox': 3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/menu': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-aria/visually-hidden': 3.8.12(react@18.3.1) + '@react-stately/select': 3.6.4(react@18.3.1) + '@react-types/button': 3.9.4(react@18.3.1) + '@react-types/select': 3.9.4(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/selection@3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/i18n': 3.11.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/selection': 3.15.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/ssr@3.9.4(react@18.3.1)': + dependencies: + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/table@3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/grid': 3.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/i18n': 3.11.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/live-announcer': 3.3.4 + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-aria/visually-hidden': 3.8.12(react@18.3.1) + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/flags': 3.0.3 + '@react-stately/table': 3.11.8(react@18.3.1) + '@react-stately/virtualizer': 3.7.1(react@18.3.1) + '@react-types/checkbox': 3.8.1(react@18.3.1) + '@react-types/grid': 3.2.6(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@react-types/table': 3.9.5(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-aria/textfield@3.14.5(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/form': 3.0.5(react@18.3.1) + '@react-aria/label': 3.7.8(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/form': 3.0.3(react@18.3.1) + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@react-types/textfield': 3.9.3(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/toggle@3.10.4(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/toggle': 3.7.4(react@18.3.1) + '@react-types/checkbox': 3.8.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/tooltip@3.7.4(react@18.3.1)': + dependencies: + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-stately/tooltip': 3.4.9(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@react-types/tooltip': 3.4.9(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/utils@3.24.1(react@18.3.1)': + dependencies: + '@react-aria/ssr': 3.9.4(react@18.3.1) + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + clsx: 2.1.1 + react: 18.3.1 + + '@react-aria/visually-hidden@3.8.12(react@18.3.1)': + dependencies: + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 '@react-dnd/asap@5.0.2': {} @@ -12274,138 +11412,138 @@ snapshots: '@react-dnd/shallowequal@4.0.2': {} - '@react-native-community/cli-clean@13.6.4': + '@react-native-community/cli-clean@13.6.8': dependencies: - '@react-native-community/cli-tools': 13.6.4 + '@react-native-community/cli-tools': 13.6.8 chalk: 4.1.2 execa: 5.1.1 fast-glob: 3.3.2 transitivePeerDependencies: - encoding - '@react-native-community/cli-config@13.6.4': + '@react-native-community/cli-config@13.6.8': dependencies: - '@react-native-community/cli-tools': 13.6.4 + '@react-native-community/cli-tools': 13.6.8 chalk: 4.1.2 cosmiconfig: 5.2.1 deepmerge: 4.3.1 fast-glob: 3.3.2 - joi: 17.13.0 + joi: 17.13.3 transitivePeerDependencies: - encoding - '@react-native-community/cli-debugger-ui@13.6.4': + '@react-native-community/cli-debugger-ui@13.6.8': dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - '@react-native-community/cli-doctor@13.6.4': + '@react-native-community/cli-doctor@13.6.8': dependencies: - '@react-native-community/cli-config': 13.6.4 - '@react-native-community/cli-platform-android': 13.6.4 - '@react-native-community/cli-platform-apple': 13.6.4 - '@react-native-community/cli-platform-ios': 13.6.4 - '@react-native-community/cli-tools': 13.6.4 + '@react-native-community/cli-config': 13.6.8 + '@react-native-community/cli-platform-android': 13.6.8 + '@react-native-community/cli-platform-apple': 13.6.8 + '@react-native-community/cli-platform-ios': 13.6.8 + '@react-native-community/cli-tools': 13.6.8 chalk: 4.1.2 command-exists: 1.2.9 deepmerge: 4.3.1 - envinfo: 7.12.0 + envinfo: 7.13.0 execa: 5.1.1 hermes-profile-transformer: 0.0.6 node-stream-zip: 1.15.0 ora: 5.4.1 - semver: 7.6.0 + semver: 7.6.2 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.3.2 + yaml: 2.4.5 transitivePeerDependencies: - encoding - '@react-native-community/cli-hermes@13.6.4': + '@react-native-community/cli-hermes@13.6.8': dependencies: - '@react-native-community/cli-platform-android': 13.6.4 - '@react-native-community/cli-tools': 13.6.4 + '@react-native-community/cli-platform-android': 13.6.8 + '@react-native-community/cli-tools': 13.6.8 chalk: 4.1.2 hermes-profile-transformer: 0.0.6 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-android@13.6.4': + '@react-native-community/cli-platform-android@13.6.8': dependencies: - '@react-native-community/cli-tools': 13.6.4 + '@react-native-community/cli-tools': 13.6.8 chalk: 4.1.2 execa: 5.1.1 fast-glob: 3.3.2 - fast-xml-parser: 4.3.6 + fast-xml-parser: 4.4.0 logkitty: 0.7.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-apple@13.6.4': + '@react-native-community/cli-platform-apple@13.6.8': dependencies: - '@react-native-community/cli-tools': 13.6.4 + '@react-native-community/cli-tools': 13.6.8 chalk: 4.1.2 execa: 5.1.1 fast-glob: 3.3.2 - fast-xml-parser: 4.3.6 + fast-xml-parser: 4.4.0 ora: 5.4.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-ios@13.6.4': + '@react-native-community/cli-platform-ios@13.6.8': dependencies: - '@react-native-community/cli-platform-apple': 13.6.4 + '@react-native-community/cli-platform-apple': 13.6.8 transitivePeerDependencies: - encoding - '@react-native-community/cli-server-api@13.6.4': + '@react-native-community/cli-server-api@13.6.8': dependencies: - '@react-native-community/cli-debugger-ui': 13.6.4 - '@react-native-community/cli-tools': 13.6.4 + '@react-native-community/cli-debugger-ui': 13.6.8 + '@react-native-community/cli-tools': 13.6.8 compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 nocache: 3.0.4 pretty-format: 26.6.2 serve-static: 1.15.0 - ws: 7.5.9 + ws: 6.2.3 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - '@react-native-community/cli-tools@13.6.4': + '@react-native-community/cli-tools@13.6.8': dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 execa: 5.1.1 find-up: 5.0.0 mime: 2.6.0 - node-fetch: 2.6.9 + node-fetch: 2.7.0 open: 6.4.0 ora: 5.4.1 - semver: 7.6.0 + semver: 7.6.2 shell-quote: 1.8.1 sudo-prompt: 9.2.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-types@13.6.4': + '@react-native-community/cli-types@13.6.8': dependencies: - joi: 17.13.0 + joi: 17.13.3 - '@react-native-community/cli@13.6.4': + '@react-native-community/cli@13.6.8': dependencies: - '@react-native-community/cli-clean': 13.6.4 - '@react-native-community/cli-config': 13.6.4 - '@react-native-community/cli-debugger-ui': 13.6.4 - '@react-native-community/cli-doctor': 13.6.4 - '@react-native-community/cli-hermes': 13.6.4 - '@react-native-community/cli-server-api': 13.6.4 - '@react-native-community/cli-tools': 13.6.4 - '@react-native-community/cli-types': 13.6.4 + '@react-native-community/cli-clean': 13.6.8 + '@react-native-community/cli-config': 13.6.8 + '@react-native-community/cli-debugger-ui': 13.6.8 + '@react-native-community/cli-doctor': 13.6.8 + '@react-native-community/cli-hermes': 13.6.8 + '@react-native-community/cli-server-api': 13.6.8 + '@react-native-community/cli-tools': 13.6.8 + '@react-native-community/cli-types': 13.6.8 chalk: 4.1.2 commander: 9.5.0 deepmerge: 4.3.1 @@ -12414,187 +11552,96 @@ snapshots: fs-extra: 8.1.0 graceful-fs: 4.2.11 prompts: 2.4.2 - semver: 7.6.0 + semver: 7.6.2 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - '@react-native/assets-registry@0.74.81': {} - - '@react-native/babel-plugin-codegen@0.74.81(@babel/preset-env@7.24.4(@babel/core@7.23.9))': - dependencies: - '@react-native/codegen': 0.74.81(@babel/preset-env@7.24.4(@babel/core@7.23.9)) - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color + '@react-native/assets-registry@0.74.84': {} - '@react-native/babel-plugin-codegen@0.74.81(@babel/preset-env@7.24.4(@babel/core@7.24.4))': + '@react-native/babel-plugin-codegen@0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7))': dependencies: - '@react-native/codegen': 0.74.81(@babel/preset-env@7.24.4(@babel/core@7.24.4)) - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - - '@react-native/babel-preset@0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))': - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.23.9) - '@babel/template': 7.24.0 - '@react-native/babel-plugin-codegen': 0.74.81(@babel/preset-env@7.24.4(@babel/core@7.23.9)) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.23.9) - react-refresh: 0.14.0 + '@react-native/codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7)) transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/babel-preset@0.74.81(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))': - dependencies: - '@babel/core': 7.24.4 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.4) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.24.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.4) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.24.4) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.4) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.4) - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.4) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.4) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.4) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.4) - '@babel/template': 7.24.0 - '@react-native/babel-plugin-codegen': 0.74.81(@babel/preset-env@7.24.4(@babel/core@7.24.4)) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.4) - react-refresh: 0.14.0 + '@react-native/babel-preset@0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))': + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.7) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.24.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.7) + '@babel/template': 7.24.7 + '@react-native/babel-plugin-codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.7) + react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/codegen@0.74.81(@babel/preset-env@7.24.4(@babel/core@7.23.9))': - dependencies: - '@babel/parser': 7.24.4 - '@babel/preset-env': 7.24.4(@babel/core@7.23.9) - glob: 7.2.3 - hermes-parser: 0.19.1 - invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.24.4(@babel/core@7.23.9)) - mkdirp: 0.5.6 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - - '@react-native/codegen@0.74.81(@babel/preset-env@7.24.4(@babel/core@7.24.4))': + '@react-native/codegen@0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7))': dependencies: - '@babel/parser': 7.24.4 - '@babel/preset-env': 7.24.4(@babel/core@7.24.4) + '@babel/parser': 7.24.7 + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) glob: 7.2.3 hermes-parser: 0.19.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.24.4(@babel/core@7.24.4)) + jscodeshift: 0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.7)) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - '@react-native/community-cli-plugin@0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))': - dependencies: - '@react-native-community/cli-server-api': 13.6.4 - '@react-native-community/cli-tools': 13.6.4 - '@react-native/dev-middleware': 0.74.81 - '@react-native/metro-babel-transformer': 0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9)) - chalk: 4.1.2 - execa: 5.1.1 - metro: 0.80.8 - metro-config: 0.80.8 - metro-core: 0.80.8 - node-fetch: 2.6.9 - querystring: 0.2.1 - readline: 1.3.0 - transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@react-native/community-cli-plugin@0.74.81(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))': + '@react-native/community-cli-plugin@0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))': dependencies: - '@react-native-community/cli-server-api': 13.6.4 - '@react-native-community/cli-tools': 13.6.4 - '@react-native/dev-middleware': 0.74.81 - '@react-native/metro-babel-transformer': 0.74.81(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4)) + '@react-native-community/cli-server-api': 13.6.8 + '@react-native-community/cli-tools': 13.6.8 + '@react-native/dev-middleware': 0.74.84 + '@react-native/metro-babel-transformer': 0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7)) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.8 - metro-config: 0.80.8 - metro-core: 0.80.8 - node-fetch: 2.6.9 + metro: 0.80.9 + metro-config: 0.80.9 + metro-core: 0.80.9 + node-fetch: 2.7.0 querystring: 0.2.1 readline: 1.3.0 transitivePeerDependencies: @@ -12605,558 +11652,380 @@ snapshots: - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.74.81': {} + '@react-native/debugger-frontend@0.74.84': {} - '@react-native/dev-middleware@0.74.81': + '@react-native/dev-middleware@0.74.84': dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.74.81 + '@react-native/debugger-frontend': 0.74.84 '@rnx-kit/chromium-edge-launcher': 1.0.0 chrome-launcher: 0.15.2 connect: 3.7.0 debug: 2.6.9 - node-fetch: 2.6.9 + node-fetch: 2.7.0 nullthrows: 1.1.1 open: 7.4.2 selfsigned: 2.4.1 serve-static: 1.15.0 temp-dir: 2.0.0 - ws: 6.2.2 + ws: 6.2.3 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.74.81': {} - - '@react-native/js-polyfills@0.74.81': {} + '@react-native/gradle-plugin@0.74.84': {} - '@react-native/metro-babel-transformer@0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))': - dependencies: - '@babel/core': 7.23.9 - '@react-native/babel-preset': 0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9)) - hermes-parser: 0.19.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color + '@react-native/js-polyfills@0.74.84': {} - '@react-native/metro-babel-transformer@0.74.81(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))': + '@react-native/metro-babel-transformer@0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))': dependencies: - '@babel/core': 7.24.4 - '@react-native/babel-preset': 0.74.81(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4)) + '@babel/core': 7.24.7 + '@react-native/babel-preset': 0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7)) hermes-parser: 0.19.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/normalize-colors@0.74.81': {} - - '@react-native/virtualized-lists@0.74.81(@types/react@18.2.75)(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)': - dependencies: - invariant: 2.2.4 - nullthrows: 1.1.1 - react: 18.2.0 - react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.75 + '@react-native/normalize-colors@0.74.84': {} - '@react-native/virtualized-lists@0.74.81(@types/react@18.2.75)(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)': + '@react-native/virtualized-lists@0.74.84(@types/react@18.3.3)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react: 18.2.0 - react-native: 0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0) + react: 18.3.1 + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - - '@react-spring/animated@9.7.3(react@18.2.0)': - dependencies: - '@react-spring/shared': 9.7.3(react@18.2.0) - '@react-spring/types': 9.7.3 - react: 18.2.0 - - '@react-spring/core@9.7.3(react@18.2.0)': - dependencies: - '@react-spring/animated': 9.7.3(react@18.2.0) - '@react-spring/shared': 9.7.3(react@18.2.0) - '@react-spring/types': 9.7.3 - react: 18.2.0 + '@types/react': 18.3.3 - '@react-spring/konva@9.7.3(konva@9.3.6)(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': + '@react-spring/animated@9.7.3(react@18.3.1)': dependencies: - '@react-spring/animated': 9.7.3(react@18.2.0) - '@react-spring/core': 9.7.3(react@18.2.0) - '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/shared': 9.7.3(react@18.3.1) '@react-spring/types': 9.7.3 - konva: 9.3.6 - react: 18.2.0 - react-konva: 18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.3.1 - '@react-spring/native@9.7.3(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)': + '@react-spring/core@9.7.3(react@18.3.1)': dependencies: - '@react-spring/animated': 9.7.3(react@18.2.0) - '@react-spring/core': 9.7.3(react@18.2.0) - '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/animated': 9.7.3(react@18.3.1) + '@react-spring/shared': 9.7.3(react@18.3.1) '@react-spring/types': 9.7.3 - react: 18.2.0 - react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0) + react: 18.3.1 - '@react-spring/native@9.7.3(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)': + '@react-spring/konva@9.7.3(konva@9.3.12)(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@react-spring/animated': 9.7.3(react@18.2.0) - '@react-spring/core': 9.7.3(react@18.2.0) - '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/animated': 9.7.3(react@18.3.1) + '@react-spring/core': 9.7.3(react@18.3.1) + '@react-spring/shared': 9.7.3(react@18.3.1) '@react-spring/types': 9.7.3 - react: 18.2.0 - react-native: 0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0) + konva: 9.3.12 + react: 18.3.1 + react-konva: 18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@react-spring/shared@9.7.3(react@18.2.0)': + '@react-spring/native@9.7.3(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': dependencies: + '@react-spring/animated': 9.7.3(react@18.3.1) + '@react-spring/core': 9.7.3(react@18.3.1) + '@react-spring/shared': 9.7.3(react@18.3.1) '@react-spring/types': 9.7.3 - react: 18.2.0 + react: 18.3.1 + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1) - '@react-spring/three@9.7.3(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(react@18.2.0)(three@0.163.0)': + '@react-spring/shared@9.7.3(react@18.3.1)': dependencies: - '@react-spring/animated': 9.7.3(react@18.2.0) - '@react-spring/core': 9.7.3(react@18.2.0) - '@react-spring/shared': 9.7.3(react@18.2.0) '@react-spring/types': 9.7.3 - '@react-three/fiber': 8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0) - react: 18.2.0 - three: 0.163.0 + react: 18.3.1 - '@react-spring/three@9.7.3(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(react@18.2.0)(three@0.163.0)': + '@react-spring/three@9.7.3(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(react@18.3.1)(three@0.165.0)': dependencies: - '@react-spring/animated': 9.7.3(react@18.2.0) - '@react-spring/core': 9.7.3(react@18.2.0) - '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/animated': 9.7.3(react@18.3.1) + '@react-spring/core': 9.7.3(react@18.3.1) + '@react-spring/shared': 9.7.3(react@18.3.1) '@react-spring/types': 9.7.3 - '@react-three/fiber': 8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0) - react: 18.2.0 - three: 0.163.0 + '@react-three/fiber': 8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0) + react: 18.3.1 + three: 0.165.0 '@react-spring/types@9.7.3': {} - '@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@react-spring/animated': 9.7.3(react@18.2.0) - '@react-spring/core': 9.7.3(react@18.2.0) - '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/animated': 9.7.3(react@18.3.1) + '@react-spring/core': 9.7.3(react@18.3.1) + '@react-spring/shared': 9.7.3(react@18.3.1) '@react-spring/types': 9.7.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) - '@react-spring/zdog@9.7.3(react-dom@18.2.0(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(zdog@1.1.3)': + '@react-spring/zdog@9.7.3(react-dom@18.3.1(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(zdog@1.1.3)': dependencies: - '@react-spring/animated': 9.7.3(react@18.2.0) - '@react-spring/core': 9.7.3(react@18.2.0) - '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/animated': 9.7.3(react@18.3.1) + '@react-spring/core': 9.7.3(react@18.3.1) + '@react-spring/shared': 9.7.3(react@18.3.1) '@react-spring/types': 9.7.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-zdog: 1.2.2 zdog: 1.1.3 - '@react-stately/checkbox@3.3.2(react@18.2.0)': + '@react-stately/checkbox@3.6.5(react@18.3.1)': dependencies: - '@react-stately/toggle': 3.7.2(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/checkbox': 3.7.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-stately/form': 3.0.3(react@18.3.1) + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/checkbox': 3.8.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-stately/collections@3.10.7(react@18.3.1)': + dependencies: + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-stately/combobox@3.8.4(react@18.3.1)': + dependencies: + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/form': 3.0.3(react@18.3.1) + '@react-stately/list': 3.10.5(react@18.3.1) + '@react-stately/overlays': 3.6.7(react@18.3.1) + '@react-stately/select': 3.6.4(react@18.3.1) + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/combobox': 3.11.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/collections@3.4.4(react@18.2.0)': + '@react-stately/flags@3.0.3': dependencies: - '@babel/runtime': 7.23.9 - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@swc/helpers': 0.5.11 + + '@react-stately/form@3.0.3(react@18.3.1)': + dependencies: + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/collections@3.7.0(react@18.2.0)': + '@react-stately/grid@3.8.7(react@18.3.1)': dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/selection': 3.15.1(react@18.3.1) + '@react-types/grid': 3.2.6(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/combobox@3.2.2(react@18.2.0)': + '@react-stately/list@3.10.5(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@react-stately/list': 3.8.0(react@18.2.0) - '@react-stately/menu': 3.5.1(react@18.2.0) - '@react-stately/select': 3.5.0(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/combobox': 3.6.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/selection': 3.15.1(react@18.3.1) + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/combobox@3.5.0(react@18.2.0)': + '@react-stately/menu@3.7.1(react@18.3.1)': dependencies: - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/list': 3.8.0(react@18.2.0) - '@react-stately/menu': 3.5.1(react@18.2.0) - '@react-stately/select': 3.5.0(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/combobox': 3.6.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-stately/overlays': 3.6.7(react@18.3.1) + '@react-types/menu': 3.9.9(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/grid@3.6.0(react@18.2.0)': + '@react-stately/overlays@3.6.7(react@18.3.1)': dependencies: - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-types/grid': 3.1.7(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/overlays': 3.8.7(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/layout@3.12.0(react@18.2.0)': + '@react-stately/radio@3.10.4(react@18.3.1)': dependencies: - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/table': 3.9.0(react@18.2.0) - '@react-stately/virtualizer': 3.5.1(react@18.2.0) - '@react-types/grid': 3.1.7(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@react-types/table': 3.6.0(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-stately/form': 3.0.3(react@18.3.1) + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/radio': 3.8.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/list@3.5.4(react@18.2.0)': + '@react-stately/select@3.6.4(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-stately/form': 3.0.3(react@18.3.1) + '@react-stately/list': 3.10.5(react@18.3.1) + '@react-stately/overlays': 3.6.7(react@18.3.1) + '@react-types/select': 3.9.4(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/list@3.8.0(react@18.2.0)': + '@react-stately/selection@3.15.1(react@18.3.1)': dependencies: - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/menu@3.4.4(react@18.2.0)': + '@react-stately/table@3.11.8(react@18.3.1)': dependencies: - '@react-stately/overlays': 3.6.5(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/menu': 3.9.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/flags': 3.0.3 + '@react-stately/grid': 3.8.7(react@18.3.1) + '@react-stately/selection': 3.15.1(react@18.3.1) + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/grid': 3.2.6(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@react-types/table': 3.9.5(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/menu@3.5.1(react@18.2.0)': + '@react-stately/toggle@3.7.4(react@18.3.1)': dependencies: - '@react-stately/overlays': 3.6.5(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/menu': 3.9.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/checkbox': 3.8.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-stately/tooltip@3.4.9(react@18.3.1)': + dependencies: + '@react-stately/overlays': 3.6.7(react@18.3.1) + '@react-types/tooltip': 3.4.9(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/overlays@3.4.2(react@18.2.0)': + '@react-stately/tree@3.8.1(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/overlays': 3.8.5(react@18.2.0) - react: 18.2.0 + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/selection': 3.15.1(react@18.3.1) + '@react-stately/utils': 3.10.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/overlays@3.6.5(react@18.2.0)': + '@react-stately/utils@3.10.1(react@18.3.1)': dependencies: - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/overlays': 3.8.5(react@18.2.0) - '@swc/helpers': 0.5.1 - react: 18.2.0 + '@swc/helpers': 0.5.11 + react: 18.3.1 - '@react-stately/radio@3.6.0(react@18.2.0)': + '@react-stately/virtualizer@3.7.1(react@18.3.1)': + dependencies: + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0)': dependencies: - '@babel/runtime': 7.23.9 - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/radio': 3.4.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@babel/runtime': 7.24.7 + '@types/react-reconciler': 0.26.7 + '@types/webxr': 0.5.18 + base64-js: 1.5.1 + buffer: 6.0.3 + its-fine: 1.2.5(react@18.3.1) + react: 18.3.1 + react-reconciler: 0.27.0(react@18.3.1) + react-use-measure: 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + scheduler: 0.21.0 + suspend-react: 0.1.3(react@18.3.1) + three: 0.165.0 + zustand: 3.7.2(react@18.3.1) + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1) - '@react-stately/radio@3.8.0(react@18.2.0)': + '@react-types/accordion@3.0.0-alpha.21(react@18.3.1)': dependencies: - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/radio': 3.4.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-stately/select@3.3.2(react@18.2.0)': + '@react-types/breadcrumbs@3.7.5(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/list': 3.8.0(react@18.2.0) - '@react-stately/menu': 3.5.1(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/select': 3.8.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-types/link': 3.5.5(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-stately/select@3.5.0(react@18.2.0)': + '@react-types/button@3.9.4(react@18.3.1)': dependencies: - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/list': 3.8.0(react@18.2.0) - '@react-stately/menu': 3.5.1(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/select': 3.8.0(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-stately/selection@3.13.0(react@18.2.0)': + '@react-types/checkbox@3.8.1(react@18.3.1)': dependencies: - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-stately/table@3.5.0(react@18.2.0)': + '@react-types/combobox@3.11.1(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/grid': 3.6.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-types/grid': 3.1.7(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@react-types/table': 3.6.0(react@18.2.0) - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-stately/table@3.9.0(react@18.2.0)': + '@react-types/dialog@3.5.10(react@18.3.1)': dependencies: - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/grid': 3.6.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-types/grid': 3.1.7(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@react-types/table': 3.6.0(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-types/overlays': 3.8.7(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-stately/toggle@3.4.2(react@18.2.0)': + '@react-types/grid@3.2.6(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/checkbox': 3.7.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-stately/toggle@3.7.2(react@18.2.0)': + '@react-types/link@3.5.5(react@18.3.1)': dependencies: - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/checkbox': 3.7.1(react@18.2.0) - '@swc/helpers': 0.5.1 - react: 18.2.0 - - '@react-stately/tooltip@3.2.2(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@react-stately/overlays': 3.6.5(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/tooltip': 3.4.0(react@18.2.0) - react: 18.2.0 - - '@react-stately/tooltip@3.4.0(react@18.2.0)': - dependencies: - '@react-stately/overlays': 3.6.5(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/tooltip': 3.4.0(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-stately/tree@3.3.4(react@18.2.0)': + '@react-types/listbox@3.4.9(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-stately/tree@3.6.0(react@18.2.0)': + '@react-types/menu@3.9.9(react@18.3.1)': dependencies: - '@react-stately/collections': 3.7.0(react@18.2.0) - '@react-stately/selection': 3.13.0(react@18.2.0) - '@react-stately/utils': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - - '@react-stately/utils@3.9.1(react@18.2.0)': - dependencies: - '@swc/helpers': 0.5.1 - react: 18.2.0 - - '@react-stately/virtualizer@3.5.1(react@18.2.0)': - dependencies: - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - '@swc/helpers': 0.4.14 - react: 18.2.0 - - '@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@types/react-reconciler': 0.26.7 - '@types/webxr': 0.5.15 - base64-js: 1.5.1 - buffer: 6.0.3 - its-fine: 1.2.5(react@18.2.0) - react: 18.2.0 - react-reconciler: 0.27.0(react@18.2.0) - react-use-measure: 2.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - scheduler: 0.21.0 - suspend-react: 0.1.3(react@18.2.0) - three: 0.163.0 - zustand: 3.7.2(react@18.2.0) - optionalDependencies: - react-dom: 18.2.0(react@18.2.0) - react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0) - - '@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0)': - dependencies: - '@babel/runtime': 7.23.9 - '@types/react-reconciler': 0.26.7 - '@types/webxr': 0.5.15 - base64-js: 1.5.1 - buffer: 6.0.3 - its-fine: 1.2.5(react@18.2.0) - react: 18.2.0 - react-reconciler: 0.27.0(react@18.2.0) - react-use-measure: 2.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - scheduler: 0.21.0 - suspend-react: 0.1.3(react@18.2.0) - three: 0.163.0 - zustand: 3.7.2(react@18.2.0) - optionalDependencies: - react-dom: 18.2.0(react@18.2.0) - react-native: 0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0) - - '@react-types/accordion@3.0.0-alpha.13(react@18.2.0)': - dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/breadcrumbs@3.6.0(react@18.2.0)': - dependencies: - '@react-types/link': 3.4.3(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/button@3.9.2(react@18.2.0)': - dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/checkbox@3.7.1(react@18.2.0)': - dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/combobox@3.6.1(react@18.2.0)': - dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/dialog@3.4.5(react@18.2.0)': - dependencies: - '@react-types/overlays': 3.8.5(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/dialog@3.5.1(react@18.2.0)': - dependencies: - '@react-types/overlays': 3.8.5(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/grid@3.1.7(react@18.2.0)': - dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/label@3.7.3(react@18.2.0)': - dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/link@3.4.3(react@18.2.0)': - dependencies: - '@react-aria/interactions': 3.21.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/listbox@3.4.1(react@18.2.0)': - dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/menu@3.9.0(react@18.2.0)': - dependencies: - '@react-types/overlays': 3.8.5(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/overlays@3.8.5(react@18.2.0)': - dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 - - '@react-types/radio@3.4.1(react@18.2.0)': - dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-types/overlays': 3.8.7(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-types/select@3.8.0(react@18.2.0)': + '@react-types/overlays@3.8.7(react@18.3.1)': dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-types/shared@3.16.0(react@18.2.0)': + '@react-types/radio@3.8.1(react@18.3.1)': dependencies: - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-types/shared@3.22.1(react@18.2.0)': + '@react-types/select@3.9.4(react@18.3.1)': dependencies: - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-types/switch@3.3.1(react@18.2.0)': + '@react-types/shared@3.23.1(react@18.3.1)': dependencies: - '@react-types/checkbox': 3.7.1(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + react: 18.3.1 - '@react-types/table@3.6.0(react@18.2.0)': + '@react-types/table@3.9.5(react@18.3.1)': dependencies: - '@react-types/grid': 3.1.7(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-types/grid': 3.2.6(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-types/textfield@3.7.1(react@18.2.0)': + '@react-types/textfield@3.9.3(react@18.3.1)': dependencies: - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 - '@react-types/tooltip@3.4.0(react@18.2.0)': + '@react-types/tooltip@3.4.9(react@18.3.1)': dependencies: - '@react-types/overlays': 3.8.5(react@18.2.0) - '@react-types/shared': 3.22.1(react@18.2.0) - react: 18.2.0 + '@react-types/overlays': 3.8.7(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + react: 18.3.1 '@rnx-kit/chromium-edge-launcher@1.0.0': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13165,88 +12034,118 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/pluginutils@5.1.0(rollup@4.14.1)': + '@rollup/pluginutils@5.1.0(rollup@4.18.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.14.1 + rollup: 4.18.0 - '@rollup/rollup-android-arm-eabi@4.14.1': + '@rollup/rollup-android-arm-eabi@4.18.0': optional: true - '@rollup/rollup-android-arm64@4.14.1': + '@rollup/rollup-android-arm64@4.18.0': optional: true - '@rollup/rollup-darwin-arm64@4.14.1': + '@rollup/rollup-darwin-arm64@4.18.0': optional: true - '@rollup/rollup-darwin-x64@4.14.1': + '@rollup/rollup-darwin-x64@4.18.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.14.1': + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.14.1': + '@rollup/rollup-linux-arm-musleabihf@4.18.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.14.1': + '@rollup/rollup-linux-arm64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.14.1': + '@rollup/rollup-linux-arm64-musl@4.18.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.14.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.14.1': + '@rollup/rollup-linux-riscv64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.14.1': + '@rollup/rollup-linux-s390x-gnu@4.18.0': optional: true - '@rollup/rollup-linux-x64-musl@4.14.1': + '@rollup/rollup-linux-x64-gnu@4.18.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.14.1': + '@rollup/rollup-linux-x64-musl@4.18.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.14.1': + '@rollup/rollup-win32-arm64-msvc@4.18.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.14.1': + '@rollup/rollup-win32-ia32-msvc@4.18.0': optional: true - '@rushstack/node-core-library@4.0.2(@types/node@18.19.31)': + '@rollup/rollup-win32-x64-msvc@4.18.0': + optional: true + + '@rushstack/node-core-library@4.0.2(@types/node@18.19.39)': dependencies: fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 resolve: 1.22.8 semver: 7.5.4 - z-schema: 5.0.4 + z-schema: 5.0.5 optionalDependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 + + '@rushstack/node-core-library@4.0.2(@types/node@20.14.9)': + dependencies: + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + z-schema: 5.0.5 + optionalDependencies: + '@types/node': 20.14.9 '@rushstack/rig-package@0.5.2': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.10.0(@types/node@18.19.31)': + '@rushstack/terminal@0.10.0(@types/node@18.19.39)': dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@18.19.31) + '@rushstack/node-core-library': 4.0.2(@types/node@18.19.39) supports-color: 8.1.1 optionalDependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 - '@rushstack/ts-command-line@4.19.1(@types/node@18.19.31)': + '@rushstack/terminal@0.10.0(@types/node@20.14.9)': dependencies: - '@rushstack/terminal': 0.10.0(@types/node@18.19.31) + '@rushstack/node-core-library': 4.0.2(@types/node@20.14.9) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 20.14.9 + + '@rushstack/ts-command-line@4.19.1(@types/node@18.19.39)': + dependencies: + '@rushstack/terminal': 0.10.0(@types/node@18.19.39) '@types/argparse': 1.0.38 argparse: 1.0.10 - string-argv: 0.3.1 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + + '@rushstack/ts-command-line@4.19.1(@types/node@20.14.9)': + dependencies: + '@rushstack/terminal': 0.10.0(@types/node@20.14.9) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' @@ -13264,17 +12163,17 @@ snapshots: dependencies: type-detect: 4.0.8 - '@sinonjs/commons@3.0.0': + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 '@sinonjs/fake-timers@10.3.0': dependencies: - '@sinonjs/commons': 3.0.0 + '@sinonjs/commons': 3.0.1 '@sinonjs/fake-timers@11.2.2': dependencies: - '@sinonjs/commons': 3.0.0 + '@sinonjs/commons': 3.0.1 '@sinonjs/samsam@8.0.0': dependencies: @@ -13284,27 +12183,28 @@ snapshots: '@sinonjs/text-encoding@0.7.2': {} - '@swc/helpers@0.4.14': + '@swc/helpers@0.5.11': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - '@swc/helpers@0.5.1': + '@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))': dependencies: - tslib: 2.6.2 + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)) - '@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))': + '@tailwindcss/forms@0.5.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))': dependencies: - tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)) + mini-svg-data-uri: 1.4.4 + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)) - '@tailwindcss/forms@0.5.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)))': + '@tailwindcss/forms@0.5.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)))': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)) + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)) '@testing-library/dom@9.3.4': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/runtime': 7.23.9 + '@babel/code-frame': 7.24.7 + '@babel/runtime': 7.24.7 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -13312,38 +12212,38 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.2(vitest@1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4))': + '@testing-library/jest-dom@6.4.6(vitest@1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1))': dependencies: - '@adobe/css-tools': 4.3.3 - '@babel/runtime': 7.21.0 - aria-query: 5.1.3 + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.24.7 + aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 optionalDependencies: - vitest: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + vitest: 1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) - '@testing-library/react@14.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@testing-library/react@14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) '@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4)': dependencies: '@testing-library/dom': 9.3.4 - '@tsconfig/node10@1.0.9': {} + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} '@tsconfig/node14@1.0.3': {} - '@tsconfig/node16@1.0.3': {} + '@tsconfig/node16@1.0.4': {} '@types/argparse@1.0.38': {} @@ -13351,24 +12251,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - '@types/babel__generator': 7.6.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.4 + '@types/babel__traverse': 7.20.6 - '@types/babel__generator@7.6.7': + '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.23.6 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 - '@types/babel__traverse@7.20.4': + '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 '@types/cookie@0.4.1': {} @@ -13406,9 +12306,9 @@ snapshots: '@types/d3-voronoi@1.1.12': {} - '@types/debug@4.1.7': + '@types/debug@4.1.12': dependencies: - '@types/ms': 0.7.31 + '@types/ms': 0.7.34 '@types/estree@1.0.5': {} @@ -13418,105 +12318,103 @@ snapshots: '@types/is-hotkey@0.1.10': {} - '@types/istanbul-lib-coverage@2.0.4': {} + '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-report@3.0.3': dependencies: - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/js-levenshtein@1.1.1': {} - - '@types/json-schema@7.0.12': {} + '@types/js-levenshtein@1.1.3': {} '@types/json5@0.0.29': {} '@types/lodash-es@4.17.12': dependencies: - '@types/lodash': 4.14.192 - - '@types/lodash@4.14.192': {} + '@types/lodash': 4.17.5 - '@types/lodash@4.14.202': {} + '@types/lodash@4.17.5': {} - '@types/mdast@3.0.10': + '@types/mdast@3.0.15': dependencies: - '@types/unist': 3.0.2 - - '@types/minimist@1.2.2': {} + '@types/unist': 2.0.10 '@types/mock-fs@4.13.4': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 - '@types/ms@0.7.31': {} + '@types/ms@0.7.34': {} '@types/node-forge@1.3.11': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 '@types/node@12.20.55': {} - '@types/node@18.19.31': + '@types/node@18.19.39': dependencies: undici-types: 5.26.5 - '@types/normalize-package-data@2.4.1': {} + '@types/node@20.14.9': + dependencies: + undici-types: 5.26.5 + + '@types/normalize-package-data@2.4.4': {} '@types/prompts@2.4.9': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 kleur: 3.0.3 - '@types/prop-types@15.7.5': {} + '@types/prop-types@15.7.12': {} - '@types/react-dom@18.2.24': + '@types/react-dom@18.3.0': dependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 '@types/react-reconciler@0.26.7': dependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 '@types/react-reconciler@0.28.8': dependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - '@types/react@18.2.75': + '@types/react@18.3.3': dependencies: - '@types/prop-types': 15.7.5 - csstype: 3.1.1 + '@types/prop-types': 15.7.12 + csstype: 3.1.3 - '@types/semver@7.5.0': {} + '@types/semver@7.5.8': {} - '@types/set-cookie-parser@2.4.3': + '@types/set-cookie-parser@2.4.9': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 '@types/sinon@17.0.3': dependencies: - '@types/sinonjs__fake-timers': 8.1.2 + '@types/sinonjs__fake-timers': 8.1.5 '@types/sinonjs__fake-timers@8.1.1': {} - '@types/sinonjs__fake-timers@8.1.2': {} + '@types/sinonjs__fake-timers@8.1.5': {} '@types/sizzle@2.3.8': {} '@types/stack-utils@2.0.3': {} - '@types/unist@2.0.6': {} + '@types/unist@2.0.10': {} '@types/unist@3.0.2': {} - '@types/webxr@0.5.15': {} + '@types/webxr@0.5.18': {} '@types/ws@8.5.10': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 '@types/yargs-parser@21.0.3': {} @@ -13530,639 +12428,346 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 optional: true - '@typescript-eslint/eslint-plugin@7.5.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0)(typescript@5.4.4)': + '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)': dependencies: - '@eslint-community/regexpp': 4.6.1 - '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4) - '@typescript-eslint/scope-manager': 7.5.0 - '@typescript-eslint/type-utils': 7.5.0(eslint@8.57.0)(typescript@5.4.4) - '@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.4) - '@typescript-eslint/visitor-keys': 7.5.0 - debug: 4.3.4(supports-color@8.1.1) + '@eslint-community/regexpp': 4.10.1 + '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.14.1 eslint: 8.57.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.0.1(typescript@5.4.4) + ts-api-utils: 1.3.0(typescript@5.5.2) optionalDependencies: - typescript: 5.4.4 + typescript: 5.5.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4)': + '@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2)': dependencies: - '@typescript-eslint/scope-manager': 7.5.0 - '@typescript-eslint/types': 7.5.0 - '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.4) - '@typescript-eslint/visitor-keys': 7.5.0 - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.14.1 + debug: 4.3.5(supports-color@8.1.1) eslint: 8.57.0 optionalDependencies: - typescript: 5.4.4 + typescript: 5.5.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.5.0': + '@typescript-eslint/scope-manager@7.14.1': dependencies: - '@typescript-eslint/types': 7.5.0 - '@typescript-eslint/visitor-keys': 7.5.0 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 - '@typescript-eslint/type-utils@7.5.0(eslint@8.57.0)(typescript@5.4.4)': + '@typescript-eslint/type-utils@7.14.1(eslint@8.57.0)(typescript@5.5.2)': dependencies: - '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.4) - '@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.4) - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.2) + debug: 4.3.5(supports-color@8.1.1) eslint: 8.57.0 - ts-api-utils: 1.0.1(typescript@5.4.4) + ts-api-utils: 1.3.0(typescript@5.5.2) optionalDependencies: - typescript: 5.4.4 + typescript: 5.5.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.5.0': {} + '@typescript-eslint/types@7.14.1': {} - '@typescript-eslint/typescript-estree@7.5.0(typescript@5.4.4)': + '@typescript-eslint/typescript-estree@7.14.1(typescript@5.5.2)': dependencies: - '@typescript-eslint/types': 7.5.0 - '@typescript-eslint/visitor-keys': 7.5.0 - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 + debug: 4.3.5(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.0.1(typescript@5.4.4) + minimatch: 9.0.5 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.5.2) optionalDependencies: - typescript: 5.4.4 + typescript: 5.5.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.5.0(eslint@8.57.0)(typescript@5.4.4)': + '@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.5.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 7.5.0 - '@typescript-eslint/types': 7.5.0 - '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.4) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) eslint: 8.57.0 - semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.5.0': + '@typescript-eslint/visitor-keys@7.14.1': dependencies: - '@typescript-eslint/types': 7.5.0 + '@typescript-eslint/types': 7.14.1 eslint-visitor-keys: 3.4.3 - '@udecode/plate-alignment@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-alignment@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-autoformat@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-autoformat@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-basic-marks@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-basic-marks@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-break@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-break@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-code-block@31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - prismjs: 1.29.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-code-block@31.3.4(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - prismjs: 1.29.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-combobox@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - downshift: 6.1.12(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-combobox@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - downshift: 6.1.12(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/utils': 31.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - transitivePeerDependencies: - - '@types/react' - - immer - - react-native - - scheduler - - '@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-utils': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/utils': 31.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - transitivePeerDependencies: - - '@types/react' - - immer - - react-native - - scheduler - - '@udecode/plate-core@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/utils': 31.0.0 - clsx: 1.2.1 - is-hotkey: 0.2.0 - jotai: 2.8.0(@types/react@18.2.75)(react@18.2.0) - jotai-optics: 0.3.2(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(optics-ts@2.4.1) - jotai-x: 1.2.2(@types/react@18.2.75)(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(react@18.2.0) - lodash: 4.17.21 - nanoid: 3.3.7 - optics-ts: 2.4.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-hotkeys-hook: 4.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - use-deep-compare: 1.2.1(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0) - zustand-x: 3.0.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0)) - transitivePeerDependencies: - - '@types/react' - - immer - - react-native - - scheduler - - '@udecode/plate-core@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-alignment@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/utils': 31.0.0 - clsx: 1.2.1 - is-hotkey: 0.2.0 - jotai: 2.8.0(@types/react@18.2.75)(react@18.2.0) - jotai-optics: 0.3.2(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(optics-ts@2.4.1) - jotai-x: 1.2.2(@types/react@18.2.75)(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(react@18.2.0) - lodash: 4.17.21 - nanoid: 3.3.7 - optics-ts: 2.4.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-hotkeys-hook: 4.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - use-deep-compare: 1.2.1(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) - zustand-x: 3.0.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)) - transitivePeerDependencies: - - '@types/react' - - immer - - react-native - - scheduler + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-core@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-autoformat@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/utils': 31.0.0 - clsx: 1.2.1 - is-hotkey: 0.2.0 - jotai: 2.8.0(@types/react@18.2.75)(react@18.2.0) - jotai-optics: 0.3.2(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(optics-ts@2.4.1) - jotai-x: 1.2.2(@types/react@18.2.75)(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) lodash: 4.17.21 - nanoid: 3.3.7 - optics-ts: 2.4.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-hotkeys-hook: 4.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - use-deep-compare: 1.2.1(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) - zustand-x: 3.0.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)) - transitivePeerDependencies: - - '@types/react' - - immer - - react-native - - scheduler - - '@udecode/plate-emoji@31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@emoji-mart/data': 1.1.2 - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-emoji@31.0.0(patch_hash=zd65gtokaotoa2xfhortjmkmjm)(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@emoji-mart/data': 1.1.2 - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-floating@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/react': 0.22.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-floating@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/react': 0.22.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-indent@31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-basic-marks@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - slate: 0.102.0 - slate-history: 0.100.0(slate@0.102.0) - slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - - '@udecode/plate-indent@31.1.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': - dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-link@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-break@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-link@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-code-block@31.3.4(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + prismjs: 1.29.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-list@31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-combobox@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-reset-node': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + downshift: 6.1.12(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-list@31.1.3(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-reset-node': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-core': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/react-utils': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-react': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/utils': 31.0.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler - '@udecode/plate-mention@31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-core@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-react': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/utils': 31.0.0 + clsx: 1.2.1 + is-hotkey: 0.2.0 + jotai: 2.8.3(@types/react@18.3.3)(react@18.3.1) + jotai-optics: 0.3.2(jotai@2.8.3(@types/react@18.3.3)(react@18.3.1))(optics-ts@2.4.1) + jotai-x: 1.2.3(@types/react@18.3.3)(jotai@2.8.3(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + lodash: 4.17.21 + nanoid: 3.3.7 + optics-ts: 2.4.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-hotkeys-hook: 4.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) + use-deep-compare: 1.2.1(react@18.3.1) + zustand: 4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + zustand-x: 3.0.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler - '@udecode/plate-mention@31.3.5(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-emoji@31.4.0(patch_hash=qe3otflfq45s3qpehitpsd2wsy)(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@emoji-mart/data': 1.2.1 + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-normalizers@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-floating@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@floating-ui/core': 1.6.3 + '@floating-ui/react': 0.22.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-normalizers@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-indent@31.1.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-paragraph@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-link@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-paragraph@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-list@31.1.3(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-reset-node': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-reset-node@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-mention@31.3.5(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-reset-node@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-normalizers@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-common': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-utils@31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-paragraph@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/utils': 31.0.0 - clsx: 1.2.1 - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - transitivePeerDependencies: - - '@types/react' - - immer - - react-native - - scheduler + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-utils@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-reset-node@31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/utils': 31.0.0 - clsx: 1.2.1 - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) - transitivePeerDependencies: - - '@types/react' - - immer - - react-native - - scheduler + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) - '@udecode/plate-utils@31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/plate-utils@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/plate-core': 31.3.2(@types/react@18.2.75)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) - '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@udecode/plate-core': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/react-utils': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) - '@udecode/slate-react': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-react': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/utils': 31.0.0 clsx: 1.2.1 lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) slate-hyperscript: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) transitivePeerDependencies: - '@types/react' - immer - react-native - scheduler - '@udecode/react-utils@31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@udecode/react-utils@31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@udecode/utils': 31.0.0 clsx: 1.2.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - '@types/react' - '@udecode/slate-react@31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0))(slate@0.102.0)': + '@udecode/slate-react@31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0)': dependencies: - '@udecode/react-utils': 31.0.0(@types/react@18.2.75)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@udecode/react-utils': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) '@udecode/utils': 31.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) slate: 0.102.0 slate-history: 0.100.0(slate@0.102.0) - slate-react: 0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0) + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) transitivePeerDependencies: - '@types/react' @@ -14182,22 +12787,11 @@ snapshots: '@udecode/utils@31.0.0': {} - '@udecode/zustood@2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0))': - dependencies: - immer: 10.0.4 - react-tracked: 1.7.11(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505) - zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) - transitivePeerDependencies: - - react - - react-dom - - react-native - - scheduler - - '@udecode/zustood@2.0.0(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0))': + '@udecode/zustood@2.0.0(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': dependencies: - immer: 10.0.4 - react-tracked: 1.7.11(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505) - zustand: 4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0) + immer: 10.1.1 + react-tracked: 1.7.14(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505) + zustand: 4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) transitivePeerDependencies: - react - react-dom @@ -14206,157 +12800,157 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@visx/annotation@3.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@visx/annotation@3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@types/react': 18.2.75 - '@visx/drag': 3.3.0(react@18.2.0) - '@visx/group': 3.3.0(react@18.2.0) - '@visx/text': 3.3.0(react@18.2.0) - classnames: 2.3.2 + '@types/react': 18.3.3 + '@visx/drag': 3.3.0(react@18.3.1) + '@visx/group': 3.3.0(react@18.3.1) + '@visx/text': 3.3.0(react@18.3.1) + classnames: 2.5.1 prop-types: 15.8.1 - react: 18.2.0 - react-use-measure: 2.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.3.1 + react-use-measure: 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react-dom - '@visx/axis@3.10.1(react@18.2.0)': + '@visx/axis@3.10.1(react@18.3.1)': dependencies: - '@types/react': 18.2.75 - '@visx/group': 3.3.0(react@18.2.0) + '@types/react': 18.3.3 + '@visx/group': 3.3.0(react@18.3.1) '@visx/point': 3.3.0 '@visx/scale': 3.5.0 - '@visx/shape': 3.5.0(react@18.2.0) - '@visx/text': 3.3.0(react@18.2.0) - classnames: 2.3.2 + '@visx/shape': 3.5.0(react@18.3.1) + '@visx/text': 3.3.0(react@18.3.1) + classnames: 2.5.1 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 - '@visx/bounds@3.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@visx/bounds@3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) '@visx/curve@3.3.0': dependencies: '@types/d3-shape': 1.3.12 d3-shape: 1.3.7 - '@visx/drag@3.3.0(react@18.2.0)': + '@visx/drag@3.3.0(react@18.3.1)': dependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 '@visx/event': 3.3.0 '@visx/point': 3.3.0 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 '@visx/event@3.3.0': dependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 '@visx/point': 3.3.0 - '@visx/glyph@3.3.0(react@18.2.0)': + '@visx/glyph@3.3.0(react@18.3.1)': dependencies: '@types/d3-shape': 1.3.12 - '@types/react': 18.2.75 - '@visx/group': 3.3.0(react@18.2.0) - classnames: 2.3.2 + '@types/react': 18.3.3 + '@visx/group': 3.3.0(react@18.3.1) + classnames: 2.5.1 d3-shape: 1.3.7 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 - '@visx/grid@3.5.0(react@18.2.0)': + '@visx/grid@3.5.0(react@18.3.1)': dependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 '@visx/curve': 3.3.0 - '@visx/group': 3.3.0(react@18.2.0) + '@visx/group': 3.3.0(react@18.3.1) '@visx/point': 3.3.0 '@visx/scale': 3.5.0 - '@visx/shape': 3.5.0(react@18.2.0) - classnames: 2.3.2 + '@visx/shape': 3.5.0(react@18.3.1) + classnames: 2.5.1 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 - '@visx/group@3.3.0(react@18.2.0)': + '@visx/group@3.3.0(react@18.3.1)': dependencies: - '@types/react': 18.2.75 - classnames: 2.3.2 + '@types/react': 18.3.3 + classnames: 2.5.1 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 - '@visx/hierarchy@3.3.0(react@18.2.0)': + '@visx/hierarchy@3.3.0(react@18.3.1)': dependencies: '@types/d3-hierarchy': 1.1.11 - '@types/react': 18.2.75 - '@visx/group': 3.3.0(react@18.2.0) - classnames: 2.3.2 + '@types/react': 18.3.3 + '@visx/group': 3.3.0(react@18.3.1) + classnames: 2.5.1 d3-hierarchy: 1.1.9 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 '@visx/point@3.3.0': {} - '@visx/react-spring@3.10.1(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': + '@visx/react-spring@3.10.1(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@react-spring/web': 9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/react': 18.2.75 - '@visx/axis': 3.10.1(react@18.2.0) - '@visx/grid': 3.5.0(react@18.2.0) + '@react-spring/web': 9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/react': 18.3.3 + '@visx/axis': 3.10.1(react@18.3.1) + '@visx/grid': 3.5.0(react@18.3.1) '@visx/scale': 3.5.0 - '@visx/text': 3.3.0(react@18.2.0) - classnames: 2.3.2 + '@visx/text': 3.3.0(react@18.3.1) + classnames: 2.5.1 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 - '@visx/responsive@3.10.2(react@18.2.0)': + '@visx/responsive@3.10.2(react@18.3.1)': dependencies: - '@types/lodash': 4.14.202 - '@types/react': 18.2.75 + '@types/lodash': 4.17.5 + '@types/react': 18.3.3 lodash: 4.17.21 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 '@visx/scale@3.5.0': dependencies: '@visx/vendor': 3.5.0 - '@visx/shape@3.5.0(react@18.2.0)': + '@visx/shape@3.5.0(react@18.3.1)': dependencies: '@types/d3-path': 1.0.11 '@types/d3-shape': 1.3.12 - '@types/lodash': 4.14.202 - '@types/react': 18.2.75 + '@types/lodash': 4.17.5 + '@types/react': 18.3.3 '@visx/curve': 3.3.0 - '@visx/group': 3.3.0(react@18.2.0) + '@visx/group': 3.3.0(react@18.3.1) '@visx/scale': 3.5.0 - classnames: 2.3.2 + classnames: 2.5.1 d3-path: 1.0.9 d3-shape: 1.3.7 lodash: 4.17.21 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 - '@visx/text@3.3.0(react@18.2.0)': + '@visx/text@3.3.0(react@18.3.1)': dependencies: - '@types/lodash': 4.14.202 - '@types/react': 18.2.75 - classnames: 2.3.2 + '@types/lodash': 4.17.5 + '@types/react': 18.3.3 + classnames: 2.5.1 lodash: 4.17.21 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 reduce-css-calc: 1.3.0 - '@visx/tooltip@3.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@visx/tooltip@3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@types/react': 18.2.75 - '@visx/bounds': 3.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - classnames: 2.3.2 + '@types/react': 18.3.3 + '@visx/bounds': 3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-use-measure: 2.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-use-measure: 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@visx/vendor@3.5.0': dependencies: @@ -14380,119 +12974,139 @@ snapshots: d3-time-format: 4.1.0 internmap: 2.0.3 - '@visx/voronoi@3.3.0(react@18.2.0)': + '@visx/voronoi@3.3.0(react@18.3.1)': dependencies: '@types/d3-voronoi': 1.1.12 - '@types/react': 18.2.75 - classnames: 2.3.2 + '@types/react': 18.3.3 + classnames: 2.5.1 d3-voronoi: 1.1.4 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 - '@visx/xychart@3.10.2(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@visx/xychart@3.11.0(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@react-spring/web': 9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/lodash': 4.14.202 - '@types/react': 18.2.75 - '@visx/annotation': 3.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@visx/axis': 3.10.1(react@18.2.0) + '@react-spring/web': 9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/lodash': 4.17.5 + '@types/react': 18.3.3 + '@visx/annotation': 3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@visx/axis': 3.10.1(react@18.3.1) '@visx/event': 3.3.0 - '@visx/glyph': 3.3.0(react@18.2.0) - '@visx/grid': 3.5.0(react@18.2.0) - '@visx/react-spring': 3.10.1(@react-spring/web@9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) - '@visx/responsive': 3.10.2(react@18.2.0) + '@visx/glyph': 3.3.0(react@18.3.1) + '@visx/grid': 3.5.0(react@18.3.1) + '@visx/react-spring': 3.10.1(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@visx/responsive': 3.10.2(react@18.3.1) '@visx/scale': 3.5.0 - '@visx/shape': 3.5.0(react@18.2.0) - '@visx/text': 3.3.0(react@18.2.0) - '@visx/tooltip': 3.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@visx/shape': 3.5.0(react@18.3.1) + '@visx/text': 3.3.0(react@18.3.1) + '@visx/tooltip': 3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@visx/vendor': 3.5.0 - '@visx/voronoi': 3.3.0(react@18.2.0) - classnames: 2.3.2 + '@visx/voronoi': 3.3.0(react@18.3.1) + classnames: 2.5.1 d3-interpolate-path: 2.2.1 d3-shape: 2.1.0 lodash: 4.17.21 mitt: 2.1.0 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 transitivePeerDependencies: - react-dom - '@vitejs/plugin-react@4.2.1(vite@4.5.3(@types/node@18.19.31)(terser@5.30.4))': + '@vitejs/plugin-react@4.3.1(vite@4.5.3(@types/node@20.14.9)(terser@5.31.1))': dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) '@types/babel__core': 7.20.5 - react-refresh: 0.14.0 - vite: 4.5.3(@types/node@18.19.31)(terser@5.30.4) + react-refresh: 0.14.2 + vite: 4.5.3(@types/node@20.14.9)(terser@5.31.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.2.1(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4))': + '@vitejs/plugin-react@4.3.1(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1))': dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) '@types/babel__core': 7.20.5 - react-refresh: 0.14.0 - vite: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + react-refresh: 0.14.2 + vite: 5.3.1(@types/node@18.19.39)(terser@5.31.1) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@1.4.0(vitest@1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.5(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.4 + istanbul-reports: 3.1.7 + magic-string: 0.30.10 + magicast: 0.3.4 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + test-exclude: 6.0.0 + v8-to-istanbul: 9.3.0 + vitest: 1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@1.4.0(vitest@1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4))': + '@vitest/coverage-v8@1.4.0(vitest@1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1))': dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.4 - istanbul-reports: 3.1.6 - magic-string: 0.30.7 - magicast: 0.3.3 - picocolors: 1.0.0 + istanbul-reports: 3.1.7 + magic-string: 0.30.10 + magicast: 0.3.4 + picocolors: 1.0.1 std-env: 3.7.0 - strip-literal: 2.0.0 + strip-literal: 2.1.0 test-exclude: 6.0.0 - v8-to-istanbul: 9.2.0 - vitest: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + v8-to-istanbul: 9.3.0 + vitest: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) transitivePeerDependencies: - supports-color - '@vitest/expect@1.4.0': + '@vitest/expect@1.6.0': dependencies: - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 chai: 4.4.1 - '@vitest/runner@1.4.0': + '@vitest/runner@1.6.0': dependencies: - '@vitest/utils': 1.4.0 + '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 - '@vitest/snapshot@1.4.0': + '@vitest/snapshot@1.6.0': dependencies: - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 - '@vitest/spy@1.4.0': + '@vitest/spy@1.6.0': dependencies: tinyspy: 2.2.1 - '@vitest/ui@1.4.0(vitest@1.4.0)': + '@vitest/ui@1.6.0(vitest@1.6.0)': dependencies: - '@vitest/utils': 1.4.0 + '@vitest/utils': 1.6.0 fast-glob: 3.3.2 - fflate: 0.8.1 - flatted: 3.2.9 + fflate: 0.8.2 + flatted: 3.3.1 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 sirv: 2.0.4 - vitest: 1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4) + vitest: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) - '@vitest/utils@1.4.0': + '@vitest/utils@1.6.0': dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -14512,50 +13126,36 @@ snapshots: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 - '@vue/compiler-core@3.3.4': + '@vue/compiler-core@3.4.30': dependencies: - '@babel/parser': 7.24.4 - '@vue/shared': 3.3.4 + '@babel/parser': 7.24.7 + '@vue/shared': 3.4.30 + entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 - '@vue/compiler-dom@3.3.4': + '@vue/compiler-dom@3.4.30': dependencies: - '@vue/compiler-core': 3.3.4 - '@vue/shared': 3.3.4 + '@vue/compiler-core': 3.4.30 + '@vue/shared': 3.4.30 - '@vue/language-core@1.8.27(typescript@5.4.4)': + '@vue/language-core@1.8.27(typescript@5.5.2)': dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.3.4 - '@vue/shared': 3.3.4 + '@vue/compiler-dom': 3.4.30 + '@vue/shared': 3.4.30 computeds: 0.0.1 - minimatch: 9.0.3 + minimatch: 9.0.5 muggle-string: 0.3.1 path-browserify: 1.0.1 - vue-template-compiler: 2.7.14 + vue-template-compiler: 2.7.16 optionalDependencies: - typescript: 5.4.4 - - '@vue/shared@3.3.4': {} - - '@xmldom/xmldom@0.8.6': {} + typescript: 5.5.2 - '@xstate/immer@0.3.3(immer@9.0.21)(xstate@4.38.3)': - dependencies: - immer: 9.0.21 - xstate: 4.38.3 + '@vue/shared@3.4.30': {} - '@xstate/react@1.6.3(@types/react@18.2.75)(react@18.2.0)(xstate@4.38.3)': - dependencies: - react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.75)(react@18.2.0) - use-subscription: 1.8.0(react@18.2.0) - optionalDependencies: - xstate: 4.38.3 - transitivePeerDependencies: - - '@types/react' + '@xmldom/xmldom@0.8.10': {} '@zxing/text-encoding@0.9.0': optional: true @@ -14571,24 +13171,28 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.12.0): dependencies: - acorn: 8.11.3 + acorn: 8.12.0 - acorn-walk@8.3.2: {} - - acorn@8.11.3: {} + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.0 - acorn@8.8.2: {} + acorn@8.12.0: {} aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.12.0): + ajv-formats@2.1.1(ajv@8.16.0): optionalDependencies: - ajv: 8.12.0 + ajv: 8.16.0 + + ajv-formats@3.0.1(ajv@8.16.0): + optionalDependencies: + ajv: 8.16.0 ajv@6.12.6: dependencies: @@ -14597,7 +13201,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + ajv@8.16.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -14649,26 +13253,24 @@ snapshots: archiver-utils@5.0.2: dependencies: - glob: 10.3.12 + glob: 10.4.2 graceful-fs: 4.2.11 is-stream: 2.0.1 lazystream: 1.0.1 lodash: 4.17.21 normalize-path: 3.0.0 - readable-stream: 4.3.0 + readable-stream: 4.5.2 archiver@7.0.1: dependencies: archiver-utils: 5.0.2 async: 3.2.5 buffer-crc32: 1.0.0 - readable-stream: 4.3.0 - readdir-glob: 1.1.2 - tar-stream: 3.1.6 + readable-stream: 4.5.2 + readdir-glob: 1.1.3 + tar-stream: 3.1.7 zip-stream: 6.0.1 - archy@1.0.0: {} - arg@4.1.3: {} arg@5.0.2: {} @@ -14679,13 +13281,13 @@ snapshots: argparse@2.0.1: {} - aria-hidden@1.2.3: + aria-hidden@1.2.4: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 aria-query@5.1.3: dependencies: - deep-equal: 2.2.0 + deep-equal: 2.2.3 aria-query@5.3.0: dependencies: @@ -14696,24 +13298,17 @@ snapshots: call-bind: 1.0.7 is-array-buffer: 3.0.4 - array-includes@3.1.7: + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 array-union@2.1.0: {} - array.prototype.filter@1.0.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.7 @@ -14723,19 +13318,13 @@ snapshots: es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - array.prototype.findlastindex@1.2.4: + array.prototype.findlastindex@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - - array.prototype.flat@1.3.1: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 array.prototype.flat@1.3.2: @@ -14759,7 +13348,7 @@ snapshots: es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - array.prototype.tosorted@1.1.3: + array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -14778,8 +13367,6 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - arrify@1.0.1: {} - asap@2.0.6: {} asn1@0.2.6: @@ -14794,7 +13381,7 @@ snapshots: ast-types@0.15.2: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 astral-regex@1.0.0: {} @@ -14810,18 +13397,18 @@ snapshots: atomic-sleep@1.0.0: {} - atomically@2.0.2: + atomically@2.0.3: dependencies: stubborn-fs: 1.2.5 - when-exit: 2.0.0 + when-exit: 2.1.2 autoprefixer@10.4.19(postcss@8.4.38): dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001607 + browserslist: 4.23.1 + caniuse-lite: 1.0.30001637 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-value-parser: 4.2.0 @@ -14829,88 +13416,54 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - avvio@8.3.0: + avvio@8.3.2: dependencies: '@fastify/error': 3.4.1 - archy: 1.0.0 - debug: 4.3.4(supports-color@8.1.1) fastq: 1.17.1 - transitivePeerDependencies: - - supports-color aws-sign2@0.7.0: {} - aws4@1.12.0: {} + aws4@1.13.0: {} - axe-core@4.7.0: {} + axe-core@4.9.1: {} - axobject-query@3.2.1: + axobject-query@3.1.1: dependencies: - dequal: 2.0.3 - - b4a@1.6.4: {} + deep-equal: 2.2.3 - babel-core@7.0.0-bridge.0(@babel/core@7.24.4): - dependencies: - '@babel/core': 7.24.4 + b4a@1.6.6: {} - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.23.9): + babel-core@7.0.0-bridge.0(@babel/core@7.24.7): dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.23.9) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.24.7 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.4): + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.7): dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) + '@babel/compat-data': 7.24.7 + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.23.9): - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.23.9) - core-js-compat: 3.36.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.4): - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) - core-js-compat: 3.36.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.23.9): + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7): dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.23.9) + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) + core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.4): + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.7): dependencies: - '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.23.9): - dependencies: - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.23.9) - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.4): + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.7): dependencies: - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - '@babel/core' @@ -14920,6 +13473,9 @@ snapshots: balanced-match@1.0.2: {} + bare-events@2.4.2: + optional: true + base64-js@1.5.1: {} bcrypt-pbkdf@1.0.2: @@ -14930,13 +13486,13 @@ snapshots: dependencies: is-windows: 1.0.2 - binary-extensions@2.2.0: {} + binary-extensions@2.3.0: {} bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.2 blob-util@2.0.2: {} @@ -14953,20 +13509,16 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.2: + braces@3.0.3: dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 - breakword@1.0.5: + browserslist@4.23.1: dependencies: - wcwidth: 1.0.1 - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001588 - electron-to-chromium: 1.4.673 + caniuse-lite: 1.0.30001637 + electron-to-chromium: 1.4.812 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + update-browserslist-db: 1.0.16(browserslist@4.23.1) bser@2.1.1: dependencies: @@ -15006,7 +13558,7 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - set-function-length: 1.2.1 + set-function-length: 1.2.2 caller-callsite@2.0.0: dependencies: @@ -15022,19 +13574,11 @@ snapshots: camelcase-css@2.0.1: {} - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - camelcase@5.3.1: {} camelcase@6.3.0: {} - caniuse-lite@1.0.30001588: {} - - caniuse-lite@1.0.30001607: {} + caniuse-lite@1.0.30001637: {} caseless@0.12.0: {} @@ -15044,7 +13588,7 @@ snapshots: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 @@ -15082,10 +13626,10 @@ snapshots: check-more-types@2.24.0: {} - chokidar@3.5.3: + chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -15096,7 +13640,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -15105,13 +13649,11 @@ snapshots: ci-info@2.0.0: {} - ci-info@3.8.0: {} - ci-info@3.9.0: {} ci-info@4.0.0: {} - classnames@2.3.2: {} + classnames@2.5.1: {} clean-regexp@1.0.0: dependencies: @@ -15123,9 +13665,9 @@ snapshots: dependencies: restore-cursor: 3.1.0 - cli-spinners@2.7.0: {} + cli-spinners@2.9.2: {} - cli-table3@0.6.3: + cli-table3@0.6.5: dependencies: string-width: 4.2.3 optionalDependencies: @@ -15160,7 +13702,7 @@ snapshots: clsx@1.2.1: {} - clsx@2.1.0: {} + clsx@2.1.1: {} color-convert@1.9.3: dependencies: @@ -15202,7 +13744,7 @@ snapshots: crc32-stream: 6.0.0 is-stream: 2.0.1 normalize-path: 3.0.0 - readable-stream: 4.3.0 + readable-stream: 4.5.2 compressible@2.0.18: dependencies: @@ -15230,16 +13772,18 @@ snapshots: conf@12.0.0: dependencies: - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - atomically: 2.0.2 + ajv: 8.16.0 + ajv-formats: 2.1.1(ajv@8.16.0) + atomically: 2.0.3 debounce-fn: 5.1.2 dot-prop: 8.0.2 env-paths: 3.0.0 json-schema-typed: 8.0.1 - semver: 7.5.4 + semver: 7.6.2 uint8array-extras: 0.3.0 + confbox@0.1.7: {} + connect@3.7.0: dependencies: debug: 2.6.9 @@ -15253,11 +13797,11 @@ snapshots: cookie@0.4.2: {} - cookie@0.5.0: {} + cookie@0.6.0: {} - core-js-compat@3.36.1: + core-js-compat@3.37.1: dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 core-util-is@1.0.2: {} @@ -15275,7 +13819,7 @@ snapshots: crc32-stream@6.0.0: dependencies: crc-32: 1.2.2 - readable-stream: 4.3.0 + readable-stream: 4.5.2 create-require@1.1.1: {} @@ -15305,26 +13849,13 @@ snapshots: cssesc@3.0.0: {} - csstype@3.1.1: {} - - csv-generate@3.4.3: {} - - csv-parse@4.16.3: {} + csstype@3.1.3: {} - csv-stringify@5.6.5: {} - - csv@5.5.3: - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - - cypress-real-events@1.12.0(cypress@13.7.2): + cypress-real-events@1.13.0(cypress@13.12.0): dependencies: - cypress: 13.7.2 + cypress: 13.12.0 - cypress@13.7.2: + cypress@13.12.0: dependencies: '@cypress/request': 3.0.1 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) @@ -15338,11 +13869,11 @@ snapshots: chalk: 4.1.2 check-more-types: 2.24.0 cli-cursor: 3.1.0 - cli-table3: 0.6.3 + cli-table3: 0.6.5 commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) + dayjs: 1.11.11 + debug: 4.3.5(supports-color@8.1.1) enquirer: 2.4.1 eventemitter2: 6.4.7 execa: 4.1.0 @@ -15363,9 +13894,9 @@ snapshots: process: 0.11.10 proxy-from-env: 1.0.0 request-progress: 3.0.0 - semver: 7.6.0 + semver: 7.6.2 supports-color: 8.1.1 - tmp: 0.2.1 + tmp: 0.2.3 untildify: 4.0.0 yauzl: 2.10.0 @@ -15451,13 +13982,9 @@ snapshots: dataloader@1.4.0: {} - date-fns@2.30.0: - dependencies: - '@babel/runtime': 7.23.9 - date-fns@3.6.0: {} - dayjs@1.11.10: {} + dayjs@1.11.11: {} de-indent@1.0.2: {} @@ -15477,46 +14004,42 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.3.4(supports-color@8.1.1): + debug@4.3.5(supports-color@8.1.1): dependencies: ms: 2.1.2 optionalDependencies: supports-color: 8.1.1 - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - decamelize@1.2.0: {} decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 - deep-eql@4.1.3: + deep-eql@4.1.4: dependencies: type-detect: 4.0.8 - deep-equal@2.2.0: + deep-equal@2.2.3: dependencies: + array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 es-get-iterator: 1.1.3 get-intrinsic: 1.2.4 is-arguments: 1.1.1 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 is-date-object: 1.0.5 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 isarray: 2.0.5 - object-is: 1.1.5 + object-is: 1.1.6 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 side-channel: 1.0.6 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.9 + which-collection: 1.0.2 + which-typed-array: 1.1.15 deep-is@0.1.4: {} @@ -15571,7 +14094,7 @@ snapshots: diff@4.0.2: {} - diff@5.1.0: {} + diff@5.2.0: {} dir-glob@3.0.1: dependencies: @@ -15623,14 +14146,23 @@ snapshots: dotenv@8.6.0: {} - downshift@6.1.12(react@18.2.0): + downshift@6.1.12(react@18.3.1): dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 compute-scroll-into-view: 1.0.20 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 react-is: 17.0.2 - tslib: 2.6.2 + tslib: 2.6.3 + + downshift@9.0.6(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + compute-scroll-into-view: 3.1.0 + prop-types: 15.8.1 + react: 18.3.1 + react-is: 18.2.0 + tslib: 2.6.3 eastasianwidth@0.2.0: {} @@ -15641,7 +14173,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.4.673: {} + electron-to-chromium@1.4.812: {} emoji-regex@8.0.0: {} @@ -15653,15 +14185,11 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.15.0: + enhanced-resolve@5.17.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - enquirer@2.3.6: - dependencies: - ansi-colors: 4.1.3 - enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -15673,7 +14201,7 @@ snapshots: env-paths@3.0.0: {} - envinfo@7.12.0: {} + envinfo@7.13.0: {} error-ex@1.3.2: dependencies: @@ -15705,7 +14233,7 @@ snapshots: function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.3 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 @@ -15721,7 +14249,7 @@ snapshots: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 @@ -15737,8 +14265,6 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - es-array-method-boxes-properly@1.0.0: {} - es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -15751,13 +14277,13 @@ snapshots: get-intrinsic: 1.2.4 has-symbols: 1.0.3 is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - es-iterator-helpers@1.0.18: + es-iterator-helpers@1.0.19: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -15766,7 +14292,7 @@ snapshots: es-set-tostringtag: 2.0.3 function-bind: 1.1.2 get-intrinsic: 1.2.4 - globalthis: 1.0.3 + globalthis: 1.0.4 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 @@ -15821,33 +14347,33 @@ snapshots: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - esbuild@0.20.2: + esbuild@0.21.5: optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - - escalade@3.1.1: {} + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.1.2: {} escape-html@1.0.3: {} @@ -15859,10 +14385,10 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.0(eslint@8.57.0): + eslint-compat-utils@0.5.1(eslint@8.57.0): dependencies: eslint: 8.57.0 - semver: 7.6.0 + semver: 7.6.2 eslint-config-prettier@9.1.0(eslint@8.57.0): dependencies: @@ -15871,21 +14397,21 @@ snapshots: eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7(supports-color@8.1.1) - is-core-module: 2.13.1 + is-core-module: 2.14.0 resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0): dependencies: - debug: 4.3.4(supports-color@8.1.1) - enhanced-resolve: 5.15.0 + debug: 4.3.5(supports-color@8.1.1) + enhanced-resolve: 5.17.0 eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) fast-glob: 3.3.2 - get-tsconfig: 4.7.2 - is-core-module: 2.13.1 + get-tsconfig: 4.7.5 + is-core-module: 2.14.0 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -15893,14 +14419,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4) + '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.2) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -15908,65 +14434,65 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 eslint: 8.57.0 - ignore: 5.2.4 + ignore: 5.3.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.4 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - hasown: 2.0.1 - is-core-module: 2.13.1 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.14.0 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.2 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4) + '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsonc@2.15.0(eslint@8.57.0): + eslint-plugin-jsonc@2.16.0(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) eslint: 8.57.0 - eslint-compat-utils: 0.5.0(eslint@8.57.0) + eslint-compat-utils: 0.5.1(eslint@8.57.0) espree: 9.6.1 graphemer: 1.4.0 - jsonc-eslint-parser: 2.1.0 + jsonc-eslint-parser: 2.4.0 natural-compare: 1.4.0 synckit: 0.6.2 - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0): dependencies: - '@babel/runtime': 7.23.9 - aria-query: 5.3.0 - array-includes: 3.1.7 + aria-query: 5.1.3 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 + axe-core: 4.9.1 + axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.18 + es-iterator-helpers: 1.0.19 eslint: 8.57.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.7 + object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.0 eslint-plugin-lodash@7.4.0(eslint@8.57.0): dependencies: @@ -15989,40 +14515,40 @@ snapshots: lodash: 4.17.21 metric-lcs: 0.1.2 - eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5): + eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.2): dependencies: eslint: 8.57.0 - prettier: 3.2.5 + prettier: 3.3.2 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 optionalDependencies: eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-plugin-promise@6.1.1(eslint@8.57.0): + eslint-plugin-promise@6.2.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-react@7.34.1(eslint@8.57.0): + eslint-plugin-react@7.34.3(eslint@8.57.0): dependencies: - array-includes: 3.1.7 + 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 + array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.0.18 + es-iterator-helpers: 1.0.19 eslint: 8.57.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.8 - object.fromentries: 2.0.7 + object.fromentries: 2.0.8 object.hasown: 1.1.4 - object.values: 1.1.7 + object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 @@ -16030,12 +14556,12 @@ snapshots: eslint-plugin-unicorn@51.0.1(eslint@8.57.0): dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint/eslintrc': 2.1.4 ci-info: 4.0.0 clean-regexp: 1.0.0 - core-js-compat: 3.36.1 + core-js-compat: 3.37.1 eslint: 8.57.0 esquery: 1.5.0 indent-string: 4.0.0 @@ -16045,19 +14571,19 @@ snapshots: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.6.0 + semver: 7.6.2 strip-indent: 3.0.0 transitivePeerDependencies: - supports-color eslint-plugin-yml@1.14.0(eslint@8.57.0): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) eslint: 8.57.0 - eslint-compat-utils: 0.5.0(eslint@8.57.0) + eslint-compat-utils: 0.5.1(eslint@8.57.0) lodash: 4.17.21 natural-compare: 1.4.0 - yaml-eslint-parser: 1.2.2 + yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - supports-color @@ -16071,7 +14597,7 @@ snapshots: eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.6.1 + '@eslint-community/regexpp': 4.10.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -16081,7 +14607,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -16093,9 +14619,9 @@ snapshots: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.19.0 + globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -16105,7 +14631,7 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -16113,8 +14639,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -16197,7 +14723,7 @@ snapshots: extract-zip@2.0.1(supports-color@8.1.1): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -16213,7 +14739,7 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-diff@1.2.0: {} + fast-diff@1.3.0: {} fast-fifo@1.3.2: {} @@ -16223,56 +14749,54 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 fast-json-stable-stringify@2.1.0: {} - fast-json-stringify@5.9.1: + fast-json-stringify@5.16.1: dependencies: - '@fastify/deepmerge': 1.3.0 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) + '@fastify/merge-json-schemas': 0.1.1 + ajv: 8.16.0 + ajv-formats: 3.0.1(ajv@8.16.0) fast-deep-equal: 3.1.3 - fast-uri: 2.2.0 + fast-uri: 2.4.0 json-schema-ref-resolver: 1.0.1 - rfdc: 1.3.1 + rfdc: 1.4.1 fast-levenshtein@2.0.6: {} - fast-querystring@1.1.0: + fast-querystring@1.1.2: dependencies: fast-decode-uri-component: 1.0.1 - fast-redact@3.1.2: {} + fast-redact@3.5.0: {} - fast-uri@2.2.0: {} + fast-uri@2.4.0: {} - fast-xml-parser@4.3.6: + fast-xml-parser@4.4.0: dependencies: strnum: 1.0.5 - fastify-plugin@4.5.0: {} + fastify-plugin@4.5.1: {} - fastify@4.26.2: + fastify@4.28.0: dependencies: - '@fastify/ajv-compiler': 3.5.0 + '@fastify/ajv-compiler': 3.6.0 '@fastify/error': 3.4.1 '@fastify/fast-json-stringify-compiler': 4.3.0 abstract-logging: 2.0.1 - avvio: 8.3.0 + avvio: 8.3.2 fast-content-type-parse: 1.1.0 - fast-json-stringify: 5.9.1 - find-my-way: 8.1.0 - light-my-request: 5.11.0 - pino: 8.19.0 + fast-json-stringify: 5.16.1 + find-my-way: 8.2.0 + light-my-request: 5.13.0 + pino: 9.2.0 process-warning: 3.0.0 proxy-addr: 2.0.7 - rfdc: 1.3.1 + rfdc: 1.4.1 secure-json-parse: 2.7.0 - semver: 7.6.0 - toad-cache: 3.3.0 - transitivePeerDependencies: - - supports-color + semver: 7.6.2 + toad-cache: 3.7.0 fastq@1.17.1: dependencies: @@ -16289,9 +14813,9 @@ snapshots: fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 + web-streams-polyfill: 3.3.3 - fflate@0.8.1: {} + fflate@0.8.2: {} figures@3.2.0: dependencies: @@ -16299,9 +14823,9 @@ snapshots: file-entry-cache@6.0.1: dependencies: - flat-cache: 3.0.4 + flat-cache: 3.2.0 - fill-range@7.0.1: + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -16323,11 +14847,11 @@ snapshots: make-dir: 2.1.0 pkg-dir: 3.0.0 - find-my-way@8.1.0: + find-my-way@8.2.0: dependencies: fast-deep-equal: 3.1.3 - fast-querystring: 1.1.0 - safe-regex2: 2.0.0 + fast-querystring: 1.1.2 + safe-regex2: 3.1.0 find-root@1.1.0: {} @@ -16352,19 +14876,20 @@ snapshots: find-yarn-workspace-root2@1.2.16: dependencies: - micromatch: 4.0.5 + micromatch: 4.0.7 pkg-dir: 4.2.0 - flat-cache@3.0.4: + flat-cache@3.2.0: dependencies: - flatted: 3.2.9 + flatted: 3.3.1 + keyv: 4.5.4 rimraf: 3.0.2 - flatted@3.2.9: {} + flatted@3.3.1: {} flow-enums-runtime@0.0.6: {} - flow-parser@0.234.0: {} + flow-parser@0.238.2: {} fontfaceobserver@2.1.0: {} @@ -16372,7 +14897,7 @@ snapshots: dependencies: is-callable: 1.2.7 - foreground-child@3.1.1: + foreground-child@3.2.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 @@ -16393,13 +14918,13 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@10.18.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - tslib: 2.6.2 + tslib: 2.6.3 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) fresh@0.5.2: {} @@ -16407,9 +14932,9 @@ snapshots: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 + universalify: 2.0.1 - fs-extra@11.1.1: + fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 @@ -16482,7 +15007,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.7.2: + get-tsconfig@4.7.5: dependencies: resolve-pkg-maps: 1.0.0 @@ -16504,22 +15029,14 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.3.12: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.2 - - glob@7.1.6: + glob@10.4.2: dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + foreground-child: 3.2.1 + jackspeak: 3.4.0 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 glob@7.2.3: dependencies: @@ -16536,20 +15053,21 @@ snapshots: globals@11.12.0: {} - globals@13.19.0: + globals@13.24.0: dependencies: type-fest: 0.20.2 - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.0.1 globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.2.4 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 @@ -16559,11 +15077,9 @@ snapshots: graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} - graphemer@1.4.0: {} - graphql@16.8.1: {} + graphql@16.9.0: {} happy-dom@13.10.1: dependencies: @@ -16571,8 +15087,6 @@ snapshots: webidl-conversions: 7.0.0 whatwg-mimetype: 3.0.0 - hard-rejection@2.1.0: {} - has-bigints@1.0.2: {} has-flag@3.0.0: {} @@ -16591,10 +15105,6 @@ snapshots: dependencies: has-symbols: 1.0.3 - hasown@2.0.1: - dependencies: - function-bind: 1.1.2 - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -16655,15 +15165,13 @@ snapshots: ieee754@1.2.1: {} - ignore@5.2.4: {} + ignore@5.3.1: {} image-size@1.1.1: dependencies: queue: 6.0.2 - immer@10.0.4: {} - - immer@9.0.21: {} + immer@10.1.1: {} import-fresh@2.0.0: dependencies: @@ -16690,7 +15198,7 @@ snapshots: ini@2.0.0: {} - inquirer@8.2.5: + inquirer@8.2.6: dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -16706,7 +15214,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 - wrap-ansi: 7.0.0 + wrap-ansi: 6.2.0 internal-slot@1.0.7: dependencies: @@ -16716,12 +15224,12 @@ snapshots: internmap@2.0.3: {} - intl-messageformat@10.3.3: + intl-messageformat@10.5.14: dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/fast-memoize': 2.0.1 - '@formatjs/icu-messageformat-parser': 2.3.0 - tslib: 2.6.2 + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.8 + tslib: 2.6.3 invariant@2.2.4: dependencies: @@ -16741,12 +15249,6 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-array-buffer@3.0.2: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - is-typed-array: 1.1.13 - is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 @@ -16764,7 +15266,7 @@ snapshots: is-binary-path@2.1.0: dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 is-boolean-object@1.1.2: dependencies: @@ -16783,7 +15285,7 @@ snapshots: dependencies: ci-info: 3.9.0 - is-core-module@2.13.1: + is-core-module@2.14.0: dependencies: hasown: 2.0.2 @@ -16836,7 +15338,7 @@ snapshots: is-interactive@1.0.0: {} - is-map@2.0.2: {} + is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -16852,8 +15354,6 @@ snapshots: is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} - is-plain-obj@4.1.0: {} is-plain-object@2.0.4: @@ -16869,11 +15369,7 @@ snapshots: is-regexp@3.1.0: {} - is-set@2.0.2: {} - - is-shared-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.7 + is-set@2.0.3: {} is-shared-array-buffer@1.0.3: dependencies: @@ -16903,13 +15399,13 @@ snapshots: is-unicode-supported@0.1.0: {} - is-weakmap@2.0.1: {} + is-weakmap@2.0.2: {} is-weakref@1.0.2: dependencies: call-bind: 1.0.7 - is-weakset@2.0.2: + is-weakset@2.0.3: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 @@ -16926,8 +15422,6 @@ snapshots: dependencies: is-inside-container: 1.0.0 - isarray@0.0.1: {} - isarray@1.0.0: {} isarray@2.0.5: {} @@ -16951,12 +15445,12 @@ snapshots: istanbul-lib-source-maps@5.0.4: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.6: + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -16969,12 +15463,12 @@ snapshots: reflect.getprototypeof: 1.0.6 set-function-name: 2.0.2 - its-fine@1.2.5(react@18.2.0): + its-fine@1.2.5(react@18.3.1): dependencies: '@types/react-reconciler': 0.28.8 - react: 18.2.0 + react: 18.3.1 - jackspeak@2.3.6: + jackspeak@3.4.0: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: @@ -16985,7 +15479,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.31 + '@types/node': 18.19.39 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -16993,12 +15487,12 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.7 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -17006,13 +15500,13 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.31 + '@types/node': 18.19.39 jest-util: 29.7.0 jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.31 + '@types/node': 18.19.39 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -17029,16 +15523,16 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@1.21.0: {} + jiti@1.21.6: {} jju@1.4.0: {} - joi@17.13.0: + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -17046,28 +15540,28 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - jotai-optics@0.3.2(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(optics-ts@2.4.1): + jotai-optics@0.3.2(jotai@2.8.3(@types/react@18.3.3)(react@18.3.1))(optics-ts@2.4.1): dependencies: - jotai: 2.8.0(@types/react@18.2.75)(react@18.2.0) + jotai: 2.8.3(@types/react@18.3.3)(react@18.3.1) optics-ts: 2.4.1 - jotai-x@1.2.2(@types/react@18.2.75)(jotai@2.8.0(@types/react@18.2.75)(react@18.2.0))(react@18.2.0): + jotai-x@1.2.3(@types/react@18.3.3)(jotai@2.8.3(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): dependencies: - jotai: 2.8.0(@types/react@18.2.75)(react@18.2.0) + jotai: 2.8.3(@types/react@18.3.3)(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - react: 18.2.0 + '@types/react': 18.3.3 + react: 18.3.1 - jotai@2.8.0(@types/react@18.2.75)(react@18.2.0): + jotai@2.8.3(@types/react@18.3.3)(react@18.3.1): optionalDependencies: - '@types/react': 18.2.75 - react: 18.2.0 + '@types/react': 18.3.3 + react: 18.3.1 js-levenshtein@1.1.6: {} js-tokens@4.0.0: {} - js-tokens@8.0.3: {} + js-tokens@9.0.0: {} js-yaml@3.14.1: dependencies: @@ -17084,48 +15578,23 @@ snapshots: jsc-safe-url@0.2.4: {} - jscodeshift@0.14.0(@babel/preset-env@7.24.4(@babel/core@7.23.9)): - dependencies: - '@babel/core': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.4) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) - '@babel/preset-env': 7.24.4(@babel/core@7.23.9) - '@babel/preset-flow': 7.24.1(@babel/core@7.24.4) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.4) - '@babel/register': 7.23.7(@babel/core@7.24.4) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.4) - chalk: 4.1.2 - flow-parser: 0.234.0 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.21.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 - transitivePeerDependencies: - - supports-color - - jscodeshift@0.14.0(@babel/preset-env@7.24.4(@babel/core@7.24.4)): - dependencies: - '@babel/core': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.4) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) - '@babel/preset-env': 7.24.4(@babel/core@7.24.4) - '@babel/preset-flow': 7.24.1(@babel/core@7.24.4) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.4) - '@babel/register': 7.23.7(@babel/core@7.24.4) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.4) + jscodeshift@0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.7)): + dependencies: + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + '@babel/preset-flow': 7.24.7(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/register': 7.24.6(@babel/core@7.24.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.7) chalk: 4.1.2 - flow-parser: 0.234.0 + flow-parser: 0.238.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.7 neo-async: 2.6.2 node-dir: 0.1.17 recast: 0.21.5 @@ -17140,6 +15609,8 @@ snapshots: jsesc@3.0.2: {} + json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} json-parse-even-better-errors@2.3.1: {} @@ -17166,14 +15637,12 @@ snapshots: json5@2.2.3: {} - jsonc-eslint-parser@2.1.0: + jsonc-eslint-parser@2.4.0: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.6.0 - - jsonc-parser@3.2.1: {} + semver: 7.6.2 jsonfile@4.0.0: optionalDependencies: @@ -17194,12 +15663,16 @@ snapshots: jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 + + just-extend@6.2.0: {} - just-extend@4.2.1: {} + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 kind-of@6.0.3: {} @@ -17209,19 +15682,19 @@ snapshots: kolorist@1.8.0: {} - konva@9.3.6: {} + konva@9.3.12: {} - language-subtag-registry@0.3.22: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: dependencies: - language-subtag-registry: 0.3.22 + language-subtag-registry: 0.3.23 lazy-ass@1.6.0: {} lazystream@1.0.1: dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 leven@3.1.0: {} @@ -17230,10 +15703,10 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - light-my-request@5.11.0: + light-my-request@5.13.0: dependencies: - cookie: 0.5.0 - process-warning: 2.2.0 + cookie: 0.6.0 + process-warning: 3.0.0 set-cookie-parser: 2.6.0 lighthouse-logger@1.4.2: @@ -17245,6 +15718,8 @@ snapshots: lilconfig@2.1.0: {} + lilconfig@3.1.2: {} + lines-and-columns@1.2.4: {} listr2@3.14.0(enquirer@2.4.1): @@ -17253,7 +15728,7 @@ snapshots: colorette: 2.0.20 log-update: 4.0.0 p-map: 4.0.0 - rfdc: 1.3.1 + rfdc: 1.4.1 rxjs: 7.8.1 through: 2.3.8 wrap-ansi: 7.0.0 @@ -17269,8 +15744,8 @@ snapshots: local-pkg@0.5.0: dependencies: - mlly: 1.6.1 - pkg-types: 1.0.3 + mlly: 1.7.1 + pkg-types: 1.1.1 locate-path@3.0.0: dependencies: @@ -17324,7 +15799,7 @@ snapshots: logkitty@0.7.1: dependencies: ansi-fragments: 0.2.1 - dayjs: 1.11.10 + dayjs: 1.11.11 yargs: 15.4.1 longest-streak@3.1.0: {} @@ -17337,7 +15812,7 @@ snapshots: dependencies: get-func-name: 2.0.2 - lru-cache@10.2.0: {} + lru-cache@10.2.2: {} lru-cache@4.1.5: dependencies: @@ -17358,19 +15833,15 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 - magic-string@0.30.7: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - magic-string@0.30.9: + magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - magicast@0.3.3: + magicast@0.3.4: dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - source-map-js: 1.0.2 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + source-map-js: 1.2.0 make-dir@2.1.0: dependencies: @@ -17379,7 +15850,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.0 + semver: 7.6.2 make-error@1.3.6: {} @@ -17387,10 +15858,6 @@ snapshots: dependencies: tmpl: 1.0.5 - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - markdown-table@3.0.3: {} marky@1.2.5: {} @@ -17399,14 +15866,14 @@ snapshots: mdast-util-find-and-replace@2.2.2: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 escape-string-regexp: 5.0.0 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 mdast-util-from-markdown@0.8.5: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 mdast-util-to-string: 2.0.0 micromark: 2.11.4 parse-entities: 2.0.0 @@ -17414,18 +15881,18 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-from-markdown@1.3.0: + mdast-util-from-markdown@1.3.1: dependencies: - '@types/mdast': 3.0.10 - '@types/unist': 2.0.6 + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 decode-named-character-reference: 1.0.2 mdast-util-to-string: 3.2.0 - micromark: 3.1.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-decode-string: 1.0.2 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 unist-util-stringify-position: 3.0.3 uvu: 0.5.6 transitivePeerDependencies: @@ -17433,39 +15900,39 @@ snapshots: mdast-util-gfm-autolink-literal@1.0.3: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 ccount: 2.0.1 mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.1.0 + micromark-util-character: 1.2.0 mdast-util-gfm-footnote@1.0.2: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.0.0 + micromark-util-normalize-identifier: 1.1.0 mdast-util-gfm-strikethrough@1.0.3: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 mdast-util-gfm-table@1.0.7: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color mdast-util-gfm-task-list-item@1.0.2: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 mdast-util-gfm@2.0.2: dependencies: - mdast-util-from-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.1 mdast-util-gfm-autolink-literal: 1.0.3 mdast-util-gfm-footnote: 1.0.2 mdast-util-gfm-strikethrough: 1.0.3 @@ -17477,17 +15944,17 @@ snapshots: mdast-util-phrasing@3.0.1: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 unist-util-is: 5.2.1 mdast-util-to-markdown@1.5.0: dependencies: - '@types/mdast': 3.0.10 - '@types/unist': 2.0.6 + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 longest-streak: 3.1.0 mdast-util-phrasing: 3.0.1 mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.0.2 + micromark-util-decode-string: 1.1.0 unist-util-visit: 4.1.2 zwitch: 2.0.4 @@ -17495,66 +15962,52 @@ snapshots: mdast-util-to-string@3.2.0: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 memoize-one@5.2.1: {} - meow@6.1.1: - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - merge-stream@2.0.0: {} merge2@1.4.1: {} metric-lcs@0.1.2: {} - metro-babel-transformer@0.80.8: + metro-babel-transformer@0.80.9: dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.24.7 hermes-parser: 0.20.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-cache-key@0.80.8: {} + metro-cache-key@0.80.9: {} - metro-cache@0.80.8: + metro-cache@0.80.9: dependencies: - metro-core: 0.80.8 + metro-core: 0.80.9 rimraf: 3.0.2 - metro-config@0.80.8: + metro-config@0.80.9: dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 jest-validate: 29.7.0 - metro: 0.80.8 - metro-cache: 0.80.8 - metro-core: 0.80.8 - metro-runtime: 0.80.8 + metro: 0.80.9 + metro-cache: 0.80.9 + metro-core: 0.80.9 + metro-runtime: 0.80.9 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - metro-core@0.80.8: + metro-core@0.80.9: dependencies: lodash.throttle: 4.1.1 - metro-resolver: 0.80.8 + metro-resolver: 0.80.9 - metro-file-map@0.80.8: + metro-file-map@0.80.9: dependencies: anymatch: 3.1.3 debug: 2.6.9 @@ -17562,7 +16015,7 @@ snapshots: graceful-fs: 4.2.11 invariant: 2.2.4 jest-worker: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.7 node-abort-controller: 3.1.1 nullthrows: 1.1.1 walker: 1.0.8 @@ -17571,33 +16024,33 @@ snapshots: transitivePeerDependencies: - supports-color - metro-minify-terser@0.80.8: + metro-minify-terser@0.80.9: dependencies: - terser: 5.30.4 + terser: 5.31.1 - metro-resolver@0.80.8: {} + metro-resolver@0.80.9: {} - metro-runtime@0.80.8: + metro-runtime@0.80.9: dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 - metro-source-map@0.80.8: + metro-source-map@0.80.9: dependencies: - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 invariant: 2.2.4 - metro-symbolicate: 0.80.8 + metro-symbolicate: 0.80.9 nullthrows: 1.1.1 - ob1: 0.80.8 + ob1: 0.80.9 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-symbolicate@0.80.8: + metro-symbolicate@0.80.9: dependencies: invariant: 2.2.4 - metro-source-map: 0.80.8 + metro-source-map: 0.80.9 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 @@ -17605,29 +16058,29 @@ snapshots: transitivePeerDependencies: - supports-color - metro-transform-plugins@0.80.8: + metro-transform-plugins@0.80.9: dependencies: - '@babel/core': 7.24.4 - '@babel/generator': 7.24.4 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 + '@babel/core': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-transform-worker@0.80.8: - dependencies: - '@babel/core': 7.24.4 - '@babel/generator': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - metro: 0.80.8 - metro-babel-transformer: 0.80.8 - metro-cache: 0.80.8 - metro-cache-key: 0.80.8 - metro-minify-terser: 0.80.8 - metro-source-map: 0.80.8 - metro-transform-plugins: 0.80.8 + metro-transform-worker@0.80.9: + dependencies: + '@babel/core': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + metro: 0.80.9 + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-minify-terser: 0.80.9 + metro-source-map: 0.80.9 + metro-transform-plugins: 0.80.9 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -17635,15 +16088,15 @@ snapshots: - supports-color - utf-8-validate - metro@0.80.8: + metro@0.80.9: dependencies: - '@babel/code-frame': 7.24.2 - '@babel/core': 7.24.4 - '@babel/generator': 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/core': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -17658,236 +16111,235 @@ snapshots: jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.80.8 - metro-cache: 0.80.8 - metro-cache-key: 0.80.8 - metro-config: 0.80.8 - metro-core: 0.80.8 - metro-file-map: 0.80.8 - metro-resolver: 0.80.8 - metro-runtime: 0.80.8 - metro-source-map: 0.80.8 - metro-symbolicate: 0.80.8 - metro-transform-plugins: 0.80.8 - metro-transform-worker: 0.80.8 + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-config: 0.80.9 + metro-core: 0.80.9 + metro-file-map: 0.80.9 + metro-resolver: 0.80.9 + metro-runtime: 0.80.9 + metro-source-map: 0.80.9 + metro-symbolicate: 0.80.9 + metro-transform-plugins: 0.80.9 + metro-transform-worker: 0.80.9 mime-types: 2.1.35 - node-fetch: 2.6.9 + node-fetch: 2.7.0 nullthrows: 1.1.1 rimraf: 3.0.2 serialize-error: 2.1.0 source-map: 0.5.7 strip-ansi: 6.0.1 throat: 5.0.0 - ws: 7.5.9 - yargs: 17.7.1 + ws: 7.5.10 + yargs: 17.7.2 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - micromark-core-commonmark@1.0.6: + micromark-core-commonmark@1.1.0: dependencies: decode-named-character-reference: 1.0.2 - micromark-factory-destination: 1.0.0 - micromark-factory-label: 1.0.2 - micromark-factory-space: 1.0.0 - micromark-factory-title: 1.0.2 - micromark-factory-whitespace: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-chunked: 1.0.0 - micromark-util-classify-character: 1.0.0 - micromark-util-html-tag-name: 1.1.0 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-subtokenize: 1.0.2 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-extension-gfm-autolink-literal@1.0.4: + micromark-extension-gfm-autolink-literal@1.0.5: dependencies: - micromark-util-character: 1.1.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 - micromark-extension-gfm-footnote@1.1.0: + micromark-extension-gfm-footnote@1.1.2: dependencies: - micromark-core-commonmark: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-extension-gfm-strikethrough@1.0.5: + micromark-extension-gfm-strikethrough@1.0.7: dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-classify-character: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-extension-gfm-table@1.0.6: + micromark-extension-gfm-table@1.0.7: dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 micromark-extension-gfm-tagfilter@1.0.2: dependencies: - micromark-util-types: 1.0.2 + micromark-util-types: 1.1.0 - micromark-extension-gfm-task-list-item@1.0.4: + micromark-extension-gfm-task-list-item@1.0.5: dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-extension-gfm@2.0.2: + micromark-extension-gfm@2.0.3: dependencies: - micromark-extension-gfm-autolink-literal: 1.0.4 - micromark-extension-gfm-footnote: 1.1.0 - micromark-extension-gfm-strikethrough: 1.0.5 - micromark-extension-gfm-table: 1.0.6 + micromark-extension-gfm-autolink-literal: 1.0.5 + micromark-extension-gfm-footnote: 1.1.2 + micromark-extension-gfm-strikethrough: 1.0.7 + micromark-extension-gfm-table: 1.0.7 micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.4 - micromark-util-combine-extensions: 1.0.0 - micromark-util-types: 1.0.2 + micromark-extension-gfm-task-list-item: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 - micromark-factory-destination@1.0.0: + micromark-factory-destination@1.1.0: dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 - micromark-factory-label@1.0.2: + micromark-factory-label@1.1.0: dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-factory-space@1.0.0: + micromark-factory-space@1.1.0: dependencies: - micromark-util-character: 1.1.0 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 - micromark-factory-title@1.0.2: + micromark-factory-title@1.1.0: dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 - micromark-factory-whitespace@1.0.0: + micromark-factory-whitespace@1.1.0: dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 - micromark-util-character@1.1.0: + micromark-util-character@1.2.0: dependencies: - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 - micromark-util-chunked@1.0.0: + micromark-util-chunked@1.1.0: dependencies: - micromark-util-symbol: 1.0.1 + micromark-util-symbol: 1.1.0 - micromark-util-classify-character@1.0.0: + micromark-util-classify-character@1.1.0: dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 - micromark-util-combine-extensions@1.0.0: + micromark-util-combine-extensions@1.1.0: dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-types: 1.0.2 + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 - micromark-util-decode-numeric-character-reference@1.0.0: + micromark-util-decode-numeric-character-reference@1.1.0: dependencies: - micromark-util-symbol: 1.0.1 + micromark-util-symbol: 1.1.0 - micromark-util-decode-string@1.0.2: + micromark-util-decode-string@1.1.0: dependencies: decode-named-character-reference: 1.0.2 - micromark-util-character: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-symbol: 1.0.1 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 - micromark-util-encode@1.0.1: {} + micromark-util-encode@1.1.0: {} - micromark-util-html-tag-name@1.1.0: {} + micromark-util-html-tag-name@1.2.0: {} - micromark-util-normalize-identifier@1.0.0: + micromark-util-normalize-identifier@1.1.0: dependencies: - micromark-util-symbol: 1.0.1 + micromark-util-symbol: 1.1.0 - micromark-util-resolve-all@1.0.0: + micromark-util-resolve-all@1.1.0: dependencies: - micromark-util-types: 1.0.2 + micromark-util-types: 1.1.0 - micromark-util-sanitize-uri@1.1.0: + micromark-util-sanitize-uri@1.2.0: dependencies: - micromark-util-character: 1.1.0 - micromark-util-encode: 1.0.1 - micromark-util-symbol: 1.0.1 + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 - micromark-util-subtokenize@1.0.2: + micromark-util-subtokenize@1.1.0: dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-util-symbol@1.0.1: {} + micromark-util-symbol@1.1.0: {} - micromark-util-types@1.0.2: {} + micromark-util-types@1.1.0: {} micromark@2.11.4: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color - micromark@3.1.0: + micromark@3.2.0: dependencies: - '@types/debug': 4.1.7 - debug: 4.3.4(supports-color@8.1.1) + '@types/debug': 4.1.12 + debug: 4.3.5(supports-color@8.1.1) decode-named-character-reference: 1.0.2 - micromark-core-commonmark: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-chunked: 1.0.0 - micromark-util-combine-extensions: 1.0.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-encode: 1.0.1 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-subtokenize: 1.0.2 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 transitivePeerDependencies: - supports-color - micromatch@4.0.5: + micromatch@4.0.7: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 mime-db@1.52.0: {} @@ -17920,38 +16372,30 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.3: + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - minimist@1.2.8: {} - minipass@7.0.4: {} + minipass@7.1.2: {} mitt@2.1.0: {} mitt@3.0.1: {} - mixme@0.5.9: {} - mkdirp@0.5.6: dependencies: minimist: 1.2.8 mkdirp@1.0.4: {} - mlly@1.6.1: + mlly@1.7.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.4.0 + pkg-types: 1.1.1 + ufo: 1.5.3 mnemonist@0.39.6: dependencies: @@ -17969,29 +16413,29 @@ snapshots: ms@2.1.3: {} - msw@1.3.3(typescript@5.4.4): + msw@1.3.3(typescript@5.5.2): dependencies: '@mswjs/cookies': 0.2.2 '@mswjs/interceptors': 0.17.10 '@open-draft/until': 1.0.3 '@types/cookie': 0.4.1 - '@types/js-levenshtein': 1.1.1 + '@types/js-levenshtein': 1.1.3 chalk: 4.1.2 - chokidar: 3.5.3 + chokidar: 3.6.0 cookie: 0.4.2 - graphql: 16.8.1 + graphql: 16.9.0 headers-polyfill: 3.2.5 - inquirer: 8.2.5 + inquirer: 8.2.6 is-node-process: 1.2.0 js-levenshtein: 1.1.6 - node-fetch: 2.6.9 - outvariant: 1.4.0 - path-to-regexp: 6.2.1 - strict-event-emitter: 0.4.4 + node-fetch: 2.7.0 + outvariant: 1.4.2 + path-to-regexp: 6.2.2 + strict-event-emitter: 0.4.6 type-fest: 2.19.0 - yargs: 17.7.1 + yargs: 17.7.2 optionalDependencies: - typescript: 5.4.4 + typescript: 5.5.2 transitivePeerDependencies: - encoding - supports-color @@ -18014,19 +16458,19 @@ snapshots: neo-async@2.6.2: {} - nise@5.1.5: + nise@5.1.9: dependencies: - '@sinonjs/commons': 2.0.0 - '@sinonjs/fake-timers': 10.3.0 + '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers': 11.2.2 '@sinonjs/text-encoding': 0.7.2 - just-extend: 4.2.1 - path-to-regexp: 1.8.0 + just-extend: 6.2.0 + path-to-regexp: 6.2.2 nocache@3.0.4: {} nock@13.5.4: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) json-stringify-safe: 5.0.1 propagate: 2.0.1 transitivePeerDependencies: @@ -18040,7 +16484,7 @@ snapshots: node-domexception@1.0.0: {} - node-fetch@2.6.9: + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -18088,15 +16532,15 @@ snapshots: nullthrows@1.1.1: {} - ob1@0.80.8: {} + ob1@0.80.9: {} object-assign@4.1.1: {} object-hash@3.0.0: {} - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} - object-is@1.1.5: + object-is@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -18116,19 +16560,18 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 - object.fromentries@2.0.7: + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - object.groupby@1.0.2: + object.groupby@1.0.3: dependencies: - array.prototype.filter: 1.0.3 call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 - es-errors: 1.3.0 object.hasown@1.1.4: dependencies: @@ -18136,15 +16579,15 @@ snapshots: es-abstract: 1.23.3 es-object-atoms: 1.0.0 - object.values@1.1.7: + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-object-atoms: 1.0.0 obliterator@2.0.4: {} - on-exit-leak-free@2.1.0: {} + on-exit-leak-free@2.1.2: {} on-finished@2.3.0: dependencies: @@ -18186,21 +16629,21 @@ snapshots: optics-ts@2.4.1: {} - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 ora@5.4.1: dependencies: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.7.0 + cli-spinners: 2.9.2 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -18213,7 +16656,7 @@ snapshots: outdent@0.5.0: {} - outvariant@1.4.0: {} + outvariant@1.4.2: {} p-filter@2.1.0: dependencies: @@ -18259,6 +16702,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -18279,7 +16724,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -18302,16 +16747,12 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.10.2: - dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - - path-to-regexp@1.8.0: + path-scurry@1.11.1: dependencies: - isarray: 0.0.1 + lru-cache: 10.2.2 + minipass: 7.1.2 - path-to-regexp@6.2.1: {} + path-to-regexp@6.2.2: {} path-type@4.0.0: {} @@ -18323,7 +16764,7 @@ snapshots: performance-now@2.1.0: {} - picocolors@1.0.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -18331,26 +16772,26 @@ snapshots: pify@4.0.1: {} - pino-abstract-transport@1.1.0: + pino-abstract-transport@1.2.0: dependencies: - readable-stream: 4.3.0 - split2: 4.1.0 + readable-stream: 4.5.2 + split2: 4.2.0 - pino-std-serializers@6.1.0: {} + pino-std-serializers@7.0.0: {} - pino@8.19.0: + pino@9.2.0: dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.1.2 - on-exit-leak-free: 2.1.0 - pino-abstract-transport: 1.1.0 - pino-std-serializers: 6.1.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pino-std-serializers: 7.0.0 process-warning: 3.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 - safe-stable-stringify: 2.4.2 - sonic-boom: 3.7.0 - thread-stream: 2.3.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 4.0.1 + thread-stream: 3.1.0 pirates@4.0.6: {} @@ -18362,10 +16803,10 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-types@1.0.3: + pkg-types@1.1.1: dependencies: - jsonc-parser: 3.2.1 - mlly: 1.6.1 + confbox: 0.1.7 + mlly: 1.7.1 pathe: 1.1.2 pluralize@8.0.0: {} @@ -18377,27 +16818,35 @@ snapshots: postcss: 8.4.38 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.8 postcss-js@4.0.1(postcss@8.4.38): dependencies: camelcase-css: 2.0.1 postcss: 8.4.38 - postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)): + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)): dependencies: - lilconfig: 2.1.0 - yaml: 2.3.2 + lilconfig: 3.1.2 + yaml: 2.4.5 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@types/node@18.19.39)(typescript@5.5.2) + + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)): + dependencies: + lilconfig: 3.1.2 + yaml: 2.4.5 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@types/node@18.19.31)(typescript@5.4.4) + ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.5.2) postcss-nested@6.0.1(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.1.0 - postcss-selector-parser@6.0.11: + postcss-selector-parser@6.1.0: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -18407,10 +16856,10 @@ snapshots: postcss@8.4.38: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 - preferred-pm@3.0.3: + preferred-pm@3.1.3: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 @@ -18421,11 +16870,11 @@ snapshots: prettier-linter-helpers@1.0.0: dependencies: - fast-diff: 1.2.0 + fast-diff: 1.3.0 prettier@2.8.8: {} - prettier@3.2.5: {} + prettier@3.3.2: {} pretty-bytes@5.6.0: {} @@ -18446,14 +16895,12 @@ snapshots: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 + react-is: 18.3.1 prismjs@1.29.0: {} process-nextick-args@2.0.1: {} - process-warning@2.2.0: {} - process-warning@3.0.0: {} process@0.11.10: {} @@ -18480,7 +16927,7 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-compare@2.4.0: {} + proxy-compare@2.6.0: {} proxy-from-env@1.0.0: {} @@ -18493,8 +16940,6 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 - punycode@2.1.1: {} - punycode@2.3.1: {} qs@6.10.4: @@ -18515,30 +16960,27 @@ snapshots: quick-format-unescaped@4.0.4: {} - quick-lru@4.0.1: {} - range-parser@1.2.1: {} - react-colorful@5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-colorful@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) - react-datepicker@4.25.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-datepicker@6.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@popperjs/core': 2.11.8 - classnames: 2.3.2 - date-fns: 2.30.0 + '@floating-ui/react': 0.26.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + clsx: 2.1.1 + date-fns: 3.6.0 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-onclickoutside: 6.13.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-onclickoutside: 6.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-devtools-core@5.1.0: + react-devtools-core@5.3.0: dependencies: shell-quote: 1.8.1 - ws: 7.5.9 + ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -18547,30 +16989,42 @@ snapshots: dependencies: dnd-core: 16.0.1 - react-dnd@16.0.1(@types/node@18.19.31)(@types/react@18.2.75)(react@18.2.0): + react-dnd@16.0.1(@types/node@18.19.39)(@types/react@18.3.3)(react@18.3.1): dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 dnd-core: 16.0.1 fast-deep-equal: 3.1.3 hoist-non-react-statics: 3.3.2 - react: 18.2.0 + react: 18.3.1 + optionalDependencies: + '@types/node': 18.19.39 + '@types/react': 18.3.3 + + react-dnd@16.0.1(@types/node@20.14.9)(@types/react@18.3.3)(react@18.3.1): + dependencies: + '@react-dnd/invariant': 4.0.2 + '@react-dnd/shallowequal': 4.0.2 + dnd-core: 16.0.1 + fast-deep-equal: 3.1.3 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 optionalDependencies: - '@types/node': 18.19.31 - '@types/react': 18.2.75 + '@types/node': 20.14.9 + '@types/react': 18.3.3 - react-dom@18.2.0(react@18.2.0): + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 + react: 18.3.1 + scheduler: 0.23.2 react-fast-compare@3.2.2: {} - react-hotkeys-hook@4.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-hotkeys-hook@4.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-is@16.13.1: {} @@ -18578,79 +17032,31 @@ snapshots: react-is@18.2.0: {} - react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@types/react-reconciler': 0.28.8 - its-fine: 1.2.5(react@18.2.0) - konva: 9.3.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-reconciler: 0.29.0(react@18.2.0) - scheduler: 0.23.0 + react-is@18.3.1: {} - react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0): + react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 13.6.4 - '@react-native-community/cli-platform-android': 13.6.4 - '@react-native-community/cli-platform-ios': 13.6.4 - '@react-native/assets-registry': 0.74.81 - '@react-native/codegen': 0.74.81(@babel/preset-env@7.24.4(@babel/core@7.23.9)) - '@react-native/community-cli-plugin': 0.74.81(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9)) - '@react-native/gradle-plugin': 0.74.81 - '@react-native/js-polyfills': 0.74.81 - '@react-native/normalize-colors': 0.74.81 - '@react-native/virtualized-lists': 0.74.81(@types/react@18.2.75)(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0) - abort-controller: 3.0.0 - anser: 1.4.10 - ansi-regex: 5.0.1 - base64-js: 1.5.1 - chalk: 4.1.2 - event-target-shim: 5.0.1 - flow-enums-runtime: 0.0.6 - invariant: 2.2.4 - jest-environment-node: 29.7.0 - jsc-android: 250231.0.0 - memoize-one: 5.2.1 - metro-runtime: 0.80.8 - metro-source-map: 0.80.8 - mkdirp: 0.5.6 - nullthrows: 1.1.1 - pretty-format: 26.6.2 - promise: 8.3.0 - react: 18.2.0 - react-devtools-core: 5.1.0 - react-refresh: 0.14.0 - react-shallow-renderer: 16.15.0(react@18.2.0) - regenerator-runtime: 0.13.11 - scheduler: 0.24.0-canary-efb381bbf-20230505 - stacktrace-parser: 0.1.10 - whatwg-fetch: 3.6.20 - ws: 6.2.2 - yargs: 17.7.1 - optionalDependencies: - '@types/react': 18.2.75 - transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - - bufferutil - - encoding - - supports-color - - utf-8-validate + '@types/react-reconciler': 0.28.8 + its-fine: 1.2.5(react@18.3.1) + konva: 9.3.12 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-reconciler: 0.29.2(react@18.3.1) + scheduler: 0.23.2 - react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0): + react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 13.6.4 - '@react-native-community/cli-platform-android': 13.6.4 - '@react-native-community/cli-platform-ios': 13.6.4 - '@react-native/assets-registry': 0.74.81 - '@react-native/codegen': 0.74.81(@babel/preset-env@7.24.4(@babel/core@7.24.4)) - '@react-native/community-cli-plugin': 0.74.81(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4)) - '@react-native/gradle-plugin': 0.74.81 - '@react-native/js-polyfills': 0.74.81 - '@react-native/normalize-colors': 0.74.81 - '@react-native/virtualized-lists': 0.74.81(@types/react@18.2.75)(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0) + '@react-native-community/cli': 13.6.8 + '@react-native-community/cli-platform-android': 13.6.8 + '@react-native-community/cli-platform-ios': 13.6.8 + '@react-native/assets-registry': 0.74.84 + '@react-native/codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + '@react-native/community-cli-plugin': 0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + '@react-native/gradle-plugin': 0.74.84 + '@react-native/js-polyfills': 0.74.84 + '@react-native/normalize-colors': 0.74.84 + '@react-native/virtualized-lists': 0.74.84(@types/react@18.3.3)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -18662,24 +17068,24 @@ snapshots: jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.80.8 - metro-source-map: 0.80.8 + metro-runtime: 0.80.9 + metro-source-map: 0.80.9 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.3.0 - react: 18.2.0 - react-devtools-core: 5.1.0 - react-refresh: 0.14.0 - react-shallow-renderer: 16.15.0(react@18.2.0) + react: 18.3.1 + react-devtools-core: 5.3.0 + react-refresh: 0.14.2 + react-shallow-renderer: 16.15.0(react@18.3.1) regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 stacktrace-parser: 0.1.10 whatwg-fetch: 3.6.20 - ws: 6.2.2 - yargs: 17.7.1 + ws: 6.2.3 + yargs: 17.7.2 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' @@ -18688,87 +17094,68 @@ snapshots: - supports-color - utf-8-validate - react-onclickoutside@6.13.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-onclickoutside@6.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) - react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@popperjs/core': 2.11.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 warning: 4.0.3 - react-reconciler@0.27.0(react@18.2.0): + react-reconciler@0.27.0(react@18.3.1): dependencies: loose-envify: 1.4.0 - react: 18.2.0 + react: 18.3.1 scheduler: 0.21.0 - react-reconciler@0.29.0(react@18.2.0): + react-reconciler@0.29.2(react@18.3.1): dependencies: loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 + react: 18.3.1 + scheduler: 0.23.2 - react-refresh@0.14.0: {} + react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.4(@types/react@18.2.75)(react@18.2.0): + react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): dependencies: - react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.75)(react@18.2.0) - tslib: 2.6.2 + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + tslib: 2.6.3 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - react-remove-scroll@2.5.5(@types/react@18.2.75)(react@18.2.0): + react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): dependencies: - react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.75)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.75)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.75)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.75)(react@18.2.0) + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + tslib: 2.6.3 + use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - react-shallow-renderer@16.15.0(react@18.2.0): + react-shallow-renderer@16.15.0(react@18.3.1): dependencies: object-assign: 4.1.1 - react: 18.2.0 - react-is: 18.2.0 - - react-spring@9.7.3(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(three@0.163.0)(zdog@1.1.3): - dependencies: - '@react-spring/core': 9.7.3(react@18.2.0) - '@react-spring/konva': 9.7.3(konva@9.3.6)(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) - '@react-spring/native': 9.7.3(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0) - '@react-spring/three': 9.7.3(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(react@18.2.0)(three@0.163.0) - '@react-spring/web': 9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-spring/zdog': 9.7.3(react-dom@18.2.0(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(zdog@1.1.3) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@react-three/fiber' - - konva - - react-konva - - react-native - - react-zdog - - three - - zdog - - react-spring@9.7.3(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(three@0.163.0)(zdog@1.1.3): - dependencies: - '@react-spring/core': 9.7.3(react@18.2.0) - '@react-spring/konva': 9.7.3(konva@9.3.6)(react-konva@18.2.10(konva@9.3.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) - '@react-spring/native': 9.7.3(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0) - '@react-spring/three': 9.7.3(@react-three/fiber@8.16.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(three@0.163.0))(react@18.2.0)(three@0.163.0) - '@react-spring/web': 9.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-spring/zdog': 9.7.3(react-dom@18.2.0(react@18.2.0))(react-zdog@1.2.2)(react@18.2.0)(zdog@1.1.3) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-is: 18.3.1 + + react-spring@9.7.3(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.165.0)(zdog@1.1.3): + dependencies: + '@react-spring/core': 9.7.3(react@18.3.1) + '@react-spring/konva': 9.7.3(konva@9.3.12)(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@react-spring/native': 9.7.3(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@react-spring/three': 9.7.3(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(react@18.3.1)(three@0.165.0) + '@react-spring/web': 9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-spring/zdog': 9.7.3(react-dom@18.3.1(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(zdog@1.1.3) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - '@react-three/fiber' - konva @@ -18778,57 +17165,47 @@ snapshots: - three - zdog - react-style-singleton@2.2.1(@types/react@18.2.75)(react@18.2.0): + react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 - react: 18.2.0 - tslib: 2.6.2 + react: 18.3.1 + tslib: 2.6.3 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - react-textarea-autosize@8.5.3(@types/react@18.2.75)(react@18.2.0): + react-textarea-autosize@8.5.3(@types/react@18.3.3)(react@18.3.1): dependencies: - '@babel/runtime': 7.23.9 - react: 18.2.0 - use-composed-ref: 1.3.0(react@18.2.0) - use-latest: 1.2.1(@types/react@18.2.75)(react@18.2.0) + '@babel/runtime': 7.24.7 + react: 18.3.1 + use-composed-ref: 1.3.0(react@18.3.1) + use-latest: 1.2.1(@types/react@18.3.3)(react@18.3.1) transitivePeerDependencies: - '@types/react' - react-tracked@1.7.11(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505): - dependencies: - proxy-compare: 2.4.0 - react: 18.2.0 - scheduler: 0.24.0-canary-efb381bbf-20230505 - use-context-selector: 1.4.1(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505) - optionalDependencies: - react-dom: 18.2.0(react@18.2.0) - react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0) - - react-tracked@1.7.11(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505): + react-tracked@1.7.14(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505): dependencies: - proxy-compare: 2.4.0 - react: 18.2.0 + proxy-compare: 2.6.0 + react: 18.3.1 scheduler: 0.24.0-canary-efb381bbf-20230505 - use-context-selector: 1.4.1(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505) + use-context-selector: 1.4.4(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505) optionalDependencies: - react-dom: 18.2.0(react@18.2.0) - react-native: 0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0) + react-dom: 18.3.1(react@18.3.1) + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1) - react-use-measure@2.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-use-measure@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: debounce: 1.2.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-zdog@1.2.2: dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) resize-observer-polyfill: 1.5.1 - react@18.2.0: + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -18844,7 +17221,7 @@ snapshots: read-pkg@5.2.0: dependencies: - '@types/normalize-package-data': 2.4.1 + '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -18856,7 +17233,7 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - readable-stream@2.3.7: + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -18866,20 +17243,21 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@3.6.0: + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.3.0: + readable-stream@4.5.2: dependencies: abort-controller: 3.0.0 buffer: 6.0.3 events: 3.3.0 process: 0.11.10 + string_decoder: 1.3.0 - readdir-glob@1.1.2: + readdir-glob@1.1.3: dependencies: minimatch: 5.1.6 @@ -18896,7 +17274,7 @@ snapshots: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.6.2 + tslib: 2.6.3 redent@3.0.0: dependencies: @@ -18915,7 +17293,7 @@ snapshots: redux@4.2.1: dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 reflect.getprototypeof@1.0.6: dependencies: @@ -18924,7 +17302,7 @@ snapshots: es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 - globalthis: 1.0.3 + globalthis: 1.0.4 which-builtin-type: 1.1.3 regenerate-unicode-properties@10.1.1: @@ -18939,7 +17317,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.7 regexp-tree@0.1.27: {} @@ -18969,17 +17347,17 @@ snapshots: remark-gfm@3.0.1: dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.2 + micromark-extension-gfm: 2.0.3 unified: 10.1.2 transitivePeerDependencies: - supports-color remark-parse@10.0.2: dependencies: - '@types/mdast': 3.0.10 - mdast-util-from-markdown: 1.3.0 + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 unified: 10.1.2 transitivePeerDependencies: - supports-color @@ -19008,24 +17386,18 @@ snapshots: resolve@1.19.0: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 - resolve@1.22.2: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -19034,11 +17406,11 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - ret@0.2.2: {} + ret@0.4.3: {} reusify@1.0.4: {} - rfdc@1.3.1: {} + rfdc@1.4.1: {} rimraf@2.6.3: dependencies: @@ -19054,25 +17426,26 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.14.1: + rollup@4.18.0: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.14.1 - '@rollup/rollup-android-arm64': 4.14.1 - '@rollup/rollup-darwin-arm64': 4.14.1 - '@rollup/rollup-darwin-x64': 4.14.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.14.1 - '@rollup/rollup-linux-arm64-gnu': 4.14.1 - '@rollup/rollup-linux-arm64-musl': 4.14.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.14.1 - '@rollup/rollup-linux-riscv64-gnu': 4.14.1 - '@rollup/rollup-linux-s390x-gnu': 4.14.1 - '@rollup/rollup-linux-x64-gnu': 4.14.1 - '@rollup/rollup-linux-x64-musl': 4.14.1 - '@rollup/rollup-win32-arm64-msvc': 4.14.1 - '@rollup/rollup-win32-ia32-msvc': 4.14.1 - '@rollup/rollup-win32-x64-msvc': 4.14.1 + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -19085,7 +17458,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 sade@1.8.1: dependencies: @@ -19108,11 +17481,11 @@ snapshots: es-errors: 1.3.0 is-regex: 1.1.4 - safe-regex2@2.0.0: + safe-regex2@3.1.0: dependencies: - ret: 0.2.2 + ret: 0.4.3 - safe-stable-stringify@2.4.2: {} + safe-stable-stringify@2.4.3: {} safer-buffer@2.1.2: {} @@ -19120,7 +17493,7 @@ snapshots: dependencies: loose-envify: 1.4.0 - scheduler@0.23.0: + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -19147,9 +17520,7 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + semver@7.6.2: {} send@0.18.0: dependencies: @@ -19184,7 +17555,7 @@ snapshots: set-cookie-parser@2.6.0: {} - set-function-length@1.2.1: + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -19225,7 +17596,7 @@ snapshots: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 siginfo@2.0.0: {} @@ -19235,18 +17606,18 @@ snapshots: sinon@17.0.1: dependencies: - '@sinonjs/commons': 3.0.0 + '@sinonjs/commons': 3.0.1 '@sinonjs/fake-timers': 11.2.2 '@sinonjs/samsam': 8.0.0 - diff: 5.1.0 - nise: 5.1.5 + diff: 5.2.0 + nise: 5.1.9 supports-color: 7.2.0 sirv@2.0.4: dependencies: - '@polka/url': 1.0.0-next.24 + '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 - totalist: 3.0.0 + totalist: 3.0.1 sisteransi@1.0.5: {} @@ -19262,24 +17633,24 @@ snapshots: is-plain-object: 5.0.0 slate: 0.102.0 - slate-react@0.102.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.102.0): + slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0): dependencies: '@juggle/resize-observer': 3.4.0 '@types/is-hotkey': 0.1.10 - '@types/lodash': 4.14.202 + '@types/lodash': 4.17.5 direction: 1.0.4 is-hotkey: 0.2.0 is-plain-object: 5.0.0 lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 slate: 0.102.0 tiny-invariant: 1.3.1 slate@0.102.0: dependencies: - immer: 10.0.4 + immer: 10.1.1 is-plain-object: 5.0.0 tiny-warning: 1.0.3 @@ -19301,21 +17672,10 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - smartwrap@2.0.2: - dependencies: - array.prototype.flat: 1.3.1 - breakword: 1.0.5 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - - sonic-boom@3.7.0: + sonic-boom@4.0.1: dependencies: atomic-sleep: 1.0.0 - source-map-js@1.0.2: {} - source-map-js@1.2.0: {} source-map-support@0.5.21: @@ -19336,21 +17696,21 @@ snapshots: cross-spawn: 5.1.0 signal-exit: 3.0.7 - spdx-correct@3.1.1: + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.12 + spdx-license-ids: 3.0.18 - spdx-exceptions@2.3.0: {} + spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.12 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 - spdx-license-ids@3.0.12: {} + spdx-license-ids@3.0.18: {} - split2@4.1.0: {} + split2@4.2.0: {} sprintf-js@1.0.3: {} @@ -19388,22 +17748,21 @@ snapshots: dependencies: internal-slot: 1.0.7 - stream-transform@2.1.3: - dependencies: - mixme: 0.5.9 - - streamx@2.15.5: + streamx@2.18.0: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 + text-decoder: 1.1.0 + optionalDependencies: + bare-events: 2.4.2 strict-event-emitter@0.2.8: dependencies: events: 3.3.0 - strict-event-emitter@0.4.4: {} + strict-event-emitter@0.4.6: {} - string-argv@0.3.1: {} + string-argv@0.3.2: {} string-width@4.2.3: dependencies: @@ -19417,6 +17776,11 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string.prototype.includes@2.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 @@ -19489,19 +17853,19 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@2.0.0: + strip-literal@2.1.0: dependencies: - js-tokens: 8.0.3 + js-tokens: 9.0.0 strnum@1.0.5: {} stubborn-fs@1.2.5: {} - sucrase@3.32.0: + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 7.1.6 + glob: 10.4.2 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -19523,55 +17887,82 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - suspend-react@0.1.3(react@18.2.0): + suspend-react@0.1.3(react@18.3.1): dependencies: - react: 18.2.0 + react: 18.3.1 synckit@0.6.2: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 synckit@0.8.8: dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.2 + tslib: 2.6.3 + + tabbable@6.2.0: {} - tabbable@6.1.2: {} + tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.1.0 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node - tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)): + tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 - chokidar: 3.5.3 + chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.0 + jiti: 1.21.6 lilconfig: 2.1.0 - micromatch: 4.0.5 + micromatch: 4.0.7 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4)) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)) postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.1.0 resolve: 1.22.8 - sucrase: 3.32.0 + sucrase: 3.35.0 transitivePeerDependencies: - ts-node tapable@2.2.1: {} - tar-stream@3.1.6: + tar-stream@3.1.7: dependencies: - b4a: 1.6.4 + b4a: 1.6.6 fast-fifo: 1.3.2 - streamx: 2.15.5 + streamx: 2.18.0 temp-dir@2.0.0: {} @@ -19581,10 +17972,10 @@ snapshots: term-size@2.2.1: {} - terser@5.30.4: + terser@5.31.1: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 + acorn: 8.12.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -19594,6 +17985,10 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + text-decoder@1.1.0: + dependencies: + b4a: 1.6.6 + text-table@0.2.0: {} thenify-all@1.6.0: @@ -19604,11 +17999,11 @@ snapshots: dependencies: any-promise: 1.3.0 - thread-stream@2.3.0: + thread-stream@3.1.0: dependencies: real-require: 0.2.0 - three@0.163.0: {} + three@0.165.0: {} throat@5.0.0: {} @@ -19616,7 +18011,7 @@ snapshots: through2@2.0.5: dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 xtend: 4.0.2 through@2.3.8: {} @@ -19625,9 +18020,9 @@ snapshots: tiny-warning@1.0.3: {} - tinybench@2.6.0: {} + tinybench@2.8.0: {} - tinypool@0.8.2: {} + tinypool@0.8.4: {} tinyspy@2.2.1: {} @@ -19635,9 +18030,7 @@ snapshots: dependencies: os-tmpdir: 1.0.2 - tmp@0.2.1: - dependencies: - rimraf: 3.0.2 + tmp@0.2.3: {} tmpl@1.0.5: {} @@ -19647,13 +18040,13 @@ snapshots: dependencies: is-number: 7.0.0 - toad-cache@3.3.0: {} + toad-cache@3.7.0: {} toidentifier@1.0.1: {} - totalist@3.0.0: {} + totalist@3.0.1: {} - tough-cookie@4.1.3: + tough-cookie@4.1.4: dependencies: psl: 1.9.0 punycode: 2.3.1 @@ -19662,39 +18055,55 @@ snapshots: tr46@0.0.3: {} - trim-newlines@3.0.1: {} + trough@2.2.0: {} - trough@2.1.0: {} - - ts-api-utils@1.0.1(typescript@5.4.4): + ts-api-utils@1.3.0(typescript@5.5.2): dependencies: - typescript: 5.4.4 + typescript: 5.5.2 ts-interface-checker@0.1.13: {} - ts-json-as-const@1.0.7(typescript@5.4.4): + ts-json-as-const@1.0.7(typescript@5.5.2): dependencies: '@dfoverdx/tocamelcase': 1.0.7 isbinaryfile: 4.0.10 json5: 2.2.3 stringify-object: 4.0.1 - typescript: 5.4.4 + typescript: 5.5.2 + + ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.39 + acorn: 8.12.0 + acorn-walk: 8.3.3 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 - ts-node@10.9.2(@types/node@18.19.31)(typescript@5.4.4): + ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.19.31 - acorn: 8.11.3 - acorn-walk: 8.3.2 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.14.9 + acorn: 8.12.0 + acorn-walk: 8.3.3 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.4 + typescript: 5.5.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -19705,19 +18114,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@2.6.1: {} - - tslib@2.6.2: {} - - tty-table@4.2.1: - dependencies: - chalk: 4.1.2 - csv: 5.5.3 - kleur: 4.1.5 - smartwrap: 2.0.2 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 17.7.1 + tslib@2.6.3: {} tunnel-agent@0.6.0: dependencies: @@ -19731,8 +18128,6 @@ snapshots: type-detect@4.0.8: {} - type-fest@0.13.1: {} - type-fest@0.20.2: {} type-fest@0.21.3: {} @@ -19747,7 +18142,7 @@ snapshots: type-fest@3.13.1: {} - type-fest@4.15.0: {} + type-fest@4.20.1: {} typed-array-buffer@1.0.2: dependencies: @@ -19783,9 +18178,9 @@ snapshots: typescript@5.4.2: {} - typescript@5.4.4: {} + typescript@5.5.2: {} - ufo@1.4.0: {} + ufo@1.5.3: {} uint8array-extras@0.3.0: {} @@ -19811,17 +18206,17 @@ snapshots: unified@10.1.2: dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.10 bail: 2.0.2 extend: 3.0.2 is-buffer: 2.0.5 is-plain-obj: 4.1.0 - trough: 2.1.0 + trough: 2.2.0 vfile: 5.3.7 unist-util-is@5.2.1: dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.10 unist-util-is@6.0.0: dependencies: @@ -19829,15 +18224,15 @@ snapshots: unist-util-stringify-position@2.0.3: dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.10 unist-util-stringify-position@3.0.3: dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.10 unist-util-visit-parents@5.1.3: dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.10 unist-util-is: 5.2.1 unist-util-visit-parents@6.0.1: @@ -19847,7 +18242,7 @@ snapshots: unist-util-visit@4.1.2: dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.10 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 @@ -19861,95 +18256,80 @@ snapshots: universalify@0.2.0: {} - universalify@2.0.0: {} - universalify@2.0.1: {} unpipe@1.0.0: {} untildify@4.0.0: {} - update-browserslist-db@1.0.13(browserslist@4.23.0): + update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: - browserslist: 4.23.0 - escalade: 3.1.1 - picocolors: 1.0.0 + browserslist: 4.23.1 + escalade: 3.1.2 + picocolors: 1.0.1 uri-js@4.4.1: dependencies: - punycode: 2.1.1 + punycode: 2.3.1 url-parse@1.5.10: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - use-callback-ref@1.3.0(@types/react@18.2.75)(react@18.2.0): + use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): dependencies: - react: 18.2.0 - tslib: 2.6.2 + react: 18.3.1 + tslib: 2.6.3 optionalDependencies: - '@types/react': 18.2.75 - - use-composed-ref@1.3.0(react@18.2.0): - dependencies: - react: 18.2.0 + '@types/react': 18.3.3 - use-context-selector@1.4.1(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505): + use-composed-ref@1.3.0(react@18.3.1): dependencies: - react: 18.2.0 - scheduler: 0.24.0-canary-efb381bbf-20230505 - optionalDependencies: - react-dom: 18.2.0(react@18.2.0) - react-native: 0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0) + react: 18.3.1 - use-context-selector@1.4.1(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505): + use-context-selector@1.4.4(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505): dependencies: - react: 18.2.0 + react: 18.3.1 scheduler: 0.24.0-canary-efb381bbf-20230505 optionalDependencies: - react-dom: 18.2.0(react@18.2.0) - react-native: 0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0) + react-dom: 18.3.1(react@18.3.1) + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1) - use-deep-compare@1.2.1(react@18.2.0): + use-deep-compare@1.2.1(react@18.3.1): dependencies: dequal: 2.0.3 - react: 18.2.0 + react: 18.3.1 - use-font-face-observer@1.2.1(react@18.2.0): + use-font-face-observer@1.2.2(react@18.3.1): dependencies: fontfaceobserver: 2.1.0 - react: 18.2.0 + react: 18.3.1 - use-isomorphic-layout-effect@1.1.2(@types/react@18.2.75)(react@18.2.0): + use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.3.1): dependencies: - react: 18.2.0 + react: 18.3.1 optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - use-latest@1.2.1(@types/react@18.2.75)(react@18.2.0): + use-latest@1.2.1(@types/react@18.3.3)(react@18.3.1): dependencies: - react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.75)(react@18.2.0) + react: 18.3.1 + use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 + '@types/react': 18.3.3 - use-sidecar@1.1.2(@types/react@18.2.75)(react@18.2.0): + use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): dependencies: detect-node-es: 1.1.0 - react: 18.2.0 - tslib: 2.6.2 + react: 18.3.1 + tslib: 2.6.3 optionalDependencies: - '@types/react': 18.2.75 - - use-subscription@1.8.0(react@18.2.0): - dependencies: - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) + '@types/react': 18.3.3 - use-sync-external-store@1.2.0(react@18.2.0): + use-sync-external-store@1.2.0(react@18.3.1): dependencies: - react: 18.2.0 + react: 18.3.1 util-deprecate@1.0.2: {} @@ -19968,24 +18348,24 @@ snapshots: uvu@0.5.6: dependencies: dequal: 2.0.3 - diff: 5.1.0 + diff: 5.2.0 kleur: 4.1.5 sade: 1.8.1 v8-compile-cache-lib@3.0.1: {} - v8-to-istanbul@9.2.0: + v8-to-istanbul@9.3.0: dependencies: '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 validate-npm-package-license@3.0.4: dependencies: - spdx-correct: 3.1.1 + spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validator@13.9.0: {} + validator@13.12.0: {} vary@1.1.2: {} @@ -19997,23 +18377,40 @@ snapshots: vfile-message@3.1.4: dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.10 unist-util-stringify-position: 3.0.3 vfile@5.3.7: dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.10 is-buffer: 2.0.5 unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - vite-node@1.4.0(@types/node@18.19.31)(terser@5.30.4): + vite-node@1.6.0(@types/node@18.19.39)(terser@5.31.1): + dependencies: + cac: 6.7.14 + debug: 4.3.5(supports-color@8.1.1) + pathe: 1.1.2 + picocolors: 1.0.1 + vite: 5.3.1(@types/node@18.19.39)(terser@5.31.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite-node@1.6.0(@types/node@20.14.9)(terser@5.31.1): dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + picocolors: 1.0.1 + vite: 5.3.1(@types/node@20.14.9)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -20024,94 +18421,146 @@ snapshots: - supports-color - terser - vite-plugin-dts@3.8.1(@types/node@18.19.31)(rollup@4.14.1)(typescript@5.4.4)(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)): + vite-plugin-dts@3.9.1(@types/node@18.19.39)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1)): + dependencies: + '@microsoft/api-extractor': 7.43.0(@types/node@18.19.39) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@vue/language-core': 1.8.27(typescript@5.5.2) + debug: 4.3.5(supports-color@8.1.1) + kolorist: 1.8.0 + magic-string: 0.30.10 + typescript: 5.5.2 + vue-tsc: 1.8.27(typescript@5.5.2) + optionalDependencies: + vite: 5.3.1(@types/node@18.19.39)(terser@5.31.1) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + + vite-plugin-dts@3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@20.14.9)(terser@5.31.1)): dependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@18.19.31) - '@rollup/pluginutils': 5.1.0(rollup@4.14.1) - '@vue/language-core': 1.8.27(typescript@5.4.4) - debug: 4.3.4(supports-color@8.1.1) + '@microsoft/api-extractor': 7.43.0(@types/node@20.14.9) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@vue/language-core': 1.8.27(typescript@5.5.2) + debug: 4.3.5(supports-color@8.1.1) kolorist: 1.8.0 - magic-string: 0.30.9 - typescript: 5.4.4 - vue-tsc: 1.8.27(typescript@5.4.4) + magic-string: 0.30.10 + typescript: 5.5.2 + vue-tsc: 1.8.27(typescript@5.5.2) optionalDependencies: - vite: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + vite: 5.3.1(@types/node@20.14.9)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externals@0.6.2(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)): + vite-plugin-externals@0.6.2(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1)): dependencies: - acorn: 8.8.2 + acorn: 8.12.0 es-module-lexer: 0.4.1 fs-extra: 10.1.0 magic-string: 0.25.9 - vite: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + vite: 5.3.1(@types/node@18.19.39)(terser@5.31.1) - vite-plugin-static-copy@1.0.2(vite@5.2.10(@types/node@18.19.31)(terser@5.30.4)): + vite-plugin-static-copy@1.0.5(vite@5.3.1(@types/node@20.14.9)(terser@5.31.1)): dependencies: - chokidar: 3.5.3 + chokidar: 3.6.0 fast-glob: 3.3.2 - fs-extra: 11.1.1 - picocolors: 1.0.0 - vite: 5.2.10(@types/node@18.19.31)(terser@5.30.4) + fs-extra: 11.2.0 + picocolors: 1.0.1 + vite: 5.3.1(@types/node@20.14.9)(terser@5.31.1) - vite@4.5.3(@types/node@18.19.31)(terser@5.30.4): + vite@4.5.3(@types/node@20.14.9)(terser@5.31.1): dependencies: esbuild: 0.18.20 postcss: 8.4.38 rollup: 3.29.4 optionalDependencies: - '@types/node': 18.19.31 + '@types/node': 20.14.9 fsevents: 2.3.3 - terser: 5.30.4 + terser: 5.31.1 - vite@5.2.10(@types/node@18.19.31)(terser@5.30.4): + vite@5.3.1(@types/node@18.19.39)(terser@5.31.1): dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 postcss: 8.4.38 - rollup: 4.14.1 + rollup: 4.18.0 optionalDependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 fsevents: 2.3.3 - terser: 5.30.4 + terser: 5.31.1 - vite@5.2.8(@types/node@18.19.31)(terser@5.30.4): + vite@5.3.1(@types/node@20.14.9)(terser@5.31.1): dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 postcss: 8.4.38 - rollup: 4.14.1 + rollup: 4.18.0 optionalDependencies: - '@types/node': 18.19.31 + '@types/node': 20.14.9 fsevents: 2.3.3 - terser: 5.30.4 + terser: 5.31.1 + + vitest@1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.3 + chai: 4.4.1 + debug: 4.3.5(supports-color@8.1.1) + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.10 + pathe: 1.1.2 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.3.1(@types/node@18.19.39)(terser@5.31.1) + vite-node: 1.6.0(@types/node@18.19.39)(terser@5.31.1) + why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 18.19.39 + '@vitest/ui': 1.6.0(vitest@1.6.0) + happy-dom: 13.10.1 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser - vitest@1.4.0(@types/node@18.19.31)(@vitest/ui@1.4.0)(happy-dom@13.10.1)(terser@5.30.4): + vitest@1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1): dependencies: - '@vitest/expect': 1.4.0 - '@vitest/runner': 1.4.0 - '@vitest/snapshot': 1.4.0 - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 - acorn-walk: 8.3.2 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.3 chai: 4.4.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5(supports-color@8.1.1) execa: 8.0.1 local-pkg: 0.5.0 - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.2.8(@types/node@18.19.31)(terser@5.30.4) - vite-node: 1.4.0(@types/node@18.19.31)(terser@5.30.4) + strip-literal: 2.1.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.3.1(@types/node@20.14.9)(terser@5.31.1) + vite-node: 1.6.0(@types/node@20.14.9)(terser@5.31.1) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 18.19.31 - '@vitest/ui': 1.4.0(vitest@1.4.0) + '@types/node': 20.14.9 + '@vitest/ui': 1.6.0(vitest@1.6.0) happy-dom: 13.10.1 transitivePeerDependencies: - less @@ -20124,17 +18573,17 @@ snapshots: vlq@1.0.1: {} - vue-template-compiler@2.7.14: + vue-template-compiler@2.7.16: dependencies: de-indent: 1.0.2 he: 1.2.0 - vue-tsc@1.8.27(typescript@5.4.4): + vue-tsc@1.8.27(typescript@5.5.2): dependencies: '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.4.4) - semver: 7.6.0 - typescript: 5.4.4 + '@vue/language-core': 1.8.27(typescript@5.5.2) + semver: 7.6.2 + typescript: 5.5.2 walker@1.0.8: dependencies: @@ -20154,7 +18603,7 @@ snapshots: optionalDependencies: '@zxing/text-encoding': 0.9.0 - web-streams-polyfill@3.2.1: {} + web-streams-polyfill@3.3.3: {} webidl-conversions@3.0.1: {} @@ -20169,7 +18618,7 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - when-exit@2.0.0: {} + when-exit@2.1.2: {} which-boxed-primitive@1.0.2: dependencies: @@ -20191,17 +18640,17 @@ snapshots: is-weakref: 1.0.2 isarray: 2.0.5 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 + which-collection: 1.0.2 which-typed-array: 1.1.15 - which-collection@1.0.1: + which-collection@1.0.2: dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 - which-module@2.0.0: {} + which-module@2.0.1: {} which-pm@2.0.0: dependencies: @@ -20216,15 +18665,6 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.2 - which-typed-array@1.1.9: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - is-typed-array: 1.1.13 - which@1.3.1: dependencies: isexe: 2.0.0 @@ -20238,6 +18678,8 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + word-wrap@1.2.5: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -20264,13 +18706,11 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@6.2.2: + ws@6.2.3: dependencies: async-limiter: 1.0.1 - ws@7.5.9: {} - - xstate@4.38.3: {} + ws@7.5.10: {} xtend@4.0.2: {} @@ -20284,13 +18724,13 @@ snapshots: yallist@4.0.0: {} - yaml-eslint-parser@1.2.2: + yaml-eslint-parser@1.2.3: dependencies: eslint-visitor-keys: 3.4.3 lodash: 4.17.21 - yaml: 2.3.2 + yaml: 2.4.5 - yaml@2.3.2: {} + yaml@2.4.5: {} yargs-parser@18.1.3: dependencies: @@ -20309,14 +18749,14 @@ snapshots: require-main-filename: 2.0.0 set-blocking: 2.0.0 string-width: 4.2.3 - which-module: 2.0.0 + which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 - yargs@17.7.1: + yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -20334,13 +18774,13 @@ snapshots: yocto-queue@1.0.0: {} - z-schema@5.0.4: + z-schema@5.0.5: dependencies: lodash.get: 4.4.2 lodash.isequal: 4.5.0 - validator: 13.9.0 + validator: 13.12.0 optionalDependencies: - commander: 2.20.3 + commander: 9.5.0 zdog@1.1.3: {} @@ -20348,64 +18788,32 @@ snapshots: dependencies: archiver-utils: 5.0.2 compress-commons: 6.0.2 - readable-stream: 4.3.0 - - zod@3.22.4: {} - - zustand-x@3.0.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)): - dependencies: - immer: 10.0.4 - lodash.mapvalues: 4.6.0 - react-tracked: 1.7.11(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.23.9)(@babel/preset-env@7.24.4(@babel/core@7.23.9))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505) - zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) - transitivePeerDependencies: - - react - - react-dom - - react-native - - scheduler + readable-stream: 4.5.2 - zustand-x@3.0.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0)): - dependencies: - immer: 10.0.4 - lodash.mapvalues: 4.6.0 - react-tracked: 1.7.11(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505) - zustand: 4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0) - transitivePeerDependencies: - - react - - react-dom - - react-native - - scheduler + zod@3.23.8: {} - zustand-x@3.0.2(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0)): + zustand-x@3.0.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)): dependencies: - immer: 10.0.4 + immer: 10.1.1 lodash.mapvalues: 4.6.0 - react-tracked: 1.7.11(react-dom@18.2.0(react@18.2.0))(react-native@0.74.0(@babel/core@7.24.4)(@babel/preset-env@7.24.4(@babel/core@7.24.4))(@types/react@18.2.75)(react@18.2.0))(react@18.2.0)(scheduler@0.24.0-canary-efb381bbf-20230505) - zustand: 4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0) + react-tracked: 1.7.14(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505) + zustand: 4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) transitivePeerDependencies: - react - react-dom - react-native - scheduler - zustand@3.7.2(react@18.2.0): - optionalDependencies: - react: 18.2.0 - - zustand@4.5.2(@types/react@18.2.75)(immer@10.0.4)(react@18.2.0): - dependencies: - use-sync-external-store: 1.2.0(react@18.2.0) + zustand@3.7.2(react@18.3.1): optionalDependencies: - '@types/react': 18.2.75 - immer: 10.0.4 - react: 18.2.0 + react: 18.3.1 - zustand@4.5.2(@types/react@18.2.75)(immer@9.0.21)(react@18.2.0): + zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1): dependencies: - use-sync-external-store: 1.2.0(react@18.2.0) + use-sync-external-store: 1.2.0(react@18.3.1) optionalDependencies: - '@types/react': 18.2.75 - immer: 9.0.21 - react: 18.2.0 + '@types/react': 18.3.3 + immer: 10.1.1 + react: 18.3.1 zwitch@2.0.4: {} From d215d7b8ca329143b54acfc9e4aa62f577fce54d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Jun 2024 13:58:48 +0000 Subject: [PATCH 100/182] chore: release packages (alpha) (#993) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 7 ++- packages/app-bridge/CHANGELOG.md | 92 +++++++++++++++++--------------- packages/app-bridge/package.json | 2 +- 3 files changed, 56 insertions(+), 45 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 9bd13e85f..da50eba8b 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -7,10 +7,12 @@ "@frontify/guideline-blocks-settings": "0.29.16", "@frontify/sidebar-settings": "0.8.1", "@frontify/platform-app": "0.0.5", - "@frontify/app-bridge-theme": "1.0.0-alpha.1" + "@frontify/app-bridge-theme": "1.0.0-alpha.1", + "@frontify/app-bridge-app": "0.0.5" }, "changesets": [ "angry-dolphins-fry", + "brave-queens-work", "calm-candles-wink", "clever-suns-laugh", "cuddly-pets-hammer", @@ -57,6 +59,7 @@ "tricky-boats-sip", "warm-hounds-refuse", "wild-bags-judge", - "witty-rivers-smile" + "witty-rivers-smile", + "witty-tools-check" ] } diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 67af9cec7..25a386d09 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,99 +1,107 @@ # @frontify/app-bridge +## 4.0.0-alpha.32 + +### Patch Changes + +- [#1007](https://github.com/Frontify/brand-sdk/pull/1007) [`2c0ebf2`](https://github.com/Frontify/brand-sdk/commit/2c0ebf209915a11dd018b7453d7932d0f0ee6f3e) Thanks [@ragi96](https://github.com/ragi96)! - chore: merge main to dev + +- [#992](https://github.com/Frontify/brand-sdk/pull/992) [`f60bbf4`](https://github.com/Frontify/brand-sdk/commit/f60bbf42218880ee8042e5830152a2112eef09dc) Thanks [@julianiff](https://github.com/julianiff)! - feat: deprecate react hooks for platform apps + ## 4.0.0-alpha.31 ### Patch Changes -- [#956](https://github.com/Frontify/brand-sdk/pull/956) [`2491b6e`](https://github.com/Frontify/brand-sdk/commit/2491b6e88fc41ca8eafff5e41ec181247a968c46) Thanks [@julianiff](https://github.com/julianiff)! - feat: adds state listener to allow push from parent +- [#956](https://github.com/Frontify/brand-sdk/pull/956) [`2491b6e`](https://github.com/Frontify/brand-sdk/commit/2491b6e88fc41ca8eafff5e41ec181247a968c46) Thanks [@julianiff](https://github.com/julianiff)! - feat: adds state listener to allow push from parent ## 4.0.0-alpha.30 ### Patch Changes -- chore: merge branch `main` into dev +- chore: merge branch `main` into dev ## 4.0.0-alpha.29 ### Patch Changes -- [#941](https://github.com/Frontify/brand-sdk/pull/941) [`4e643ec`](https://github.com/Frontify/brand-sdk/commit/4e643ec9414e5671f877c556b68436a1a06569cb) Thanks [@julianiff](https://github.com/julianiff)! - Feat: adjust secure request response +- [#941](https://github.com/Frontify/brand-sdk/pull/941) [`4e643ec`](https://github.com/Frontify/brand-sdk/commit/4e643ec9414e5671f877c556b68436a1a06569cb) Thanks [@julianiff](https://github.com/julianiff)! - Feat: adjust secure request response ## 4.0.0-alpha.28 ### Patch Changes -- [#939](https://github.com/Frontify/brand-sdk/pull/939) [`7ea653c`](https://github.com/Frontify/brand-sdk/commit/7ea653ca17f2a16c72e8ee5525580eaee0d6405a) Thanks [@julianiff](https://github.com/julianiff)! - refactor: rename brandsdk name from secretRequest to secureRequest +- [#939](https://github.com/Frontify/brand-sdk/pull/939) [`7ea653c`](https://github.com/Frontify/brand-sdk/commit/7ea653ca17f2a16c72e8ee5525580eaee0d6405a) Thanks [@julianiff](https://github.com/julianiff)! - refactor: rename brandsdk name from secretRequest to secureRequest ## 4.0.0-alpha.27 ### Patch Changes -- [#937](https://github.com/Frontify/brand-sdk/pull/937) [`341886e`](https://github.com/Frontify/brand-sdk/commit/341886e9d16184048f9285d692df5177bfd2d0d1) Thanks [@julianiff](https://github.com/julianiff)! - chore: rename brand sdk name +- [#937](https://github.com/Frontify/brand-sdk/pull/937) [`341886e`](https://github.com/Frontify/brand-sdk/commit/341886e9d16184048f9285d692df5177bfd2d0d1) Thanks [@julianiff](https://github.com/julianiff)! - chore: rename brand sdk name ## 4.0.0-alpha.26 ### Patch Changes -- [#929](https://github.com/Frontify/brand-sdk/pull/929) [`414ea40`](https://github.com/Frontify/brand-sdk/commit/414ea4092d5446815df032a87471829801604634) Thanks [@julianiff](https://github.com/julianiff)! - refactor: Method to reflect feature +- [#929](https://github.com/Frontify/brand-sdk/pull/929) [`414ea40`](https://github.com/Frontify/brand-sdk/commit/414ea4092d5446815df032a87471829801604634) Thanks [@julianiff](https://github.com/julianiff)! - refactor: Method to reflect feature ## 4.0.0-alpha.25 ### Patch Changes -- chore: merge main to dev +- chore: merge main to dev ## 4.0.0-alpha.24 ### Patch Changes -- chore: merge main to dev +- chore: merge main to dev ## 4.0.0-alpha.23 ### Patch Changes -- [#918](https://github.com/Frontify/brand-sdk/pull/918) [`1d48008`](https://github.com/Frontify/brand-sdk/commit/1d48008561a2dc3f4b7b4c9fcb7bc44cd7d04bc6) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: Merge main into dev +- [#918](https://github.com/Frontify/brand-sdk/pull/918) [`1d48008`](https://github.com/Frontify/brand-sdk/commit/1d48008561a2dc3f4b7b4c9fcb7bc44cd7d04bc6) Thanks [@SamCreasey](https://github.com/SamCreasey)! - chore: Merge main into dev ## 4.0.0-alpha.22 ### Patch Changes -- chore: merge branch `main` into dev +- chore: merge branch `main` into dev ## 4.0.0-alpha.21 ### Patch Changes -- [#910](https://github.com/Frontify/brand-sdk/pull/910) [`0723d89`](https://github.com/Frontify/brand-sdk/commit/0723d89575f47682bc146661e693651f61965c8c) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: (AppBridgeTheme) update appBridgeThemeStub with context and state +- [#910](https://github.com/Frontify/brand-sdk/pull/910) [`0723d89`](https://github.com/Frontify/brand-sdk/commit/0723d89575f47682bc146661e693651f61965c8c) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: (AppBridgeTheme) update appBridgeThemeStub with context and state ## 4.0.0-alpha.20 ### Patch Changes -- [#900](https://github.com/Frontify/brand-sdk/pull/900) [`9294b16`](https://github.com/Frontify/brand-sdk/commit/9294b164ad2b3fc502004e3d8d86ee29737ac822) Thanks [@julianiff](https://github.com/julianiff)! - feat(AppBridgePlatformApp): only one app bridge per iframe +- [#900](https://github.com/Frontify/brand-sdk/pull/900) [`9294b16`](https://github.com/Frontify/brand-sdk/commit/9294b164ad2b3fc502004e3d8d86ee29737ac822) Thanks [@julianiff](https://github.com/julianiff)! - feat(AppBridgePlatformApp): only one app bridge per iframe -- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` -- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeTheme): add isSearchDialogOpen to context +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`2a5b9cf`](https://github.com/Frontify/brand-sdk/commit/2a5b9cfb1e73331a3a4d39550a3a26de8a7e0c94) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeTheme): add isSearchDialogOpen to context ## 4.0.0-alpha.19 ### Patch Changes -- [#895](https://github.com/Frontify/brand-sdk/pull/895) [`b31a73d`](https://github.com/Frontify/brand-sdk/commit/b31a73d1756f01374682552a3013173f3c8f5384) Thanks [@julianiff](https://github.com/julianiff)! - feat: add user state variable +- [#895](https://github.com/Frontify/brand-sdk/pull/895) [`b31a73d`](https://github.com/Frontify/brand-sdk/commit/b31a73d1756f01374682552a3013173f3c8f5384) Thanks [@julianiff](https://github.com/julianiff)! - feat: add user state variable ## 4.0.0-alpha.18 ### Patch Changes -- [#884](https://github.com/Frontify/brand-sdk/pull/884) [`4fe96c8`](https://github.com/Frontify/brand-sdk/commit/4fe96c8808d1b85541dd6cc5ed2711bc5a47f4eb) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed - fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed +- [#884](https://github.com/Frontify/brand-sdk/pull/884) [`4fe96c8`](https://github.com/Frontify/brand-sdk/commit/4fe96c8808d1b85541dd6cc5ed2711bc5a47f4eb) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix(useDocumentNavigation): Fixed an issue that prevented debounced callbacks not to be executed + fix(usePortalNavigation): Fixed an issue that prevented debounced callbacks not to be executed ## 4.0.0-alpha.17 ### Minor Changes -- # [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` +- # [#864](https://github.com/Frontify/brand-sdk/pull/864) [`c46694a`](https://github.com/Frontify/brand-sdk/commit/c46694abe2ce06d78e8bd27ef832e92244116108) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat(AppBridgeBlock): adds `creationFormUri` to the type `template` ## 3.10.0 @@ -182,7 +190,7 @@ ### Patch Changes -- [#877](https://github.com/Frontify/brand-sdk/pull/877) [`1dd80ad`](https://github.com/Frontify/brand-sdk/commit/1dd80ad39568e96e97ab73c04feee3a949764ae9) Thanks [@mike85](https://github.com/mike85)! - feat(usePageTemplateSettings): returns also templateThemeSettings +- [#877](https://github.com/Frontify/brand-sdk/pull/877) [`1dd80ad`](https://github.com/Frontify/brand-sdk/commit/1dd80ad39568e96e97ab73c04feee3a949764ae9) Thanks [@mike85](https://github.com/mike85)! - feat(usePageTemplateSettings): returns also templateThemeSettings ## 3.5.9 @@ -194,7 +202,7 @@ ### Patch Changes -- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`0f17eb8`](https://github.com/Frontify/brand-sdk/commit/0f17eb82afdc30692e02d1cf150d622f38d0913a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`0f17eb8`](https://github.com/Frontify/brand-sdk/commit/0f17eb82afdc30692e02d1cf150d622f38d0913a) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - feat: merge `main` into `dev` ## 3.5.8 @@ -206,13 +214,13 @@ ### Major Changes -- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: modify `DocumentSection` and `DocumentSectionApi` type to allow `title` to be `null`. +- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - feat: modify `DocumentSection` and `DocumentSectionApi` type to allow `title` to be `null`. ### Patch Changes -- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - feat(useDocumentSection): Subscribe hook to emitter event listeners. A new emitter type, `AppBridge:GuidelineDocumentSection:Action` has been added. This emitter can be used to add and remove items from the sections saved in the hook state. +- [#841](https://github.com/Frontify/brand-sdk/pull/841) [`d88b50d`](https://github.com/Frontify/brand-sdk/commit/d88b50dd6e2235262dbae7250db053f9052228d1) Thanks [@SamCreasey](https://github.com/SamCreasey)! - - feat(useDocumentSection): Subscribe hook to emitter event listeners. A new emitter type, `AppBridge:GuidelineDocumentSection:Action` has been added. This emitter can be used to add and remove items from the sections saved in the hook state. - - feat(useDocumentSection): `navigationItems` is now returned from this hook. This array filters out sections with an unreadable title and should be used to create section navigation links. + - feat(useDocumentSection): `navigationItems` is now returned from this hook. This array filters out sections with an unreadable title and should be used to create section navigation links. ## 3.5.7 @@ -234,35 +242,35 @@ - [#843](https://github.com/Frontify/brand-sdk/pull/843) [`3109e66`](https://github.com/Frontify/brand-sdk/commit/3109e66248fb9185c312d8170055452dce796bc4) Thanks [@julianiff](https://github.com/julianiff)! - chore: move up to v4 -- [`0d9d0af`](https://github.com/Frontify/brand-sdk/commit/0d9d0afe4fc55b0e0c5b1e397aeaf77e7e8c4a69) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev +- [`0d9d0af`](https://github.com/Frontify/brand-sdk/commit/0d9d0afe4fc55b0e0c5b1e397aeaf77e7e8c4a69) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev ## 4.0.0-alpha.12 ### Patch Changes -- [`18c91b1`](https://github.com/Frontify/brand-sdk/commit/18c91b184651f49c490d381054b3ec543f928551) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge `main` into `dev` +- [`18c91b1`](https://github.com/Frontify/brand-sdk/commit/18c91b184651f49c490d381054b3ec543f928551) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge `main` into `dev` ## 4.0.0-alpha.11 ### Minor Changes -- [#830](https://github.com/Frontify/brand-sdk/pull/830) [`e14ef89`](https://github.com/Frontify/brand-sdk/commit/e14ef895606e72af066e614983b61ca8778c108d) Thanks [@ragi96](https://github.com/ragi96)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type +- [#830](https://github.com/Frontify/brand-sdk/pull/830) [`e14ef89`](https://github.com/Frontify/brand-sdk/commit/e14ef895606e72af066e614983b61ca8778c108d) Thanks [@ragi96](https://github.com/ragi96)! - feat(AppBridgeBlock): add `isAuthenticated` to `BlockContext` type ## 4.0.0-alpha.10 ### Minor Changes -- [#808](https://github.com/Frontify/brand-sdk/pull/808) [`4529beb`](https://github.com/Frontify/brand-sdk/commit/4529beb4b9f20ba94c7d6226257b422d6b560d5a) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme +- [#808](https://github.com/Frontify/brand-sdk/pull/808) [`4529beb`](https://github.com/Frontify/brand-sdk/commit/4529beb4b9f20ba94c7d6226257b422d6b560d5a) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add navigateToDocumentSection command to AppBridgeTheme ### Patch Changes -- [#810](https://github.com/Frontify/brand-sdk/pull/810) [`0ac69ea`](https://github.com/Frontify/brand-sdk/commit/0ac69eaa52ba58a5be06ce75afa63cf5838e958b) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests +- [#810](https://github.com/Frontify/brand-sdk/pull/810) [`0ac69ea`](https://github.com/Frontify/brand-sdk/commit/0ac69eaa52ba58a5be06ce75afa63cf5838e958b) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: useGroupedDocuments and useUngroupedDocuments flaky tests ## 4.0.0-alpha.9 ### Patch Changes -- Merge main into dev +- Merge main into dev ## 3.5.4 @@ -318,9 +326,9 @@ ### Patch Changes -- [#777](https://github.com/Frontify/brand-sdk/pull/777) [`b5d1cb8`](https://github.com/Frontify/brand-sdk/commit/b5d1cb8a376ccada20d0234913584a6bdba0cba9) Thanks [@julianiff](https://github.com/julianiff)! - Fix: add retry to subscription +- [#777](https://github.com/Frontify/brand-sdk/pull/777) [`b5d1cb8`](https://github.com/Frontify/brand-sdk/commit/b5d1cb8a376ccada20d0234913584a6bdba0cba9) Thanks [@julianiff](https://github.com/julianiff)! - Fix: add retry to subscription -- Merge main into dev +- Merge main into dev ## 3.4.1 @@ -340,24 +348,24 @@ ### Minor Changes -- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme +- [#780](https://github.com/Frontify/brand-sdk/pull/780) [`40b18c4`](https://github.com/Frontify/brand-sdk/commit/40b18c473478750ce04eb18a7ff290e34b65b94f) Thanks [@mike85](https://github.com/mike85)! - feat: add open/close search dialog commands to AppBridgeTheme ## 4.0.0-alpha.6 ### Patch Changes -- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 +- [#772](https://github.com/Frontify/brand-sdk/pull/772) [`3e44c59`](https://github.com/Frontify/brand-sdk/commit/3e44c596628abcad11414eb26a954f4cb6eea097) Thanks [@julianiff](https://github.com/julianiff)! - feat: switch to platformAppBridge to v4 -- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext - refactor: rename from type to surface +- [#774](https://github.com/Frontify/brand-sdk/pull/774) [`7a80244`](https://github.com/Frontify/brand-sdk/commit/7a80244b2ebf075f93a492513970b3ee2c92dc80) Thanks [@julianiff](https://github.com/julianiff)! - feat: Adjust PlatformAppContext + refactor: rename from type to surface ## 4.0.0-alpha.5 ### Patch Changes -- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type +- [`a4822db`](https://github.com/Frontify/brand-sdk/commit/a4822db8bb86c2516241395963979369e0311a7a) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: document page duplication return type -- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev +- [`5e4178c`](https://github.com/Frontify/brand-sdk/commit/5e4178c1e1028cec2af73bd34fedf56078f8b42c) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - Merge main into dev ## 3.3.2 @@ -369,7 +377,7 @@ ### Patch Changes -- Merge main into dev +- Merge main into dev ## 3.3.1 @@ -381,19 +389,19 @@ ### Patch Changes -- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision +- [#734](https://github.com/Frontify/brand-sdk/pull/734) [`029dd26`](https://github.com/Frontify/brand-sdk/commit/029dd26b26734539e80af86bcaa49d2caf9a7771) Thanks [@ragi96](https://github.com/ragi96)! - feat: adjust the color type to have a revision ## 4.0.0-alpha.2 ### Patch Changes -- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock +- [#753](https://github.com/Frontify/brand-sdk/pull/753) [`50937f2`](https://github.com/Frontify/brand-sdk/commit/50937f2170f5ee1eab05726e141fc0e932f71865) Thanks [@ragi96](https://github.com/ragi96)! - feat: adds `setAssetIdsByBlockAssetKey` to AppBridgeBlock ## 4.0.0-alpha.1 ### Patch Changes -- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme +- [#742](https://github.com/Frontify/brand-sdk/pull/742) [`5ea66a7`](https://github.com/Frontify/brand-sdk/commit/5ea66a79bac131f5b34f1a1bf60fbe81add6b17f) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add context.template to AppBridgeTheme ## 3.3.0 @@ -411,7 +419,7 @@ ### Major Changes -- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock +- [#705](https://github.com/Frontify/brand-sdk/pull/705) [`a027b87`](https://github.com/Frontify/brand-sdk/commit/a027b87593ae25d18cda62c4989920a16958d28c) Thanks [@ragi96](https://github.com/ragi96)! - feat: first alpha release, removes all deprecated functions on the AppBridgeBlock ## 3.1.0 diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index ebcbc962f..119a30f1e 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.31", + "version": "4.0.0-alpha.32", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 77088a85a7c181e5040d7a2738fb9fd7d95dfd1d Mon Sep 17 00:00:00 2001 From: Bojan Mazej <517677+bojangles-m@users.noreply.github.com> Date: Tue, 2 Jul 2024 13:48:33 +0200 Subject: [PATCH 101/182] feat: added additional prop to the `GuidelineSearchResult` (#1015) --- .changeset/young-crews-hope.md | 5 +++++ packages/app-bridge-theme/src/types/GuidelineSearchResult.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/young-crews-hope.md diff --git a/.changeset/young-crews-hope.md b/.changeset/young-crews-hope.md new file mode 100644 index 000000000..caf2feef7 --- /dev/null +++ b/.changeset/young-crews-hope.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": minor +--- + +feat(GuidelineSearchResult): added additional prop to `GuidelineSearchResult` diff --git a/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts b/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts index 34f7863e7..7f80b6885 100644 --- a/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts +++ b/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts @@ -27,4 +27,5 @@ export type GuidelineSearchResult = { sectionTitle: string | null; colorHex?: string; projectColorId?: string; + guidelineTitle: string; }; From 008a116fb9702b89200ae1a41d817a959d3a65db Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 13:55:32 +0200 Subject: [PATCH 102/182] chore: release packages (alpha) (#1016) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 3 ++- packages/app-bridge-theme/CHANGELOG.md | 24 +++++++++++++++--------- packages/app-bridge-theme/package.json | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index da50eba8b..cf5f04bcd 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -60,6 +60,7 @@ "warm-hounds-refuse", "wild-bags-judge", "witty-rivers-smile", - "witty-tools-check" + "witty-tools-check", + "young-crews-hope" ] } diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index e6ee88eab..aa9cdd270 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,55 +1,61 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.10 + +### Minor Changes + +- [#1015](https://github.com/Frontify/brand-sdk/pull/1015) [`77088a8`](https://github.com/Frontify/brand-sdk/commit/77088a85a7c181e5040d7a2738fb9fd7d95dfd1d) Thanks [@bojangles-m](https://github.com/bojangles-m)! - feat(GuidelineSearchResult): added additional prop to `GuidelineSearchResult` + ## 0.0.0-alpha.9 ### Patch Changes -- [#983](https://github.com/Frontify/brand-sdk/pull/983) [`57b2f90`](https://github.com/Frontify/brand-sdk/commit/57b2f90c8042e05774e57c1065fc86242f468f48) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: AppBridgeTheme command typing +- [#983](https://github.com/Frontify/brand-sdk/pull/983) [`57b2f90`](https://github.com/Frontify/brand-sdk/commit/57b2f90c8042e05774e57c1065fc86242f468f48) Thanks [@anxobotana](https://github.com/anxobotana)! - fix: AppBridgeTheme command typing ## 0.0.0-alpha.8 ### Patch Changes -- [#981](https://github.com/Frontify/brand-sdk/pull/981) [`02cd695`](https://github.com/Frontify/brand-sdk/commit/02cd695c896847691eae43ed774637614ad3fd32) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: AppBridgeTheme update context keys +- [#981](https://github.com/Frontify/brand-sdk/pull/981) [`02cd695`](https://github.com/Frontify/brand-sdk/commit/02cd695c896847691eae43ed774637614ad3fd32) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: AppBridgeTheme update context keys ## 0.0.0-alpha.7 ### Patch Changes -- [#978](https://github.com/Frontify/brand-sdk/pull/978) [`5eb0306`](https://github.com/Frontify/brand-sdk/commit/5eb030695cc105a3ed514a5b38840b015a8d85ac) Thanks [@Kenny806](https://github.com/Kenny806)! - feat: add a navigate command +- [#978](https://github.com/Frontify/brand-sdk/pull/978) [`5eb0306`](https://github.com/Frontify/brand-sdk/commit/5eb030695cc105a3ed514a5b38840b015a8d85ac) Thanks [@Kenny806](https://github.com/Kenny806)! - feat: add a navigate command ## 0.0.0-alpha.6 ### Patch Changes -- [#974](https://github.com/Frontify/brand-sdk/pull/974) [`508f51e`](https://github.com/Frontify/brand-sdk/commit/508f51e1de4d091f8761f4b7897940574d819eee) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: templateContext and NavigationItem types +- [#974](https://github.com/Frontify/brand-sdk/pull/974) [`508f51e`](https://github.com/Frontify/brand-sdk/commit/508f51e1de4d091f8761f4b7897940574d819eee) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: templateContext and NavigationItem types ## 0.0.0-alpha.5 ### Patch Changes -- [#971](https://github.com/Frontify/brand-sdk/pull/971) [`08b3506`](https://github.com/Frontify/brand-sdk/commit/08b3506f1b8dba87fed1b6eb3f379bf619327d45) Thanks [@Kenny806](https://github.com/Kenny806)! - fix: exports +- [#971](https://github.com/Frontify/brand-sdk/pull/971) [`08b3506`](https://github.com/Frontify/brand-sdk/commit/08b3506f1b8dba87fed1b6eb3f379bf619327d45) Thanks [@Kenny806](https://github.com/Kenny806)! - fix: exports ## 0.0.0-alpha.4 ### Patch Changes -- [#967](https://github.com/Frontify/brand-sdk/pull/967) [`599df4f`](https://github.com/Frontify/brand-sdk/commit/599df4fd1db1ad43a8163538513c36a9ab3e938a) Thanks [@Kenny806](https://github.com/Kenny806)! - fix: extend AppBridgeThemeEvent to include assetsChosen +- [#967](https://github.com/Frontify/brand-sdk/pull/967) [`599df4f`](https://github.com/Frontify/brand-sdk/commit/599df4fd1db1ad43a8163538513c36a9ab3e938a) Thanks [@Kenny806](https://github.com/Kenny806)! - fix: extend AppBridgeThemeEvent to include assetsChosen ## 0.0.0-alpha.3 ### Patch Changes -- [#965](https://github.com/Frontify/brand-sdk/pull/965) [`578e3e4`](https://github.com/Frontify/brand-sdk/commit/578e3e40025b1fbc88959181759257fe0e71d874) Thanks [@Kenny806](https://github.com/Kenny806)! - Added a SubscribeMap type +- [#965](https://github.com/Frontify/brand-sdk/pull/965) [`578e3e4`](https://github.com/Frontify/brand-sdk/commit/578e3e40025b1fbc88959181759257fe0e71d874) Thanks [@Kenny806](https://github.com/Kenny806)! - Added a SubscribeMap type ## 0.0.0-alpha.2 ### Patch Changes -- [#963](https://github.com/Frontify/brand-sdk/pull/963) [`43472d5`](https://github.com/Frontify/brand-sdk/commit/43472d5f7ea4fd6bcdc44dc26103d1c3ce92cf4c) Thanks [@anxobotana](https://github.com/anxobotana)! - fix(AppBridgeThemes): fix build and codeowners +- [#963](https://github.com/Frontify/brand-sdk/pull/963) [`43472d5`](https://github.com/Frontify/brand-sdk/commit/43472d5f7ea4fd6bcdc44dc26103d1c3ce92cf4c) Thanks [@anxobotana](https://github.com/anxobotana)! - fix(AppBridgeThemes): fix build and codeowners ## 0.0.0-alpha.1 ### Patch Changes -- [#960](https://github.com/Frontify/brand-sdk/pull/960) [`7a88fb5`](https://github.com/Frontify/brand-sdk/commit/7a88fb512a8209ab377ef12a70e2c8484d5b6799) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeThemes): initial alpha release of AppBridgeThemes +- [#960](https://github.com/Frontify/brand-sdk/pull/960) [`7a88fb5`](https://github.com/Frontify/brand-sdk/commit/7a88fb512a8209ab377ef12a70e2c8484d5b6799) Thanks [@anxobotana](https://github.com/anxobotana)! - feat(AppBridgeThemes): initial alpha release of AppBridgeThemes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 16b600ea5..cb937572c 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.9", + "version": "0.0.0-alpha.10", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 4234c2e792889466b6110d337decdc8bfabdb252 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 12:52:13 +0000 Subject: [PATCH 103/182] chore: release packages (alpha) (#1018) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index cf5f04bcd..763893c99 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -44,6 +44,7 @@ "pink-lobsters-beg", "polite-eels-shake", "pretty-items-marry", + "real-jeans-guess", "red-islands-report", "rich-olives-repeat", "shaggy-mugs-speak", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index a4ba6447b..509363598 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.33 + +### Patch Changes + +- chore: merge main to dev + ## 4.0.0-alpha.32 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 119a30f1e..e6fb7d111 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.32", + "version": "4.0.0-alpha.33", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 54fd9e7a4d973d7b47e67d5e7cc1c1309255e0ea Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Thu, 11 Jul 2024 08:48:56 +0200 Subject: [PATCH 104/182] chore(AppBridgeTheme): add vitest to app bridge theme (#1031) * chore: add vitest * Create eleven-shrimps-jog.md * chore: update AppBridgeTheme CI * Revert "chore: update AppBridgeTheme CI" This reverts commit d9121670a6bba459bc7ee450d886d89849d385ec. --- .changeset/eleven-shrimps-jog.md | 5 +++ packages/app-bridge-theme/package.json | 12 ++++++- .../app-bridge-theme/src/tests/setupTests.ts | 8 +++++ packages/app-bridge-theme/tsconfig.json | 2 +- packages/app-bridge-theme/vite.config.mts | 11 ++++++ pnpm-lock.yaml | 36 ++++++++++++++----- 6 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 .changeset/eleven-shrimps-jog.md create mode 100644 packages/app-bridge-theme/src/tests/setupTests.ts diff --git a/.changeset/eleven-shrimps-jog.md b/.changeset/eleven-shrimps-jog.md new file mode 100644 index 000000000..de878d704 --- /dev/null +++ b/.changeset/eleven-shrimps-jog.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +chore(AppBridgeTheme): add vitest to app bridge theme diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index cb937572c..b3092f3ca 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -31,6 +31,10 @@ "dev": "vite build --watch", "lint": "eslint .", "lint:fix": "eslint --fix .", + "test": "vitest run", + "test:ui": "vitest --ui", + "test:watch": "vitest", + "test:coverage": "vitest run --coverage", "typecheck": "tsc --noEmit" }, "peerDependencies": { @@ -39,16 +43,22 @@ "dependencies": {}, "devDependencies": { "@frontify/eslint-config-react": "^0.17.6", + "@testing-library/react": "^14.3.0", "@types/react": "^18.2.75", "@types/react-dom": "^18.2.24", + "@vitest/coverage-v8": "^1.4.0", + "@vitest/ui": "^1.4.0", "eslint": "^8.57.0", "eslint-plugin-notice": "^0.9.10", + "happy-dom": "^13.10.1", "prettier": "^3.2.5", "react": "^18.2.0", + "react-dom": "^18.2.0", "ts-json-as-const": "^1.0.7", "type-fest": "^4.15.0", "typescript": "^5.4.4", "vite": "^5.2.10", - "vite-plugin-dts": "^3.8.1" + "vite-plugin-dts": "^3.8.1", + "vitest": "^1.4.0" } } diff --git a/packages/app-bridge-theme/src/tests/setupTests.ts b/packages/app-bridge-theme/src/tests/setupTests.ts new file mode 100644 index 000000000..45eb936cf --- /dev/null +++ b/packages/app-bridge-theme/src/tests/setupTests.ts @@ -0,0 +1,8 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { configure } from '@testing-library/react'; +import { beforeAll } from 'vitest'; + +beforeAll(() => { + configure({ testIdAttribute: 'data-test-id' }); +}); diff --git a/packages/app-bridge-theme/tsconfig.json b/packages/app-bridge-theme/tsconfig.json index 0e6aac3c5..2b70f17a7 100644 --- a/packages/app-bridge-theme/tsconfig.json +++ b/packages/app-bridge-theme/tsconfig.json @@ -19,6 +19,6 @@ "baseUrl": ".", "types": ["vite/client"] }, - "include": ["src"], + "include": ["src", "./tests/setupTests.ts"], "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/packages/app-bridge-theme/vite.config.mts b/packages/app-bridge-theme/vite.config.mts index e6eabb2a0..4266c9261 100644 --- a/packages/app-bridge-theme/vite.config.mts +++ b/packages/app-bridge-theme/vite.config.mts @@ -28,4 +28,15 @@ export default defineConfig({ external: [...dependencies, ...peerDependencies], }, }, + test: { + environment: 'happy-dom', + css: true, + coverage: { + all: true, + reporter: ['text', 'lcov'], + include: ['src/**/*.ts', 'src/**/*.tsx'], + exclude: ['src/**/test.ts', 'src/**/test.tsx', 'src/**/spec.ts', 'src/**/spec.tsx'], + }, + setupFiles: ['./src/tests/setupTests.ts'], + }, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4ff4c3d4d..ab6a7995e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -200,24 +200,39 @@ importers: '@frontify/eslint-config-react': specifier: ^0.17.6 version: 0.17.6(eslint@8.57.0)(prettier@3.3.2)(react@18.3.1)(typescript@5.5.2) + '@testing-library/react': + specifier: ^14.3.0 + version: 14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/react': specifier: ^18.2.75 version: 18.3.3 '@types/react-dom': specifier: ^18.2.24 version: 18.3.0 + '@vitest/coverage-v8': + specifier: ^1.4.0 + version: 1.4.0(vitest@1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1)) + '@vitest/ui': + specifier: ^1.4.0 + version: 1.6.0(vitest@1.6.0) eslint: specifier: ^8.57.0 version: 8.57.0 eslint-plugin-notice: specifier: ^0.9.10 version: 0.9.10(eslint@8.57.0) + happy-dom: + specifier: ^13.10.1 + version: 13.10.1 prettier: specifier: ^3.2.5 version: 3.3.2 react: specifier: ^18.2.0 version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) ts-json-as-const: specifier: ^1.0.7 version: 1.0.7(typescript@5.5.2) @@ -233,6 +248,9 @@ importers: vite-plugin-dts: specifier: ^3.8.1 version: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@20.14.9)(terser@5.31.1)) + vitest: + specifier: ^1.4.0 + version: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) packages/cli: dependencies: @@ -10033,9 +10051,9 @@ snapshots: '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.2) eslint: 8.57.0 eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsonc: 2.16.0(eslint@8.57.0) eslint-plugin-lodash: 7.4.0(eslint@8.57.0) eslint-plugin-markdown: 4.0.1(eslint@8.57.0) @@ -14406,13 +14424,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: debug: 4.3.5(supports-color@8.1.1) enhanced-resolve: 5.17.0 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.5 is-core-module: 2.14.0 @@ -14423,14 +14441,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.2) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -14440,7 +14458,7 @@ snapshots: eslint: 8.57.0 ignore: 5.3.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -14450,7 +14468,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.14.0 is-glob: 4.0.3 From 19346b8a27cc1e2efb6cd6c61884496ddd67a34c Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Fri, 12 Jul 2024 07:47:26 +0200 Subject: [PATCH 105/182] feat(AppBridgeTheme): add use language hook (#1032) * chore: add test job to AppBridgeTheme CI * feat: add useLanguage to AppBridgeTheme * Create shiny-poets-enjoy.md --- .changeset/shiny-poets-enjoy.md | 5 ++ ...pp-bridge-theme-continuous-integration.yml | 3 + .../src/react/useLanguage.spec.ts | 84 +++++++++++++++++++ .../app-bridge-theme/src/react/useLanguage.ts | 27 ++++++ 4 files changed, 119 insertions(+) create mode 100644 .changeset/shiny-poets-enjoy.md create mode 100644 packages/app-bridge-theme/src/react/useLanguage.spec.ts create mode 100644 packages/app-bridge-theme/src/react/useLanguage.ts diff --git a/.changeset/shiny-poets-enjoy.md b/.changeset/shiny-poets-enjoy.md new file mode 100644 index 000000000..6a8322b3b --- /dev/null +++ b/.changeset/shiny-poets-enjoy.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat(AppBridgeTheme): add use language hook diff --git a/.github/workflows/app-bridge-theme-continuous-integration.yml b/.github/workflows/app-bridge-theme-continuous-integration.yml index fbcaf1f28..5ce06046f 100644 --- a/.github/workflows/app-bridge-theme-continuous-integration.yml +++ b/.github/workflows/app-bridge-theme-continuous-integration.yml @@ -41,3 +41,6 @@ jobs: - name: Lint code run: pnpm --stream --filter {packages/app-bridge-theme} lint + + - name: Test code + run: pnpm --stream --filter {packages/app-bridge-theme} test:coverage diff --git a/packages/app-bridge-theme/src/react/useLanguage.spec.ts b/packages/app-bridge-theme/src/react/useLanguage.spec.ts new file mode 100644 index 000000000..ca51bf568 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useLanguage.spec.ts @@ -0,0 +1,84 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +import { useLanguage } from './useLanguage'; + +const INITIAL_LANGUAGE = 'de'; +const UPDATED_LANGUAGE = 'es'; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: () => INITIAL_LANGUAGE, + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + }) as unknown as AppBridgeTheme; + +describe('useLanguage', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with currentLanguage and defaultLanguage', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useLanguage(appBridgeTheme)); + + expect(stubs.contextStub).toHaveBeenCalledWith('currentLanguage'); + expect(stubs.contextStub).toHaveBeenCalledWith('defaultLanguage'); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useLanguage(appBridgeTheme)); + + expect(stubs.subscribeStub).toHaveBeenCalledTimes(2); + }); + + it('should return the correct initial language', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useLanguage(appBridgeTheme)); + + expect(result.current.currentLanguage).toEqual(INITIAL_LANGUAGE); + expect(result.current.defaultLanguage).toEqual(INITIAL_LANGUAGE); + }); + + it('should update the language on change', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useLanguage(appBridgeTheme)); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.subscribeStub.mock.calls[0][0](UPDATED_LANGUAGE); + stubs.subscribeStub.mock.calls[1][0](UPDATED_LANGUAGE); + } + }); + + expect(result.current.currentLanguage).toEqual(UPDATED_LANGUAGE); + expect(result.current.defaultLanguage).toEqual(UPDATED_LANGUAGE); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => useLanguage(appBridgeTheme)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledTimes(2); + }); +}); diff --git a/packages/app-bridge-theme/src/react/useLanguage.ts b/packages/app-bridge-theme/src/react/useLanguage.ts new file mode 100644 index 000000000..3f7f8a5f1 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useLanguage.ts @@ -0,0 +1,27 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useEffect, useState } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme.ts'; + +type UseLanguageReturn = { + currentLanguage: string; + defaultLanguage: string; +}; + +export const useLanguage = (appBridge: AppBridgeTheme): UseLanguageReturn => { + const [currentLanguage, setCurrentLanguage] = useState(appBridge.context('currentLanguage').get()); + const [defaultLanguage, setDefaultLanguage] = useState(appBridge.context('defaultLanguage').get()); + + useEffect(() => { + const unsubscribeCurrentLanguageObserver = appBridge.context('currentLanguage').subscribe(setCurrentLanguage); + const unsubscribeDefaultLanguageObserver = appBridge.context('defaultLanguage').subscribe(setDefaultLanguage); + + return () => { + unsubscribeCurrentLanguageObserver(); + unsubscribeDefaultLanguageObserver(); + }; + }, [appBridge]); + + return { currentLanguage, defaultLanguage }; +}; From 562990de5485cebebcb840ddb5abf74d1abe4357 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Fri, 12 Jul 2024 12:18:03 +0200 Subject: [PATCH 106/182] feat: add useIsEditing hook (#1034) * refactor: replace useState with useSyncExternalStore * feat: add useIsEditing hook * Create tasty-coins-jam.md --- .changeset/tasty-coins-jam.md | 5 ++ packages/app-bridge-theme/src/index.ts | 1 + packages/app-bridge-theme/src/react/index.ts | 4 + .../src/react/useIsEditing.spec.ts | 84 +++++++++++++++++++ .../src/react/useIsEditing.ts | 9 ++ .../src/react/useLanguage.spec.ts | 4 +- .../app-bridge-theme/src/react/useLanguage.ts | 22 ++--- 7 files changed, 115 insertions(+), 14 deletions(-) create mode 100644 .changeset/tasty-coins-jam.md create mode 100644 packages/app-bridge-theme/src/react/index.ts create mode 100644 packages/app-bridge-theme/src/react/useIsEditing.spec.ts create mode 100644 packages/app-bridge-theme/src/react/useIsEditing.ts diff --git a/.changeset/tasty-coins-jam.md b/.changeset/tasty-coins-jam.md new file mode 100644 index 000000000..20795e461 --- /dev/null +++ b/.changeset/tasty-coins-jam.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: add useIsEditing hook diff --git a/packages/app-bridge-theme/src/index.ts b/packages/app-bridge-theme/src/index.ts index 7cc022c57..4ad8c9eff 100644 --- a/packages/app-bridge-theme/src/index.ts +++ b/packages/app-bridge-theme/src/index.ts @@ -1,5 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './AppBridgeTheme'; +export * from './react'; export * from './registries'; export * from './types'; diff --git a/packages/app-bridge-theme/src/react/index.ts b/packages/app-bridge-theme/src/react/index.ts new file mode 100644 index 000000000..a602fc64b --- /dev/null +++ b/packages/app-bridge-theme/src/react/index.ts @@ -0,0 +1,4 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './useIsEditing'; +export * from './useLanguage'; diff --git a/packages/app-bridge-theme/src/react/useIsEditing.spec.ts b/packages/app-bridge-theme/src/react/useIsEditing.spec.ts new file mode 100644 index 000000000..0ef5e3a5d --- /dev/null +++ b/packages/app-bridge-theme/src/react/useIsEditing.spec.ts @@ -0,0 +1,84 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +import { useIsEditing } from './useIsEditing'; + +const INITIAL_EDITOR_STATE = false; +const UPDATED_EDITOR_STATE = true; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + contextGetStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: stubs.contextGetStub.mockReturnValue(INITIAL_EDITOR_STATE), + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + }) as unknown as AppBridgeTheme; + +describe('useIsEditing', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with isEditing', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useIsEditing(appBridgeTheme)); + + expect(stubs.contextStub).toHaveBeenCalledWith('isEditing'); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useIsEditing(appBridgeTheme)); + + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); + }); + + it('should return the correct initial editor state', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useIsEditing(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_EDITOR_STATE); + }); + + it('should update the editor state on change', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useIsEditing(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_EDITOR_STATE); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(UPDATED_EDITOR_STATE); + stubs.subscribeStub.mock.calls[0][0](UPDATED_EDITOR_STATE); + } + }); + + expect(result.current).toEqual(UPDATED_EDITOR_STATE); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => useIsEditing(appBridgeTheme)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge-theme/src/react/useIsEditing.ts b/packages/app-bridge-theme/src/react/useIsEditing.ts new file mode 100644 index 000000000..5dd01d553 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useIsEditing.ts @@ -0,0 +1,9 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +export const useIsEditing = (appBridge: AppBridgeTheme): boolean => { + return useSyncExternalStore(appBridge.context('isEditing').subscribe, appBridge.context('isEditing').get); +}; diff --git a/packages/app-bridge-theme/src/react/useLanguage.spec.ts b/packages/app-bridge-theme/src/react/useLanguage.spec.ts index ca51bf568..ac2576839 100644 --- a/packages/app-bridge-theme/src/react/useLanguage.spec.ts +++ b/packages/app-bridge-theme/src/react/useLanguage.spec.ts @@ -13,6 +13,7 @@ const UPDATED_LANGUAGE = 'es'; const stubs = vi.hoisted(() => ({ contextStub: vi.fn(), + contextGetStub: vi.fn(), subscribeStub: vi.fn(), unsubscribeObserverStub: vi.fn(), })); @@ -20,7 +21,7 @@ const stubs = vi.hoisted(() => ({ const stubbedAppBridgeTheme = () => ({ context: stubs.contextStub.mockReturnValue({ - get: () => INITIAL_LANGUAGE, + get: stubs.contextGetStub.mockReturnValue(INITIAL_LANGUAGE), subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), }), }) as unknown as AppBridgeTheme; @@ -63,6 +64,7 @@ describe('useLanguage', () => { act(() => { if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(UPDATED_LANGUAGE); stubs.subscribeStub.mock.calls[0][0](UPDATED_LANGUAGE); stubs.subscribeStub.mock.calls[1][0](UPDATED_LANGUAGE); } diff --git a/packages/app-bridge-theme/src/react/useLanguage.ts b/packages/app-bridge-theme/src/react/useLanguage.ts index 3f7f8a5f1..baecc978e 100644 --- a/packages/app-bridge-theme/src/react/useLanguage.ts +++ b/packages/app-bridge-theme/src/react/useLanguage.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { useEffect, useState } from 'react'; +import { useSyncExternalStore } from 'react'; import { type AppBridgeTheme } from '../AppBridgeTheme.ts'; @@ -10,18 +10,14 @@ type UseLanguageReturn = { }; export const useLanguage = (appBridge: AppBridgeTheme): UseLanguageReturn => { - const [currentLanguage, setCurrentLanguage] = useState(appBridge.context('currentLanguage').get()); - const [defaultLanguage, setDefaultLanguage] = useState(appBridge.context('defaultLanguage').get()); - - useEffect(() => { - const unsubscribeCurrentLanguageObserver = appBridge.context('currentLanguage').subscribe(setCurrentLanguage); - const unsubscribeDefaultLanguageObserver = appBridge.context('defaultLanguage').subscribe(setDefaultLanguage); - - return () => { - unsubscribeCurrentLanguageObserver(); - unsubscribeDefaultLanguageObserver(); - }; - }, [appBridge]); + const currentLanguage = useSyncExternalStore( + appBridge.context('currentLanguage').subscribe, + appBridge.context('currentLanguage').get, + ); + const defaultLanguage = useSyncExternalStore( + appBridge.context('defaultLanguage').subscribe, + appBridge.context('defaultLanguage').get, + ); return { currentLanguage, defaultLanguage }; }; From 6bcd595dacebd55520f1cf87bc8fcbf849cc80d2 Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Mon, 15 Jul 2024 15:13:58 +0200 Subject: [PATCH 107/182] feat: appBridgeTheme document navigation command (#1040) * current commands * add fetchDocumentNavigation command and context * renaming command * hook and test * clean type * import order * changeset --- .changeset/tasty-vans-cough.md | 5 + packages/app-bridge-theme/src/react/index.ts | 1 + .../src/react/useDocumentNavigation.spec.ts | 146 ++++++++++++++++++ .../src/react/useDocumentNavigation.ts | 21 +++ .../src/registries/CommandRegistry.ts | 3 +- .../HydrateContextDocumentNavigation.ts | 12 ++ .../src/registries/commands/Navigate.ts | 10 ++ .../commands/NavigateToDocumentSection.ts | 12 ++ .../src/registries/commands/SearchDialog.ts | 13 ++ .../src/registries/commands/index.ts | 6 + .../app-bridge-theme/src/registries/index.ts | 1 + .../app-bridge-theme/src/types/Context.ts | 2 + .../src/types/GuidelineSearchResult.ts | 2 +- 13 files changed, 232 insertions(+), 2 deletions(-) create mode 100644 .changeset/tasty-vans-cough.md create mode 100644 packages/app-bridge-theme/src/react/useDocumentNavigation.spec.ts create mode 100644 packages/app-bridge-theme/src/react/useDocumentNavigation.ts create mode 100644 packages/app-bridge-theme/src/registries/commands/HydrateContextDocumentNavigation.ts create mode 100644 packages/app-bridge-theme/src/registries/commands/Navigate.ts create mode 100644 packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts create mode 100644 packages/app-bridge-theme/src/registries/commands/SearchDialog.ts create mode 100644 packages/app-bridge-theme/src/registries/commands/index.ts diff --git a/.changeset/tasty-vans-cough.md b/.changeset/tasty-vans-cough.md new file mode 100644 index 000000000..6d1d7f302 --- /dev/null +++ b/.changeset/tasty-vans-cough.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: (AppBridgeTheme) documentNavigation in context and command diff --git a/packages/app-bridge-theme/src/react/index.ts b/packages/app-bridge-theme/src/react/index.ts index a602fc64b..bb0e822c6 100644 --- a/packages/app-bridge-theme/src/react/index.ts +++ b/packages/app-bridge-theme/src/react/index.ts @@ -2,3 +2,4 @@ export * from './useIsEditing'; export * from './useLanguage'; +export * from './useDocumentNavigation'; diff --git a/packages/app-bridge-theme/src/react/useDocumentNavigation.spec.ts b/packages/app-bridge-theme/src/react/useDocumentNavigation.spec.ts new file mode 100644 index 000000000..0c14df46f --- /dev/null +++ b/packages/app-bridge-theme/src/react/useDocumentNavigation.spec.ts @@ -0,0 +1,146 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { + type DocumentPageNavigationItem, + type DocumentChildNavigationItem, + type DocumentNavigationItem, +} from 'src/types'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +import { useDocumentNavigation } from './useDocumentNavigation'; + +const DocumentPageDummy = (id: number) => + ({ + type: 'document', + + id: () => { + return id; + }, + slug: (language: string) => { + return `dummy-page-slug-${id}-${language}`; + }, + + title: (language: string) => { + return `Dummy Page title - ${id} - ${language}`; + }, + + url: (language: string) => { + return `page-${id}-${language}`; + }, + }) as unknown as DocumentPageNavigationItem; + +const DocumentDummy = (id: number, children: DocumentChildNavigationItem[]) => + ({ + type: 'document', + + id: () => { + return id; + }, + + children: () => { + return children; + }, + + slug: (language: string) => { + return `dummy-doc-slug-${id}-${language}`; + }, + + title: (language: string) => { + return `Dummy Doc title - ${id} - ${language}`; + }, + + url: (language: string) => { + return `https://blah/doc/${id}/${language}`; + }, + }) as unknown as DocumentNavigationItem; + +const DOCUMENT_ID = 120; +const DOCUMENT_ID_2 = 130; +const DOCUMENT_PAGE_ID = 121; +const DOCUMENT_PAGE_ID_2 = 131; + +const DOCUMENT_DUMMY = DocumentDummy(DOCUMENT_ID, [DocumentPageDummy(DOCUMENT_PAGE_ID)]); +const DOCUMENT_DUMMY_2 = DocumentDummy(DOCUMENT_ID_2, [DocumentPageDummy(DOCUMENT_PAGE_ID_2)]); +const DOCUMENT_NAVIGATION = { + [DOCUMENT_ID]: [DocumentPageDummy(DOCUMENT_PAGE_ID)], +}; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + contextGetStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), + dispatch: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: stubs.contextGetStub.mockReturnValue(DOCUMENT_NAVIGATION), + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + dispatch: stubs.dispatch, + }) as unknown as AppBridgeTheme; + +describe('useDocumentNavigation', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with DocumentNavigation', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useDocumentNavigation(appBridgeTheme, DOCUMENT_DUMMY)); + + expect(stubs.contextStub).toHaveBeenCalled(); + expect(stubs.dispatch).toHaveBeenCalled(); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useDocumentNavigation(appBridgeTheme, DOCUMENT_DUMMY)); + + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); + }); + + it('should return the correct initial DocumentNavigation state', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useDocumentNavigation(appBridgeTheme, DOCUMENT_DUMMY)); + + expect(result.current).toEqual(DOCUMENT_NAVIGATION[DOCUMENT_ID]); + }); + + it('should update the DocumentNavigation state on change', async () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useDocumentNavigation(appBridgeTheme, DOCUMENT_DUMMY)); + + expect(result.current).toEqual(DOCUMENT_NAVIGATION[DOCUMENT_ID]); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(DOCUMENT_DUMMY_2); + stubs.subscribeStub.mock.calls[0][0](DOCUMENT_DUMMY_2); + } + }); + + expect(stubs.dispatch).toHaveBeenCalled(); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => useDocumentNavigation(appBridgeTheme, DOCUMENT_DUMMY)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge-theme/src/react/useDocumentNavigation.ts b/packages/app-bridge-theme/src/react/useDocumentNavigation.ts new file mode 100644 index 000000000..cc72058c7 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useDocumentNavigation.ts @@ -0,0 +1,21 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useEffect, useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from 'src/AppBridgeTheme'; + +import { hydrateContextDocumentNavigation } from '../registries/commands/HydrateContextDocumentNavigation'; +import { type DocumentNavigationItem, type DocumentChildNavigationItem } from '../types/Guideline'; + +export const useDocumentNavigation = (appBridge: AppBridgeTheme, document: DocumentNavigationItem) => { + const documentNavigation: Record = useSyncExternalStore( + appBridge.context('documentNavigation').subscribe, + appBridge.context('documentNavigation').get, + ); + + useEffect(() => { + appBridge.dispatch(hydrateContextDocumentNavigation(document.id())); + }, [appBridge, document]); + + return documentNavigation[document.id()] ?? []; +}; diff --git a/packages/app-bridge-theme/src/registries/CommandRegistry.ts b/packages/app-bridge-theme/src/registries/CommandRegistry.ts index 38d69f88c..8d4c2b378 100644 --- a/packages/app-bridge-theme/src/registries/CommandRegistry.ts +++ b/packages/app-bridge-theme/src/registries/CommandRegistry.ts @@ -9,6 +9,7 @@ export type CommandRegistry = CommandNameValidator<{ closeSearchDialog: void; navigate: string; navigateToDocumentSection: number | string; + hydrateContextDocumentNavigation: number; }>; type CommandNameValidator = Simplify< @@ -17,4 +18,4 @@ type CommandNameValidator = Simplify< type CommandNamePattern = { [commandName: `${CommandVerb}${string}`]: unknown }; -type CommandVerb = 'open' | 'close' | 'navigate' | 'download'; +type CommandVerb = 'open' | 'close' | 'navigate' | 'hydrateContext'; diff --git a/packages/app-bridge-theme/src/registries/commands/HydrateContextDocumentNavigation.ts b/packages/app-bridge-theme/src/registries/commands/HydrateContextDocumentNavigation.ts new file mode 100644 index 000000000..3063475b9 --- /dev/null +++ b/packages/app-bridge-theme/src/registries/commands/HydrateContextDocumentNavigation.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type DispatchHandlerParameter } from 'src/types/Command'; + +import { type CommandRegistry } from '../CommandRegistry'; + +export const hydrateContextDocumentNavigation = ( + documentId: CommandRegistry['hydrateContextDocumentNavigation'], +): DispatchHandlerParameter<'hydrateContextDocumentNavigation', CommandRegistry> => ({ + name: 'hydrateContextDocumentNavigation', + payload: documentId, +}); diff --git a/packages/app-bridge-theme/src/registries/commands/Navigate.ts b/packages/app-bridge-theme/src/registries/commands/Navigate.ts new file mode 100644 index 000000000..955f463a3 --- /dev/null +++ b/packages/app-bridge-theme/src/registries/commands/Navigate.ts @@ -0,0 +1,10 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type DispatchHandlerParameter } from 'src/types/Command'; + +import { type CommandRegistry } from '../CommandRegistry'; + +export const navigate = (path: CommandRegistry['navigate']): DispatchHandlerParameter<'navigate', CommandRegistry> => ({ + name: 'navigate', + payload: path, +}); diff --git a/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts b/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts new file mode 100644 index 000000000..7d26ddf30 --- /dev/null +++ b/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type DispatchHandlerParameter } from 'src/types/Command'; + +import { type CommandRegistry } from '../CommandRegistry'; + +export const navigateToDocumentSection = ( + sectionId: CommandRegistry['navigateToDocumentSection'], +): DispatchHandlerParameter<'navigateToDocumentSection', CommandRegistry> => ({ + name: 'navigateToDocumentSection', + payload: sectionId, +}); diff --git a/packages/app-bridge-theme/src/registries/commands/SearchDialog.ts b/packages/app-bridge-theme/src/registries/commands/SearchDialog.ts new file mode 100644 index 000000000..cfffba99f --- /dev/null +++ b/packages/app-bridge-theme/src/registries/commands/SearchDialog.ts @@ -0,0 +1,13 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type DispatchHandlerParameter } from 'src/types/Command'; + +import { type CommandRegistry } from '../CommandRegistry'; + +export const openSearchDialog = (): DispatchHandlerParameter<'openSearchDialog', CommandRegistry> => ({ + name: 'openSearchDialog', +}); + +export const closeSearchDialog = (): DispatchHandlerParameter<'closeSearchDialog', CommandRegistry> => ({ + name: 'closeSearchDialog', +}); diff --git a/packages/app-bridge-theme/src/registries/commands/index.ts b/packages/app-bridge-theme/src/registries/commands/index.ts new file mode 100644 index 000000000..15f62037d --- /dev/null +++ b/packages/app-bridge-theme/src/registries/commands/index.ts @@ -0,0 +1,6 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './SearchDialog'; +export * from './Navigate'; +export * from './NavigateToDocumentSection'; +export * from './HydrateContextDocumentNavigation'; diff --git a/packages/app-bridge-theme/src/registries/index.ts b/packages/app-bridge-theme/src/registries/index.ts index 24c572e4b..983ed724d 100644 --- a/packages/app-bridge-theme/src/registries/index.ts +++ b/packages/app-bridge-theme/src/registries/index.ts @@ -2,3 +2,4 @@ export * from './CommandRegistry'; export * from './EventRegistry'; +export * from './commands'; diff --git a/packages/app-bridge-theme/src/types/Context.ts b/packages/app-bridge-theme/src/types/Context.ts index fe93409ff..45f027964 100644 --- a/packages/app-bridge-theme/src/types/Context.ts +++ b/packages/app-bridge-theme/src/types/Context.ts @@ -9,6 +9,7 @@ import { type Document, type DocumentLibrary, type DocumentPage, + type DocumentChildNavigationItem, } from './Guideline'; import { type Language } from './Language'; import { type ThemeTemplate } from './ThemeTemplate'; @@ -25,6 +26,7 @@ export type Context = { projectId: number; portalId: number; portalNavigation: PortalNavigationItem[] | null; + documentNavigation: Record; portalToken: string | null; currentLanguage: string; defaultLanguage: string; diff --git a/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts b/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts index 7f80b6885..5bfd27ec1 100644 --- a/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts +++ b/packages/app-bridge-theme/src/types/GuidelineSearchResult.ts @@ -5,7 +5,7 @@ export const GuidelineSearchResultTypeMap = { section: 'SECTION', page: 'PAGE', color: 'COLOR', -} as const; +}; type GuidelineSearchResultType = (typeof GuidelineSearchResultTypeMap)[keyof typeof GuidelineSearchResultTypeMap]; export type GuidelineSearchResult = { From de1d603387830b75b8051db1a1bb7b0d56fceb32 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 15:25:44 +0200 Subject: [PATCH 108/182] chore: release packages (alpha) (#1033) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 ++++ packages/app-bridge-theme/CHANGELOG.md | 12 ++++++++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 763893c99..5311a6ee7 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -18,6 +18,7 @@ "cuddly-pets-hammer", "curly-pots-scream", "dry-mangos-fix", + "eleven-shrimps-jog", "fast-houses-hunt", "few-islands-build", "five-mangos-search", @@ -48,12 +49,15 @@ "red-islands-report", "rich-olives-repeat", "shaggy-mugs-speak", + "shiny-poets-enjoy", "shy-jobs-protect", "smart-suns-type", "smooth-planets-pay", "spicy-books-shout", "stale-hairs-wash", "strong-tools-check", + "tasty-coins-jam", + "tasty-vans-cough", "ten-guests-wash", "thirty-pears-lay", "tough-nails-shout", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index aa9cdd270..c0fb11f9f 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,17 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.11 + +### Patch Changes + +- [#1031](https://github.com/Frontify/brand-sdk/pull/1031) [`54fd9e7`](https://github.com/Frontify/brand-sdk/commit/54fd9e7a4d973d7b47e67d5e7cc1c1309255e0ea) Thanks [@mike85](https://github.com/mike85)! - chore(AppBridgeTheme): add vitest to app bridge theme + +- [#1032](https://github.com/Frontify/brand-sdk/pull/1032) [`19346b8`](https://github.com/Frontify/brand-sdk/commit/19346b8a27cc1e2efb6cd6c61884496ddd67a34c) Thanks [@mike85](https://github.com/mike85)! - feat(AppBridgeTheme): add use language hook + +- [#1034](https://github.com/Frontify/brand-sdk/pull/1034) [`562990d`](https://github.com/Frontify/brand-sdk/commit/562990de5485cebebcb840ddb5abf74d1abe4357) Thanks [@mike85](https://github.com/mike85)! - feat: add useIsEditing hook + +- [#1040](https://github.com/Frontify/brand-sdk/pull/1040) [`6bcd595`](https://github.com/Frontify/brand-sdk/commit/6bcd595dacebd55520f1cf87bc8fcbf849cc80d2) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: (AppBridgeTheme) documentNavigation in context and command + ## 0.0.0-alpha.10 ### Minor Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index b3092f3ca..2fa85cc8e 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.10", + "version": "0.0.0-alpha.11", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From e345d2747d00efeadd8130dcde7f0dd1f2c398bf Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Mon, 15 Jul 2024 15:28:25 +0200 Subject: [PATCH 109/182] feat: add documentId to GuidelineDocumentCategory event payload (#1042) * feat: add documentId to GuidelineDocumentCategory events * changeset --- .changeset/hip-foxes-listen.md | 5 +++++ .../app-bridge/src/react/useDocumentCategories.spec.ts | 8 ++++---- .../app-bridge/src/react/useDocumentNavigation.spec.ts | 2 +- packages/app-bridge/src/react/useGuidelineActions.ts | 9 +++++++-- packages/app-bridge/src/types/Emitter.ts | 2 +- 5 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 .changeset/hip-foxes-listen.md diff --git a/.changeset/hip-foxes-listen.md b/.changeset/hip-foxes-listen.md new file mode 100644 index 000000000..72d239439 --- /dev/null +++ b/.changeset/hip-foxes-listen.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +feat: add documentId to GuidelineDocumentCategory events diff --git a/packages/app-bridge/src/react/useDocumentCategories.spec.ts b/packages/app-bridge/src/react/useDocumentCategories.spec.ts index 47717d4e8..804c46bd6 100644 --- a/packages/app-bridge/src/react/useDocumentCategories.spec.ts +++ b/packages/app-bridge/src/react/useDocumentCategories.spec.ts @@ -339,7 +339,7 @@ describe('useDocumentCategories', () => { // Trigger a "document page add" event in the specified document window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { action: 'add', - documentPage: { id: DOCUMENT_PAGE_ID, categoryId: DOCUMENT_CATEGORY_ID_2 }, + documentPage: { id: DOCUMENT_PAGE_ID, categoryId: DOCUMENT_CATEGORY_ID_2, documentId: DOCUMENT_ID }, }); await waitFor(() => { @@ -370,7 +370,7 @@ describe('useDocumentCategories', () => { // Trigger a "document page add" event in the specified document window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { action: 'add', - documentPage: { id: DOCUMENT_PAGE_ID, categoryId: DOCUMENT_CATEGORY_ID_4 }, + documentPage: { id: DOCUMENT_PAGE_ID, categoryId: DOCUMENT_CATEGORY_ID_4, documentId: DOCUMENT_ID }, }); await waitFor(() => { @@ -401,7 +401,7 @@ describe('useDocumentCategories', () => { // Trigger a "document page delete" event in the specified document window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { action: 'delete', - documentPage: { id: DOCUMENT_PAGE_ID, categoryId: DOCUMENT_CATEGORY_ID_3 }, + documentPage: { id: DOCUMENT_PAGE_ID, categoryId: DOCUMENT_CATEGORY_ID_3, documentId: DOCUMENT_ID }, }); await waitFor(() => { @@ -432,7 +432,7 @@ describe('useDocumentCategories', () => { // Trigger a "document page delete" event in the specified document window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { action: 'delete', - documentPage: { id: DOCUMENT_PAGE_ID, categoryId: DOCUMENT_CATEGORY_ID_4 }, + documentPage: { id: DOCUMENT_PAGE_ID, categoryId: DOCUMENT_CATEGORY_ID_4, documentId: DOCUMENT_ID }, }); await waitFor(() => { diff --git a/packages/app-bridge/src/react/useDocumentNavigation.spec.ts b/packages/app-bridge/src/react/useDocumentNavigation.spec.ts index a5ccf2bb3..ce08c2d3a 100644 --- a/packages/app-bridge/src/react/useDocumentNavigation.spec.ts +++ b/packages/app-bridge/src/react/useDocumentNavigation.spec.ts @@ -86,7 +86,7 @@ describe('useDocumentNavigation', () => { testEventHandler(() => { window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { action: 'add', - documentPage: { categoryId: 0, id: 0 }, + documentPage: { categoryId: 0, id: 0, documentId: 0 }, }); })); diff --git a/packages/app-bridge/src/react/useGuidelineActions.ts b/packages/app-bridge/src/react/useGuidelineActions.ts index 43aeb604d..1566b79f2 100644 --- a/packages/app-bridge/src/react/useGuidelineActions.ts +++ b/packages/app-bridge/src/react/useGuidelineActions.ts @@ -260,6 +260,7 @@ export const useGuidelineActions = (appBridge: AppBridgeTheme) => { documentPage: { id: result.id, categoryId: documentPage.categoryId, + documentId: documentPage.documentId, }, action: 'add', }); @@ -310,7 +311,11 @@ export const useGuidelineActions = (appBridge: AppBridgeTheme) => { if (documentPage.categoryId) { window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { - documentPage: { ...documentPage, categoryId: documentPage.categoryId }, + documentPage: { + ...documentPage, + categoryId: documentPage.categoryId, + documentId: documentPage.documentId, + }, action: 'delete', }); } else { @@ -334,7 +339,7 @@ export const useGuidelineActions = (appBridge: AppBridgeTheme) => { if (categoryId) { window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { - documentPage: { id: duplicatedDocumentPage.id, categoryId }, + documentPage: { id: duplicatedDocumentPage.id, categoryId, documentId }, action: 'add', }); } diff --git a/packages/app-bridge/src/types/Emitter.ts b/packages/app-bridge/src/types/Emitter.ts index 4e7c000c2..dab5f3718 100644 --- a/packages/app-bridge/src/types/Emitter.ts +++ b/packages/app-bridge/src/types/Emitter.ts @@ -142,7 +142,7 @@ export type EmitterEvents = { }; 'AppBridge:GuidelineDocumentCategory:DocumentPageAction': { - documentPage: { id: number; categoryId: number }; + documentPage: { id: number; categoryId: number; documentId: number }; action: 'add' | 'delete'; }; From 018fcc4db6b9cf7a2484e4fa2e69d6e2e3cd6145 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 15:41:43 +0200 Subject: [PATCH 110/182] chore: release packages (alpha) (#1043) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 5311a6ee7..576b82565 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -28,6 +28,7 @@ "gorgeous-seas-search", "great-dolls-enjoy", "hip-days-applaud", + "hip-foxes-listen", "khaki-dryers-shout", "kind-fishes-flash", "light-crews-report", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 509363598..b4cb7ac8f 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.34 + +### Patch Changes + +- [#1042](https://github.com/Frontify/brand-sdk/pull/1042) [`e345d27`](https://github.com/Frontify/brand-sdk/commit/e345d2747d00efeadd8130dcde7f0dd1f2c398bf) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add documentId to GuidelineDocumentCategory events + ## 4.0.0-alpha.33 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index e6fb7d111..677477944 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.33", + "version": "4.0.0-alpha.34", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From facc3e647ce74bec3a8683889ebe493b88038e46 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Tue, 16 Jul 2024 10:30:46 +0200 Subject: [PATCH 111/182] fix(AppBridgeTheme): update imports (#1046) * fix(AppBridgeTheme): update imports * Create shiny-beds-thank.md --- .changeset/shiny-beds-thank.md | 5 +++++ .../app-bridge-theme/src/react/useDocumentNavigation.spec.ts | 5 ++--- packages/app-bridge-theme/src/react/useDocumentNavigation.ts | 5 ++--- .../registries/commands/HydrateContextDocumentNavigation.ts | 3 +-- .../app-bridge-theme/src/registries/commands/Navigate.ts | 3 +-- .../src/registries/commands/NavigateToDocumentSection.ts | 3 +-- .../app-bridge-theme/src/registries/commands/SearchDialog.ts | 3 +-- 7 files changed, 13 insertions(+), 14 deletions(-) create mode 100644 .changeset/shiny-beds-thank.md diff --git a/.changeset/shiny-beds-thank.md b/.changeset/shiny-beds-thank.md new file mode 100644 index 000000000..ba4ade4f3 --- /dev/null +++ b/.changeset/shiny-beds-thank.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +fix(AppBridgeTheme): update imports diff --git a/packages/app-bridge-theme/src/react/useDocumentNavigation.spec.ts b/packages/app-bridge-theme/src/react/useDocumentNavigation.spec.ts index 0c14df46f..0035ed9f6 100644 --- a/packages/app-bridge-theme/src/react/useDocumentNavigation.spec.ts +++ b/packages/app-bridge-theme/src/react/useDocumentNavigation.spec.ts @@ -4,13 +4,12 @@ import { renderHook } from '@testing-library/react'; import { act } from 'react'; import { describe, expect, it, vi, beforeEach } from 'vitest'; +import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type DocumentPageNavigationItem, type DocumentChildNavigationItem, type DocumentNavigationItem, -} from 'src/types'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; +} from '../types'; import { useDocumentNavigation } from './useDocumentNavigation'; diff --git a/packages/app-bridge-theme/src/react/useDocumentNavigation.ts b/packages/app-bridge-theme/src/react/useDocumentNavigation.ts index cc72058c7..8290f72da 100644 --- a/packages/app-bridge-theme/src/react/useDocumentNavigation.ts +++ b/packages/app-bridge-theme/src/react/useDocumentNavigation.ts @@ -2,8 +2,7 @@ import { useEffect, useSyncExternalStore } from 'react'; -import { type AppBridgeTheme } from 'src/AppBridgeTheme'; - +import { type AppBridgeTheme } from '../AppBridgeTheme.ts'; import { hydrateContextDocumentNavigation } from '../registries/commands/HydrateContextDocumentNavigation'; import { type DocumentNavigationItem, type DocumentChildNavigationItem } from '../types/Guideline'; @@ -17,5 +16,5 @@ export const useDocumentNavigation = (appBridge: AppBridgeTheme, document: Docum appBridge.dispatch(hydrateContextDocumentNavigation(document.id())); }, [appBridge, document]); - return documentNavigation[document.id()] ?? []; + return documentNavigation ? documentNavigation[document.id()] ?? [] : []; }; diff --git a/packages/app-bridge-theme/src/registries/commands/HydrateContextDocumentNavigation.ts b/packages/app-bridge-theme/src/registries/commands/HydrateContextDocumentNavigation.ts index 3063475b9..932b64904 100644 --- a/packages/app-bridge-theme/src/registries/commands/HydrateContextDocumentNavigation.ts +++ b/packages/app-bridge-theme/src/registries/commands/HydrateContextDocumentNavigation.ts @@ -1,7 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type DispatchHandlerParameter } from 'src/types/Command'; - +import { type DispatchHandlerParameter } from '../../types'; import { type CommandRegistry } from '../CommandRegistry'; export const hydrateContextDocumentNavigation = ( diff --git a/packages/app-bridge-theme/src/registries/commands/Navigate.ts b/packages/app-bridge-theme/src/registries/commands/Navigate.ts index 955f463a3..e2b0333fa 100644 --- a/packages/app-bridge-theme/src/registries/commands/Navigate.ts +++ b/packages/app-bridge-theme/src/registries/commands/Navigate.ts @@ -1,7 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type DispatchHandlerParameter } from 'src/types/Command'; - +import { type DispatchHandlerParameter } from '../../types'; import { type CommandRegistry } from '../CommandRegistry'; export const navigate = (path: CommandRegistry['navigate']): DispatchHandlerParameter<'navigate', CommandRegistry> => ({ diff --git a/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts b/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts index 7d26ddf30..895d1c6e8 100644 --- a/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts +++ b/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts @@ -1,7 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type DispatchHandlerParameter } from 'src/types/Command'; - +import { type DispatchHandlerParameter } from '../../types'; import { type CommandRegistry } from '../CommandRegistry'; export const navigateToDocumentSection = ( diff --git a/packages/app-bridge-theme/src/registries/commands/SearchDialog.ts b/packages/app-bridge-theme/src/registries/commands/SearchDialog.ts index cfffba99f..ec4adbb07 100644 --- a/packages/app-bridge-theme/src/registries/commands/SearchDialog.ts +++ b/packages/app-bridge-theme/src/registries/commands/SearchDialog.ts @@ -1,7 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type DispatchHandlerParameter } from 'src/types/Command'; - +import { type DispatchHandlerParameter } from '../../types'; import { type CommandRegistry } from '../CommandRegistry'; export const openSearchDialog = (): DispatchHandlerParameter<'openSearchDialog', CommandRegistry> => ({ From 5812436b377e5b97e4f538c2567eecd2f191cef8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 12:56:51 +0200 Subject: [PATCH 112/182] chore: release packages (alpha) (#1050) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 576b82565..78c70b107 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -50,6 +50,7 @@ "red-islands-report", "rich-olives-repeat", "shaggy-mugs-speak", + "shiny-beds-thank", "shiny-poets-enjoy", "shy-jobs-protect", "smart-suns-type", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index c0fb11f9f..e0bf1fe0d 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.12 + +### Patch Changes + +- [#1046](https://github.com/Frontify/brand-sdk/pull/1046) [`facc3e6`](https://github.com/Frontify/brand-sdk/commit/facc3e647ce74bec3a8683889ebe493b88038e46) Thanks [@mike85](https://github.com/mike85)! - fix(AppBridgeTheme): update imports + ## 0.0.0-alpha.11 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 2fa85cc8e..25c23cf6f 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.11", + "version": "0.0.0-alpha.12", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 16ec9d1ae5ced64bde74b275004cb632cba462b9 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Wed, 17 Jul 2024 11:21:47 +0200 Subject: [PATCH 113/182] feat(AppBridgeTheme): add context hooks (#1051) * feat(AppBridgeTheme): add context hooks * Create early-masks-appear.md * refactor: split language hooks --- .changeset/early-masks-appear.md | 5 + packages/app-bridge-theme/src/react/index.ts | 9 +- ...age.spec.ts => useCurrentLanguage.spec.ts} | 32 +++-- .../src/react/useCurrentLanguage.ts | 12 ++ .../src/react/useDefaultLanguage.spec.ts | 82 +++++++++++++ .../src/react/useDefaultLanguage.ts | 12 ++ .../src/react/useIsEditing.ts | 2 +- .../app-bridge-theme/src/react/useLanguage.ts | 23 ---- .../src/react/useLanguages.spec.ts | 116 ++++++++++++++++++ .../src/react/useLanguages.ts | 9 ++ .../src/react/usePortalNavigation.spec.ts | 94 ++++++++++++++ .../src/react/usePortalNavigation.ts | 14 +++ .../src/react/useSettings.spec.ts | 84 +++++++++++++ .../app-bridge-theme/src/react/useSettings.ts | 13 ++ .../src/react/useTemplateContext.spec.ts | 107 ++++++++++++++++ .../src/react/useTemplateContext.ts | 10 ++ 16 files changed, 580 insertions(+), 44 deletions(-) create mode 100644 .changeset/early-masks-appear.md rename packages/app-bridge-theme/src/react/{useLanguage.spec.ts => useCurrentLanguage.spec.ts} (58%) create mode 100644 packages/app-bridge-theme/src/react/useCurrentLanguage.ts create mode 100644 packages/app-bridge-theme/src/react/useDefaultLanguage.spec.ts create mode 100644 packages/app-bridge-theme/src/react/useDefaultLanguage.ts delete mode 100644 packages/app-bridge-theme/src/react/useLanguage.ts create mode 100644 packages/app-bridge-theme/src/react/useLanguages.spec.ts create mode 100644 packages/app-bridge-theme/src/react/useLanguages.ts create mode 100644 packages/app-bridge-theme/src/react/usePortalNavigation.spec.ts create mode 100644 packages/app-bridge-theme/src/react/usePortalNavigation.ts create mode 100644 packages/app-bridge-theme/src/react/useSettings.spec.ts create mode 100644 packages/app-bridge-theme/src/react/useSettings.ts create mode 100644 packages/app-bridge-theme/src/react/useTemplateContext.spec.ts create mode 100644 packages/app-bridge-theme/src/react/useTemplateContext.ts diff --git a/.changeset/early-masks-appear.md b/.changeset/early-masks-appear.md new file mode 100644 index 000000000..59bc79263 --- /dev/null +++ b/.changeset/early-masks-appear.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat(AppBridgeTheme): add context hooks diff --git a/packages/app-bridge-theme/src/react/index.ts b/packages/app-bridge-theme/src/react/index.ts index bb0e822c6..9a5dc03b2 100644 --- a/packages/app-bridge-theme/src/react/index.ts +++ b/packages/app-bridge-theme/src/react/index.ts @@ -1,5 +1,10 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -export * from './useIsEditing'; -export * from './useLanguage'; export * from './useDocumentNavigation'; +export * from './useIsEditing'; +export * from './useCurrentLanguage'; +export * from './useDefaultLanguage'; +export * from './useLanguages'; +export * from './usePortalNavigation'; +export * from './useSettings'; +export * from './useTemplateContext'; diff --git a/packages/app-bridge-theme/src/react/useLanguage.spec.ts b/packages/app-bridge-theme/src/react/useCurrentLanguage.spec.ts similarity index 58% rename from packages/app-bridge-theme/src/react/useLanguage.spec.ts rename to packages/app-bridge-theme/src/react/useCurrentLanguage.spec.ts index ac2576839..5f9c16fea 100644 --- a/packages/app-bridge-theme/src/react/useLanguage.spec.ts +++ b/packages/app-bridge-theme/src/react/useCurrentLanguage.spec.ts @@ -6,7 +6,7 @@ import { describe, expect, it, vi, beforeEach } from 'vitest'; import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { useLanguage } from './useLanguage'; +import { useCurrentLanguage } from './useCurrentLanguage'; const INITIAL_LANGUAGE = 'de'; const UPDATED_LANGUAGE = 'es'; @@ -26,61 +26,57 @@ const stubbedAppBridgeTheme = () => }), }) as unknown as AppBridgeTheme; -describe('useLanguage', () => { +describe('useCurrentLanguage', () => { beforeEach(() => { vi.clearAllMocks(); }); - it('should call the context with currentLanguage and defaultLanguage', () => { + it('should call the context with currentLanguage', () => { const appBridgeTheme = stubbedAppBridgeTheme(); - renderHook(() => useLanguage(appBridgeTheme)); + renderHook(() => useCurrentLanguage(appBridgeTheme)); expect(stubs.contextStub).toHaveBeenCalledWith('currentLanguage'); - expect(stubs.contextStub).toHaveBeenCalledWith('defaultLanguage'); }); it('should subscribe to context updates', () => { const appBridgeTheme = stubbedAppBridgeTheme(); - renderHook(() => useLanguage(appBridgeTheme)); + renderHook(() => useCurrentLanguage(appBridgeTheme)); - expect(stubs.subscribeStub).toHaveBeenCalledTimes(2); + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); }); - it('should return the correct initial language', () => { + it('should return the correct initial currentLanguage', () => { const appBridgeTheme = stubbedAppBridgeTheme(); - const { result } = renderHook(() => useLanguage(appBridgeTheme)); + const { result } = renderHook(() => useCurrentLanguage(appBridgeTheme)); - expect(result.current.currentLanguage).toEqual(INITIAL_LANGUAGE); - expect(result.current.defaultLanguage).toEqual(INITIAL_LANGUAGE); + expect(result.current).toEqual(INITIAL_LANGUAGE); }); - it('should update the language on change', () => { + it('should update the currentLanguage on change', () => { const appBridgeTheme = stubbedAppBridgeTheme(); - const { result } = renderHook(() => useLanguage(appBridgeTheme)); + const { result } = renderHook(() => useCurrentLanguage(appBridgeTheme)); act(() => { if (vi.isMockFunction(stubs.subscribeStub)) { stubs.contextGetStub.mockReturnValue(UPDATED_LANGUAGE); stubs.subscribeStub.mock.calls[0][0](UPDATED_LANGUAGE); - stubs.subscribeStub.mock.calls[1][0](UPDATED_LANGUAGE); } }); - expect(result.current.currentLanguage).toEqual(UPDATED_LANGUAGE); - expect(result.current.defaultLanguage).toEqual(UPDATED_LANGUAGE); + expect(result.current).toEqual(UPDATED_LANGUAGE); }); it('should unsubscribe on unmount', () => { const appBridgeTheme = stubbedAppBridgeTheme(); - const { unmount } = renderHook(() => useLanguage(appBridgeTheme)); + const { unmount } = renderHook(() => useCurrentLanguage(appBridgeTheme)); unmount(); - expect(stubs.unsubscribeObserverStub).toHaveBeenCalledTimes(2); + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); }); }); diff --git a/packages/app-bridge-theme/src/react/useCurrentLanguage.ts b/packages/app-bridge-theme/src/react/useCurrentLanguage.ts new file mode 100644 index 000000000..c54ee4346 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useCurrentLanguage.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme.ts'; + +export const useCurrentLanguage = (appBridge: AppBridgeTheme) => { + return useSyncExternalStore( + appBridge.context('currentLanguage').subscribe, + appBridge.context('currentLanguage').get, + ); +}; diff --git a/packages/app-bridge-theme/src/react/useDefaultLanguage.spec.ts b/packages/app-bridge-theme/src/react/useDefaultLanguage.spec.ts new file mode 100644 index 000000000..0f93a4fdd --- /dev/null +++ b/packages/app-bridge-theme/src/react/useDefaultLanguage.spec.ts @@ -0,0 +1,82 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +import { useDefaultLanguage } from './useDefaultLanguage'; + +const INITIAL_LANGUAGE = 'de'; +const UPDATED_LANGUAGE = 'es'; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + contextGetStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: stubs.contextGetStub.mockReturnValue(INITIAL_LANGUAGE), + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + }) as unknown as AppBridgeTheme; + +describe('useDefaultLanguage', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with defaultLanguage', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useDefaultLanguage(appBridgeTheme)); + + expect(stubs.contextStub).toHaveBeenCalledWith('defaultLanguage'); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useDefaultLanguage(appBridgeTheme)); + + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); + }); + + it('should return the correct initial defaultLanguage', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useDefaultLanguage(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_LANGUAGE); + }); + + it('should update the defaultLanguage on change', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useDefaultLanguage(appBridgeTheme)); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(UPDATED_LANGUAGE); + stubs.subscribeStub.mock.calls[0][0](UPDATED_LANGUAGE); + } + }); + + expect(result.current).toEqual(UPDATED_LANGUAGE); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => useDefaultLanguage(appBridgeTheme)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge-theme/src/react/useDefaultLanguage.ts b/packages/app-bridge-theme/src/react/useDefaultLanguage.ts new file mode 100644 index 000000000..58c9d780c --- /dev/null +++ b/packages/app-bridge-theme/src/react/useDefaultLanguage.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme.ts'; + +export const useDefaultLanguage = (appBridge: AppBridgeTheme) => { + return useSyncExternalStore( + appBridge.context('defaultLanguage').subscribe, + appBridge.context('defaultLanguage').get, + ); +}; diff --git a/packages/app-bridge-theme/src/react/useIsEditing.ts b/packages/app-bridge-theme/src/react/useIsEditing.ts index 5dd01d553..b401c7156 100644 --- a/packages/app-bridge-theme/src/react/useIsEditing.ts +++ b/packages/app-bridge-theme/src/react/useIsEditing.ts @@ -4,6 +4,6 @@ import { useSyncExternalStore } from 'react'; import { type AppBridgeTheme } from '../AppBridgeTheme'; -export const useIsEditing = (appBridge: AppBridgeTheme): boolean => { +export const useIsEditing = (appBridge: AppBridgeTheme) => { return useSyncExternalStore(appBridge.context('isEditing').subscribe, appBridge.context('isEditing').get); }; diff --git a/packages/app-bridge-theme/src/react/useLanguage.ts b/packages/app-bridge-theme/src/react/useLanguage.ts deleted file mode 100644 index baecc978e..000000000 --- a/packages/app-bridge-theme/src/react/useLanguage.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useSyncExternalStore } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme.ts'; - -type UseLanguageReturn = { - currentLanguage: string; - defaultLanguage: string; -}; - -export const useLanguage = (appBridge: AppBridgeTheme): UseLanguageReturn => { - const currentLanguage = useSyncExternalStore( - appBridge.context('currentLanguage').subscribe, - appBridge.context('currentLanguage').get, - ); - const defaultLanguage = useSyncExternalStore( - appBridge.context('defaultLanguage').subscribe, - appBridge.context('defaultLanguage').get, - ); - - return { currentLanguage, defaultLanguage }; -}; diff --git a/packages/app-bridge-theme/src/react/useLanguages.spec.ts b/packages/app-bridge-theme/src/react/useLanguages.spec.ts new file mode 100644 index 000000000..f0e7c9789 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useLanguages.spec.ts @@ -0,0 +1,116 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +import { useLanguages } from './useLanguages'; + +const INITIAL_LANGUAGES = [ + { + isoCode: 'en', + name: 'English', + isDefault: true, + isDraft: false, + }, + { + isoCode: 'de', + name: 'Deutsch', + isDefault: false, + isDraft: false, + }, +]; +const UPDATED_LANGUAGES = [ + { + isoCode: 'en', + name: 'English', + isDefault: false, + isDraft: false, + }, + { + isoCode: 'de', + name: 'Deutsch', + isDefault: true, + isDraft: false, + }, + { + isoCode: 'fr', + name: 'Français', + isDefault: false, + isDraft: true, + }, +]; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + contextGetStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: stubs.contextGetStub.mockReturnValue(INITIAL_LANGUAGES), + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + }) as unknown as AppBridgeTheme; + +describe('useLanguages', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with languages', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useLanguages(appBridgeTheme)); + + expect(stubs.contextStub).toHaveBeenCalledWith('languages'); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useLanguages(appBridgeTheme)); + + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); + }); + + it('should return the correct initial languages state', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useLanguages(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_LANGUAGES); + }); + + it('should update the languages state on change', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useLanguages(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_LANGUAGES); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(UPDATED_LANGUAGES); + stubs.subscribeStub.mock.calls[0][0](UPDATED_LANGUAGES); + } + }); + + expect(result.current).toEqual(UPDATED_LANGUAGES); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => useLanguages(appBridgeTheme)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge-theme/src/react/useLanguages.ts b/packages/app-bridge-theme/src/react/useLanguages.ts new file mode 100644 index 000000000..7f2967648 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useLanguages.ts @@ -0,0 +1,9 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme.ts'; + +export const useLanguages = (appBridge: AppBridgeTheme) => { + return useSyncExternalStore(appBridge.context('languages').subscribe, appBridge.context('languages').get); +}; diff --git a/packages/app-bridge-theme/src/react/usePortalNavigation.spec.ts b/packages/app-bridge-theme/src/react/usePortalNavigation.spec.ts new file mode 100644 index 000000000..11097b527 --- /dev/null +++ b/packages/app-bridge-theme/src/react/usePortalNavigation.spec.ts @@ -0,0 +1,94 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; +import { type DocumentNavigationItem } from '../types'; + +import { usePortalNavigation } from './usePortalNavigation'; + +const DocumentDummy = (id: number) => + ({ + type: 'document', + + id: () => { + return id; + }, + }) as unknown as DocumentNavigationItem; + +const INITIAL_PORTAL_NAVIGATION = [DocumentDummy(532), DocumentDummy(682), DocumentDummy(746)]; +const UPDATED_PORTAL_NAVIGATION = [DocumentDummy(8425), DocumentDummy(9634)]; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + contextGetStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: stubs.contextGetStub.mockReturnValue(INITIAL_PORTAL_NAVIGATION), + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + }) as unknown as AppBridgeTheme; + +describe('usePortalNavigation', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with portalNavigation', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => usePortalNavigation(appBridgeTheme)); + + expect(stubs.contextStub).toHaveBeenCalledWith('portalNavigation'); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => usePortalNavigation(appBridgeTheme)); + + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); + }); + + it('should return the correct initial portalNavigation state', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => usePortalNavigation(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_PORTAL_NAVIGATION); + }); + + it('should update the portalNavigation state on change', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => usePortalNavigation(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_PORTAL_NAVIGATION); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(UPDATED_PORTAL_NAVIGATION); + stubs.subscribeStub.mock.calls[0][0](UPDATED_PORTAL_NAVIGATION); + } + }); + + expect(result.current).toEqual(UPDATED_PORTAL_NAVIGATION); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => usePortalNavigation(appBridgeTheme)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge-theme/src/react/usePortalNavigation.ts b/packages/app-bridge-theme/src/react/usePortalNavigation.ts new file mode 100644 index 000000000..2588c220a --- /dev/null +++ b/packages/app-bridge-theme/src/react/usePortalNavigation.ts @@ -0,0 +1,14 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +export const usePortalNavigation = (appBridge: AppBridgeTheme) => { + const portalNavigation = useSyncExternalStore( + appBridge.context('portalNavigation').subscribe, + appBridge.context('portalNavigation').get, + ); + + return portalNavigation ?? []; +}; diff --git a/packages/app-bridge-theme/src/react/useSettings.spec.ts b/packages/app-bridge-theme/src/react/useSettings.spec.ts new file mode 100644 index 000000000..6094f552c --- /dev/null +++ b/packages/app-bridge-theme/src/react/useSettings.spec.ts @@ -0,0 +1,84 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +import { useSettings } from './useSettings'; + +const INITIAL_SETTINGS = { templateSettings: { color: 'red' }, templateAssets: { logo: [] } }; +const UPDATED_SETTINGS = { templateSettings: { color: 'blue', isSticky: false }, templateAssets: {} }; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + contextGetStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: stubs.contextGetStub.mockReturnValue(INITIAL_SETTINGS), + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + }) as unknown as AppBridgeTheme; + +describe('useSettings', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with settings', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useSettings(appBridgeTheme)); + + expect(stubs.contextStub).toHaveBeenCalledWith('settings'); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useSettings(appBridgeTheme)); + + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); + }); + + it('should return the correct initial settings', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useSettings(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_SETTINGS); + }); + + it('should update the settings on change', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useSettings(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_SETTINGS); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(UPDATED_SETTINGS); + stubs.subscribeStub.mock.calls[0][0](UPDATED_SETTINGS); + } + }); + + expect(result.current).toEqual(UPDATED_SETTINGS); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => useSettings(appBridgeTheme)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge-theme/src/react/useSettings.ts b/packages/app-bridge-theme/src/react/useSettings.ts new file mode 100644 index 000000000..6253ad274 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useSettings.ts @@ -0,0 +1,13 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +export const useSettings = >(appBridge: AppBridgeTheme) => { + const settings = useSyncExternalStore(appBridge.context('settings').subscribe, appBridge.context('settings').get); + + const templateSettings = settings.templateSettings as T; + + return { templateSettings, templateAssets: settings.templateAssets }; +}; diff --git a/packages/app-bridge-theme/src/react/useTemplateContext.spec.ts b/packages/app-bridge-theme/src/react/useTemplateContext.spec.ts new file mode 100644 index 000000000..165b54093 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useTemplateContext.spec.ts @@ -0,0 +1,107 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; +import { type CoverPage, type DocumentLibrary, type TemplateContext } from '../types'; + +import { useTemplateContext } from './useTemplateContext'; + +const CoverPageDummy = (id: number) => + ({ + type: 'cover', + + id: () => { + return id; + }, + }) as unknown as CoverPage; + +const DocumentLibraryDummy = (id: number) => + ({ + type: 'document-library', + + id: () => { + return id; + }, + }) as unknown as DocumentLibrary; + +const INITIAL_TEMPLATE: TemplateContext = { type: 'cover', coverPage: CoverPageDummy(56), templateId: 'default' }; +const UPDATED_TEMPLATE: TemplateContext = { + type: 'library', + document: DocumentLibraryDummy(78), + templateId: 'default', +}; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + contextGetStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: stubs.contextGetStub.mockReturnValue(INITIAL_TEMPLATE), + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + }) as unknown as AppBridgeTheme; + +describe('useTemplateContext', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with template', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useTemplateContext(appBridgeTheme)); + + expect(stubs.contextStub).toHaveBeenCalledWith('template'); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useTemplateContext(appBridgeTheme)); + + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); + }); + + it('should return the correct initial template', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useTemplateContext(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_TEMPLATE); + }); + + it('should update the template on change', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useTemplateContext(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_TEMPLATE); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(UPDATED_TEMPLATE); + stubs.subscribeStub.mock.calls[0][0](UPDATED_TEMPLATE); + } + }); + + expect(result.current).toEqual(UPDATED_TEMPLATE); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => useTemplateContext(appBridgeTheme)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge-theme/src/react/useTemplateContext.ts b/packages/app-bridge-theme/src/react/useTemplateContext.ts new file mode 100644 index 000000000..963735e49 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useTemplateContext.ts @@ -0,0 +1,10 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; +import { type TemplateContext } from '../types'; + +export const useTemplateContext = (appBridge: AppBridgeTheme): TemplateContext | null => { + return useSyncExternalStore(appBridge.context('template').subscribe, appBridge.context('template').get); +}; From e0009ca842b65d3d262ec0700837847512442878 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:59:03 +0200 Subject: [PATCH 114/182] chore: release packages (alpha) (#1054) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 78c70b107..fbafac5d9 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -18,6 +18,7 @@ "cuddly-pets-hammer", "curly-pots-scream", "dry-mangos-fix", + "early-masks-appear", "eleven-shrimps-jog", "fast-houses-hunt", "few-islands-build", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index e0bf1fe0d..0c104ff42 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.13 + +### Patch Changes + +- [#1051](https://github.com/Frontify/brand-sdk/pull/1051) [`16ec9d1`](https://github.com/Frontify/brand-sdk/commit/16ec9d1ae5ced64bde74b275004cb632cba462b9) Thanks [@mike85](https://github.com/mike85)! - feat(AppBridgeTheme): add context hooks + ## 0.0.0-alpha.12 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 25c23cf6f..5305103a8 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.12", + "version": "0.0.0-alpha.13", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 2f6447a69fec667beba3a65ed552381403fa8057 Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Fri, 19 Jul 2024 14:43:41 +0200 Subject: [PATCH 115/182] feat: add highlight border settings for sidebar (#1059) * feat: add highlight border settings for sidebar * chore: lint * chore: changeset * Update .changeset/swift-ladybugs-happen.md Co-authored-by: Anxo Botana --------- Co-authored-by: Anxo Botana --- .changeset/swift-ladybugs-happen.md | 5 + .../sidebar-settings/src/blocks/fontInput.ts | 96 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 .changeset/swift-ladybugs-happen.md diff --git a/.changeset/swift-ladybugs-happen.md b/.changeset/swift-ladybugs-happen.md new file mode 100644 index 000000000..70201adf3 --- /dev/null +++ b/.changeset/swift-ladybugs-happen.md @@ -0,0 +1,5 @@ +--- +"@frontify/sidebar-settings": patch +--- + +feat: add highlight border settings for fontInput block diff --git a/packages/sidebar-settings/src/blocks/fontInput.ts b/packages/sidebar-settings/src/blocks/fontInput.ts index 4e182ac9c..0f0802230 100644 --- a/packages/sidebar-settings/src/blocks/fontInput.ts +++ b/packages/sidebar-settings/src/blocks/fontInput.ts @@ -189,6 +189,38 @@ export type FontValue = { highlightBorderRadiusCustom?: FontValueBorderRadiusType | null; highlightBorderRadiusChoice?: BorderRadius; + /** + * Highlight border settings + */ + highlightBorderEnabled?: boolean; + highlightBorderColor?: { + /** + * The red value of the color (0-255). + */ + red: number; + /** + * The green value of the color (0-255). + */ + green: number; + /** + * The blue value of the color (0-255). + */ + blue: number; + /** + * The alpha value of the color (0-1). + */ + alpha?: number; + } | null; + highlightBorderStyle?: 'solid' | 'dashed' | 'dotted'; + highlightBorderWeight?: string; + highlightBorderWeightCustomEnabled?: string; + highlightBorderWeightCustom?: { + top: string; + right: string; + bottom: string; + left: string; + } | null; + /** * The rgba-color of the text on hover. */ @@ -287,6 +319,38 @@ export type FontValue = { hoverHighlightBorderRadiusCustom?: FontValueBorderRadiusType | null; hoverHighlightBorderRadiusChoice?: BorderRadius; + /** + * Highlight border settings on hover + */ + hoverHighlightBorderEnabled?: boolean; + hoverHighlightBorderColor?: { + /** + * The red value of the color (0-255). + */ + red: number; + /** + * The green value of the color (0-255). + */ + green: number; + /** + * The blue value of the color (0-255). + */ + blue: number; + /** + * The alpha value of the color (0-1). + */ + alpha?: number; + } | null; + hoverHighlightBorderStyle?: 'solid' | 'dashed' | 'dotted'; + hoverHighlightBorderWeight?: string; + hoverHighlightBorderWeightCustomEnabled?: string; + hoverHighlightBorderWeightCustom?: { + top: string; + right: string; + bottom: string; + left: string; + } | null; + /** * The color of the text when active. */ @@ -384,6 +448,38 @@ export type FontValue = { activeHighlightBorderRadiusCustomEnabled?: boolean; activeHighlightBorderRadiusCustom?: FontValueBorderRadiusType | null; activeHighlightBorderRadiusChoice?: BorderRadius; + + /** + * Highlight border settings when active + */ + activeHighlightBorderEnabled?: boolean; + activeHighlightBorderColor?: { + /** + * The red value of the color (0-255). + */ + red: number; + /** + * The green value of the color (0-255). + */ + green: number; + /** + * The blue value of the color (0-255). + */ + blue: number; + /** + * The alpha value of the color (0-1). + */ + alpha?: number; + } | null; + activeHighlightBorderStyle?: 'solid' | 'dashed' | 'dotted'; + activeHighlightBorderWeight?: string; + activeHighlightBorderWeightCustomEnabled?: string; + activeHighlightBorderWeightCustom?: { + top: string; + right: string; + bottom: string; + left: string; + } | null; }; export type FontInputBlock = { From 5f5de0a3995cad0457775d05f862ba1623c2ccbf Mon Sep 17 00:00:00 2001 From: Oliver Schwendener Date: Mon, 22 Jul 2024 17:07:07 +0200 Subject: [PATCH 116/182] feat(AppBridgeTheme): added commands to open/close AIBrandAssistant dialog (#1064) * feat(AppBridgeTheme): added commands to open/close AIBrandAssistant dialog * fix: added export * Added is-open state to context --- .../src/registries/CommandRegistry.ts | 2 ++ .../registries/commands/AiBrandAssistantDialog.ts | 14 ++++++++++++++ .../src/registries/commands/index.ts | 1 + packages/app-bridge-theme/src/types/Context.ts | 1 + 4 files changed, 18 insertions(+) create mode 100644 packages/app-bridge-theme/src/registries/commands/AiBrandAssistantDialog.ts diff --git a/packages/app-bridge-theme/src/registries/CommandRegistry.ts b/packages/app-bridge-theme/src/registries/CommandRegistry.ts index 8d4c2b378..19a88cd90 100644 --- a/packages/app-bridge-theme/src/registries/CommandRegistry.ts +++ b/packages/app-bridge-theme/src/registries/CommandRegistry.ts @@ -7,6 +7,8 @@ import { type ObjectNameValidator } from '../types'; export type CommandRegistry = CommandNameValidator<{ openSearchDialog: void; closeSearchDialog: void; + openAiBrandAssistantDialog: void; + closeAiBrandAssistantDialog: void; navigate: string; navigateToDocumentSection: number | string; hydrateContextDocumentNavigation: number; diff --git a/packages/app-bridge-theme/src/registries/commands/AiBrandAssistantDialog.ts b/packages/app-bridge-theme/src/registries/commands/AiBrandAssistantDialog.ts new file mode 100644 index 000000000..d812a1ded --- /dev/null +++ b/packages/app-bridge-theme/src/registries/commands/AiBrandAssistantDialog.ts @@ -0,0 +1,14 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type DispatchHandlerParameter } from '../../types'; +import { type CommandRegistry } from '../CommandRegistry'; + +export const openAiBrandAssistantDialog = (): DispatchHandlerParameter< + 'openAiBrandAssistantDialog', + CommandRegistry +> => ({ name: 'openAiBrandAssistantDialog' }); + +export const closeAiBrandAssistantDialog = (): DispatchHandlerParameter< + 'closeAiBrandAssistantDialog', + CommandRegistry +> => ({ name: 'closeAiBrandAssistantDialog' }); diff --git a/packages/app-bridge-theme/src/registries/commands/index.ts b/packages/app-bridge-theme/src/registries/commands/index.ts index 15f62037d..68ddb4f91 100644 --- a/packages/app-bridge-theme/src/registries/commands/index.ts +++ b/packages/app-bridge-theme/src/registries/commands/index.ts @@ -1,5 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ +export * from './AiBrandAssistantDialog'; export * from './SearchDialog'; export * from './Navigate'; export * from './NavigateToDocumentSection'; diff --git a/packages/app-bridge-theme/src/types/Context.ts b/packages/app-bridge-theme/src/types/Context.ts index 45f027964..c31fde485 100644 --- a/packages/app-bridge-theme/src/types/Context.ts +++ b/packages/app-bridge-theme/src/types/Context.ts @@ -33,6 +33,7 @@ export type Context = { isEditing: boolean; isPublicLink: boolean; isAuthenticated: boolean; + isAiBrandAssistantDialogOpen: boolean; isSearchDialogOpen: boolean; languages: Language[]; template: TemplateContext | null; From 1ab0a68d93c2197fcb895aeb211cde7d81842448 Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Mon, 22 Jul 2024 17:33:53 +0200 Subject: [PATCH 117/182] Revert "feat: add highlight border settings for sidebar (#1059)" (#1067) This reverts commit 2f6447a69fec667beba3a65ed552381403fa8057. --- .changeset/swift-ladybugs-happen.md | 5 - .../sidebar-settings/src/blocks/fontInput.ts | 96 ------------------- 2 files changed, 101 deletions(-) delete mode 100644 .changeset/swift-ladybugs-happen.md diff --git a/.changeset/swift-ladybugs-happen.md b/.changeset/swift-ladybugs-happen.md deleted file mode 100644 index 70201adf3..000000000 --- a/.changeset/swift-ladybugs-happen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@frontify/sidebar-settings": patch ---- - -feat: add highlight border settings for fontInput block diff --git a/packages/sidebar-settings/src/blocks/fontInput.ts b/packages/sidebar-settings/src/blocks/fontInput.ts index 0f0802230..4e182ac9c 100644 --- a/packages/sidebar-settings/src/blocks/fontInput.ts +++ b/packages/sidebar-settings/src/blocks/fontInput.ts @@ -189,38 +189,6 @@ export type FontValue = { highlightBorderRadiusCustom?: FontValueBorderRadiusType | null; highlightBorderRadiusChoice?: BorderRadius; - /** - * Highlight border settings - */ - highlightBorderEnabled?: boolean; - highlightBorderColor?: { - /** - * The red value of the color (0-255). - */ - red: number; - /** - * The green value of the color (0-255). - */ - green: number; - /** - * The blue value of the color (0-255). - */ - blue: number; - /** - * The alpha value of the color (0-1). - */ - alpha?: number; - } | null; - highlightBorderStyle?: 'solid' | 'dashed' | 'dotted'; - highlightBorderWeight?: string; - highlightBorderWeightCustomEnabled?: string; - highlightBorderWeightCustom?: { - top: string; - right: string; - bottom: string; - left: string; - } | null; - /** * The rgba-color of the text on hover. */ @@ -319,38 +287,6 @@ export type FontValue = { hoverHighlightBorderRadiusCustom?: FontValueBorderRadiusType | null; hoverHighlightBorderRadiusChoice?: BorderRadius; - /** - * Highlight border settings on hover - */ - hoverHighlightBorderEnabled?: boolean; - hoverHighlightBorderColor?: { - /** - * The red value of the color (0-255). - */ - red: number; - /** - * The green value of the color (0-255). - */ - green: number; - /** - * The blue value of the color (0-255). - */ - blue: number; - /** - * The alpha value of the color (0-1). - */ - alpha?: number; - } | null; - hoverHighlightBorderStyle?: 'solid' | 'dashed' | 'dotted'; - hoverHighlightBorderWeight?: string; - hoverHighlightBorderWeightCustomEnabled?: string; - hoverHighlightBorderWeightCustom?: { - top: string; - right: string; - bottom: string; - left: string; - } | null; - /** * The color of the text when active. */ @@ -448,38 +384,6 @@ export type FontValue = { activeHighlightBorderRadiusCustomEnabled?: boolean; activeHighlightBorderRadiusCustom?: FontValueBorderRadiusType | null; activeHighlightBorderRadiusChoice?: BorderRadius; - - /** - * Highlight border settings when active - */ - activeHighlightBorderEnabled?: boolean; - activeHighlightBorderColor?: { - /** - * The red value of the color (0-255). - */ - red: number; - /** - * The green value of the color (0-255). - */ - green: number; - /** - * The blue value of the color (0-255). - */ - blue: number; - /** - * The alpha value of the color (0-1). - */ - alpha?: number; - } | null; - activeHighlightBorderStyle?: 'solid' | 'dashed' | 'dotted'; - activeHighlightBorderWeight?: string; - activeHighlightBorderWeightCustomEnabled?: string; - activeHighlightBorderWeightCustom?: { - top: string; - right: string; - bottom: string; - left: string; - } | null; }; export type FontInputBlock = { From efcf755dd1b0b5c2937e989445458f0e4dd992a6 Mon Sep 17 00:00:00 2001 From: Oliver Schwendener Date: Mon, 22 Jul 2024 17:40:38 +0200 Subject: [PATCH 118/182] feat(AppBridgeTheme): added list of enabled features to context (#1066) * feat(AppBridgeTheme): added list of enabled features to context * Create twelve-keys-begin.md --- .changeset/twelve-keys-begin.md | 6 ++++++ packages/app-bridge-theme/src/types/Context.ts | 1 + 2 files changed, 7 insertions(+) create mode 100644 .changeset/twelve-keys-begin.md diff --git a/.changeset/twelve-keys-begin.md b/.changeset/twelve-keys-begin.md new file mode 100644 index 000000000..5833dee06 --- /dev/null +++ b/.changeset/twelve-keys-begin.md @@ -0,0 +1,6 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat(AppBridgeTheme): added command to open/close AiBrandAssistant dialog +feat(AppBridgeTheme): added list of enabled features to context diff --git a/packages/app-bridge-theme/src/types/Context.ts b/packages/app-bridge-theme/src/types/Context.ts index c31fde485..38bd3ee94 100644 --- a/packages/app-bridge-theme/src/types/Context.ts +++ b/packages/app-bridge-theme/src/types/Context.ts @@ -30,6 +30,7 @@ export type Context = { portalToken: string | null; currentLanguage: string; defaultLanguage: string; + enabledFeatures: string[]; isEditing: boolean; isPublicLink: boolean; isAuthenticated: boolean; From 307488cffb2e139bd1f4ee85e979d2f0c545f86d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 05:58:46 +0000 Subject: [PATCH 119/182] chore: release packages (alpha) (#1065) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 7 +++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index fbafac5d9..550451043 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -65,6 +65,7 @@ "thirty-pears-lay", "tough-nails-shout", "tricky-boats-sip", + "twelve-keys-begin", "warm-hounds-refuse", "wild-bags-judge", "witty-rivers-smile", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 0c104ff42..702fd5d69 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.14 + +### Patch Changes + +- [#1066](https://github.com/Frontify/brand-sdk/pull/1066) [`efcf755`](https://github.com/Frontify/brand-sdk/commit/efcf755dd1b0b5c2937e989445458f0e4dd992a6) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - feat(AppBridgeTheme): added command to open/close AiBrandAssistant dialog + feat(AppBridgeTheme): added list of enabled features to context + ## 0.0.0-alpha.13 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 5305103a8..8cdea2439 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.13", + "version": "0.0.0-alpha.14", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 85f33ad945e8b1b59a289b1eb884f343a952116b Mon Sep 17 00:00:00 2001 From: Oliver Schwendener Date: Thu, 25 Jul 2024 13:56:55 +0200 Subject: [PATCH 120/182] feat: add useEnabledFeatures (#1073) * feat: add useEnabledFeatures * Create soft-mugs-peel.md --- .changeset/soft-mugs-peel.md | 5 ++ .../src/react/useEnabledFeatures.spec.ts | 84 +++++++++++++++++++ .../src/react/useEnabledFeatures.ts | 12 +++ 3 files changed, 101 insertions(+) create mode 100644 .changeset/soft-mugs-peel.md create mode 100644 packages/app-bridge-theme/src/react/useEnabledFeatures.spec.ts create mode 100644 packages/app-bridge-theme/src/react/useEnabledFeatures.ts diff --git a/.changeset/soft-mugs-peel.md b/.changeset/soft-mugs-peel.md new file mode 100644 index 000000000..b0a7bc5ef --- /dev/null +++ b/.changeset/soft-mugs-peel.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: add useEnabledFeatures diff --git a/packages/app-bridge-theme/src/react/useEnabledFeatures.spec.ts b/packages/app-bridge-theme/src/react/useEnabledFeatures.spec.ts new file mode 100644 index 000000000..0d3b96d03 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useEnabledFeatures.spec.ts @@ -0,0 +1,84 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +import { useEnabledFeatures } from './useEnabledFeatures'; + +const INITIAL_ENABLED_FEATURES: string[] = []; +const UPDATED_ENABLED_FEATURES = ['feature1', 'feature2']; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + contextGetStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: stubs.contextGetStub.mockReturnValue(INITIAL_ENABLED_FEATURES), + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + }) as unknown as AppBridgeTheme; + +describe('useEnabledFeatures', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with enabledFeatures', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useEnabledFeatures(appBridgeTheme)); + + expect(stubs.contextStub).toHaveBeenCalledWith('enabledFeatures'); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useEnabledFeatures(appBridgeTheme)); + + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); + }); + + it('should return the correct initial enabled features', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useEnabledFeatures(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_ENABLED_FEATURES); + }); + + it('should update the enabled features on change', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useEnabledFeatures(appBridgeTheme)); + + expect(result.current).toEqual(INITIAL_ENABLED_FEATURES); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(UPDATED_ENABLED_FEATURES); + stubs.subscribeStub.mock.calls[0][0](UPDATED_ENABLED_FEATURES); + } + }); + + expect(result.current).toEqual(UPDATED_ENABLED_FEATURES); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => useEnabledFeatures(appBridgeTheme)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge-theme/src/react/useEnabledFeatures.ts b/packages/app-bridge-theme/src/react/useEnabledFeatures.ts new file mode 100644 index 000000000..28372e980 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useEnabledFeatures.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +export const useEnabledFeatures = (appBridge: AppBridgeTheme) => { + return useSyncExternalStore( + appBridge.context('enabledFeatures').subscribe, + appBridge.context('enabledFeatures').get, + ); +}; From 3b6fe0b600f5fa7e3607958bfec25a5d6c82a6b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:06:07 +0200 Subject: [PATCH 121/182] chore: release packages (alpha) (#1074) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 550451043..be1f6c805 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -56,6 +56,7 @@ "shy-jobs-protect", "smart-suns-type", "smooth-planets-pay", + "soft-mugs-peel", "spicy-books-shout", "stale-hairs-wash", "strong-tools-check", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 702fd5d69..a4c9bb52c 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.15 + +### Patch Changes + +- [#1073](https://github.com/Frontify/brand-sdk/pull/1073) [`85f33ad`](https://github.com/Frontify/brand-sdk/commit/85f33ad945e8b1b59a289b1eb884f343a952116b) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - feat: add useEnabledFeatures + ## 0.0.0-alpha.14 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 8cdea2439..5c7228bc3 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.14", + "version": "0.0.0-alpha.15", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 772ed451a39041e290597230f99de0727cd78b67 Mon Sep 17 00:00:00 2001 From: Oliver Schwendener Date: Thu, 25 Jul 2024 14:35:50 +0200 Subject: [PATCH 122/182] fix: export useEnabledFeatures hook (#1075) * fix: export useEnabledFeatures hook * Create slimy-cats-repeat.md --- .changeset/slimy-cats-repeat.md | 5 +++++ packages/app-bridge-theme/src/react/index.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/slimy-cats-repeat.md diff --git a/.changeset/slimy-cats-repeat.md b/.changeset/slimy-cats-repeat.md new file mode 100644 index 000000000..631a65142 --- /dev/null +++ b/.changeset/slimy-cats-repeat.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +fix: export useEnabledFeatures hook diff --git a/packages/app-bridge-theme/src/react/index.ts b/packages/app-bridge-theme/src/react/index.ts index 9a5dc03b2..b448e7857 100644 --- a/packages/app-bridge-theme/src/react/index.ts +++ b/packages/app-bridge-theme/src/react/index.ts @@ -8,3 +8,4 @@ export * from './useLanguages'; export * from './usePortalNavigation'; export * from './useSettings'; export * from './useTemplateContext'; +export * from './useEnabledFeatures'; From 89d3883e822535e016f34f6ee36dcd28f5a5adeb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:45:50 +0200 Subject: [PATCH 123/182] chore: release packages (alpha) (#1076) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index be1f6c805..0849f5df4 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -54,6 +54,7 @@ "shiny-beds-thank", "shiny-poets-enjoy", "shy-jobs-protect", + "slimy-cats-repeat", "smart-suns-type", "smooth-planets-pay", "soft-mugs-peel", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index a4c9bb52c..8d1005320 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.16 + +### Patch Changes + +- [#1075](https://github.com/Frontify/brand-sdk/pull/1075) [`772ed45`](https://github.com/Frontify/brand-sdk/commit/772ed451a39041e290597230f99de0727cd78b67) Thanks [@oliverschwendener](https://github.com/oliverschwendener)! - fix: export useEnabledFeatures hook + ## 0.0.0-alpha.15 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 5c7228bc3..c8bd53bc4 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.15", + "version": "0.0.0-alpha.16", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From 80bfe0b296727bd860073793d76431ccf10ea646 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Fri, 26 Jul 2024 09:49:17 +0200 Subject: [PATCH 124/182] chore: remove platform Apps from app-bridge (#1071) * chore: cleanup used method * chore: clenaup unused files --- packages/app-bridge/src/AppBridge.ts | 3 +- .../src/AppBridgePlatformApp.spec.ts | 110 ------- .../app-bridge/src/AppBridgePlatformApp.ts | 309 ------------------ .../src/errors/InitializationError.ts | 8 - .../app-bridge/src/errors/ValidationError.ts | 8 - packages/app-bridge/src/errors/index.ts | 2 - packages/app-bridge/src/index.ts | 1 - packages/app-bridge/src/react/index.ts | 1 - .../src/react/usePlatformAppBridge.spec.ts | 33 -- .../src/react/usePlatformAppBridge.ts | 23 -- .../src/registries/api/ApiMethodRegistry.ts | 16 +- .../src/registries/api/CreateAsset.spec.ts | 22 -- .../src/registries/api/CreateAsset.ts | 19 -- .../api/GetAssetResourceInformation.spec.ts | 18 - .../api/GetAssetResourceInformation.ts | 23 -- .../registries/api/GetSecretRequest.spec.ts | 17 - .../src/registries/api/GetSecureRequest.ts | 17 - .../app-bridge/src/registries/api/index.ts | 5 +- .../src/registries/commands/Connection.ts | 3 - .../src/registries/commands/index.ts | 1 - .../src/tests/AppBridgePlatformAppStub.ts | 19 -- packages/app-bridge/src/tests/index.ts | 1 - packages/app-bridge/src/types/Topic.ts | 1 - .../src/utilities/MessageBus.spec.ts | 120 ------- .../app-bridge/src/utilities/MessageBus.ts | 48 --- packages/app-bridge/src/utilities/file.ts | 6 - .../src/utilities/queryParams.spec.ts | 35 -- .../app-bridge/src/utilities/queryParams.ts | 24 -- packages/app-bridge/src/window.d.ts | 2 - 29 files changed, 4 insertions(+), 891 deletions(-) delete mode 100644 packages/app-bridge/src/AppBridgePlatformApp.spec.ts delete mode 100644 packages/app-bridge/src/AppBridgePlatformApp.ts delete mode 100644 packages/app-bridge/src/errors/InitializationError.ts delete mode 100644 packages/app-bridge/src/errors/ValidationError.ts delete mode 100644 packages/app-bridge/src/react/usePlatformAppBridge.spec.ts delete mode 100644 packages/app-bridge/src/react/usePlatformAppBridge.ts delete mode 100644 packages/app-bridge/src/registries/api/CreateAsset.spec.ts delete mode 100644 packages/app-bridge/src/registries/api/CreateAsset.ts delete mode 100644 packages/app-bridge/src/registries/api/GetAssetResourceInformation.spec.ts delete mode 100644 packages/app-bridge/src/registries/api/GetAssetResourceInformation.ts delete mode 100644 packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts delete mode 100644 packages/app-bridge/src/registries/api/GetSecureRequest.ts delete mode 100644 packages/app-bridge/src/registries/commands/Connection.ts delete mode 100644 packages/app-bridge/src/tests/AppBridgePlatformAppStub.ts delete mode 100644 packages/app-bridge/src/utilities/MessageBus.spec.ts delete mode 100644 packages/app-bridge/src/utilities/MessageBus.ts delete mode 100644 packages/app-bridge/src/utilities/queryParams.spec.ts delete mode 100644 packages/app-bridge/src/utilities/queryParams.ts diff --git a/packages/app-bridge/src/AppBridge.ts b/packages/app-bridge/src/AppBridge.ts index 2082d0ddf..f58b922cd 100644 --- a/packages/app-bridge/src/AppBridge.ts +++ b/packages/app-bridge/src/AppBridge.ts @@ -182,7 +182,7 @@ export interface AppBridge< * Sends a command to the Frontify platform. * * @returns A promise that resolves to acknowledge the dispatch. - * The event will be triggered at a later stage and can be subscribed to with {@link AppBridgePlatformApp.subscribe}. + * The event will be triggered at a later stage and can be subscribed to */ dispatch( dispatchHandler: DispatchHandlerParameter, @@ -217,7 +217,6 @@ export interface AppBridge< /** * Subscribes to an event with the given name and callback function. - * The event are fired from {@link AppBridgePlatformApp.dispatch}, {@link AppBridgePlatformApp.state} and {@link AppBridgePlatformApp.context}. * * @returns Function that can be used to unsubscribe from an event. * When called, this function will remove the subscription to the event and prevent any further callbacks from being executed. diff --git a/packages/app-bridge/src/AppBridgePlatformApp.spec.ts b/packages/app-bridge/src/AppBridgePlatformApp.spec.ts deleted file mode 100644 index c9d53db85..000000000 --- a/packages/app-bridge/src/AppBridgePlatformApp.spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { afterEach, describe, expect, it, vi } from 'vitest'; - -import { AppBridgePlatformApp } from './AppBridgePlatformApp'; -import { InitializationError } from './errors'; -import { openConnection } from './registries'; -import { notify } from './utilities'; - -const TOKEN = 'AjY34F87Dsat^J'; - -describe('AppBridgePlatformApp', () => { - vi.mock('./utilities/subscribe', () => ({ - subscribe: vi.fn().mockResolvedValue({ - statePort: { onmessage: vi.fn() }, - apiPort: { onmessage: vi.fn() }, - context: { parentId: 'parentId-test', connected: true }, - state: { settings: 'settings-test', userState: 'state-test' }, - }), - })); - - vi.mock('./utilities/notify', () => ({ - notify: vi.fn(), - })); - - afterEach(() => { - vi.clearAllMocks(); - }); - - it('should be instantiable', () => { - expect(new AppBridgePlatformApp()).toBeInstanceOf(AppBridgePlatformApp); - }); - - it('should not initialize without a token', async () => { - window.location.search = '?token='; - - const platformApp = new AppBridgePlatformApp(); - - await expect(() => platformApp.dispatch(openConnection())).rejects.toThrow(new InitializationError()); - expect(notify).toHaveBeenCalledTimes(0); - }); - - it('should yield true for Context.connected after dispatch', async () => { - const connected = true; - window.location.search = `?token=${TOKEN}`; - const platformApp = new AppBridgePlatformApp(); - platformApp.subscribe('Context.connected', () => { - expect(connected).toBe(true); - }); - platformApp.dispatch(openConnection()); - }); - - it.skip('should throw an error when api is not initialized', async () => { - window.location.search = `?token=${TOKEN}`; - - const platformApp = new AppBridgePlatformApp(); - expect(() => platformApp.api({ name: 'getCurrentUser' })).throw(); - }); - - it('should return empty state when not inititalized', async () => { - const platformApp = new AppBridgePlatformApp(); - const state = platformApp.state().get(); - expect(state).toEqual({ settings: 'settings-test', userState: 'state-test' }); - }); - - it('should return state after app is initialized', async () => { - window.location.search = `?token=${TOKEN}`; - const platformApp = new AppBridgePlatformApp(); - platformApp.subscribe('Context.connected', (connected) => { - const state = platformApp.state().get(); - - expect(connected).toBe(true); - expect(state).toEqual({ settings: 'settings-test' }); - }); - platformApp.dispatch(openConnection()); - }); - - it('should yield true for Context.connected after dispatch', async () => { - window.location.search = `?token=${TOKEN}`; - const platformApp = new AppBridgePlatformApp(); - platformApp.subscribe('Context.connected', (connected) => { - const context = platformApp.context().get(); - const parentId = platformApp.context('parentId').get(); - - expect(connected).toBe(true); - expect(context).toEqual({ parentId: 'parentId-test', connected: true }); - expect(parentId).toEqual('parentId-test'); - }); - platformApp.dispatch(openConnection()); - }); - - it('should return correct object when subscribing to context', async () => { - window.location.search = `?token=${TOKEN}`; - const platformApp = new AppBridgePlatformApp(); - platformApp.context().subscribe((context) => { - expect({ parentId: 'parentId-test', connected: true }).toStrictEqual(context); - }); - platformApp.dispatch(openConnection()); - }); - - it('should return correct object when subscribing to context', async () => { - window.location.search = `?token=${TOKEN}`; - const platformApp = new AppBridgePlatformApp(); - platformApp.context().subscribe((context) => { - expect({ parentId: 'parentId-test', connected: true }).toStrictEqual(context); - platformApp.dispatch(openConnection()); - }); - platformApp.dispatch(openConnection()); - }); -}); diff --git a/packages/app-bridge/src/AppBridgePlatformApp.ts b/packages/app-bridge/src/AppBridgePlatformApp.ts deleted file mode 100644 index 9726341cb..000000000 --- a/packages/app-bridge/src/AppBridgePlatformApp.ts +++ /dev/null @@ -1,309 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { - type ApiHandlerParameter, - type ApiMethodNameValidator, - type ApiReturn, - type AppBridge, - type CommandNameValidator, - type ContextAsEventName, - type ContextReturn, - type DispatchHandlerParameter, - type EventCallbackParameter, - type EventNameParameter, - type EventNameValidator, - type EventUnsubscribeFunction, - type StateAsEventName, - type StateReturn, - type SubscribeMap, -} from './AppBridge'; -import { InitializationError } from './errors'; -import { type ApiMethodRegistry, openConnection } from './registries'; -import { Topic } from './types'; -import { generateRandomString, notify, subscribe } from './utilities'; -import { ErrorMessageBus, type IMessageBus, MessageBus } from './utilities/MessageBus'; -import { getQueryParameters } from './utilities/queryParams'; - -export type PlatformAppApiMethod = ApiMethodNameValidator< - Pick ->; - -export type PlatformAppCommandRegistry = CommandNameValidator<{ - openConnection: void; -}>; - -export type PlatformAppCommand = CommandNameValidator>; - -export type PlatformAppState = { - settings: Record; - userState: Record; -}; - -type InitializeEvent = { - apiPort: MessagePort; - statePort: MessagePort; - context: PlatformAppContext; - state: PlatformAppState; -}; - -type AppBaseProps = { - token: string; - marketplaceServiceAppId: string; - connected: boolean; - brandId: number; - domain: string; - parentId: string; -}; - -export type AssetActionContext = { - surface: 'assetAction'; - assetId: string; -} & AppBaseProps; - -export type AssetCreationContext = { - surface: 'assetCreation'; -} & AppBaseProps; - -export type PlatformAppContext = AssetActionContext | AssetCreationContext; - -export type PlatformAppEvent = EventNameValidator< - StateAsEventName & - ContextAsEventName ->; - -export class AppBridgePlatformApp implements IAppBridgePlatformApp { - private apiMessageBus: IMessageBus = new ErrorMessageBus(); - private stateMessageBus: IMessageBus = new ErrorMessageBus(); - private initialized: boolean = false; - private localContext?: PlatformAppContext; - private localState: PlatformAppState = { settings: {}, userState: {} }; - private maxRetries: number = 5; - - private readonly subscribeMap: SubscribeMap = { - 'State.*': new Map(), - 'State.settings': new Map(), - 'State.userState': new Map(), - 'Context.*': new Map(), - 'Context.marketplaceServiceAppId': new Map(), - 'Context.token': new Map(), - 'Context.assetId': new Map(), - 'Context.brandId': new Map(), - 'Context.parentId': new Map(), - 'Context.domain': new Map(), - 'Context.surface': new Map(), - 'Context.connected': new Map(), - }; - - constructor() { - if (window.appBridgePlatformApp) { - return window.appBridgePlatformApp; - } - - window.appBridgePlatformApp = this; - } - - api( - apiHandler: ApiHandlerParameter, - ): ApiReturn { - return this.apiMessageBus.post({ - parameter: apiHandler, - }) as ApiReturn; - } - - private guardForInitialization() { - const initialContext = getQueryParameters(window.location.href); - if (!initialContext.token) { - throw new InitializationError(); - } - return this.initialized; - } - - async dispatch( - dispatchHandler: DispatchHandlerParameter, - ): Promise { - if (dispatchHandler.name === openConnection().name) { - if (this.guardForInitialization()) { - return; - } - - const checksum = generateRandomString(); - - notify(Topic.Init, checksum, { - token: getQueryParameters(window.location.href).token, - appBridgeVersion: 'v4', - }); - - await this.attemptSubscription(1, checksum); - } - } - - private async attemptSubscription(attempt: number, checksum: string): Promise { - try { - const { statePort, apiPort, context, state } = await subscribe(Topic.Init, checksum); - - this.apiMessageBus = new MessageBus(apiPort); - this.stateMessageBus = new MessageBus(statePort); - - statePort.onmessage = (event: MessageEvent<{ token: string; message: Record }>) => { - this.onStateChangeListener(event); - }; - - this.localContext = context; - this.localState = state; - this.initialized = true; - - this.callSubscribedTopic('Context.connected', [true, false]); - this.callSubscribedTopic('Context.*', [this.localContext, this.localContext]); - this.callSubscribedTopic('State.*', [this.localState, this.localState]); - } catch (error) { - if (attempt < this.maxRetries) { - await this.attemptSubscription(attempt + 1, checksum); - } else { - console.error('Could not connect to the platform.'); - } - } - } - - context(key?: void): ContextReturn; - context(key?: Key): ContextReturn; - context(key?: keyof PlatformAppContext | void): unknown { - if (typeof key === 'undefined') { - return { - get: () => this.localContext, - subscribe: ( - callback: (nextContext: PlatformAppContext, previousContext: PlatformAppContext) => void, - ) => { - return this.subscribe('Context.*', callback); - }, - }; - } - return { - get: () => (this.localContext ? this.localContext[key] : {}), - subscribe: ( - callback: (nextContext: PlatformAppContext[Key], previousContext: PlatformAppContext[Key]) => void, - ) => { - // @ts-expect-error typing is correct, but TS doesn't like it - return this.subscribe(`Context.${key}`, callback); - }, - }; - } - - private async setInternalState( - state: Promise, - key?: keyof PlatformAppState | void, - ): Promise { - const prevState = this.localState; - this.localState = await state; - if (key) { - this.callSubscribedTopic(`State.${key}`, [this.localState, prevState]); - } else { - this.callSubscribedTopic('State.*', [this.localState, prevState]); - } - } - - state(): StateReturn; - state(key: Key): StateReturn; - state(key?: keyof PlatformAppState | void): unknown { - if (typeof key === 'undefined') { - return { - get: () => this.localState, - set: (nextState: PlatformAppState) => { - const newState = this.stateMessageBus.post({ - parameter: { nextState }, - }) as Promise; - this.setInternalState(newState); - }, - subscribe: (callback: (nextState: PlatformAppState, previousState: PlatformAppState) => void) => { - return this.subscribe('State.*', callback); - }, - }; - } - - return { - get: () => this.localState[key], - set: (nextState: PlatformAppState[Key]) => { - const newState = this.stateMessageBus.post({ - parameter: { key, nextState }, - }) as Promise; - - this.setInternalState(newState, key); - }, - subscribe: (callback: (nextState: PlatformAppState[Key], previousState: PlatformAppState[Key]) => void) => { - return this.subscribe(`State.${key}`, callback); - }, - }; - } - - subscribe( - eventName: EventNameParameter, - callback: EventCallbackParameter, - ): EventUnsubscribeFunction { - if (!(eventName in this.subscribeMap)) { - this.subscribeMap[eventName] = new Map(); - } - - this.subscribeMap[eventName].set(callback, true); - - return () => { - this.subscribeMap[eventName].delete(callback); - }; - } - - callSubscribedTopic( - eventName: EventNameParameter, - callbackParameters: PlatformAppEvent[EventName], - ) { - const callbackMap = this.subscribeMap[eventName]; - if (callbackMap && callbackMap?.size !== undefined) { - for (const [callback] of callbackMap.entries()) { - // @ts-expect-error if there are multiple parameters, we spread them in the callback call - callback(...(Array.isArray(callbackParameters) ? callbackParameters : [callbackParameters])); - } - } - } - - private onStateChangeListener(event: MessageEvent<{ token: string; message: Record }>) { - const { token } = event.data; - - if (token === 'DEV_UPDATE_STATE' && 'settings' in event.data.message && 'userState' in event.data.message) { - const message = event.data.message as PlatformAppState; - - this.callSubscribedTopic('State.*', [message, this.localState]); - this.callSubscribedTopic('State.settings', [message.settings, this.localState.settings]); - this.callSubscribedTopic('State.userState', [message.userState, this.localState.userState]); - - this.localState = message; - } - } -} - -export interface IAppBridgePlatformApp< - State extends PlatformAppState = PlatformAppState, - Context extends PlatformAppContext = PlatformAppContext, - Event extends PlatformAppEvent = PlatformAppEvent, -> extends AppBridge { - api( - apiHandler: ApiHandlerParameter, - ): ApiReturn; - - dispatch( - dispatchHandler: DispatchHandlerParameter, - ): Promise; - - state(): StateReturn; - - state(key: Key): StateReturn; - - state(key?: keyof State | void): unknown; - - context(): ContextReturn; - - context(key: Key): ContextReturn; - - context(key?: keyof Context | void): unknown; - - subscribe( - eventName: EventNameParameter, - callback: EventCallbackParameter, - ): EventUnsubscribeFunction; -} diff --git a/packages/app-bridge/src/errors/InitializationError.ts b/packages/app-bridge/src/errors/InitializationError.ts deleted file mode 100644 index 2cfbf5bc8..000000000 --- a/packages/app-bridge/src/errors/InitializationError.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export class InitializationError extends Error { - constructor(message?: string) { - super(`Initialization failed. ${message}`); - this.name = 'InitializationError'; - } -} diff --git a/packages/app-bridge/src/errors/ValidationError.ts b/packages/app-bridge/src/errors/ValidationError.ts deleted file mode 100644 index 3872fcb12..000000000 --- a/packages/app-bridge/src/errors/ValidationError.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export class ValidationError extends Error { - constructor(message?: string) { - super(`Validation failed. ${message}`); - this.name = 'ValidationError'; - } -} diff --git a/packages/app-bridge/src/errors/index.ts b/packages/app-bridge/src/errors/index.ts index d90f172b4..4c69461f7 100644 --- a/packages/app-bridge/src/errors/index.ts +++ b/packages/app-bridge/src/errors/index.ts @@ -1,7 +1,5 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './HttpClientError'; -export * from './InitializationError'; export * from './NotifyError'; export * from './TimeoutReachedError'; -export * from './ValidationError'; diff --git a/packages/app-bridge/src/index.ts b/packages/app-bridge/src/index.ts index d2022f0d7..52f015459 100644 --- a/packages/app-bridge/src/index.ts +++ b/packages/app-bridge/src/index.ts @@ -7,7 +7,6 @@ enableMapSet(); export * from './AppBridge'; export * from './AppBridgeBlock'; export * from './AppBridgeCreateAsset'; -export * from './AppBridgePlatformApp'; export * from './AppBridgeTheme'; export * from './errors'; export * from './helpers'; diff --git a/packages/app-bridge/src/react/index.ts b/packages/app-bridge/src/react/index.ts index 11220d580..d1e386ae7 100644 --- a/packages/app-bridge/src/react/index.ts +++ b/packages/app-bridge/src/react/index.ts @@ -26,7 +26,6 @@ export * from './useGuidelineActions'; export * from './useLanguage'; export * from './useNavigationManager'; export * from './usePageTemplateSettings'; -export * from './usePlatformAppBridge'; export * from './usePrivacySettings'; export * from './useReadyForPrint'; export * from './useTemplateAssets'; diff --git a/packages/app-bridge/src/react/usePlatformAppBridge.spec.ts b/packages/app-bridge/src/react/usePlatformAppBridge.spec.ts deleted file mode 100644 index 5899eb14b..000000000 --- a/packages/app-bridge/src/react/usePlatformAppBridge.spec.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { renderHook } from '@testing-library/react'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -import { usePlatformAppBridge } from './usePlatformAppBridge'; - -describe('usePlatformAppBridge', () => { - const TOKEN = 'AjY34F87Dsat^J'; - - window.location.search = `?token=${TOKEN}`; - vi.mock('../utilities/subscribe', () => ({ - subscribe: vi.fn().mockResolvedValue({ - statePort: { onmessage: vi.fn() }, - apiPort: { onmessage: vi.fn() }, - context: { parentId: 'parentId-test', connected: true }, - state: { settings: 'settings-test', userState: 'test' }, - }), - })); - - vi.mock('../utilities/notify', () => ({ - notify: vi.fn(), - })); - - afterEach(() => { - vi.clearAllMocks(); - }); - - it('should return undefined platformApp if not initiated', async () => { - const { result } = renderHook(() => usePlatformAppBridge()); - expect(result.current).toBeUndefined(); - }); -}); diff --git a/packages/app-bridge/src/react/usePlatformAppBridge.ts b/packages/app-bridge/src/react/usePlatformAppBridge.ts deleted file mode 100644 index f5d1dfada..000000000 --- a/packages/app-bridge/src/react/usePlatformAppBridge.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useEffect, useState } from 'react'; - -import { AppBridgePlatformApp } from '../AppBridgePlatformApp'; - -/** - * @deprecated Use new AppBridgePlatformApp() directly in code. This hook is not needed anymore - */ -export const usePlatformAppBridge = () => { - const [platformAppBridge, setPlatformAppBridge] = useState(); - - useEffect(() => { - (async () => { - const appBridge = new AppBridgePlatformApp(); - appBridge.subscribe('Context.connected', () => { - setPlatformAppBridge(appBridge); - }); - appBridge.dispatch({ name: 'openConnection' }); - })(); - }, []); - return platformAppBridge; -}; diff --git a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts index b5cd82bcd..7014be767 100644 --- a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts +++ b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts @@ -2,40 +2,28 @@ import { type ApiMethodNameValidator } from '../../AppBridge'; -import { type CreateAssetPayload, type CreateAssetResponse } from './CreateAsset'; import { type GetAssetBulkDownloadTokenPayload, type GetAssetBulkDownloadTokenResponse, } from './GetAssetBulkDownloadToken'; -import { - type GetAssetResourceInformationPayload, - type GetAssetResourceInformationResponse, -} from './GetAssetResourceInformation'; -import { type GetCurrentUserPayload, type GetCurrentUserResponse } from './GetCurrentUser'; +import { type GetCurrentUserPayload, type GetCurrentUserResponse } from './GetCurrentUser.ts'; import { type GetDocumentNavigationPayload, type GetDocumentNavigationResponse } from './GetDocumentNavigation'; import { type GetPortalNavigationResponse } from './GetPortalNavigation'; -import { type GetSecureRequestPayload, type GetSecureRequestResponse } from './GetSecureRequest.ts'; import { type SetAssetIdsByBlockAssetKeyPayload, type SetAssetIdsByBlockAssetKeyResponse, } from './SetAssetIdsByBlockAssetKey'; export type ApiMethodRegistry = ApiMethodNameValidator<{ + getCurrentUser: { payload: GetCurrentUserPayload; response: GetCurrentUserResponse }; getAssetBulkDownloadToken: { payload: GetAssetBulkDownloadTokenPayload; response: GetAssetBulkDownloadTokenResponse; }; - getCurrentUser: { payload: GetCurrentUserPayload; response: GetCurrentUserResponse }; - createAsset: { payload: CreateAssetPayload; response: CreateAssetResponse }; - getAssetResourceInformation: { - payload: GetAssetResourceInformationPayload; - response: GetAssetResourceInformationResponse; - }; setAssetIdsByBlockAssetKey: { payload: SetAssetIdsByBlockAssetKeyPayload; response: SetAssetIdsByBlockAssetKeyResponse; }; - getSecureRequest: { payload: GetSecureRequestPayload; response: GetSecureRequestResponse }; getDocumentNavigation: { payload: GetDocumentNavigationPayload; response: GetDocumentNavigationResponse }; getPortalNavigation: { payload: void; response: GetPortalNavigationResponse }; }>; diff --git a/packages/app-bridge/src/registries/api/CreateAsset.spec.ts b/packages/app-bridge/src/registries/api/CreateAsset.spec.ts deleted file mode 100644 index c3c26abe6..000000000 --- a/packages/app-bridge/src/registries/api/CreateAsset.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it } from 'vitest'; - -import { createAsset } from './CreateAsset'; - -describe('CreateAsset', () => { - it('should return correct method name and payload', () => { - const TEST_DATA = 'test'; - const payload = { - data: TEST_DATA, - filename: TEST_DATA, - parentId: TEST_DATA, - description: TEST_DATA, - externalId: TEST_DATA, - tags: [{ value: TEST_DATA }], - }; - const currentUser = createAsset(payload); - expect(currentUser.name).toBe('createAsset'); - expect(currentUser.payload).toBe(payload); - }); -}); diff --git a/packages/app-bridge/src/registries/api/CreateAsset.ts b/packages/app-bridge/src/registries/api/CreateAsset.ts deleted file mode 100644 index 9bfb8a445..000000000 --- a/packages/app-bridge/src/registries/api/CreateAsset.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type CreateAssetPayload = { - data: File | Blob | string; - filename: string; - parentId?: string; - description?: string; - externalId?: string; - tags?: { value: string }[]; -}; - -export type CreateAssetResponse = { - assetId: string; -}; - -export const createAsset = (payload: CreateAssetPayload): { name: 'createAsset'; payload: CreateAssetPayload } => ({ - name: 'createAsset', - payload, -}); diff --git a/packages/app-bridge/src/registries/api/GetAssetResourceInformation.spec.ts b/packages/app-bridge/src/registries/api/GetAssetResourceInformation.spec.ts deleted file mode 100644 index 3e2788fae..000000000 --- a/packages/app-bridge/src/registries/api/GetAssetResourceInformation.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it } from 'vitest'; - -import { getAssetResourceInformation } from './GetAssetResourceInformation'; - -describe('GetAssetResourceInformation', () => { - it('should return correct method name', () => { - const TEST_ID = 'test-123'; - const assetResourceInformation = getAssetResourceInformation({ - assetId: TEST_ID, - }); - expect(assetResourceInformation.name).toBe('getAssetResourceInformation'); - expect(assetResourceInformation.payload).toStrictEqual({ - assetId: TEST_ID, - }); - }); -}); diff --git a/packages/app-bridge/src/registries/api/GetAssetResourceInformation.ts b/packages/app-bridge/src/registries/api/GetAssetResourceInformation.ts deleted file mode 100644 index ecfa5e9bb..000000000 --- a/packages/app-bridge/src/registries/api/GetAssetResourceInformation.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type GetAssetResourceInformationPayload = { - assetId: string; -}; - -export type GetAssetResourceInformationResponse = { - type: string; - id: string; - title?: string; - previewUrl?: string; - downloadUrl?: string; - filename?: string | null; - sourceUrl?: string; - html?: string; -}; - -export const getAssetResourceInformation = ( - payload: GetAssetResourceInformationPayload, -): { name: 'getAssetResourceInformation'; payload: GetAssetResourceInformationPayload } => ({ - name: 'getAssetResourceInformation', - payload, -}); diff --git a/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts b/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts deleted file mode 100644 index 2a424fb40..000000000 --- a/packages/app-bridge/src/registries/api/GetSecretRequest.spec.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it } from 'vitest'; - -import { getSecureRequest } from './GetSecureRequest'; - -describe('GetSecureRequest', () => { - it('should return correct method name', () => { - const TEST_ID = 'user-api'; - const secureRequest = getSecureRequest({ endpoint: TEST_ID, requestParams: 'data' }); - expect(secureRequest.name).toBe('getSecureRequest'); - expect(secureRequest.payload).toStrictEqual({ - endpoint: TEST_ID, - requestParams: 'data', - }); - }); -}); diff --git a/packages/app-bridge/src/registries/api/GetSecureRequest.ts b/packages/app-bridge/src/registries/api/GetSecureRequest.ts deleted file mode 100644 index 553e18cff..000000000 --- a/packages/app-bridge/src/registries/api/GetSecureRequest.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type GetSecureRequestPayload = { - endpoint: string; - requestParams: unknown; -}; - -export type GetSecureRequestResponse = { - data: unknown; - statusText: string; - status: string; -}; - -export const getSecureRequest = (payload: GetSecureRequestPayload) => ({ - name: 'getSecureRequest', - payload, -}); diff --git a/packages/app-bridge/src/registries/api/index.ts b/packages/app-bridge/src/registries/api/index.ts index 45e961473..af80031b5 100644 --- a/packages/app-bridge/src/registries/api/index.ts +++ b/packages/app-bridge/src/registries/api/index.ts @@ -2,10 +2,7 @@ export * from './ApiMethodRegistry'; export * from './GetAssetBulkDownloadToken'; -export * from './CreateAsset'; -export * from './GetAssetResourceInformation'; -export * from './GetCurrentUser'; export * from './SetAssetIdsByBlockAssetKey'; -export * from './GetSecureRequest'; export * from './GetDocumentNavigation'; export * from './GetPortalNavigation'; +export * from './GetCurrentUser'; diff --git a/packages/app-bridge/src/registries/commands/Connection.ts b/packages/app-bridge/src/registries/commands/Connection.ts deleted file mode 100644 index 89919daa8..000000000 --- a/packages/app-bridge/src/registries/commands/Connection.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export const openConnection = (): { name: 'openConnection' } => ({ name: 'openConnection' }); diff --git a/packages/app-bridge/src/registries/commands/index.ts b/packages/app-bridge/src/registries/commands/index.ts index d1e78f8e6..902e73e3b 100644 --- a/packages/app-bridge/src/registries/commands/index.ts +++ b/packages/app-bridge/src/registries/commands/index.ts @@ -3,7 +3,6 @@ export * from './AssetChooser'; export * from './AssetViewer'; export * from './CommandRegistry'; -export * from './Connection'; export * from './DownloadAsset'; export * from './NavigationManager'; export * from './NewPublication'; diff --git a/packages/app-bridge/src/tests/AppBridgePlatformAppStub.ts b/packages/app-bridge/src/tests/AppBridgePlatformAppStub.ts deleted file mode 100644 index c2c3cf5b0..000000000 --- a/packages/app-bridge/src/tests/AppBridgePlatformAppStub.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type SinonStubbedInstance, stub } from 'sinon'; - -import { type IAppBridgePlatformApp } from '../AppBridgePlatformApp'; - -export type getAppBridgePlatformAppStubProps = { - // -}; - -export const getAppBridgePlatformAppStub = (): SinonStubbedInstance => { - return { - api: stub>().resolves(), - state: stub>().resolves(), - context: stub>().resolves(), - subscribe: stub>().resolves(), - dispatch: stub>().resolves(), - }; -}; diff --git a/packages/app-bridge/src/tests/index.ts b/packages/app-bridge/src/tests/index.ts index d3a1233ac..4cf181961 100644 --- a/packages/app-bridge/src/tests/index.ts +++ b/packages/app-bridge/src/tests/index.ts @@ -1,7 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './AppBridgeBlockStub'; -export * from './AppBridgePlatformAppStub'; export * from './AppBridgeThemeStub'; export * from './AssetApiDummy'; export * from './AssetChooserOptionsDummy'; diff --git a/packages/app-bridge/src/types/Topic.ts b/packages/app-bridge/src/types/Topic.ts index 4f0bf54f6..7d1093b10 100644 --- a/packages/app-bridge/src/types/Topic.ts +++ b/packages/app-bridge/src/types/Topic.ts @@ -11,5 +11,4 @@ export enum Topic { OpenAssetChooser = 'openAssetChooser', PostExternalAssets = 'postExternalAssets', PutAppState = 'putAppState', - Init = 'Init', } diff --git a/packages/app-bridge/src/utilities/MessageBus.spec.ts b/packages/app-bridge/src/utilities/MessageBus.spec.ts deleted file mode 100644 index 7e1831429..000000000 --- a/packages/app-bridge/src/utilities/MessageBus.spec.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it, vi } from 'vitest'; - -import { MessageBus } from './MessageBus'; - -describe('MessageBus', () => { - it('should be instantiable', () => { - const { port1 } = new MessageChannel(); - - const messageBus = new MessageBus(port1); - expect(messageBus).toBeInstanceOf(MessageBus); - }); - - it('should call postMessage from the MessageChannel on post', () => { - const postMessageMock = vi.fn(); - - class PortMock { - postMessage = postMessageMock; - onmessage = vi.fn(); - onmessageerror = vi.fn(); - } - - const messageBus = new MessageBus(new PortMock() as unknown as MessagePort); - messageBus.post({ operation: 'test' }); - expect(postMessageMock).toHaveBeenCalledTimes(1); - }); - - it('should return message from port2', async () => { - const channel = new MessageChannel(); - - const messageBus = new MessageBus(channel.port1); - - const testResponse = 'test-message'; - channel.port2.onmessage = (event) => { - const { token } = event.data; - channel.port2.postMessage({ message: testResponse, token }); - }; - const result = await messageBus.post({ operation: 'test' }); - - expect(result).toEqual(testResponse); - }); - - it('should trigger onmessage error on message sending error', async () => { - const channel = new MessageChannel(); - const messageBus = new MessageBus(channel.port1); - - channel.port1.postMessage = () => { - throw new Error('Simulated message sending error'); - }; - - await expect(() => messageBus.post({ operation: 'test' })).rejects.toThrow(); - }); - - it('should send a token with the channel', async () => { - const channel = new MessageChannel(); - const messageBus = new MessageBus(channel.port1); - - channel.port2.onmessage = (event) => { - expect(event.data.token).toBeDefined(); - }; - - messageBus.post({ operation: 'test' }); - }); - - it('should return a message with a token', async () => { - const channel = new MessageChannel(); - const messageBus = new MessageBus(channel.port1); - - channel.port2.onmessage = (event) => { - const { token } = event.data; - channel.port2.postMessage({ message: 'test-message', token }); - }; - - const response = await messageBus.post({ operation: 'test' }); - expect(response).toBe('test-message'); - }); - - it('should handle multiple messages with their tokens and return correct message', async () => { - const channel = new MessageChannel(); - const messageBus = new MessageBus(channel.port1); - - const message1 = 'test-message-1'; - const message2 = 'test-message-2'; - const message3 = 'test-message-3'; - - channel.port2.onmessage = (event) => { - const { token, message } = event.data; - if (message.operation === 'message1') { - setTimeout(() => { - channel.port2.postMessage({ message: message1, token }); - }, 1); - } else if (message.operation === 'message2') { - setTimeout(() => { - channel.port2.postMessage({ message: message2, token }); - }, 2); - } else if (message.operation === 'message3') { - channel.port2.postMessage({ message: message3, token }); - } - }; - - const response2 = await messageBus.post({ operation: 'message2' }); - const response1 = await messageBus.post({ operation: 'message1' }); - const response3 = await messageBus.post({ operation: 'message3' }); - - const allPromises = await Promise.all([ - messageBus.post({ operation: 'message3' }), - messageBus.post({ operation: 'message1' }), - messageBus.post({ operation: 'message2' }), - ]); - - expect(response1).toBe(message1); - expect(response2).toBe(message2); - expect(response3).toBe(message3); - - expect(allPromises.includes(message1)).toBe(true); - expect(allPromises.includes(message2)).toBe(true); - expect(allPromises.includes(message3)).toBe(true); - }); -}); diff --git a/packages/app-bridge/src/utilities/MessageBus.ts b/packages/app-bridge/src/utilities/MessageBus.ts deleted file mode 100644 index cf7f35265..000000000 --- a/packages/app-bridge/src/utilities/MessageBus.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { InitializationError, TimeoutReachedError } from '../errors'; - -import { generateRandomString } from './hash'; -import { SUBSCRIBE_TIMEOUT } from './subscribe'; - -export interface IMessageBus { - post(message: { parameter: unknown }): unknown; -} - -export class MessageBus implements IMessageBus { - private messageBucket: { - message: unknown; - token: string; - resolve: (value: unknown) => void; - }[] = []; - - constructor(private port: MessagePort) { - this.port.onmessage = (event) => { - const { token } = event.data; - const messageIndex = this.messageBucket.findIndex((item) => item.token === token); - if (messageIndex > -1) { - const message = this.messageBucket.splice(messageIndex, 1)[0]; - message.resolve(event.data.message); - } - }; - } - - public post(message: unknown) { - return new Promise((resolve, reject) => { - const token = generateRandomString(); - - this.messageBucket.push({ message, resolve, token }); - this.port.postMessage({ message, token }); - - setTimeout(() => { - reject(new TimeoutReachedError('operation')); - }, SUBSCRIBE_TIMEOUT * 10); - }); - } -} - -export class ErrorMessageBus implements IMessageBus { - post() { - throw new InitializationError('First use await platformApp.dispatch({ name: "openConnection" })'); - } -} diff --git a/packages/app-bridge/src/utilities/file.ts b/packages/app-bridge/src/utilities/file.ts index a296c8fed..63a246b8d 100644 --- a/packages/app-bridge/src/utilities/file.ts +++ b/packages/app-bridge/src/utilities/file.ts @@ -211,9 +211,3 @@ export const mimeTypes: Record = { [FileExtension.Xyz]: 'chemical/x-xyz', [FileExtension.Zip]: 'application/zip', }; - -export const getMimeType = (filetypes: string[]): string[] => { - return filetypes - .map((filetype) => mimeTypes[filetype as keyof typeof mimeTypes]) - .filter((mimeType) => mimeType !== undefined); -}; diff --git a/packages/app-bridge/src/utilities/queryParams.spec.ts b/packages/app-bridge/src/utilities/queryParams.spec.ts deleted file mode 100644 index 2052bc938..000000000 --- a/packages/app-bridge/src/utilities/queryParams.spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it } from 'vitest'; - -import { getQueryParameters } from './queryParams'; - -describe('queryParams', () => { - it('should return correct queryParams from url', () => { - expect(getQueryParameters('https://www.frontify.com?foo=bar&baz=qux')).toEqual({ foo: 'bar', baz: 'qux' }); - }); - - it('should return empty object if no queryParams are present', () => { - expect(getQueryParameters('https://www.frontify.com')).toEqual({}); - }); - - it('should return empty object if url is empty', () => { - expect(() => getQueryParameters('')).toThrowError('Validation failed. "" is not a valid url'); - }); - - it('should return empty object if url is undefined', () => { - expect(() => getQueryParameters(undefined as unknown as string)).toThrowError( - 'Validation failed. "undefined" is not a valid url', - ); - }); - - it('should return empty object if url is null', () => { - expect(() => getQueryParameters(null as unknown as string)).toThrowError( - 'Validation failed. "null" is not a valid url', - ); - }); - - it('should return objects of well formed query parameters', () => { - expect(getQueryParameters('https://www.frontify.com?foo=bar&baz')).toEqual({ foo: 'bar', baz: '' }); - }); -}); diff --git a/packages/app-bridge/src/utilities/queryParams.ts b/packages/app-bridge/src/utilities/queryParams.ts deleted file mode 100644 index dbf3936b4..000000000 --- a/packages/app-bridge/src/utilities/queryParams.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { ValidationError } from '../errors/ValidationError'; - -export type QueryParams = { [key: string]: string }; - -export const getQueryParameters = (url: string): QueryParams => { - const paramsToObject = (entries: IterableIterator<[string, string]>) => { - const result: QueryParams = {}; - - for (const [key, value] of entries) { - result[key] = value; - } - - return result; - }; - - try { - const urlObject = new URL(url); - return paramsToObject(urlObject.searchParams.entries()); - } catch { - throw new ValidationError(`"${url}" is not a valid url`); - } -}; diff --git a/packages/app-bridge/src/window.d.ts b/packages/app-bridge/src/window.d.ts index 4337ebad6..4e208e836 100644 --- a/packages/app-bridge/src/window.d.ts +++ b/packages/app-bridge/src/window.d.ts @@ -2,11 +2,9 @@ import type { Emitter } from 'mitt'; import type { EmitterEvents, TerrificComponent, TerrificEvent } from './types'; -import { AppBridgePlatformApp } from './AppBridgePlatformApp.ts'; declare global { interface Window { - appBridgePlatformApp: AppBridgePlatformApp; APPLICATION_CONFIG: { version: string; bugsnagKey: string | null; From 50daaac208bd670f66252b6b3b956e8af3eae9b2 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Fri, 26 Jul 2024 10:01:05 +0200 Subject: [PATCH 125/182] chore: fix dev branch (#1077) --- packages/platform-app/package.json | 3 +-- packages/platform-app/src/platformApps.ts | 2 +- pnpm-lock.yaml | 22 +++++++++++----------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/platform-app/package.json b/packages/platform-app/package.json index cace5cfd0..213df4989 100644 --- a/packages/platform-app/package.json +++ b/packages/platform-app/package.json @@ -29,7 +29,6 @@ "test:watch": "vitest" }, "peerDependencies": { - "@frontify/app-bridge": "^3.0.0 || ^4.0.0-alpha.0", "react": "^18", "react-dom": "^18" }, @@ -37,7 +36,7 @@ "@frontify/sidebar-settings": "workspace:^" }, "devDependencies": { - "@frontify/app-bridge": "workspace:^", + "@frontify/app-bridge-app": "workspace:^", "@frontify/eslint-config-react": "^0.17.6", "@types/react": "^18.2.75", "eslint": "^8.57.0", diff --git a/packages/platform-app/src/platformApps.ts b/packages/platform-app/src/platformApps.ts index ab49438eb..6f47bad19 100644 --- a/packages/platform-app/src/platformApps.ts +++ b/packages/platform-app/src/platformApps.ts @@ -1,6 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type AppBridgePlatformApp } from '@frontify/app-bridge'; +import { type AppBridgePlatformApp } from '@frontify/app-bridge-app'; import { type ChecklistBlock as ChecklistBlockSettings, type ColorInputBlock as ColorInputBlockSettings, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab6a7995e..abbf23dab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -485,9 +485,9 @@ importers: specifier: workspace:^ version: link:../sidebar-settings devDependencies: - '@frontify/app-bridge': + '@frontify/app-bridge-app': specifier: workspace:^ - version: link:../app-bridge + version: link:../app-bridge-app '@frontify/eslint-config-react': specifier: ^0.17.6 version: 0.17.6(eslint@8.57.0)(prettier@3.3.2)(react@18.3.1)(typescript@5.5.2) @@ -10051,9 +10051,9 @@ snapshots: '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.2) eslint: 8.57.0 eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsonc: 2.16.0(eslint@8.57.0) eslint-plugin-lodash: 7.4.0(eslint@8.57.0) eslint-plugin-markdown: 4.0.1(eslint@8.57.0) @@ -14424,13 +14424,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 4.3.5(supports-color@8.1.1) enhanced-resolve: 5.17.0 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.5 is-core-module: 2.14.0 @@ -14441,14 +14441,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.2) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -14458,7 +14458,7 @@ snapshots: eslint: 8.57.0 ignore: 5.3.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -14468,7 +14468,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.14.0 is-glob: 4.0.3 From 78555ee76fbb487cf4a7c0fe3cda419704b35f63 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Fri, 26 Jul 2024 10:35:12 +0200 Subject: [PATCH 126/182] chore: add changelog (#1078) --- .changeset/brave-queens-smile.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/brave-queens-smile.md diff --git a/.changeset/brave-queens-smile.md b/.changeset/brave-queens-smile.md new file mode 100644 index 000000000..5aa11b4ab --- /dev/null +++ b/.changeset/brave-queens-smile.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +chore: remove appBridgePlatformApp From 68b6fff26b3275c1595d987f62cf6d5bcd4d5e78 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 10:51:41 +0200 Subject: [PATCH 127/182] chore: release packages (alpha) (#1079) Co-authored-by: julianiff --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 0849f5df4..f52007cf6 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -12,6 +12,7 @@ }, "changesets": [ "angry-dolphins-fry", + "brave-queens-smile", "brave-queens-work", "calm-candles-wink", "clever-suns-laugh", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index b4cb7ac8f..eb1b0e38f 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.35 + +### Patch Changes + +- [#1078](https://github.com/Frontify/brand-sdk/pull/1078) [`78555ee`](https://github.com/Frontify/brand-sdk/commit/78555ee76fbb487cf4a7c0fe3cda419704b35f63) Thanks [@julianiff](https://github.com/julianiff)! - chore: remove appBridgePlatformApp + ## 4.0.0-alpha.34 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 677477944..c57030981 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.34", + "version": "4.0.0-alpha.35", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 13b9cd6c4e57896c1856c9367d89e2bdb8d7083c Mon Sep 17 00:00:00 2001 From: julianiff Date: Fri, 26 Jul 2024 12:52:50 +0200 Subject: [PATCH 128/182] chore: readd getMimeType --- packages/app-bridge/src/utilities/file.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/app-bridge/src/utilities/file.ts b/packages/app-bridge/src/utilities/file.ts index 63a246b8d..a296c8fed 100644 --- a/packages/app-bridge/src/utilities/file.ts +++ b/packages/app-bridge/src/utilities/file.ts @@ -211,3 +211,9 @@ export const mimeTypes: Record = { [FileExtension.Xyz]: 'chemical/x-xyz', [FileExtension.Zip]: 'application/zip', }; + +export const getMimeType = (filetypes: string[]): string[] => { + return filetypes + .map((filetype) => mimeTypes[filetype as keyof typeof mimeTypes]) + .filter((mimeType) => mimeType !== undefined); +}; From a78218b302929a05616f2d157968aa007cf36115 Mon Sep 17 00:00:00 2001 From: Julian Iff Date: Fri, 26 Jul 2024 12:57:42 +0200 Subject: [PATCH 129/182] Fix: readd method [CU-86956kjxw] (#1080) * chore: readd method * Create nine-roses-sleep.md --- .changeset/nine-roses-sleep.md | 5 +++++ packages/app-bridge/src/utilities/file.ts | 11 +++++------ 2 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 .changeset/nine-roses-sleep.md diff --git a/.changeset/nine-roses-sleep.md b/.changeset/nine-roses-sleep.md new file mode 100644 index 000000000..ff1af532e --- /dev/null +++ b/.changeset/nine-roses-sleep.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +Fix: readd method diff --git a/packages/app-bridge/src/utilities/file.ts b/packages/app-bridge/src/utilities/file.ts index a296c8fed..c318db5b1 100644 --- a/packages/app-bridge/src/utilities/file.ts +++ b/packages/app-bridge/src/utilities/file.ts @@ -2,6 +2,11 @@ import { FileExtension } from '../types/FileExtension'; +export const getMimeType = (filetypes: string[]): string[] => { + return filetypes + .map((filetype) => mimeTypes[filetype as keyof typeof mimeTypes]) + .filter((mimeType) => mimeType !== undefined); +}; export const mimeTypes: Record = { [FileExtension.Aac]: 'audio/aac', [FileExtension.Ac3]: 'audio/ac3', @@ -211,9 +216,3 @@ export const mimeTypes: Record = { [FileExtension.Xyz]: 'chemical/x-xyz', [FileExtension.Zip]: 'application/zip', }; - -export const getMimeType = (filetypes: string[]): string[] => { - return filetypes - .map((filetype) => mimeTypes[filetype as keyof typeof mimeTypes]) - .filter((mimeType) => mimeType !== undefined); -}; From b63888d973ce97c26b71618dea79646cacebdc54 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 13:04:53 +0200 Subject: [PATCH 130/182] chore: release packages (alpha) (#1081) Co-authored-by: julianiff --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index f52007cf6..a392e7ff9 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -41,6 +41,7 @@ "neat-plants-smile", "nervous-walls-repair", "new-zebras-unite", + "nine-roses-sleep", "odd-geckos-end", "orange-jokes-listen", "pink-bugs-behave", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index eb1b0e38f..7a7ff668e 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.36 + +### Patch Changes + +- [#1080](https://github.com/Frontify/brand-sdk/pull/1080) [`a78218b`](https://github.com/Frontify/brand-sdk/commit/a78218b302929a05616f2d157968aa007cf36115) Thanks [@julianiff](https://github.com/julianiff)! - Fix: readd method + ## 4.0.0-alpha.35 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index c57030981..d2a7813c2 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.35", + "version": "4.0.0-alpha.36", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 3335235dc5f107280cac5c57a5008c4c9e2949e1 Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Wed, 28 Aug 2024 10:46:36 +0200 Subject: [PATCH 131/182] refactor(themes): add color utilities (#1084) * refactor(themes): get color utilities file * Create eighty-ants-happen.md --- .changeset/eighty-ants-happen.md | 5 +++ packages/app-bridge-theme/src/index.ts | 1 + .../src/utilities/color.spec.ts | 39 +++++++++++++++++++ .../app-bridge-theme/src/utilities/color.ts | 9 +++++ .../app-bridge-theme/src/utilities/index.ts | 3 ++ 5 files changed, 57 insertions(+) create mode 100644 .changeset/eighty-ants-happen.md create mode 100644 packages/app-bridge-theme/src/utilities/color.spec.ts create mode 100644 packages/app-bridge-theme/src/utilities/color.ts create mode 100644 packages/app-bridge-theme/src/utilities/index.ts diff --git a/.changeset/eighty-ants-happen.md b/.changeset/eighty-ants-happen.md new file mode 100644 index 000000000..a0d204c05 --- /dev/null +++ b/.changeset/eighty-ants-happen.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +refactor(themes): add color utilities diff --git a/packages/app-bridge-theme/src/index.ts b/packages/app-bridge-theme/src/index.ts index 4ad8c9eff..bcf9ae096 100644 --- a/packages/app-bridge-theme/src/index.ts +++ b/packages/app-bridge-theme/src/index.ts @@ -4,3 +4,4 @@ export * from './AppBridgeTheme'; export * from './react'; export * from './registries'; export * from './types'; +export * from './utilities'; diff --git a/packages/app-bridge-theme/src/utilities/color.spec.ts b/packages/app-bridge-theme/src/utilities/color.spec.ts new file mode 100644 index 000000000..504caa867 --- /dev/null +++ b/packages/app-bridge-theme/src/utilities/color.spec.ts @@ -0,0 +1,39 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; + +import { rgbObjectToRgbString } from './color'; + +describe('Color', () => { + describe('rgbObjectToRgbString', () => { + it('should return a valid RGB string when given an object with R, G, and B.', () => { + const color = { red: 255, green: 99, blue: 71 }; + expect(rgbObjectToRgbString(color)).toBe('rgb(255, 99, 71)'); + }); + + it('should return a valid RGBA string when given an object with R, G, B, and A.', () => { + const color = { red: 255, green: 99, blue: 71, alpha: 0.5 }; + expect(rgbObjectToRgbString(color)).toBe('rgba(255, 99, 71, 0.5)'); + }); + + it('should return a valid RGB string when given an object with 255 R, G, and B.', () => { + const color = { red: 255, green: 255, blue: 255 }; + expect(rgbObjectToRgbString(color)).toBe('rgb(255, 255, 255)'); + }); + + it('should return a valid RGB string when given an object with 0 R, G, and B.', () => { + const color = { red: 0, green: 0, blue: 0 }; + expect(rgbObjectToRgbString(color)).toBe('rgb(0, 0, 0)'); + }); + + it('should return a valid RGBA string when given an object with 255 R, G, B and a valid A.', () => { + const color = { red: 255, green: 255, blue: 255, alpha: 1 }; + expect(rgbObjectToRgbString(color)).toBe('rgba(255, 255, 255, 1)'); + }); + + it('should return a valid RGBA string when given an object with 0 R, G, B and a valid A.', () => { + const color = { red: 0, green: 0, blue: 0, alpha: 1 }; + expect(rgbObjectToRgbString(color)).toBe('rgba(0, 0, 0, 1)'); + }); + }); +}); diff --git a/packages/app-bridge-theme/src/utilities/color.ts b/packages/app-bridge-theme/src/utilities/color.ts new file mode 100644 index 000000000..0cb0f39f2 --- /dev/null +++ b/packages/app-bridge-theme/src/utilities/color.ts @@ -0,0 +1,9 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export const rgbObjectToRgbString = (color: { red: number; green: number; blue: number; alpha?: number }): string => { + if ('alpha' in color) { + return `rgba(${color.red}, ${color.green}, ${color.blue}, ${color.alpha})`; + } + + return `rgb(${color.red}, ${color.green}, ${color.blue})`; +}; diff --git a/packages/app-bridge-theme/src/utilities/index.ts b/packages/app-bridge-theme/src/utilities/index.ts new file mode 100644 index 000000000..6f3fbde03 --- /dev/null +++ b/packages/app-bridge-theme/src/utilities/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './color'; From b81ba6f1cbc1cc82f91a7e9398285aef346187b0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 28 Aug 2024 09:08:06 +0000 Subject: [PATCH 132/182] chore: release packages (alpha) (#1085) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a392e7ff9..e0cc63a58 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -20,6 +20,7 @@ "curly-pots-scream", "dry-mangos-fix", "early-masks-appear", + "eighty-ants-happen", "eleven-shrimps-jog", "fast-houses-hunt", "few-islands-build", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 8d1005320..181435ce3 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.17 + +### Patch Changes + +- [#1084](https://github.com/Frontify/brand-sdk/pull/1084) [`3335235`](https://github.com/Frontify/brand-sdk/commit/3335235dc5f107280cac5c57a5008c4c9e2949e1) Thanks [@anxobotana](https://github.com/anxobotana)! - refactor(themes): add color utilities + ## 0.0.0-alpha.16 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index c8bd53bc4..ac4e728c2 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.16", + "version": "0.0.0-alpha.17", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { From fc3ee83b7a4dd406c386431d0b72cf9873e9dfed Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Fri, 30 Aug 2024 10:12:53 +0200 Subject: [PATCH 133/182] feat: add guideline-themes package (#1087) * feat: add guideline-themes-settings * config * per PR review * more updates * cleaning * lock * more cleaning * cleaning again... * merge theme.ts into index.ts * update deps * deps * update github action * fixing eslint * Create cyan-cougars-invite.md * rename package * :) --- .changeset/cyan-cougars-invite.md | 5 + ...uideline-themes-continuous-integration.yml | 82 ++++ packages/guideline-themes/.eslintrc.cjs | 58 +++ packages/guideline-themes/.gitignore | 2 + packages/guideline-themes/.prettierrc | 7 + packages/guideline-themes/README.md | 3 + packages/guideline-themes/package.json | 59 +++ packages/guideline-themes/setupTests.ts | 13 + packages/guideline-themes/src/index.ts | 105 +++++ .../src/utilities/color/color.spec.ts | 39 ++ .../src/utilities/color/color.ts | 9 + .../src/utilities/color/index.ts | 3 + .../guideline-themes/src/utilities/index.ts | 4 + .../guideline-themes/src/utilities/merge.ts | 10 + packages/guideline-themes/tsconfig.json | 24 + packages/guideline-themes/tsconfig.node.json | 12 + packages/guideline-themes/vite.config.ts | 58 +++ pnpm-lock.yaml | 427 ++++++++++++++++++ 18 files changed, 920 insertions(+) create mode 100644 .changeset/cyan-cougars-invite.md create mode 100644 .github/workflows/guideline-themes-continuous-integration.yml create mode 100644 packages/guideline-themes/.eslintrc.cjs create mode 100644 packages/guideline-themes/.gitignore create mode 100644 packages/guideline-themes/.prettierrc create mode 100644 packages/guideline-themes/README.md create mode 100644 packages/guideline-themes/package.json create mode 100644 packages/guideline-themes/setupTests.ts create mode 100644 packages/guideline-themes/src/index.ts create mode 100644 packages/guideline-themes/src/utilities/color/color.spec.ts create mode 100644 packages/guideline-themes/src/utilities/color/color.ts create mode 100644 packages/guideline-themes/src/utilities/color/index.ts create mode 100644 packages/guideline-themes/src/utilities/index.ts create mode 100644 packages/guideline-themes/src/utilities/merge.ts create mode 100644 packages/guideline-themes/tsconfig.json create mode 100644 packages/guideline-themes/tsconfig.node.json create mode 100644 packages/guideline-themes/vite.config.ts diff --git a/.changeset/cyan-cougars-invite.md b/.changeset/cyan-cougars-invite.md new file mode 100644 index 000000000..843fe4fb0 --- /dev/null +++ b/.changeset/cyan-cougars-invite.md @@ -0,0 +1,5 @@ +--- +"@frontify/guideline-themes": patch +--- + +feat: starting guideline-themes package diff --git a/.github/workflows/guideline-themes-continuous-integration.yml b/.github/workflows/guideline-themes-continuous-integration.yml new file mode 100644 index 000000000..88546bf3c --- /dev/null +++ b/.github/workflows/guideline-themes-continuous-integration.yml @@ -0,0 +1,82 @@ +name: Guideline Themes CI + +on: + pull_request: + paths: + - packages/guideline-themes/** + +# Ensures that only one workflow per branch will run at a time. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + lint-typecheck: + runs-on: ubuntu-latest + timeout-minutes: 10 + + strategy: + fail-fast: false + matrix: + app-bridge-theme-version: ["workspace:^"] + + steps: + - name: Checkout default branch + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Use pnpm + uses: pnpm/action-setup@v3 + with: + run_install: false + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + cache: "pnpm" + + - name: Install npm dependencies + run: pnpm i --frozen-lockfile + + - name: Build @frontify/app-bridge-theme (if workspace) + if: matrix.app-bridge-theme-version == 'workspace:^' + run: pnpm build:app-bridge-theme + + - name: Add app-bridge-theme dependency + run: pnpm add @frontify/app-bridge-theme@${{ matrix.app-bridge-theme-version }} --filter {packages/guideline-themes} + + - name: Typecheck code + run: pnpm --stream --filter {packages/guideline-themes} typecheck + + - name: Lint code + run: pnpm --stream --filter {packages/guideline-themes} lint + + unit-tests: + runs-on: ubuntu-latest + timeout-minutes: 10 + + strategy: + fail-fast: false + + steps: + - name: Checkout current commit + uses: actions/checkout@v4 + + - name: Use pnpm + uses: pnpm/action-setup@v3 + with: + run_install: false + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Tests + run: pnpm --stream --filter {packages/guideline-themes} test diff --git a/packages/guideline-themes/.eslintrc.cjs b/packages/guideline-themes/.eslintrc.cjs new file mode 100644 index 000000000..04ef1024d --- /dev/null +++ b/packages/guideline-themes/.eslintrc.cjs @@ -0,0 +1,58 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +module.exports = { + root: true, + extends: ['@frontify/eslint-config-react'], + plugins: ['notice'], + settings: { + react: { + version: 'detect', + }, + }, + parserOptions: { + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + sourceType: 'module', + }, + overrides: [ + { + files: ['*.js', '*.ts', '*.tsx'], + rules: { + 'notice/notice': [ + 'error', + { + template: '/* (c) Copyright Frontify Ltd., all rights reserved. */\n\n', + messages: { + whenFailedToMatch: 'No Frontify copyright header set.', + }, + }, + ], + }, + }, + { + files: ['*.ts', '*.tsx', '*.mts', '*.cts'], + rules: { + 'no-prototype-builtins': 'warn', + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-misused-promises': 'warn', + '@typescript-eslint/no-unsafe-argument': 'warn', + '@typescript-eslint/no-unsafe-assignment': 'warn', + '@typescript-eslint/no-unsafe-call': 'warn', + '@typescript-eslint/no-unsafe-member-access': 'warn', + '@typescript-eslint/no-unsafe-return': 'warn', + '@typescript-eslint/require-await': 'warn', + '@typescript-eslint/await-thenable': 'warn', + '@typescript-eslint/no-unsafe-enum-comparison': 'warn', + '@typescript-eslint/restrict-plus-operands': 'warn', + }, + }, + { + files: ['**/*.md/**/*'], + processor: 'markdown/markdown', + parserOptions: { + project: null, + }, + }, + ], +}; diff --git a/packages/guideline-themes/.gitignore b/packages/guideline-themes/.gitignore new file mode 100644 index 000000000..de4d1f007 --- /dev/null +++ b/packages/guideline-themes/.gitignore @@ -0,0 +1,2 @@ +dist +node_modules diff --git a/packages/guideline-themes/.prettierrc b/packages/guideline-themes/.prettierrc new file mode 100644 index 000000000..9dd9fc632 --- /dev/null +++ b/packages/guideline-themes/.prettierrc @@ -0,0 +1,7 @@ +{ + "singleQuote": true, + "tabWidth": 4, + "printWidth": 120, + "arrowParens": "always", + "endOfLine": "lf" +} diff --git a/packages/guideline-themes/README.md b/packages/guideline-themes/README.md new file mode 100644 index 000000000..bd8b3ccbd --- /dev/null +++ b/packages/guideline-themes/README.md @@ -0,0 +1,3 @@ +# Themes types + +Provides typing for guideline themes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json new file mode 100644 index 000000000..1c4b7c72b --- /dev/null +++ b/packages/guideline-themes/package.json @@ -0,0 +1,59 @@ +{ + "name": "@frontify/guideline-themes", + "type": "module", + "version": "0.0.0", + "description": "Provides types and helpers for the guideline themes development", + "author": "Frontify Developers ", + "repository": { + "type": "git", + "url": "https://github.com/Frontify/brand-sdk", + "directory": "packages/guideline-themes" + }, + "sideEffects": false, + "publishConfig": { + "access": "public" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/index.umd.js", + "import": "./dist/index.es.js" + } + }, + "main": "./dist/index.es.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "vite build", + "lint": "eslint .", + "lint:fix": "eslint --fix .", + "prettier": "prettier --check .", + "prettier:fix": "prettier --write .", + "test": "vitest run --silent", + "test:coverage": "vitest --coverage", + "test:watch": "vitest", + "test:ui": "vitest --ui", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@frontify/app-bridge-theme": "workspace:^", + "@frontify/sidebar-settings": "^0.9.20" + }, + "devDependencies": { + "@frontify/eslint-config-react": "0.17.6", + "@types/node": "^18.19.31", + "@types/react": "^18.2.75", + "@vitest/coverage-v8": "^1.4.0", + "@vitest/ui": "^1.4.0", + "eslint": "^8.57.0", + "eslint-plugin-notice": "^0.9.10", + "prettier": "^3.2.5", + "typescript": "^5.4.4", + "vite": "^5.2.10", + "vite-plugin-dts": "^3.8.1", + "vite-plugin-externals": "^0.6.2", + "vitest": "^1.4.0" + } +} diff --git a/packages/guideline-themes/setupTests.ts b/packages/guideline-themes/setupTests.ts new file mode 100644 index 000000000..78bfeb7d6 --- /dev/null +++ b/packages/guideline-themes/setupTests.ts @@ -0,0 +1,13 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { afterEach, vi } from 'vitest'; + +vi.stubGlobal('crypto', { + getRandomValues: vi.fn(), +}); + +afterEach(() => { + vi.restoreAllMocks(); +}); + +globalThis.structuredClone = (data: unknown) => JSON.parse(JSON.stringify(data)); diff --git a/packages/guideline-themes/src/index.ts b/packages/guideline-themes/src/index.ts new file mode 100644 index 000000000..6477abfa7 --- /dev/null +++ b/packages/guideline-themes/src/index.ts @@ -0,0 +1,105 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type AppBridgeTheme, type ThemeTemplate } from '@frontify/app-bridge-theme'; +import { + type AssetInputBlock as AssetInputBlockSidebarSettings, + type BaseBlock as BaseBlockSidebarSettings, + type Bundle as BundleSidebarSettings, + type ChecklistBlock as ChecklistBlockSidebarSettings, + type ChoicesType as ChoicesTypeSidebarSettings, + type ColorInputBlock as ColorInputBlockSidebarSettings, + type DropdownBlock as DropdownBlockSidebarSettings, + type DynamicSettingBlock as DynamicSettingBlockSidebarSettings, + type DynamicSupportedBlock as DynamicSupportedBlockSidebarSettings, + type InputBlock as InputBlockSidebarSettings, + type LegacyAssetInputBlock as LegacyAssetInputBlockSidebarSettings, + type LinkChooserBlock as LinkChooserBlockSidebarSettings, + type MultiInputBlock as MultiInputBlockSidebarSettings, + type NotificationBlock as NotificationBlockSidebarSettings, + type SectionHeadingBlock as SectionHeadingBlockSidebarSettings, + type SegmentedControlsBlock as SegmentedControlsBlockSidebarSettings, + type SettingBlock as SettingBlockSidebarSettings, + type SimpleSettingBlock as SimpleSettingBlockSidebarSettings, + type SwitchBlock as SwitchBlockSidebarSettings, + type TemplateInputBlock as TemplateInputBlockSidebarSettings, + type TextareaBlock as TextareaBlockSidebarSettings, + type ValueOrPromisedValue as ValueOrPromisedValueSidebarSettings, +} from '@frontify/sidebar-settings'; +import { type FC } from 'react'; + +export * from '@frontify/sidebar-settings'; + +export * from './utilities'; + +export type AssetInputBlock = AssetInputBlockSidebarSettings; +export type BaseBlock = BaseBlockSidebarSettings; +export type Bundle = BundleSidebarSettings; +export type ChecklistBlock = ChecklistBlockSidebarSettings; +export type ChoicesType = ChoicesTypeSidebarSettings; +export type ColorInputBlock = ColorInputBlockSidebarSettings; +export type DropdownBlock = DropdownBlockSidebarSettings; +export type DynamicSettingBlock = + DynamicSettingBlockSidebarSettings; +export type DynamicSupportedBlock = DynamicSupportedBlockSidebarSettings; +export type InputBlock = InputBlockSidebarSettings; +export type LegacyAssetInputBlock = LegacyAssetInputBlockSidebarSettings; +export type LinkChooserBlock = LinkChooserBlockSidebarSettings; +export type MultiInputBlock = MultiInputBlockSidebarSettings; +export type NotificationBlock = NotificationBlockSidebarSettings; +export type SectionHeadingBlock = SectionHeadingBlockSidebarSettings; +export type SegmentedControlsBlock = SegmentedControlsBlockSidebarSettings; +export type SettingBlock = SettingBlockSidebarSettings; +export type SimpleSettingBlock = SimpleSettingBlockSidebarSettings; +export type SwitchBlock = SwitchBlockSidebarSettings; +export type TemplateInputBlock = TemplateInputBlockSidebarSettings; +export type TextareaBlock = TextareaBlockSidebarSettings; +export type ValueOrPromisedValue = ValueOrPromisedValueSidebarSettings; + +export type ContentAreaWidthChoice = '1200px' | '1000px' | '800px'; +export type ContentAreaWidthTemplateSettings = { + contentAreaWidthChoice?: ContentAreaWidthChoice; + contentAreaWidthCustom?: string; + contentAreaWidthCustomEnabled?: boolean; +}; +export type ContentAreaPaddingChoice = '25px' | '50px' | '75px'; +export type ContentAreaPaddingTemplateSettings = { + contentAreaPaddingChoice?: ContentAreaPaddingChoice; + contentAreaPaddingCustom?: string; + contentAreaPaddingCustomEnabled?: boolean; +}; +export type ContentAreaAlignmentChoice = 'left' | 'center' | 'right'; +export type ContentAreaAlignmentSetting = { contentAreaAlignmentChoice?: ContentAreaAlignmentChoice }; + +export type ThemeSettingsStructure = Record; +export type ThemeSettingsStructureExport = { [customSectionName: string]: SettingBlock[] }; + +export type ThemeProps = { + appBridge: AppBridgeTheme; + Content: FC; + Footer: FC | null; +}; + +export type ThemeTemplateExport = { + component: FC; + settings: ThemeSettingsStructureExport; +}; + +export type ThemeConfigExport = { + templates: { + cover: { default: ThemeTemplateExport } & Record; + documentPage: { default: ThemeTemplateExport } & Record; + library: { default: ThemeTemplateExport } & Record; + }; + settings: ThemeSettingsStructure; +}; + +/** + * Type helper to make it easier to export a theme, accepts a direct {@link ThemeConfigExport} object. + */ +export const defineTheme = (config: ThemeConfigExport): ThemeConfigExport => config; + +/** + * Type helper to make it easier to export theme's settings structure, accepts a direct {@link ThemeSettingsStructureExport} object. + */ +export const defineSettings = (settingsStructure: ThemeSettingsStructureExport): ThemeSettingsStructureExport => + settingsStructure; diff --git a/packages/guideline-themes/src/utilities/color/color.spec.ts b/packages/guideline-themes/src/utilities/color/color.spec.ts new file mode 100644 index 000000000..504caa867 --- /dev/null +++ b/packages/guideline-themes/src/utilities/color/color.spec.ts @@ -0,0 +1,39 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { describe, expect, it } from 'vitest'; + +import { rgbObjectToRgbString } from './color'; + +describe('Color', () => { + describe('rgbObjectToRgbString', () => { + it('should return a valid RGB string when given an object with R, G, and B.', () => { + const color = { red: 255, green: 99, blue: 71 }; + expect(rgbObjectToRgbString(color)).toBe('rgb(255, 99, 71)'); + }); + + it('should return a valid RGBA string when given an object with R, G, B, and A.', () => { + const color = { red: 255, green: 99, blue: 71, alpha: 0.5 }; + expect(rgbObjectToRgbString(color)).toBe('rgba(255, 99, 71, 0.5)'); + }); + + it('should return a valid RGB string when given an object with 255 R, G, and B.', () => { + const color = { red: 255, green: 255, blue: 255 }; + expect(rgbObjectToRgbString(color)).toBe('rgb(255, 255, 255)'); + }); + + it('should return a valid RGB string when given an object with 0 R, G, and B.', () => { + const color = { red: 0, green: 0, blue: 0 }; + expect(rgbObjectToRgbString(color)).toBe('rgb(0, 0, 0)'); + }); + + it('should return a valid RGBA string when given an object with 255 R, G, B and a valid A.', () => { + const color = { red: 255, green: 255, blue: 255, alpha: 1 }; + expect(rgbObjectToRgbString(color)).toBe('rgba(255, 255, 255, 1)'); + }); + + it('should return a valid RGBA string when given an object with 0 R, G, B and a valid A.', () => { + const color = { red: 0, green: 0, blue: 0, alpha: 1 }; + expect(rgbObjectToRgbString(color)).toBe('rgba(0, 0, 0, 1)'); + }); + }); +}); diff --git a/packages/guideline-themes/src/utilities/color/color.ts b/packages/guideline-themes/src/utilities/color/color.ts new file mode 100644 index 000000000..0cb0f39f2 --- /dev/null +++ b/packages/guideline-themes/src/utilities/color/color.ts @@ -0,0 +1,9 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export const rgbObjectToRgbString = (color: { red: number; green: number; blue: number; alpha?: number }): string => { + if ('alpha' in color) { + return `rgba(${color.red}, ${color.green}, ${color.blue}, ${color.alpha})`; + } + + return `rgb(${color.red}, ${color.green}, ${color.blue})`; +}; diff --git a/packages/guideline-themes/src/utilities/color/index.ts b/packages/guideline-themes/src/utilities/color/index.ts new file mode 100644 index 000000000..6f3fbde03 --- /dev/null +++ b/packages/guideline-themes/src/utilities/color/index.ts @@ -0,0 +1,3 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './color'; diff --git a/packages/guideline-themes/src/utilities/index.ts b/packages/guideline-themes/src/utilities/index.ts new file mode 100644 index 000000000..d52013bdf --- /dev/null +++ b/packages/guideline-themes/src/utilities/index.ts @@ -0,0 +1,4 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +export * from './color'; +export * from './merge'; diff --git a/packages/guideline-themes/src/utilities/merge.ts b/packages/guideline-themes/src/utilities/merge.ts new file mode 100644 index 000000000..ef4aad2c5 --- /dev/null +++ b/packages/guideline-themes/src/utilities/merge.ts @@ -0,0 +1,10 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +/** + * Cleans and joins an array of inputs with possible undefined or boolean values. + * + * @param classNames Array of class names + * @returns Clean string to be used for class name + */ +export const merge = (classNames: (string | undefined | null | boolean)[]): string => + classNames.filter(Boolean).join(' '); diff --git a/packages/guideline-themes/tsconfig.json b/packages/guideline-themes/tsconfig.json new file mode 100644 index 000000000..f0f1cc947 --- /dev/null +++ b/packages/guideline-themes/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2021", + "useDefineForClassFields": true, + "lib": ["ES2021", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUncheckedIndexedAccess": false, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "baseUrl": ".", + "types": ["node"] + }, + "include": ["src", "setupTests.ts"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/packages/guideline-themes/tsconfig.node.json b/packages/guideline-themes/tsconfig.node.json new file mode 100644 index 000000000..0e59d96dd --- /dev/null +++ b/packages/guideline-themes/tsconfig.node.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "lib": ["ESNext"], + "target": "ESNext" + }, + "include": [".eslintrc.cjs", "vite.config.ts", "package.json"] +} diff --git a/packages/guideline-themes/vite.config.ts b/packages/guideline-themes/vite.config.ts new file mode 100644 index 000000000..35e00dcbc --- /dev/null +++ b/packages/guideline-themes/vite.config.ts @@ -0,0 +1,58 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { resolve } from 'node:path'; + +import dts from 'vite-plugin-dts'; +import { defineConfig } from 'vitest/config'; + +import { dependencies as dependenciesMap } from './package.json'; + +const dependencies = Object.keys(dependenciesMap); + +export default defineConfig({ + plugins: [dts({ insertTypesEntry: true, rollupTypes: true })], + resolve: { + mainFields: ['module', 'main'], + }, + test: { + environment: 'happy-dom', + deps: { + inline: ['clsx', '@juggle/resize-observer', '@frontify/fondue'], + }, + setupFiles: ['setupTests.ts'], + coverage: { + provider: 'v8', + all: true, + reporter: ['text', 'lcov'], + include: ['src/**/*.ts', 'src/**/*.tsx'], + exclude: ['src/**/test.ts', 'src/**/test.tsx', 'src/**/spec.ts', 'src/**/spec.tsx'], + }, + }, + build: { + lib: { + entry: resolve(__dirname, 'src/index.ts'), + fileName: (format: string) => `[name].${format}.js`, + }, + sourcemap: true, + minify: true, + rollupOptions: { + external: [...dependencies], + output: [ + { + name: 'GuidelineThemes', + format: 'es', + preserveModules: true, + preserveModulesRoot: 'src', + }, + { + name: 'GuidelineThemes', + format: 'umd', + }, + { + name: 'GuidelineThemes', + format: 'cjs', + }, + ], + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abbf23dab..67ecc76fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -479,6 +479,55 @@ importers: specifier: ^1.4.0 version: 1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) + packages/guideline-themes: + dependencies: + '@frontify/app-bridge-theme': + specifier: workspace:^ + version: link:../app-bridge-theme + '@frontify/sidebar-settings': + specifier: ^0.9.20 + version: 0.9.20(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) + devDependencies: + '@frontify/eslint-config-react': + specifier: 0.17.6 + version: 0.17.6(eslint@8.57.0)(prettier@3.3.2)(react@18.3.1)(typescript@5.5.2) + '@types/node': + specifier: ^18.19.31 + version: 18.19.39 + '@types/react': + specifier: ^18.2.75 + version: 18.3.3 + '@vitest/coverage-v8': + specifier: ^1.4.0 + version: 1.4.0(vitest@1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1)) + '@vitest/ui': + specifier: ^1.4.0 + version: 1.6.0(vitest@1.6.0) + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-plugin-notice: + specifier: ^0.9.10 + version: 0.9.10(eslint@8.57.0) + prettier: + specifier: ^3.2.5 + version: 3.3.2 + typescript: + specifier: ^5.4.4 + version: 5.5.2 + vite: + specifier: ^5.2.10 + version: 5.3.1(@types/node@18.19.39)(terser@5.31.1) + vite-plugin-dts: + specifier: ^3.8.1 + version: 3.9.1(@types/node@18.19.39)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1)) + vite-plugin-externals: + specifier: ^0.6.2 + version: 0.6.2(vite@5.3.1(@types/node@18.19.39)(terser@5.31.1)) + vitest: + specifier: ^1.4.0 + version: 1.6.0(@types/node@18.19.39)(@vitest/ui@1.6.0)(happy-dom@13.10.1)(terser@5.31.1) + packages/platform-app: dependencies: '@frontify/sidebar-settings': @@ -1735,6 +1784,9 @@ packages: '@floating-ui/core@1.6.3': resolution: {integrity: sha512-1ZpCvYf788/ZXOhRQGFxnYQOVgeU+pi0i+d0Ow34La7qjIXETi6RNswGVKkA6KcDO8/+Ysu2E/CeUmmeEBDvTg==} + '@floating-ui/dom@1.6.10': + resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==} + '@floating-ui/dom@1.6.6': resolution: {integrity: sha512-qiTYajAnh3P+38kECeffMSQgbvXty2VB6rS+42iWR4FPIlZjLK84E9qtLnMTLIpPz2znD/TaFqaiavMUrS+Hcw==} @@ -1765,6 +1817,9 @@ packages: '@floating-ui/utils@0.2.3': resolution: {integrity: sha512-XGndio0l5/Gvd6CLIABvsav9HHezgDFFhDfHk1bvLfr9ni8dojqLSvBbotJEjmIwNHL7vK4QzBJTdBRoB+c1ww==} + '@floating-ui/utils@0.2.7': + resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==} + '@formatjs/ecma402-abstract@2.0.0': resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} @@ -1801,6 +1856,14 @@ packages: prettier: ^3.0.0 react: ^18.2.0 + '@frontify/fondue-charts@1.8.12': + resolution: {integrity: sha512-3tlY5zEPFAx+XiAo0VvF4hBTe6Npiugm11eTTbfPJGE7ZgF032HMua9LCrPleMtGgTAtLPsgIF5gUa4mkE8B7g==} + engines: {node: '>=18'} + peerDependencies: + '@frontify/fondue-tokens': ^3.5.5 + react: ^18 + react-dom: ^18 + '@frontify/fondue-charts@1.8.5': resolution: {integrity: sha512-2qRghmVyQ/RHT4Rhw7BatnkkA1VUuk6RJi/3aJA1wDnQYHMRRDKowm9TFTVUZ1bTSC0h/hfHFZ6nEruj2DaV1w==} engines: {node: '>=18'} @@ -1818,17 +1881,37 @@ packages: react: ^18 react-dom: ^18 + '@frontify/fondue-components@3.2.0': + resolution: {integrity: sha512-bjpg09Lro6UfujxrtQBiz75SyVPy5b5/wOXMwXFC2cRg1nLIcYYZfJ5fDKT6e2dC2g1w5sfqx4G3fQC/gRdTww==} + engines: {node: '>=18'} + peerDependencies: + '@frontify/fondue-icons': ^0.4.0 + '@frontify/fondue-tokens': ^3.5.5 + react: ^18 + react-dom: ^18 + '@frontify/fondue-icons@0.2.2': resolution: {integrity: sha512-CxcQgwf5gl+IGUVz7svDhTQOSaMkIkaOmkIKuWXoMn1Mnor9+IivpEWalpzEZz5En2nPn2qTfyaAknGxvTKvAQ==} engines: {node: '>=18'} peerDependencies: react: ^18 + '@frontify/fondue-icons@0.4.0': + resolution: {integrity: sha512-SJKaj1pxRXNLgNoHOqKcMepm+fOzyMCaUip9mMpAPOMJv8Uzd1TM+I0tV3jyDpyZw01Z5Q4MgrWjpuG6PeAv2w==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 + '@frontify/fondue-tokens@3.5.2': resolution: {integrity: sha512-rDX0//3KcaE7Tf++42XYlf24m0DexQmnPgnXpqlZBBz/FR/lSULg7aT8EH0onYe2/o/9Le+JwE47EJwVTMpMHw==} peerDependencies: tailwindcss: ^3.0.0 + '@frontify/fondue-tokens@3.5.5': + resolution: {integrity: sha512-qNYpd120yGvCPvgaGzhK+OaDiZ2NzzZ+B7yF6dQjdxp1WbpiAYBiCbtX3t1ZiPcx9ntIssPpTvlseHV8q+J5QQ==} + peerDependencies: + tailwindcss: ^3.0.0 + '@frontify/fondue@12.1.9': resolution: {integrity: sha512-Fgu19h6QvdKzeVAU5PTs/84tl2mLH9TTx/HODHRhz2YWtaIDbw8K2W+BVy6fOjGbdUtE+uinDCkmlOroXMoF+A==} engines: {node: '>=18'} @@ -1836,6 +1919,19 @@ packages: react: ^18 react-dom: ^18 + '@frontify/fondue@12.2.6': + resolution: {integrity: sha512-9GQvAkU3IXhokc3r8P5NEPNORPRHvuszsWDHi9UDduD4iV1hhulEdoeRhmL+FxGQKNy02vynvuK92uCpCG80Lg==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 + react-dom: ^18 + + '@frontify/sidebar-settings@0.9.20': + resolution: {integrity: sha512-4aC3Av1GSTSmCTke4XyQ4D/AVEsSN8846b2rvk5W6hq8gonD5dXAAd/fikX0ysS9J1+Rq9zM/3MWSwMnPdvJBg==} + peerDependencies: + react: ^18 + react-dom: ^18 + '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -2018,6 +2114,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-checkbox@1.1.1': + resolution: {integrity: sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-collection@1.1.0': resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} peerDependencies: @@ -2271,6 +2380,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-slider@1.2.0': + resolution: {integrity: sha512-dAHCDA4/ySXROEPaRtaMV5WHL8+JB/DbtyTbJjYkY0RXmKMO2Ln8DFZhywG5/mVQ4WqHDBc8smc14yPXPqZHYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-slot@1.1.0': resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} peerDependencies: @@ -2280,6 +2402,19 @@ packages: '@types/react': optional: true + '@radix-ui/react-switch@1.1.0': + resolution: {integrity: sha512-OBzy5WAj641k0AOSpKQtreDMe+isX0MQJ1IVyF03ucdF3DunOnROVrjWs8zsXUxC3zfZ6JL9HFVCUlMghz9dJw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-toggle-group@1.1.0': resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==} peerDependencies: @@ -2332,6 +2467,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-tooltip@1.1.2': + resolution: {integrity: sha512-9XRsLwe6Yb9B/tlnYCPVUd/TFS4J7HuOZW345DCeC6vKIxQGMZdx21RK4VoZauPD5frgkXTYVS5y90L+3YBn4w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-use-callback-ref@1.1.0': resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: @@ -7805,6 +7953,15 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tailwind-merge@2.5.2: + resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} + + tailwind-variants@0.2.1: + resolution: {integrity: sha512-2xmhAf4UIc3PijOUcJPA1LP4AbxhpcHuHM2C26xM0k81r0maAO6uoUSHl3APmvHZcY5cZCY/bYuJdfFa4eGoaw==} + engines: {node: '>=16.x', pnpm: '>=7.x'} + peerDependencies: + tailwindcss: '*' + tailwindcss@3.4.4: resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} engines: {node: '>=14.0.0'} @@ -9976,6 +10133,11 @@ snapshots: dependencies: '@floating-ui/utils': 0.2.3 + '@floating-ui/dom@1.6.10': + dependencies: + '@floating-ui/core': 1.6.3 + '@floating-ui/utils': 0.2.7 + '@floating-ui/dom@1.6.6': dependencies: '@floating-ui/core': 1.6.3 @@ -10011,6 +10173,8 @@ snapshots: '@floating-ui/utils@0.2.3': {} + '@floating-ui/utils@0.2.7': {} + '@formatjs/ecma402-abstract@2.0.0': dependencies: '@formatjs/intl-localematcher': 0.5.4 @@ -10087,6 +10251,27 @@ snapshots: - supports-color - typescript + '@frontify/fondue-charts@1.8.12(@frontify/fondue-tokens@3.5.5(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@frontify/fondue-tokens': 3.5.5(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@visx/axis': 3.10.1(react@18.3.1) + '@visx/glyph': 3.3.0(react@18.3.1) + '@visx/grid': 3.5.0(react@18.3.1) + '@visx/group': 3.3.0(react@18.3.1) + '@visx/hierarchy': 3.3.0(react@18.3.1) + '@visx/responsive': 3.10.2(react@18.3.1) + '@visx/scale': 3.5.0 + '@visx/shape': 3.5.0(react@18.3.1) + '@visx/text': 3.3.0(react@18.3.1) + '@visx/tooltip': 3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@visx/xychart': 3.11.0(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + lodash-es: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + use-font-face-observer: 1.2.2(react@18.3.1) + transitivePeerDependencies: + - '@react-spring/web' + '@frontify/fondue-charts@1.8.5(@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.165.0)(zdog@1.1.3)': dependencies: '@frontify/fondue-tokens': 3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) @@ -10189,10 +10374,42 @@ snapshots: - '@types/react' - '@types/react-dom' + '@frontify/fondue-components@3.2.0(@frontify/fondue-icons@0.4.0(react@18.3.1))(@frontify/fondue-tokens@3.5.5(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))': + dependencies: + '@frontify/fondue-icons': 0.4.0(react@18.3.1) + '@frontify/fondue-tokens': 3.5.5(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@radix-ui/react-checkbox': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-label': 2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slider': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-switch': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + downshift: 9.0.6(react@18.3.1) + react: 18.3.1 + react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) + tailwind-merge: 2.5.2 + tailwind-variants: 0.2.1(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - tailwindcss + '@frontify/fondue-icons@0.2.2(react@18.3.1)': dependencies: react: 18.3.1 + '@frontify/fondue-icons@0.4.0(react@18.3.1)': + dependencies: + react: 18.3.1 + '@frontify/fondue-tokens@3.5.2(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))': dependencies: tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)) @@ -10201,6 +10418,10 @@ snapshots: dependencies: tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)) + '@frontify/fondue-tokens@3.5.5(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))': + dependencies: + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)) + '@frontify/fondue@12.1.9(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@react-three/fiber@8.16.8(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(three@0.165.0))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(three@0.165.0)(zdog@1.1.3)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': dependencies: '@ctrl/tinycolor': 4.1.0 @@ -10431,6 +10652,135 @@ snapshots: - zdog - zustand + '@frontify/fondue@12.2.6(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': + dependencies: + '@ctrl/tinycolor': 4.1.0 + '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/modifiers': 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + '@floating-ui/dom': 1.6.10 + '@frontify/fondue-charts': 1.8.12(@frontify/fondue-tokens@3.5.5(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@frontify/fondue-components': 3.2.0(@frontify/fondue-icons@0.4.0(react@18.3.1))(@frontify/fondue-tokens@3.5.5(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@frontify/fondue-icons': 0.4.0(react@18.3.1) + '@frontify/fondue-tokens': 3.5.5(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@popperjs/core': 2.11.8 + '@radix-ui/react-popover': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toolbar': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/accordion': 3.0.0-alpha.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/aria-modal-polyfill': 3.7.10(react@18.3.1) + '@react-aria/breadcrumbs': 3.5.13(react@18.3.1) + '@react-aria/button': 3.9.5(react@18.3.1) + '@react-aria/checkbox': 3.14.3(react@18.3.1) + '@react-aria/combobox': 3.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/dialog': 3.5.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/focus': 3.17.1(react@18.3.1) + '@react-aria/interactions': 3.21.3(react@18.3.1) + '@react-aria/link': 3.7.1(react@18.3.1) + '@react-aria/listbox': 3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/menu': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/overlays': 3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/radio': 3.10.4(react@18.3.1) + '@react-aria/select': 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/table': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/tooltip': 3.7.4(react@18.3.1) + '@react-aria/utils': 3.24.1(react@18.3.1) + '@react-aria/visually-hidden': 3.8.12(react@18.3.1) + '@react-stately/checkbox': 3.6.5(react@18.3.1) + '@react-stately/collections': 3.10.7(react@18.3.1) + '@react-stately/combobox': 3.8.4(react@18.3.1) + '@react-stately/list': 3.10.5(react@18.3.1) + '@react-stately/menu': 3.7.1(react@18.3.1) + '@react-stately/overlays': 3.6.7(react@18.3.1) + '@react-stately/radio': 3.10.4(react@18.3.1) + '@react-stately/select': 3.6.4(react@18.3.1) + '@react-stately/table': 3.11.8(react@18.3.1) + '@react-stately/toggle': 3.7.4(react@18.3.1) + '@react-stately/tooltip': 3.4.9(react@18.3.1) + '@react-stately/tree': 3.8.1(react@18.3.1) + '@react-types/dialog': 3.5.10(react@18.3.1) + '@react-types/shared': 3.23.1(react@18.3.1) + '@tailwindcss/forms': 0.5.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-emoji': 31.4.0(patch_hash=qe3otflfq45s3qpehitpsd2wsy)(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/react-utils': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-react': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/utils': 31.0.0 + '@udecode/zustood': 2.0.0(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) + date-fns: 3.6.0 + escape-html: 1.0.3 + framer-motion: 10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + immer: 10.1.1 + is-hotkey: 0.2.0 + lodash-es: 4.17.21 + react: 18.3.1 + react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-datepicker: 6.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dnd: 16.0.1(@types/node@18.19.39)(@types/react@18.3.3)(react@18.3.1) + react-dnd-html5-backend: 16.0.1 + react-dom: 18.3.1(react@18.3.1) + react-fast-compare: 3.2.2 + react-is: 18.3.1 + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-textarea-autosize: 8.5.3(@types/react@18.3.3)(react@18.3.1) + remark-gfm: 3.0.1 + remark-parse: 10.0.2 + slate: 0.102.0 + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) + unified: 10.1.2 + unist-util-visit: 5.0.0 + transitivePeerDependencies: + - '@react-spring/web' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - react-native + - scheduler + - slate-history + - slate-hyperscript + - supports-color + - tailwindcss + - zustand + + '@frontify/sidebar-settings@0.9.20(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': + dependencies: + '@frontify/fondue': 12.2.6(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@react-spring/web' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - react-native + - scheduler + - slate-history + - slate-hyperscript + - supports-color + - tailwindcss + - zustand + '@hapi/hoek@9.3.0': {} '@hapi/topo@5.1.0': @@ -10696,6 +11046,22 @@ snapshots: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 + '@radix-ui/react-checkbox@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) @@ -10970,6 +11336,25 @@ snapshots: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 + '@radix-ui/react-slider@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) @@ -10977,6 +11362,21 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 + '@radix-ui/react-switch@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -11038,6 +11438,26 @@ snapshots: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 + '@radix-ui/react-tooltip@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: react: 18.3.1 @@ -17930,6 +18350,13 @@ snapshots: tabbable@6.2.0: {} + tailwind-merge@2.5.2: {} + + tailwind-variants@0.2.1(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))): + dependencies: + tailwind-merge: 2.5.2 + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)) + tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)): dependencies: '@alloc/quick-lru': 5.2.0 From 5d3c34da8f34ab0bcfe9992a927ebd23a6f51a19 Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Fri, 30 Aug 2024 10:31:09 +0200 Subject: [PATCH 134/182] feat: update package.json with guideline-themes build scripts (#1090) --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 530a1a9a8..500949ce3 100644 --- a/package.json +++ b/package.json @@ -3,12 +3,13 @@ "private": true, "packageManager": "pnpm@9.1.3+sha512.7c2ea089e1a6af306409c4fc8c4f0897bdac32b772016196c469d9428f1fe2d5a21daf8ad6512762654ac645b5d9136bb210ec9a00afa8dbc4677843ba362ecd", "scripts": { - "build": "pnpm build:app-bridge && pnpm build:sidebar-settings && pnpm build:guideline-blocks-settings && pnpm build:platform-app && pnpm build:cli && pnpm build:app-bridge-theme && pnpm build:app-bridge-app", + "build": "pnpm build:app-bridge && pnpm build:sidebar-settings && pnpm build:guideline-blocks-settings && pnpm build:platform-app && pnpm build:cli && pnpm build:app-bridge-theme && pnpm build:app-bridge-app && pnpm build:guideline-themes", "build:app-bridge": "pnpm --stream --filter {packages/app-bridge} build", "build:app-bridge-theme": "pnpm --stream --filter {packages/app-bridge-theme} build", "build:app-bridge-app": "pnpm --stream --filter {packages/app-bridge-app} build", "build:sidebar-settings": "pnpm --stream --filter {packages/sidebar-settings} build", "build:guideline-blocks-settings": "pnpm --stream --filter {packages/guideline-blocks-settings} build", + "build:guideline-themes": "pnpm --stream --filter {packages/guideline-themes} build", "build:platform-app": "pnpm --stream --filter {packages/platform-app} build", "build:cli": "pnpm --stream --filter {packages/cli} build", "lint": "pnpm --stream --filter {packages/**} --parallel lint --quiet", From 315c0a915d4bced4e0cb7ed2ff651813aa1c438c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 10:32:54 +0200 Subject: [PATCH 135/182] chore: release packages (alpha) (#1089) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 packages/guideline-themes/CHANGELOG.md diff --git a/.changeset/pre.json b/.changeset/pre.json index e0cc63a58..2a0d798f3 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,7 +8,8 @@ "@frontify/sidebar-settings": "0.8.1", "@frontify/platform-app": "0.0.5", "@frontify/app-bridge-theme": "1.0.0-alpha.1", - "@frontify/app-bridge-app": "0.0.5" + "@frontify/app-bridge-app": "0.0.5", + "@frontify/guideline-themes": "0.0.0" }, "changesets": [ "angry-dolphins-fry", @@ -18,6 +19,7 @@ "clever-suns-laugh", "cuddly-pets-hammer", "curly-pots-scream", + "cyan-cougars-invite", "dry-mangos-fix", "early-masks-appear", "eighty-ants-happen", diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md new file mode 100644 index 000000000..948f1ad1c --- /dev/null +++ b/packages/guideline-themes/CHANGELOG.md @@ -0,0 +1,7 @@ +# @frontify/guideline-themes + +## 0.0.1-alpha.0 + +### Patch Changes + +- [#1087](https://github.com/Frontify/brand-sdk/pull/1087) [`fc3ee83`](https://github.com/Frontify/brand-sdk/commit/fc3ee83b7a4dd406c386431d0b72cf9873e9dfed) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: starting guideline-themes package diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index 1c4b7c72b..b86eb1ce9 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.0", + "version": "0.0.1-alpha.0", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From a70a9fe0932e1a40c5d4d85e4fdcb3f008947b74 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Mon, 2 Sep 2024 16:32:42 +0200 Subject: [PATCH 136/182] refactor(AppBridgeTheme): remove EventRegistry (#1095) * refactor(AppBridgeTheme): remove EventRegistry * Create twenty-pumas-pump.md --- .changeset/twenty-pumas-pump.md | 5 +++++ .../src/registries/EventRegistry.ts | 7 ------- packages/app-bridge-theme/src/registries/index.ts | 1 - packages/app-bridge-theme/src/types/Event.ts | 13 +++++-------- 4 files changed, 10 insertions(+), 16 deletions(-) create mode 100644 .changeset/twenty-pumas-pump.md delete mode 100644 packages/app-bridge-theme/src/registries/EventRegistry.ts diff --git a/.changeset/twenty-pumas-pump.md b/.changeset/twenty-pumas-pump.md new file mode 100644 index 000000000..f92ebc2d7 --- /dev/null +++ b/.changeset/twenty-pumas-pump.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +refactor(AppBridgeTheme): remove EventRegistry diff --git a/packages/app-bridge-theme/src/registries/EventRegistry.ts b/packages/app-bridge-theme/src/registries/EventRegistry.ts deleted file mode 100644 index 3f541f39d..000000000 --- a/packages/app-bridge-theme/src/registries/EventRegistry.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type Asset, type EventNameValidator } from '../types'; - -export type EventRegistry = EventNameValidator<{ - assetsChosen: { assets: Asset[] }; -}>; diff --git a/packages/app-bridge-theme/src/registries/index.ts b/packages/app-bridge-theme/src/registries/index.ts index 983ed724d..bd3a2d9d4 100644 --- a/packages/app-bridge-theme/src/registries/index.ts +++ b/packages/app-bridge-theme/src/registries/index.ts @@ -1,5 +1,4 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './CommandRegistry'; -export * from './EventRegistry'; export * from './commands'; diff --git a/packages/app-bridge-theme/src/types/Event.ts b/packages/app-bridge-theme/src/types/Event.ts index 3d3dd74b7..f8e9b7539 100644 --- a/packages/app-bridge-theme/src/types/Event.ts +++ b/packages/app-bridge-theme/src/types/Event.ts @@ -2,8 +2,6 @@ import { type Simplify } from 'type-fest'; -import { type EventRegistry } from '../registries'; - import { type ObjectNameValidator, type WrongNamePattern } from './Common'; import { type Context } from './Context'; @@ -21,12 +19,11 @@ type ContextAsEventName = { }; export type AppBridgeThemeEvent = EventNameValidator< - Pick & - ContextAsEventName< - Context & { - '*': Context; - } - > + ContextAsEventName< + Context & { + '*': Context; + } + > >; export type EventNamePattern = { From babd5581bbb8ca45abe70d2f08fcbdaab16cfc0c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 16:45:41 +0200 Subject: [PATCH 137/182] chore: release packages (alpha) (#1097) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 2a0d798f3..543d2693a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -73,6 +73,7 @@ "tough-nails-shout", "tricky-boats-sip", "twelve-keys-begin", + "twenty-pumas-pump", "warm-hounds-refuse", "wild-bags-judge", "witty-rivers-smile", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 181435ce3..810c99c9a 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.18 + +### Patch Changes + +- [#1095](https://github.com/Frontify/brand-sdk/pull/1095) [`a70a9fe`](https://github.com/Frontify/brand-sdk/commit/a70a9fe0932e1a40c5d4d85e4fdcb3f008947b74) Thanks [@mike85](https://github.com/mike85)! - refactor(AppBridgeTheme): remove EventRegistry + ## 0.0.0-alpha.17 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index ac4e728c2..c6048e1d9 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.17", + "version": "0.0.0-alpha.18", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 948f1ad1c..ed46901d3 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.1 + +### Patch Changes + +- Updated dependencies [[`a70a9fe`](https://github.com/Frontify/brand-sdk/commit/a70a9fe0932e1a40c5d4d85e4fdcb3f008947b74)]: + - @frontify/app-bridge-theme@0.0.0-alpha.18 + ## 0.0.1-alpha.0 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index b86eb1ce9..ef0ba2b00 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.0", + "version": "0.0.1-alpha.1", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From 024b9089f68482aa908f08936c6a0c33cdaafb6c Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Mon, 2 Sep 2024 16:49:19 +0200 Subject: [PATCH 138/182] refactor(appBridgeThemes): remove utilities folder (#1092) * refactor(appBridgeThemes): remove utilities folder * Create poor-files-press.md --- .changeset/poor-files-press.md | 5 +++ packages/app-bridge-theme/src/index.ts | 1 - .../src/utilities/color.spec.ts | 39 ------------------- .../app-bridge-theme/src/utilities/color.ts | 9 ----- .../app-bridge-theme/src/utilities/index.ts | 3 -- 5 files changed, 5 insertions(+), 52 deletions(-) create mode 100644 .changeset/poor-files-press.md delete mode 100644 packages/app-bridge-theme/src/utilities/color.spec.ts delete mode 100644 packages/app-bridge-theme/src/utilities/color.ts delete mode 100644 packages/app-bridge-theme/src/utilities/index.ts diff --git a/.changeset/poor-files-press.md b/.changeset/poor-files-press.md new file mode 100644 index 000000000..4bf58e24f --- /dev/null +++ b/.changeset/poor-files-press.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +refactor(appBridgeThemes): remove utilities folder diff --git a/packages/app-bridge-theme/src/index.ts b/packages/app-bridge-theme/src/index.ts index bcf9ae096..4ad8c9eff 100644 --- a/packages/app-bridge-theme/src/index.ts +++ b/packages/app-bridge-theme/src/index.ts @@ -4,4 +4,3 @@ export * from './AppBridgeTheme'; export * from './react'; export * from './registries'; export * from './types'; -export * from './utilities'; diff --git a/packages/app-bridge-theme/src/utilities/color.spec.ts b/packages/app-bridge-theme/src/utilities/color.spec.ts deleted file mode 100644 index 504caa867..000000000 --- a/packages/app-bridge-theme/src/utilities/color.spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it } from 'vitest'; - -import { rgbObjectToRgbString } from './color'; - -describe('Color', () => { - describe('rgbObjectToRgbString', () => { - it('should return a valid RGB string when given an object with R, G, and B.', () => { - const color = { red: 255, green: 99, blue: 71 }; - expect(rgbObjectToRgbString(color)).toBe('rgb(255, 99, 71)'); - }); - - it('should return a valid RGBA string when given an object with R, G, B, and A.', () => { - const color = { red: 255, green: 99, blue: 71, alpha: 0.5 }; - expect(rgbObjectToRgbString(color)).toBe('rgba(255, 99, 71, 0.5)'); - }); - - it('should return a valid RGB string when given an object with 255 R, G, and B.', () => { - const color = { red: 255, green: 255, blue: 255 }; - expect(rgbObjectToRgbString(color)).toBe('rgb(255, 255, 255)'); - }); - - it('should return a valid RGB string when given an object with 0 R, G, and B.', () => { - const color = { red: 0, green: 0, blue: 0 }; - expect(rgbObjectToRgbString(color)).toBe('rgb(0, 0, 0)'); - }); - - it('should return a valid RGBA string when given an object with 255 R, G, B and a valid A.', () => { - const color = { red: 255, green: 255, blue: 255, alpha: 1 }; - expect(rgbObjectToRgbString(color)).toBe('rgba(255, 255, 255, 1)'); - }); - - it('should return a valid RGBA string when given an object with 0 R, G, B and a valid A.', () => { - const color = { red: 0, green: 0, blue: 0, alpha: 1 }; - expect(rgbObjectToRgbString(color)).toBe('rgba(0, 0, 0, 1)'); - }); - }); -}); diff --git a/packages/app-bridge-theme/src/utilities/color.ts b/packages/app-bridge-theme/src/utilities/color.ts deleted file mode 100644 index 0cb0f39f2..000000000 --- a/packages/app-bridge-theme/src/utilities/color.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export const rgbObjectToRgbString = (color: { red: number; green: number; blue: number; alpha?: number }): string => { - if ('alpha' in color) { - return `rgba(${color.red}, ${color.green}, ${color.blue}, ${color.alpha})`; - } - - return `rgb(${color.red}, ${color.green}, ${color.blue})`; -}; diff --git a/packages/app-bridge-theme/src/utilities/index.ts b/packages/app-bridge-theme/src/utilities/index.ts deleted file mode 100644 index 6f3fbde03..000000000 --- a/packages/app-bridge-theme/src/utilities/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export * from './color'; From 7e0fb17ba9e2fd82cb8a3b86771ef144a7bd9118 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 17:26:26 +0200 Subject: [PATCH 139/182] chore: release packages (alpha) (#1098) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 543d2693a..58c0883f7 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -51,6 +51,7 @@ "pink-geckos-change", "pink-lobsters-beg", "polite-eels-shake", + "poor-files-press", "pretty-items-marry", "real-jeans-guess", "red-islands-report", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 810c99c9a..73dfc0f5d 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.19 + +### Patch Changes + +- [#1092](https://github.com/Frontify/brand-sdk/pull/1092) [`024b908`](https://github.com/Frontify/brand-sdk/commit/024b9089f68482aa908f08936c6a0c33cdaafb6c) Thanks [@anxobotana](https://github.com/anxobotana)! - refactor(appBridgeThemes): remove utilities folder + ## 0.0.0-alpha.18 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index c6048e1d9..ed962e9e4 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.18", + "version": "0.0.0-alpha.19", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index ed46901d3..3f8398a06 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.2 + +### Patch Changes + +- Updated dependencies [[`024b908`](https://github.com/Frontify/brand-sdk/commit/024b9089f68482aa908f08936c6a0c33cdaafb6c)]: + - @frontify/app-bridge-theme@0.0.0-alpha.19 + ## 0.0.1-alpha.1 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index ef0ba2b00..ab6c48f93 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.1", + "version": "0.0.1-alpha.2", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From 6a57f04c75a05ef177fe4185f9e768ad72dafd89 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Thu, 5 Sep 2024 14:36:18 +0200 Subject: [PATCH 140/182] refactor(GuidelineThemes): type cleanup (#1103) * refactor(GuidelineThemes): type cleanup * Create sour-cheetahs-buy.md --- .changeset/sour-cheetahs-buy.md | 5 +++++ packages/guideline-themes/src/index.ts | 20 ++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 .changeset/sour-cheetahs-buy.md diff --git a/.changeset/sour-cheetahs-buy.md b/.changeset/sour-cheetahs-buy.md new file mode 100644 index 000000000..0398a1580 --- /dev/null +++ b/.changeset/sour-cheetahs-buy.md @@ -0,0 +1,5 @@ +--- +"@frontify/guideline-themes": patch +--- + +refactor(GuidelineThemes): type cleanup diff --git a/packages/guideline-themes/src/index.ts b/packages/guideline-themes/src/index.ts index 6477abfa7..d95bff5e1 100644 --- a/packages/guideline-themes/src/index.ts +++ b/packages/guideline-themes/src/index.ts @@ -55,23 +55,27 @@ export type TemplateInputBlock = TemplateInputBlockSidebarSettings; export type ValueOrPromisedValue = ValueOrPromisedValueSidebarSettings; -export type ContentAreaWidthChoice = '1200px' | '1000px' | '800px'; -export type ContentAreaWidthTemplateSettings = { +export type ContentAreaWidthChoice = `${number}${'px' | '%' | 'vw'}`; +type ContentAreaWidthTemplateSettings = { contentAreaWidthChoice?: ContentAreaWidthChoice; - contentAreaWidthCustom?: string; + contentAreaWidthCustom?: `${number}${string}`; contentAreaWidthCustomEnabled?: boolean; }; -export type ContentAreaPaddingChoice = '25px' | '50px' | '75px'; -export type ContentAreaPaddingTemplateSettings = { +export type ContentAreaPaddingChoice = `${number}${'px' | '%' | 'vw'}`; +type ContentAreaPaddingTemplateSettings = { contentAreaPaddingChoice?: ContentAreaPaddingChoice; - contentAreaPaddingCustom?: string; + contentAreaPaddingCustom?: `${number}${string}`; contentAreaPaddingCustomEnabled?: boolean; }; export type ContentAreaAlignmentChoice = 'left' | 'center' | 'right'; -export type ContentAreaAlignmentSetting = { contentAreaAlignmentChoice?: ContentAreaAlignmentChoice }; +type ContentAreaAlignmentSetting = { contentAreaAlignmentChoice?: ContentAreaAlignmentChoice }; + +export type ContentAreaSettings = ContentAreaWidthTemplateSettings & + ContentAreaPaddingTemplateSettings & + ContentAreaAlignmentSetting; -export type ThemeSettingsStructure = Record; export type ThemeSettingsStructureExport = { [customSectionName: string]: SettingBlock[] }; +export type ThemeSettingsStructure = Record; export type ThemeProps = { appBridge: AppBridgeTheme; From de6e63df7e0dd47e119f0e7369015b985fd08bdd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 15:01:15 +0200 Subject: [PATCH 141/182] chore: release packages (alpha) (#1104) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/guideline-themes/CHANGELOG.md | 6 ++++++ packages/guideline-themes/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 58c0883f7..58aa1c4c5 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -64,6 +64,7 @@ "smart-suns-type", "smooth-planets-pay", "soft-mugs-peel", + "sour-cheetahs-buy", "spicy-books-shout", "stale-hairs-wash", "strong-tools-check", diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 3f8398a06..225a59423 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/guideline-themes +## 0.0.1-alpha.3 + +### Patch Changes + +- [#1103](https://github.com/Frontify/brand-sdk/pull/1103) [`6a57f04`](https://github.com/Frontify/brand-sdk/commit/6a57f04c75a05ef177fe4185f9e768ad72dafd89) Thanks [@mike85](https://github.com/mike85)! - refactor(GuidelineThemes): type cleanup + ## 0.0.1-alpha.2 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index ab6c48f93..f6fa3c9d7 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.2", + "version": "0.0.1-alpha.3", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From 35e5f5d928de04b4884629a2586e448587ac2c9d Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Fri, 6 Sep 2024 10:32:17 +0200 Subject: [PATCH 142/182] fix(guideline-themes): export types ungroupped (#1105) * fix(guideline-themes): export types ungroupped * add pnpm dev * Create four-ravens-try.md --- .changeset/four-ravens-try.md | 5 +++++ packages/guideline-themes/package.json | 1 + packages/guideline-themes/src/index.ts | 10 +++------- 3 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 .changeset/four-ravens-try.md diff --git a/.changeset/four-ravens-try.md b/.changeset/four-ravens-try.md new file mode 100644 index 000000000..e64c4f358 --- /dev/null +++ b/.changeset/four-ravens-try.md @@ -0,0 +1,5 @@ +--- +"@frontify/guideline-themes": patch +--- + +fix(guideline-themes): export types ungroupped diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index f6fa3c9d7..042395e5c 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -27,6 +27,7 @@ ], "scripts": { "build": "vite build", + "dev": "vite build --watch", "lint": "eslint .", "lint:fix": "eslint --fix .", "prettier": "prettier --check .", diff --git a/packages/guideline-themes/src/index.ts b/packages/guideline-themes/src/index.ts index d95bff5e1..28fb1fc49 100644 --- a/packages/guideline-themes/src/index.ts +++ b/packages/guideline-themes/src/index.ts @@ -56,23 +56,19 @@ export type TextareaBlock = TextareaBlockSidebarSettings; export type ValueOrPromisedValue = ValueOrPromisedValueSidebarSettings; export type ContentAreaWidthChoice = `${number}${'px' | '%' | 'vw'}`; -type ContentAreaWidthTemplateSettings = { +export type ContentAreaWidthTemplateSettings = { contentAreaWidthChoice?: ContentAreaWidthChoice; contentAreaWidthCustom?: `${number}${string}`; contentAreaWidthCustomEnabled?: boolean; }; export type ContentAreaPaddingChoice = `${number}${'px' | '%' | 'vw'}`; -type ContentAreaPaddingTemplateSettings = { +export type ContentAreaPaddingTemplateSettings = { contentAreaPaddingChoice?: ContentAreaPaddingChoice; contentAreaPaddingCustom?: `${number}${string}`; contentAreaPaddingCustomEnabled?: boolean; }; export type ContentAreaAlignmentChoice = 'left' | 'center' | 'right'; -type ContentAreaAlignmentSetting = { contentAreaAlignmentChoice?: ContentAreaAlignmentChoice }; - -export type ContentAreaSettings = ContentAreaWidthTemplateSettings & - ContentAreaPaddingTemplateSettings & - ContentAreaAlignmentSetting; +export type ContentAreaAlignmentSetting = { contentAreaAlignmentChoice?: ContentAreaAlignmentChoice }; export type ThemeSettingsStructureExport = { [customSectionName: string]: SettingBlock[] }; export type ThemeSettingsStructure = Record; From 93d88469ffee3c985fbde8d03f6115d1f363ec25 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 6 Sep 2024 10:44:41 +0200 Subject: [PATCH 143/182] chore: release packages (alpha) (#1106) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/guideline-themes/CHANGELOG.md | 6 ++++++ packages/guideline-themes/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 58aa1c4c5..ca355e0aa 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -28,6 +28,7 @@ "few-islands-build", "five-mangos-search", "four-crabs-bake", + "four-ravens-try", "fuzzy-walls-repeat", "giant-shrimps-dream", "gorgeous-seas-search", diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 225a59423..e0c164e63 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/guideline-themes +## 0.0.1-alpha.4 + +### Patch Changes + +- [#1105](https://github.com/Frontify/brand-sdk/pull/1105) [`35e5f5d`](https://github.com/Frontify/brand-sdk/commit/35e5f5d928de04b4884629a2586e448587ac2c9d) Thanks [@anxobotana](https://github.com/anxobotana)! - fix(guideline-themes): export types ungroupped + ## 0.0.1-alpha.3 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index 042395e5c..cbe99cb13 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.3", + "version": "0.0.1-alpha.4", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From 22102926eb3dab9d611491ec2bb6fb4b9a607043 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Tue, 10 Sep 2024 15:56:20 +0200 Subject: [PATCH 144/182] Revert "refactor(AppBridgeTheme): remove EventRegistry (#1095)" This reverts commit a70a9fe0932e1a40c5d4d85e4fdcb3f008947b74. --- .changeset/twenty-pumas-pump.md | 5 ----- .../src/registries/EventRegistry.ts | 7 +++++++ packages/app-bridge-theme/src/registries/index.ts | 1 + packages/app-bridge-theme/src/types/Event.ts | 13 ++++++++----- 4 files changed, 16 insertions(+), 10 deletions(-) delete mode 100644 .changeset/twenty-pumas-pump.md create mode 100644 packages/app-bridge-theme/src/registries/EventRegistry.ts diff --git a/.changeset/twenty-pumas-pump.md b/.changeset/twenty-pumas-pump.md deleted file mode 100644 index f92ebc2d7..000000000 --- a/.changeset/twenty-pumas-pump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@frontify/app-bridge-theme": patch ---- - -refactor(AppBridgeTheme): remove EventRegistry diff --git a/packages/app-bridge-theme/src/registries/EventRegistry.ts b/packages/app-bridge-theme/src/registries/EventRegistry.ts new file mode 100644 index 000000000..3f541f39d --- /dev/null +++ b/packages/app-bridge-theme/src/registries/EventRegistry.ts @@ -0,0 +1,7 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type Asset, type EventNameValidator } from '../types'; + +export type EventRegistry = EventNameValidator<{ + assetsChosen: { assets: Asset[] }; +}>; diff --git a/packages/app-bridge-theme/src/registries/index.ts b/packages/app-bridge-theme/src/registries/index.ts index bd3a2d9d4..983ed724d 100644 --- a/packages/app-bridge-theme/src/registries/index.ts +++ b/packages/app-bridge-theme/src/registries/index.ts @@ -1,4 +1,5 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './CommandRegistry'; +export * from './EventRegistry'; export * from './commands'; diff --git a/packages/app-bridge-theme/src/types/Event.ts b/packages/app-bridge-theme/src/types/Event.ts index f8e9b7539..3d3dd74b7 100644 --- a/packages/app-bridge-theme/src/types/Event.ts +++ b/packages/app-bridge-theme/src/types/Event.ts @@ -2,6 +2,8 @@ import { type Simplify } from 'type-fest'; +import { type EventRegistry } from '../registries'; + import { type ObjectNameValidator, type WrongNamePattern } from './Common'; import { type Context } from './Context'; @@ -19,11 +21,12 @@ type ContextAsEventName = { }; export type AppBridgeThemeEvent = EventNameValidator< - ContextAsEventName< - Context & { - '*': Context; - } - > + Pick & + ContextAsEventName< + Context & { + '*': Context; + } + > >; export type EventNamePattern = { From 18560dbd1bbfa3a76fdda0db5ed520b670c41979 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Wed, 11 Sep 2024 08:02:37 +0200 Subject: [PATCH 145/182] chore(AppBridgeTheme): add changeset (#1110) --- .changeset/violet-elephants-tan.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/violet-elephants-tan.md diff --git a/.changeset/violet-elephants-tan.md b/.changeset/violet-elephants-tan.md new file mode 100644 index 000000000..bce8889d1 --- /dev/null +++ b/.changeset/violet-elephants-tan.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat(AppBridgeTheme): add EventRegistry From be95918c8abb5c5c1532576cb74be6af1fd0e9ae Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 09:47:10 +0200 Subject: [PATCH 146/182] chore: release packages (alpha) (#1111) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 +- packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index ca355e0aa..a533a55b9 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -76,7 +76,7 @@ "tough-nails-shout", "tricky-boats-sip", "twelve-keys-begin", - "twenty-pumas-pump", + "violet-elephants-tan", "warm-hounds-refuse", "wild-bags-judge", "witty-rivers-smile", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 73dfc0f5d..aa187b7ab 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.20 + +### Patch Changes + +- [#1110](https://github.com/Frontify/brand-sdk/pull/1110) [`18560db`](https://github.com/Frontify/brand-sdk/commit/18560dbd1bbfa3a76fdda0db5ed520b670c41979) Thanks [@mike85](https://github.com/mike85)! - feat(AppBridgeTheme): add EventRegistry + ## 0.0.0-alpha.19 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index ed962e9e4..2bb9504a6 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.19", + "version": "0.0.0-alpha.20", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index e0c164e63..7b68b07a7 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.5 + +### Patch Changes + +- Updated dependencies [[`18560db`](https://github.com/Frontify/brand-sdk/commit/18560dbd1bbfa3a76fdda0db5ed520b670c41979)]: + - @frontify/app-bridge-theme@0.0.0-alpha.20 + ## 0.0.1-alpha.4 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index cbe99cb13..67368a99d 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.4", + "version": "0.0.1-alpha.5", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From e70ff9ffb3bb1001d79cf7046a27f7230a491e04 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 10 Oct 2024 16:37:55 +0200 Subject: [PATCH 147/182] chore: release packages (alpha) (#1143) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a533a55b9..fe3d9b6ac 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -31,6 +31,7 @@ "four-ravens-try", "fuzzy-walls-repeat", "giant-shrimps-dream", + "good-forks-repair", "gorgeous-seas-search", "great-dolls-enjoy", "hip-days-applaud", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 7a7ff668e..63446722d 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.37 + +### Patch Changes + +- chore: merge main to dev + ## 4.0.0-alpha.36 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index d2a7813c2..24b1f62bd 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.36", + "version": "4.0.0-alpha.37", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From ddf65a69e43d127213486f6f1a45394bc05eb0cf Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Mon, 21 Oct 2024 15:52:14 +0200 Subject: [PATCH 148/182] refactor(guideline-themes): removes themeConfigExport.settings (#1145) * refactor(guideline-themes): deprecate ThemeConfigExport.settings * Create empty-jobs-add.md * removes it * Update .changeset/empty-jobs-add.md Co-authored-by: Mike Trummer --------- Co-authored-by: Mike Trummer --- .changeset/empty-jobs-add.md | 5 +++++ packages/guideline-themes/src/index.ts | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .changeset/empty-jobs-add.md diff --git a/.changeset/empty-jobs-add.md b/.changeset/empty-jobs-add.md new file mode 100644 index 000000000..81e06a474 --- /dev/null +++ b/.changeset/empty-jobs-add.md @@ -0,0 +1,5 @@ +--- +"@frontify/guideline-themes": patch +--- + +refactor(guideline-themes): removes themeConfigExport.settings diff --git a/packages/guideline-themes/src/index.ts b/packages/guideline-themes/src/index.ts index 28fb1fc49..84eed249f 100644 --- a/packages/guideline-themes/src/index.ts +++ b/packages/guideline-themes/src/index.ts @@ -90,7 +90,6 @@ export type ThemeConfigExport = { documentPage: { default: ThemeTemplateExport } & Record; library: { default: ThemeTemplateExport } & Record; }; - settings: ThemeSettingsStructure; }; /** From ae07b3fb7ac49b48989839b0bcf03ee0f3cc6184 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:05:07 +0200 Subject: [PATCH 149/182] chore: release packages (alpha) (#1146) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/guideline-themes/CHANGELOG.md | 6 ++++++ packages/guideline-themes/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index fe3d9b6ac..fe4cdd787 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -24,6 +24,7 @@ "early-masks-appear", "eighty-ants-happen", "eleven-shrimps-jog", + "empty-jobs-add", "fast-houses-hunt", "few-islands-build", "five-mangos-search", diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 7b68b07a7..4fcfd9d1f 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/guideline-themes +## 0.0.1-alpha.6 + +### Patch Changes + +- [#1145](https://github.com/Frontify/brand-sdk/pull/1145) [`ddf65a6`](https://github.com/Frontify/brand-sdk/commit/ddf65a69e43d127213486f6f1a45394bc05eb0cf) Thanks [@anxobotana](https://github.com/anxobotana)! - refactor(guideline-themes): removes themeConfigExport.settings + ## 0.0.1-alpha.5 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index 67368a99d..ecd67adef 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.5", + "version": "0.0.1-alpha.6", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From cd6ac0b022bca6a3ca663be801f0dbe62d129728 Mon Sep 17 00:00:00 2001 From: Samuel Alev Date: Fri, 22 Nov 2024 17:52:49 +0100 Subject: [PATCH 150/182] chore: changeset --- .changeset/mighty-brooms-lay.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/mighty-brooms-lay.md diff --git a/.changeset/mighty-brooms-lay.md b/.changeset/mighty-brooms-lay.md new file mode 100644 index 000000000..782101f06 --- /dev/null +++ b/.changeset/mighty-brooms-lay.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +chore: merge main into dev From 29f49d580db70be138d02cab3713af3ab36a3126 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 18:35:50 +0100 Subject: [PATCH 151/182] chore: release packages (alpha) (#1159) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index fe4cdd787..a2b679e3c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -42,6 +42,7 @@ "light-crews-report", "lovely-books-hear", "lucky-taxis-kneel", + "mighty-brooms-lay", "modern-experts-dream", "nasty-feet-repair", "neat-plants-smile", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index 426381dae..fa4ec5051 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.38 + +### Patch Changes + +- [#864](https://github.com/Frontify/brand-sdk/pull/864) [`cd6ac0b`](https://github.com/Frontify/brand-sdk/commit/cd6ac0b022bca6a3ca663be801f0dbe62d129728) Thanks [@SamuelAlev](https://github.com/SamuelAlev)! - chore: merge main into dev + ## 4.0.0-alpha.37 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 24b1f62bd..2baf40e74 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.37", + "version": "4.0.0-alpha.38", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From d3f4ac4385770dcfe6672dfd2f256f39d1473563 Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Mon, 17 Mar 2025 14:23:36 +0100 Subject: [PATCH 152/182] feat: add isPublished to DocumentPage interface (#1182) * feat: add isPublished to DocumentPage interface * changeset --- .changeset/six-snails-carry.md | 5 +++++ packages/app-bridge-theme/src/types/Guideline.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/six-snails-carry.md diff --git a/.changeset/six-snails-carry.md b/.changeset/six-snails-carry.md new file mode 100644 index 000000000..bceeaab7f --- /dev/null +++ b/.changeset/six-snails-carry.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": minor +--- + +extend DocumentPage interface with isPublished property diff --git a/packages/app-bridge-theme/src/types/Guideline.ts b/packages/app-bridge-theme/src/types/Guideline.ts index 816bb29d8..1ea5dad84 100644 --- a/packages/app-bridge-theme/src/types/Guideline.ts +++ b/packages/app-bridge-theme/src/types/Guideline.ts @@ -79,6 +79,7 @@ export interface PageCategoryNavigationItem { interface DocumentPageBase { id(): number; + isPublished(): boolean; title(language?: string): string; slug(language?: string): string; url(language?: string): string; From a12f0604df43b927b45f98cf3663e705459d48f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 14:01:54 +0000 Subject: [PATCH 153/182] chore: release packages (alpha) (#1183) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a2b679e3c..bb89690cf 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -64,6 +64,7 @@ "shiny-beds-thank", "shiny-poets-enjoy", "shy-jobs-protect", + "six-snails-carry", "slimy-cats-repeat", "smart-suns-type", "smooth-planets-pay", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index aa187b7ab..94cd8f859 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.21 + +### Minor Changes + +- [#1182](https://github.com/Frontify/brand-sdk/pull/1182) [`d3f4ac4`](https://github.com/Frontify/brand-sdk/commit/d3f4ac4385770dcfe6672dfd2f256f39d1473563) Thanks [@Kenny806](https://github.com/Kenny806)! - extend DocumentPage interface with isPublished property + ## 0.0.0-alpha.20 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 2bb9504a6..946eb58ac 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.20", + "version": "0.0.0-alpha.21", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 4fcfd9d1f..7b89627a3 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.7 + +### Patch Changes + +- Updated dependencies [[`d3f4ac4`](https://github.com/Frontify/brand-sdk/commit/d3f4ac4385770dcfe6672dfd2f256f39d1473563)]: + - @frontify/app-bridge-theme@0.0.0-alpha.21 + ## 0.0.1-alpha.6 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index ecd67adef..12b966a3e 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.6", + "version": "0.0.1-alpha.7", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From 6b4483b9ccb886dd139002b2a51ca0054736c8b3 Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Fri, 11 Apr 2025 14:23:02 +0200 Subject: [PATCH 154/182] feat(sidebar-settings): add optional aria-label to Choice type (#1194) * feat(sidebar-settings): add optional aria-label to Choice type * changeset --- .changeset/eight-candles-agree.md | 5 +++++ packages/sidebar-settings/src/blocks/choices.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/eight-candles-agree.md diff --git a/.changeset/eight-candles-agree.md b/.changeset/eight-candles-agree.md new file mode 100644 index 000000000..a99f0c3c1 --- /dev/null +++ b/.changeset/eight-candles-agree.md @@ -0,0 +1,5 @@ +--- +"@frontify/sidebar-settings": patch +--- + +add optional ariaLabel to Choice type diff --git a/packages/sidebar-settings/src/blocks/choices.ts b/packages/sidebar-settings/src/blocks/choices.ts index 71fec3305..18027b7ca 100644 --- a/packages/sidebar-settings/src/blocks/choices.ts +++ b/packages/sidebar-settings/src/blocks/choices.ts @@ -8,10 +8,15 @@ import { type IconEnum } from '.'; export type Choice = { /** - * The label of the item. + * The text label of the item. */ label?: string | number; + /** + * The aria label of the item. + */ + ariaLabel?: string; + /** * The icon of the item. * From d042b5a30ab8ee15ab7756c9caf93206d1c88ad5 Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Fri, 11 Apr 2025 14:36:26 +0200 Subject: [PATCH 155/182] Revert "feat(sidebar-settings): add optional aria-label to Choice type (#1194)" (#1198) This reverts commit 6b4483b9ccb886dd139002b2a51ca0054736c8b3. --- .changeset/eight-candles-agree.md | 5 ----- packages/sidebar-settings/src/blocks/choices.ts | 7 +------ 2 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 .changeset/eight-candles-agree.md diff --git a/.changeset/eight-candles-agree.md b/.changeset/eight-candles-agree.md deleted file mode 100644 index a99f0c3c1..000000000 --- a/.changeset/eight-candles-agree.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@frontify/sidebar-settings": patch ---- - -add optional ariaLabel to Choice type diff --git a/packages/sidebar-settings/src/blocks/choices.ts b/packages/sidebar-settings/src/blocks/choices.ts index 18027b7ca..71fec3305 100644 --- a/packages/sidebar-settings/src/blocks/choices.ts +++ b/packages/sidebar-settings/src/blocks/choices.ts @@ -8,15 +8,10 @@ import { type IconEnum } from '.'; export type Choice = { /** - * The text label of the item. + * The label of the item. */ label?: string | number; - /** - * The aria label of the item. - */ - ariaLabel?: string; - /** * The icon of the item. * From 265c4d48a76cf5bd6e257123f0d793bd930f91da Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Thu, 24 Apr 2025 13:31:04 +0200 Subject: [PATCH 156/182] feat: app bridge theme active section heading context (#1203) * feat(AppBridgetheme): add activeSectionHeadingId context * react/index update * changeset --- .changeset/purple-seahorses-watch.md | 5 ++ packages/app-bridge-theme/src/react/index.ts | 1 + .../react/useActiveSectionHeadingId.spec.ts | 81 +++++++++++++++++++ .../src/react/useActiveSectionHeadingId.ts | 12 +++ .../app-bridge-theme/src/types/Context.ts | 1 + 5 files changed, 100 insertions(+) create mode 100644 .changeset/purple-seahorses-watch.md create mode 100644 packages/app-bridge-theme/src/react/useActiveSectionHeadingId.spec.ts create mode 100644 packages/app-bridge-theme/src/react/useActiveSectionHeadingId.ts diff --git a/.changeset/purple-seahorses-watch.md b/.changeset/purple-seahorses-watch.md new file mode 100644 index 000000000..0baea1220 --- /dev/null +++ b/.changeset/purple-seahorses-watch.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: add activeSectionHeadingId to context diff --git a/packages/app-bridge-theme/src/react/index.ts b/packages/app-bridge-theme/src/react/index.ts index b448e7857..5029be10b 100644 --- a/packages/app-bridge-theme/src/react/index.ts +++ b/packages/app-bridge-theme/src/react/index.ts @@ -4,6 +4,7 @@ export * from './useDocumentNavigation'; export * from './useIsEditing'; export * from './useCurrentLanguage'; export * from './useDefaultLanguage'; +export * from './useActiveSectionHeadingId'; export * from './useLanguages'; export * from './usePortalNavigation'; export * from './useSettings'; diff --git a/packages/app-bridge-theme/src/react/useActiveSectionHeadingId.spec.ts b/packages/app-bridge-theme/src/react/useActiveSectionHeadingId.spec.ts new file mode 100644 index 000000000..6681bb5e7 --- /dev/null +++ b/packages/app-bridge-theme/src/react/useActiveSectionHeadingId.spec.ts @@ -0,0 +1,81 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { renderHook } from '@testing-library/react'; +import { act } from 'react'; +import { describe, expect, it, vi, beforeEach } from 'vitest'; + +import { type AppBridgeTheme } from '../AppBridgeTheme'; + +import { useActiveSectionHeadingId } from './useActiveSectionHeadingId'; + +const UPDATED_HEADING_ID = 321; + +const stubs = vi.hoisted(() => ({ + contextStub: vi.fn(), + contextGetStub: vi.fn(), + subscribeStub: vi.fn(), + unsubscribeObserverStub: vi.fn(), +})); + +const stubbedAppBridgeTheme = () => + ({ + context: stubs.contextStub.mockReturnValue({ + get: stubs.contextGetStub.mockReturnValue(null), + subscribe: stubs.subscribeStub.mockReturnValue(stubs.unsubscribeObserverStub), + }), + }) as unknown as AppBridgeTheme; + +describe('useActiveSectionHeadingId', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should call the context with ActiveSectionHeadingId', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useActiveSectionHeadingId(appBridgeTheme)); + + expect(stubs.contextStub).toHaveBeenCalledWith('activeSectionHeadingId'); + }); + + it('should subscribe to context updates', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + renderHook(() => useActiveSectionHeadingId(appBridgeTheme)); + + expect(stubs.subscribeStub).toHaveBeenCalledOnce(); + }); + + it('should return the correct initial ActiveSectionHeadingId', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useActiveSectionHeadingId(appBridgeTheme)); + + expect(result.current).toBeNull(); + }); + + it('should update the ActiveSectionHeadingId on change', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { result } = renderHook(() => useActiveSectionHeadingId(appBridgeTheme)); + + act(() => { + if (vi.isMockFunction(stubs.subscribeStub)) { + stubs.contextGetStub.mockReturnValue(UPDATED_HEADING_ID); + stubs.subscribeStub.mock.calls[0][0](UPDATED_HEADING_ID); + } + }); + + expect(result.current).toEqual(UPDATED_HEADING_ID); + }); + + it('should unsubscribe on unmount', () => { + const appBridgeTheme = stubbedAppBridgeTheme(); + + const { unmount } = renderHook(() => useActiveSectionHeadingId(appBridgeTheme)); + + unmount(); + + expect(stubs.unsubscribeObserverStub).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/app-bridge-theme/src/react/useActiveSectionHeadingId.ts b/packages/app-bridge-theme/src/react/useActiveSectionHeadingId.ts new file mode 100644 index 000000000..f3251283c --- /dev/null +++ b/packages/app-bridge-theme/src/react/useActiveSectionHeadingId.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { useSyncExternalStore } from 'react'; + +import { type AppBridgeTheme } from '../AppBridgeTheme.ts'; + +export const useActiveSectionHeadingId = (appBridge: AppBridgeTheme) => { + return useSyncExternalStore( + appBridge.context('activeSectionHeadingId').subscribe, + appBridge.context('activeSectionHeadingId').get, + ); +}; diff --git a/packages/app-bridge-theme/src/types/Context.ts b/packages/app-bridge-theme/src/types/Context.ts index 38bd3ee94..a6d6de3c0 100644 --- a/packages/app-bridge-theme/src/types/Context.ts +++ b/packages/app-bridge-theme/src/types/Context.ts @@ -36,6 +36,7 @@ export type Context = { isAuthenticated: boolean; isAiBrandAssistantDialogOpen: boolean; isSearchDialogOpen: boolean; + activeSectionHeadingId: number | null; languages: Language[]; template: TemplateContext | null; settings: { From 527c0b99993e72baf8f1021c6602685089d0e6e6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 13:42:26 +0200 Subject: [PATCH 157/182] chore: release packages (alpha) (#1204) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index bb89690cf..92d86496e 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -57,6 +57,7 @@ "polite-eels-shake", "poor-files-press", "pretty-items-marry", + "purple-seahorses-watch", "real-jeans-guess", "red-islands-report", "rich-olives-repeat", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 94cd8f859..620190b3e 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.22 + +### Patch Changes + +- [#1203](https://github.com/Frontify/brand-sdk/pull/1203) [`265c4d4`](https://github.com/Frontify/brand-sdk/commit/265c4d48a76cf5bd6e257123f0d793bd930f91da) Thanks [@anxobotana](https://github.com/anxobotana)! - feat: add activeSectionHeadingId to context + ## 0.0.0-alpha.21 ### Minor Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 946eb58ac..b77228a53 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.21", + "version": "0.0.0-alpha.22", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 7b89627a3..2dc862ba4 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.8 + +### Patch Changes + +- Updated dependencies [[`265c4d4`](https://github.com/Frontify/brand-sdk/commit/265c4d48a76cf5bd6e257123f0d793bd930f91da)]: + - @frontify/app-bridge-theme@0.0.0-alpha.22 + ## 0.0.1-alpha.7 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index 12b966a3e..f3f47bfc6 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.7", + "version": "0.0.1-alpha.8", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From fe50098c54a70178b4804a882b38e6f5de4fe37f Mon Sep 17 00:00:00 2001 From: ragi96 Date: Thu, 1 May 2025 13:21:49 +0200 Subject: [PATCH 158/182] install --- pnpm-lock.yaml | 112 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f270054f7..02437bc52 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10503,6 +10503,116 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.2)) + '@frontify/fondue@12.9.3(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': + dependencies: + '@ctrl/tinycolor': 4.1.0 + '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/modifiers': 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + '@floating-ui/dom': 1.6.13 + '@frontify/fondue-charts': 5.0.3(@frontify/fondue-tokens@4.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@frontify/fondue-components': 16.0.4(@frontify/fondue-icons@0.15.2(react@18.3.1))(@frontify/fondue-tokens@4.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))))(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@frontify/fondue-icons': 0.15.2(react@18.3.1) + '@frontify/fondue-tokens': 4.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@popperjs/core': 2.11.8 + '@radix-ui/react-popover': 1.1.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toolbar': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/accordion': 3.0.0-alpha.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/aria-modal-polyfill': 3.7.13(react@18.3.1) + '@react-aria/breadcrumbs': 3.5.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/button': 3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/checkbox': 3.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/combobox': 3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/dialog': 3.5.23(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/focus': 3.20.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/interactions': 3.24.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/link': 3.7.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/listbox': 3.14.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/menu': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/overlays': 3.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/radio': 3.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/select': 3.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/selection': 3.23.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/table': 3.17.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/tooltip': 3.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/utils': 3.28.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/visually-hidden': 3.8.21(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-stately/checkbox': 3.6.12(react@18.3.1) + '@react-stately/collections': 3.12.2(react@18.3.1) + '@react-stately/combobox': 3.10.3(react@18.3.1) + '@react-stately/list': 3.12.0(react@18.3.1) + '@react-stately/menu': 3.9.2(react@18.3.1) + '@react-stately/overlays': 3.6.14(react@18.3.1) + '@react-stately/radio': 3.10.11(react@18.3.1) + '@react-stately/select': 3.6.11(react@18.3.1) + '@react-stately/table': 3.14.0(react@18.3.1) + '@react-stately/toggle': 3.8.2(react@18.3.1) + '@react-stately/tooltip': 3.5.2(react@18.3.1) + '@react-stately/tree': 3.8.8(react@18.3.1) + '@react-types/dialog': 3.5.16(react@18.3.1) + '@react-types/shared': 3.28.0(react@18.3.1) + '@tailwindcss/forms': 0.5.10(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2))) + '@udecode/plate-alignment': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-autoformat': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-basic-marks': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-break': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-code-block': 31.3.4(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-combobox': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-common': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-core': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-emoji': 31.4.0(patch_hash=qe3otflfq45s3qpehitpsd2wsy)(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-floating': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-indent': 31.1.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-link': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-list': 31.1.3(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-mention': 31.3.5(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-normalizers': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-paragraph': 31.0.0(@udecode/plate-common@31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/plate-utils': 31.3.2(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/react-utils': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@udecode/slate': 31.0.0(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-react': 31.0.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.102.0))(slate-react@0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0))(slate@0.102.0) + '@udecode/slate-utils': 31.3.2(slate-history@0.100.0(slate@0.102.0))(slate@0.102.0) + '@udecode/utils': 31.0.0 + '@udecode/zustood': 2.0.0(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) + date-fns: 3.6.0 + escape-html: 1.0.3 + framer-motion: 10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + immer: 10.1.1 + is-hotkey: 0.2.0 + lodash-es: 4.17.21 + react: 18.3.1 + react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-datepicker: 6.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dnd: 16.0.1(@types/node@18.19.39)(@types/react@18.3.3)(react@18.3.1) + react-dnd-html5-backend: 16.0.1 + react-dom: 18.3.1(react@18.3.1) + react-fast-compare: 3.2.2 + react-is: 18.3.1 + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-textarea-autosize: 8.5.9(@types/react@18.3.3)(react@18.3.1) + remark-gfm: 3.0.1 + remark-parse: 10.0.2 + slate: 0.102.0 + slate-react: 0.102.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.102.0) + unified: 10.1.2 + unist-util-visit: 5.0.0 + transitivePeerDependencies: + - '@react-spring/web' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - react-native + - scheduler + - slate-history + - slate-hyperscript + - supports-color + - tailwindcss + - zustand + '@frontify/fondue@12.9.3(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.26.0)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': dependencies: '@ctrl/tinycolor': 4.1.0 @@ -10835,7 +10945,7 @@ snapshots: '@frontify/sidebar-settings@0.9.23(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': dependencies: - '@frontify/fondue': 12.2.14(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) + '@frontify/fondue': 12.9.3(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: From 7abe2d7635dd7f319497fd4e6e422873d7075489 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Tue, 6 May 2025 15:16:55 +0200 Subject: [PATCH 159/182] refactor: remove AppBridgeCreateAsset (#1206) * refactor: remove AppBridgeCreateAsset from v4 * adjust owner --- .changeset/angry-hairs-enjoy.md | 5 + CODEOWNERS | 39 +--- .../src/AppBridgeCreateAsset.spec.ts | 186 ------------------ .../app-bridge/src/AppBridgeCreateAsset.ts | 60 ------ packages/app-bridge/src/errors/NotifyError.ts | 8 - .../src/errors/TimeoutReachedError.ts | 8 - packages/app-bridge/src/errors/index.ts | 2 - packages/app-bridge/src/index.ts | 1 - .../src/types/CrossDocumentMessage.ts | 9 - .../src/types/CrossDocumentMessageResponse.ts | 10 - packages/app-bridge/src/types/Notify.ts | 7 - packages/app-bridge/src/types/OauthTokens.ts | 9 - .../src/types/PostExternalAssetParams.ts | 8 - packages/app-bridge/src/types/index.ts | 5 - packages/app-bridge/src/utilities/hash.ts | 5 - packages/app-bridge/src/utilities/index.ts | 3 - packages/app-bridge/src/utilities/notify.ts | 15 -- .../app-bridge/src/utilities/subscribe.ts | 33 ---- 18 files changed, 12 insertions(+), 401 deletions(-) create mode 100644 .changeset/angry-hairs-enjoy.md delete mode 100644 packages/app-bridge/src/AppBridgeCreateAsset.spec.ts delete mode 100644 packages/app-bridge/src/AppBridgeCreateAsset.ts delete mode 100644 packages/app-bridge/src/errors/NotifyError.ts delete mode 100644 packages/app-bridge/src/errors/TimeoutReachedError.ts delete mode 100644 packages/app-bridge/src/types/CrossDocumentMessage.ts delete mode 100644 packages/app-bridge/src/types/CrossDocumentMessageResponse.ts delete mode 100644 packages/app-bridge/src/types/Notify.ts delete mode 100644 packages/app-bridge/src/types/OauthTokens.ts delete mode 100644 packages/app-bridge/src/types/PostExternalAssetParams.ts delete mode 100644 packages/app-bridge/src/utilities/hash.ts delete mode 100644 packages/app-bridge/src/utilities/notify.ts delete mode 100644 packages/app-bridge/src/utilities/subscribe.ts diff --git a/.changeset/angry-hairs-enjoy.md b/.changeset/angry-hairs-enjoy.md new file mode 100644 index 000000000..78c9d7ca4 --- /dev/null +++ b/.changeset/angry-hairs-enjoy.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +refactor: remove AppBridgeCreateAsset, please use `@frontify/app-bridge-app` diff --git a/CODEOWNERS b/CODEOWNERS index fca9d5d4f..4173bede7 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -3,11 +3,7 @@ packages/app-bridge/src/types @Frontify/frontend-platform ## App Bridge Errors -packages/app-bridge/src/errors/HttpClientError.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations -packages/app-bridge/src/errors/InitializationError.ts @Frontify/apps-and-integrations -packages/app-bridge/src/errors/NotifyError.ts @Frontify/apps-and-integrations -packages/app-bridge/src/errors/TimeoutReachedError.ts @Frontify/apps-and-integrations -packages/app-bridge/src/errors/ValidationError.ts @Frontify/apps-and-integrations +packages/app-bridge/src/errors/HttpClientError.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation ## App Bridge Helpers @@ -60,8 +56,6 @@ packages/app-bridge/src/react/useNavigationManager.spec.ts @Frontify/themes-and- packages/app-bridge/src/react/useNavigationManager.ts @Frontify/themes-and-navigation packages/app-bridge/src/react/usePageTemplateSettings.spec.ts @Frontify/themes-and-navigation packages/app-bridge/src/react/usePageTemplateSettings.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/usePlatformAppBridge.spec.ts @Frontify/apps-and-integrations -packages/app-bridge/src/react/usePlatformAppBridge.ts @Frontify/apps-and-integrations packages/app-bridge/src/react/usePrivacySettings.spec.ts @Frontify/content-and-blocks packages/app-bridge/src/react/usePrivacySettings.ts @Frontify/content-and-blocks packages/app-bridge/src/react/useReadyForPrint.spec.tsx @Frontify/content-and-blocks @@ -81,20 +75,13 @@ packages/app-bridge/src/react/useUngroupedDocuments.ts @Frontify/content-and-blo ### App Bridge registries api -packages/app-bridge/src/registries/api/CreateAsset.ts @Frontify/apps-and-integrations -packages/app-bridge/src/registries/api/CreateAsset.spec.ts @Frontify/apps-and-integrations -packages/app-bridge/src/registries/api/GetAssetResourceInformation.ts @Frontify/apps-and-integrations -packages/app-bridge/src/registries/api/GetAssetResourceInformation.spec.ts @Frontify/apps-and-integrations -packages/app-bridge/src/registries/api/GetProxyNetworkCall.ts @Frontify/apps-and-integrations -packages/app-bridge/src/registries/api/GetProxyNetworkCall.spec.ts @Frontify/apps-and-integrations packages/app-bridge/src/registries/api/GetAssetBulkDownloadToken.ts @Frontify/content-and-blocks -packages/app-bridge/src/registries/api/GetCurrentUser.ts @Frontify/content-and-blocks @Frontify/apps-and-integrations @Frontify/themes-and-navigation -packages/app-bridge/src/registries/api/GetCurrentUser.spec.ts @Frontify/content-and-blocks @Frontify/apps-and-integrations @Frontify/themes-and-navigation +packages/app-bridge/src/registries/api/GetCurrentUser.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +packages/app-bridge/src/registries/api/GetCurrentUser.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation ### App Bridge registries commands packages/app-bridge/src/registries/commands/AssetChooser.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation packages/app-bridge/src/registries/commands/AssetViewer.ts @Frontify/content-and-blocks -packages/app-bridge/src/registries/commands/Connection.ts @Frontify/apps-and-integrations packages/app-bridge/src/registries/commands/DownloadAsset.ts @Frontify/content-and-blocks packages/app-bridge/src/registries/commands/NavigationManager.ts @Frontify/themes-and-navigation packages/app-bridge/src/registries/commands/NewPublication.ts @Frontify/content-and-blocks @@ -106,7 +93,7 @@ packages/app-bridge/src/registries/events/ @Frontify/content-and-blocks @Frontif ### App Bridge registries verbs -packages/app-bridge/src/registries/verbs/ @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations +packages/app-bridge/src/registries/verbs/ @Frontify/content-and-blocks @Frontify/themes-and-navigation ## App Bridge repositories @@ -115,23 +102,15 @@ packages/app-bridge/src/repositories/ @Frontify/content-and-blocks ## App Bridge Tests packages/app-bridge/src/tests/AppBridgeBlockStub.ts @Frontify/content-and-blocks -packages/app-bridge/src/tests/AppBridgePlatformAppStub.ts @Frontify/apps-and-integrations packages/app-bridge/src/tests/AppBridgeThemeStub.ts @Frontify/themes-and-navigation packages/app-bridge/src/tests/withAppBridgeBlockStubs.tsx @Frontify/content-and-blocks packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx @Frontify/themes-and-navigation ## App Bridge Utilities -packages/app-bridge/src/utilities/hash.ts @Frontify/apps-and-integrations -packages/app-bridge/src/utilities/httpClient.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations -packages/app-bridge/src/utilities/MessageBus.ts @Frontify/apps-and-integrations -packages/app-bridge/src/utilities/MessageBus.spec.ts @Frontify/apps-and-integrations -packages/app-bridge/src/utilities/notify.ts @Frontify/apps-and-integrations +packages/app-bridge/src/utilities/httpClient.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation packages/app-bridge/src/utilities/object.spec.ts @Frontify/content-and-blocks packages/app-bridge/src/utilities/object.ts @Frontify/content-and-blocks -packages/app-bridge/src/utilities/queryParams.spec.ts @Frontify/apps-and-integrations -packages/app-bridge/src/utilities/queryParams.ts @Frontify/apps-and-integrations -packages/app-bridge/src/utilities/subscribe.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations ## App Bridge Worker @@ -139,14 +118,10 @@ packages/app-bridge/src/worker/ @Frontify/content-and-blocks ## App Bridge Interfaces -packages/app-bridge/src/AppBridge.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations +packages/app-bridge/src/AppBridge.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation packages/app-bridge/src/AppBridgeBlock.ts @Frontify/content-and-blocks -packages/app-bridge/src/AppBridgeCreateAsset.spec.ts @Frontify/apps-and-integrations -packages/app-bridge/src/AppBridgeCreateAsset.ts @Frontify/apps-and-integrations -packages/app-bridge/src/AppBridgePlatformApp.spec.ts @Frontify/apps-and-integrations -packages/app-bridge/src/AppBridgePlatformApp.ts @Frontify/apps-and-integrations packages/app-bridge/src/AppBridgeTheme.ts @Frontify/themes-and-navigation -packages/app-bridge/src/window.d.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation @Frontify/apps-and-integrations +packages/app-bridge/src/window.d.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation # CLI diff --git a/packages/app-bridge/src/AppBridgeCreateAsset.spec.ts b/packages/app-bridge/src/AppBridgeCreateAsset.spec.ts deleted file mode 100644 index adf22ad17..000000000 --- a/packages/app-bridge/src/AppBridgeCreateAsset.spec.ts +++ /dev/null @@ -1,186 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { afterEach, beforeAll, describe, expect, it, test, vi } from 'vitest'; - -import { AppBridgeCreateAsset } from './AppBridgeCreateAsset'; -import { Topic } from './types'; -import { generateRandomString } from './utilities/hash'; -import { notify } from './utilities/notify'; -import { subscribe } from './utilities/subscribe'; - -const TOKEN = 'AjY34F87Dsat^J'; -const EXPECTED_RESULT = { test: 'passed' }; - -const DEFAULT_TIMEOUT = 3 * 1000; -const LONG_TIMEOUT = 5 * 60 * 1000; - -describe('AppBridgeCreateAssetTest', () => { - beforeAll(() => { - vi.mock('./utilities/subscribe', () => { - return { - subscribe: vi.fn().mockResolvedValue({ test: 'passed' }), - }; - }); - - vi.mock('./utilities/hash', () => { - return { - generateRandomString: vi.fn().mockReturnValue('AjY34F87Dsat^J'), - }; - }); - - vi.mock('./utilities/notify', () => { - return { - notify: vi.fn(), - }; - }); - - expect(generateRandomString).toHaveBeenCalledTimes(1); - expect(generateRandomString).toHaveReturnedWith('AjY34F87Dsat^J'); - }); - - afterEach(() => { - vi.clearAllMocks(); - }); - - it('should be instantiable', () => { - expect(new AppBridgeCreateAsset()).toBeInstanceOf(AppBridgeCreateAsset); - }); - - test('getAppState', () => { - const appBridge = new AppBridgeCreateAsset(); - const result = appBridge.getAppState(); - - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.GetAppState, TOKEN); - - expect(subscribe).toHaveBeenCalledTimes(1); - expect(subscribe).toHaveBeenCalledWith(Topic.GetAppState, TOKEN); - expect(result).resolves.toEqual(EXPECTED_RESULT); - }); - - test('putAppState', () => { - const newState = { new: 'state' }; - const appBridge = new AppBridgeCreateAsset(); - const result = appBridge.putAppState(newState); - - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.PutAppState, TOKEN, newState); - - expect(subscribe).toHaveBeenCalledTimes(1); - expect(subscribe).toHaveBeenCalledWith(Topic.PutAppState, TOKEN); - expect(result).resolves.toEqual(EXPECTED_RESULT); - }); - - test('deleteAppState', () => { - const appBridge = new AppBridgeCreateAsset(); - const result = appBridge.deleteAppState(); - - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.DeleteAppState, TOKEN); - - expect(subscribe).toHaveBeenCalledTimes(1); - expect(subscribe).toHaveBeenCalledWith(Topic.DeleteAppState, TOKEN); - expect(result).resolves.toEqual(EXPECTED_RESULT); - }); - - test('getAssetById', () => { - const assetId = 4076; - const appBridge = new AppBridgeCreateAsset(); - const result = appBridge.getAssetById(assetId); - - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.GetAssetById, TOKEN, { assetId }); - - expect(subscribe).toHaveBeenCalledTimes(1); - expect(subscribe).toHaveBeenCalledWith(Topic.GetAssetById, TOKEN); - expect(result).resolves.toEqual(EXPECTED_RESULT); - }); - - test('postExternalAssetWithPreview', () => { - const assets = [ - { - title: 'My external asset', - url: 'https://www.post-external-asset.test', - previewUrl: 'https://www.preview-url.test', - }, - { - title: 'My external asset', - url: 'https://www.post-external-asset.test', - previewUrl: 'https://www.preview-url.test', - }, - ]; - const appBridge = new AppBridgeCreateAsset(); - const result = appBridge.postExternalAssets(assets); - - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.PostExternalAssets, TOKEN, assets); - - expect(subscribe).toHaveBeenCalledTimes(1); - expect(subscribe).toHaveBeenCalledWith(Topic.PostExternalAssets, TOKEN, { timeout: LONG_TIMEOUT }); - expect(result).resolves.toEqual(EXPECTED_RESULT); - }); - - test('postExternalAssetWithoutPreview', () => { - const assets = [ - { - title: 'My external asset', - url: 'https://www.post-external-asset.test', - }, - { - title: 'My external asset', - url: 'https://www.post-external-asset.test', - }, - ]; - const appBridge = new AppBridgeCreateAsset(); - const result = appBridge.postExternalAssets(assets); - - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.PostExternalAssets, TOKEN, assets); - - expect(subscribe).toHaveBeenCalledTimes(1); - expect(subscribe).toHaveBeenCalledWith(Topic.PostExternalAssets, TOKEN, { timeout: DEFAULT_TIMEOUT }); - expect(result).resolves.toEqual(EXPECTED_RESULT); - }); - - test('getThirdPartyOauth2Tokens', async () => { - const appBridge = new AppBridgeCreateAsset(); - const result = appBridge.getThirdPartyOauth2Tokens(); - - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.GetThirdPartyOauth2Tokens, TOKEN); - - expect(subscribe).toHaveBeenCalledTimes(1); - expect(subscribe).toHaveBeenCalledWith(Topic.GetThirdPartyOauth2Tokens, TOKEN, { - timeout: LONG_TIMEOUT, - }); - expect(result).resolves.toEqual(EXPECTED_RESULT); - }); - - test('getRefreshedThirdpartyOauth2Tokens', () => { - const refreshToken = '8raSsn0nG5v4'; - const appBridge = new AppBridgeCreateAsset(); - const result = appBridge.getRefreshedThirdpartyOauth2Tokens(refreshToken); - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.GetRefreshedThirdpartyOauth2Token, TOKEN, { refreshToken }); - - expect(subscribe).toHaveBeenCalledTimes(1); - expect(subscribe).toHaveBeenCalledWith(Topic.GetRefreshedThirdpartyOauth2Token, TOKEN); - expect(result).resolves.toEqual(EXPECTED_RESULT); - }); - - test('closeApp', () => { - const appBridge = new AppBridgeCreateAsset(); - appBridge.closeApp(); - - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.CloseApp, TOKEN); - }); - - test('openAssetChooser', () => { - const appBridge = new AppBridgeCreateAsset(); - appBridge.openAssetChooser(); - - expect(notify).toHaveBeenCalledTimes(1); - expect(notify).toHaveBeenCalledWith(Topic.OpenAssetChooser, TOKEN); - }); -}); diff --git a/packages/app-bridge/src/AppBridgeCreateAsset.ts b/packages/app-bridge/src/AppBridgeCreateAsset.ts deleted file mode 100644 index b7528deac..000000000 --- a/packages/app-bridge/src/AppBridgeCreateAsset.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { Topic, type AssetApi, type NotifyData, type OauthTokens, type PostExternalAssetParams } from './types'; -import { generateRandomString, notify, subscribe } from './utilities'; - -const PUBSUB_TOKEN = generateRandomString(); -const DEFAULT_TIMEOUT = 3 * 1000; -const LONG_TIMEOUT = 5 * 60 * 1000; - -export class AppBridgeCreateAsset { - getAppState>(): Promise { - notify(Topic.GetAppState, PUBSUB_TOKEN); - return subscribe(Topic.GetAppState, PUBSUB_TOKEN); - } - - async putAppState(newState: NotifyData): Promise { - notify(Topic.PutAppState, PUBSUB_TOKEN, newState); - return subscribe(Topic.PutAppState, PUBSUB_TOKEN); - } - - async deleteAppState(): Promise { - notify(Topic.DeleteAppState, PUBSUB_TOKEN); - return subscribe(Topic.DeleteAppState, PUBSUB_TOKEN); - } - - getAssetById(assetId: number): Promise { - notify(Topic.GetAssetById, PUBSUB_TOKEN, { assetId }); - return subscribe(Topic.GetAssetById, PUBSUB_TOKEN); - } - - async postExternalAssets(assets: PostExternalAssetParams[]): Promise { - const assetsWithPreview = assets.filter((asset) => asset.previewUrl); - const timeout = assetsWithPreview.length > 0 ? LONG_TIMEOUT : DEFAULT_TIMEOUT; - - notify(Topic.PostExternalAssets, PUBSUB_TOKEN, assets); - return subscribe(Topic.PostExternalAssets, PUBSUB_TOKEN, { - timeout, - }); - } - - getThirdPartyOauth2Tokens(): Promise { - notify(Topic.GetThirdPartyOauth2Tokens, PUBSUB_TOKEN); - return subscribe(Topic.GetThirdPartyOauth2Tokens, PUBSUB_TOKEN, { - timeout: LONG_TIMEOUT, - }); - } - - getRefreshedThirdpartyOauth2Tokens(refreshToken: string): Promise { - notify(Topic.GetRefreshedThirdpartyOauth2Token, PUBSUB_TOKEN, { refreshToken }); - return subscribe(Topic.GetRefreshedThirdpartyOauth2Token, PUBSUB_TOKEN); - } - - closeApp(): void { - notify(Topic.CloseApp, PUBSUB_TOKEN); - } - - openAssetChooser(): void { - notify(Topic.OpenAssetChooser, PUBSUB_TOKEN); - } -} diff --git a/packages/app-bridge/src/errors/NotifyError.ts b/packages/app-bridge/src/errors/NotifyError.ts deleted file mode 100644 index 0057a78fd..000000000 --- a/packages/app-bridge/src/errors/NotifyError.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export class FetchError extends Error { - constructor(topic: string) { - super(`Call with topic ${topic} failed.`); - this.name = 'FetchError'; - } -} diff --git a/packages/app-bridge/src/errors/TimeoutReachedError.ts b/packages/app-bridge/src/errors/TimeoutReachedError.ts deleted file mode 100644 index 0044ca987..000000000 --- a/packages/app-bridge/src/errors/TimeoutReachedError.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export class TimeoutReachedError extends Error { - constructor(topic: string) { - super(`Timeout for call with topic "${topic}" expired. Call was aborted.`); - this.name = 'TimeoutReachedError'; - } -} diff --git a/packages/app-bridge/src/errors/index.ts b/packages/app-bridge/src/errors/index.ts index 4c69461f7..426eb42d8 100644 --- a/packages/app-bridge/src/errors/index.ts +++ b/packages/app-bridge/src/errors/index.ts @@ -1,5 +1,3 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './HttpClientError'; -export * from './NotifyError'; -export * from './TimeoutReachedError'; diff --git a/packages/app-bridge/src/index.ts b/packages/app-bridge/src/index.ts index 52f015459..7d3cd7209 100644 --- a/packages/app-bridge/src/index.ts +++ b/packages/app-bridge/src/index.ts @@ -6,7 +6,6 @@ enableMapSet(); export * from './AppBridge'; export * from './AppBridgeBlock'; -export * from './AppBridgeCreateAsset'; export * from './AppBridgeTheme'; export * from './errors'; export * from './helpers'; diff --git a/packages/app-bridge/src/types/CrossDocumentMessage.ts b/packages/app-bridge/src/types/CrossDocumentMessage.ts deleted file mode 100644 index 431189471..000000000 --- a/packages/app-bridge/src/types/CrossDocumentMessage.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type Topic } from './Topic'; - -export type CrossDocumentMessage> = { - topic: Topic; - token: string; - data?: T; -}; diff --git a/packages/app-bridge/src/types/CrossDocumentMessageResponse.ts b/packages/app-bridge/src/types/CrossDocumentMessageResponse.ts deleted file mode 100644 index 0b171d6b0..000000000 --- a/packages/app-bridge/src/types/CrossDocumentMessageResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type Topic } from './Topic'; - -export type CrossDocumentMessageResponse = { - success: boolean; - topic: Topic; - token: string; - data?: T; -}; diff --git a/packages/app-bridge/src/types/Notify.ts b/packages/app-bridge/src/types/Notify.ts deleted file mode 100644 index 0b619a4f0..000000000 --- a/packages/app-bridge/src/types/Notify.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type NotifyOptions = { - origin?: string; -}; - -export type NotifyData> = T; diff --git a/packages/app-bridge/src/types/OauthTokens.ts b/packages/app-bridge/src/types/OauthTokens.ts deleted file mode 100644 index 93c3baa1f..000000000 --- a/packages/app-bridge/src/types/OauthTokens.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type OauthTokens = { - access_token: string; - refresh_token: string; - expires_in: number; - name: string; - token_type: 'Bearer'; -}; diff --git a/packages/app-bridge/src/types/PostExternalAssetParams.ts b/packages/app-bridge/src/types/PostExternalAssetParams.ts deleted file mode 100644 index 13af5588d..000000000 --- a/packages/app-bridge/src/types/PostExternalAssetParams.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type PostExternalAssetParams = { - title: string; - url: string; - previewUrl?: string; - data?: Record; -}; diff --git a/packages/app-bridge/src/types/index.ts b/packages/app-bridge/src/types/index.ts index 6085cd036..c9995b19a 100644 --- a/packages/app-bridge/src/types/index.ts +++ b/packages/app-bridge/src/types/index.ts @@ -6,8 +6,6 @@ export * from './BulkDownload'; export * from './Color'; export * from './ColorPalette'; export * from './CoverPage'; -export * from './CrossDocumentMessage'; -export * from './CrossDocumentMessageResponse'; export * from './DispatchHandler'; export * from './Document'; export * from './DocumentBlockTemplate'; @@ -23,11 +21,8 @@ export * from './FileType'; export * from './Guideline'; export * from './GuidelineSearchResult'; export * from './Language'; -export * from './Notify'; -export * from './OauthTokens'; export * from './PageTemplateAsset'; export * from './PrivacySettings'; -export * from './PostExternalAssetParams'; export * from './Project'; export * from './SubscriptionHandler'; export * from './Targets'; diff --git a/packages/app-bridge/src/utilities/hash.ts b/packages/app-bridge/src/utilities/hash.ts deleted file mode 100644 index bcbceb84a..000000000 --- a/packages/app-bridge/src/utilities/hash.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export const generateRandomString = (length = 6): string => { - return Math.random().toString(20).substr(2, length); -}; diff --git a/packages/app-bridge/src/utilities/index.ts b/packages/app-bridge/src/utilities/index.ts index d63b7c1ae..50afb9aee 100644 --- a/packages/app-bridge/src/utilities/index.ts +++ b/packages/app-bridge/src/utilities/index.ts @@ -3,8 +3,5 @@ export * from './color'; export * from './dom'; export * from './file'; -export * from './hash'; export * from './httpClient'; -export * from './notify'; export * from './object'; -export * from './subscribe'; diff --git a/packages/app-bridge/src/utilities/notify.ts b/packages/app-bridge/src/utilities/notify.ts deleted file mode 100644 index 7a08cdb4f..000000000 --- a/packages/app-bridge/src/utilities/notify.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type NotifyData, type NotifyOptions } from '../types'; - -export function notify(topic: string, token: string, data?: NotifyData, options?: NotifyOptions): void { - const parentWindow = window.top; - parentWindow?.postMessage( - { - topic, - token, - data, - }, - options?.origin || '*', - ); -} diff --git a/packages/app-bridge/src/utilities/subscribe.ts b/packages/app-bridge/src/utilities/subscribe.ts deleted file mode 100644 index 902e37812..000000000 --- a/packages/app-bridge/src/utilities/subscribe.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { FetchError } from '../errors/NotifyError'; -import { TimeoutReachedError } from '../errors/TimeoutReachedError'; -import { type CrossDocumentMessageResponse, type Topic } from '../types'; - -export type SubscribeOptions = { - timeout?: number; -}; - -export const SUBSCRIBE_TIMEOUT = 3 * 1000; - -export function subscribe(topic: Topic, token: string, options?: SubscribeOptions): Promise { - return new Promise((resolve, reject) => { - const subscribeResponseCallback = (event: MessageEvent) => { - const response: CrossDocumentMessageResponse = event.data; - - if (response.token === token && response.topic === topic && response.success) { - resolve((response.data || true)); - } else { - reject(new FetchError(topic)); - } - - window.removeEventListener('message', subscribeResponseCallback); - }; - - window.addEventListener('message', subscribeResponseCallback); - - setTimeout(() => { - reject(new TimeoutReachedError(topic)); - }, options?.timeout || SUBSCRIBE_TIMEOUT); - }); -} From a9d08d5ea9c9d82f6659289b0c27f835de5a6654 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 15:33:44 +0200 Subject: [PATCH 160/182] chore: release packages (alpha) (#1207) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 92d86496e..dafb9bc84 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ }, "changesets": [ "angry-dolphins-fry", + "angry-hairs-enjoy", "brave-queens-smile", "brave-queens-work", "calm-candles-wink", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index fa4ec5051..f36c2d0e7 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.39 + +### Patch Changes + +- [#1206](https://github.com/Frontify/brand-sdk/pull/1206) [`7abe2d7`](https://github.com/Frontify/brand-sdk/commit/7abe2d7635dd7f319497fd4e6e422873d7075489) Thanks [@ragi96](https://github.com/ragi96)! - refactor: remove AppBridgeCreateAsset, please use `@frontify/app-bridge-app` + ## 4.0.0-alpha.38 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 2baf40e74..e68592c16 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.38", + "version": "4.0.0-alpha.39", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From b8d3922f5e10445426e9c9930ab004e41d8c3fb7 Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Fri, 9 May 2025 11:30:03 +0200 Subject: [PATCH 161/182] feat: introduce state to AppBridgeTheme (#1208) * feat: introduce state to AppBridgeTheme * Update .changeset/strange-radios-bow.md Co-authored-by: Anxo Botana --------- Co-authored-by: Anxo Botana --- .changeset/strange-radios-bow.md | 5 +++ .../app-bridge-theme/src/AppBridgeTheme.ts | 6 +++ packages/app-bridge-theme/src/types/State.ts | 42 +++++++++++++++++++ packages/app-bridge-theme/src/types/index.ts | 1 + 4 files changed, 54 insertions(+) create mode 100644 .changeset/strange-radios-bow.md create mode 100644 packages/app-bridge-theme/src/types/State.ts diff --git a/.changeset/strange-radios-bow.md b/.changeset/strange-radios-bow.md new file mode 100644 index 000000000..1576b2898 --- /dev/null +++ b/.changeset/strange-radios-bow.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: Introduced a State for AppBridgeTheme diff --git a/packages/app-bridge-theme/src/AppBridgeTheme.ts b/packages/app-bridge-theme/src/AppBridgeTheme.ts index 7574e165c..4c6880004 100644 --- a/packages/app-bridge-theme/src/AppBridgeTheme.ts +++ b/packages/app-bridge-theme/src/AppBridgeTheme.ts @@ -10,6 +10,8 @@ import { type EventNameParameter, type EventUnsubscribeFunction, type GuidelineSearchResult, + type State, + type StateReturn, } from './types'; export interface AppBridgeTheme { @@ -21,6 +23,10 @@ export interface AppBridgeTheme { context(key: Key): ContextReturn; context(key?: keyof Context | void): unknown; + state(): StateReturn; + state(key: Key): StateReturn; + state(key?: keyof State | void): unknown; + subscribe( eventName: EventNameParameter, callback: EventCallbackParameter, diff --git a/packages/app-bridge-theme/src/types/State.ts b/packages/app-bridge-theme/src/types/State.ts new file mode 100644 index 000000000..335a6687d --- /dev/null +++ b/packages/app-bridge-theme/src/types/State.ts @@ -0,0 +1,42 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type EventUnsubscribeFunction } from './Event.ts'; + +export type State = { + /** + * The total height of any sticky elements at the top of the document in pixels. + */ + scrollTopOffset: number; +}; + +export type StateReturn = Key extends keyof State + ? { + /** + * Gets the current value of the state object at the given key. + */ + get(): Readonly; + /** + * Sets a new value of the state object at the given key. + */ + set(nextState: State[Key]): void; + /** + * Subscribes to changes in the state object at the given key. + */ + subscribe( + callbackFunction: (nextState: State[Key], previousState: State[Key]) => void, + ): EventUnsubscribeFunction; + } + : { + /** + * Gets the current value of the state object. + */ + get(): Readonly; + /** + * Sets a new value of the state object. + */ + set(nextState: State): void; + /** + * Subscribes to changes in the state object. + */ + subscribe(callbackFunction: (nextState: State, previousState: State) => void): EventUnsubscribeFunction; + }; diff --git a/packages/app-bridge-theme/src/types/index.ts b/packages/app-bridge-theme/src/types/index.ts index cc7fcfe16..1860dce5e 100644 --- a/packages/app-bridge-theme/src/types/index.ts +++ b/packages/app-bridge-theme/src/types/index.ts @@ -8,4 +8,5 @@ export * from './Event'; export * from './Guideline'; export * from './GuidelineSearchResult'; export * from './Language'; +export * from './State'; export * from './ThemeTemplate'; From 25fd5d4b69a2cf8c1acc63d6f02731b7403a4e87 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 9 May 2025 11:41:25 +0200 Subject: [PATCH 162/182] chore: release packages (alpha) (#1209) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index dafb9bc84..2abbead37 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -74,6 +74,7 @@ "sour-cheetahs-buy", "spicy-books-shout", "stale-hairs-wash", + "strange-radios-bow", "strong-tools-check", "tasty-coins-jam", "tasty-vans-cough", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 620190b3e..e98172f65 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.23 + +### Patch Changes + +- [#1208](https://github.com/Frontify/brand-sdk/pull/1208) [`b8d3922`](https://github.com/Frontify/brand-sdk/commit/b8d3922f5e10445426e9c9930ab004e41d8c3fb7) Thanks [@Kenny806](https://github.com/Kenny806)! - feat: Introduced a State for AppBridgeTheme + ## 0.0.0-alpha.22 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index b77228a53..57ee86b37 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.22", + "version": "0.0.0-alpha.23", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 2dc862ba4..cd8a3fe7e 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.9 + +### Patch Changes + +- Updated dependencies [[`b8d3922`](https://github.com/Frontify/brand-sdk/commit/b8d3922f5e10445426e9c9930ab004e41d8c3fb7)]: + - @frontify/app-bridge-theme@0.0.0-alpha.23 + ## 0.0.1-alpha.8 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index f3f47bfc6..e69882c52 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.8", + "version": "0.0.1-alpha.9", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From 0324ffb2b108d33a83403cfd796c3445626f230a Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Fri, 9 May 2025 14:18:21 +0200 Subject: [PATCH 163/182] feat: extend AppBridgeTheme Event types to include state (#1210) * feat: extend AppBridgeTheme Event types to include state * changeset * chore: update import path --- .changeset/three-avocados-push.md | 5 +++++ packages/app-bridge-theme/src/types/Event.ts | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .changeset/three-avocados-push.md diff --git a/.changeset/three-avocados-push.md b/.changeset/three-avocados-push.md new file mode 100644 index 000000000..073519f5e --- /dev/null +++ b/.changeset/three-avocados-push.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: extend AppBridgeTheme Event types to include State diff --git a/packages/app-bridge-theme/src/types/Event.ts b/packages/app-bridge-theme/src/types/Event.ts index 3d3dd74b7..917b74828 100644 --- a/packages/app-bridge-theme/src/types/Event.ts +++ b/packages/app-bridge-theme/src/types/Event.ts @@ -6,6 +6,7 @@ import { type EventRegistry } from '../registries'; import { type ObjectNameValidator, type WrongNamePattern } from './Common'; import { type Context } from './Context'; +import { type State } from './State'; type EventVerb = 'chosen'; @@ -20,17 +21,29 @@ type ContextAsEventName = { ]; }; +type StateAsEventName = { + [StateKey in keyof State as StateKey extends string ? `State.${StateKey}` : never]: [ + State[StateKey], + State[StateKey], + ]; +}; + export type AppBridgeThemeEvent = EventNameValidator< Pick & ContextAsEventName< Context & { '*': Context; } + > & + StateAsEventName< + State & { + '*': State; + } > >; export type EventNamePattern = { - [eventName: `Context.${string}` | `${string}${Capitalize}`]: unknown; + [eventName: `Context.${string}` | `State.${string}` | `${string}${Capitalize}`]: unknown; }; export type EventNameParameter< EventName, From a3c186b16f0d0c2482137d3ec4dc74d32084bbc1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 9 May 2025 14:29:09 +0200 Subject: [PATCH 164/182] chore: release packages (alpha) (#1211) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 2abbead37..ec216c268 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -80,6 +80,7 @@ "tasty-vans-cough", "ten-guests-wash", "thirty-pears-lay", + "three-avocados-push", "tough-nails-shout", "tricky-boats-sip", "twelve-keys-begin", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index e98172f65..17a17017f 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.24 + +### Patch Changes + +- [#1210](https://github.com/Frontify/brand-sdk/pull/1210) [`0324ffb`](https://github.com/Frontify/brand-sdk/commit/0324ffb2b108d33a83403cfd796c3445626f230a) Thanks [@Kenny806](https://github.com/Kenny806)! - feat: extend AppBridgeTheme Event types to include State + ## 0.0.0-alpha.23 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 57ee86b37..21a3faa2c 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.23", + "version": "0.0.0-alpha.24", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index cd8a3fe7e..1ddfcce1f 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.10 + +### Patch Changes + +- Updated dependencies [[`0324ffb`](https://github.com/Frontify/brand-sdk/commit/0324ffb2b108d33a83403cfd796c3445626f230a)]: + - @frontify/app-bridge-theme@0.0.0-alpha.24 + ## 0.0.1-alpha.9 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index e69882c52..d5f070c42 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.9", + "version": "0.0.1-alpha.10", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From b1f7ebf02cf5f77b1fe2d1286a4d9727ec49d25a Mon Sep 17 00:00:00 2001 From: Jiri Matyas Date: Mon, 12 May 2025 16:34:09 +0200 Subject: [PATCH 165/182] chore: update @frontify/sidebar-settings in guideline-themes (#1212) --- .changeset/dull-planes-worry.md | 5 +++++ packages/guideline-themes/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 3 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 .changeset/dull-planes-worry.md diff --git a/.changeset/dull-planes-worry.md b/.changeset/dull-planes-worry.md new file mode 100644 index 000000000..c3f65bd72 --- /dev/null +++ b/.changeset/dull-planes-worry.md @@ -0,0 +1,5 @@ +--- +"@frontify/guideline-themes": patch +--- + +chore: update the @frontify/sidebar-settings dependency diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index d5f070c42..c970ddedf 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -40,7 +40,7 @@ }, "dependencies": { "@frontify/app-bridge-theme": "workspace:^", - "@frontify/sidebar-settings": "^0.9.20" + "@frontify/sidebar-settings": "^0.10.1" }, "devDependencies": { "@frontify/eslint-config-react": "0.17.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02437bc52..e9df5ea8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -488,8 +488,8 @@ importers: specifier: workspace:^ version: link:../app-bridge-theme '@frontify/sidebar-settings': - specifier: ^0.9.20 - version: 0.9.23(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) + specifier: ^0.10.1 + version: 0.10.1(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) devDependencies: '@frontify/eslint-config-react': specifier: 0.17.6 @@ -1732,8 +1732,8 @@ packages: react: ^18 react-dom: ^18 - '@frontify/sidebar-settings@0.9.23': - resolution: {integrity: sha512-CAj889AZsG660O+gOP8xy738SLBApoPSlNRCBuq9AXX0dV/srdxxZ54l/WAIzxWaDpD6Hes7O7ovvm8i5ZBHSA==} + '@frontify/sidebar-settings@0.10.1': + resolution: {integrity: sha512-E6qkZaMWGEOfJi6Xy2hINoAE2qlNvIbi35UaLgZx+KjOiYXKTZ/NFIjDrqcHLPsK14fHugFf/oZzDc+qDwtEvA==} peerDependencies: react: ^18 react-dom: ^18 @@ -10943,7 +10943,7 @@ snapshots: - tailwindcss - zustand - '@frontify/sidebar-settings@0.9.23(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': + '@frontify/sidebar-settings@0.10.1(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': dependencies: '@frontify/fondue': 12.9.3(@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@18.19.39)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(scheduler@0.24.0-canary-efb381bbf-20230505)(slate-history@0.100.0(slate@0.102.0))(slate-hyperscript@0.100.0(slate@0.102.0))(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@18.19.39)(typescript@5.5.2)))(zustand@4.5.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) react: 18.3.1 From b67f2487d701e1b448a57e7d6c92c0e3050e9147 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 09:36:52 +0200 Subject: [PATCH 166/182] chore: release packages (alpha) (#1213) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/guideline-themes/CHANGELOG.md | 6 ++++++ packages/guideline-themes/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index ec216c268..1f7b2a960 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -22,6 +22,7 @@ "curly-pots-scream", "cyan-cougars-invite", "dry-mangos-fix", + "dull-planes-worry", "early-masks-appear", "eighty-ants-happen", "eleven-shrimps-jog", diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 1ddfcce1f..69d67d032 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/guideline-themes +## 0.0.1-alpha.11 + +### Patch Changes + +- [#1212](https://github.com/Frontify/brand-sdk/pull/1212) [`b1f7ebf`](https://github.com/Frontify/brand-sdk/commit/b1f7ebf02cf5f77b1fe2d1286a4d9727ec49d25a) Thanks [@Kenny806](https://github.com/Kenny806)! - chore: update the @frontify/sidebar-settings dependency + ## 0.0.1-alpha.10 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index c970ddedf..0b658bda6 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.10", + "version": "0.0.1-alpha.11", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From 242db22097bbb8f14187ef5af42d2cd6374a8357 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Wed, 14 May 2025 10:39:53 +0200 Subject: [PATCH 167/182] feat(PlatformAppsDialog): add command to open the platform apps dialog (#1214) * feat(PlatformAppBrowser): add command to open the platform app browser * rename --- .changeset/new-dots-clean.md | 5 +++++ .../src/registries/CommandRegistry.ts | 2 ++ .../src/registries/commands/PlatformAppBrowser.ts | 12 ++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 .changeset/new-dots-clean.md create mode 100644 packages/app-bridge-theme/src/registries/commands/PlatformAppBrowser.ts diff --git a/.changeset/new-dots-clean.md b/.changeset/new-dots-clean.md new file mode 100644 index 000000000..09de6f3c2 --- /dev/null +++ b/.changeset/new-dots-clean.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": minor +--- + +feat: add command to open and close the platform apps dialog diff --git a/packages/app-bridge-theme/src/registries/CommandRegistry.ts b/packages/app-bridge-theme/src/registries/CommandRegistry.ts index 19a88cd90..174d2b724 100644 --- a/packages/app-bridge-theme/src/registries/CommandRegistry.ts +++ b/packages/app-bridge-theme/src/registries/CommandRegistry.ts @@ -5,6 +5,8 @@ import { type Simplify } from 'type-fest'; import { type ObjectNameValidator } from '../types'; export type CommandRegistry = CommandNameValidator<{ + openPlatformAppsDialog: void; + closePlatformAppsDialog: void; openSearchDialog: void; closeSearchDialog: void; openAiBrandAssistantDialog: void; diff --git a/packages/app-bridge-theme/src/registries/commands/PlatformAppBrowser.ts b/packages/app-bridge-theme/src/registries/commands/PlatformAppBrowser.ts new file mode 100644 index 000000000..efcf87792 --- /dev/null +++ b/packages/app-bridge-theme/src/registries/commands/PlatformAppBrowser.ts @@ -0,0 +1,12 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type DispatchHandlerParameter } from '../../types'; +import { type CommandRegistry } from '../CommandRegistry'; + +export const openPlatformAppsDialog = (): DispatchHandlerParameter<'openPlatformAppsDialog', CommandRegistry> => ({ + name: 'openPlatformAppsDialog', +}); + +export const closePlatformAppsDialog = (): DispatchHandlerParameter<'closePlatformAppsDialog', CommandRegistry> => ({ + name: 'closePlatformAppsDialog', +}); From 8d02a9d4d60f7fec8b51089fac6aad473c5589f2 Mon Sep 17 00:00:00 2001 From: ragi96 Date: Wed, 14 May 2025 10:44:58 +0200 Subject: [PATCH 168/182] test: remove flaky test which needs to be migrated --- .../src/react/useDocumentGroups.spec.ts | 226 --------- .../src/react/useUngroupedDocuments.spec.ts | 466 ------------------ 2 files changed, 692 deletions(-) delete mode 100644 packages/app-bridge/src/react/useDocumentGroups.spec.ts delete mode 100644 packages/app-bridge/src/react/useUngroupedDocuments.spec.ts diff --git a/packages/app-bridge/src/react/useDocumentGroups.spec.ts b/packages/app-bridge/src/react/useDocumentGroups.spec.ts deleted file mode 100644 index ab630fc7f..000000000 --- a/packages/app-bridge/src/react/useDocumentGroups.spec.ts +++ /dev/null @@ -1,226 +0,0 @@ -// @vitest-environment happy-dom - -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { renderHook, waitFor } from '@testing-library/react'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -import { DocumentGroupDummy, getAppBridgeThemeStub } from '../tests'; - -import { useDocumentGroups } from './useDocumentGroups'; - -const DOCUMENT_GROUP_ID_1 = 5332; -const DOCUMENT_GROUP_ID_2 = 95694; -const DOCUMENT_GROUP_ID_3 = 345882; -const DOCUMENT_ID_1 = 6456; - -describe('usedDocumentGroups', () => { - afterEach(() => { - vi.resetAllMocks(); - }); - - it('should fetch document groups on mount', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getDocumentGroups'); - - const { result } = renderHook(() => useDocumentGroups(appBridge)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - - expect(result.current.documentGroups).toEqual([ - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 3), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 0), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 2), - ]); - }); - }); - - it('should not fetch document groups on mount if not enabled', () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getDocumentGroups'); - - const { result } = renderHook(() => useDocumentGroups(appBridge, { enabled: false })); - - expect(result.current.isLoading).toBe(true); - expect(spy).not.toHaveBeenCalled(); - expect(result.current.documentGroups).toEqual([]); - }); - - it('should fetch document gropups if it gets enabled', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getDocumentGroups'); - - let enabled = false; - - const { result, rerender } = renderHook(() => useDocumentGroups(appBridge, { enabled })); - - expect(result.current.isLoading).toBe(true); - expect(spy).not.toHaveBeenCalled(); - expect(result.current.documentGroups).toEqual([]); - - enabled = true; - - rerender(); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.documentGroups).toEqual([ - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 3), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 0), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 2), - ]); - }); - }); - - it('should update document group if a document is added', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getDocumentGroups'); - - const { result } = renderHook(() => useDocumentGroups(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.documentGroups).toEqual([ - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 3), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 0), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 2), - ]); - }); - - // Mock the response of the second call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 3), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 0), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 3), - ]), - ); - - // Trigger a "document added" event in the specified document group - window.emitter.emit('AppBridge:GuidelineDocumentGroup:DocumentAction', { - action: 'add', - document: { id: DOCUMENT_ID_1, documentGroupId: DOCUMENT_GROUP_ID_3 }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentGroups).toEqual([ - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 3), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 0), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 3), - ]); - }); - - it('should update document group if a document is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getDocumentGroups'); - - const { result } = renderHook(() => useDocumentGroups(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Mock the response of the second call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 2), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 0), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 2), - ]), - ); - - // Trigger a "document deleted" event in the specified document group - window.emitter.emit('AppBridge:GuidelineDocumentGroup:DocumentAction', { - action: 'delete', - document: { id: DOCUMENT_ID_1, documentGroupId: DOCUMENT_GROUP_ID_1 }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentGroups).toEqual([ - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 2), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 0), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 2), - ]); - }); - - it('should update document group if a document group is moved', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getDocumentGroups'); - - const GROUP_1 = DocumentGroupDummy.withFields({ ...DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 2), sort: 1 }); - const GROUP_2 = DocumentGroupDummy.withFields({ ...DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 2), sort: 2 }); - const NEW_GROUP_2 = DocumentGroupDummy.withFields({ ...GROUP_2, sort: 3 }); - const GROUP_3 = DocumentGroupDummy.withFields({ ...DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 2), sort: 3 }); - const NEW_GROUP_3 = DocumentGroupDummy.withFields({ ...GROUP_3, sort: 2 }); - - spy.mockImplementationOnce(() => Promise.resolve([GROUP_1, GROUP_3, GROUP_2])); - const { result } = renderHook(() => useDocumentGroups(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - window.emitter.emit('AppBridge:GuidelineDocumentGroup:MoveEvent', { - action: 'movePreview', - documentGroup: { id: DOCUMENT_GROUP_ID_3, sort: 3 }, - position: 2, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - expect(result.current.documentGroups).toEqual([GROUP_1, NEW_GROUP_3, NEW_GROUP_2]); - }); - - it('should update document group if a document is moved', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getDocumentGroups'); - - const GROUP_1 = DocumentGroupDummy.withFields({ ...DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 2), sort: 1 }); - const GROUP_2 = DocumentGroupDummy.withFields({ ...DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 2), sort: 2 }); - const GROUP_3 = DocumentGroupDummy.withFields({ ...DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 2), sort: 3 }); - const NEW_GROUP_3 = DocumentGroupDummy.withFields({ ...GROUP_3, sort: 4 }); - - spy.mockImplementationOnce(() => Promise.resolve([GROUP_1, GROUP_2, GROUP_3])); - const { result } = renderHook(() => useDocumentGroups(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - window.emitter.emit('AppBridge:GuidelineDocument:MoveEvent', { - action: 'movePreview', - document: { id: DOCUMENT_ID_1, sort: 4 }, - newGroupId: null, - position: 2, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - expect(result.current.documentGroups).toEqual([GROUP_1, GROUP_2, NEW_GROUP_3]); - }); -}); diff --git a/packages/app-bridge/src/react/useUngroupedDocuments.spec.ts b/packages/app-bridge/src/react/useUngroupedDocuments.spec.ts deleted file mode 100644 index c913d4813..000000000 --- a/packages/app-bridge/src/react/useUngroupedDocuments.spec.ts +++ /dev/null @@ -1,466 +0,0 @@ -// @vitest-environment happy-dom - -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { renderHook, waitFor } from '@testing-library/react'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -import { DocumentDummy, getAppBridgeThemeStub } from '../tests'; - -import { useUngroupedDocuments } from './useUngroupedDocuments'; - -const DOCUMENT_ID_1 = 6456; -const DOCUMENT_ID_2 = 34532; -const DOCUMENT_ID_3 = 3455345; -const DOCUMENT_ID_4 = 2342; -const DOCUMENT_ID_5 = 2343445; -const DOCUMENT_PAGE_ID = 68445; -const DOCUMENT_CATEGORY_ID = 123; -const DOCUMENT_GROUP_ID_1 = 5332; - -describe('useUngroupedDocuments', () => { - afterEach(() => { - vi.resetAllMocks(); - }); - - it('should fetch ungrouped documents on mount', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - - const { result } = renderHook(() => useUngroupedDocuments(appBridge)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - DocumentDummy.with(DOCUMENT_ID_4), - DocumentDummy.with(DOCUMENT_ID_5), - ]); - }); - }); - - it('should not fetch ungrouped documents on mount if not enabled', () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - - const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: false })); - - expect(result.current.isLoading).toBe(true); - expect(spy).not.toHaveBeenCalled(); - expect(result.current.documents).toEqual([]); - }); - - it('should fetch ungrouped documents if it gets enabled', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - - let enabled = false; - - const { result, rerender } = renderHook(() => useUngroupedDocuments(appBridge, { enabled })); - - expect(result.current.isLoading).toBe(true); - expect(spy).not.toHaveBeenCalled(); - expect(result.current.documents).toEqual([]); - - enabled = true; - - rerender(); - - expect(result.current.isLoading).toBe(true); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - DocumentDummy.with(DOCUMENT_ID_4), - DocumentDummy.with(DOCUMENT_ID_5), - ]); - }); - - it('should update document if a page is added', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - - const OLD_DOCUMENT = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_4), - numberOfUncategorizedDocumentPages: 0, - }); - const NEW_DOCUMENT = DocumentDummy.withFields({ - ...OLD_DOCUMENT, - numberOfUncategorizedDocumentPages: 1, - }); - - // Mock the response of the first call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - OLD_DOCUMENT, - ]), - ); - - const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - OLD_DOCUMENT, - ]); - - // Mock the response of the second call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - NEW_DOCUMENT, - ]), - ); - - // Trigger a "document page added" event in the specified document - window.emitter.emit('AppBridge:GuidelineDocument:DocumentPageAction', { - action: 'add', - documentPage: { id: DOCUMENT_PAGE_ID, documentId: DOCUMENT_ID_4 }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - NEW_DOCUMENT, - ]); - }); - - it('should update document if a page is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - - const OLD_DOCUMENT = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_4), - numberOfUncategorizedDocumentPages: 1, - }); - const NEW_DOCUMENT = DocumentDummy.withFields({ - ...OLD_DOCUMENT, - numberOfUncategorizedDocumentPages: 0, - }); - - // Mock the response of the first call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - OLD_DOCUMENT, - ]), - ); - - const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - // Mock the response of the second call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - NEW_DOCUMENT, - ]), - ); - - // Trigger a "document page added" event in the specified document - window.emitter.emit('AppBridge:GuidelineDocument:DocumentPageAction', { - action: 'delete', - documentPage: { id: DOCUMENT_PAGE_ID, documentId: DOCUMENT_ID_4 }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - NEW_DOCUMENT, - ]); - }); - - it('should update document if a category is added', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - - const OLD_DOCUMENT = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_4), - numberOfDocumentPageCategories: 0, - }); - const NEW_DOCUMENT = DocumentDummy.withFields({ - ...OLD_DOCUMENT, - numberOfDocumentPageCategories: 1, - }); - - // Mock the response of the first call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - OLD_DOCUMENT, - ]), - ); - - const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - OLD_DOCUMENT, - ]); - - // Mock the response of the second call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - NEW_DOCUMENT, - ]), - ); - - // Trigger a "document category added" event in the specified document - window.emitter.emit('AppBridge:GuidelineDocument:DocumentCategoryAction', { - action: 'add', - documentCategory: { id: DOCUMENT_CATEGORY_ID, documentId: DOCUMENT_ID_4 }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - NEW_DOCUMENT, - ]); - }); - - it('should update document if a category is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - - const OLD_DOCUMENT = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_4), - numberOfDocumentPageCategories: 1, - }); - const NEW_DOCUMENT = DocumentDummy.withFields({ - ...OLD_DOCUMENT, - numberOfDocumentPageCategories: 0, - }); - - // Mock the response of the first call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - OLD_DOCUMENT, - ]), - ); - - const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - // Mock the response of the second call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - NEW_DOCUMENT, - ]), - ); - - // Trigger a "document category added" event in the specified document - window.emitter.emit('AppBridge:GuidelineDocument:DocumentCategoryAction', { - action: 'delete', - documentCategory: { id: DOCUMENT_CATEGORY_ID, documentId: DOCUMENT_ID_4 }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documents).toEqual([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - NEW_DOCUMENT, - ]); - }); - - it('should update document sorting if a document is moved', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - - const DOCUMENT_1 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_1), - sort: 1, - }); - const DOCUMENT_2 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_2), - sort: 2, - }); - const NEW_DOCUMENT_2 = DocumentDummy.withFields({ - ...DOCUMENT_2, - sort: 3, - }); - const DOCUMENT_3 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_3), - sort: 3, - }); - const NEW_DOCUMENT_3 = DocumentDummy.withFields({ - ...DOCUMENT_3, - sort: 4, - }); - const DOCUMENT_4 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_4), - sort: 4, - }); - const NEW_DOCUMENT_4 = DocumentDummy.withFields({ - ...DOCUMENT_4, - sort: 2, - }); - - // Mock the response of the first call - spy.mockImplementationOnce(() => Promise.resolve([DOCUMENT_1, DOCUMENT_2, DOCUMENT_3, DOCUMENT_4])); - - const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - // Trigger a "document category added" event in the specified document - window.emitter.emit('AppBridge:GuidelineDocument:MoveEvent', { - action: 'movePreview', - position: 2, - newGroupId: null, - document: { id: DOCUMENT_ID_4, sort: 4, documentGroupId: null }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - expect(result.current.documents).toEqual([DOCUMENT_1, NEW_DOCUMENT_4, NEW_DOCUMENT_2, NEW_DOCUMENT_3]); - }); - - it('should update document sorting if a document group is moved', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - - const DOCUMENT_1 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_1), - sort: 1, - }); - const DOCUMENT_2 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_2), - sort: 2, - }); - const NEW_DOCUMENT_2 = DocumentDummy.withFields({ - ...DOCUMENT_2, - sort: 3, - }); - const DOCUMENT_3 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_3), - sort: 3, - }); - const NEW_DOCUMENT_3 = DocumentDummy.withFields({ - ...DOCUMENT_3, - sort: 4, - }); - const DOCUMENT_4 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_4), - sort: 4, - }); - const NEW_DOCUMENT_4 = DocumentDummy.withFields({ - ...DOCUMENT_4, - sort: 5, - }); - - // Mock the response of the first call - spy.mockImplementationOnce(() => Promise.resolve([DOCUMENT_1, DOCUMENT_2, DOCUMENT_3, DOCUMENT_4])); - - const { result } = renderHook(() => useUngroupedDocuments(appBridge, { enabled: true })); - - expect(result.current.isLoading).toBe(true); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - // Trigger a "document category added" event in the specified document - window.emitter.emit('AppBridge:GuidelineDocumentGroup:MoveEvent', { - action: 'movePreview', - position: 2, - documentGroup: { id: DOCUMENT_GROUP_ID_1, sort: 5 }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - expect(result.current.documents).toEqual([DOCUMENT_1, NEW_DOCUMENT_2, NEW_DOCUMENT_3, NEW_DOCUMENT_4]); - }); -}); From e8f80db9ebff09c575acc932f22ce65886c4d7ee Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Wed, 14 May 2025 10:55:46 +0200 Subject: [PATCH 169/182] feat: add isPlatformAppsDialogOpen to context (#1218) --- .changeset/gentle-months-bake.md | 5 +++++ packages/app-bridge-theme/src/types/Context.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/gentle-months-bake.md diff --git a/.changeset/gentle-months-bake.md b/.changeset/gentle-months-bake.md new file mode 100644 index 000000000..17e90d922 --- /dev/null +++ b/.changeset/gentle-months-bake.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: add `isPlatformAppsDialogOpen` to context diff --git a/packages/app-bridge-theme/src/types/Context.ts b/packages/app-bridge-theme/src/types/Context.ts index a6d6de3c0..7d70c7f7d 100644 --- a/packages/app-bridge-theme/src/types/Context.ts +++ b/packages/app-bridge-theme/src/types/Context.ts @@ -36,6 +36,7 @@ export type Context = { isAuthenticated: boolean; isAiBrandAssistantDialogOpen: boolean; isSearchDialogOpen: boolean; + isPlatformAppsDialogOpen: boolean; activeSectionHeadingId: number | null; languages: Language[]; template: TemplateContext | null; From 49dc79e2bdbbc096b96e89ae5f05d044b68c0e76 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 11:02:28 +0200 Subject: [PATCH 170/182] chore: release packages (alpha) (#1217) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 2 ++ packages/app-bridge-theme/CHANGELOG.md | 10 ++++++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 1f7b2a960..cc51b87cc 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -33,6 +33,7 @@ "four-crabs-bake", "four-ravens-try", "fuzzy-walls-repeat", + "gentle-months-bake", "giant-shrimps-dream", "good-forks-repair", "gorgeous-seas-search", @@ -49,6 +50,7 @@ "nasty-feet-repair", "neat-plants-smile", "nervous-walls-repair", + "new-dots-clean", "new-zebras-unite", "nine-roses-sleep", "odd-geckos-end", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 17a17017f..a138cdd7f 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,15 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.25 + +### Minor Changes + +- [#1214](https://github.com/Frontify/brand-sdk/pull/1214) [`242db22`](https://github.com/Frontify/brand-sdk/commit/242db22097bbb8f14187ef5af42d2cd6374a8357) Thanks [@ragi96](https://github.com/ragi96)! - feat: add command to open and close the platform apps dialog + +### Patch Changes + +- [#1218](https://github.com/Frontify/brand-sdk/pull/1218) [`e8f80db`](https://github.com/Frontify/brand-sdk/commit/e8f80db9ebff09c575acc932f22ce65886c4d7ee) Thanks [@ragi96](https://github.com/ragi96)! - feat: add `isPlatformAppsDialogOpen` to context + ## 0.0.0-alpha.24 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 21a3faa2c..5d4dce5f8 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.24", + "version": "0.0.0-alpha.25", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 69d67d032..aa08c83a5 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.12 + +### Patch Changes + +- Updated dependencies [[`e8f80db`](https://github.com/Frontify/brand-sdk/commit/e8f80db9ebff09c575acc932f22ce65886c4d7ee), [`242db22`](https://github.com/Frontify/brand-sdk/commit/242db22097bbb8f14187ef5af42d2cd6374a8357)]: + - @frontify/app-bridge-theme@0.0.0-alpha.25 + ## 0.0.1-alpha.11 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index 0b658bda6..7c444d843 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From 22226ab1266c83a8206a36431a419ad215ecbcb6 Mon Sep 17 00:00:00 2001 From: Mike Trummer Date: Wed, 14 May 2025 16:16:25 +0200 Subject: [PATCH 171/182] feat(AppBridgeTheme): export platform apps dialog (#1222) * feat: export PlatformAppsDialog * Create wise-zoos-jam.md --- .changeset/wise-zoos-jam.md | 5 +++++ .../{PlatformAppBrowser.ts => PlatformAppsDialog.ts} | 0 packages/app-bridge-theme/src/registries/commands/index.ts | 1 + 3 files changed, 6 insertions(+) create mode 100644 .changeset/wise-zoos-jam.md rename packages/app-bridge-theme/src/registries/commands/{PlatformAppBrowser.ts => PlatformAppsDialog.ts} (100%) diff --git a/.changeset/wise-zoos-jam.md b/.changeset/wise-zoos-jam.md new file mode 100644 index 000000000..bdc68a761 --- /dev/null +++ b/.changeset/wise-zoos-jam.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +feat: export platform apps dialog diff --git a/packages/app-bridge-theme/src/registries/commands/PlatformAppBrowser.ts b/packages/app-bridge-theme/src/registries/commands/PlatformAppsDialog.ts similarity index 100% rename from packages/app-bridge-theme/src/registries/commands/PlatformAppBrowser.ts rename to packages/app-bridge-theme/src/registries/commands/PlatformAppsDialog.ts diff --git a/packages/app-bridge-theme/src/registries/commands/index.ts b/packages/app-bridge-theme/src/registries/commands/index.ts index 68ddb4f91..256bf56a6 100644 --- a/packages/app-bridge-theme/src/registries/commands/index.ts +++ b/packages/app-bridge-theme/src/registries/commands/index.ts @@ -2,6 +2,7 @@ export * from './AiBrandAssistantDialog'; export * from './SearchDialog'; +export * from './PlatformAppsDialog'; export * from './Navigate'; export * from './NavigateToDocumentSection'; export * from './HydrateContextDocumentNavigation'; From bfe54847f4fa8ea325792f3cbffb801962f13bd0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 16:23:15 +0200 Subject: [PATCH 172/182] chore: release packages (alpha) (#1223) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index cc51b87cc..7c63e8bde 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -90,6 +90,7 @@ "violet-elephants-tan", "warm-hounds-refuse", "wild-bags-judge", + "wise-zoos-jam", "witty-rivers-smile", "witty-tools-check", "young-crews-hope" diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index a138cdd7f..918e60109 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.26 + +### Patch Changes + +- [#1222](https://github.com/Frontify/brand-sdk/pull/1222) [`22226ab`](https://github.com/Frontify/brand-sdk/commit/22226ab1266c83a8206a36431a419ad215ecbcb6) Thanks [@mike85](https://github.com/mike85)! - feat: export platform apps dialog + ## 0.0.0-alpha.25 ### Minor Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index 5d4dce5f8..f2101016a 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.25", + "version": "0.0.0-alpha.26", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index aa08c83a5..294599762 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.13 + +### Patch Changes + +- Updated dependencies [[`22226ab`](https://github.com/Frontify/brand-sdk/commit/22226ab1266c83a8206a36431a419ad215ecbcb6)]: + - @frontify/app-bridge-theme@0.0.0-alpha.26 + ## 0.0.1-alpha.12 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index 7c444d843..2338010ed 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.12", + "version": "0.0.1-alpha.13", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From 559f24efe287c913ecfc0755ff18c56fcfe2fa56 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Thu, 12 Jun 2025 09:49:30 +0200 Subject: [PATCH 173/182] feat: add alt text to asset (#1232) * feat: add alt text to asset * fix dummy * add changeset --- .changeset/old-cougars-study.md | 5 +++++ packages/app-bridge/src/repositories/AssetRepository.ts | 1 + packages/app-bridge/src/tests/AssetApiDummy.ts | 1 + packages/app-bridge/src/tests/AssetChooserResultDummy.ts | 1 + packages/app-bridge/src/tests/AssetDummy.ts | 1 + packages/app-bridge/src/types/Asset.ts | 2 ++ 6 files changed, 11 insertions(+) create mode 100644 .changeset/old-cougars-study.md diff --git a/.changeset/old-cougars-study.md b/.changeset/old-cougars-study.md new file mode 100644 index 000000000..5acf1ad7b --- /dev/null +++ b/.changeset/old-cougars-study.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": minor +--- + +feat(Asset): added the property alternativeText diff --git a/packages/app-bridge/src/repositories/AssetRepository.ts b/packages/app-bridge/src/repositories/AssetRepository.ts index f1f16ad03..0ee863fa6 100644 --- a/packages/app-bridge/src/repositories/AssetRepository.ts +++ b/packages/app-bridge/src/repositories/AssetRepository.ts @@ -16,6 +16,7 @@ export const createAssetByFileId = async (fileId: string, projectId: number, set export const mapAssetApiToAsset = (asset: AssetApi): Asset => { return { id: asset.id, + alternativeText: asset.alternative_text, objectType: asset.object_type, extension: asset.ext, creatorName: asset.creator_name, diff --git a/packages/app-bridge/src/tests/AssetApiDummy.ts b/packages/app-bridge/src/tests/AssetApiDummy.ts index b4f37197a..8d50abf43 100644 --- a/packages/app-bridge/src/tests/AssetApiDummy.ts +++ b/packages/app-bridge/src/tests/AssetApiDummy.ts @@ -7,6 +7,7 @@ export class AssetApiDummy { return { id, creator_name: 'Creator Name', + alternative_text: 'Alternative Text', ext: 'png', external_url: null, file_id: 'x1x1x1x1x1x1', diff --git a/packages/app-bridge/src/tests/AssetChooserResultDummy.ts b/packages/app-bridge/src/tests/AssetChooserResultDummy.ts index 3df361c64..ae3eec032 100644 --- a/packages/app-bridge/src/tests/AssetChooserResultDummy.ts +++ b/packages/app-bridge/src/tests/AssetChooserResultDummy.ts @@ -7,6 +7,7 @@ export class AssetChooserResultDummy { return { id, creator_name: 'Creator Name', + alternative_text: 'Alternative Text', ext: 'png', external_url: null, file_id: 'x1x1x1x1x1x1', diff --git a/packages/app-bridge/src/tests/AssetDummy.ts b/packages/app-bridge/src/tests/AssetDummy.ts index e7e55ad0c..7f25d37c4 100644 --- a/packages/app-bridge/src/tests/AssetDummy.ts +++ b/packages/app-bridge/src/tests/AssetDummy.ts @@ -7,6 +7,7 @@ export class AssetDummy { return { id, creatorName: 'Creator Name', + alternativeText: 'Alternative Text', extension: 'png', externalUrl: null, fileName: 'fileName.png', diff --git a/packages/app-bridge/src/types/Asset.ts b/packages/app-bridge/src/types/Asset.ts index 2c4e5bcf8..203a45831 100644 --- a/packages/app-bridge/src/types/Asset.ts +++ b/packages/app-bridge/src/types/Asset.ts @@ -3,6 +3,7 @@ export type AssetApi = { id: number; creator_name: string; + alternative_text: Nullable; ext: string; external_url: Nullable; file_name: string; @@ -29,6 +30,7 @@ export type AssetApi = { export type Asset = { id: number; creatorName: string; + alternativeText: Nullable; extension: string; externalUrl: Nullable; fileName: string; From 989529fe40917a77269718b240dfe2ed0a5d257f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 09:58:33 +0200 Subject: [PATCH 174/182] chore: release packages (alpha) (#1233) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 7c63e8bde..ceb92884c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -54,6 +54,7 @@ "new-zebras-unite", "nine-roses-sleep", "odd-geckos-end", + "old-cougars-study", "orange-jokes-listen", "pink-bugs-behave", "pink-geckos-change", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index f36c2d0e7..c58a5dde0 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.40 + +### Minor Changes + +- [#1232](https://github.com/Frontify/brand-sdk/pull/1232) [`559f24e`](https://github.com/Frontify/brand-sdk/commit/559f24efe287c913ecfc0755ff18c56fcfe2fa56) Thanks [@ragi96](https://github.com/ragi96)! - feat(Asset): added the property alternativeText + ## 4.0.0-alpha.39 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index e68592c16..9327ab259 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.39", + "version": "4.0.0-alpha.40", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 02fd19d27220470f6ba523a0cae29fc36ab55758 Mon Sep 17 00:00:00 2001 From: Rafael Giezendanner Date: Thu, 12 Jun 2025 15:16:21 +0200 Subject: [PATCH 175/182] fix: assetChooser result alt text (#1235) --- .changeset/ninety-lions-love.md | 5 +++++ packages/app-bridge/src/tests/AssetChooserResultDummy.ts | 2 +- packages/app-bridge/src/types/Terrific.ts | 6 +++++- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 .changeset/ninety-lions-love.md diff --git a/.changeset/ninety-lions-love.md b/.changeset/ninety-lions-love.md new file mode 100644 index 000000000..e7f4b965e --- /dev/null +++ b/.changeset/ninety-lions-love.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +fix: AssetChooserResult Type as alternative text is prefixed with computed diff --git a/packages/app-bridge/src/tests/AssetChooserResultDummy.ts b/packages/app-bridge/src/tests/AssetChooserResultDummy.ts index ae3eec032..fabe32a57 100644 --- a/packages/app-bridge/src/tests/AssetChooserResultDummy.ts +++ b/packages/app-bridge/src/tests/AssetChooserResultDummy.ts @@ -7,7 +7,7 @@ export class AssetChooserResultDummy { return { id, creator_name: 'Creator Name', - alternative_text: 'Alternative Text', + computed_alternative_text: 'Alternative Text', ext: 'png', external_url: null, file_id: 'x1x1x1x1x1x1', diff --git a/packages/app-bridge/src/types/Terrific.ts b/packages/app-bridge/src/types/Terrific.ts index b7528203c..b1683ea4d 100644 --- a/packages/app-bridge/src/types/Terrific.ts +++ b/packages/app-bridge/src/types/Terrific.ts @@ -17,7 +17,11 @@ export type TerrificComponent = { }; }; -export type AssetChooserResult = Omit & { project: number; filesize: number }; +export type AssetChooserResult = Omit & { + project: number; + filesize: number; + computed_alternative_text: Nullable; +}; export type TemplateChooserResult = TemplateApiLegacy; export type AssetChooserAssetChosenCallback = (selectedAsset: { screenData: AssetChooserResult[] }) => void; From 02c031ecc45a9ff096cce2890d2c5a5585d2526d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:24:29 +0200 Subject: [PATCH 176/182] chore: release packages (alpha) (#1236) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index ceb92884c..8a4e0e64e 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -53,6 +53,7 @@ "new-dots-clean", "new-zebras-unite", "nine-roses-sleep", + "ninety-lions-love", "odd-geckos-end", "old-cougars-study", "orange-jokes-listen", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index c58a5dde0..f325072a1 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.41 + +### Patch Changes + +- [#1235](https://github.com/Frontify/brand-sdk/pull/1235) [`02fd19d`](https://github.com/Frontify/brand-sdk/commit/02fd19d27220470f6ba523a0cae29fc36ab55758) Thanks [@ragi96](https://github.com/ragi96)! - fix: AssetChooserResult Type as alternative text is prefixed with computed + ## 4.0.0-alpha.40 ### Minor Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index 9327ab259..c01a87db5 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.40", + "version": "4.0.0-alpha.41", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From ce8e4f5d98a825a87f1928a2aaf83bb5d0031d89 Mon Sep 17 00:00:00 2001 From: ragi96 Date: Thu, 12 Jun 2025 15:32:30 +0200 Subject: [PATCH 177/182] test: remove the flakey tests --- .../useUncategorizedDocumentPages.spec.ts | 589 ------------------ 1 file changed, 589 deletions(-) delete mode 100644 packages/app-bridge/src/react/useUncategorizedDocumentPages.spec.ts diff --git a/packages/app-bridge/src/react/useUncategorizedDocumentPages.spec.ts b/packages/app-bridge/src/react/useUncategorizedDocumentPages.spec.ts deleted file mode 100644 index 14b50d140..000000000 --- a/packages/app-bridge/src/react/useUncategorizedDocumentPages.spec.ts +++ /dev/null @@ -1,589 +0,0 @@ -// @vitest-environment happy-dom - -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { renderHook, waitFor } from '@testing-library/react'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -import { DocumentPageDummy, getAppBridgeThemeStub } from '../tests'; -import { type DocumentPage } from '../types'; - -import { useUncategorizedDocumentPages } from './useUncategorizedDocumentPages'; - -const DOCUMENT_ID = 345346; -const ANOTHER_DOCUMENT_ID = 49385; -const DOCUMENT_PAGE_ID_1 = 24324; -const DOCUMENT_PAGE_ID_2 = 3532; -const DOCUMENT_PAGE_ID_3 = 98954; -const DOCUMENT_PAGE_ID_4 = 68445; -const DOCUMENT_CATEGORY_ID = 34656; - -describe('useUncategorizedDocumentPages', () => { - afterEach(() => { - vi.resetAllMocks(); - }); - - it('should fetch document pages on mount', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledTimes(1); - expect(spy).toHaveBeenCalledWith(DOCUMENT_ID); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.documentPages).toEqual([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 2, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 3, - }), - ]); - }); - }); - - it('should not fetch document pages on mount if not enabled', () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID, { enabled: false })); - - expect(result.current.isLoading).toBe(true); - expect(spy).not.toHaveBeenCalled(); - expect(result.current.documentPages).toEqual([]); - }); - - it('should fetch document pages if it gets enabled', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - let enabled = false; - - const { result, rerender } = renderHook(() => - useUncategorizedDocumentPages(appBridge, DOCUMENT_ID, { enabled }), - ); - - expect(result.current.isLoading).toBe(true); - expect(spy).not.toHaveBeenCalled(); - expect(result.current.documentPages).toEqual([]); - - enabled = true; - - rerender(); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalled(); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.documentPages).toEqual([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 2, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 3, - }), - ]); - }); - }); - - it('should update document pages if a page is added in the current document', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_4, - documentId: DOCUMENT_ID, - categoryId: null, - }); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Mock the response of the second call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: null, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID, - categoryId: null, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID, - categoryId: null, - }), - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_4, documentId: DOCUMENT_ID, categoryId: null }), - ]), - ); - - // Trigger a "document page added" event in the current document - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'add', - documentPage: DOCUMENT_PAGE, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledTimes(2); - }); - - expect(result.current.documentPages).toEqual([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: null, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID, - categoryId: null, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID, - categoryId: null, - }), - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_4, documentId: DOCUMENT_ID, categoryId: null }), - ]); - }); - - it('should not update document pages if a page is added in another document', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: ANOTHER_DOCUMENT_ID, - categoryId: null, - }); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Trigger a "document page added" event from another document - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'add', - documentPage: DOCUMENT_PAGE, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - ]); - }); - - it('should not update the document pages if a page is added in a category', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: DOCUMENT_CATEGORY_ID, - }); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Trigger a "document page added" event from a category - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'add', - documentPage: DOCUMENT_PAGE, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - ]); - }); - - it('should update document pages if a page is removed from the document', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: null, - }); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Trigger a "document page deleted" event in the current document - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'delete', - documentPage: { - id: DOCUMENT_PAGE.id, - documentId: DOCUMENT_PAGE.documentId, - categoryId: DOCUMENT_PAGE.categoryId, - }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentPages).toEqual([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 2, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 3, - }), - ]); - }); - - it('should not update document pages if a page is removed from another document', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_4, - documentId: ANOTHER_DOCUMENT_ID, - categoryId: null, - }); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Trigger a "document page deleted" event in the current document - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'delete', - documentPage: { - id: DOCUMENT_PAGE.id, - documentId: DOCUMENT_PAGE.documentId, - categoryId: DOCUMENT_PAGE.categoryId, - }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - ]); - }); - - it('should not update the document pages if a page is removed from a category', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_4, - documentId: DOCUMENT_ID, - categoryId: DOCUMENT_CATEGORY_ID, - }); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Trigger a "document page deleted" event from another category - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'delete', - documentPage: { - id: DOCUMENT_PAGE.id, - documentId: DOCUMENT_PAGE.documentId, - categoryId: DOCUMENT_PAGE.categoryId, - }, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - ]); - }); - - it('should update document pages if a page is updated in the document', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const UPDATED_DOCUMENT_PAGE: DocumentPage = { - ...DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 2, - }), - title: 'Updated title', - }; - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Mock the response of the second call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 1, - }), - UPDATED_DOCUMENT_PAGE, - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 3, - }), - ]), - ); - - // Trigger a "document page updated" event in the specified category - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'update', - documentPage: UPDATED_DOCUMENT_PAGE, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledTimes(2); - }); - - expect(result.current.documentPages).toEqual([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 1, - }), - UPDATED_DOCUMENT_PAGE, - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 3, - }), - ]); - }); - - it('should not update the document pages if a page is updated from another document', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const UPDATED_DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_4, - documentId: ANOTHER_DOCUMENT_ID, - categoryId: DOCUMENT_CATEGORY_ID, - }); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Trigger a "document page updated" event from a category - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'update', - documentPage: UPDATED_DOCUMENT_PAGE, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - ]); - }); - - it('should not update the document pages if a page is updated in a category', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const UPDATED_DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_4, - documentId: DOCUMENT_ID, - categoryId: DOCUMENT_CATEGORY_ID, - }); - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Trigger a "document page updated" event from a category - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'update', - documentPage: UPDATED_DOCUMENT_PAGE, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - ]); - }); - - it('should update document pages if a page is moved in the document', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - - const UPDATED_DOCUMENT_PAGE: DocumentPage = { - ...DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 2, - }), - sort: 3, - }; - - const { result } = renderHook(() => useUncategorizedDocumentPages(appBridge, DOCUMENT_ID)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - - await waitFor(() => expect(result.current.isLoading).toBe(false)); - - // Mock the response of the second call - spy.mockImplementationOnce(() => - Promise.resolve([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 1, - }), - UPDATED_DOCUMENT_PAGE, - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 3, - }), - ]), - ); - - // Trigger a "document page updated" event in the specified category - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'move', - documentPage: UPDATED_DOCUMENT_PAGE, - }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledOnce(); - }); - - expect(result.current.documentPages).toEqual([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID, - categoryId: null, - sort: 3, - }), - UPDATED_DOCUMENT_PAGE, - ]); - }); -}); From 10712c01e2b5b4979b8649525515e490b6c4125b Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Mon, 23 Jun 2025 15:44:58 +0200 Subject: [PATCH 178/182] refactor: add navigateToSectionHeading (#1238) * refactor: add navigateToSectionHeading command * changeset --- .changeset/little-eagles-joke.md | 5 +++++ .../src/registries/CommandRegistry.ts | 1 + .../registries/commands/NavigateToDocumentSection.ts | 1 + .../registries/commands/NavigateToSectionHeading.ts | 11 +++++++++++ .../app-bridge-theme/src/registries/commands/index.ts | 1 + 5 files changed, 19 insertions(+) create mode 100644 .changeset/little-eagles-joke.md create mode 100644 packages/app-bridge-theme/src/registries/commands/NavigateToSectionHeading.ts diff --git a/.changeset/little-eagles-joke.md b/.changeset/little-eagles-joke.md new file mode 100644 index 000000000..c0276207c --- /dev/null +++ b/.changeset/little-eagles-joke.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge-theme": patch +--- + +refactor: deprecating navigateToDocumentSection in favor of navigateToSectionHeading. diff --git a/packages/app-bridge-theme/src/registries/CommandRegistry.ts b/packages/app-bridge-theme/src/registries/CommandRegistry.ts index 174d2b724..ab58bf232 100644 --- a/packages/app-bridge-theme/src/registries/CommandRegistry.ts +++ b/packages/app-bridge-theme/src/registries/CommandRegistry.ts @@ -13,6 +13,7 @@ export type CommandRegistry = CommandNameValidator<{ closeAiBrandAssistantDialog: void; navigate: string; navigateToDocumentSection: number | string; + navigateToSectionHeading: number | string; hydrateContextDocumentNavigation: number; }>; diff --git a/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts b/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts index 895d1c6e8..32353bd01 100644 --- a/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts +++ b/packages/app-bridge-theme/src/registries/commands/NavigateToDocumentSection.ts @@ -3,6 +3,7 @@ import { type DispatchHandlerParameter } from '../../types'; import { type CommandRegistry } from '../CommandRegistry'; +/** @deprecated Use navigateToSectionHeading instead */ export const navigateToDocumentSection = ( sectionId: CommandRegistry['navigateToDocumentSection'], ): DispatchHandlerParameter<'navigateToDocumentSection', CommandRegistry> => ({ diff --git a/packages/app-bridge-theme/src/registries/commands/NavigateToSectionHeading.ts b/packages/app-bridge-theme/src/registries/commands/NavigateToSectionHeading.ts new file mode 100644 index 000000000..901ae7bd5 --- /dev/null +++ b/packages/app-bridge-theme/src/registries/commands/NavigateToSectionHeading.ts @@ -0,0 +1,11 @@ +/* (c) Copyright Frontify Ltd., all rights reserved. */ + +import { type DispatchHandlerParameter } from '../../types'; +import { type CommandRegistry } from '../CommandRegistry'; + +export const navigateToSectionHeading = ( + sectionId: CommandRegistry['navigateToSectionHeading'], +): DispatchHandlerParameter<'navigateToSectionHeading', CommandRegistry> => ({ + name: 'navigateToSectionHeading', + payload: sectionId, +}); diff --git a/packages/app-bridge-theme/src/registries/commands/index.ts b/packages/app-bridge-theme/src/registries/commands/index.ts index 256bf56a6..46736af73 100644 --- a/packages/app-bridge-theme/src/registries/commands/index.ts +++ b/packages/app-bridge-theme/src/registries/commands/index.ts @@ -5,4 +5,5 @@ export * from './SearchDialog'; export * from './PlatformAppsDialog'; export * from './Navigate'; export * from './NavigateToDocumentSection'; +export * from './NavigateToSectionHeading'; export * from './HydrateContextDocumentNavigation'; From 76e235f51ab44991a77a7cbea08012c5e993c7ed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 14:11:34 +0000 Subject: [PATCH 179/182] chore: release packages (alpha) (#1239) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge-theme/CHANGELOG.md | 6 ++++++ packages/app-bridge-theme/package.json | 2 +- packages/guideline-themes/CHANGELOG.md | 7 +++++++ packages/guideline-themes/package.json | 2 +- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 8a4e0e64e..0261552bf 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -43,6 +43,7 @@ "khaki-dryers-shout", "kind-fishes-flash", "light-crews-report", + "little-eagles-joke", "lovely-books-hear", "lucky-taxis-kneel", "mighty-brooms-lay", diff --git a/packages/app-bridge-theme/CHANGELOG.md b/packages/app-bridge-theme/CHANGELOG.md index 918e60109..7a75feb05 100644 --- a/packages/app-bridge-theme/CHANGELOG.md +++ b/packages/app-bridge-theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge-theme +## 0.0.0-alpha.27 + +### Patch Changes + +- [#1238](https://github.com/Frontify/brand-sdk/pull/1238) [`10712c0`](https://github.com/Frontify/brand-sdk/commit/10712c01e2b5b4979b8649525515e490b6c4125b) Thanks [@anxobotana](https://github.com/anxobotana)! - refactor: deprecating navigateToDocumentSection in favor of navigateToSectionHeading. + ## 0.0.0-alpha.26 ### Patch Changes diff --git a/packages/app-bridge-theme/package.json b/packages/app-bridge-theme/package.json index f2101016a..502fad8a0 100644 --- a/packages/app-bridge-theme/package.json +++ b/packages/app-bridge-theme/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge-theme", "type": "module", - "version": "0.0.0-alpha.26", + "version": "0.0.0-alpha.27", "description": "Package to establish communication between Frontify and themes", "author": "Frontify Developers ", "repository": { diff --git a/packages/guideline-themes/CHANGELOG.md b/packages/guideline-themes/CHANGELOG.md index 294599762..341eab730 100644 --- a/packages/guideline-themes/CHANGELOG.md +++ b/packages/guideline-themes/CHANGELOG.md @@ -1,5 +1,12 @@ # @frontify/guideline-themes +## 0.0.1-alpha.14 + +### Patch Changes + +- Updated dependencies [[`10712c0`](https://github.com/Frontify/brand-sdk/commit/10712c01e2b5b4979b8649525515e490b6c4125b)]: + - @frontify/app-bridge-theme@0.0.0-alpha.27 + ## 0.0.1-alpha.13 ### Patch Changes diff --git a/packages/guideline-themes/package.json b/packages/guideline-themes/package.json index 2338010ed..fc5759642 100644 --- a/packages/guideline-themes/package.json +++ b/packages/guideline-themes/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/guideline-themes", "type": "module", - "version": "0.0.1-alpha.13", + "version": "0.0.1-alpha.14", "description": "Provides types and helpers for the guideline themes development", "author": "Frontify Developers ", "repository": { From eb6822d507e6a96a77725cb4aeb16d26846b72ee Mon Sep 17 00:00:00 2001 From: Anxo Botana Date: Tue, 24 Jun 2025 11:01:53 +0200 Subject: [PATCH 180/182] refactor: remove AppBridgeTheme from app-bridge (#1237) * refacotr: remove AppBridgeTheme from app-bridge * changeset * Update thirty-eggs-judge.md * Update .changeset/thirty-eggs-judge.md Co-authored-by: Rafael Giezendanner * cleaning * . * and keep cleaning... * codeowners * some more cleaning... * clean unused helpers * ...index * more type cleaning * verbs cleaning * oops * restore verb * OpenNavigationManager command cleaning * removing navigateToDocumentSection * index... again --------- Co-authored-by: Rafael Giezendanner --- .changeset/thirty-eggs-judge.md | 5 + CODEOWNERS | 123 +- packages/app-bridge/src/AppBridgeTheme.ts | 357 --- packages/app-bridge/src/helpers/index.ts | 1 - packages/app-bridge/src/helpers/link.spec.ts | 272 -- packages/app-bridge/src/helpers/link.ts | 70 - packages/app-bridge/src/index.ts | 1 - packages/app-bridge/src/react/index.ts | 11 - .../src/react/useBrandportalLink.spec.ts | 95 - .../src/react/useBrandportalLink.ts | 67 - .../react/useCategorizedDocumentPages.spec.ts | 22 +- .../src/react/useCategorizedDocumentPages.ts | 8 +- .../app-bridge/src/react/useCoverPage.spec.ts | 120 - packages/app-bridge/src/react/useCoverPage.ts | 67 - .../src/react/useDocumentCategories.spec.ts | 30 +- .../src/react/useDocumentCategories.ts | 5 +- .../app-bridge/src/react/useDocumentGroups.ts | 5 +- .../src/react/useDocumentNavigation.spec.ts | 135 - .../src/react/useDocumentNavigation.ts | 71 - .../src/react/useDocumentPageTargets.spec.ts | 3 +- .../src/react/useDocumentPageTargets.ts | 8 +- .../src/react/useDocumentSection.spec.ts | 4 +- .../src/react/useDocumentSection.ts | 6 +- .../src/react/useDocumentTargets.spec.ts | 3 +- .../src/react/useDocumentTargets.tsx | 6 +- .../app-bridge/src/react/useEditorState.ts | 3 +- .../src/react/useGroupedDocuments.spec.ts | 18 +- .../src/react/useGroupedDocuments.ts | 5 +- .../src/react/useGuidelineActions.spec.ts | 2178 ----------------- .../src/react/useGuidelineActions.ts | 676 ----- .../app-bridge/src/react/useLanguage.spec.ts | 68 - packages/app-bridge/src/react/useLanguage.ts | 27 - .../src/react/useNavigationManager.spec.ts | 27 - .../src/react/useNavigationManager.ts | 11 - .../src/react/usePageTemplateSettings.spec.ts | 337 --- .../src/react/usePageTemplateSettings.ts | 118 - .../src/react/usePortalNavigation.spec.ts | 314 --- .../src/react/usePortalNavigation.ts | 158 -- .../src/react/useTemplateAssets.spec.ts | 445 ---- .../app-bridge/src/react/useTemplateAssets.ts | 208 -- .../src/react/useThemeAssets.spec.ts | 163 -- .../app-bridge/src/react/useThemeAssets.ts | 111 - .../src/react/useThemeSettings.spec.ts | 83 - .../app-bridge/src/react/useThemeSettings.ts | 54 - .../react/useUncategorizedDocumentPages.ts | 5 +- .../src/react/useUngroupedDocuments.ts | 8 +- .../src/registries/api/ApiMethodRegistry.ts | 4 - .../api/GetDocumentNavigation.spec.ts | 23 - .../registries/api/GetDocumentNavigation.ts | 16 - .../api/GetPortalNavigation.spec.ts | 12 - .../src/registries/api/GetPortalNavigation.ts | 7 - .../app-bridge/src/registries/api/index.ts | 2 - .../registries/commands/CommandRegistry.ts | 4 - .../commands/NavigateToDocumentSection.ts | 12 - .../registries/commands/NavigationManager.ts | 9 - .../src/registries/commands/index.ts | 2 - .../app-bridge/src/registries/verbs/Verbs.ts | 2 +- .../src/tests/AppBridgeBlockStub.ts | 75 +- .../src/tests/AppBridgeThemeStub.ts | 442 ---- .../src/tests/BrandportalLinkApiDummy.ts | 15 - .../src/tests/BrandportalLinkDummy.ts | 12 - .../app-bridge/src/tests/CoverPageDummy.ts | 7 +- .../src/tests/DocumentNavigationTreeDummy.ts | 140 -- .../tests/GuidelineSearchResultApiDummy.ts | 29 - .../src/tests/GuidelineSearchResultDummy.ts | 12 - .../src/tests/PortalNavigationTreeDummy.ts | 234 -- packages/app-bridge/src/tests/index.ts | 8 - .../src/tests/withAppBridgeThemeStubs.tsx | 24 - .../app-bridge/src/types/BrandportalLink.ts | 11 - packages/app-bridge/src/types/CoverPage.ts | 9 - .../app-bridge/src/types/DispatchHandler.ts | 1 - packages/app-bridge/src/types/Document.ts | 2 +- packages/app-bridge/src/types/Emitter.ts | 37 - packages/app-bridge/src/types/Guideline.ts | 93 - .../src/types/GuidelineSearchResult.ts | 35 - packages/app-bridge/src/types/Language.ts | 23 - packages/app-bridge/src/types/Project.ts | 48 - .../app-bridge/src/types/ThemeTemplate.ts | 3 - packages/app-bridge/src/types/index.ts | 6 - 79 files changed, 140 insertions(+), 7731 deletions(-) create mode 100644 .changeset/thirty-eggs-judge.md delete mode 100644 packages/app-bridge/src/AppBridgeTheme.ts delete mode 100644 packages/app-bridge/src/helpers/link.spec.ts delete mode 100644 packages/app-bridge/src/helpers/link.ts delete mode 100644 packages/app-bridge/src/react/useBrandportalLink.spec.ts delete mode 100644 packages/app-bridge/src/react/useBrandportalLink.ts delete mode 100644 packages/app-bridge/src/react/useCoverPage.spec.ts delete mode 100644 packages/app-bridge/src/react/useCoverPage.ts delete mode 100644 packages/app-bridge/src/react/useDocumentNavigation.spec.ts delete mode 100644 packages/app-bridge/src/react/useDocumentNavigation.ts delete mode 100644 packages/app-bridge/src/react/useGuidelineActions.spec.ts delete mode 100644 packages/app-bridge/src/react/useGuidelineActions.ts delete mode 100644 packages/app-bridge/src/react/useLanguage.spec.ts delete mode 100644 packages/app-bridge/src/react/useLanguage.ts delete mode 100644 packages/app-bridge/src/react/useNavigationManager.spec.ts delete mode 100644 packages/app-bridge/src/react/useNavigationManager.ts delete mode 100644 packages/app-bridge/src/react/usePageTemplateSettings.spec.ts delete mode 100644 packages/app-bridge/src/react/usePageTemplateSettings.ts delete mode 100644 packages/app-bridge/src/react/usePortalNavigation.spec.ts delete mode 100644 packages/app-bridge/src/react/usePortalNavigation.ts delete mode 100644 packages/app-bridge/src/react/useTemplateAssets.spec.ts delete mode 100644 packages/app-bridge/src/react/useTemplateAssets.ts delete mode 100644 packages/app-bridge/src/react/useThemeAssets.spec.ts delete mode 100644 packages/app-bridge/src/react/useThemeAssets.ts delete mode 100644 packages/app-bridge/src/react/useThemeSettings.spec.ts delete mode 100644 packages/app-bridge/src/react/useThemeSettings.ts delete mode 100644 packages/app-bridge/src/registries/api/GetDocumentNavigation.spec.ts delete mode 100644 packages/app-bridge/src/registries/api/GetDocumentNavigation.ts delete mode 100644 packages/app-bridge/src/registries/api/GetPortalNavigation.spec.ts delete mode 100644 packages/app-bridge/src/registries/api/GetPortalNavigation.ts delete mode 100644 packages/app-bridge/src/registries/commands/NavigateToDocumentSection.ts delete mode 100644 packages/app-bridge/src/registries/commands/NavigationManager.ts delete mode 100644 packages/app-bridge/src/tests/AppBridgeThemeStub.ts delete mode 100644 packages/app-bridge/src/tests/BrandportalLinkApiDummy.ts delete mode 100644 packages/app-bridge/src/tests/BrandportalLinkDummy.ts delete mode 100644 packages/app-bridge/src/tests/DocumentNavigationTreeDummy.ts delete mode 100644 packages/app-bridge/src/tests/GuidelineSearchResultApiDummy.ts delete mode 100644 packages/app-bridge/src/tests/GuidelineSearchResultDummy.ts delete mode 100644 packages/app-bridge/src/tests/PortalNavigationTreeDummy.ts delete mode 100644 packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx delete mode 100644 packages/app-bridge/src/types/BrandportalLink.ts delete mode 100644 packages/app-bridge/src/types/Guideline.ts delete mode 100644 packages/app-bridge/src/types/GuidelineSearchResult.ts delete mode 100644 packages/app-bridge/src/types/Language.ts delete mode 100644 packages/app-bridge/src/types/Project.ts delete mode 100644 packages/app-bridge/src/types/ThemeTemplate.ts diff --git a/.changeset/thirty-eggs-judge.md b/.changeset/thirty-eggs-judge.md new file mode 100644 index 000000000..777c3ba7f --- /dev/null +++ b/.changeset/thirty-eggs-judge.md @@ -0,0 +1,5 @@ +--- +"@frontify/app-bridge": patch +--- + +refactor: Removed `appBridgeTheme` from the `@frontify/app-bridge` package. It is now provided via the `@frontify/app-bridge-theme` package. diff --git a/CODEOWNERS b/CODEOWNERS index 4173bede7..79bea3388 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -2,126 +2,9 @@ packages/app-bridge/src/types @Frontify/frontend-platform -## App Bridge Errors -packages/app-bridge/src/errors/HttpClientError.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation - -## App Bridge Helpers - -packages/app-bridge/src/helpers/ @Frontify/themes-and-navigation - -## React Hooks - -packages/app-bridge/src/react/useAssetBulkDownload.spec.tsx @Frontify/content-and-blocks -packages/app-bridge/src/react/useAssetBulkDownload.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useAssetChooser.spec.tsx @Frontify/content-and-blocks -packages/app-bridge/src/react/useAssetChooser.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useAssetUpload.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useAssetViewer.spec.tsx @Frontify/content-and-blocks -packages/app-bridge/src/react/useAssetViewer.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useBlockAssets.spec.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useBlockAssets.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useBlockSettings.spec.tsx @Frontify/content-and-blocks -packages/app-bridge/src/react/useBlockSettings.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useBlockTemplates.spec.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useBlockTemplates.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useBrandportalLink.spec.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useBrandportalLink.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useCategorizedDocumentPages.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useCategorizedDocumentPages.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useColorPalettes.spec.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useColorPalettes.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useColors.spec.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useColors.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useCoverPage.spec.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useCoverPage.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useDocumentCategories.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useDocumentCategories.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useDocumentGroups.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useDocumentGroups.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useDocumentPageTargets.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useDocumentPageTargets.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useDocumentSection.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useDocumentTargets.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useDocumentTargets.tsx @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useEditorState.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useFileInput.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useFileUpload.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useGroupedDocuments.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useGroupedDocuments.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useGuidelineActions.spec.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useGuidelineActions.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useLanguage.spec.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useLanguage.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useNavigationManager.spec.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useNavigationManager.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/usePageTemplateSettings.spec.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/usePageTemplateSettings.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/usePrivacySettings.spec.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/usePrivacySettings.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useReadyForPrint.spec.tsx @Frontify/content-and-blocks -packages/app-bridge/src/react/useReadyForPrint.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useTemplateAssets.spec.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useTemplateAssets.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useTemplateChooser.spec.tsx @Frontify/content-and-blocks -packages/app-bridge/src/react/useTemplateChooser.ts @Frontify/content-and-blocks -packages/app-bridge/src/react/useThemeAssets.spec.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useThemeAssets.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useThemeSettings.spec.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useThemeSettings.ts @Frontify/themes-and-navigation -packages/app-bridge/src/react/useUncategorizedDocumentPages.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useUncategorizedDocumentPages.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useUngroupedDocuments.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/react/useUngroupedDocuments.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation - -### App Bridge registries api - -packages/app-bridge/src/registries/api/GetAssetBulkDownloadToken.ts @Frontify/content-and-blocks -packages/app-bridge/src/registries/api/GetCurrentUser.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/registries/api/GetCurrentUser.spec.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation - -### App Bridge registries commands -packages/app-bridge/src/registries/commands/AssetChooser.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/registries/commands/AssetViewer.ts @Frontify/content-and-blocks -packages/app-bridge/src/registries/commands/DownloadAsset.ts @Frontify/content-and-blocks -packages/app-bridge/src/registries/commands/NavigationManager.ts @Frontify/themes-and-navigation -packages/app-bridge/src/registries/commands/NewPublication.ts @Frontify/content-and-blocks -packages/app-bridge/src/registries/commands/TemplateChooser.ts @Frontify/content-and-blocks - -### App Bridge registries events - -packages/app-bridge/src/registries/events/ @Frontify/content-and-blocks @Frontify/themes-and-navigation - -### App Bridge registries verbs - -packages/app-bridge/src/registries/verbs/ @Frontify/content-and-blocks @Frontify/themes-and-navigation - -## App Bridge repositories - -packages/app-bridge/src/repositories/ @Frontify/content-and-blocks - -## App Bridge Tests - -packages/app-bridge/src/tests/AppBridgeBlockStub.ts @Frontify/content-and-blocks -packages/app-bridge/src/tests/AppBridgeThemeStub.ts @Frontify/themes-and-navigation -packages/app-bridge/src/tests/withAppBridgeBlockStubs.tsx @Frontify/content-and-blocks -packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx @Frontify/themes-and-navigation - -## App Bridge Utilities - -packages/app-bridge/src/utilities/httpClient.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/utilities/object.spec.ts @Frontify/content-and-blocks -packages/app-bridge/src/utilities/object.ts @Frontify/content-and-blocks - -## App Bridge Worker - -packages/app-bridge/src/worker/ @Frontify/content-and-blocks - -## App Bridge Interfaces - -packages/app-bridge/src/AppBridge.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation -packages/app-bridge/src/AppBridgeBlock.ts @Frontify/content-and-blocks -packages/app-bridge/src/AppBridgeTheme.ts @Frontify/themes-and-navigation -packages/app-bridge/src/window.d.ts @Frontify/content-and-blocks @Frontify/themes-and-navigation +## App Bridge + +packages/app-bridge/ @Frontify/content-and-blocks # CLI diff --git a/packages/app-bridge/src/AppBridgeTheme.ts b/packages/app-bridge/src/AppBridgeTheme.ts deleted file mode 100644 index d6470c659..000000000 --- a/packages/app-bridge/src/AppBridgeTheme.ts +++ /dev/null @@ -1,357 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { - type ApiHandlerParameter, - type ApiMethodNameValidator, - type ApiReturn, - type AppBridge, - type CommandNameValidator, - type ContextAsEventName, - type ContextReturn, - type DispatchHandlerParameter, - type EventCallbackParameter, - type EventNameParameter, - type EventNameValidator, - type EventUnsubscribeFunction, - type StateAsEventName, - type StateReturn, -} from './AppBridge'; -import { type ApiMethodRegistry } from './registries/api/ApiMethodRegistry'; -import { type CommandRegistry } from './registries/commands/CommandRegistry'; -import { type EventRegistry } from './registries/events/EventRegistry'; -import { - type Asset, - type AssetChooserOptions, - type BrandportalLink, - type Color, - type ColorPalette, - type CoverPage, - type CoverPageCreate, - type CoverPageUpdate, - type CoverPageUpdateLegacy, - type Document, - type DocumentCategory, - type DocumentCategoryCreate, - type DocumentCategoryUpdate, - type DocumentGroup, - type DocumentGroupCreate, - type DocumentGroupUpdate, - type DocumentLibraryCreate, - type DocumentLibraryUpdate, - type DocumentLinkCreate, - type DocumentLinkUpdate, - type DocumentPage, - type DocumentPageCreate, - type DocumentPageTargets, - type DocumentPageUpdate, - type DocumentSection, - type DocumentStandardCreate, - type DocumentStandardUpdate, - type DocumentTargets, - type GuidelineSearchResult, - type Language, - type TargetsUpdate, - type ThemeTemplate, -} from './types'; - -export type ThemeApiMethod = ApiMethodNameValidator< - Pick ->; - -export type ThemeCommand = CommandNameValidator< - Pick< - CommandRegistry, - | 'closeAssetChooser' - | 'openAssetChooser' - | 'openNavigationManager' - | 'openSearchDialog' - | 'closeSearchDialog' - | 'navigateToDocumentSection' - > ->; - -export type TemplateContext = { templateId: string; type: ThemeTemplate } & ( - | { type: 'documentPage'; document: Document; documentPage: DocumentPage } - | { type: 'library'; document: Document } - | { type: 'cover'; coverPage: CoverPage } -); - -export type ThemeState = { - settings: Record; - assets: Record; -}; - -export type ThemeContext = { - brandId: number; - projectId: number; - portalId: number; - portalToken: string | null; - currentLanguage: string; - defaultLanguage: string; - isEditing: boolean; - isPublicLink: boolean; - isAuthenticated: boolean; - isSearchDialogOpen: boolean; - languages: Language[]; - template: TemplateContext | null; -}; - -export type ThemeEvent = EventNameValidator< - Pick & - StateAsEventName & - ContextAsEventName ->; - -export interface AppBridgeTheme< - State extends ThemeState = ThemeState, - Context extends ThemeContext = ThemeContext, - Event extends ThemeEvent = ThemeEvent, -> extends AppBridge { - api( - apiHandler: ApiHandlerParameter, - ): ApiReturn; - - dispatch( - dispatchHandler: DispatchHandlerParameter, - ): Promise; - - state(): StateReturn; - state(key: Key): StateReturn; - state(key?: keyof State | void): unknown; - - context(): ContextReturn; - context(key: Key): ContextReturn; - context(key?: keyof Context | void): unknown; - - subscribe( - eventName: EventNameParameter, - callback: EventCallbackParameter, - ): EventUnsubscribeFunction; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.context('portalId').get()` instead. - */ - getPortalId(): number; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.context('brandId').get()` instead. - */ - getBrandId(): number; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.dispatch(openNavigationManager())` for opening the Navigation Manager. - */ - openNavigationManager(): void; - - getCoverPageTemplateSettings(): Promise; - - updateCoverPageTemplateSettings(settings: Record): Promise; - - getThemeSettings(): Promise; - - updateThemeSettings>(settings: ThemeSettings): Promise; - - getDocumentPageTemplateSettings(documentPageId: number): Promise; - - updateDocumentPageTemplateSettings(documentPageId: number, settings: Record): Promise; - - addAssetIdsToCoverPageTemplateAssetKey(key: string, assetIds: number[]): Promise>; - - getCoverPageTemplateAssets(): Promise>; - - deleteAssetIdsFromCoverPageTemplateAssetKey(key: string, assetIds: number[]): Promise; - - addAssetIdsToThemeAssetKey( - key: string, - assetIds: number[], - template: ThemeTemplate, - ): Promise>; - - getThemeAssets(template: ThemeTemplate): Promise>; - - deleteAssetIdsFromThemeAssetKey(key: string, assetIds: number[], template: ThemeTemplate): Promise; - - addAssetIdsToLibraryPageTemplateAssetKey( - documentId: number, - key: string, - assetIds: number[], - ): Promise>; - - getLibraryPageTemplateAssets(documentId: number): Promise>; - - deleteAssetIdsFromLibraryPageTemplateAssetKey(documentId: number, key: string, assetIds: number[]): Promise; - - addAssetIdsToDocumentPageTemplateAssetKey( - documentPageId: number, - key: string, - assetIds: number[], - ): Promise>; - - getDocumentPageTemplateAssets(documentPageId: number): Promise>; - - deleteAssetIdsFromDocumentPageTemplateAssetKey( - documentPageId: number, - key: string, - assetIds: number[], - ): Promise; - - getLibraryPageTemplateSettings(documentId: number): Promise; - - updateLibraryPageTemplateSettings(documentId: number, settings: Record): Promise; - - createLink(link: DocumentLinkCreate): Promise; - - updateLink(link: DocumentLinkUpdate): Promise; - - deleteLink(documentId: number): Promise; - - createLibrary(library: DocumentLibraryCreate): Promise; - - updateLibrary(library: DocumentLibraryUpdate): Promise; - - deleteLibrary(documentId: number): Promise; - - createStandardDocument(document: DocumentStandardCreate): Promise; - - updateStandardDocument(document: DocumentStandardUpdate): Promise; - - deleteStandardDocument(id: number): Promise; - - moveDocument(documentId: number, position: number, newDocumentGroupId?: number): Promise; - - createDocumentGroup(documentGroup: DocumentGroupCreate): Promise; - - updateDocumentGroup(documentGroup: DocumentGroupUpdate): Promise; - - deleteDocumentGroup(documentGroupId: number): Promise; - - moveDocumentGroup(documentGroupId: number, position: number): Promise; - - createDocumentCategory(category: DocumentCategoryCreate): Promise; - - updateDocumentCategory(category: DocumentCategoryUpdate): Promise; - - deleteDocumentCategory(documentCategoryId: number): Promise; - - moveDocumentCategory(documentCategoryId: number, documentId: number, position: number): Promise; - - createDocumentPage(documentPage: DocumentPageCreate): Promise; - - /** - * A method for page update - * - * @param documentPage - {@link DocumentPageUpdate} object - * @requires id - Indicates page identifier. - * - * - * and at least one of - * - * @property title - Indicates title of a page. - * @property documentId - Indicates to witch document the page belongs to. - * @property categoryId - Indicates to witch category the page belongs to. - * @property visibility - Indicates whether the page is visible only to the editor or everyone. - * @property linkUrl - Indicates whether the page is link or not. - */ - updateDocumentPage(documentPage: DocumentPageUpdate): Promise; - - deleteDocumentPage(documentPageId: number): Promise; - - moveDocumentPage( - documentPageId: number, - documentId: number, - position?: number, - documentCategoryId?: number, - ): Promise; - - duplicateDocumentPage(documentPageId: number): Promise; - - createCoverPage(coverPage: CoverPageCreate): Promise; - - updateCoverPage(coverPage: CoverPageUpdate): Promise; - - /** - * @deprecated legacy method, should be removed once new endpoint is available - */ - updateLegacyCoverPage(coverPage: CoverPageUpdateLegacy): Promise; - - deleteCoverPage(): Promise; - - updateBrandportalLink(brandportalLink: Partial): Promise | null>; - - getCoverPage(): Promise; - - getBrandportalLink(): Promise; - - getUngroupedDocuments(): Promise; - - updateDocumentTargets(targetIds: number[], documentIds: number[]): Promise; - - updateDocumentPageTargets(targetIds: number[], documentPageIds: number[]): Promise; - - /** - * Search in the current Guideline for a given query. - * @param query - The query to search for. - * @param order - The order in which the results should be returned. Defaults to 'relevance'. - */ - searchInGuideline(query: string, order?: 'relevance' | 'newest' | 'oldest'): Promise; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.dispatch(openAssetChooser(options))` to open the asset chooser - * and `appBridge.subscribe('assetsChosen', callback)` to subscribe to the asset chosen event. - */ - openAssetChooser(callback: (selectedAssets: Asset[]) => void, options?: AssetChooserOptions): void; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.dispatch(closeAssetChooser())` instead. - */ - closeAssetChooser(): void; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.context('projectId').get()` instead. - */ - getProjectId(): number; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.context('isEditing').get()` instead. - */ - getEditorState(): boolean; - - /** - * @deprecated This will be removed in version 4.0.0 of `@frontify/app-bridge` - * Use `appBridge.context('language').get()` instead. - */ - getTranslationLanguage(): string; - - getColorPalettes(): Promise; - - getColorsByColorPaletteId(colorPaletteId: number): Promise; - - getAllDocuments(): Promise; - - getUngroupedDocuments(): Promise; - - getDocumentsByDocumentGroupId(documentGroupId: number): Promise; - - getDocumentGroups(): Promise; - - getDocumentPagesByDocumentId(documentId: number): Promise; - - getDocumentPagesByDocumentCategoryId(documentCategoryId: number): Promise; - - getDocumentCategoriesByDocumentId(documentId: number): Promise; - - getUncategorizedDocumentPagesByDocumentId(documentId: number): Promise; - - getDocumentSectionsByDocumentPageId(documentPageId: number): Promise; - - getDocumentTargets(documentId: number): Promise; - - getDocumentPageTargets(documentPageId: number): Promise; -} diff --git a/packages/app-bridge/src/helpers/index.ts b/packages/app-bridge/src/helpers/index.ts index 0e51a26f7..3278ad31a 100644 --- a/packages/app-bridge/src/helpers/index.ts +++ b/packages/app-bridge/src/helpers/index.ts @@ -1,4 +1,3 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -export * from './link'; export * from './navigation'; diff --git a/packages/app-bridge/src/helpers/link.spec.ts b/packages/app-bridge/src/helpers/link.spec.ts deleted file mode 100644 index 30605a1eb..000000000 --- a/packages/app-bridge/src/helpers/link.spec.ts +++ /dev/null @@ -1,272 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it } from 'vitest'; - -import { DocumentCategoryDummy, DocumentDummy, DocumentPageDummy } from '../tests'; -import { CoverPageDummy } from '../tests/CoverPageDummy'; - -import { computeCoverPageLink, computeDocumentLink, computeDocumentPageLink } from './link'; - -const PORTAL_ID = 23451; -const PORTAL_TOKEN = 'weisdfjsdf'; -const DOCUMENT_ID = 2937; -const DOCUMENT_CATEGORY_ID = 2314; -const DOCUMENT_PAGE_ID = 9382; - -describe('computeCoverPageLink', () => { - it('should return the correct link when private', () => { - const coverPage = CoverPageDummy.with(PORTAL_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeCoverPageLink({ coverPage, language, portalToken: null }); - - expect(result).toEqual(`/hub/${PORTAL_ID}`); - }); - - it('should return the correct link when private with same language as default', () => { - const coverPage = CoverPageDummy.with(PORTAL_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeCoverPageLink({ coverPage, language, portalToken: null }); - - expect(result).toEqual(`/hub/${PORTAL_ID}`); - }); - - it('should return the correct link when private with different language from default', () => { - const coverPage = { ...CoverPageDummy.with(PORTAL_ID), url: `/hub/${PORTAL_ID}/fr` }; - const language = { currentLanguage: 'fr', defaultLanguage: 'en' }; - - const result = computeCoverPageLink({ coverPage, language, portalToken: null }); - - expect(result).toEqual(`/hub/${PORTAL_ID}/fr`); - }); - - it('should return the correct link when publicly shared', () => { - const coverPage = CoverPageDummy.with(PORTAL_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeCoverPageLink({ coverPage, language, portalToken: PORTAL_TOKEN }); - - expect(result).toEqual(`/d/${PORTAL_TOKEN}`); - }); - - it('should return the correct link when publicly shared with same language as default', () => { - const coverPage = CoverPageDummy.with(PORTAL_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeCoverPageLink({ coverPage, language, portalToken: PORTAL_TOKEN }); - - expect(result).toEqual(`/d/${PORTAL_TOKEN}`); - }); - - it('should return the correct link when publicly shared with different language from default', () => { - const coverPage = CoverPageDummy.with(PORTAL_ID); - const language = { currentLanguage: 'fr', defaultLanguage: 'en' }; - - const result = computeCoverPageLink({ coverPage, language, portalToken: PORTAL_TOKEN }); - - expect(result).toEqual(`/d/${PORTAL_TOKEN}/fr`); - }); -}); - -describe('computeDocumentLink', () => { - it('should return the correct link when private', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentLink({ document, language, portalToken: null }); - expect(result).toEqual(`/document/${DOCUMENT_ID}`); - }); - - it('should return the correct link when private with same language as default', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentLink({ document, language, portalToken: null }); - expect(result).toEqual(`/document/${DOCUMENT_ID}`); - }); - - it('should return the correct link when private with different language from default', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const language = { currentLanguage: 'fr', defaultLanguage: 'en' }; - - const result = computeDocumentLink({ document, language, portalToken: null }); - expect(result).toEqual(`/document/${DOCUMENT_ID}/fr`); - }); - - it('should return the correct link when publicly shared', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentLink({ document, language, portalToken: PORTAL_TOKEN }); - expect(result).toEqual(`/d/${PORTAL_TOKEN}/${document.slug}`); - }); - - it('should return the correct link when publicly shared with same language as default', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentLink({ document, language, portalToken: PORTAL_TOKEN }); - expect(result).toEqual(`/d/${PORTAL_TOKEN}/${document.slug}`); - }); - - it('should return the correct link when publicly shared with different language from default', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const language = { currentLanguage: 'fr', defaultLanguage: 'en' }; - - const result = computeDocumentLink({ document, language, portalToken: PORTAL_TOKEN }); - expect(result).toEqual(`/d/${PORTAL_TOKEN}/fr/${document.slug}`); - }); -}); - -describe('computeDocumentPageLink', () => { - it('should return the correct link when private (without category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ document, documentPage, language, portalToken: null }); - expect(result).toEqual(`/document/${DOCUMENT_ID}#/-/${documentPage.slug}`); - }); - - it('should return the correct link when private (with category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentCategory = DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ - document, - documentCategory, - documentPage, - language, - portalToken: null, - }); - expect(result).toEqual(`/document/${DOCUMENT_ID}#/${documentCategory.slug}/${documentPage.slug}`); - }); - - it('should return the correct link when private with same language as default (without category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ document, documentPage, language, portalToken: null }); - expect(result).toEqual(`/document/${DOCUMENT_ID}#/-/${documentPage.slug}`); - }); - - it('should return the correct link when private with same language as default (with category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentCategory = DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ - document, - documentCategory, - documentPage, - language, - portalToken: null, - }); - expect(result).toEqual(`/document/${DOCUMENT_ID}#/${documentCategory.slug}/${documentPage.slug}`); - }); - - it('should return the correct link when private with different language from default (without category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'fr', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ document, documentPage, language, portalToken: null }); - expect(result).toEqual(`/document/${DOCUMENT_ID}/fr#/-/${documentPage.slug}`); - }); - - it('should return the correct link when private with different language from default (with category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentCategory = DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'fr', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ - document, - documentCategory, - documentPage, - language, - portalToken: null, - }); - expect(result).toEqual(`/document/${DOCUMENT_ID}/fr#/${documentCategory.slug}/${documentPage.slug}`); - }); - - it('should return the correct link when publicly shared (without category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ document, documentPage, language, portalToken: PORTAL_TOKEN }); - expect(result).toEqual(`/d/${PORTAL_TOKEN}/${document.slug}#/-/${documentPage.slug}`); - }); - - it('should return the correct link when publicly shared (with category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentCategory = DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ - document, - documentCategory, - documentPage, - language, - portalToken: PORTAL_TOKEN, - }); - expect(result).toEqual(`/d/${PORTAL_TOKEN}/${document.slug}#/${documentCategory.slug}/${documentPage.slug}`); - }); - - it('should return the correct link when publicly shared with same language as default (without category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ document, documentPage, language, portalToken: PORTAL_TOKEN }); - expect(result).toEqual(`/d/${PORTAL_TOKEN}/${document.slug}#/-/${documentPage.slug}`); - }); - - it('should return the correct link when publicly shared with same language as default (with category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentCategory = DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'en', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ - document, - documentCategory, - documentPage, - language, - portalToken: PORTAL_TOKEN, - }); - expect(result).toEqual(`/d/${PORTAL_TOKEN}/${document.slug}#/${documentCategory.slug}/${documentPage.slug}`); - }); - - it('should return the correct link when publicly shared with different language from default (without category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'fr', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ document, documentPage, language, portalToken: PORTAL_TOKEN }); - expect(result).toEqual(`/d/${PORTAL_TOKEN}/fr/${document.slug}#/-/${documentPage.slug}`); - }); - - it('should return the correct link when publicly shared with different language from default (with category)', () => { - const document = DocumentDummy.with(DOCUMENT_ID); - const documentCategory = DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID); - const documentPage = DocumentPageDummy.with(DOCUMENT_PAGE_ID); - const language = { currentLanguage: 'fr', defaultLanguage: 'en' }; - - const result = computeDocumentPageLink({ - document, - documentCategory, - documentPage, - language, - portalToken: PORTAL_TOKEN, - }); - expect(result).toEqual(`/d/${PORTAL_TOKEN}/fr/${document.slug}#/${documentCategory.slug}/${documentPage.slug}`); - }); -}); diff --git a/packages/app-bridge/src/helpers/link.ts b/packages/app-bridge/src/helpers/link.ts deleted file mode 100644 index f66e95d1a..000000000 --- a/packages/app-bridge/src/helpers/link.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type CoverPage, type Document, type DocumentCategory, type DocumentPage } from '../types'; - -export const computeCoverPageLink = ({ - coverPage, - language, - portalToken, -}: { - coverPage: CoverPage; - language: { - currentLanguage: string; - defaultLanguage: string; - }; - portalToken: Nullable; -}) => { - const languageUrlPart = language.currentLanguage === language.defaultLanguage ? '' : `/${language.currentLanguage}`; - - if (portalToken) { - return `/d/${portalToken}${languageUrlPart}`; - } - - return coverPage.url; -}; - -export const computeDocumentLink = ({ - document, - language, - portalToken, -}: { - document: Document; - language: { - currentLanguage: string; - defaultLanguage: string; - }; - portalToken: Nullable; -}) => { - const languageUrlPart = language.currentLanguage === language.defaultLanguage ? '' : `/${language.currentLanguage}`; - - if (portalToken) { - return `/d/${portalToken}${languageUrlPart}/${document.slug}`; - } - - return `/document/${document.id}${languageUrlPart}`; -}; - -export const computeDocumentPageLink = ({ - documentPage, - language, - portalToken, - document, - documentCategory, -}: { - documentPage: DocumentPage; - document: Document; - documentCategory?: DocumentCategory; - language: { - currentLanguage: string; - defaultLanguage: string; - }; - portalToken: Nullable; -}) => { - const categoryUrlPart = documentCategory ? `${documentCategory.slug}/` : '-/'; - const languageUrlPart = language.currentLanguage === language.defaultLanguage ? '' : `/${language.currentLanguage}`; - if (portalToken) { - return `/d/${portalToken}${languageUrlPart}/${document.slug}#/${categoryUrlPart}${documentPage.slug}`; - } - - return `/document/${document.id}${languageUrlPart}#/${categoryUrlPart}${documentPage.slug}`; -}; diff --git a/packages/app-bridge/src/index.ts b/packages/app-bridge/src/index.ts index 7d3cd7209..2fc879359 100644 --- a/packages/app-bridge/src/index.ts +++ b/packages/app-bridge/src/index.ts @@ -6,7 +6,6 @@ enableMapSet(); export * from './AppBridge'; export * from './AppBridgeBlock'; -export * from './AppBridgeTheme'; export * from './errors'; export * from './helpers'; export * from './registries'; diff --git a/packages/app-bridge/src/react/index.ts b/packages/app-bridge/src/react/index.ts index d1e386ae7..e0f943624 100644 --- a/packages/app-bridge/src/react/index.ts +++ b/packages/app-bridge/src/react/index.ts @@ -8,11 +8,9 @@ export * from './useAssetViewer'; export * from './useBlockAssets'; export * from './useBlockSettings'; export * from './useBlockTemplates'; -export * from './useBrandportalLink'; export * from './useCategorizedDocumentPages'; export * from './useColorPalettes'; export * from './useColors'; -export * from './useCoverPage'; export * from './useDocumentCategories'; export * from './useDocumentGroups'; export * from './useDocumentPageTargets'; @@ -22,17 +20,8 @@ export * from './useEditorState'; export * from './useFileInput'; export * from './useFileUpload'; export * from './useGroupedDocuments'; -export * from './useGuidelineActions'; -export * from './useLanguage'; -export * from './useNavigationManager'; -export * from './usePageTemplateSettings'; export * from './usePrivacySettings'; export * from './useReadyForPrint'; -export * from './useTemplateAssets'; export * from './useTemplateChooser'; -export * from './useThemeAssets'; -export * from './useThemeSettings'; export * from './useUncategorizedDocumentPages'; export * from './useUngroupedDocuments'; -export * from './usePortalNavigation'; -export * from './useDocumentNavigation'; diff --git a/packages/app-bridge/src/react/useBrandportalLink.spec.ts b/packages/app-bridge/src/react/useBrandportalLink.spec.ts deleted file mode 100644 index 8839cb0a9..000000000 --- a/packages/app-bridge/src/react/useBrandportalLink.spec.ts +++ /dev/null @@ -1,95 +0,0 @@ -// @vitest-environment happy-dom - -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { act, renderHook } from '@testing-library/react'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -import { BrandportalLinkDummy, getAppBridgeThemeStub } from '../tests'; - -import { useBrandportalLink } from './useBrandportalLink'; - -describe('useBrandportalLink', () => { - afterEach(() => { - vi.restoreAllMocks(); - }); - - it('should return the brandportal link from appBridge', async () => { - const appBridge = getAppBridgeThemeStub(); - - const brandportalLink = BrandportalLinkDummy.with(); - appBridge.getBrandportalLink.resolves(brandportalLink); - - const { result } = renderHook(() => useBrandportalLink(appBridge)); - - expect(result.current.brandportalLink).toBe(null); - - await act(async () => { - await appBridge.getBrandportalLink(); - }); - - expect(result.current.brandportalLink).toEqual(brandportalLink); - }); - - it('should update the brandportal link when an event is emitted', () => { - const appBridge = getAppBridgeThemeStub(); - const { result } = renderHook(() => useBrandportalLink(appBridge)); - - const updatedBrandportalLink = BrandportalLinkDummy.with({ - label: 'Updated Brandportal Link', - }); - - act(() => { - window.emitter.emit('AppBridge:GuidelineBrandportalLink:Action', { - action: 'update', - brandportalLink: updatedBrandportalLink, - }); - }); - - expect(result.current.brandportalLink).toEqual(updatedBrandportalLink); - }); - - it('should not update the brandportal link when an event with an invalid action is emitted', () => { - const appBridge = getAppBridgeThemeStub(); - const { result } = renderHook(() => useBrandportalLink(appBridge)); - - result.current.brandportalLink = BrandportalLinkDummy.with(); - - act(() => { - window.emitter.emit('AppBridge:GuidelineBrandportalLink:Action', { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - action: 'invalid' as any, - brandportalLink: { enabled: false, label: '', url: '' }, - }); - }); - - expect(result.current.brandportalLink).toEqual(BrandportalLinkDummy.with()); - }); - - it('should start fetching only when it is enabled', () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getBrandportalLink'); - - let enabled = false; - - const { rerender } = renderHook(() => useBrandportalLink(appBridge, { enabled })); - - expect(spy).not.toBeCalled(); - - enabled = true; - rerender(); - - expect(spy).toBeCalled(); - }); - - it('should unregister when unmounted', () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(window.emitter, 'off'); - - const { unmount } = renderHook(() => useBrandportalLink(appBridge)); - - unmount(); - - expect(spy).toBeCalledWith('AppBridge:GuidelineBrandportalLink:Action', expect.any(Function)); - }); -}); diff --git a/packages/app-bridge/src/react/useBrandportalLink.ts b/packages/app-bridge/src/react/useBrandportalLink.ts deleted file mode 100644 index 296c622be..000000000 --- a/packages/app-bridge/src/react/useBrandportalLink.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useEffect, useState } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { type BrandportalLink, type EmitterAction } from '../types'; - -const defaultState: BrandportalLink = { - enabled: false, - label: '', - url: '', -}; - -export type UseBrandportalLinkReturnType = { - brandportalLink: Nullable; - isLoading: boolean; -}; - -type Options = { - /** - * Whether it should fetch on mount. - */ - enabled?: boolean; -}; - -export const useBrandportalLink = ( - appBridge: AppBridgeTheme, - options: Options = { enabled: true }, -): UseBrandportalLinkReturnType => { - const [brandportalLink, setBrandportalLink] = useState>(null); - const [isLoading, setIsLoading] = useState(true); - - useEffect(() => { - const fetchBrandportalLink = async () => { - setIsLoading(true); - setBrandportalLink(await appBridge.getBrandportalLink()); - setIsLoading(false); - }; - - if (options.enabled) { - fetchBrandportalLink().catch(console.error); - } - }, [appBridge, options.enabled]); - - useEffect(() => { - const updateBrandportalLinkFromEvent = (event: { - brandportalLink: Partial; - action: Extract; - }) => { - setBrandportalLink((previousState) => { - if (event.action === 'update') { - return { ...defaultState, ...previousState, ...event.brandportalLink }; - } - - return previousState; - }); - }; - - window.emitter.on('AppBridge:GuidelineBrandportalLink:Action', updateBrandportalLinkFromEvent); - - return () => { - window.emitter.off('AppBridge:GuidelineBrandportalLink:Action', updateBrandportalLinkFromEvent); - }; - }, [appBridge]); - - return { brandportalLink, isLoading }; -}; diff --git a/packages/app-bridge/src/react/useCategorizedDocumentPages.spec.ts b/packages/app-bridge/src/react/useCategorizedDocumentPages.spec.ts index 6912bf7b7..bd21b93d4 100644 --- a/packages/app-bridge/src/react/useCategorizedDocumentPages.spec.ts +++ b/packages/app-bridge/src/react/useCategorizedDocumentPages.spec.ts @@ -5,7 +5,7 @@ import { renderHook, waitFor } from '@testing-library/react'; import { afterEach, describe, expect, it, vi } from 'vitest'; -import { DocumentPageDummy, getAppBridgeThemeStub } from '../tests'; +import { DocumentPageDummy, getAppBridgeBlockStub } from '../tests'; import { type DocumentPage } from '../types'; import { useCategorizedDocumentPages } from './useCategorizedDocumentPages'; @@ -24,7 +24,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should fetch document pages on mount', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); const { result } = renderHook(() => useCategorizedDocumentPages(appBridge, DOCUMENT_CATEGORY_ID)); @@ -45,7 +45,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should not fetch document pages on mount if not enabled', () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); const { result } = renderHook(() => @@ -58,7 +58,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should fetch document pages if it gets enabled', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); let enabled = false; @@ -90,7 +90,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should update document pages if a page is added in the category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); const DOCUMENT_PAGE = DocumentPageDummy.withFields({ @@ -137,7 +137,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should not update the document pages if a page is added in another category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); const DOCUMENT_PAGE = DocumentPageDummy.withFields({ @@ -165,7 +165,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should update document pages if a page is removed from the category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); const DOCUMENT_PAGE = DocumentPageDummy.withFields({ @@ -203,7 +203,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should not update the document pages if a page is removed from another category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); const DOCUMENT_PAGE = DocumentPageDummy.withFields({ @@ -242,7 +242,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should update document pages if a page is updated in the category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); const UPDATED_DOCUMENT_PAGE: DocumentPage = { @@ -287,7 +287,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should not update the document pages if a page is updated in another category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); const UPDATED_DOCUMENT_PAGE = DocumentPageDummy.withFields({ @@ -322,7 +322,7 @@ describe('useCategorizedDocumentPages', () => { }); it('should update document pages if a page is moved in the category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); const UPDATED_DOCUMENT_PAGE: DocumentPage = { diff --git a/packages/app-bridge/src/react/useCategorizedDocumentPages.ts b/packages/app-bridge/src/react/useCategorizedDocumentPages.ts index 3f334f6b7..fad8d9a79 100644 --- a/packages/app-bridge/src/react/useCategorizedDocumentPages.ts +++ b/packages/app-bridge/src/react/useCategorizedDocumentPages.ts @@ -4,7 +4,6 @@ import { produce } from 'immer'; import { useCallback, useEffect, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type DocumentPage, type EmitterEvents } from '../types'; import { type DocumentPageTargetEvent } from './useDocumentPageTargets'; @@ -21,7 +20,7 @@ type Options = { const sortDocumentPages = (a: DocumentPage, b: DocumentPage) => (a.sort && b.sort ? a.sort - b.sort : 0); export const useCategorizedDocumentPages = ( - appBridge: AppBridgeBlock | AppBridgeTheme, + appBridge: AppBridgeBlock, documentCategoryId: number, options: Options = { enabled: true }, ) => { @@ -161,10 +160,7 @@ const moveDocumentPage = (draft: Map, documentPage: Docume return draft; }; -const fetchDocumentPagesByDocumentCategoryId = async ( - appBridge: AppBridgeBlock | AppBridgeTheme, - documentCategoryId: number, -) => { +const fetchDocumentPagesByDocumentCategoryId = async (appBridge: AppBridgeBlock, documentCategoryId: number) => { const pages = await appBridge.getDocumentPagesByDocumentCategoryId(documentCategoryId); return new Map([...pages].sort(sortDocumentPages).map((page) => [page.id, page])); }; diff --git a/packages/app-bridge/src/react/useCoverPage.spec.ts b/packages/app-bridge/src/react/useCoverPage.spec.ts deleted file mode 100644 index c56c9563d..000000000 --- a/packages/app-bridge/src/react/useCoverPage.spec.ts +++ /dev/null @@ -1,120 +0,0 @@ -// @vitest-environment happy-dom - -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { act, renderHook, waitFor } from '@testing-library/react'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -import { CoverPageDummy, getAppBridgeThemeStub } from '../tests'; -import { type CoverPage, type CoverPageUpdate } from '../types'; - -import { useCoverPage } from './useCoverPage'; - -describe('useCoverPage', () => { - afterEach(() => { - vi.restoreAllMocks(); - }); - - it('should return the cover page from appBridge', async () => { - const appBridge = getAppBridgeThemeStub(); - - const coverPage = CoverPageDummy.with(1); - appBridge.getCoverPage.resolves(coverPage); - appBridge.context.withArgs('currentLanguage').returns({ get: () => 'en', subscribe: () => vi.fn() }); - - const { result } = renderHook(() => useCoverPage(appBridge)); - - expect(result.current.coverPage).toBe(null); - - await act(async () => { - await appBridge.getCoverPage(); - }); - - expect(result.current.coverPage).toEqual(coverPage); - }); - - it('should create the cover page when an event is emitted', async () => { - const appBridge = getAppBridgeThemeStub(); - - const coverPage = CoverPageDummy.with(243); - appBridge.getCoverPage.resolves(coverPage); - appBridge.context.withArgs('currentLanguage').returns({ get: () => 'en', subscribe: () => vi.fn() }); - - const { result } = renderHook(() => useCoverPage(appBridge)); - - act(() => { - window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { - action: 'add', - coverPage, - }); - }); - - await waitFor(() => expect(result.current.coverPage).toEqual(coverPage)); - }); - - it('should update the cover page when an event is emitted', () => { - const appBridge = getAppBridgeThemeStub(); - appBridge.context.withArgs('currentLanguage').returns({ get: () => 'en', subscribe: () => vi.fn() }); - - const { result } = renderHook(() => useCoverPage(appBridge)); - - const updatedCoverPage: CoverPageUpdate = { id: 1, title: 'Updated Cover Page' }; - - act(() => { - window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { - action: 'update', - coverPage: updatedCoverPage as CoverPage, - }); - }); - - expect(result.current.coverPage).toEqual(updatedCoverPage); - }); - - it('should set the cover page to null when an event to delete it is emitted', () => { - const appBridge = getAppBridgeThemeStub(); - appBridge.context.withArgs('currentLanguage').returns({ get: () => 'en', subscribe: () => vi.fn() }); - - const { result } = renderHook(() => useCoverPage(appBridge)); - - result.current.coverPage = null; - - act(() => { - window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { action: 'delete' }); - }); - - expect(result.current.coverPage).toBe(null); - }); - - it('should not update the cover page when an event with an invalid action is emitted', () => { - const appBridge = getAppBridgeThemeStub(); - appBridge.context.withArgs('currentLanguage').returns({ get: () => 'en', subscribe: () => vi.fn() }); - - const { result } = renderHook(() => useCoverPage(appBridge)); - - result.current.coverPage = CoverPageDummy.with(1); - - act(() => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { action: 'invalid' as any }); - }); - - expect(result.current.coverPage).toEqual(CoverPageDummy.with(1)); - }); - - it('should start fetching only when it is enabled', () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getCoverPage'); - appBridge.context.withArgs('currentLanguage').returns({ get: () => 'en', subscribe: () => vi.fn() }); - - let enabled = false; - - const { rerender } = renderHook(() => useCoverPage(appBridge, { enabled })); - - expect(spy).not.toBeCalled(); - - enabled = true; - rerender(); - - expect(spy).toBeCalled(); - }); -}); diff --git a/packages/app-bridge/src/react/useCoverPage.ts b/packages/app-bridge/src/react/useCoverPage.ts deleted file mode 100644 index 61d19f367..000000000 --- a/packages/app-bridge/src/react/useCoverPage.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useCallback, useEffect, useState } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { type CoverPage, type EmitterAction } from '../types'; - -export type UseCoverPageReturnType = { - coverPage: Nullable; - isLoading: boolean; -}; - -type Options = { - /** - * Whether it should fetch on mount. - */ - enabled?: boolean; -}; - -export const useCoverPage = ( - appBridge: AppBridgeTheme, - options: Options = { enabled: true }, -): UseCoverPageReturnType => { - const [coverPage, setCoverPage] = useState>(null); - const [isLoading, setIsLoading] = useState(true); - - const fetchCoverPage = useCallback(async () => { - setIsLoading(true); - setCoverPage(await appBridge.getCoverPage()); - setIsLoading(false); - }, [appBridge]); - - useEffect(() => { - if (options.enabled) { - fetchCoverPage().catch(console.error); - } - }, [appBridge, fetchCoverPage, options.enabled]); - - useEffect(() => { - const updateCoverPageFromEvent = (event: { action: EmitterAction; coverPage?: CoverPage }) => { - if (event.action === 'add') { - fetchCoverPage().catch(console.error); - return; - } - - setCoverPage((previousState) => { - if (event.action === 'delete') { - return null; - } - - if (event.action === 'update' && event.coverPage) { - return { ...previousState, ...event.coverPage }; - } - - return previousState; - }); - }; - - window.emitter.on('AppBridge:GuidelineCoverPage:Action', updateCoverPageFromEvent); - - return () => { - window.emitter.off('AppBridge:GuidelineCoverPage:Action', updateCoverPageFromEvent); - }; - }, [appBridge, fetchCoverPage]); - - return { coverPage, isLoading }; -}; diff --git a/packages/app-bridge/src/react/useDocumentCategories.spec.ts b/packages/app-bridge/src/react/useDocumentCategories.spec.ts index 804c46bd6..271099d7f 100644 --- a/packages/app-bridge/src/react/useDocumentCategories.spec.ts +++ b/packages/app-bridge/src/react/useDocumentCategories.spec.ts @@ -5,7 +5,7 @@ import { renderHook, waitFor } from '@testing-library/react'; import { afterEach, describe, expect, it, vi } from 'vitest'; -import { DocumentCategoryDummy, getAppBridgeThemeStub } from '../tests'; +import { DocumentCategoryDummy, getAppBridgeBlockStub } from '../tests'; import { type DocumentCategory } from '../types'; import { useDocumentCategories } from './useDocumentCategories'; @@ -24,7 +24,7 @@ describe('useDocumentCategories', () => { }); it('should fetch document categories on mount', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const { result } = renderHook(() => useDocumentCategories(appBridge, DOCUMENT_ID)); @@ -44,7 +44,7 @@ describe('useDocumentCategories', () => { }); it('should not fetch document categories on mount if not enabled', () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const { result } = renderHook(() => useDocumentCategories(appBridge, DOCUMENT_ID, { enabled: false })); @@ -55,7 +55,7 @@ describe('useDocumentCategories', () => { }); it('should fetch document categories if it gets enabled', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); let enabled = false; @@ -84,7 +84,7 @@ describe('useDocumentCategories', () => { }); it('should update document categories if a category is added', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const DOCUMENT_CATEGORY = DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages( @@ -130,7 +130,7 @@ describe('useDocumentCategories', () => { }); it('should not update document categories if a category is added to another document', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const DOCUMENT_CATEGORY = DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages( @@ -165,7 +165,7 @@ describe('useDocumentCategories', () => { }); it('should update document categories if a category is removed', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const DOCUMENT_CATEGORY_TO_DELETE = DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages( @@ -202,7 +202,7 @@ describe('useDocumentCategories', () => { }); it('should not update document categories if a category is removed from another document', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const DOCUMENT_CATEGORY_TO_DELETE = DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages( @@ -240,7 +240,7 @@ describe('useDocumentCategories', () => { }); it('should update document categories if a category is updated', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const DOCUMENT_CATEGORY_TO_UPDATE: DocumentCategory = { @@ -283,7 +283,7 @@ describe('useDocumentCategories', () => { }); it('should not update document categories if a category is updated from another document', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const DOCUMENT_CATEGORY_TO_UPDATE: DocumentCategory = { @@ -321,7 +321,7 @@ describe('useDocumentCategories', () => { }); it('should update document categories number if a document page is added to a category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const { result } = renderHook(() => useDocumentCategories(appBridge, DOCUMENT_ID)); @@ -352,7 +352,7 @@ describe('useDocumentCategories', () => { }); it('should not update document categories if a document page is added to another category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const { result } = renderHook(() => useDocumentCategories(appBridge, DOCUMENT_ID)); @@ -383,7 +383,7 @@ describe('useDocumentCategories', () => { }); it('should update document categories if a document page is removed from a category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const { result } = renderHook(() => useDocumentCategories(appBridge, DOCUMENT_ID)); @@ -414,7 +414,7 @@ describe('useDocumentCategories', () => { }); it('should not update document categories if a document page is removed from another category', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const { result } = renderHook(() => useDocumentCategories(appBridge, DOCUMENT_ID)); @@ -445,7 +445,7 @@ describe('useDocumentCategories', () => { }); it('should update document categories sort if a category is moved', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); const CATEGORY_1 = DocumentCategoryDummy.withFields({ diff --git a/packages/app-bridge/src/react/useDocumentCategories.ts b/packages/app-bridge/src/react/useDocumentCategories.ts index a644e77b3..2e82b48eb 100644 --- a/packages/app-bridge/src/react/useDocumentCategories.ts +++ b/packages/app-bridge/src/react/useDocumentCategories.ts @@ -4,7 +4,6 @@ import { produce } from 'immer'; import { useCallback, useEffect, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type DocumentCategory, type EmitterEvents } from '../types'; type DocumentPageEvent = EmitterEvents['AppBridge:GuidelineDocumentCategory:DocumentPageAction']; @@ -20,7 +19,7 @@ type Options = { const sortDocumentCategories = (a: DocumentCategory, b: DocumentCategory) => (a.sort && b.sort ? a.sort - b.sort : 0); export const useDocumentCategories = ( - appBridge: AppBridgeBlock | AppBridgeTheme, + appBridge: AppBridgeBlock, documentId: number, options: Options = { enabled: true }, ) => { @@ -186,7 +185,7 @@ const actionHandlers = { default: (documentCategories: Map) => documentCategories, }; -const fetchDocumentCategories = async (appBridge: AppBridgeBlock | AppBridgeTheme, documentId: number) => { +const fetchDocumentCategories = async (appBridge: AppBridgeBlock, documentId: number) => { const categories = await appBridge.getDocumentCategoriesByDocumentId(documentId); return new Map([...categories].sort(sortDocumentCategories).map((category) => [category.id, category])); }; diff --git a/packages/app-bridge/src/react/useDocumentGroups.ts b/packages/app-bridge/src/react/useDocumentGroups.ts index f1eaa586e..4e2430141 100644 --- a/packages/app-bridge/src/react/useDocumentGroups.ts +++ b/packages/app-bridge/src/react/useDocumentGroups.ts @@ -4,7 +4,6 @@ import { produce } from 'immer'; import { useCallback, useEffect, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type DocumentGroup, type EmitterEvents } from '../types'; type DocumentGroupDocumentEvent = EmitterEvents['AppBridge:GuidelineDocumentGroup:DocumentAction']; @@ -21,7 +20,7 @@ type Options = { const sortDocumentGroups = (a: DocumentGroup, b: DocumentGroup) => (a.sort && b.sort ? a.sort - b.sort : 0); -export const useDocumentGroups = (appBridge: AppBridgeBlock | AppBridgeTheme, options: Options = { enabled: true }) => { +export const useDocumentGroups = (appBridge: AppBridgeBlock, options: Options = { enabled: true }) => { const [documentGroups, setDocumentGroups] = useState>(new Map([])); const [isLoading, setIsLoading] = useState(true); @@ -213,7 +212,7 @@ const actionHandlers = { default: (groups: Map) => groups, }; -const fetchDocumentGroups = async (appBridge: AppBridgeBlock | AppBridgeTheme) => { +const fetchDocumentGroups = async (appBridge: AppBridgeBlock) => { const documentGroups = await appBridge.getDocumentGroups(); return new Map([...documentGroups].sort(sortDocumentGroups).map((group) => [group.id, group])); }; diff --git a/packages/app-bridge/src/react/useDocumentNavigation.spec.ts b/packages/app-bridge/src/react/useDocumentNavigation.spec.ts deleted file mode 100644 index ce08c2d3a..000000000 --- a/packages/app-bridge/src/react/useDocumentNavigation.spec.ts +++ /dev/null @@ -1,135 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { renderHook, waitFor } from '@testing-library/react'; -import { describe, expect, it, vi } from 'vitest'; - -import { type DocumentPage, type DocumentSection, type GuidelineDocument, type DocumentCategory } from 'src/types'; - -import { getAppBridgeThemeStub, DocumentNavigationTreeDummy } from '../tests'; - -import { useDocumentNavigation } from './useDocumentNavigation'; - -describe('useDocumentNavigation', () => { - const testInitialRender = async ({ - expectRefetch, - options, - }: { - expectRefetch: boolean; - options?: { enabled: boolean }; - }) => { - const document = { id: () => 1138 }; - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api').mockResolvedValueOnce(DocumentNavigationTreeDummy.default()); - - const { result } = renderHook(() => useDocumentNavigation(appBridge, document, options)); - - expect(result.current.isLoading).toBe(true); - - await waitFor(() => { - expect(result.current.isLoading).toBe(!expectRefetch); - expect(result.current.navigationItems).toEqual(expectRefetch ? DocumentNavigationTreeDummy.default() : []); - }); - - if (expectRefetch) { - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getDocumentNavigation', payload: { document } }); - } - }; - - const testEventHandler = async (emitEvent: () => void) => { - const document = { id: () => 1138 }; - - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api').mockResolvedValue(DocumentNavigationTreeDummy.default()); - - const { result } = renderHook(() => useDocumentNavigation(appBridge, document)); - - expect(result.current.isLoading).toBe(true); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.navigationItems).toEqual(DocumentNavigationTreeDummy.default()); - }); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getDocumentNavigation', payload: { document } }); - - spy.mockResolvedValueOnce(DocumentNavigationTreeDummy.alternative()); - - emitEvent(); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(spy).toHaveBeenCalledTimes(2); - expect(result.current.navigationItems).toEqual(DocumentNavigationTreeDummy.alternative()); - }); - }; - - it('should not refetch on render when enabled is set to false', () => - testInitialRender({ expectRefetch: false, options: { enabled: false } })); - - it('should refetch on render when enabled is set to true', () => - testInitialRender({ expectRefetch: true, options: { enabled: true } })); - - it('should refetch on render when no options are given', () => - testInitialRender({ expectRefetch: true, options: undefined })); - - it('should refetch when the "AppBridge:GuidelineDocumentCategory:Action" event occurs', () => - testEventHandler(() => { - window.emitter.emit('AppBridge:GuidelineDocumentCategory:Action', { - action: 'add', - documentCategory: {}, - }); - })); - - it('should refetch when the "AppBridge:GuidelineDocumentCategory:DocumentPageAction" event occurs', () => - testEventHandler(() => { - window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { - action: 'add', - documentPage: { categoryId: 0, id: 0, documentId: 0 }, - }); - })); - - it('should refetch when the "AppBridge:GuidelineDocumentCategory:MoveEvent" event occurs', () => - testEventHandler(() => { - window.emitter.emit('AppBridge:GuidelineDocumentCategory:MoveEvent', { - action: 'movePreview', - documentId: 0, - documentCategory: {}, - position: 0, - }); - })); - - it('should refetch when the "AppBridge:GuidelineDocumentPage:Action" event occurs', () => - testEventHandler(() => { - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - action: 'add', - documentPage: {}, - }); - })); - - it('should refetch when the "AppBridge:GuidelineDocumentPage:MoveEvent" event occurs', () => - testEventHandler(() => { - window.emitter.emit('AppBridge:GuidelineDocumentPage:MoveEvent', { - action: 'movePreview', - documentId: 0, - documentPage: {}, - }); - })); - - it('should refetch when the "AppBridge:GuidelineDocumentPageTargets:Action" event occurs', () => - testEventHandler(() => { - window.emitter.emit('AppBridge:GuidelineDocumentPageTargets:Action', { - action: 'update', - payload: { targets: [], pageIds: [] }, - }); - })); - - it('should refetch when the "AppBridge:GuidelineDocumentSection:Action" event occurs', () => - testEventHandler(() => { - window.emitter.emit('AppBridge:GuidelineDocumentSection:Action', { - action: 'add', - payload: { documentPageId: 0, documentSection: {}, previousDocumentSectionId: 0 }, - }); - })); -}); diff --git a/packages/app-bridge/src/react/useDocumentNavigation.ts b/packages/app-bridge/src/react/useDocumentNavigation.ts deleted file mode 100644 index ec38e0f51..000000000 --- a/packages/app-bridge/src/react/useDocumentNavigation.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import debounce from 'lodash-es/debounce'; -import { useCallback, useEffect, useMemo, useState } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { type GuidelineDocument, type DocumentNavigationItem } from '../types/Guideline'; - -type Options = { - /** - * Whether it should fetch on mount. - */ - enabled?: boolean; -}; - -export const useDocumentNavigation = ( - appBridge: AppBridgeTheme, - document: GuidelineDocument, - options: Options = { enabled: true }, -) => { - const [navigationItems, setNavigationItems] = useState([]); - const [isLoading, setIsLoading] = useState(true); - - const refetch = useCallback(async () => { - setIsLoading(true); - setNavigationItems(await appBridge.api({ name: 'getDocumentNavigation', payload: { document } })); - setIsLoading(false); - }, [appBridge, document]); - - useEffect(() => { - if (options.enabled) { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - refetch(); - } - }, [options.enabled, refetch]); - - const debouncedRefetch = useMemo( - () => - debounce(() => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - refetch(); - }, 100), - [refetch], - ); - - useEffect(() => { - window.emitter.on('AppBridge:GuidelineDocumentCategory:Action', debouncedRefetch); - window.emitter.on('AppBridge:GuidelineDocumentCategory:DocumentPageAction', debouncedRefetch); - window.emitter.on('AppBridge:GuidelineDocumentCategory:MoveEvent', debouncedRefetch); - - window.emitter.on('AppBridge:GuidelineDocumentPage:Action', debouncedRefetch); - window.emitter.on('AppBridge:GuidelineDocumentPage:MoveEvent', debouncedRefetch); - window.emitter.on('AppBridge:GuidelineDocumentPageTargets:Action', debouncedRefetch); - - window.emitter.on('AppBridge:GuidelineDocumentSection:Action', debouncedRefetch); - - return () => { - window.emitter.off('AppBridge:GuidelineDocumentCategory:Action', debouncedRefetch); - window.emitter.off('AppBridge:GuidelineDocumentCategory:DocumentPageAction', debouncedRefetch); - window.emitter.off('AppBridge:GuidelineDocumentCategory:MoveEvent', debouncedRefetch); - - window.emitter.off('AppBridge:GuidelineDocumentPage:Action', debouncedRefetch); - window.emitter.off('AppBridge:GuidelineDocumentPage:MoveEvent', debouncedRefetch); - window.emitter.off('AppBridge:GuidelineDocumentPageTargets:Action', debouncedRefetch); - - window.emitter.off('AppBridge:GuidelineDocumentSection:Action', debouncedRefetch); - }; - }, [navigationItems, debouncedRefetch]); - - return { navigationItems, refetch, isLoading }; -}; diff --git a/packages/app-bridge/src/react/useDocumentPageTargets.spec.ts b/packages/app-bridge/src/react/useDocumentPageTargets.spec.ts index 3e9358f08..f4a8a5529 100644 --- a/packages/app-bridge/src/react/useDocumentPageTargets.spec.ts +++ b/packages/app-bridge/src/react/useDocumentPageTargets.spec.ts @@ -5,7 +5,6 @@ import mitt from 'mitt'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { DocumentPageTargetsDummy } from '../tests'; import { useDocumentPageTargets } from './useDocumentPageTargets'; @@ -13,7 +12,7 @@ import { useDocumentPageTargets } from './useDocumentPageTargets'; const DOCUMENT_PAGE_ID = 345; describe('useDocumentPageTargets', () => { - const appBridge: AppBridgeBlock | AppBridgeTheme = {} as AppBridgeBlock | AppBridgeTheme; + const appBridge: AppBridgeBlock = {} as AppBridgeBlock; beforeEach(() => { window.emitter = mitt(); diff --git a/packages/app-bridge/src/react/useDocumentPageTargets.ts b/packages/app-bridge/src/react/useDocumentPageTargets.ts index d1d8965f4..ed42101ef 100644 --- a/packages/app-bridge/src/react/useDocumentPageTargets.ts +++ b/packages/app-bridge/src/react/useDocumentPageTargets.ts @@ -3,10 +3,9 @@ import { useEffect, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type DocumentPageTargets } from '../types'; -export type UseDocumentPageTargetsReturnType = { +type UseDocumentPageTargetsReturnType = { documentPageTargets: Nullable; isLoading: boolean; }; @@ -19,10 +18,7 @@ export type DocumentPageTargetEvent = { }; }; -export const useDocumentPageTargets = ( - appBridge: AppBridgeBlock | AppBridgeTheme, - id: number, -): UseDocumentPageTargetsReturnType => { +export const useDocumentPageTargets = (appBridge: AppBridgeBlock, id: number): UseDocumentPageTargetsReturnType => { const [documentPageTargets, setDocumentPageTargets] = useState>(null); const [isLoading, setIsLoading] = useState(true); diff --git a/packages/app-bridge/src/react/useDocumentSection.spec.ts b/packages/app-bridge/src/react/useDocumentSection.spec.ts index 881fa4246..dc3e0185e 100644 --- a/packages/app-bridge/src/react/useDocumentSection.spec.ts +++ b/packages/app-bridge/src/react/useDocumentSection.spec.ts @@ -4,7 +4,7 @@ import { renderHook, waitFor } from '@testing-library/react'; import mitt from 'mitt'; import { type Mock, beforeAll, describe, expect, it, vi } from 'vitest'; -import { type AppBridgeBlock, type AppBridgeTheme } from '../'; +import { type AppBridgeBlock } from '../'; import { DocumentSectionDummy } from '../tests/DocumentSectionDummy'; import { useDocumentSection } from './useDocumentSection'; @@ -19,7 +19,7 @@ const documentSections = [ ]; describe('useDocumentSection', () => { - const appBridge: AppBridgeBlock | AppBridgeTheme = {} as AppBridgeBlock | AppBridgeTheme; + const appBridge: AppBridgeBlock = {} as AppBridgeBlock; beforeAll(() => { window.emitter = mitt(); diff --git a/packages/app-bridge/src/react/useDocumentSection.ts b/packages/app-bridge/src/react/useDocumentSection.ts index cdb9fc983..204945ad6 100644 --- a/packages/app-bridge/src/react/useDocumentSection.ts +++ b/packages/app-bridge/src/react/useDocumentSection.ts @@ -3,7 +3,6 @@ import { useEffect, useMemo, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { filterDocumentSectionsWithUnreadableTitles } from '../helpers'; import { type DocumentSection, type EmitterEvents } from '../types'; @@ -51,10 +50,7 @@ type UseDocumentSectionReturn = { navigationItems: DocumentSection[]; }; -export const useDocumentSection = ( - appBridge: AppBridgeBlock | AppBridgeTheme, - documentPageId: number, -): UseDocumentSectionReturn => { +export const useDocumentSection = (appBridge: AppBridgeBlock, documentPageId: number): UseDocumentSectionReturn => { const [documentSections, setDocumentSections] = useState([]); const navigationItems = useMemo( () => filterDocumentSectionsWithUnreadableTitles(documentSections), diff --git a/packages/app-bridge/src/react/useDocumentTargets.spec.ts b/packages/app-bridge/src/react/useDocumentTargets.spec.ts index 375a3e734..f71e53a74 100644 --- a/packages/app-bridge/src/react/useDocumentTargets.spec.ts +++ b/packages/app-bridge/src/react/useDocumentTargets.spec.ts @@ -5,7 +5,6 @@ import mitt from 'mitt'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { DocumentTargetsDummy } from '../tests'; import { useDocumentTargets } from './useDocumentTargets'; @@ -13,7 +12,7 @@ import { useDocumentTargets } from './useDocumentTargets'; const DOCUMENT_ID = 92341; describe('useDocumentTargets', () => { - const appBridge: AppBridgeBlock | AppBridgeTheme = {} as AppBridgeBlock | AppBridgeTheme; + const appBridge: AppBridgeBlock = {} as AppBridgeBlock; beforeEach(() => { window.emitter = mitt(); diff --git a/packages/app-bridge/src/react/useDocumentTargets.tsx b/packages/app-bridge/src/react/useDocumentTargets.tsx index ff3665a2d..17ae4a846 100644 --- a/packages/app-bridge/src/react/useDocumentTargets.tsx +++ b/packages/app-bridge/src/react/useDocumentTargets.tsx @@ -3,7 +3,6 @@ import { useEffect, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type DocumentTargets } from '../types'; export type UseDocumentTargetsReturnType = { @@ -19,10 +18,7 @@ type DocumentTargetEvent = { }; }; -export const useDocumentTargets = ( - appBridge: AppBridgeBlock | AppBridgeTheme, - id: number, -): UseDocumentTargetsReturnType => { +export const useDocumentTargets = (appBridge: AppBridgeBlock, id: number): UseDocumentTargetsReturnType => { const [documentTargets, setDocumentTargets] = useState>(null); const [isLoading, setIsLoading] = useState(true); diff --git a/packages/app-bridge/src/react/useEditorState.ts b/packages/app-bridge/src/react/useEditorState.ts index a83ca4516..074d744af 100644 --- a/packages/app-bridge/src/react/useEditorState.ts +++ b/packages/app-bridge/src/react/useEditorState.ts @@ -3,9 +3,8 @@ import { useEffect, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; -export const useEditorState = (appBridge: AppBridgeBlock | AppBridgeTheme): boolean => { +export const useEditorState = (appBridge: AppBridgeBlock): boolean => { const [editorState, setEditorState] = useState(appBridge.getEditorState()); useEffect(() => { diff --git a/packages/app-bridge/src/react/useGroupedDocuments.spec.ts b/packages/app-bridge/src/react/useGroupedDocuments.spec.ts index b4195766a..0c3c5f0cf 100644 --- a/packages/app-bridge/src/react/useGroupedDocuments.spec.ts +++ b/packages/app-bridge/src/react/useGroupedDocuments.spec.ts @@ -5,7 +5,7 @@ import { renderHook, waitFor } from '@testing-library/react'; import { afterEach, describe, expect, it, vi } from 'vitest'; -import { DocumentDummy, getAppBridgeThemeStub } from '../tests'; +import { DocumentDummy, getAppBridgeBlockStub } from '../tests'; import { useGroupedDocuments } from './useGroupedDocuments'; @@ -23,7 +23,7 @@ describe('useGroupedDocument', () => { }); it('should fetch grouped documents on mount', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentsByDocumentGroupId'); const { result } = renderHook(() => useGroupedDocuments(appBridge, DOCUMENT_GROUP_ID_1)); @@ -44,7 +44,7 @@ describe('useGroupedDocument', () => { }); it('should not fetch grouped documents on mount if not enabled', () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentsByDocumentGroupId'); const { result } = renderHook(() => useGroupedDocuments(appBridge, DOCUMENT_GROUP_ID_1, { enabled: false })); @@ -55,7 +55,7 @@ describe('useGroupedDocument', () => { }); it('should fetch grouped documents if it gets enabled', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentsByDocumentGroupId'); let enabled = false; @@ -86,7 +86,7 @@ describe('useGroupedDocument', () => { }); it('should update document if a page is added', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentsByDocumentGroupId'); const OLD_DOCUMENT = DocumentDummy.withFields({ @@ -130,7 +130,7 @@ describe('useGroupedDocument', () => { }); it('should update document if a page is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentsByDocumentGroupId'); const OLD_DOCUMENT = DocumentDummy.withFields({ @@ -178,7 +178,7 @@ describe('useGroupedDocument', () => { }); it('should update document if a category is added', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentsByDocumentGroupId'); const OLD_DOCUMENT = DocumentDummy.withFields({ @@ -223,7 +223,7 @@ describe('useGroupedDocument', () => { }); it('should update document if a category is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentsByDocumentGroupId'); const OLD_DOCUMENT = DocumentDummy.withFields({ @@ -271,7 +271,7 @@ describe('useGroupedDocument', () => { }); it('should update document sorting if a document is moved', async () => { - const appBridge = getAppBridgeThemeStub(); + const appBridge = getAppBridgeBlockStub(); const spy = vi.spyOn(appBridge, 'getDocumentsByDocumentGroupId'); const DOCUMENT_1 = DocumentDummy.withFields({ diff --git a/packages/app-bridge/src/react/useGroupedDocuments.ts b/packages/app-bridge/src/react/useGroupedDocuments.ts index 4aedde496..40409852b 100644 --- a/packages/app-bridge/src/react/useGroupedDocuments.ts +++ b/packages/app-bridge/src/react/useGroupedDocuments.ts @@ -4,7 +4,6 @@ import { produce } from 'immer'; import { useCallback, useEffect, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type Document, type EmitterEvents } from '../types'; type DocumentPageEvent = EmitterEvents['AppBridge:GuidelineDocument:DocumentPageAction']; @@ -21,7 +20,7 @@ type Options = { const sortDocuments = (a: Document, b: Document) => (a.sort && b.sort ? a.sort - b.sort : 0); export const useGroupedDocuments = ( - appBridge: AppBridgeBlock | AppBridgeTheme, + appBridge: AppBridgeBlock, documentGroupId: number, options: Options = { enabled: true }, ) => { @@ -229,7 +228,7 @@ const actionHandlers = { default: (documents: Map) => documents, }; -const fetchGroupedDocuments = async (appBridge: AppBridgeBlock | AppBridgeTheme, documentGroupId: number) => { +const fetchGroupedDocuments = async (appBridge: AppBridgeBlock, documentGroupId: number) => { const documents = await appBridge.getDocumentsByDocumentGroupId(documentGroupId); return new Map([...documents].sort(sortDocuments).map((document) => [document.id, document])); }; diff --git a/packages/app-bridge/src/react/useGuidelineActions.spec.ts b/packages/app-bridge/src/react/useGuidelineActions.spec.ts deleted file mode 100644 index 89d02fb50..000000000 --- a/packages/app-bridge/src/react/useGuidelineActions.spec.ts +++ /dev/null @@ -1,2178 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { act, renderHook, waitFor } from '@testing-library/react'; -import mitt from 'mitt'; -import { type SpyInstance, afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; - -import { - BrandportalLinkDummy, - CoverPageDummy, - DocumentCategoryDummy, - DocumentDummy, - DocumentGroupDummy, - DocumentPageDummy, - getAppBridgeThemeStub, -} from '../tests'; -import { - type BrandportalLink, - type CoverPage, - type CoverPageCreate, - type CoverPageUpdate, - type DocumentCategoryCreate, - type DocumentCategoryUpdate, - type DocumentGroupCreate, - type DocumentGroupUpdate, - type DocumentLibraryCreate, - type DocumentLibraryUpdate, - type DocumentLinkCreate, - type DocumentLinkUpdate, - type DocumentPageCreate, - type DocumentPageUpdate, - type DocumentStandardCreate, - type DocumentStandardUpdate, -} from '../types'; - -import { useCategorizedDocumentPages } from './useCategorizedDocumentPages'; -import { useDocumentCategories } from './useDocumentCategories'; -import { useDocumentGroups } from './useDocumentGroups'; -import { useGroupedDocuments } from './useGroupedDocuments'; -import { useGuidelineActions } from './useGuidelineActions'; -import { useUncategorizedDocumentPages } from './useUncategorizedDocumentPages'; -import { useUngroupedDocuments } from './useUngroupedDocuments'; - -const DOCUMENT_ID_1 = 6456; -const DOCUMENT_ID_2 = 34532; -const DOCUMENT_ID_3 = 2414; -const DOCUMENT_ID_4 = 2342; -const DOCUMENT_ID_5 = 2343445; -const DOCUMENT_PAGE_ID_1 = 23442; -const DOCUMENT_PAGE_ID_2 = 235345; -const DOCUMENT_PAGE_ID_3 = 12352; -const DOCUMENT_PAGE_ID_4 = 55221; -const DOCUMENT_PAGE_ID_5 = 98324; -const UNCATEGORIZED_DOCUMENT_PAGE_ID_1 = 24324; -const UNCATEGORIZED_DOCUMENT_PAGE_ID_2 = 3532; -const UNCATEGORIZED_DOCUMENT_PAGE_ID_3 = 98954; -const UNCATEGORIZED_DOCUMENT_PAGE_ID_4 = 34563; -const DOCUMENT_CATEGORY_ID_1 = 147; -const DOCUMENT_CATEGORY_ID_2 = 258; -const DOCUMENT_CATEGORY_ID_3 = 678; -const DOCUMENT_GROUP_ID_1 = 345; -const DOCUMENT_GROUP_ID_2 = 95694; -const DOCUMENT_GROUP_ID_3 = 345882; - -describe('useGuidelineActions hook', () => { - let useGuidelineActionsStub: ReturnType; - let emitSpy: SpyInstance | null = null; - let appBridgeStub: ReturnType; - - beforeEach(() => { - appBridgeStub = getAppBridgeThemeStub(); - const { result } = renderHook(() => useGuidelineActions(appBridgeStub)); - - useGuidelineActionsStub = result.current; - window.emitter = mitt(); - emitSpy = vi.spyOn(window.emitter, 'emit'); - }); - - afterEach(() => { - vi.resetAllMocks(); - emitSpy = null; - }); - - it('should not throw createDocument', async () => { - const createDocumentMock = vi.fn(useGuidelineActionsStub.createDocument); - - expect(createDocumentMock({ title: 'testDocument' })).resolves.not.toThrow(); - }); - - it('should not throw createDocumentGroup', async () => { - const createDocumentGroupMock = vi.fn(useGuidelineActionsStub.createDocumentGroup); - - expect(createDocumentGroupMock({ name: 'testDocumentGroup' })).resolves.not.toThrow(); - }); - - it('should not throw createLibrary', async () => { - const createLibraryMock = vi.fn(useGuidelineActionsStub.createLibrary); - - expect( - createLibraryMock({ title: 'testLibrary', settings: { project: 4 }, mode: 'DOCUMENTLIBRARY' }), - ).resolves.not.toThrow(); - }); - - it('should not throw createLink', async () => { - const createLinkMock = vi.fn(useGuidelineActionsStub.createLink); - - expect( - createLinkMock({ title: 'testLink', linkUrl: '/test/url', linkSettings: { newTab: true } }), - ).resolves.not.toThrow(); - }); - - it('should not throw createDocumentCategory', async () => { - const createDocumentCategoryMock = vi.fn(useGuidelineActionsStub.createDocumentCategory); - - expect(createDocumentCategoryMock({ title: 'testCategory', documentId: 4 })).resolves.not.toThrow(); - }); - - it('should not throw createDocumentPage', async () => { - const createDocumentPageMock = vi.fn(useGuidelineActionsStub.createDocumentPage); - - expect(createDocumentPageMock({ title: 'testPage', documentId: 5 })).resolves.not.toThrow(); - }); - - it('should not throw createCoverPage', async () => { - const createCoverPageMock = vi.fn(useGuidelineActionsStub.createCoverPage); - - expect(createCoverPageMock({ documentId: '5', template: 'cover' })).resolves.not.toThrow(); - }); - - it('should not throw updateDocument', async () => { - const updateDocumentMock = vi.fn(useGuidelineActionsStub.updateDocument); - - expect(updateDocumentMock({ id: 1, title: 'updateDocumentTest' })).resolves.not.toThrow(); - }); - - it('should not throw updateDocumentGroup', async () => { - const updateDocumentGroupMock = vi.fn(useGuidelineActionsStub.updateDocumentGroup); - - expect(updateDocumentGroupMock({ id: 1, name: 'updateDocumentGroupTest' })).resolves.not.toThrow(); - }); - - it('should not throw updateLibrary', async () => { - const updateLibraryMock = vi.fn(useGuidelineActionsStub.updateLibrary); - - expect(updateLibraryMock({ id: 1, title: 'updateTitleTest' })).resolves.not.toThrow(); - }); - - it('should not throw updateLink', async () => { - const updateLinkMock = vi.fn(useGuidelineActionsStub.updateLink); - - expect(updateLinkMock({ id: 1, title: 'updateLinkTest' })).resolves.not.toThrow(); - }); - - it('should not throw updateDocumentCategory', async () => { - const updateDocumentCategoryMock = vi.fn(useGuidelineActionsStub.updateDocumentCategory); - - expect( - updateDocumentCategoryMock({ id: 1, title: 'updateDocumentCategoryTest', documentId: 20 }), - ).resolves.not.toThrow(); - }); - - it('should not throw updateDocumentPage', async () => { - const updateDocumentPageMock = vi.fn(useGuidelineActionsStub.updateDocumentPage); - - expect( - updateDocumentPageMock({ id: 1, title: 'updateDocumentPageTest', documentId: 20 }), - ).resolves.not.toThrow(); - }); - - it('should not throw updateLegacyCoverPage', async () => { - const updateLegacyCoverPageMock = vi.fn(useGuidelineActionsStub.updateLegacyCoverPage); - - expect(updateLegacyCoverPageMock({})).resolves.not.toThrow(); - }); - - it('should not throw updateCoverPage', async () => { - const updateCoverPageMock = vi.fn(useGuidelineActionsStub.updateCoverPage); - - expect(updateCoverPageMock({ id: 1 })).resolves.not.toThrow(); - }); - - it('should not throw updateBrandportalLink', async () => { - const updateBrandportalLinkMock = vi.fn(useGuidelineActionsStub.updateBrandportalLink); - - expect(updateBrandportalLinkMock({})).resolves.not.toThrow(); - }); - - it('should not throw deleteDocument', async () => { - const deleteDocumentMock = vi.fn(useGuidelineActionsStub.deleteDocument); - - expect(deleteDocumentMock({ id: 1 })).resolves.not.toThrow(); - }); - - it('should not throw deleteLibrary', async () => { - const deleteLibraryMock = vi.fn(useGuidelineActionsStub.deleteLibrary); - - expect(deleteLibraryMock({ id: 1 })).resolves.not.toThrow(); - }); - - it('should not throw deleteLink', async () => { - const deleteLinkMock = vi.fn(useGuidelineActionsStub.deleteLink); - - expect(deleteLinkMock({ id: 1 })).resolves.not.toThrow(); - }); - - it('should not throw deleteDocumentPage', async () => { - const deleteDocumentPageMock = vi.fn(useGuidelineActionsStub.deleteDocumentPage); - - expect(deleteDocumentPageMock({ id: 1, documentId: 10, categoryId: null })).resolves.not.toThrow(); - }); - - it('should not throw deleteDocumentGroup', async () => { - const deleteDocumentGroupMock = vi.fn(useGuidelineActionsStub.deleteDocumentGroup); - - expect(deleteDocumentGroupMock({ id: 1 })).resolves.not.toThrow(); - }); - - it('should not throw deleteDocumentCategory', async () => { - const deleteDocumentCategoryMock = vi.fn(useGuidelineActionsStub.deleteDocumentCategory); - - expect(deleteDocumentCategoryMock({ id: 1, documentId: 10 })).resolves.not.toThrow(); - }); - - it('should not throw deleteCoverPage', async () => { - const deleteCoverPageMock = vi.fn(useGuidelineActionsStub.deleteCoverPage); - - expect(deleteCoverPageMock()).resolves.not.toThrow(); - }); - - it('should not throw duplicateDocumentPage', async () => { - const duplicateDocumentPageMock = vi.fn(useGuidelineActionsStub.duplicateDocumentPage); - - expect(duplicateDocumentPageMock({ id: 1, documentId: 5 })).resolves.not.toThrow(); - }); - - it('should not throw updateDocumentTargets', async () => { - const updateDocumentTargetsMock = vi.fn(useGuidelineActionsStub.updateDocumentTargets); - - expect(updateDocumentTargetsMock([1, 2, 3], [203])).resolves.not.toThrow(); - }); - - it('should not throw updateDocumentPageTargets', async () => { - const updateDocumentPageTargetsMock = vi.fn(useGuidelineActionsStub.updateDocumentPageTargets); - - expect(updateDocumentPageTargetsMock([1, 2, 3], [203])).resolves.not.toThrow(); - }); - - it('should create a link and emit an event', async () => { - const createLink = vi.spyOn(useGuidelineActionsStub, 'createLink'); - - const link: DocumentLinkCreate = { - title: 'Test Link', - documentGroupId: 1, - linkUrl: 'test/url', - linkSettings: { newTab: false }, - }; - - act(() => { - useGuidelineActionsStub.createLink(link); - }); - - await waitFor(() => { - expect(createLink).toHaveBeenCalledWith(link); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocument:Action', { - document: { ...DocumentDummy.with(1), documentGroupId: link.documentGroupId }, - action: 'add', - }); - }); - }); - - it('should update a link and emit an event', async () => { - const updateLink = vi.spyOn(useGuidelineActionsStub, 'updateLink'); - - const link: DocumentLinkUpdate = { - id: 1, - title: 'Updated Link', - documentGroupId: 1, - }; - - act(() => { - useGuidelineActionsStub.updateLink(link); - }); - - await waitFor(() => { - expect(updateLink).toHaveBeenCalledWith(link); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocument:Action', { - document: { ...DocumentDummy.with(1), documentGroupId: link.documentGroupId }, - action: 'update', - }); - }); - }); - - it('should delete a link and emit an event', async () => { - const deleteLink = vi.spyOn(useGuidelineActionsStub, 'deleteLink'); - - const documentId = 1; - - act(() => { - useGuidelineActionsStub.deleteLink({ id: documentId }); - }); - - await waitFor(() => { - expect(deleteLink).toHaveBeenCalledWith({ id: documentId }); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocument:Action', { - document: { id: documentId }, - action: 'delete', - }); - }); - }); - - it('should create a library and emit an event', async () => { - const createLibrary = vi.spyOn(useGuidelineActionsStub, 'createLibrary'); - - const library: DocumentLibraryCreate = { - title: 'Test Library', - documentGroupId: 1, - mode: 'DOCUMENTLIBRARY', - settings: { - project: 1, - }, - }; - - act(() => { - useGuidelineActionsStub.createLibrary(library); - }); - - await waitFor(() => { - expect(createLibrary).toHaveBeenCalledWith(library); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocument:Action', { - document: { ...DocumentDummy.with(1), documentGroupId: library.documentGroupId }, - action: 'add', - }); - }); - }); - - it('should update a library and emit an event', async () => { - const updateLibrary = vi.spyOn(useGuidelineActionsStub, 'updateLibrary'); - - const library: DocumentLibraryUpdate = { - id: 1, - title: 'Updated Library', - documentGroupId: 1, - }; - - act(() => { - useGuidelineActionsStub.updateLibrary(library); - }); - - await waitFor(() => { - expect(updateLibrary).toHaveBeenCalledWith(library); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocument:Action', { - document: { ...DocumentDummy.with(1), documentGroupId: library.documentGroupId }, - action: 'update', - }); - }); - }); - - it('should delete a library and emit an event', async () => { - const deleteLibrary = vi.spyOn(useGuidelineActionsStub, 'deleteLibrary'); - - const documentId = 1; - - act(() => { - useGuidelineActionsStub.deleteLibrary({ id: documentId }); - }); - - await waitFor(() => { - expect(deleteLibrary).toHaveBeenCalledWith({ id: documentId }); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocument:Action', { - document: { id: documentId }, - action: 'delete', - }); - }); - }); - - it('should create a standard document and emit an event', async () => { - const createStandardDocument = vi.spyOn(useGuidelineActionsStub, 'createDocument'); - - const documentCreationParameters: DocumentStandardCreate = { - title: 'Test Standard Document', - documentGroupId: 1, - }; - - act(() => { - useGuidelineActionsStub.createDocument(documentCreationParameters); - }); - - await waitFor(() => { - expect(createStandardDocument).toHaveBeenCalledWith(documentCreationParameters); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocument:Action', { - document: { ...DocumentDummy.with(1), documentGroupId: documentCreationParameters.documentGroupId }, - action: 'add', - }); - }); - }); - - it('should update a standard document and emit an event', async () => { - const updateStandardDocument = vi.spyOn(useGuidelineActionsStub, 'updateDocument'); - - const document: DocumentStandardUpdate = { - id: 1, - title: 'Updated Standard Document', - documentGroupId: 1, - }; - - act(() => { - useGuidelineActionsStub.updateDocument(document); - }); - - await waitFor(() => { - expect(updateStandardDocument).toHaveBeenCalledWith(document); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocument:Action', { - document: { ...DocumentDummy.with(1), documentGroupId: document.documentGroupId }, - action: 'update', - }); - }); - }); - - it('should delete a standard document and emit an event', async () => { - const deleteStandardDocument = vi.spyOn(useGuidelineActionsStub, 'deleteDocument'); - - const documentId = 1; - - act(() => { - useGuidelineActionsStub.deleteDocument({ id: documentId }); - }); - - await waitFor(() => { - expect(deleteStandardDocument).toHaveBeenCalledWith({ id: documentId }); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocument:Action', { - document: { id: documentId }, - action: 'delete', - }); - }); - }); - - it('should create a cover page and emit an event', async () => { - const createCoverPage = vi.spyOn(useGuidelineActionsStub, 'createCoverPage'); - - const coverPage: CoverPageCreate = { - template: 'blank', - documentId: '1', - }; - - act(() => { - useGuidelineActionsStub.createCoverPage(coverPage); - }); - - await waitFor(() => { - expect(createCoverPage).toHaveBeenCalledWith(coverPage); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineCoverPage:Action', { - coverPage: CoverPageDummy.with(1), - action: 'add', - }); - }); - }); - - it('should update a cover page and emit an event', async () => { - const updateCoverPage = vi.spyOn(useGuidelineActionsStub, 'updateCoverPage'); - - const coverPage: CoverPageUpdate = { - id: 1, - draft: false, - enabled: true, - }; - - act(() => { - useGuidelineActionsStub.updateCoverPage(coverPage); - }); - - await waitFor(() => { - expect(updateCoverPage).toHaveBeenCalledWith(coverPage); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineCoverPage:Action', { - coverPage: CoverPageDummy.with(1), - action: 'update', - }); - }); - }); - - it('should update a legacy cover page and emit an event', async () => { - const updateLegacyCoverPage = vi.spyOn(useGuidelineActionsStub, 'updateLegacyCoverPage'); - - const legacyCoverPage: Partial = { - draft: false, - enabled: true, - title: 'Legacy Cover Page', - }; - - act(() => { - useGuidelineActionsStub.updateLegacyCoverPage(legacyCoverPage); - }); - - await waitFor(() => { - expect(updateLegacyCoverPage).toHaveBeenCalledWith(legacyCoverPage); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineCoverPage:Action', { - coverPage: legacyCoverPage, - action: 'update', - }); - }); - }); - - it('should delete a cover page and emit an event', async () => { - const deleteCoverPage = vi.spyOn(useGuidelineActionsStub, 'deleteCoverPage'); - - act(() => { - useGuidelineActionsStub.deleteCoverPage(); - }); - - await waitFor(() => { - expect(deleteCoverPage).toHaveBeenCalled(); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineCoverPage:Action', { - action: 'delete', - }); - }); - }); - - it('should update a brandportal link and emit an event', async () => { - const updateBrandportalLink = vi.spyOn(useGuidelineActionsStub, 'updateBrandportalLink'); - - const brandportalLink: BrandportalLink = { - label: 'Updated BrandportalLink', - url: 'https://www.example.com', - enabled: true, - }; - - act(() => { - useGuidelineActionsStub.updateBrandportalLink(brandportalLink); - }); - - await waitFor(() => { - expect(updateBrandportalLink).toHaveBeenCalledWith(brandportalLink); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineBrandportalLink:Action', { - brandportalLink: BrandportalLinkDummy.with(), - action: 'update', - }); - }); - }); - - it('should create a document group and emit an event', async () => { - const createDocumentGroup = vi.spyOn(useGuidelineActionsStub, 'createDocumentGroup'); - - const group: DocumentGroupCreate = { - name: 'Test Document Group', - }; - - act(() => { - useGuidelineActionsStub.createDocumentGroup(group); - }); - - await waitFor(() => { - expect(createDocumentGroup).toHaveBeenCalledWith(group); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentGroup:Action', { - documentGroup: DocumentGroupDummy.with(1), - action: 'add', - }); - }); - }); - - it('should update a document group and emit an event', async () => { - const updateDocumentGroup = vi.spyOn(useGuidelineActionsStub, 'updateDocumentGroup'); - - const documentGroupUpdate: DocumentGroupUpdate = { - id: 1, - name: 'Updated Document Group', - }; - - const documentGroup = DocumentGroupDummy.with(1); - - act(() => { - useGuidelineActionsStub.updateDocumentGroup(documentGroupUpdate); - }); - - await waitFor(() => { - expect(updateDocumentGroup).toHaveBeenCalledWith(documentGroupUpdate); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentGroup:Action', { - documentGroup, - action: 'update', - }); - }); - }); - - it('should delete a document group and emit an event', async () => { - const deleteDocumentGroup = vi.spyOn(useGuidelineActionsStub, 'deleteDocumentGroup'); - - const id = 1; - - act(() => { - useGuidelineActionsStub.deleteDocumentGroup({ id }); - }); - - await waitFor(() => { - expect(deleteDocumentGroup).toHaveBeenCalledWith({ id }); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentGroup:Action', { - documentGroup: { id }, - action: 'delete', - }); - }); - }); - - it('should create a document category and emit an event', async () => { - const createDocumentCategory = vi.spyOn(useGuidelineActionsStub, 'createDocumentCategory'); - - const documentCategoryCreationParameters: DocumentCategoryCreate = { - title: 'Test Document Category', - documentId: 1, - }; - - act(() => { - useGuidelineActionsStub.createDocumentCategory(documentCategoryCreationParameters); - }); - - await waitFor(() => { - expect(createDocumentCategory).toHaveBeenCalledWith(documentCategoryCreationParameters); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentCategory:Action', { - documentCategory: DocumentCategoryDummy.with(1), - action: 'add', - }); - }); - }); - - it('should update a document category and emit an event', async () => { - const updateDocumentCategory = vi.spyOn(useGuidelineActionsStub, 'updateDocumentCategory'); - - const updatedDocumentCategory: DocumentCategoryUpdate = { - id: 1, - title: 'Updated Document Category', - documentId: 15, - }; - - const documentCategory = DocumentCategoryDummy.with(1); - - act(() => { - useGuidelineActionsStub.updateDocumentCategory(updatedDocumentCategory); - }); - - await waitFor(() => { - expect(updateDocumentCategory).toHaveBeenCalledWith(updatedDocumentCategory); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentCategory:Action', { - documentCategory, - action: 'update', - }); - }); - }); - - it('should delete a document category and emit an event', async () => { - const deleteDocumentCategory = vi.spyOn(useGuidelineActionsStub, 'deleteDocumentCategory'); - - const documentCategory = { id: 1, documentId: 16 }; - - act(() => { - useGuidelineActionsStub.deleteDocumentCategory(documentCategory); - }); - - await waitFor(() => { - expect(deleteDocumentCategory).toHaveBeenCalledWith(documentCategory); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentCategory:Action', { - documentCategory: { id: documentCategory.id, documentId: 16 }, - action: 'delete', - }); - }); - }); - - it('should create a page and emit an event', async () => { - const createDocumentPage = vi.spyOn(useGuidelineActionsStub, 'createDocumentPage'); - - const page: DocumentPageCreate = { - title: 'Test Page', - documentId: 1, - }; - - act(() => { - useGuidelineActionsStub.createDocumentPage(page); - }); - - await waitFor(() => { - expect(createDocumentPage).toHaveBeenCalledWith(page); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentPage:Action', { - documentPage: DocumentPageDummy.with(1), - action: 'add', - }); - }); - }); - - it('should update a page and emit an event', async () => { - const documentPage = DocumentPageDummy.with(1); - const updateDocumentPage = vi.spyOn(useGuidelineActionsStub, 'updateDocumentPage'); - - const page: DocumentPageUpdate = { - id: 1, - title: 'Updated Page', - documentId: 25, - }; - - act(() => { - useGuidelineActionsStub.updateDocumentPage(page); - }); - - await waitFor(() => { - expect(updateDocumentPage).toHaveBeenCalledWith(page); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentPage:Action', { - action: 'update', - documentPage, - }); - }); - }); - - it('should delete a page and emit an event', async () => { - const deleteDocumentPage = vi.spyOn(useGuidelineActionsStub, 'deleteDocumentPage'); - - const page = { id: 1, documentId: 22 }; - - act(() => { - useGuidelineActionsStub.deleteDocumentPage(page); - }); - - await waitFor(() => { - expect(deleteDocumentPage).toHaveBeenCalledWith(page); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentPage:Action', { - documentPage: { id: page.id, documentId: 22, categoryId: null }, - action: 'delete', - }); - }); - }); - - it('should duplicate a page and emit an event', async () => { - const duplicateDocumentPage = vi.spyOn(useGuidelineActionsStub, 'duplicateDocumentPage'); - - const originalDocumentPage = { - id: 2341, - documentId: 10, - categoryId: 1138, - }; - - act(() => { - useGuidelineActionsStub.duplicateDocumentPage(originalDocumentPage); - }); - - await waitFor(() => { - expect(duplicateDocumentPage).toHaveBeenCalledWith(originalDocumentPage); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentPage:Action', { - documentPage: { - ...DocumentPageDummy.with(originalDocumentPage.id), - documentId: originalDocumentPage.documentId, - categoryId: originalDocumentPage.categoryId, - }, - action: 'add', - }); - }); - }); - - it('should update document targets and emit all events', async () => { - const updateDocumentTargets = vi.spyOn(useGuidelineActionsStub, 'updateDocumentTargets'); - - const targets = [1, 2, 3]; - const documentIds = [204]; - - act(() => { - useGuidelineActionsStub.updateDocumentTargets(targets, documentIds); - }); - - await waitFor(() => { - expect(updateDocumentTargets).toHaveBeenCalledWith(targets, documentIds); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentTargets:Action', { - payload: { - targets, - documentIds, - }, - action: 'update', - }); - }); - }); - - it('should update document page targets and emit all events', async () => { - const updateDocumentPageTargets = vi.spyOn(useGuidelineActionsStub, 'updateDocumentPageTargets'); - - const targets = [1, 2, 3]; - const documentPageIds = [204]; - - act(() => { - useGuidelineActionsStub.updateDocumentPageTargets(targets, documentPageIds); - }); - - await waitFor(() => { - expect(updateDocumentPageTargets).toHaveBeenCalledWith(targets, documentPageIds); - expect(emitSpy).toHaveBeenCalledWith('AppBridge:GuidelineDocumentPageTargets:Action', { - payload: { targets, pageIds: documentPageIds }, - action: 'update', - }); - }); - }); - - it('should move an uncategorized document page within the same document', async () => { - const DOCUMENT_PAGE_1 = DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_1, - categoryId: null, - }); - - const appBridge = getAppBridgeThemeStub(); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - const moveDocumentPageSpy = vi - .spyOn(appBridge, 'moveDocumentPage') - .mockResolvedValueOnce({ ...DOCUMENT_PAGE_1, sort: 2 }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - const { result: uncategorizedDocumentPages } = renderHook(() => - useUncategorizedDocumentPages(appBridge, DOCUMENT_ID_1), - ); - - await waitFor(() => { - expect(uncategorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_1.id, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - - guidelineActions.current.moveDocumentPage(DOCUMENT_PAGE_1, DOCUMENT_ID_1, 2); - - expect(moveDocumentPageSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentPage:MoveEvent', - { - documentPage: { - ...DOCUMENT_PAGE_1, - sort: 1, - categoryId: null, - }, - categoryId: null, - documentId: DOCUMENT_ID_1, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { documentPage: { ...DOCUMENT_PAGE_1, sort: 2 }, action: 'move' }, - ], - ['AppBridge:GuidelineDocument:DocumentPageAction', { documentPage: DOCUMENT_PAGE_1, action: 'delete' }], - [ - 'AppBridge:GuidelineDocument:DocumentPageAction', - { documentPage: { ...DOCUMENT_PAGE_1, sort: 2 }, action: 'add' }, - ], - ]); - - expect(uncategorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_1.id, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - }); - - it('should move a categorized document page within the same document category', async () => { - const DOCUMENT_PAGE_1 = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - }); - - const appBridge = getAppBridgeThemeStub(); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - const moveDocumentPageSpy = vi - .spyOn(appBridge, 'moveDocumentPage') - .mockResolvedValueOnce({ ...DOCUMENT_PAGE_1, sort: 3 }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - const { result: categorizedDocumentPages } = renderHook(() => - useCategorizedDocumentPages(appBridge, DOCUMENT_CATEGORY_ID_1), - ); - - await waitFor(() => { - expect(categorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_1.id, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_ID_4, - ]); - }); - - guidelineActions.current.moveDocumentPage(DOCUMENT_PAGE_1, DOCUMENT_ID_1, 3, DOCUMENT_CATEGORY_ID_1); - - expect(moveDocumentPageSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentPage:MoveEvent', - { - documentPage: { - ...DOCUMENT_PAGE_1, - sort: 1, - }, - categoryId: DOCUMENT_CATEGORY_ID_1, - documentId: DOCUMENT_ID_1, - position: 3, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { documentPage: { ...DOCUMENT_PAGE_1, sort: 3 }, action: 'move' }, - ], - [ - 'AppBridge:GuidelineDocumentCategory:DocumentPageAction', - { documentPage: DOCUMENT_PAGE_1, action: 'delete' }, - ], - [ - 'AppBridge:GuidelineDocumentCategory:DocumentPageAction', - { documentPage: { ...DOCUMENT_PAGE_1, sort: 3 }, action: 'add' }, - ], - ]); - - expect(categorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_1.id, - DOCUMENT_PAGE_ID_4, - ]); - }); - }); - - it('should move a categorized document page to uncategorized within the same document', async () => { - const DOCUMENT_PAGE_1 = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - }); - - const appBridge = getAppBridgeThemeStub(); - const fetchUncategorizedDocumentPagesSpy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const moveDocumentPageSpy = vi - .spyOn(appBridge, 'moveDocumentPage') - .mockResolvedValueOnce({ ...DOCUMENT_PAGE_1, sort: 3, categoryId: null }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - const { result: categorizedDocumentPages } = renderHook(() => - useCategorizedDocumentPages(appBridge, DOCUMENT_CATEGORY_ID_1), - ); - const { result: uncategorizedDocumentPages } = renderHook(() => - useUncategorizedDocumentPages(appBridge, DOCUMENT_ID_1), - ); - - await waitFor(() => { - expect(categorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_1.id, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_ID_4, - ]); - - expect(uncategorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - - // Mock the response of the add in uncategorized hook call - fetchUncategorizedDocumentPagesSpy.mockResolvedValue([ - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 2, - }), - { ...DOCUMENT_PAGE_1, sort: 3, categoryId: null }, - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 4, - }), - ]); - - guidelineActions.current.moveDocumentPage(DOCUMENT_PAGE_1, DOCUMENT_ID_1, 2, null); - - expect(moveDocumentPageSpy).toHaveBeenCalledOnce(); - expect(fetchUncategorizedDocumentPagesSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentPage:MoveEvent', - { - documentPage: { - ...DOCUMENT_PAGE_1, - sort: 1, - }, - categoryId: null, - documentId: DOCUMENT_ID_1, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { documentPage: { ...DOCUMENT_PAGE_1, sort: 1 }, action: 'delete' }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { documentPage: { ...DOCUMENT_PAGE_1, sort: 3, categoryId: null }, action: 'add' }, - ], - [ - 'AppBridge:GuidelineDocumentCategory:DocumentPageAction', - { documentPage: DOCUMENT_PAGE_1, action: 'delete' }, - ], - [ - 'AppBridge:GuidelineDocument:DocumentPageAction', - { documentPage: { ...DOCUMENT_PAGE_1, sort: 3, categoryId: null }, action: 'add' }, - ], - ]); - - expect(categorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_ID_4, - ]); - - expect(uncategorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_1.id, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - }); - - it('should move an uncategorized document page to a document category within the same document', async () => { - const UNCATEGORIZED_DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_1, - categoryId: null, - }); - - const appBridge = getAppBridgeThemeStub(); - const fetchCategorizedDocumentPagesSpy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const moveDocumentPageSpy = vi - .spyOn(appBridge, 'moveDocumentPage') - .mockResolvedValueOnce({ ...UNCATEGORIZED_DOCUMENT_PAGE, sort: 2, categoryId: DOCUMENT_CATEGORY_ID_1 }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - const { result: categorizedDocumentPages } = renderHook(() => - useCategorizedDocumentPages(appBridge, DOCUMENT_CATEGORY_ID_1), - ); - const { result: uncategorizedDocumentPages } = renderHook(() => - useUncategorizedDocumentPages(appBridge, DOCUMENT_ID_1), - ); - - await waitFor(() => { - expect(uncategorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE.id, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - - expect(categorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_ID_4, - ]); - }); - - // Mock the response of the add in uncategorized hook call - fetchCategorizedDocumentPagesSpy.mockResolvedValue([ - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_1, categoryId: DOCUMENT_CATEGORY_ID_1, sort: 1 }), - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_2, categoryId: DOCUMENT_CATEGORY_ID_1, sort: 2 }), - { ...UNCATEGORIZED_DOCUMENT_PAGE, sort: 3, categoryId: DOCUMENT_CATEGORY_ID_1 }, - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_3, categoryId: DOCUMENT_CATEGORY_ID_1, sort: 4 }), - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_4, categoryId: DOCUMENT_CATEGORY_ID_1, sort: 5 }), - ]); - - guidelineActions.current.moveDocumentPage( - UNCATEGORIZED_DOCUMENT_PAGE, - DOCUMENT_ID_1, - 2, - DOCUMENT_CATEGORY_ID_1, - ); - - expect(moveDocumentPageSpy).toHaveBeenCalledOnce(); - expect(fetchCategorizedDocumentPagesSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentPage:MoveEvent', - { - documentPage: { - ...UNCATEGORIZED_DOCUMENT_PAGE, - sort: 1, - documentId: DOCUMENT_ID_1, - categoryId: null, - }, - categoryId: DOCUMENT_CATEGORY_ID_1, - documentId: DOCUMENT_ID_1, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { documentPage: { ...UNCATEGORIZED_DOCUMENT_PAGE, sort: 1, categoryId: null }, action: 'delete' }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { - documentPage: { ...UNCATEGORIZED_DOCUMENT_PAGE, sort: 2, categoryId: DOCUMENT_CATEGORY_ID_1 }, - action: 'add', - }, - ], - [ - 'AppBridge:GuidelineDocument:DocumentPageAction', - { documentPage: UNCATEGORIZED_DOCUMENT_PAGE, action: 'delete' }, - ], - [ - 'AppBridge:GuidelineDocumentCategory:DocumentPageAction', - { - documentPage: { ...UNCATEGORIZED_DOCUMENT_PAGE, sort: 2, categoryId: DOCUMENT_CATEGORY_ID_1 }, - action: 'add', - }, - ], - ]); - - expect(uncategorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - - expect(categorizedDocumentPages.current.documentPages.map((documentPage) => documentPage.id)).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE.id, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_ID_4, - ]); - }); - }); - - it('should move an uncategorized document page to another document as uncategorized', async () => { - const UNCATEGORIZED_DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_4, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 1, - }); - - const appBridge = getAppBridgeThemeStub(); - const fetchUncategorizedDocumentPagesSpy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const moveDocumentPageSpy = vi.spyOn(appBridge, 'moveDocumentPage').mockResolvedValueOnce({ - ...UNCATEGORIZED_DOCUMENT_PAGE, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 2, - }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - // Mock the response to add an extra category to the document - fetchUncategorizedDocumentPagesSpy.mockResolvedValueOnce([ - UNCATEGORIZED_DOCUMENT_PAGE, - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 2, - }), - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 3, - }), - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 4, - }), - ]); - - const { result: uncategorizedDocumentPagesInDocumentId1 } = renderHook(() => - useUncategorizedDocumentPages(appBridge, DOCUMENT_ID_1), - ); - - await waitFor(() => { - expect( - uncategorizedDocumentPagesInDocumentId1.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE.id, - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - - const { result: uncategorizedDocumentPagesInDocumentId2 } = renderHook(() => - useUncategorizedDocumentPages(appBridge, DOCUMENT_ID_2), - ); - - await waitFor(() => { - expect( - uncategorizedDocumentPagesInDocumentId2.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - - // Mock the response of the add in uncategorized hook call - fetchUncategorizedDocumentPagesSpy.mockResolvedValueOnce([ - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 2, - }), - { ...UNCATEGORIZED_DOCUMENT_PAGE, documentId: DOCUMENT_ID_2, categoryId: null, sort: 3 }, - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 4, - }), - ]); - - guidelineActions.current.moveDocumentPage(UNCATEGORIZED_DOCUMENT_PAGE, DOCUMENT_ID_2, 2, null); - - expect(moveDocumentPageSpy).toHaveBeenCalledOnce(); - expect(fetchUncategorizedDocumentPagesSpy).toHaveBeenCalledTimes(2); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentPage:MoveEvent', - { - documentPage: { - ...UNCATEGORIZED_DOCUMENT_PAGE, - sort: 1, - documentId: DOCUMENT_ID_1, - categoryId: null, - }, - categoryId: null, - documentId: DOCUMENT_ID_2, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { - documentPage: { - ...UNCATEGORIZED_DOCUMENT_PAGE, - sort: 1, - documentId: DOCUMENT_ID_1, - categoryId: null, - }, - action: 'delete', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { - documentPage: { - ...UNCATEGORIZED_DOCUMENT_PAGE, - sort: 2, - documentId: DOCUMENT_ID_2, - categoryId: null, - }, - action: 'add', - }, - ], - [ - 'AppBridge:GuidelineDocument:DocumentPageAction', - { documentPage: { ...UNCATEGORIZED_DOCUMENT_PAGE, documentId: DOCUMENT_ID_1 }, action: 'delete' }, - ], - [ - 'AppBridge:GuidelineDocument:DocumentPageAction', - { - documentPage: { - ...UNCATEGORIZED_DOCUMENT_PAGE, - sort: 2, - documentId: DOCUMENT_ID_2, - categoryId: null, - }, - action: 'add', - }, - ], - ]); - - expect( - uncategorizedDocumentPagesInDocumentId1.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - - expect( - uncategorizedDocumentPagesInDocumentId2.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE.id, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - }); - - it('should move a categorized document page to another document as uncategorized', async () => { - const DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_5, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - sort: 5, - }); - - const appBridge = getAppBridgeThemeStub(); - const fetchCategorizedDocumentPagesSpy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); - const fetchUncategorizedDocumentPagesSpy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const moveDocumentPageSpy = vi.spyOn(appBridge, 'moveDocumentPage').mockResolvedValueOnce({ - ...DOCUMENT_PAGE, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 2, - }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - // Mock the response to add an extra category to the document category - fetchCategorizedDocumentPagesSpy.mockResolvedValueOnce([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 2, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 3, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_4, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 4, - }), - DOCUMENT_PAGE, - ]); - - const { result: categorizedDocumentPagesInDocumentCategoryId1 } = renderHook(() => - useCategorizedDocumentPages(appBridge, DOCUMENT_CATEGORY_ID_1), - ); - - await waitFor(() => { - expect( - categorizedDocumentPagesInDocumentCategoryId1.current.documentPages.map( - (documentPage) => documentPage.id, - ), - ).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_ID_4, - DOCUMENT_PAGE.id, - ]); - }); - - const { result: uncategorizedDocumentPagesInDocumentId2 } = renderHook(() => - useUncategorizedDocumentPages(appBridge, DOCUMENT_ID_2), - ); - - await waitFor(() => { - expect( - uncategorizedDocumentPagesInDocumentId2.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - - // Mock the response of the add in uncategorized hook call - fetchUncategorizedDocumentPagesSpy.mockResolvedValueOnce([ - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 2, - }), - { ...DOCUMENT_PAGE, documentId: DOCUMENT_ID_2, categoryId: null, sort: 3 }, - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 4, - }), - ]); - - guidelineActions.current.moveDocumentPage(DOCUMENT_PAGE, DOCUMENT_ID_2, 2, null); - - expect(moveDocumentPageSpy).toHaveBeenCalledOnce(); - expect(fetchUncategorizedDocumentPagesSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentPage:MoveEvent', - { - documentPage: { - ...DOCUMENT_PAGE, - sort: 5, - documentId: DOCUMENT_ID_1, - }, - categoryId: null, - documentId: DOCUMENT_ID_2, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { - documentPage: { - ...DOCUMENT_PAGE, - sort: 5, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - }, - action: 'delete', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { - documentPage: { - ...DOCUMENT_PAGE, - sort: 2, - documentId: DOCUMENT_ID_2, - categoryId: null, - }, - action: 'add', - }, - ], - [ - 'AppBridge:GuidelineDocumentCategory:DocumentPageAction', - { - documentPage: { - ...DOCUMENT_PAGE, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - }, - action: 'delete', - }, - ], - [ - 'AppBridge:GuidelineDocument:DocumentPageAction', - { - documentPage: { - ...DOCUMENT_PAGE, - sort: 2, - documentId: DOCUMENT_ID_2, - categoryId: null, - }, - action: 'add', - }, - ], - ]); - - expect( - categorizedDocumentPagesInDocumentCategoryId1.current.documentPages.map( - (documentPage) => documentPage.id, - ), - ).toEqual([DOCUMENT_PAGE_ID_1, DOCUMENT_PAGE_ID_2, DOCUMENT_PAGE_ID_3, DOCUMENT_PAGE_ID_4]); - - expect( - uncategorizedDocumentPagesInDocumentId2.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE.id, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - }); - - it('should move an uncategorized document page to another document as categorized', async () => { - const UNCATEGORIZED_DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_5, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 1, - }); - - const appBridge = getAppBridgeThemeStub(); - const fetchUncategorizedDocumentPagesSpy = vi.spyOn(appBridge, 'getUncategorizedDocumentPagesByDocumentId'); - const fetchCategorizedDocumentPagesSpy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const moveDocumentPageSpy = vi.spyOn(appBridge, 'moveDocumentPage').mockResolvedValueOnce({ - ...UNCATEGORIZED_DOCUMENT_PAGE, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_1, - sort: 2, - }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - // Mock the response to add an extra category to the document - fetchUncategorizedDocumentPagesSpy.mockResolvedValueOnce([ - UNCATEGORIZED_DOCUMENT_PAGE, - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 2, - }), - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 3, - }), - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID_1, - categoryId: null, - sort: 4, - }), - ]); - - const { result: uncategorizedDocumentPagesInDocumentId1 } = renderHook(() => - useUncategorizedDocumentPages(appBridge, DOCUMENT_ID_1), - ); - - await waitFor(() => { - expect( - uncategorizedDocumentPagesInDocumentId1.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE.id, - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - }); - - const { result: categorizedDocumentPagesInDocumentId2 } = renderHook(() => - useCategorizedDocumentPages(appBridge, DOCUMENT_CATEGORY_ID_1), - ); - - await waitFor(() => { - expect( - categorizedDocumentPagesInDocumentId2.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([DOCUMENT_PAGE_ID_1, DOCUMENT_PAGE_ID_2, DOCUMENT_PAGE_ID_3, DOCUMENT_PAGE_ID_4]); - }); - - // Mock the response of the add in uncategorized hook call - fetchCategorizedDocumentPagesSpy.mockResolvedValueOnce([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 2, - }), - { ...UNCATEGORIZED_DOCUMENT_PAGE, documentId: DOCUMENT_ID_2, categoryId: null, sort: 3 }, - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 4, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_4, - documentId: DOCUMENT_ID_2, - categoryId: null, - sort: 5, - }), - ]); - - guidelineActions.current.moveDocumentPage( - UNCATEGORIZED_DOCUMENT_PAGE, - DOCUMENT_ID_2, - 2, - DOCUMENT_CATEGORY_ID_1, - ); - - expect(moveDocumentPageSpy).toHaveBeenCalledOnce(); - expect(fetchUncategorizedDocumentPagesSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentPage:MoveEvent', - { - documentPage: { - ...UNCATEGORIZED_DOCUMENT_PAGE, - sort: 1, - documentId: DOCUMENT_ID_1, - }, - categoryId: DOCUMENT_CATEGORY_ID_1, - documentId: DOCUMENT_ID_2, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { - documentPage: { - ...UNCATEGORIZED_DOCUMENT_PAGE, - sort: 1, - documentId: DOCUMENT_ID_1, - categoryId: null, - }, - action: 'delete', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { - documentPage: { - ...UNCATEGORIZED_DOCUMENT_PAGE, - sort: 2, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_1, - }, - action: 'add', - }, - ], - [ - 'AppBridge:GuidelineDocument:DocumentPageAction', - { documentPage: { ...UNCATEGORIZED_DOCUMENT_PAGE, documentId: DOCUMENT_ID_1 }, action: 'delete' }, - ], - [ - 'AppBridge:GuidelineDocumentCategory:DocumentPageAction', - { - documentPage: { - ...UNCATEGORIZED_DOCUMENT_PAGE, - sort: 2, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_1, - }, - action: 'add', - }, - ], - ]); - - expect( - uncategorizedDocumentPagesInDocumentId1.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([ - UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - ]); - - expect( - categorizedDocumentPagesInDocumentId2.current.documentPages.map((documentPage) => documentPage.id), - ).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - UNCATEGORIZED_DOCUMENT_PAGE.id, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_ID_4, - ]); - }); - }); - - it('should move a categorized document page to another document as categorized', async () => { - const DOCUMENT_PAGE = DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_5, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - sort: 5, - }); - - const appBridge = getAppBridgeThemeStub(); - const fetchCategorizedDocumentPagesSpy = vi.spyOn(appBridge, 'getDocumentPagesByDocumentCategoryId'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const moveDocumentPageSpy = vi.spyOn(appBridge, 'moveDocumentPage').mockResolvedValueOnce({ - ...DOCUMENT_PAGE, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_2, - sort: 2, - }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - // Mock the response to add an extra category to the document category - fetchCategorizedDocumentPagesSpy.mockResolvedValueOnce([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - sort: 2, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - sort: 3, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_4, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - sort: 4, - }), - DOCUMENT_PAGE, - ]); - - const { result: categorizedDocumentPagesInDocumentCategoryId1 } = renderHook(() => - useCategorizedDocumentPages(appBridge, DOCUMENT_CATEGORY_ID_1), - ); - - await waitFor(() => { - expect( - categorizedDocumentPagesInDocumentCategoryId1.current.documentPages.map( - (documentPage) => documentPage.id, - ), - ).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_ID_4, - DOCUMENT_PAGE.id, - ]); - }); - - const { result: categorizedDocumentPagesInDocumentCategoryId2 } = renderHook(() => - useCategorizedDocumentPages(appBridge, DOCUMENT_CATEGORY_ID_2), - ); - - await waitFor(() => { - expect( - categorizedDocumentPagesInDocumentCategoryId2.current.documentPages.map( - (documentPage) => documentPage.id, - ), - ).toEqual([DOCUMENT_PAGE_ID_1, DOCUMENT_PAGE_ID_2, DOCUMENT_PAGE_ID_3, DOCUMENT_PAGE_ID_4]); - }); - - // Mock the response of the add in uncategorized hook call - fetchCategorizedDocumentPagesSpy.mockResolvedValueOnce([ - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_1, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_2, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_2, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_2, - sort: 2, - }), - { ...DOCUMENT_PAGE, documentId: DOCUMENT_ID_2, categoryId: DOCUMENT_CATEGORY_ID_2, sort: 3 }, - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_3, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_2, - sort: 4, - }), - DocumentPageDummy.withFields({ - id: DOCUMENT_PAGE_ID_4, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_2, - sort: 4, - }), - ]); - - guidelineActions.current.moveDocumentPage(DOCUMENT_PAGE, DOCUMENT_ID_2, 2, null); - - expect(moveDocumentPageSpy).toHaveBeenCalledOnce(); - expect(fetchCategorizedDocumentPagesSpy).toHaveBeenCalledTimes(2); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentPage:MoveEvent', - { - documentPage: { - ...DOCUMENT_PAGE, - sort: 5, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - }, - categoryId: null, - documentId: DOCUMENT_ID_2, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { - documentPage: { - ...DOCUMENT_PAGE, - sort: 5, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - }, - action: 'delete', - }, - ], - [ - 'AppBridge:GuidelineDocumentPage:Action', - { - documentPage: { - ...DOCUMENT_PAGE, - sort: 2, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_2, - }, - action: 'add', - }, - ], - [ - 'AppBridge:GuidelineDocumentCategory:DocumentPageAction', - { - documentPage: { - ...DOCUMENT_PAGE, - documentId: DOCUMENT_ID_1, - categoryId: DOCUMENT_CATEGORY_ID_1, - }, - action: 'delete', - }, - ], - [ - 'AppBridge:GuidelineDocumentCategory:DocumentPageAction', - { - documentPage: { - ...DOCUMENT_PAGE, - sort: 2, - documentId: DOCUMENT_ID_2, - categoryId: DOCUMENT_CATEGORY_ID_2, - }, - action: 'add', - }, - ], - ]); - - expect( - categorizedDocumentPagesInDocumentCategoryId1.current.documentPages.map( - (documentPage) => documentPage.id, - ), - ).toEqual([DOCUMENT_PAGE_ID_1, DOCUMENT_PAGE_ID_2, DOCUMENT_PAGE_ID_3, DOCUMENT_PAGE_ID_4]); - - expect( - categorizedDocumentPagesInDocumentCategoryId2.current.documentPages.map( - (documentPage) => documentPage.id, - ), - ).toEqual([ - DOCUMENT_PAGE_ID_1, - DOCUMENT_PAGE_ID_2, - DOCUMENT_PAGE.id, - DOCUMENT_PAGE_ID_3, - DOCUMENT_PAGE_ID_4, - ]); - }); - }); - - it('should move an ungrouped document and emit 2 events', async () => { - const DOCUMENT = DocumentDummy.withFields({ ...DocumentDummy.with(DOCUMENT_ID_5), sort: 5 }); - - const appBridge = getAppBridgeThemeStub(); - const fetchDocumentsSpy = vi.spyOn(appBridge, 'getUngroupedDocuments'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const moveDocumentSpy = vi.spyOn(appBridge, 'moveDocument').mockResolvedValueOnce({ - ...DOCUMENT, - sort: 2, - }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - // Mock the response to add an extra category to the document category - fetchDocumentsSpy.mockResolvedValueOnce([ - DocumentDummy.withFields({ ...DocumentDummy.with(DOCUMENT_ID_1), sort: 1 }), - DocumentDummy.withFields({ ...DocumentDummy.with(DOCUMENT_ID_2), sort: 2 }), - DocumentDummy.withFields({ ...DocumentDummy.with(DOCUMENT_ID_3), sort: 3 }), - DocumentDummy.withFields({ ...DocumentDummy.with(DOCUMENT_ID_4), sort: 4 }), - DOCUMENT, - ]); - - const { result: ungroupedDocuments } = renderHook(() => useUngroupedDocuments(appBridge)); - - await waitFor(() => { - expect(ungroupedDocuments.current.documents.map((document) => document.id)).toEqual([ - DOCUMENT_ID_1, - DOCUMENT_ID_2, - DOCUMENT_ID_3, - DOCUMENT_ID_4, - DOCUMENT_ID_5, - ]); - }); - - guidelineActions.current.moveDocument(DOCUMENT, 2); - - expect(moveDocumentSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocument:MoveEvent', - { - document: { - ...DOCUMENT, - sort: 5, - }, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocument:Action', - { - document: { - ...DOCUMENT, - sort: 2, - }, - action: 'move', - }, - ], - ]); - }); - }); - - it('should move a document into a group and emit 3 events', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getDocumentsByDocumentGroupId'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - const DOCUMENT_1 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_1), - sort: 1, - }); - const DOCUMENT_2 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_2), - sort: 2, - }); - const DOCUMENT_3 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_3), - sort: 3, - }); - const DOCUMENT_4 = DocumentDummy.withFields({ - ...DocumentDummy.with(DOCUMENT_ID_4), - sort: 4, - }); - - const moveGroupSpy = spy.mockResolvedValueOnce([DOCUMENT_1, DOCUMENT_2, DOCUMENT_3, DOCUMENT_4]); - const moveGroupSpyAfter = spy.mockResolvedValueOnce([DOCUMENT_2, DOCUMENT_3, DOCUMENT_4]); - - const { result: groupedDocuments } = renderHook(() => useGroupedDocuments(appBridge, DOCUMENT_GROUP_ID_1)); - - expect(moveGroupSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(groupedDocuments.current.documents.map((document) => document.id)).toEqual([ - DOCUMENT_ID_1, - DOCUMENT_ID_2, - DOCUMENT_ID_3, - DOCUMENT_ID_4, - ]); - }); - - guidelineActions.current.moveDocument(DOCUMENT_1, 5, DOCUMENT_GROUP_ID_2); - - expect(moveGroupSpyAfter).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocument:MoveEvent', - { - document: DOCUMENT_1, - position: 5, - newGroupId: DOCUMENT_GROUP_ID_2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocument:Action', - { - document: DOCUMENT_1, - action: 'delete', - }, - ], - [ - 'AppBridge:GuidelineDocument:Action', - { - document: { - ...DOCUMENT_1, - sort: 5, - }, - action: 'add', - }, - ], - ]); - }); - }); - - it('should move a document group and emit 2 events', async () => { - const DOCUMENT_GROUP_1 = DocumentGroupDummy.withFields({ - ...DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1), - sort: 1, - }); - - const appBridge = getAppBridgeThemeStub(); - const fetchDocumentGroupsSpy = vi.spyOn(appBridge, 'getDocumentGroups'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const moveDocumentGroupSpy = vi.spyOn(appBridge, 'moveDocumentGroup').mockResolvedValueOnce({ - ...DOCUMENT_GROUP_1, - sort: 2, - }); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - fetchDocumentGroupsSpy.mockResolvedValueOnce([ - DOCUMENT_GROUP_1, - DocumentGroupDummy.withFields({ ...DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2), sort: 2 }), - DocumentGroupDummy.withFields({ ...DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3), sort: 3 }), - ]); - - const { result: documentGroups } = renderHook(() => useDocumentGroups(appBridge)); - - await waitFor(() => { - expect(documentGroups.current.documentGroups.map((documentGroup) => documentGroup.id)).toEqual([ - DOCUMENT_GROUP_ID_1, - DOCUMENT_GROUP_ID_2, - DOCUMENT_GROUP_ID_3, - ]); - }); - - guidelineActions.current.moveDocumentGroup(DOCUMENT_GROUP_1, 2); - - expect(moveDocumentGroupSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentGroup:MoveEvent', - { - documentGroup: DOCUMENT_GROUP_1, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentGroup:Action', - { - documentGroup: { - ...DOCUMENT_GROUP_1, - sort: 2, - }, - action: 'update', - }, - ], - ]); - }); - }); - - it('should move a document category and emit 2 events', async () => { - const CATEGORY_1 = DocumentCategoryDummy.withFields({ - ...DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID_1), - sort: 1, - }); - const CATEGORY_2 = DocumentCategoryDummy.withFields({ - ...DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID_2), - sort: 2, - }); - const CATEGORY_3 = DocumentCategoryDummy.withFields({ - ...DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID_3), - sort: 3, - }); - - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'getDocumentCategoriesByDocumentId'); - const emitSpy = vi.spyOn(window.emitter, 'emit'); - - const { result: guidelineActions } = renderHook(() => useGuidelineActions(appBridge)); - - const categoriesSpy = spy.mockResolvedValueOnce([CATEGORY_1, CATEGORY_2, CATEGORY_3]); - - const { result: documentCategories } = renderHook(() => useDocumentCategories(appBridge, DOCUMENT_ID_1)); - - expect(categoriesSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect( - documentCategories.current.documentCategories.map((documentCategory) => documentCategory.id), - ).toEqual([DOCUMENT_CATEGORY_ID_1, DOCUMENT_CATEGORY_ID_2, DOCUMENT_CATEGORY_ID_3]); - }); - - guidelineActions.current.moveDocumentCategory(CATEGORY_1, DOCUMENT_ID_1, 2); - expect(categoriesSpy).toHaveBeenCalledOnce(); - - await waitFor(() => { - expect(emitSpy.mock.calls).toEqual([ - [ - 'AppBridge:GuidelineDocumentCategory:MoveEvent', - { - documentCategory: CATEGORY_1, - documentId: DOCUMENT_ID_1, - position: 2, - action: 'movePreview', - }, - ], - [ - 'AppBridge:GuidelineDocumentCategory:Action', - { - documentCategory: { - ...CATEGORY_1, - documentId: DOCUMENT_ID_1, - sort: 2, - }, - action: 'update', - }, - ], - ]); - }); - }); -}); diff --git a/packages/app-bridge/src/react/useGuidelineActions.ts b/packages/app-bridge/src/react/useGuidelineActions.ts deleted file mode 100644 index 1566b79f2..000000000 --- a/packages/app-bridge/src/react/useGuidelineActions.ts +++ /dev/null @@ -1,676 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useCallback } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { - type BrandportalLink, - type CoverPage, - type CoverPageCreate, - type CoverPageUpdate, - type CoverPageUpdateLegacy, - type DocumentCategory, - type DocumentCategoryCreate, - type DocumentCategoryDelete, - type DocumentCategoryUpdate, - type DocumentGroup, - type DocumentGroupCreate, - type DocumentGroupDelete, - type DocumentGroupUpdate, - type DocumentLibraryCreate, - type DocumentLibraryDelete, - type DocumentLibraryUpdate, - type DocumentLinkCreate, - type DocumentLinkDelete, - type DocumentLinkUpdate, - type DocumentPage, - type DocumentPageCreate, - type DocumentPageDelete, - type DocumentPageUpdate, - type DocumentStandardCreate, - type DocumentStandardDelete, - type DocumentStandardUpdate, - type EmitterEvents, -} from '../types'; - -export const useGuidelineActions = (appBridge: AppBridgeTheme) => { - const createLink = useCallback( - async (link: DocumentLinkCreate) => { - const result = await appBridge.createLink(link); - - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: { ...result, ...(link.documentGroupId && { documentGroupId: link.documentGroupId }) }, - action: 'add', - }); - - if (link.documentGroupId) { - window.emitter.emit('AppBridge:GuidelineDocumentGroup:DocumentAction', { - document: { id: result.id, documentGroupId: link.documentGroupId }, - action: 'add', - }); - } - - return result; - }, - [appBridge], - ); - - const updateLink = useCallback( - async (link: DocumentLinkUpdate) => { - const result = await appBridge.updateLink(link); - - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: { ...result, ...(link.documentGroupId && { documentGroupId: link.documentGroupId }) }, - action: 'update', - }); - - return result; - }, - [appBridge], - ); - - const deleteLink = useCallback( - async (link: DocumentLinkDelete) => { - await appBridge.deleteLink(link.id); - - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: link, - action: 'delete', - }); - - if (link.documentGroupId) { - window.emitter.emit('AppBridge:GuidelineDocumentGroup:DocumentAction', { - document: { ...link, documentGroupId: link.documentGroupId }, - action: 'delete', - }); - } - }, - [appBridge], - ); - - const createLibrary = useCallback( - async (library: DocumentLibraryCreate) => { - const result = await appBridge.createLibrary(library); - - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: { - ...result, - ...(library.documentGroupId && { documentGroupId: library.documentGroupId }), - }, - action: 'add', - }); - - if (library.documentGroupId) { - window.emitter.emit('AppBridge:GuidelineDocumentGroup:DocumentAction', { - document: { id: result.id, documentGroupId: library.documentGroupId }, - action: 'add', - }); - } - - return result; - }, - [appBridge], - ); - - const updateLibrary = useCallback( - async (library: DocumentLibraryUpdate) => { - const result = await appBridge.updateLibrary(library); - - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: { - ...result, - ...(library.documentGroupId && { documentGroupId: library.documentGroupId }), - }, - action: 'update', - }); - - return result; - }, - [appBridge], - ); - - const deleteLibrary = useCallback( - async (library: DocumentLibraryDelete) => { - await appBridge.deleteLibrary(library.id); - - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: library, - action: 'delete', - }); - - if (library.documentGroupId) { - window.emitter.emit('AppBridge:GuidelineDocumentGroup:DocumentAction', { - document: { ...library, documentGroupId: library.documentGroupId }, - action: 'delete', - }); - } - }, - [appBridge], - ); - - const createStandardDocument = useCallback( - async (document: DocumentStandardCreate) => { - const result = await appBridge.createStandardDocument(document); - - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: { - ...result, - ...(document.documentGroupId && { documentGroupId: document.documentGroupId }), - }, - action: 'add', - }); - - if (document.documentGroupId) { - window.emitter.emit('AppBridge:GuidelineDocumentGroup:DocumentAction', { - document: { id: result.id, documentGroupId: document.documentGroupId }, - action: 'add', - }); - } - - return result; - }, - [appBridge], - ); - - const updateStandardDocument = useCallback( - async (document: DocumentStandardUpdate) => { - const result = await appBridge.updateStandardDocument(document); - - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: { - ...result, - ...(document.documentGroupId && { documentGroupId: document.documentGroupId }), - }, - action: 'update', - }); - - return result; - }, - [appBridge], - ); - - const deleteStandardDocument = useCallback( - async (document: DocumentStandardDelete) => { - await appBridge.deleteStandardDocument(document.id); - - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document, - action: 'delete', - }); - - if (document.documentGroupId) { - window.emitter.emit('AppBridge:GuidelineDocumentGroup:DocumentAction', { - document: { ...document, documentGroupId: document.documentGroupId }, - action: 'delete', - }); - } - }, - [appBridge], - ); - - const createDocumentGroup = useCallback( - async (documentGroup: DocumentGroupCreate) => { - const result = await appBridge.createDocumentGroup(documentGroup); - - window.emitter.emit('AppBridge:GuidelineDocumentGroup:Action', { - documentGroup: result, - action: 'add', - }); - - return result; - }, - [appBridge], - ); - - const updateDocumentGroup = useCallback( - async (documentGroupUpdate: DocumentGroupUpdate) => { - const documentGroup = await appBridge.updateDocumentGroup(documentGroupUpdate); - - window.emitter.emit('AppBridge:GuidelineDocumentGroup:Action', { - documentGroup, - action: 'update', - }); - }, - [appBridge], - ); - - const deleteDocumentGroup = useCallback( - async (documentGroup: DocumentGroupDelete) => { - await appBridge.deleteDocumentGroup(documentGroup.id); - - window.emitter.emit('AppBridge:GuidelineDocumentGroup:Action', { - documentGroup, - action: 'delete', - }); - }, - [appBridge], - ); - - const createDocumentPage = useCallback( - async (documentPage: DocumentPageCreate) => { - const result = await appBridge.createDocumentPage(documentPage); - - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - documentPage: result, - action: 'add', - }); - - if (documentPage.categoryId) { - window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { - documentPage: { - id: result.id, - categoryId: documentPage.categoryId, - documentId: documentPage.documentId, - }, - action: 'add', - }); - } - - return result; - }, - [appBridge], - ); - - /** - * A method for page update - * - * @param documentPage - {@link DocumentPageUpdate} object - * @requires id - Indicates page identifier. - * - * - * and at least one of - * - * @property title - Indicates title of a page. - * @property documentId - Indicates to witch document the page belongs to. - * @property categoryId - Indicates to witch category the page belongs to. - * @property visibility - Indicates whether the page is visible only to the editor or everyone. - * @property linkUrl - Indicates whether the page is link or not. - */ - const updateDocumentPage = useCallback( - async (documentPage: DocumentPageUpdate) => { - const result = await appBridge.updateDocumentPage(documentPage); - - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - documentPage: result, - action: 'update', - }); - - return result; - }, - [appBridge], - ); - - const deleteDocumentPage = useCallback( - async (documentPage: DocumentPageDelete) => { - await appBridge.deleteDocumentPage(documentPage.id); - - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - documentPage: { ...documentPage, categoryId: documentPage.categoryId ?? null }, - action: 'delete', - }); - - if (documentPage.categoryId) { - window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { - documentPage: { - ...documentPage, - categoryId: documentPage.categoryId, - documentId: documentPage.documentId, - }, - action: 'delete', - }); - } else { - window.emitter.emit('AppBridge:GuidelineDocument:DocumentPageAction', { - documentPage, - action: 'delete', - }); - } - }, - [appBridge], - ); - - const duplicateDocumentPage = useCallback( - async ({ id, documentId, categoryId }: { id: number; documentId: number; categoryId?: number }) => { - const duplicatedDocumentPage = await appBridge.duplicateDocumentPage(id); - - window.emitter.emit('AppBridge:GuidelineDocumentPage:Action', { - documentPage: { ...duplicatedDocumentPage, documentId, categoryId } as unknown as DocumentPage, - action: 'add', - }); - - if (categoryId) { - window.emitter.emit('AppBridge:GuidelineDocumentCategory:DocumentPageAction', { - documentPage: { id: duplicatedDocumentPage.id, categoryId, documentId }, - action: 'add', - }); - } - - return duplicatedDocumentPage; - }, - [appBridge], - ); - - const createDocumentCategory = useCallback( - async (category: DocumentCategoryCreate) => { - const result = await appBridge.createDocumentCategory(category); - - window.emitter.emit('AppBridge:GuidelineDocumentCategory:Action', { - documentCategory: result, - action: 'add', - }); - - window.emitter.emit('AppBridge:GuidelineDocument:DocumentCategoryAction', { - documentCategory: result, - action: 'add', - }); - - return result; - }, - [appBridge], - ); - - const updateDocumentCategory = useCallback( - async (category: DocumentCategoryUpdate) => { - const documentCategory = await appBridge.updateDocumentCategory(category); - - window.emitter.emit('AppBridge:GuidelineDocumentCategory:Action', { - documentCategory, - action: 'update', - }); - }, - [appBridge], - ); - - const deleteDocumentCategory = useCallback( - async (documentCategory: DocumentCategoryDelete) => { - await appBridge.deleteDocumentCategory(documentCategory.id); - - window.emitter.emit('AppBridge:GuidelineDocumentCategory:Action', { - documentCategory, - action: 'delete', - }); - - window.emitter.emit('AppBridge:GuidelineDocument:DocumentCategoryAction', { - documentCategory, - action: 'delete', - }); - }, - [appBridge], - ); - - const createCoverPage = useCallback( - async (coverPage: CoverPageCreate) => { - const result = await appBridge.createCoverPage(coverPage); - - window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { - coverPage: result, - action: 'add', - }); - - return result; - }, - [appBridge], - ); - - const updateCoverPage = useCallback( - async (coverPage: CoverPageUpdate) => { - const result = await appBridge.updateCoverPage(coverPage); - - window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { - coverPage: result, - action: 'update', - }); - - return result; - }, - [appBridge], - ); - - /** - * @deprecated legacy method, should be removed once new endpoint is available - */ - const updateLegacyCoverPage = useCallback( - async (coverPage: Partial) => { - const legacyCoverPage: CoverPageUpdateLegacy = { - ...(coverPage.title && { brandhome_title: coverPage.title }), - ...(coverPage.draft !== undefined && { brandhome_draft: coverPage.draft }), - ...(coverPage.hideInNav !== undefined && { brandhome_hide_in_nav: coverPage.hideInNav }), - }; - - const result = await appBridge.updateLegacyCoverPage(legacyCoverPage); - - window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { - coverPage: coverPage as CoverPage, - action: 'update', - }); - - return result; - }, - [appBridge], - ); - - const deleteCoverPage = useCallback(async () => { - await appBridge.deleteCoverPage(); - - window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { - action: 'delete', - }); - }, [appBridge]); - - const updateBrandportalLink = useCallback( - async (brandportalLink: Partial) => { - const result = await appBridge.updateBrandportalLink(brandportalLink); - - if (result) { - window.emitter.emit('AppBridge:GuidelineBrandportalLink:Action', { - brandportalLink: result as BrandportalLink, - action: 'update', - }); - } - - return result; - }, - [appBridge], - ); - - const moveDocument = useCallback( - async ( - document: { id: number; sort?: Nullable; documentGroupId?: Nullable }, - position: number, - newGroupId?: number, - ) => { - const previewUpdateChannel: keyof EmitterEvents = 'AppBridge:GuidelineDocument:MoveEvent'; - window.emitter.emit(previewUpdateChannel, { - document, - position, - newGroupId, - action: 'movePreview', - }); - - const result = await appBridge.moveDocument(document.id, position, newGroupId); - - const channel: keyof EmitterEvents = 'AppBridge:GuidelineDocument:Action'; - - // Emits in `useDocumentGroups` hook - if (document.documentGroupId === newGroupId) { - window.emitter.emit(channel, { - document: { ...result, sort: position }, - action: 'move', - }); - } else { - window.emitter.emit(channel, { - document, - action: 'delete', - }); - - window.emitter.emit(channel, { - document: result, - action: 'add', - }); - } - }, - [appBridge], - ); - - const moveDocumentGroup = useCallback( - async (documentGroup: { id: number; sort?: Nullable }, position: number) => { - const previewUpdateChannel: keyof EmitterEvents = 'AppBridge:GuidelineDocumentGroup:MoveEvent'; - window.emitter.emit(previewUpdateChannel, { - documentGroup, - position, - action: 'movePreview', - }); - - await appBridge.moveDocumentGroup(documentGroup.id, position); - - window.emitter.emit('AppBridge:GuidelineDocumentGroup:Action', { - documentGroup: { ...documentGroup, sort: position } as DocumentGroup, - action: 'update', - }); - }, - [appBridge], - ); - - const moveDocumentCategory = useCallback( - async (documentCategory: { id: number; sort?: Nullable }, documentId: number, position: number) => { - const previewUpdateChannel: keyof EmitterEvents = 'AppBridge:GuidelineDocumentCategory:MoveEvent'; - window.emitter.emit(previewUpdateChannel, { - documentCategory, - documentId, - position, - action: 'movePreview', - }); - - await appBridge.moveDocumentCategory(documentCategory.id, documentId, position); - - window.emitter.emit('AppBridge:GuidelineDocumentCategory:Action', { - documentCategory: { ...documentCategory, documentId, sort: position } as DocumentCategory, - action: 'update', - }); - }, - [appBridge], - ); - - const moveDocumentPage = useCallback( - async ( - documentPage: { - id: number; - documentId: number; - sort?: Nullable; - categoryId?: Nullable; - }, - documentId: number, - position?: number, - categoryId: Nullable = null, - ) => { - const previewUpdateChannel: keyof EmitterEvents = 'AppBridge:GuidelineDocumentPage:MoveEvent'; - window.emitter.emit(previewUpdateChannel, { - documentPage, - documentId, - position, - categoryId, - action: 'movePreview', - }); - - const result = await appBridge.moveDocumentPage( - documentPage.id, - documentId, - position, - categoryId ?? undefined, - ); - - const channel: keyof EmitterEvents = 'AppBridge:GuidelineDocumentPage:Action'; - - // Emits in `useCategorizedDocumentPages` and `useUncategorizedDocumentPages` hooks - if (documentPage.categoryId === categoryId && documentPage.documentId === documentId) { - window.emitter.emit(channel, { - documentPage: { ...result, sort: position ?? result.sort }, - action: 'move', - }); - } else { - window.emitter.emit(channel, { - documentPage: { ...documentPage, categoryId: documentPage.categoryId ?? null }, - action: 'delete', - }); - - window.emitter.emit(channel, { - documentPage: result, - action: 'add', - }); - } - - // Emits in `useDocumentCategories` and `useDocuments` hook - const deleteChannel = documentPage.categoryId - ? 'AppBridge:GuidelineDocumentCategory:DocumentPageAction' - : 'AppBridge:GuidelineDocument:DocumentPageAction'; - - const addChannel = result.categoryId - ? 'AppBridge:GuidelineDocumentCategory:DocumentPageAction' - : 'AppBridge:GuidelineDocument:DocumentPageAction'; - - window.emitter.emit(deleteChannel, { documentPage, action: 'delete' }); - window.emitter.emit(addChannel, { documentPage: result, action: 'add' }); - }, - [appBridge], - ); - - const updateDocumentPageTargets = useCallback( - async (targets: number[], documentPageIds: number[]) => { - const result = await appBridge.updateDocumentPageTargets(targets, documentPageIds); - - window.emitter.emit('AppBridge:GuidelineDocumentPageTargets:Action', { - payload: { targets, pageIds: documentPageIds }, - action: 'update', - }); - - return result; - }, - [appBridge], - ); - - const updateDocumentTargets = useCallback( - async (targets: number[], documentIds: number[]) => { - const result = await appBridge.updateDocumentTargets(targets, documentIds); - - window.emitter.emit('AppBridge:GuidelineDocumentTargets:Action', { - payload: { targets, documentIds }, - action: 'update', - }); - - return result; - }, - [appBridge], - ); - - return { - createLink, - updateLink, - deleteLink, - createDocumentPage, - updateDocumentPage, - deleteDocumentPage, - duplicateDocumentPage, - moveDocumentPage, - createLibrary, - updateLibrary, - deleteLibrary, - createDocumentCategory, - updateDocumentCategory, - deleteDocumentCategory, - moveDocumentCategory, - createCoverPage, - updateCoverPage, - deleteCoverPage, - updateLegacyCoverPage, - moveDocumentGroup, - createDocumentGroup, - updateDocumentGroup, - deleteDocumentGroup, - updateBrandportalLink, - createDocument: createStandardDocument, - updateDocument: updateStandardDocument, - deleteDocument: deleteStandardDocument, - moveDocument, - updateDocumentPageTargets, - updateDocumentTargets, - }; -}; diff --git a/packages/app-bridge/src/react/useLanguage.spec.ts b/packages/app-bridge/src/react/useLanguage.spec.ts deleted file mode 100644 index 5545b11cc..000000000 --- a/packages/app-bridge/src/react/useLanguage.spec.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { act, renderHook } from '@testing-library/react'; -import { describe, expect, it, vi } from 'vitest'; - -import { getAppBridgeThemeStub } from '../tests/AppBridgeThemeStub'; - -import { useLanguage } from './useLanguage'; - -describe('useLanguage', () => { - it('should return default language initially', () => { - const appBridge = getAppBridgeThemeStub(); - appBridge.context.withArgs('currentLanguage').returns({ get: () => 'fr', subscribe: () => vi.fn() }); - appBridge.context.withArgs('defaultLanguage').returns({ get: () => 'en', subscribe: () => vi.fn() }); - - const { result } = renderHook(() => useLanguage(appBridge)); - - expect(result.current.currentLanguage).toEqual('fr'); - expect(result.current.defaultLanguage).toEqual('en'); - }); - - it('should update language on context change', () => { - const appBridge = getAppBridgeThemeStub(); - appBridge.context.withArgs('currentLanguage').returns({ - get: () => 'fr', - subscribe: vi.fn(), - }); - appBridge.context.withArgs('defaultLanguage').returns({ - get: () => 'en', - subscribe: vi.fn(), - }); - - const { result } = renderHook(() => useLanguage(appBridge)); - - expect(result.current.currentLanguage).toEqual('fr'); - expect(result.current.defaultLanguage).toEqual('en'); - - act(() => { - const subscribeFn = appBridge.context('currentLanguage').subscribe; - if (vi.isMockFunction(subscribeFn)) { - subscribeFn.mock.calls[0][0]('de'); - } - }); - - expect(result.current.currentLanguage).toEqual('de'); - expect(result.current.defaultLanguage).toEqual('en'); - }); - - it('should unsubscribe on unmount', () => { - const appBridge = getAppBridgeThemeStub(); - const mockUnsubscribeCurrentLanguage = vi.fn(); - const mockUnsubscribeDefaultLanguage = vi.fn(); - - appBridge.context - .withArgs('currentLanguage') - .returns({ get: () => 'fr', subscribe: () => mockUnsubscribeCurrentLanguage }); - appBridge.context - .withArgs('defaultLanguage') - .returns({ get: () => 'en', subscribe: () => mockUnsubscribeDefaultLanguage }); - - const { unmount } = renderHook(() => useLanguage(appBridge)); - - unmount(); - - expect(mockUnsubscribeCurrentLanguage).toHaveBeenCalledTimes(1); - expect(mockUnsubscribeDefaultLanguage).toHaveBeenCalledTimes(1); - }); -}); diff --git a/packages/app-bridge/src/react/useLanguage.ts b/packages/app-bridge/src/react/useLanguage.ts deleted file mode 100644 index d0aee479e..000000000 --- a/packages/app-bridge/src/react/useLanguage.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useEffect, useState } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; - -type UseLanguageReturn = { - currentLanguage: string; - defaultLanguage: string; -}; - -export const useLanguage = (appBridge: AppBridgeTheme): UseLanguageReturn => { - const [currentLanguage, setCurrentLanguage] = useState(appBridge.context('currentLanguage').get()); - const [defaultLanguage, setDefaultLanguage] = useState(appBridge.context('defaultLanguage').get()); - - useEffect(() => { - const unsubscribeCurrentLanguageObserver = appBridge.context('currentLanguage').subscribe(setCurrentLanguage); - const unsubscribeDefaultLanguageObserver = appBridge.context('defaultLanguage').subscribe(setDefaultLanguage); - - return () => { - unsubscribeCurrentLanguageObserver(); - unsubscribeDefaultLanguageObserver(); - }; - }, [appBridge]); - - return { currentLanguage, defaultLanguage }; -}; diff --git a/packages/app-bridge/src/react/useNavigationManager.spec.ts b/packages/app-bridge/src/react/useNavigationManager.spec.ts deleted file mode 100644 index 5c3e5494f..000000000 --- a/packages/app-bridge/src/react/useNavigationManager.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { renderHook } from '@testing-library/react'; -import { beforeAll, describe, expect, it, vi } from 'vitest'; - -import { getAppBridgeThemeStub } from '../tests'; - -import { useNavigationManager } from './useNavigationManager'; - -describe('useNavigationManager hook', () => { - let useNavigationManagerStub: ReturnType; - - beforeAll(() => { - const appBridgeStub = getAppBridgeThemeStub(); - const { result } = renderHook(() => useNavigationManager(appBridgeStub)); - - useNavigationManagerStub = result.current; - }); - - it('should call openNavigationManager', async () => { - const spy = vi.spyOn(useNavigationManagerStub, 'openNavigationManager').mockImplementation(() => undefined); - - useNavigationManagerStub.openNavigationManager(); - - expect(spy).toBeCalled(); - }); -}); diff --git a/packages/app-bridge/src/react/useNavigationManager.ts b/packages/app-bridge/src/react/useNavigationManager.ts deleted file mode 100644 index 052b89a43..000000000 --- a/packages/app-bridge/src/react/useNavigationManager.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type AppBridgeTheme } from '../AppBridgeTheme'; - -export const useNavigationManager = (appBridge: AppBridgeTheme) => { - const { openNavigationManager } = appBridge; - - return { - openNavigationManager: () => openNavigationManager(), - }; -}; diff --git a/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts b/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts deleted file mode 100644 index 5c0c6a00f..000000000 --- a/packages/app-bridge/src/react/usePageTemplateSettings.spec.ts +++ /dev/null @@ -1,337 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { cleanup, renderHook, waitFor } from '@testing-library/react'; -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; - -import { getAppBridgeThemeStub } from '../tests'; -import { type ThemeTemplate } from '../types'; - -import { usePageTemplateSettings } from './usePageTemplateSettings'; - -const DOCUMENT_ID = 3462; -const THEME_SETTINGS = { - documentPage: { - customThemeSetting: 123, - themeExclusiveSetting: 234, - }, - cover: {}, - library: {}, -}; -const PAGE_SETTINGS = { - myCustomSetting: 123, -}; - -const PAGE_SETTINGS_WITH_OVERRIDES = { - ...PAGE_SETTINGS, - customThemeSetting: 321, -}; - -const PAGE_SETTINGS_WITH_NULL_OVERRIDES = { - ...PAGE_SETTINGS, - customThemeSetting: null, -}; - -describe('usePageTemplateSettings', () => { - beforeEach(() => { - vi.spyOn(console, 'error').mockImplementation(() => {}); - }); - - afterEach(() => { - vi.restoreAllMocks(); - cleanup(); - }); - - const loadUsePageTemplateSettings = ( - pageTemplateSettings: Record, - template: Parameters[1], - documentId?: Parameters[2], - themeSettings?: Record>, - ) => { - const appBridgeStub = getAppBridgeThemeStub({ - pageTemplateSettings, - themeSettings, - }); - - const { result } = renderHook(() => usePageTemplateSettings(appBridgeStub, template, documentId)); - return { result, appBridgeStub }; - }; - - it('returns the page settings for cover page', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'cover'); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(PAGE_SETTINGS); - }); - }); - - it('updates the page settings for cover page', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'cover'); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(PAGE_SETTINGS); - }); - - await result.current.updatePageTemplateSettings({ myCustomSetting: 456 }); - expect(result.current.isLoading).toEqual(false); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual({ ...PAGE_SETTINGS, myCustomSetting: 456 }); - }); - - // Reset the object to avoid mutation in other tests - await result.current.updatePageTemplateSettings({ myCustomSetting: 123 }); - }); - - it('returns the page settings for document page', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'documentPage', DOCUMENT_ID); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(PAGE_SETTINGS); - }); - }); - - it('returns `null` for document page if no document page id passed', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'documentPage'); - - expect(result.current.isLoading).toEqual(false); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(null); - }); - - expect(console.error).toHaveBeenCalledOnce(); - }); - - it('updates the page settings for document page', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'documentPage', DOCUMENT_ID); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(PAGE_SETTINGS); - }); - - await result.current.updatePageTemplateSettings({ myCustomSetting: 456 }); - expect(result.current.isLoading).toEqual(false); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual({ ...PAGE_SETTINGS, myCustomSetting: 456 }); - }); - - // Reset the object to avoid mutation in other tests - await result.current.updatePageTemplateSettings({ myCustomSetting: 123 }); - }); - - it('returns the page settings for library page', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'library', DOCUMENT_ID); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(PAGE_SETTINGS); - }); - }); - - it('returns `null` for library page if no document id passed', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'library'); - - expect(result.current.isLoading).toEqual(false); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(null); - }); - - expect(console.error).toHaveBeenCalledOnce(); - }); - - it('updates the page settings for library page', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'library', DOCUMENT_ID); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(PAGE_SETTINGS); - }); - - await result.current.updatePageTemplateSettings({ myCustomSetting: 456 }); - expect(result.current.isLoading).toEqual(false); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual({ ...PAGE_SETTINGS, myCustomSetting: 456 }); - }); - - // Reset the object to avoid mutation in other tests - await result.current.updatePageTemplateSettings({ library: { myCustomSetting: 123 } }); - }); - - it('logs an error when trying to update document or library page without a documentId', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'library'); - - expect(result.current.isLoading).toEqual(false); - - await waitFor(() => { - expect(result.current.pageTemplateSettings).toEqual(null); - }); - - await result.current.updatePageTemplateSettings({ library: { muCystomSetting: 456 } }); - expect(result.current.isLoading).toEqual(false); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(null); - }); - - expect(console.error).toHaveBeenCalledTimes(2); - }); - - describe('Theme and Page template overrides', () => { - it('returns the page template settings merged with theme settings and the list of custom overrides', async () => { - const { result } = loadUsePageTemplateSettings( - PAGE_SETTINGS_WITH_OVERRIDES, - 'documentPage', - DOCUMENT_ID, - THEME_SETTINGS, - ); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual({ - ...THEME_SETTINGS.documentPage, - ...PAGE_SETTINGS_WITH_OVERRIDES, - }); - expect(result.current.customizedPageTemplateSettingsKeys).toEqual(['customThemeSetting']); - expect(result.current.templateThemeSettings).toEqual(THEME_SETTINGS.documentPage); - }); - }); - - it('returns the page template settings merged with theme settings and no overrides', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'cover', undefined, THEME_SETTINGS); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual({ - ...PAGE_SETTINGS, - ...THEME_SETTINGS.cover, - }); - expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); - }); - }); - - it('returns an empty object if no theme settins and no page template settings', async () => { - const { result } = loadUsePageTemplateSettings({}, 'cover', undefined, { - documentPage: {}, - cover: {}, - library: {}, - }); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual({}); - expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); - }); - }); - - it('returns only the theme settings if no page template settings', async () => { - const { result } = loadUsePageTemplateSettings({}, 'cover', undefined, THEME_SETTINGS); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(THEME_SETTINGS.cover); - expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); - }); - }); - - it('returns only the page template settings if no theme settings', async () => { - const { result } = loadUsePageTemplateSettings(PAGE_SETTINGS, 'cover', undefined, { - documentPage: {}, - cover: {}, - library: {}, - }); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual(PAGE_SETTINGS); - expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); - }); - }); - - it('returns theme setting value if page template override is null', async () => { - const { result } = loadUsePageTemplateSettings( - PAGE_SETTINGS_WITH_NULL_OVERRIDES, - 'documentPage', - DOCUMENT_ID, - THEME_SETTINGS, - ); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual({ - ...PAGE_SETTINGS, - ...THEME_SETTINGS.documentPage, - }); - expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); - }); - }); - - it('returns the theme setting if the override is deleted (reset) from page template settings', async () => { - const { result } = loadUsePageTemplateSettings( - PAGE_SETTINGS_WITH_OVERRIDES, - 'documentPage', - DOCUMENT_ID, - THEME_SETTINGS, - ); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual({ - ...THEME_SETTINGS.documentPage, - ...PAGE_SETTINGS_WITH_OVERRIDES, - }); - }); - - await result.current.updatePageTemplateSettings({ customThemeSetting: null }); - expect(result.current.isLoading).toEqual(false); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.pageTemplateSettings).toEqual({ - ...PAGE_SETTINGS, - ...THEME_SETTINGS.documentPage, - }); - expect(result.current.customizedPageTemplateSettingsKeys).toEqual([]); - }); - - // Reset the object to avoid mutation in other tests - await result.current.updatePageTemplateSettings({ customThemeSetting: 321 }); - }); - }); -}); diff --git a/packages/app-bridge/src/react/usePageTemplateSettings.ts b/packages/app-bridge/src/react/usePageTemplateSettings.ts deleted file mode 100644 index 37f5ae6e7..000000000 --- a/packages/app-bridge/src/react/usePageTemplateSettings.ts +++ /dev/null @@ -1,118 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useEffect, useState } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { type EmitterEvents, type ThemeTemplate } from '../types'; - -import { useThemeSettings } from './'; - -export const usePageTemplateSettings = >( - appBridge: AppBridgeTheme, - template: ThemeTemplate, - documentOrDocumentPageId?: number, -) => { - const { themeSettings } = useThemeSettings(appBridge); - const templateThemeSettings = themeSettings?.[template] ?? {}; - const [pageTemplateSettings, setPageTemplateSettings] = useState>(null); - const [isLoading, setIsLoading] = useState(false); - const [customizedPageTemplateSettingsKeys, setCustomizedPageTemplateSettingsKeys] = useState([]); - const [mergedThemeAndPageTemplateSettings, setMergedThemeAndPageTemplateSettings] = - useState>>(null); - - useEffect(() => { - const updateBlockSettingsFromEvent = (event: EmitterEvents['AppBridge:PageTemplateSettingsUpdated']) => { - setPageTemplateSettings({ ...event.pageTemplateSettings } as TPageTemplateSettings); - }; - - const getInitialPageTemplateSettings = async () => { - setIsLoading(true); - let loadedSettings: Nullable = null; - - if (template === 'cover') { - loadedSettings = await appBridge.getCoverPageTemplateSettings(); - } else if (documentOrDocumentPageId === undefined) { - console.error(`Document ID is required for ${template} template settings`); - setMergedThemeAndPageTemplateSettings(null); - setIsLoading(false); - return; - } else if (template === 'documentPage') { - loadedSettings = - await appBridge.getDocumentPageTemplateSettings(documentOrDocumentPageId); - } else if (template === 'library') { - loadedSettings = - await appBridge.getLibraryPageTemplateSettings(documentOrDocumentPageId); - } - - setIsLoading(false); - setPageTemplateSettings(loadedSettings); - }; - - getInitialPageTemplateSettings(); - - window.emitter.on('AppBridge:PageTemplateSettingsUpdated', updateBlockSettingsFromEvent); - - return () => { - window.emitter.off('AppBridge:PageTemplateSettingsUpdated', updateBlockSettingsFromEvent); - }; - }, [appBridge, documentOrDocumentPageId, template]); - - useEffect(() => { - if (!templateThemeSettings || !pageTemplateSettings) { - return; - } - - const overrides = []; - const mergedSettings: Record & TPageTemplateSettings = { ...pageTemplateSettings }; - - for (const field of Object.keys(templateThemeSettings)) { - if ( - (pageTemplateSettings as Record)[field] !== null && - (pageTemplateSettings as Record)[field] !== undefined - ) { - overrides.push(field); - } else { - (mergedSettings as Record)[field] = templateThemeSettings[field]; - } - } - - setCustomizedPageTemplateSettingsKeys(overrides); - setMergedThemeAndPageTemplateSettings(mergedSettings); - }, [themeSettings, pageTemplateSettings]); - - const updatePageTemplateSettings = async (pageTemplateSettingsUpdate: Partial) => { - try { - if (template === 'cover') { - await appBridge.updateCoverPageTemplateSettings(pageTemplateSettingsUpdate); - } else if (documentOrDocumentPageId === undefined) { - console.error(`Document ID is required for ${template} template settings`); - setIsLoading(false); - return; - } else if (template === 'documentPage') { - await appBridge.updateDocumentPageTemplateSettings( - documentOrDocumentPageId, - pageTemplateSettingsUpdate, - ); - } else if (template === 'library') { - await appBridge.updateLibraryPageTemplateSettings(documentOrDocumentPageId, pageTemplateSettingsUpdate); - } - - window.emitter.emit('AppBridge:PageTemplateSettingsUpdated', { - pageTemplateSettings: { - ...pageTemplateSettings, - ...pageTemplateSettingsUpdate, - }, - }); - } catch (error) { - console.error(error); - } - }; - - return { - pageTemplateSettings: mergedThemeAndPageTemplateSettings, - templateThemeSettings, - customizedPageTemplateSettingsKeys, - updatePageTemplateSettings, - isLoading, - }; -}; diff --git a/packages/app-bridge/src/react/usePortalNavigation.spec.ts b/packages/app-bridge/src/react/usePortalNavigation.spec.ts deleted file mode 100644 index 97f526073..000000000 --- a/packages/app-bridge/src/react/usePortalNavigation.spec.ts +++ /dev/null @@ -1,314 +0,0 @@ -// @vitest-environment happy-dom - -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { renderHook, waitFor } from '@testing-library/react'; -import { describe, expect, it, vi } from 'vitest'; - -import { PortalNavigationTreeDummy, getAppBridgeThemeStub } from '../tests'; - -import { usePortalNavigation } from './usePortalNavigation'; - -const DEFAULT_NAVIGATION_TREE = PortalNavigationTreeDummy.default(); - -describe('usePortalNavigation', () => { - it('should return the preview and refetch when the cover page is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); - }); - - const coverPageIndex = DEFAULT_NAVIGATION_TREE.findIndex((item) => item.type === 'cover-page'); - const updatedNavigationTree = [...DEFAULT_NAVIGATION_TREE]; - updatedNavigationTree.splice(coverPageIndex, 1); - - spy.mockResolvedValueOnce(updatedNavigationTree); - - // Trigger a "cover page deleted" event - window.emitter.emit('AppBridge:GuidelineCoverPage:Action', { action: 'delete' }); - - await waitFor(() => { - expect(spy).toHaveBeenCalledTimes(2); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - expect(result.current.navigationItems).toEqual(updatedNavigationTree); - }); - }); - - it('should return the preview and refetch when a document group is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); - }); - - const groupIndex = DEFAULT_NAVIGATION_TREE.findIndex((item) => item.id() === 200); - const updatedNavigationTree = [...DEFAULT_NAVIGATION_TREE]; - updatedNavigationTree.splice(groupIndex, 1); - - spy.mockResolvedValueOnce(updatedNavigationTree); - - // Trigger a "document group deleted" event - window.emitter.emit('AppBridge:GuidelineDocumentGroup:Action', { - documentGroup: { id: 200 }, - action: 'delete', - }); - - await waitFor(() => { - expect(spy).toHaveBeenCalledTimes(2); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - expect(result.current.navigationItems).toEqual(updatedNavigationTree); - }); - }); - - it('should return the previous tree and refetch when an incorrect document group id is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValue(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); - }); - - // Trigger a "document group deleted" event - window.emitter.emit('AppBridge:GuidelineDocumentGroup:Action', { - documentGroup: { id: 2000 }, - action: 'delete', - }); - - await waitFor(() => { - expect(spy).toHaveBeenCalledTimes(2); - expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - }); - }); - - it('should return the preview and refetch when a document at root level is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); - }); - - const documentIndex = DEFAULT_NAVIGATION_TREE.findIndex((item) => item.id() === 101); - const updatedNavigationTree = [...DEFAULT_NAVIGATION_TREE]; - updatedNavigationTree.splice(documentIndex, 1); - - spy.mockResolvedValueOnce(updatedNavigationTree); - - // Trigger a "document deleted" event - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: { id: 101 }, - action: 'delete', - }); - - await waitFor(() => { - expect(spy).toHaveBeenCalledTimes(2); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - expect(result.current.navigationItems).toEqual(updatedNavigationTree); - }); - }); - - it('should return the same tree and refetch when a document within a group is deleted', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValue(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); - }); - - // Trigger a "document deleted" event - window.emitter.emit('AppBridge:GuidelineDocument:Action', { - document: { id: 201, documentGroupId: 200 }, - action: 'delete', - }); - - await waitFor(() => { - expect(spy).toHaveBeenCalledTimes(2); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); - }); - }); - - it('should fetch the navigation tree on mount', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - expect(result.current.isLoading).toBe(true); - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); - }); - }); - - it('should refetch if targets in documents change', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValue(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - // Trigger a "document targets changed" event - window.emitter.emit('AppBridge:GuidelineDocumentTargets:Action', { - payload: { targets: [], documentIds: [] }, - action: 'update', - }); - - await waitFor(() => { - expect(spy).toHaveBeenCalledTimes(2); - expect(result.current.isLoading).toBe(false); - }); - }); - - it('should show document group in new position and refetch when a document group is moved', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - const NEW_POSITION = 1; - const groupIndex = DEFAULT_NAVIGATION_TREE.findIndex((item) => item.id() === 200); - const updatedNavigationTree = [...DEFAULT_NAVIGATION_TREE]; - const movedGroup = updatedNavigationTree.splice(groupIndex, 1); - updatedNavigationTree.splice(NEW_POSITION, 0, ...movedGroup); - - spy.mockResolvedValueOnce(updatedNavigationTree); - - // Trigger a "document group is moved" event - window.emitter.emit('AppBridge:GuidelineDocumentGroup:MoveEvent', { - action: 'movePreview', - position: NEW_POSITION, - documentGroup: { id: 200, sort: 3 }, - }); - - await waitFor(() => { - expect(result.current.navigationItems).toEqual(updatedNavigationTree); - }); - }); - - it('should show document in new position when a document is moved at root level', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - const NEW_POSITION = 2; - const documentIndex = DEFAULT_NAVIGATION_TREE.findIndex((item) => item.id() === 121); - const updatedNavigationTree = [...DEFAULT_NAVIGATION_TREE]; - const movedDocument = updatedNavigationTree.splice(documentIndex, 1); - updatedNavigationTree.splice(NEW_POSITION, 0, ...movedDocument); - - // Trigger a "document is moved" event - window.emitter.emit('AppBridge:GuidelineDocument:MoveEvent', { - action: 'movePreview', - position: NEW_POSITION, - document: { id: 121, sort: 5 }, - }); - - await waitFor(() => { - expect(result.current.navigationItems).toEqual(updatedNavigationTree); - }); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - }); - - it('should return the same tree when a document is moved within/in/out a group', async () => { - const appBridge = getAppBridgeThemeStub(); - const spy = vi.spyOn(appBridge, 'api'); - - spy.mockResolvedValueOnce(DEFAULT_NAVIGATION_TREE); - - const { result } = renderHook(() => usePortalNavigation(appBridge)); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - const NEW_POSITION = 2; - - // Trigger a "document is moved" event - window.emitter.emit('AppBridge:GuidelineDocument:MoveEvent', { - action: 'movePreview', - position: NEW_POSITION, - document: { id: 201, sort: 2, documentGroupId: 200 }, - newGroupId: undefined, - }); - - await waitFor(() => { - expect(result.current.navigationItems).toEqual(DEFAULT_NAVIGATION_TREE); - }); - - expect(spy).toHaveBeenCalledOnce(); - expect(spy).toHaveBeenCalledWith({ name: 'getPortalNavigation' }); - }); -}); diff --git a/packages/app-bridge/src/react/usePortalNavigation.ts b/packages/app-bridge/src/react/usePortalNavigation.ts deleted file mode 100644 index dc4140b55..000000000 --- a/packages/app-bridge/src/react/usePortalNavigation.ts +++ /dev/null @@ -1,158 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { produce } from 'immer'; -import debounce from 'lodash-es/debounce'; -import { useCallback, useEffect, useMemo, useState } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { type EmitterEvents } from '../types/Emitter'; -import { type PortalNavigationItem } from '../types/Guideline'; - -type Options = { - /** - * Whether it should fetch on mount. - */ - enabled?: boolean; -}; - -export const usePortalNavigation = (appBridge: AppBridgeTheme, options: Options = { enabled: true }) => { - const [navigationItems, setNavigationItems] = useState([]); - const [isLoading, setIsLoading] = useState(true); - - const refetch = useCallback(async () => { - setIsLoading(true); - setNavigationItems(await appBridge.api({ name: 'getPortalNavigation' })); - setIsLoading(false); - }, [appBridge]); - - const debouncedRefetch = useMemo( - () => - debounce(() => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - refetch(); - }, 100), - [refetch], - ); - - useEffect(() => { - if (options.enabled) { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - refetch(); - } - }, [options.enabled, refetch]); - - useEffect(() => { - const handleCoverPageAction = (event: EmitterEvents['AppBridge:GuidelineCoverPage:Action']) => { - if (event.action === 'delete') { - setNavigationItems( - produce((draft) => { - return deleteItem(draft, 'cover-page', null); - }), - ); - } - - debouncedRefetch(); - }; - - const handleDocumentGroupAction = (event: EmitterEvents['AppBridge:GuidelineDocumentGroup:Action']) => { - if (event.action === 'delete') { - setNavigationItems( - produce((draft) => { - return deleteItem(draft, 'document-group', event.documentGroup.id); - }), - ); - } - - debouncedRefetch(); - }; - - const handleDocumentAction = (event: EmitterEvents['AppBridge:GuidelineDocument:Action']) => { - if (event.action === 'delete') { - setNavigationItems( - produce((draft) => { - if (!event.document.documentGroupId) { - return deleteItem(draft, 'document', event.document.id); - } - return draft; - }), - ); - } - - debouncedRefetch(); - }; - - const handleDocumentGroupMoveEventPreview = ( - event: EmitterEvents['AppBridge:GuidelineDocumentGroup:MoveEvent'], - ) => { - setNavigationItems( - produce((draft) => previewItemPosition(draft, event.documentGroup, event.position, ['document-group'])), - ); - }; - - const handleDocumentMoveEventPreview = (event: EmitterEvents['AppBridge:GuidelineDocument:MoveEvent']) => { - if (!event.document.documentGroupId && !event.newGroupId) { - setNavigationItems( - produce((draft) => - previewItemPosition(draft, event.document, event.position, [ - 'document', - 'document-library', - 'document-link', - ]), - ), - ); - } - }; - - window.emitter.on('AppBridge:GuidelineCoverPage:Action', handleCoverPageAction); - - window.emitter.on('AppBridge:GuidelineDocumentGroup:Action', handleDocumentGroupAction); - window.emitter.on('AppBridge:GuidelineDocumentGroup:MoveEvent', handleDocumentGroupMoveEventPreview); - - window.emitter.on('AppBridge:GuidelineDocument:Action', handleDocumentAction); - window.emitter.on('AppBridge:GuidelineDocument:MoveEvent', handleDocumentMoveEventPreview); - window.emitter.on('AppBridge:GuidelineDocumentTargets:Action', debouncedRefetch); - - return () => { - window.emitter.off('AppBridge:GuidelineCoverPage:Action', handleCoverPageAction); - - window.emitter.off('AppBridge:GuidelineDocumentGroup:Action', handleDocumentGroupAction); - window.emitter.off('AppBridge:GuidelineDocumentGroup:MoveEvent', handleDocumentGroupMoveEventPreview); - - window.emitter.off('AppBridge:GuidelineDocument:Action', handleDocumentAction); - window.emitter.off('AppBridge:GuidelineDocument:MoveEvent', handleDocumentMoveEventPreview); - window.emitter.off('AppBridge:GuidelineDocumentTargets:Action', debouncedRefetch); - }; - }, [navigationItems, debouncedRefetch]); - - return { navigationItems, refetch, isLoading }; -}; - -const deleteItem = (draft: PortalNavigationItem[], type: PortalNavigationItem['type'], itemId: Nullable) => { - const itemDraftIndex = draft.findIndex((item) => - !itemId ? item.type === type : item.type === type && item.id() === itemId, - ); - - if (itemDraftIndex !== -1) { - draft.splice(itemDraftIndex, 1); - } - - return draft; -}; - -const previewItemPosition = ( - draft: PortalNavigationItem[], - itemMoved: - | EmitterEvents['AppBridge:GuidelineDocument:MoveEvent']['document'] - | EmitterEvents['AppBridge:GuidelineDocumentGroup:MoveEvent']['documentGroup'], - newPosition: number, - allowedTypes: PortalNavigationItem['type'][], -) => { - const itemDraftIndex = draft.findIndex((item) => allowedTypes.includes(item.type) && item.id() === itemMoved.id); - - if (itemDraftIndex !== -1) { - const itemToMove = draft.splice(itemDraftIndex, 1); - draft.splice(newPosition, 0, ...itemToMove); - } - - return draft; -}; diff --git a/packages/app-bridge/src/react/useTemplateAssets.spec.ts b/packages/app-bridge/src/react/useTemplateAssets.spec.ts deleted file mode 100644 index 67e21c242..000000000 --- a/packages/app-bridge/src/react/useTemplateAssets.spec.ts +++ /dev/null @@ -1,445 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { act, cleanup, renderHook, waitFor } from '@testing-library/react'; -import { type SinonStub } from 'sinon'; -import { type Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; - -import { type ThemeTemplate } from '..'; -import { AssetDummy, getAppBridgeThemeStub } from '../tests'; - -import { useTemplateAssets } from './useTemplateAssets'; - -const DOCUMENT_ID = 16; -const DOCUMENT_PAGE_ID = 568; - -const THEME_ASSETS = { - key: [AssetDummy.with(3)], -}; - -const THEME_ASSETS_WITH_CUSTOM_KEY = { - customKey: [AssetDummy.with(2)], -}; - -const TEMPLATE_ASSETS = { - key: [AssetDummy.with(1)], -}; - -describe('useTemplateAssets hook', () => { - beforeEach(() => { - vi.spyOn(console, 'error').mockImplementation(() => {}); - }); - - afterEach(() => { - vi.restoreAllMocks(); - cleanup(); - }); - - const loadUseTemplateAssets = async ( - template: ThemeTemplate, - existingTemplateAssets = [AssetDummy.with(1)], - existingThemeAssets = {}, - returnEmptyTemplateAssets = false, - ) => { - const asset = AssetDummy.with(1); - const appBridgeStub = getAppBridgeThemeStub({ - pageTemplateAssets: returnEmptyTemplateAssets ? {} : { key: existingTemplateAssets }, - themeAssets: existingThemeAssets, - }); - - const { result, rerender } = renderHook(() => - useTemplateAssets(appBridgeStub, template, DOCUMENT_ID, DOCUMENT_PAGE_ID), - ); - - await act(async () => { - rerender(); - }); - - return { result, appBridgeStub, asset }; - }; - - describe('documentPage template context', () => { - it('should delete an asset', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('documentPage', []); - await act(async () => { - await result.current.deleteAssetIdsFromKey('key', [1]); - }); - - const call = appBridgeStub.deleteAssetIdsFromDocumentPageTemplateAssetKey.getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual(DOCUMENT_PAGE_ID); - expect(call.args[1]).toEqual('key'); - expect(call.lastArg).toEqual([1]); - expect(result.current.templateAssets).toStrictEqual({ key: [] }); - }); - }); - - it('should sort assets', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('documentPage', [ - AssetDummy.with(1), - AssetDummy.with(2), - ]); - - await act(async () => { - await result.current.updateAssetIdsFromKey('key', [2, 1]); - }); - - const deleteCall = appBridgeStub.deleteAssetIdsFromDocumentPageTemplateAssetKey.getCall(0); - const addCall = appBridgeStub.addAssetIdsToDocumentPageTemplateAssetKey.getCall(0); - - await waitFor(async () => { - expect(deleteCall.firstArg).toEqual(DOCUMENT_PAGE_ID); - expect(deleteCall.args[1]).toEqual('key'); - expect(deleteCall.lastArg).toEqual([1, 2]); - expect(addCall.firstArg).toEqual(DOCUMENT_PAGE_ID); - expect(addCall.args[1]).toEqual('key'); - expect(addCall.lastArg).toEqual([2, 1]); - expect(result.current.templateAssets.key.map((asset) => asset.id)).toEqual([2, 1]); - }); - }); - - it('should not sort assets if api call throws error', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('documentPage', [ - AssetDummy.with(1), - AssetDummy.with(2), - ]); - (appBridgeStub.deleteAssetIdsFromDocumentPageTemplateAssetKey as unknown as Mock) = vi - .fn() - .mockRejectedValue('Unsuccessful API call'); - - await act(async () => { - await result.current.updateAssetIdsFromKey('key', [2, 1]); - }); - - await waitFor(async () => { - expect(result.current.templateAssets.key.map((asset) => asset.id)).toEqual([1, 2]); - }); - - expect(console.error).toHaveBeenCalledOnce(); - }); - - it('should notify about updated assets on delete', async () => { - const { result, asset } = await loadUseTemplateAssets('documentPage'); - - await act(async () => { - await result.current.deleteAssetIdsFromKey('key', [1]); - }); - - const call = (window.emitter.emit as SinonStub).getCall(0); - - await waitFor(() => { - expect(call.firstArg).toEqual('AppBridge:TemplateAssetsUpdated'); - expect(call.lastArg.template).toEqual('documentPage'); - expect(call.lastArg.documentId).toEqual(DOCUMENT_ID); - expect(call.lastArg.documentPageId).toEqual(DOCUMENT_PAGE_ID); - expect(call.lastArg.templateAssets).toStrictEqual({ key: [] }); - expect(call.lastArg.prevTemplateAssets).toMatchObject({ key: [asset] }); - }); - }); - - it('should add asset ids', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('documentPage'); - await act(async () => { - await result.current.addAssetIdsToKey('key', [2]); - }); - - const call = appBridgeStub.addAssetIdsToDocumentPageTemplateAssetKey.getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual(DOCUMENT_PAGE_ID); - expect(call.args[1]).toEqual('key'); - expect(call.lastArg).toEqual([2]); - expect(result.current.templateAssets.key.map(({ id }) => id)).toEqual([1, 2]); - }); - }); - - it('should notify about updated assets on add asset ids to key', async () => { - const { result, asset } = await loadUseTemplateAssets('documentPage'); - const assetToAdd = AssetDummy.with(2); - await act(async () => { - await result.current.addAssetIdsToKey('key', [assetToAdd.id]); - }); - - const call = (window.emitter.emit as SinonStub).getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual('AppBridge:TemplateAssetsUpdated'); - expect(call.lastArg.template).toEqual('documentPage'); - expect(call.lastArg.documentId).toEqual(DOCUMENT_ID); - expect(call.lastArg.documentPageId).toEqual(DOCUMENT_PAGE_ID); - expect(call.lastArg.templateAssets).toMatchObject({ key: [asset, assetToAdd] }); - expect(call.lastArg.prevTemplateAssets).toMatchObject({ key: [asset] }); - }); - }); - }); - - describe('library template context', () => { - it('should delete an asset', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('library', []); - await act(async () => { - await result.current.deleteAssetIdsFromKey('key', [1]); - }); - - const call = appBridgeStub.deleteAssetIdsFromLibraryPageTemplateAssetKey.getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual(DOCUMENT_ID); - expect(call.args[1]).toEqual('key'); - expect(call.lastArg).toEqual([1]); - expect(result.current.templateAssets).toStrictEqual({ key: [] }); - }); - }); - - it('should sort assets', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('library', [ - AssetDummy.with(1), - AssetDummy.with(2), - ]); - - await act(async () => { - await result.current.updateAssetIdsFromKey('key', [2, 1]); - }); - - const deleteCall = appBridgeStub.deleteAssetIdsFromLibraryPageTemplateAssetKey.getCall(0); - const addCall = appBridgeStub.addAssetIdsToLibraryPageTemplateAssetKey.getCall(0); - - await waitFor(async () => { - expect(deleteCall.firstArg).toEqual(DOCUMENT_ID); - expect(deleteCall.args[1]).toEqual('key'); - expect(deleteCall.lastArg).toEqual([1, 2]); - expect(addCall.firstArg).toEqual(DOCUMENT_ID); - expect(addCall.args[1]).toEqual('key'); - expect(addCall.lastArg).toEqual([2, 1]); - expect(result.current.templateAssets.key.map((asset) => asset.id)).toEqual([2, 1]); - }); - }); - - it('should not sort assets if api call throws error', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('library', [ - AssetDummy.with(1), - AssetDummy.with(2), - ]); - (appBridgeStub.deleteAssetIdsFromLibraryPageTemplateAssetKey as unknown as Mock) = vi - .fn() - .mockRejectedValue('Unsuccessful API call'); - - await act(async () => { - await result.current.updateAssetIdsFromKey('key', [2, 1]); - }); - - await waitFor(async () => { - expect(result.current.templateAssets.key.map((asset) => asset.id)).toEqual([1, 2]); - }); - - expect(console.error).toHaveBeenCalledOnce(); - }); - - it('should notify about updated assets on delete', async () => { - const { result, asset } = await loadUseTemplateAssets('library'); - - await act(async () => { - await result.current.deleteAssetIdsFromKey('key', [1]); - }); - - const call = (window.emitter.emit as SinonStub).getCall(0); - - await waitFor(() => { - expect(call.firstArg).toEqual('AppBridge:TemplateAssetsUpdated'); - expect(call.lastArg.template).toEqual('library'); - expect(call.lastArg.documentId).toEqual(DOCUMENT_ID); - expect(call.lastArg.documentPageId).toEqual(DOCUMENT_PAGE_ID); - expect(call.lastArg.templateAssets).toStrictEqual({ key: [] }); - expect(call.lastArg.prevTemplateAssets).toMatchObject({ key: [asset] }); - }); - }); - - it('should add asset ids', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('library'); - await act(async () => { - await result.current.addAssetIdsToKey('key', [2]); - }); - - const call = appBridgeStub.addAssetIdsToLibraryPageTemplateAssetKey.getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual(DOCUMENT_ID); - expect(call.args[1]).toEqual('key'); - expect(call.lastArg).toEqual([2]); - expect(result.current.templateAssets.key.map(({ id }) => id)).toEqual([1, 2]); - }); - }); - - it('should notify about updated assets on add asset ids to key', async () => { - const { result, asset } = await loadUseTemplateAssets('library'); - const assetToAdd = AssetDummy.with(2); - await act(async () => { - await result.current.addAssetIdsToKey('key', [assetToAdd.id]); - }); - - const call = (window.emitter.emit as SinonStub).getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual('AppBridge:TemplateAssetsUpdated'); - expect(call.lastArg.template).toEqual('library'); - expect(call.lastArg.documentId).toEqual(DOCUMENT_ID); - expect(call.lastArg.documentPageId).toEqual(DOCUMENT_PAGE_ID); - expect(call.lastArg.templateAssets).toMatchObject({ key: [asset, assetToAdd] }); - expect(call.lastArg.prevTemplateAssets).toMatchObject({ key: [asset] }); - }); - }); - }); - - describe('cover template context', () => { - it('should delete an asset', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('cover', []); - await act(async () => { - await result.current.deleteAssetIdsFromKey('key', [1]); - }); - - const call = appBridgeStub.deleteAssetIdsFromCoverPageTemplateAssetKey.getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual('key'); - expect(call.lastArg).toEqual([1]); - expect(result.current.templateAssets).toStrictEqual({ key: [] }); - }); - }); - - it('should sort assets', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('cover', [ - AssetDummy.with(1), - AssetDummy.with(2), - ]); - - await act(async () => { - await result.current.updateAssetIdsFromKey('key', [2, 1]); - }); - - const deleteCall = appBridgeStub.deleteAssetIdsFromCoverPageTemplateAssetKey.getCall(0); - const addCall = appBridgeStub.addAssetIdsToCoverPageTemplateAssetKey.getCall(0); - - await waitFor(async () => { - expect(deleteCall.firstArg).toEqual('key'); - expect(deleteCall.lastArg).toEqual([1, 2]); - expect(addCall.firstArg).toEqual('key'); - expect(addCall.lastArg).toEqual([2, 1]); - expect(result.current.templateAssets.key.map((asset) => asset.id)).toEqual([2, 1]); - }); - }); - - it('should not sort assets if api call throws error', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('cover', [ - AssetDummy.with(1), - AssetDummy.with(2), - ]); - (appBridgeStub.deleteAssetIdsFromCoverPageTemplateAssetKey as unknown as Mock) = vi - .fn() - .mockRejectedValue('Unsuccessful API call'); - - await act(async () => { - await result.current.updateAssetIdsFromKey('key', [2, 1]); - }); - - await waitFor(async () => { - expect(result.current.templateAssets.key.map((asset) => asset.id)).toEqual([1, 2]); - }); - - expect(console.error).toHaveBeenCalledOnce(); - }); - - it('should notify about updated assets on delete', async () => { - const { result, asset } = await loadUseTemplateAssets('cover'); - - await act(async () => { - await result.current.deleteAssetIdsFromKey('key', [1]); - }); - - const call = (window.emitter.emit as SinonStub).getCall(0); - - await waitFor(() => { - expect(call.firstArg).toEqual('AppBridge:TemplateAssetsUpdated'); - expect(call.lastArg.template).toEqual('cover'); - expect(call.lastArg.documentId).toEqual(DOCUMENT_ID); - expect(call.lastArg.documentPageId).toEqual(DOCUMENT_PAGE_ID); - expect(call.lastArg.templateAssets).toStrictEqual({ key: [] }); - expect(call.lastArg.prevTemplateAssets).toMatchObject({ key: [asset] }); - }); - }); - - it('should add asset ids', async () => { - const { result, appBridgeStub } = await loadUseTemplateAssets('cover'); - await act(async () => { - await result.current.addAssetIdsToKey('key', [2]); - }); - - const call = appBridgeStub.addAssetIdsToCoverPageTemplateAssetKey.getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual('key'); - expect(call.lastArg).toEqual([2]); - expect(result.current.templateAssets.key.map(({ id }) => id)).toEqual([1, 2]); - }); - }); - - it('should notify about updated assets on add asset ids to key', async () => { - const { result, asset } = await loadUseTemplateAssets('cover'); - const assetToAdd = AssetDummy.with(2); - await act(async () => { - await result.current.addAssetIdsToKey('key', [assetToAdd.id]); - }); - - const call = (window.emitter.emit as SinonStub).getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual('AppBridge:TemplateAssetsUpdated'); - expect(call.lastArg.template).toEqual('cover'); - expect(call.lastArg.documentId).toEqual(DOCUMENT_ID); - expect(call.lastArg.documentPageId).toEqual(DOCUMENT_PAGE_ID); - expect(call.lastArg.templateAssets).toMatchObject({ key: [asset, assetToAdd] }); - expect(call.lastArg.prevTemplateAssets).toMatchObject({ key: [asset] }); - }); - }); - }); - - describe('Theme and Template assets overrides', () => { - it('returns the template assets merged with theme assets and the list of custom overrides', async () => { - const { result } = await loadUseTemplateAssets('cover', [AssetDummy.with(1)], THEME_ASSETS); - await waitFor(() => { - expect(result.current.templateAssets).toEqual({ - ...TEMPLATE_ASSETS, - }); - expect(result.current.customizedTemplateAssetsKeys).toEqual(['key']); - }); - }); - - it('returns the template assets merged with theme assets and no overrides', async () => { - const { result } = await loadUseTemplateAssets('cover', [AssetDummy.with(1)], THEME_ASSETS_WITH_CUSTOM_KEY); - await waitFor(() => { - expect(result.current.templateAssets).toEqual({ - ...THEME_ASSETS_WITH_CUSTOM_KEY, - ...TEMPLATE_ASSETS, - }); - expect(result.current.customizedTemplateAssetsKeys).toEqual([]); - }); - }); - - it('returns an empty object if no theme assets and no template assets', async () => { - const { result } = await loadUseTemplateAssets('cover', [], {}, true); - await waitFor(() => { - expect(result.current.templateAssets).toEqual({}); - expect(result.current.customizedTemplateAssetsKeys).toEqual([]); - }); - }); - - it('returns only the theme assets if no template assets', async () => { - const { result } = await loadUseTemplateAssets('cover', [], THEME_ASSETS, true); - await waitFor(() => { - expect(result.current.templateAssets).toEqual({ - ...THEME_ASSETS, - }); - expect(result.current.customizedTemplateAssetsKeys).toEqual([]); - }); - }); - - it('returns only the template assets if no theme assets', async () => { - const { result } = await loadUseTemplateAssets('cover', [AssetDummy.with(1)], {}, false); - await waitFor(() => { - expect(result.current.templateAssets).toEqual({ - ...TEMPLATE_ASSETS, - }); - expect(result.current.customizedTemplateAssetsKeys).toEqual([]); - }); - }); - }); -}); diff --git a/packages/app-bridge/src/react/useTemplateAssets.ts b/packages/app-bridge/src/react/useTemplateAssets.ts deleted file mode 100644 index dcc8a4a43..000000000 --- a/packages/app-bridge/src/react/useTemplateAssets.ts +++ /dev/null @@ -1,208 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useEffect, useState } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { type Asset, type ThemeTemplate } from '../types'; -import { compareObjects } from '../utilities'; - -import { useThemeAssets } from './'; - -type HookArgs = { - appBridge: AppBridgeTheme; - template?: ThemeTemplate; - documentId?: number; - documentPageId?: number; -}; - -const getTemplateAssets = async ({ - appBridge, - template, - documentId, - documentPageId, -}: HookArgs): Promise> => { - if (template === 'cover') { - return await appBridge.getCoverPageTemplateAssets(); - } else if (template === 'documentPage' && documentPageId) { - return await appBridge.getDocumentPageTemplateAssets(documentPageId); - } else if (template === 'library' && documentId) { - return await appBridge.getLibraryPageTemplateAssets(documentId); - } - - return {}; -}; - -const addAssetIdsToTemplateAssetKey = async ( - key: string, - assetIds: number[], - { appBridge, template, documentId, documentPageId }: HookArgs, -): Promise => { - if (template === 'cover') { - await appBridge.addAssetIdsToCoverPageTemplateAssetKey(key, assetIds); - } else if (template === 'documentPage' && documentPageId) { - await appBridge.addAssetIdsToDocumentPageTemplateAssetKey(documentPageId, key, assetIds); - } else if (template === 'library' && documentId) { - await appBridge.addAssetIdsToLibraryPageTemplateAssetKey(documentId, key, assetIds); - } -}; - -const deleteAssetIdsFromTemplateAssetKey = async ( - key: string, - assetIds: number[], - { appBridge, template, documentId, documentPageId }: HookArgs, -): Promise => { - if (template === 'cover') { - await appBridge.deleteAssetIdsFromCoverPageTemplateAssetKey(key, assetIds); - } else if (template === 'documentPage' && documentPageId) { - await appBridge.deleteAssetIdsFromDocumentPageTemplateAssetKey(documentPageId, key, assetIds); - } else if (template === 'library' && documentId) { - await appBridge.deleteAssetIdsFromLibraryPageTemplateAssetKey(documentId, key, assetIds); - } -}; - -export const useTemplateAssets = ( - appBridge: AppBridgeTheme, - template: ThemeTemplate, - documentId?: number, - documentPageId?: number, -) => { - const [templateAssets, setTemplateAssets] = useState>({}); - const { themeAssets } = useThemeAssets(appBridge, template); - const [customizedTemplateAssetsKeys, setCustomizedTemplateAssetsKeys] = useState([]); - const [mergedThemeAndTemplateAssets, setMergedThemeAndTemplateAssets] = useState>({}); - - // Fetch the template assets on mount. - // And add listener for template assets updates. - useEffect(() => { - let componentMounted = true; - - const updateTemplateAssetsFromEvent = (event: { - template: ThemeTemplate; - documentId?: number; - documentPageId?: number; - templateAssets: Record; - prevTemplateAssets: Record; - }) => { - if ( - event.template === template && - event.documentId === documentId && - event.documentPageId === documentPageId && - !compareObjects(event.templateAssets, event.prevTemplateAssets) - ) { - setTemplateAssets(event.templateAssets); - } - }; - - if (template) { - const mountingFetch = async () => { - const allTemplateAssets = await getTemplateAssets({ - appBridge, - template, - documentId, - documentPageId, - }); - - if (componentMounted) { - setTemplateAssets(allTemplateAssets); - } - }; - mountingFetch(); - - window.emitter.on('AppBridge:TemplateAssetsUpdated', updateTemplateAssetsFromEvent); - } - - return () => { - componentMounted = false; - window.emitter.off('AppBridge:TemplateAssetsUpdated', updateTemplateAssetsFromEvent); - }; - }, [appBridge, documentId, documentPageId, template]); - - useEffect(() => { - const overrides = []; - const mergedAssets = { ...templateAssets }; - - for (const field in themeAssets) { - if (templateAssets[field] !== null && templateAssets[field] !== undefined) { - overrides.push(field); - } else if (themeAssets[field].length > 0) { - mergedAssets[field] = themeAssets[field]; - } - } - - setCustomizedTemplateAssetsKeys(overrides); - setMergedThemeAndTemplateAssets(mergedAssets); - }, [themeAssets, templateAssets]); - - const emitUpdatedTemplateAssets = async () => { - window.emitter.emit('AppBridge:TemplateAssetsUpdated', { - template, - documentId, - documentPageId, - templateAssets: await getTemplateAssets({ - appBridge, - template, - documentId, - documentPageId, - }), - prevTemplateAssets: { ...templateAssets }, - }); - }; - - const updateAssetIdsFromKey = async (key: string, newAssetIds: number[]) => { - const currentTemplateAssets = await getTemplateAssets({ - appBridge, - template, - documentId, - documentPageId, - }); - const oldAssetIds = currentTemplateAssets[key]?.map((asset) => asset.id) ?? []; - - try { - await deleteAssetIdsFromTemplateAssetKey(key, oldAssetIds, { - appBridge, - template, - documentId, - documentPageId, - }); - await addAssetIdsToTemplateAssetKey(key, newAssetIds, { - appBridge, - template, - documentId, - documentPageId, - }); - } catch (error) { - console.error(error); - } - - emitUpdatedTemplateAssets(); - }; - - const deleteAssetIdsFromKey = async (key: string, assetIds: number[]) => { - await deleteAssetIdsFromTemplateAssetKey(key, assetIds, { - appBridge, - template, - documentId, - documentPageId, - }); - emitUpdatedTemplateAssets(); - }; - - const addAssetIdsToKey = async (key: string, assetIds: number[]) => { - await addAssetIdsToTemplateAssetKey(key, assetIds, { - appBridge, - template, - documentId, - documentPageId, - }); - emitUpdatedTemplateAssets(); - }; - - return { - templateAssets: mergedThemeAndTemplateAssets, - themeAssets, - customizedTemplateAssetsKeys, - addAssetIdsToKey, - deleteAssetIdsFromKey, - updateAssetIdsFromKey, - }; -}; diff --git a/packages/app-bridge/src/react/useThemeAssets.spec.ts b/packages/app-bridge/src/react/useThemeAssets.spec.ts deleted file mode 100644 index 76d268249..000000000 --- a/packages/app-bridge/src/react/useThemeAssets.spec.ts +++ /dev/null @@ -1,163 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { act, cleanup, renderHook, waitFor } from '@testing-library/react'; -import { type SinonStub } from 'sinon'; -import { type Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; - -import { type Asset, type ThemeTemplate } from '..'; -import { AssetDummy, getAppBridgeThemeStub } from '../tests'; - -import { useThemeAssets } from './useThemeAssets'; - -const DOCUMENT_PAGE_TEMPLATE = 'documentPage'; - -describe('useThemeAssets hook', () => { - beforeEach(() => { - vi.spyOn(console, 'error').mockImplementation(() => {}); - }); - - afterEach(() => { - vi.restoreAllMocks(); - cleanup(); - }); - - const loadUseThemeAssets = async (existingAssets: Asset[], template: ThemeTemplate, keyName: string) => { - const asset = AssetDummy.with(1); - const appBridgeStub = getAppBridgeThemeStub({ - themeAssets: { [keyName]: existingAssets }, - }); - - const { result, rerender } = renderHook(() => useThemeAssets(appBridgeStub, template)); - - // eslint-disable-next-line @typescript-eslint/require-await - await act(async () => { - rerender(); - }); - - return { result, appBridgeStub, asset }; - }; - - it('should delete an asset', async () => { - const { result, appBridgeStub } = await loadUseThemeAssets([], DOCUMENT_PAGE_TEMPLATE, 'key'); - await act(async () => { - await result.current.deleteAssetIdsFromKey('key', [1]); - }); - - const call = appBridgeStub.deleteAssetIdsFromThemeAssetKey.getCall(0); - - await waitFor(() => { - expect(call.firstArg).toEqual('key'); - expect(call.args[1]).toEqual([1]); - expect(call.lastArg).toEqual(DOCUMENT_PAGE_TEMPLATE); - expect(result.current.themeAssets).toStrictEqual({ key: [] }); - }); - }); - - it('should sort assets', async () => { - const { result, appBridgeStub } = await loadUseThemeAssets( - [AssetDummy.with(1), AssetDummy.with(2)], - DOCUMENT_PAGE_TEMPLATE, - 'key', - ); - - await act(async () => { - await result.current.updateAssetIdsFromKey('key', [2, 1]); - }); - - const deleteCall = appBridgeStub.deleteAssetIdsFromThemeAssetKey.getCall(0); - const addCall = appBridgeStub.addAssetIdsToThemeAssetKey.getCall(0); - - await waitFor(async () => { - expect(deleteCall.firstArg).toEqual('key'); - expect(deleteCall.args[1]).toEqual([1, 2]); - expect(addCall.firstArg).toEqual('key'); - expect(addCall.args[1]).toEqual([2, 1]); - expect(result.current.themeAssets.key.map((asset) => asset.id)).toEqual([2, 1]); - }); - }); - - it('should delete nothing if key does not exist', async () => { - const { result, appBridgeStub } = await loadUseThemeAssets( - [AssetDummy.with(1), AssetDummy.with(2)], - DOCUMENT_PAGE_TEMPLATE, - 'non-existing-key', - ); - - await act(async () => { - await result.current.updateAssetIdsFromKey('key', [2, 1]); - }); - - const deleteCall = appBridgeStub.deleteAssetIdsFromThemeAssetKey.getCall(0); - - await waitFor(async () => { - expect(deleteCall.firstArg).toEqual('key'); - expect(deleteCall.args[1]).toEqual([]); - }); - }); - - it('should not sort assets if api call throws error', async () => { - const { result, appBridgeStub } = await loadUseThemeAssets( - [AssetDummy.with(1), AssetDummy.with(2)], - DOCUMENT_PAGE_TEMPLATE, - 'key', - ); - (appBridgeStub.deleteAssetIdsFromThemeAssetKey as unknown as Mock) = vi - .fn() - .mockRejectedValue('Unsuccessful API call'); - - await act(async () => { - await result.current.updateAssetIdsFromKey('key', [2, 1]); - }); - - await waitFor(async () => { - expect(result.current.themeAssets.key.map((asset) => asset.id)).toEqual([1, 2]); - }); - - expect(console.error).toHaveBeenCalledOnce(); - }); - - it('should notify about updated assets on delete', async () => { - const { result, asset } = await loadUseThemeAssets([AssetDummy.with(1)], DOCUMENT_PAGE_TEMPLATE, 'key'); - - await act(async () => { - await result.current.deleteAssetIdsFromKey('key', [1]); - }); - - const call = (window.emitter.emit as SinonStub).getCall(0); - - await waitFor(() => { - expect(call.firstArg).toEqual('AppBridge:ThemeAssetsUpdated'); - expect(call.lastArg.themeAssets).toStrictEqual({ key: [] }); - expect(call.lastArg.prevThemeAssets).toMatchObject({ key: [asset] }); - }); - }); - - it('should add asset ids', async () => { - const { result, appBridgeStub } = await loadUseThemeAssets([AssetDummy.with(1)], DOCUMENT_PAGE_TEMPLATE, 'key'); - await act(async () => { - await result.current.addAssetIdsToKey('key', [2]); - }); - - const call = appBridgeStub.addAssetIdsToThemeAssetKey.getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual('key'); - expect(call.args[1]).toEqual([2]); - expect(result.current.themeAssets.key.map(({ id }) => id)).toEqual([1, 2]); - }); - }); - - it('should notify about updated assets on add asset ids to key', async () => { - const { result, asset } = await loadUseThemeAssets([AssetDummy.with(1)], DOCUMENT_PAGE_TEMPLATE, 'key'); - const assetToAdd = AssetDummy.with(2); - await act(async () => { - await result.current.addAssetIdsToKey('key', [assetToAdd.id]); - }); - - const call = (window.emitter.emit as SinonStub).getCall(0); - await waitFor(() => { - expect(call.firstArg).toEqual('AppBridge:ThemeAssetsUpdated'); - expect(call.lastArg.themeAssets).toMatchObject({ key: [asset, assetToAdd] }); - expect(call.lastArg.prevThemeAssets).toMatchObject({ key: [asset] }); - }); - }); -}); diff --git a/packages/app-bridge/src/react/useThemeAssets.ts b/packages/app-bridge/src/react/useThemeAssets.ts deleted file mode 100644 index 051ad1478..000000000 --- a/packages/app-bridge/src/react/useThemeAssets.ts +++ /dev/null @@ -1,111 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useEffect, useState } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { type Asset, type ThemeTemplate } from '../types'; -import { compareObjects } from '../utilities'; - -export const useThemeAssets = (appBridge: AppBridgeTheme, template?: ThemeTemplate) => { - const portalId = appBridge.getPortalId(); - - const [themeAssets, setThemeAssets] = useState>({}); - - const updateThemeAssetsFromEvent = (event: { - template?: ThemeTemplate; - portalId: number; - themeAssets: Record; - prevThemeAssets: Record; - }) => { - if ( - template && - event.template === template && - event.portalId === portalId && - !compareObjects(event.themeAssets, event.prevThemeAssets) - ) { - setThemeAssets(event.themeAssets); - } - }; - - const getThemeAssets = async (): Promise> => { - return template ? await appBridge.getThemeAssets(template) : Promise.resolve({}); - }; - - const addAssetIdsToThemeAssetKey = async (key: string, assetIds: number[]): Promise => { - if (template) { - await appBridge.addAssetIdsToThemeAssetKey(key, assetIds, template); - } - }; - - const deleteAssetIdsFromThemeAssetKey = async (key: string, assetIds: number[]): Promise => { - if (template) { - await appBridge.deleteAssetIdsFromThemeAssetKey(key, assetIds, template); - } - }; - - // Fetch the theme assets on mount. - // And add listener for theme assets updates. - useEffect(() => { - let componentMounted = true; - - if (portalId) { - const mountingFetch = async () => { - const allThemeAssets = template ? await getThemeAssets() : {}; - - if (componentMounted && template) { - setThemeAssets(allThemeAssets); - } - }; - mountingFetch(); - - window.emitter.on('AppBridge:ThemeAssetsUpdated', updateThemeAssetsFromEvent); - } - - return () => { - componentMounted = false; - window.emitter.off('AppBridge:ThemeAssetsUpdated', updateThemeAssetsFromEvent); - }; - }, [appBridge]); - - const emitUpdatedThemeAssets = async () => { - if (template) { - window.emitter.emit('AppBridge:ThemeAssetsUpdated', { - portalId, - themeAssets: await getThemeAssets(), - prevThemeAssets: { ...themeAssets }, - template, - }); - } - }; - - const updateAssetIdsFromKey = async (key: string, newAssetIds: number[]) => { - const currentThemeAssets = await getThemeAssets(); - const oldAssetIds = currentThemeAssets[key]?.map((asset) => asset.id) ?? []; - - try { - await deleteAssetIdsFromThemeAssetKey(key, oldAssetIds); - await addAssetIdsToThemeAssetKey(key, newAssetIds); - } catch (error) { - console.error(error); - } - - emitUpdatedThemeAssets(); - }; - - const deleteAssetIdsFromKey = async (key: string, assetIds: number[]) => { - await deleteAssetIdsFromThemeAssetKey(key, assetIds); - emitUpdatedThemeAssets(); - }; - - const addAssetIdsToKey = async (key: string, assetIds: number[]) => { - await addAssetIdsToThemeAssetKey(key, assetIds); - emitUpdatedThemeAssets(); - }; - - return { - themeAssets, - addAssetIdsToKey, - deleteAssetIdsFromKey, - updateAssetIdsFromKey, - }; -}; diff --git a/packages/app-bridge/src/react/useThemeSettings.spec.ts b/packages/app-bridge/src/react/useThemeSettings.spec.ts deleted file mode 100644 index c98c2e130..000000000 --- a/packages/app-bridge/src/react/useThemeSettings.spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { cleanup, renderHook, waitFor } from '@testing-library/react'; -import { type SinonStub } from 'sinon'; -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; - -import { getAppBridgeThemeStub } from '../tests'; -import { type ThemeTemplate } from '../types'; - -import { useThemeSettings } from './useThemeSettings'; - -const THEME_SETTINGS = { - cover: { - coverSettingOne: 'value one', - coverSettingTwo: 'value two', - }, - documentPage: {}, - library: {}, -}; - -describe('useThemeSettings', () => { - beforeEach(() => { - vi.spyOn(console, 'error').mockImplementation(() => {}); - }); - - afterEach(() => { - vi.restoreAllMocks(); - cleanup(); - }); - - const loadUseThemeSettings = async (themeSettings: Record>) => { - const appBridgeStub = getAppBridgeThemeStub({ - themeSettings, - }); - - const { result } = renderHook(() => useThemeSettings(appBridgeStub)); - return { result, appBridgeStub }; - }; - - it('returns the theme settings', async () => { - const { result } = await loadUseThemeSettings(THEME_SETTINGS); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.themeSettings).toEqual(THEME_SETTINGS); - }); - }); - - it('updates the theme settings', async () => { - const { result } = await loadUseThemeSettings(THEME_SETTINGS); - - expect(result.current.isLoading).toEqual(true); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.themeSettings).toEqual(THEME_SETTINGS); - }); - - await result.current.updateThemeSettings({ - cover: { coverSettingTwo: 'value two - updated' }, - }); - expect(result.current.isLoading).toEqual(false); - - const emitCall = (window.emitter.emit as SinonStub).getCall(0); - - await waitFor(() => { - expect(result.current.isLoading).toEqual(false); - expect(result.current.themeSettings).toEqual({ - cover: { coverSettingOne: 'value one', coverSettingTwo: 'value two - updated' }, - documentPage: {}, - library: {}, - }); - expect(emitCall.firstArg).toEqual('AppBridge:ThemeSettingsUpdated'); - expect(emitCall.lastArg.themeSettings).toStrictEqual({ - cover: { coverSettingOne: 'value one', coverSettingTwo: 'value two - updated' }, - documentPage: {}, - library: {}, - }); - }); - }); -}); diff --git a/packages/app-bridge/src/react/useThemeSettings.ts b/packages/app-bridge/src/react/useThemeSettings.ts deleted file mode 100644 index 3aa6b76c4..000000000 --- a/packages/app-bridge/src/react/useThemeSettings.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { useEffect, useState } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { type EmitterEvents, type ThemeTemplate } from '../types'; - -export const useThemeSettings = >>( - appBridge: AppBridgeTheme, -) => { - const [themeSettings, setThemeSettings] = useState>(null); - const [isLoading, setIsLoading] = useState(true); - - useEffect(() => { - const updateThemeSettingsFromEvent = (event: EmitterEvents['AppBridge:ThemeSettingsUpdated']) => { - setThemeSettings({ ...event.themeSettings } as T); - }; - - const getInitialThemeSettings = async () => { - setIsLoading(true); - - const themeSettings = await appBridge.getThemeSettings(); - setThemeSettings(themeSettings); - - setIsLoading(false); - }; - - getInitialThemeSettings(); - - window.emitter.on('AppBridge:ThemeSettingsUpdated', updateThemeSettingsFromEvent); - - return () => { - window.emitter.off('AppBridge:ThemeSettingsUpdated', updateThemeSettingsFromEvent); - }; - }, [appBridge]); - - const updateThemeSettings = async (themeSettingsUpdate: Partial) => { - try { - await appBridge.updateThemeSettings(themeSettingsUpdate); - - window.emitter.emit('AppBridge:ThemeSettingsUpdated', { - themeSettings: { - cover: { ...themeSettings?.cover, ...themeSettingsUpdate.cover }, - library: { ...themeSettings?.library, ...themeSettingsUpdate.library }, - documentPage: { ...themeSettings?.documentPage, ...themeSettingsUpdate.documentPage }, - }, - }); - } catch (error) { - console.error(error); - } - }; - - return { themeSettings, updateThemeSettings, isLoading }; -}; diff --git a/packages/app-bridge/src/react/useUncategorizedDocumentPages.ts b/packages/app-bridge/src/react/useUncategorizedDocumentPages.ts index 4d08b485f..c18587dd3 100644 --- a/packages/app-bridge/src/react/useUncategorizedDocumentPages.ts +++ b/packages/app-bridge/src/react/useUncategorizedDocumentPages.ts @@ -4,7 +4,6 @@ import { produce } from 'immer'; import { useCallback, useEffect, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type DocumentPage, type EmitterEvents } from '../types'; import { type DocumentPageTargetEvent } from './useDocumentPageTargets'; @@ -21,7 +20,7 @@ type Options = { const sortDocumentPages = (a: DocumentPage, b: DocumentPage) => (a.sort && b.sort ? a.sort - b.sort : 0); export const useUncategorizedDocumentPages = ( - appBridge: AppBridgeBlock | AppBridgeTheme, + appBridge: AppBridgeBlock, documentId: number, options: Options = { enabled: true }, ) => { @@ -162,7 +161,7 @@ const moveDocumentPage = (draft: Map, documentPage: Docume return draft; }; -const fetchDocumentPagesByDocumentId = async (appBridge: AppBridgeBlock | AppBridgeTheme, documentId: number) => { +const fetchDocumentPagesByDocumentId = async (appBridge: AppBridgeBlock, documentId: number) => { const pages = await appBridge.getUncategorizedDocumentPagesByDocumentId(documentId); return new Map([...pages].sort(sortDocumentPages).map((page) => [page.id, page])); }; diff --git a/packages/app-bridge/src/react/useUngroupedDocuments.ts b/packages/app-bridge/src/react/useUngroupedDocuments.ts index 7607e3683..305c2de2d 100644 --- a/packages/app-bridge/src/react/useUngroupedDocuments.ts +++ b/packages/app-bridge/src/react/useUngroupedDocuments.ts @@ -4,7 +4,6 @@ import { produce } from 'immer'; import { useCallback, useEffect, useState } from 'react'; import { type AppBridgeBlock } from '../AppBridgeBlock'; -import { type AppBridgeTheme } from '../AppBridgeTheme'; import { type Document, type EmitterEvents } from '../types'; type DocumentPageEvent = EmitterEvents['AppBridge:GuidelineDocument:DocumentPageAction']; @@ -22,10 +21,7 @@ type Options = { const sortDocuments = (a: Document, b: Document) => (a.sort && b.sort ? a.sort - b.sort : 0); -export const useUngroupedDocuments = ( - appBridge: AppBridgeBlock | AppBridgeTheme, - options: Options = { enabled: true }, -) => { +export const useUngroupedDocuments = (appBridge: AppBridgeBlock, options: Options = { enabled: true }) => { const [documents, setDocuments] = useState>(new Map([])); const [isLoading, setIsLoading] = useState(true); @@ -272,7 +268,7 @@ const actionHandlers = { default: (documents: Map) => documents, }; -const fetchUngroupedDocuments = async (appBridge: AppBridgeBlock | AppBridgeTheme) => { +const fetchUngroupedDocuments = async (appBridge: AppBridgeBlock) => { const documents = await appBridge.getUngroupedDocuments(); return new Map([...documents].sort(sortDocuments).map((document) => [document.id, document])); }; diff --git a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts index 7014be767..acc95fb7d 100644 --- a/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts +++ b/packages/app-bridge/src/registries/api/ApiMethodRegistry.ts @@ -7,8 +7,6 @@ import { type GetAssetBulkDownloadTokenResponse, } from './GetAssetBulkDownloadToken'; import { type GetCurrentUserPayload, type GetCurrentUserResponse } from './GetCurrentUser.ts'; -import { type GetDocumentNavigationPayload, type GetDocumentNavigationResponse } from './GetDocumentNavigation'; -import { type GetPortalNavigationResponse } from './GetPortalNavigation'; import { type SetAssetIdsByBlockAssetKeyPayload, type SetAssetIdsByBlockAssetKeyResponse, @@ -24,6 +22,4 @@ export type ApiMethodRegistry = ApiMethodNameValidator<{ payload: SetAssetIdsByBlockAssetKeyPayload; response: SetAssetIdsByBlockAssetKeyResponse; }; - getDocumentNavigation: { payload: GetDocumentNavigationPayload; response: GetDocumentNavigationResponse }; - getPortalNavigation: { payload: void; response: GetPortalNavigationResponse }; }>; diff --git a/packages/app-bridge/src/registries/api/GetDocumentNavigation.spec.ts b/packages/app-bridge/src/registries/api/GetDocumentNavigation.spec.ts deleted file mode 100644 index be862a687..000000000 --- a/packages/app-bridge/src/registries/api/GetDocumentNavigation.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it } from 'vitest'; - -import { GuidelineDocumentClass, GuidelineDocumentClassDummy } from '../../tests'; - -import { getDocumentNavigation } from './GetDocumentNavigation'; - -describe('GetDocumentNavigation', () => { - it('should return correct method name', () => { - const document = GuidelineDocumentClassDummy.with(101, 'document-101'); - - const documentNavigationCall = getDocumentNavigation({ document }); - expect(documentNavigationCall.name).toBe('getDocumentNavigation'); - }); - - it('should return correct payload', () => { - const document = GuidelineDocumentClassDummy.with(101, 'document-101'); - - const documentNavigationCall = getDocumentNavigation({ document }); - expect(documentNavigationCall.payload.document).toBeInstanceOf(GuidelineDocumentClass); - }); -}); diff --git a/packages/app-bridge/src/registries/api/GetDocumentNavigation.ts b/packages/app-bridge/src/registries/api/GetDocumentNavigation.ts deleted file mode 100644 index fbaa8465f..000000000 --- a/packages/app-bridge/src/registries/api/GetDocumentNavigation.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type DocumentNavigationItem, type GuidelineDocument } from '../../types/Guideline'; - -export type GetDocumentNavigationPayload = { - document: GuidelineDocument; -}; - -export type GetDocumentNavigationResponse = DocumentNavigationItem[]; - -export const getDocumentNavigation = ( - payload: GetDocumentNavigationPayload, -): { name: 'getDocumentNavigation'; payload: GetDocumentNavigationPayload } => ({ - name: 'getDocumentNavigation', - payload, -}); diff --git a/packages/app-bridge/src/registries/api/GetPortalNavigation.spec.ts b/packages/app-bridge/src/registries/api/GetPortalNavigation.spec.ts deleted file mode 100644 index 77bf9df8b..000000000 --- a/packages/app-bridge/src/registries/api/GetPortalNavigation.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { describe, expect, it } from 'vitest'; - -import { getPortalNavigation } from './GetPortalNavigation'; - -describe('GetPortalNavigation', () => { - it('should return correct method name', () => { - const portalNavigationCall = getPortalNavigation(); - expect(portalNavigationCall.name).toBe('getPortalNavigation'); - }); -}); diff --git a/packages/app-bridge/src/registries/api/GetPortalNavigation.ts b/packages/app-bridge/src/registries/api/GetPortalNavigation.ts deleted file mode 100644 index a8ae0b80a..000000000 --- a/packages/app-bridge/src/registries/api/GetPortalNavigation.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type PortalNavigationItem } from '../../types/Guideline'; - -export type GetPortalNavigationResponse = PortalNavigationItem[]; - -export const getPortalNavigation = () => ({ name: 'getPortalNavigation' }); diff --git a/packages/app-bridge/src/registries/api/index.ts b/packages/app-bridge/src/registries/api/index.ts index af80031b5..cb8368d33 100644 --- a/packages/app-bridge/src/registries/api/index.ts +++ b/packages/app-bridge/src/registries/api/index.ts @@ -3,6 +3,4 @@ export * from './ApiMethodRegistry'; export * from './GetAssetBulkDownloadToken'; export * from './SetAssetIdsByBlockAssetKey'; -export * from './GetDocumentNavigation'; -export * from './GetPortalNavigation'; export * from './GetCurrentUser'; diff --git a/packages/app-bridge/src/registries/commands/CommandRegistry.ts b/packages/app-bridge/src/registries/commands/CommandRegistry.ts index d3e1443a3..9fc869da8 100644 --- a/packages/app-bridge/src/registries/commands/CommandRegistry.ts +++ b/packages/app-bridge/src/registries/commands/CommandRegistry.ts @@ -13,11 +13,9 @@ type CloseAssetChooserPayload = void; type OpenAssetViewerPayload = AssetViewerOptions; type OpenTemplateChooser = void; type CloseTemplateChooser = void; -type OpenNavigationManager = void; type DownloadAsset = Asset; type OpenSearchDialog = void; type CloseSearchDialog = void; -type NavigateToDocumentSection = number | string; export type CommandRegistry = CommandNameValidator<{ openAssetChooser?: OpenAssetChooserPayload; @@ -26,9 +24,7 @@ export type CommandRegistry = CommandNameValidator<{ openTemplateChooser: OpenTemplateChooser; closeTemplateChooser: CloseTemplateChooser; downloadAsset: DownloadAsset; - openNavigationManager: OpenNavigationManager; openNewPublication: OpenNewPublicationPayload; openSearchDialog: OpenSearchDialog; closeSearchDialog: CloseSearchDialog; - navigateToDocumentSection: NavigateToDocumentSection; }>; diff --git a/packages/app-bridge/src/registries/commands/NavigateToDocumentSection.ts b/packages/app-bridge/src/registries/commands/NavigateToDocumentSection.ts deleted file mode 100644 index d75f6f62c..000000000 --- a/packages/app-bridge/src/registries/commands/NavigateToDocumentSection.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type DispatchHandlerParameter } from '../../AppBridge'; - -import { type CommandRegistry } from './CommandRegistry'; - -export const navigateToDocumentSection = ( - sectionId: CommandRegistry['navigateToDocumentSection'], -): DispatchHandlerParameter<'navigateToDocumentSection', CommandRegistry> => ({ - name: 'navigateToDocumentSection', - payload: sectionId, -}); diff --git a/packages/app-bridge/src/registries/commands/NavigationManager.ts b/packages/app-bridge/src/registries/commands/NavigationManager.ts deleted file mode 100644 index efe190276..000000000 --- a/packages/app-bridge/src/registries/commands/NavigationManager.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type DispatchHandlerParameter } from '../../AppBridge'; - -import { type CommandRegistry } from './CommandRegistry'; - -export const openNavigationManager = (): DispatchHandlerParameter<'openNavigationManager', CommandRegistry> => ({ - name: 'openNavigationManager', -}); diff --git a/packages/app-bridge/src/registries/commands/index.ts b/packages/app-bridge/src/registries/commands/index.ts index 902e73e3b..d98b80338 100644 --- a/packages/app-bridge/src/registries/commands/index.ts +++ b/packages/app-bridge/src/registries/commands/index.ts @@ -4,8 +4,6 @@ export * from './AssetChooser'; export * from './AssetViewer'; export * from './CommandRegistry'; export * from './DownloadAsset'; -export * from './NavigationManager'; export * from './NewPublication'; export * from './SearchDialog'; export * from './TemplateChooser'; -export * from './NavigateToDocumentSection'; diff --git a/packages/app-bridge/src/registries/verbs/Verbs.ts b/packages/app-bridge/src/registries/verbs/Verbs.ts index a18d6e7b8..6881c0938 100644 --- a/packages/app-bridge/src/registries/verbs/Verbs.ts +++ b/packages/app-bridge/src/registries/verbs/Verbs.ts @@ -1,5 +1,5 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export type ApiVerb = 'get' | 'create' | 'update' | 'delete' | 'add' | 'remove' | 'set'; -export type CommandVerb = 'open' | 'close' | 'navigate' | 'download'; +export type CommandVerb = 'open' | 'close' | 'download'; export type EventVerb = 'chosen'; diff --git a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts index 0a62329eb..3541da34a 100644 --- a/packages/app-bridge/src/tests/AppBridgeBlockStub.ts +++ b/packages/app-bridge/src/tests/AppBridgeBlockStub.ts @@ -14,6 +14,9 @@ import { AssetDummy } from './AssetDummy'; import { BulkDownloadDummy } from './BulkDownloadDummy'; import { ColorDummy } from './ColorDummy'; import { ColorPaletteDummy } from './ColorPaletteDummy'; +import { DocumentCategoryDummy } from './DocumentCategoryDummy'; +import { DocumentDummy } from './DocumentDummy'; +import { DocumentPageDummy } from './DocumentPageDummy'; import { DocumentSectionApiDummy } from './DocumentSectionApiDummy'; import { TemplateDummy } from './TemplateDummy'; import { TemplateLegacyDummy } from './TemplateLegacyDummy'; @@ -24,6 +27,22 @@ const SECTION_ID = 2341; const USER_ID = 4561; const PROJECT_ID = 345214; +const DOCUMENT_GROUP_ID_1 = 5332; +const GROUPED_DOCUMENT_ID_1 = 2434; +const GROUPED_DOCUMENT_ID_2 = 552; +const GROUPED_DOCUMENT_ID_3 = 1145; +const GROUPED_DOCUMENT_ID_4 = 32345; +const DOCUMENT_PAGE_ID_1 = 23442; +const DOCUMENT_PAGE_ID_2 = 235345; +const DOCUMENT_PAGE_ID_3 = 12352; +const DOCUMENT_PAGE_ID_4 = 55221; +const UNCATEGORIZED_DOCUMENT_PAGE_ID_1 = 24324; +const UNCATEGORIZED_DOCUMENT_PAGE_ID_2 = 3532; +const UNCATEGORIZED_DOCUMENT_PAGE_ID_3 = 98954; +const DOCUMENT_CATEGORY_ID_1 = 147; +const DOCUMENT_CATEGORY_ID_2 = 258; +const DOCUMENT_CATEGORY_ID_3 = 369; + export type getAppBridgeBlockStubProps = { blockSettings?: Record; blockAssets?: Record; @@ -242,15 +261,57 @@ export const getAppBridgeBlockStub = ({ updateBlockSettings: stub>().resolves(), getAllDocuments: stub>().resolves(), getUngroupedDocuments: stub>().resolves(), - getDocumentsByDocumentGroupId: stub>().resolves(), + getDocumentsByDocumentGroupId: stub>().resolves([ + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), + DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_4, DOCUMENT_GROUP_ID_1), + ]), getDocumentGroups: stub>().resolves(), getDocumentPagesByDocumentId: stub>().resolves(), - getDocumentPagesByDocumentCategoryId: - stub>().resolves(), - getDocumentCategoriesByDocumentId: - stub>().resolves(), - getUncategorizedDocumentPagesByDocumentId: - stub>().resolves(), + getDocumentPagesByDocumentCategoryId: stub< + Parameters + >().callsFake((documentCategoryId) => + Promise.resolve([ + DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_1, categoryId: documentCategoryId, sort: 1 }), + DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_2, categoryId: documentCategoryId, sort: 2 }), + DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_3, categoryId: documentCategoryId, sort: 3 }), + DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_4, categoryId: documentCategoryId, sort: 4 }), + ]), + ), + getDocumentCategoriesByDocumentId: stub< + Parameters + >().callsFake((documentId) => + Promise.resolve([ + DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages(DOCUMENT_CATEGORY_ID_1, documentId, 2), + DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages(DOCUMENT_CATEGORY_ID_2, documentId, 0), + DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages(DOCUMENT_CATEGORY_ID_3, documentId, 2), + ]), + ), + getUncategorizedDocumentPagesByDocumentId: stub< + Parameters + >().callsFake((documentId) => + Promise.resolve([ + DocumentPageDummy.withFields({ + id: UNCATEGORIZED_DOCUMENT_PAGE_ID_1, + documentId, + categoryId: null, + sort: 1, + }), + DocumentPageDummy.withFields({ + id: UNCATEGORIZED_DOCUMENT_PAGE_ID_2, + documentId, + categoryId: null, + sort: 2, + }), + DocumentPageDummy.withFields({ + id: UNCATEGORIZED_DOCUMENT_PAGE_ID_3, + documentId, + categoryId: null, + sort: 3, + }), + ]), + ), getDocumentTargets: stub>().resolves(), getDocumentPageTargets: stub>().resolves(), state: stub>().resolves(), diff --git a/packages/app-bridge/src/tests/AppBridgeThemeStub.ts b/packages/app-bridge/src/tests/AppBridgeThemeStub.ts deleted file mode 100644 index dd08751ea..000000000 --- a/packages/app-bridge/src/tests/AppBridgeThemeStub.ts +++ /dev/null @@ -1,442 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import mitt, { type Emitter } from 'mitt'; -import { type SinonStubbedInstance, spy, stub } from 'sinon'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; -import { type Asset, type ThemeTemplate } from '../types'; -import { type EmitterEvents } from '../types/Emitter'; -import { mergeDeep } from '../utilities'; - -import { GuidelineSearchResultDummy } from './GuidelineSearchResultDummy'; - -import { - AssetDummy, - BrandportalLinkDummy, - ColorDummy, - ColorPaletteDummy, - CoverPageDummy, - DocumentCategoryDummy, - DocumentDummy, - DocumentGroupDummy, - DocumentPageDummy, - DocumentPageTargetsDummy, - DocumentSectionDummy, - DocumentTargetsDummy, - UpdateTargetsDummy, -} from '.'; - -const BRAND_ID = 234551; -const PROJECT_ID = 3452; -const PORTAL_ID = 7777; -const DOCUMENT_GROUP_ID_1 = 5332; -const DOCUMENT_GROUP_ID_2 = 95694; -const DOCUMENT_GROUP_ID_3 = 345882; -const DOCUMENT_ID_1 = 6456; -const DOCUMENT_ID_2 = 34532; -const DOCUMENT_ID_3 = 3455345; -const DOCUMENT_ID_4 = 2342; -const DOCUMENT_ID_5 = 2343445; -const GROUPED_DOCUMENT_ID_1 = 2434; -const GROUPED_DOCUMENT_ID_2 = 552; -const GROUPED_DOCUMENT_ID_3 = 1145; -const GROUPED_DOCUMENT_ID_4 = 32345; -const DOCUMENT_CATEGORY_ID_1 = 147; -const DOCUMENT_CATEGORY_ID_2 = 258; -const DOCUMENT_CATEGORY_ID_3 = 369; -const DOCUMENT_PAGE_ID_1 = 23442; -const DOCUMENT_PAGE_ID_2 = 235345; -const DOCUMENT_PAGE_ID_3 = 12352; -const DOCUMENT_PAGE_ID_4 = 55221; -const UNCATEGORIZED_DOCUMENT_PAGE_ID_1 = 24324; -const UNCATEGORIZED_DOCUMENT_PAGE_ID_2 = 3532; -const UNCATEGORIZED_DOCUMENT_PAGE_ID_3 = 98954; -const DOCUMENT_SECTION_ID_1 = 3421; -const DOCUMENT_SECTION_ID_2 = 65725; -const DOCUMENT_SECTION_ID_3 = 95934; -const DOCUMENT_PAGE_DUPLICATE_ID_1 = 2341; -const TARGET_ID_1 = 653543; -const TARGET_ID_2 = 23411; -const TARGET_ID_3 = 56657; - -export type getAppBridgeThemeStubProps = { - editorState?: boolean; - brandId?: number; - portalId?: number; - projectId?: number; - pageTemplateSettings?: Record; - pageTemplateAssets?: Record; - themeSettings?: Record>; - themeAssets?: Record; - language?: string; - openAssetChooser?: (callback: Parameters[0]) => void; - closeAssetChooser?: () => void; -}; - -export const getAppBridgeThemeStub = ({ - editorState = false, - brandId = BRAND_ID, - portalId = PORTAL_ID, - projectId = PROJECT_ID, - pageTemplateSettings = {}, - pageTemplateAssets = {}, - themeSettings = { cover: {}, documentPage: {}, library: {} }, - themeAssets = {}, - language = 'en', - openAssetChooser = () => null, - closeAssetChooser = () => null, -}: getAppBridgeThemeStubProps = {}): SinonStubbedInstance => { - window.emitter = spy(mitt()) as unknown as Emitter; - - let localPageTemplateSettings = pageTemplateSettings; - let localThemeSettings = themeSettings; - - const deletedAssetIds: Record = {}; - const addedAssetIds: Record = {}; - - const getAssets = async (themeOrTemplateAssets: Record) => { - return Object.entries(themeOrTemplateAssets).reduce>((assetsDiff, [key, assets]) => { - const addedAssetIdsList = addedAssetIds[key] ?? []; - const deletedAssetIdsList = deletedAssetIds[key] ?? []; - assetsDiff[key] = [ - ...assets.filter((asset) => !deletedAssetIdsList.includes(asset.id)), - ...addedAssetIdsList.map((id) => AssetDummy.with(id)), - ]; - return assetsDiff; - }, {}); - }; - - const getTemplateAssets = async () => getAssets(pageTemplateAssets); - - const getThemeAssets = async () => getAssets(themeAssets); - - return { - getPortalId: stub>().returns(portalId), - getProjectId: stub>().returns(projectId), - getEditorState: stub>().returns(editorState), - getCoverPage: stub>().resolves(CoverPageDummy.with(PORTAL_ID)), - getAllDocuments: stub>().resolves([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - DocumentDummy.with(DOCUMENT_ID_4), - DocumentDummy.with(DOCUMENT_ID_5), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_4, DOCUMENT_GROUP_ID_1), - ]), - getUngroupedDocuments: stub>().resolves([ - DocumentDummy.with(DOCUMENT_ID_1), - DocumentDummy.with(DOCUMENT_ID_2), - DocumentDummy.with(DOCUMENT_ID_3), - DocumentDummy.with(DOCUMENT_ID_4), - DocumentDummy.with(DOCUMENT_ID_5), - ]), - getDocumentsByDocumentGroupId: stub>().resolves([ - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_1, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_2, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_3, DOCUMENT_GROUP_ID_1), - DocumentDummy.withDocumentGroupId(GROUPED_DOCUMENT_ID_4, DOCUMENT_GROUP_ID_1), - ]), - getDocumentGroups: stub>().resolves([ - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_1, 3), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_2, 0), - DocumentGroupDummy.with(DOCUMENT_GROUP_ID_3, 2), - ]), - getDocumentPagesByDocumentId: stub>().resolves([ - DocumentPageDummy.with(DOCUMENT_PAGE_ID_1), - DocumentPageDummy.with(DOCUMENT_PAGE_ID_2), - DocumentPageDummy.with(UNCATEGORIZED_DOCUMENT_PAGE_ID_1), - DocumentPageDummy.with(DOCUMENT_PAGE_ID_3), - DocumentPageDummy.with(UNCATEGORIZED_DOCUMENT_PAGE_ID_2), - DocumentPageDummy.with(DOCUMENT_PAGE_ID_4), - DocumentPageDummy.with(UNCATEGORIZED_DOCUMENT_PAGE_ID_3), - ]), - getDocumentPagesByDocumentCategoryId: stub< - Parameters - >().callsFake((documentCategoryId) => - Promise.resolve([ - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_1, categoryId: documentCategoryId, sort: 1 }), - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_2, categoryId: documentCategoryId, sort: 2 }), - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_3, categoryId: documentCategoryId, sort: 3 }), - DocumentPageDummy.withFields({ id: DOCUMENT_PAGE_ID_4, categoryId: documentCategoryId, sort: 4 }), - ]), - ), - getDocumentCategoriesByDocumentId: stub< - Parameters - >().callsFake((documentId) => - Promise.resolve([ - DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages(DOCUMENT_CATEGORY_ID_1, documentId, 2), - DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages(DOCUMENT_CATEGORY_ID_2, documentId, 0), - DocumentCategoryDummy.withDocumentIdAndNumberOfDocumentPages(DOCUMENT_CATEGORY_ID_3, documentId, 2), - ]), - ), - getUncategorizedDocumentPagesByDocumentId: stub< - Parameters - >().callsFake((documentId) => - Promise.resolve([ - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_1, - documentId, - categoryId: null, - sort: 1, - }), - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_2, - documentId, - categoryId: null, - sort: 2, - }), - DocumentPageDummy.withFields({ - id: UNCATEGORIZED_DOCUMENT_PAGE_ID_3, - documentId, - categoryId: null, - sort: 3, - }), - ]), - ), - getDocumentSectionsByDocumentPageId: stub< - Parameters - >().resolves([ - DocumentSectionDummy.with(DOCUMENT_SECTION_ID_1), - DocumentSectionDummy.with(DOCUMENT_SECTION_ID_2), - DocumentSectionDummy.with(DOCUMENT_SECTION_ID_3), - ]), - getColorPalettes: stub>().resolves([ - ColorPaletteDummy.with(678, 'Palette 1'), - ColorPaletteDummy.with(427, 'Palette 2'), - ColorPaletteDummy.with(679, 'Palette 3'), - ]), - getColorsByColorPaletteId: stub>().resolves([ - ColorDummy.red(9834), - ColorDummy.green(342), - ColorDummy.yellow(9314), - ]), - duplicateDocumentPage: stub>().resolves( - DocumentPageDummy.with(DOCUMENT_PAGE_DUPLICATE_ID_1), - ), - getDocumentTargets: stub>().resolves( - DocumentTargetsDummy.with(DOCUMENT_ID_1), - ), - getDocumentPageTargets: stub>().resolves( - DocumentPageTargetsDummy.with(DOCUMENT_PAGE_ID_1), - ), - addAssetIdsToCoverPageTemplateAssetKey: stub< - Parameters - >().callsFake(async (key: string, assetsIds: number[]) => { - addedAssetIds[key] = [...(addedAssetIds[key] ?? []), ...assetsIds]; - return pageTemplateAssets; - }), - addAssetIdsToThemeAssetKey: stub>().callsFake( - async (key: string, assetsIds: number[]) => { - addedAssetIds[key] = [...(addedAssetIds[key] ?? []), ...assetsIds]; - return pageTemplateAssets; - }, - ), - addAssetIdsToLibraryPageTemplateAssetKey: stub< - Parameters - >().callsFake(async (_documentId: number, key: string, assetsIds: number[]) => { - addedAssetIds[key] = [...(addedAssetIds[key] ?? []), ...assetsIds]; - return pageTemplateAssets; - }), - addAssetIdsToDocumentPageTemplateAssetKey: stub< - Parameters - >().callsFake(async (_documentPageId: number, key: string, assetsIds: number[]) => { - addedAssetIds[key] = [...(addedAssetIds[key] ?? []), ...assetsIds]; - return pageTemplateAssets; - }), - getCoverPageTemplateAssets: - stub>().callsFake(getTemplateAssets), - getThemeAssets: stub>().callsFake(getThemeAssets), - getLibraryPageTemplateAssets: - stub>().callsFake(getTemplateAssets), - getDocumentPageTemplateAssets: - stub>().callsFake(getTemplateAssets), - deleteAssetIdsFromCoverPageTemplateAssetKey: stub< - Parameters - >().callsFake(async (key, assetIds) => { - deletedAssetIds[key] = [...(deletedAssetIds[key] ?? []), ...assetIds]; - }), - deleteAssetIdsFromThemeAssetKey: stub< - Parameters - >().callsFake(async (key, assetIds) => { - deletedAssetIds[key] = [...(deletedAssetIds[key] ?? []), ...assetIds]; - }), - deleteAssetIdsFromLibraryPageTemplateAssetKey: stub< - Parameters - >().callsFake(async (_documentId: number, key, assetIds) => { - deletedAssetIds[key] = [...(deletedAssetIds[key] ?? []), ...assetIds]; - }), - deleteAssetIdsFromDocumentPageTemplateAssetKey: stub< - Parameters - >().callsFake(async (_documentPageId: number, key, assetIds) => { - deletedAssetIds[key] = [...(deletedAssetIds[key] ?? []), ...assetIds]; - }), - getCoverPageTemplateSettings: - stub>().resolves(localPageTemplateSettings), - getDocumentPageTemplateSettings: - stub>().resolves(localPageTemplateSettings), - getLibraryPageTemplateSettings: - stub>().resolves(localPageTemplateSettings), - getThemeSettings: stub>().resolves(localThemeSettings), - createLink: stub>().resolves(DocumentDummy.with(1)), - createLibrary: stub>().resolves(DocumentDummy.with(1)), - createStandardDocument: stub>().resolves( - DocumentDummy.with(1), - ), - createDocumentPage: stub>().resolves( - DocumentPageDummy.with(1), - ), - createDocumentGroup: stub>().resolves( - DocumentGroupDummy.with(1, 0), - ), - createDocumentCategory: stub>().resolves( - DocumentCategoryDummy.with(1), - ), - createCoverPage: stub>().resolves(CoverPageDummy.with(1)), - updateLink: stub>().resolves(DocumentDummy.with(1)), - updateLibrary: stub>().resolves(DocumentDummy.with(1)), - updateStandardDocument: stub>().resolves( - DocumentDummy.with(1), - ), - updateDocumentPage: stub>().resolves( - DocumentPageDummy.with(1), - ), - updateDocumentGroup: stub>().resolves( - DocumentGroupDummy.with(1, 0), - ), - updateDocumentCategory: stub>().resolves( - DocumentCategoryDummy.with(1), - ), - updateCoverPage: stub>().resolves(CoverPageDummy.with(1)), - updateLegacyCoverPage: stub>().resolves( - CoverPageDummy.withLegacy(1), - ), - updateBrandportalLink: stub>().resolves( - BrandportalLinkDummy.with(), - ), - updateCoverPageTemplateSettings: stub< - Parameters - >().callsFake(async (pageTemplateSettingsUpdate) => { - localPageTemplateSettings = mergeDeep(localPageTemplateSettings, pageTemplateSettingsUpdate); - }), - updateDocumentPageTemplateSettings: stub< - Parameters - >().callsFake(async (pageTemplateSettingsUpdate) => { - localPageTemplateSettings = mergeDeep(localPageTemplateSettings, pageTemplateSettingsUpdate); - }), - updateLibraryPageTemplateSettings: stub< - Parameters - >().callsFake(async (pageTemplateSettingsUpdate) => { - localPageTemplateSettings = mergeDeep(localPageTemplateSettings, pageTemplateSettingsUpdate); - }), - updateThemeSettings: stub>().callsFake( - async (themeSettingsUpdate) => { - localThemeSettings = mergeDeep(localThemeSettings, themeSettingsUpdate); - }, - ), - deleteCoverPage: stub>().resolves(), - deleteDocumentCategory: stub>().resolves(), - deleteDocumentGroup: stub>().resolves(), - deleteDocumentPage: stub>().resolves(), - deleteLibrary: stub>().resolves(), - deleteLink: stub>().resolves(), - deleteStandardDocument: stub>().resolves(), - getBrandId: stub>().returns(brandId), - getBrandportalLink: stub>().resolves( - BrandportalLinkDummy.with(), - ), - getTranslationLanguage: stub>().returns(language), - moveDocument: stub>().resolves(DocumentDummy.with(DOCUMENT_ID_1)), - moveDocumentCategory: stub>().resolves( - DocumentCategoryDummy.with(DOCUMENT_CATEGORY_ID_1), - ), - moveDocumentGroup: stub>().resolves( - DocumentGroupDummy.with(DOCUMENT_CATEGORY_ID_1, 0), - ), - moveDocumentPage: stub>().resolves( - DocumentPageDummy.with(DOCUMENT_PAGE_ID_1), - ), - openNavigationManager: stub>(), - updateDocumentPageTargets: stub>().resolves( - UpdateTargetsDummy.with([TARGET_ID_1, TARGET_ID_2, TARGET_ID_3]), - ), - updateDocumentTargets: stub>().resolves( - UpdateTargetsDummy.with([TARGET_ID_1, TARGET_ID_2, TARGET_ID_3]), - ), - searchInGuideline: stub>().callsFake(async (query) => { - return Promise.resolve([ - GuidelineSearchResultDummy.with(`${query}-1`), - GuidelineSearchResultDummy.with(`${query}-1`), - GuidelineSearchResultDummy.with(`${query}-3`), - ]); - }), - closeAssetChooser: stub>().callsFake(() => { - closeAssetChooser(); - }), - openAssetChooser: stub>().callsFake((callback) => { - openAssetChooser(callback); - }), - api: stub>().resolves(), - context: stub>().callsFake((args) => { - if (args === undefined) { - return { - get: () => ({ portalId, brandId, projectId, isEditing: editorState }), - }; - } else { - switch (args) { - case 'portalId': - return { - get: () => portalId, - }; - case 'brandId': - return { - get: () => brandId, - }; - case 'projectId': - return { - get: () => projectId, - }; - case 'isEditing': - return { - get: () => editorState, - }; - default: - return { - get: () => { - throw new Error(`Unknown context key: ${args}`); - }, - }; - } - } - }), - state: stub>().callsFake((args) => { - if (args === undefined) { - return { - get: () => [themeSettings], - set: () => undefined, - }; - } else { - switch (args) { - case 'settings': - return { - get: () => themeSettings, - set: () => undefined, - }; - default: - return { - get: () => { - throw new Error(`Unknown context key: ${args}`); - }, - set: () => { - throw new Error(`Unknown context key: ${args}`); - }, - }; - } - } - }), - subscribe: stub>().resolves(), - dispatch: stub>().resolves(), - }; -}; diff --git a/packages/app-bridge/src/tests/BrandportalLinkApiDummy.ts b/packages/app-bridge/src/tests/BrandportalLinkApiDummy.ts deleted file mode 100644 index 77079584a..000000000 --- a/packages/app-bridge/src/tests/BrandportalLinkApiDummy.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type BrandportalLinkApi } from '../types'; - -export class BrandportalLinkApiDummy { - static get(): BrandportalLinkApi { - return { - brand_portal: { - enabled: true, - label: 'Brandportal Link', - url: '/url', - }, - }; - } -} diff --git a/packages/app-bridge/src/tests/BrandportalLinkDummy.ts b/packages/app-bridge/src/tests/BrandportalLinkDummy.ts deleted file mode 100644 index adf7bcc2b..000000000 --- a/packages/app-bridge/src/tests/BrandportalLinkDummy.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type BrandportalLink } from '../types'; -import { convertObjectCase } from '../utilities'; - -import { BrandportalLinkApiDummy } from './BrandportalLinkApiDummy'; - -export class BrandportalLinkDummy { - static with(fields?: Partial): BrandportalLink { - return { ...convertObjectCase(BrandportalLinkApiDummy.get().brand_portal, 'camel'), ...fields }; - } -} diff --git a/packages/app-bridge/src/tests/CoverPageDummy.ts b/packages/app-bridge/src/tests/CoverPageDummy.ts index a6d608638..4958f9897 100644 --- a/packages/app-bridge/src/tests/CoverPageDummy.ts +++ b/packages/app-bridge/src/tests/CoverPageDummy.ts @@ -1,10 +1,15 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ -import { type CoverPage, type CoverPageUpdateLegacy } from '../types'; +import { type CoverPage } from '../types'; import { convertObjectCase } from '../utilities'; import { CoverPageApiDummy } from './CoverPageApiDummy'; +type CoverPageUpdateLegacy = { + brandhome_draft?: boolean; + brandhome_title?: string; + brandhome_hide_in_nav?: boolean; +}; export class CoverPageDummy { static with(id: number, title = 'Cover Page Name'): CoverPage { const coverPageApi = CoverPageApiDummy.with(id, title); diff --git a/packages/app-bridge/src/tests/DocumentNavigationTreeDummy.ts b/packages/app-bridge/src/tests/DocumentNavigationTreeDummy.ts deleted file mode 100644 index e976c928c..000000000 --- a/packages/app-bridge/src/tests/DocumentNavigationTreeDummy.ts +++ /dev/null @@ -1,140 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { - type DocumentNavigationItem, - type GuidelineDocumentPageHeading, - type GuidelineDocumentPage, - type GuidelineDocumentPageLink, - type GuidelinePageCategory, -} from '../types'; - -class DocumentPageCategoryDummy implements GuidelinePageCategory { - readonly type = 'page-category' as const; - - readonly #id: number; - readonly #children: (GuidelineDocumentPage | GuidelineDocumentPageLink)[]; - - constructor(id: number, children?: (GuidelineDocumentPage | GuidelineDocumentPageLink)[]) { - this.#id = id; - this.#children = children ?? []; - } - - id(): number { - return this.#id; - } - - title(): string { - return 'Dummy title'; - } - - slug(): string { - return 'dummy slug'; - } - - children(): (GuidelineDocumentPage | GuidelineDocumentPageLink)[] { - return this.#children; - } -} - -class DocumentPageDummy implements GuidelineDocumentPage { - readonly type = 'document-page' as const; - - readonly #id: number; - readonly #headings: GuidelineDocumentPageHeading[]; - - constructor(id: number, headings?: GuidelineDocumentPageHeading[]) { - this.#id = id ?? 1234; - this.#headings = headings ?? []; - } - - id(): number { - return this.#id; - } - - title(): string { - return 'Dummy title'; - } - - slug(): string { - return 'dummy slug'; - } - - url(): string { - return 'dummy url'; - } - - headings(): GuidelineDocumentPageHeading[] { - return this.#headings; - } -} - -class DocumentPageLinkDummy implements GuidelineDocumentPageLink { - readonly type = 'document-page-link' as const; - - readonly #id: number; - - constructor(id: number) { - this.#id = id; - } - - id(): number { - return this.#id; - } - - title(): string { - return 'Dummy title'; - } - - url(): string { - return 'dummy url'; - } -} - -class DocumentPageHeadingDummy implements GuidelineDocumentPageHeading { - readonly type = 'document-page-heading' as const; - - readonly #id; - - constructor(id: number) { - this.#id = id; - } - - id(): number { - return this.#id; - } - - title(): string { - return 'Dummy title'; - } - - slug(): string { - return 'dummy slug'; - } -} - -export class DocumentNavigationTreeDummy { - static default(): DocumentNavigationItem[] { - return [ - new DocumentPageCategoryDummy(1, [ - new DocumentPageDummy(1, [ - new DocumentPageHeadingDummy(1), - new DocumentPageHeadingDummy(2), - new DocumentPageHeadingDummy(3), - ]), - new DocumentPageLinkDummy(2), - ]), - new DocumentPageDummy(3), - ]; - } - - static alternative(): DocumentNavigationItem[] { - return [ - new DocumentPageCategoryDummy(1, [ - new DocumentPageDummy(1, [new DocumentPageHeadingDummy(2), new DocumentPageHeadingDummy(3)]), - new DocumentPageLinkDummy(2), - ]), - new DocumentPageDummy(2, [new DocumentPageHeadingDummy(1)]), - new DocumentPageLinkDummy(6), - ]; - } -} diff --git a/packages/app-bridge/src/tests/GuidelineSearchResultApiDummy.ts b/packages/app-bridge/src/tests/GuidelineSearchResultApiDummy.ts deleted file mode 100644 index b22f5085f..000000000 --- a/packages/app-bridge/src/tests/GuidelineSearchResultApiDummy.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type GuidelineSearchResultApi } from '../types'; - -export class GuidelineSearchResultApiDummy { - static with(query: string): GuidelineSearchResultApi { - return { - highlights: [query], - type: 'BLOCK', - object_id: 1, - page_id: 1, - page_slug: 'page-slug', - page_title: 'Page Title', - page_category_slug: 'page-category-slug', - block_id: 1, - document_id: 1, - document_slug: 'document-slug', - document_title: 'Document Title', - guideline_title: 'Guideline Title', - portal_id: 1, - portal_token: 'portal-token', - section_id: null, - section_slug: null, - section_title: null, - color_hex: undefined, - project_color_id: undefined, - }; - } -} diff --git a/packages/app-bridge/src/tests/GuidelineSearchResultDummy.ts b/packages/app-bridge/src/tests/GuidelineSearchResultDummy.ts deleted file mode 100644 index 822c8b9a4..000000000 --- a/packages/app-bridge/src/tests/GuidelineSearchResultDummy.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type GuidelineSearchResult } from '../types'; -import { convertObjectCase } from '../utilities'; - -import { GuidelineSearchResultApiDummy } from './GuidelineSearchResultApiDummy'; - -export class GuidelineSearchResultDummy { - static with(query: string): GuidelineSearchResult { - return convertObjectCase(GuidelineSearchResultApiDummy.with(query), 'camel'); - } -} diff --git a/packages/app-bridge/src/tests/PortalNavigationTreeDummy.ts b/packages/app-bridge/src/tests/PortalNavigationTreeDummy.ts deleted file mode 100644 index d414ea0f7..000000000 --- a/packages/app-bridge/src/tests/PortalNavigationTreeDummy.ts +++ /dev/null @@ -1,234 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { - type GuidelineDocument, - type GuidelineDocumentGroup, - type GuidelineDocumentLibrary, - type GuidelineDocumentLink, - LinkSettingsDisplay, - LinkSettingsIconPosition, - type GuidelineCoverPage, - type PortalNavigationItem, -} from '../types'; - -class GuidelineCoverPageClass implements GuidelineCoverPage { - readonly type = 'cover-page' as const; - readonly #id: number; - readonly #title: string; - readonly #isPublished: boolean = false; - readonly #isHiddenFromNavigation: boolean = false; - - constructor(id: number, title: string, published: boolean, hiddenFromNavigation: boolean) { - this.#id = id; - this.#title = title; - this.#isPublished = published; - this.#isHiddenFromNavigation = hiddenFromNavigation; - } - - id() { - return this.#id; - } - title(language?: string) { - return `${this.#title} - ${language ?? 'default'}`; - } - isPublished() { - return this.#isPublished ?? false; - } - isHiddenInNavigation() { - return this.#isHiddenFromNavigation ?? false; - } - url(language?: string) { - return `http://domain.com/hub/${language ?? 'default'}/${this.#id}`; - } -} - -class GuidelineDocumentGroupClass implements GuidelineDocumentGroup { - readonly type = 'document-group' as const; - readonly #id: number; - readonly #title: string; - readonly #children: (GuidelineDocument | GuidelineDocumentLibrary | GuidelineDocumentLink)[] = []; - - constructor( - id: number, - title: string, - children: (GuidelineDocument | GuidelineDocumentLibrary | GuidelineDocumentLink)[], - ) { - this.#id = id; - this.#title = title; - this.#children = children; - } - - id() { - return this.#id; - } - title(language?: string) { - return `${this.#title} - ${language ?? 'default'}`; - } - children() { - return this.#children ?? []; - } -} - -export class GuidelineDocumentClass implements GuidelineDocument { - readonly type = 'document' as const; - readonly #id: number; - readonly #title: string; - readonly #parent: Nullable; - - constructor(id: number, title: string, parent: Nullable = null) { - this.#id = id; - this.#title = title; - this.#parent = parent; - } - - id() { - return this.#id; - } - title(language?: string) { - return `${this.#title} - ${language ?? 'default'}`; - } - slug(language?: string) { - return `${this.#title.toLowerCase().replace(' ', '-')}-${language ?? 'default'}`; - } - url(language?: string) { - return `http://domain.com/document/${this.#id}/${language ?? 'default'}/`; - } - parentId() { - return this.#parent; - } -} - -class GuidelineDocumentLibraryClass implements GuidelineDocumentLibrary { - readonly type = 'document-library' as const; - readonly #id: number; - readonly #title: string; - readonly #parent: Nullable; - - constructor(id: number, title: string, parent: Nullable = null) { - this.#id = id; - this.#title = title; - this.#parent = parent; - } - - id() { - return this.#id; - } - title(language?: string) { - return `${this.#title} - ${language ?? 'default'}`; - } - slug(language?: string) { - return `${this.#title.toLowerCase().replace(' ', '-')}-${language ?? 'default'}`; - } - url(language?: string) { - return `http://domain.com/document/${this.#id}/${language ?? 'default'}/`; - } - parentId() { - return this.#parent; - } -} - -class GuidelineDocumentLinkClass implements GuidelineDocumentLink { - readonly type = 'document-link' as const; - readonly #id: number; - readonly #title: string; - readonly #displayMode: LinkSettingsDisplay = LinkSettingsDisplay.TextOnly; - readonly #icoPosition: LinkSettingsIconPosition = LinkSettingsIconPosition.Left; - readonly #openNewTab: boolean = true; - readonly #parent: Nullable; - - constructor(id: number, title: string, parent: Nullable = null) { - this.#id = id; - this.#title = title; - this.#parent = parent; - } - - id() { - return this.#id; - } - title(language?: string) { - return `${this.#title} - ${language ?? 'default'}`; - } - url() { - return 'http://some-external-domain.com/page'; - } - - displayMode() { - return this.#displayMode; - } - iconPosition() { - return this.#icoPosition; - } - customIconUrl() { - return null; - } - shouldOpenInNewTab() { - return this.#openNewTab; - } - parentId() { - return this.#parent; - } -} - -class GuidelineCoverPageClassDummy { - static with( - id: number, - title = 'Cover Page Name', - published = false, - hiddenFromNavigation = false, - ): GuidelineCoverPageClass { - return new GuidelineCoverPageClass(id, title, published, hiddenFromNavigation); - } -} - -class GuidelineDocumentGroupClassDummy { - static with( - id: number, - title = 'guideline document group', - children: (GuidelineDocumentClass | GuidelineDocumentLibraryClass | GuidelineDocumentLinkClass)[] = [], - ): GuidelineDocumentGroupClass { - return new GuidelineDocumentGroupClass(id, title, children); - } -} - -export class GuidelineDocumentClassDummy { - static with(id: number, title = 'guideline document', parentId: Nullable = null): GuidelineDocumentClass { - return new GuidelineDocumentClass(id, title, parentId); - } -} - -class GuidelineDocumentLibraryClassDummy { - static with( - id: number, - title = 'guideline document library', - parentId: Nullable = null, - ): GuidelineDocumentLibraryClass { - return new GuidelineDocumentLibraryClass(id, title, parentId); - } -} - -class GuidelineDocumentLinkClassDummy { - static with( - id: number, - title = 'guideline document library', - parentId: Nullable = null, - ): GuidelineDocumentLinkClass { - return new GuidelineDocumentLinkClass(id, title, parentId); - } -} - -export class PortalNavigationTreeDummy { - static default(): PortalNavigationItem[] { - return [ - GuidelineCoverPageClassDummy.with(5, 'the Cover Page', true, false), - GuidelineDocumentClassDummy.with(101, 'document-101'), - GuidelineDocumentClassDummy.with(102, 'document-102'), - GuidelineDocumentGroupClassDummy.with(200, 'document-group-200', [ - GuidelineDocumentClassDummy.with(201, 'document-201', 200), - GuidelineDocumentClassDummy.with(202, 'document-203', 200), - GuidelineDocumentClassDummy.with(204, 'document-204', 200), - ]), - GuidelineDocumentLinkClassDummy.with(111, 'document-link-111'), - GuidelineDocumentLibraryClassDummy.with(121, 'document-library-121'), - ]; - } -} diff --git a/packages/app-bridge/src/tests/index.ts b/packages/app-bridge/src/tests/index.ts index 4cf181961..fdd0078ed 100644 --- a/packages/app-bridge/src/tests/index.ts +++ b/packages/app-bridge/src/tests/index.ts @@ -1,13 +1,10 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './AppBridgeBlockStub'; -export * from './AppBridgeThemeStub'; export * from './AssetApiDummy'; export * from './AssetChooserOptionsDummy'; export * from './AssetChooserResultDummy'; export * from './AssetDummy'; -export * from './BrandportalLinkApiDummy'; -export * from './BrandportalLinkDummy'; export * from './BulkDownloadDummy'; export * from './ColorApiDummy'; export * from './ColorDummy'; @@ -25,8 +22,6 @@ export * from './DocumentPageApiDummy'; export * from './DocumentPageDummy'; export * from './DocumentSectionApiDummy'; export * from './DocumentSectionDummy'; -export * from './GuidelineSearchResultApiDummy'; -export * from './GuidelineSearchResultDummy'; export * from './HttpUtilResponseDummy'; export * from './TargetsApiDummy'; export * from './TargetsDummy'; @@ -36,6 +31,3 @@ export * from './TemplateDummy'; export * from './UserApiDummy'; export * from './UserDummy'; export * from './withAppBridgeBlockStubs'; -export * from './withAppBridgeThemeStubs'; -export * from './PortalNavigationTreeDummy'; -export * from './DocumentNavigationTreeDummy'; diff --git a/packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx b/packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx deleted file mode 100644 index 5dc2e2b21..000000000 --- a/packages/app-bridge/src/tests/withAppBridgeThemeStubs.tsx +++ /dev/null @@ -1,24 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type ComponentType } from 'react'; - -import { type AppBridgeTheme } from '../AppBridgeTheme'; - -import { getAppBridgeThemeStub, type getAppBridgeThemeStubProps } from './AppBridgeThemeStub'; - -type withAppBridgeThemeStubsProps = { appBridge: AppBridgeTheme }; - -export function withAppBridgeThemeStubs( - WrappedComponent: ComponentType, - appBridgeProps?: getAppBridgeThemeStubProps, -): [ComponentType>, ReturnType] { - const appBridge = getAppBridgeThemeStub(appBridgeProps ?? {}); - const ComponentWithAppBridgeStubs = (props: Omit) => { - return ; - }; - - const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component'; - ComponentWithAppBridgeStubs.displayName = `withAppBridgeThemeStubs(${displayName})`; - - return [ComponentWithAppBridgeStubs, appBridge]; -} diff --git a/packages/app-bridge/src/types/BrandportalLink.ts b/packages/app-bridge/src/types/BrandportalLink.ts deleted file mode 100644 index 286d4d28e..000000000 --- a/packages/app-bridge/src/types/BrandportalLink.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type BrandportalLinkApi = { - brand_portal: { - enabled: boolean; - label: string; - url: string; - }; -}; - -export type BrandportalLink = BrandportalLinkApi['brand_portal']; diff --git a/packages/app-bridge/src/types/CoverPage.ts b/packages/app-bridge/src/types/CoverPage.ts index 9660b1458..55c0ee2fb 100644 --- a/packages/app-bridge/src/types/CoverPage.ts +++ b/packages/app-bridge/src/types/CoverPage.ts @@ -31,12 +31,3 @@ export type CoverPage = Merge< enabled: boolean; } >; - -export type CoverPageCreate = PickRequired, 'id'>, 'documentId' | 'template'>; -export type CoverPageUpdate = RequireOnlyOne; - -export type CoverPageUpdateLegacy = { - brandhome_draft?: boolean; - brandhome_title?: string; - brandhome_hide_in_nav?: boolean; -}; diff --git a/packages/app-bridge/src/types/DispatchHandler.ts b/packages/app-bridge/src/types/DispatchHandler.ts index 87f968352..90328eee0 100644 --- a/packages/app-bridge/src/types/DispatchHandler.ts +++ b/packages/app-bridge/src/types/DispatchHandler.ts @@ -8,7 +8,6 @@ export type DispatchPayload = { openAssetViewer: { token: string }; openTemplateChooser: void; closeTemplateChooser: void; - openNavigationManager: void; openNewPublication: OpenNewPublicationPayload; }; diff --git a/packages/app-bridge/src/types/Document.ts b/packages/app-bridge/src/types/Document.ts index 1dc311e51..2ab798f22 100644 --- a/packages/app-bridge/src/types/Document.ts +++ b/packages/app-bridge/src/types/Document.ts @@ -30,7 +30,7 @@ type DocumentApiAsNoneLink = { link_url: Nullable; }; -export type DocumentLinkSettingsApi = { +type DocumentLinkSettingsApi = { new_tab: boolean; display?: LinkSettingsDisplay; icon_position?: LinkSettingsIconPosition; diff --git a/packages/app-bridge/src/types/Emitter.ts b/packages/app-bridge/src/types/Emitter.ts index dab5f3718..a5d0db567 100644 --- a/packages/app-bridge/src/types/Emitter.ts +++ b/packages/app-bridge/src/types/Emitter.ts @@ -3,10 +3,8 @@ import { type BlockSettingsUpdateEvent } from '../react/useBlockSettings'; import { type Asset } from './Asset'; -import { type BrandportalLink } from './BrandportalLink'; import { type Color } from './Color'; import { type ColorPalette } from './ColorPalette'; -import { type CoverPage } from './CoverPage'; import { type Document } from './Document'; import { type DocumentCategory } from './DocumentCategory'; import { type DocumentGroup } from './DocumentGroup'; @@ -19,13 +17,10 @@ import { import { type PrivacySettings } from './PrivacySettings'; import { type Template } from './Template'; import { type AssetViewerOptions } from './Terrific'; -import { type ThemeTemplate } from './ThemeTemplate'; export type EmitterAction = 'add' | 'update' | 'delete'; export type EmitterEvents = { - 'AppBridge:PageTemplateSettingsUpdated': { pageTemplateSettings: Record }; - 'AppBridge:ThemeSettingsUpdated': { themeSettings: Record> }; 'AppBridge:BlockSettingsUpdated': BlockSettingsUpdateEvent; 'AppBridge:BlockAssetsUpdated': { @@ -34,21 +29,6 @@ export type EmitterEvents = { prevBlockAssets: Record; }; - 'AppBridge:TemplateAssetsUpdated': { - template: ThemeTemplate; - documentId?: number; - documentPageId?: number; - templateAssets: Record; - prevTemplateAssets: Record; - }; - - 'AppBridge:ThemeAssetsUpdated': { - portalId: number; - themeAssets: Record; - prevThemeAssets: Record; - template: ThemeTemplate; - }; - 'AppBridge:BlockTemplatesUpdated': { blockId: number; blockTemplates: Record; @@ -87,27 +67,10 @@ export type EmitterEvents = { action: 'delete'; }; - 'AppBridge:GuidelineCoverPage:Action': - | { - coverPage: CoverPage; - action: 'add' | 'update'; - } - | { - action: 'delete'; - }; - - 'AppBridge:GuidelineBrandportalLink:Action': { - brandportalLink: BrandportalLink; - action: 'update'; - }; - 'AppBridge:PrivacySettingsChanged': PrivacySettings; 'AppBridge:OpenNavigationManager': void; - 'AppBridge:OpenSearchDialog': void; - 'AppBridge:CloseSearchDialog': void; - 'AppBridge:GuidelineDocumentPage:Action': | { documentPage: DocumentPage; diff --git a/packages/app-bridge/src/types/Guideline.ts b/packages/app-bridge/src/types/Guideline.ts deleted file mode 100644 index 26c09120f..000000000 --- a/packages/app-bridge/src/types/Guideline.ts +++ /dev/null @@ -1,93 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type LinkSettingsDisplay, type LinkSettingsIconPosition } from './Document.ts'; - -export interface GuidelineCoverPage { - id(): number; - title(language?: string): string; - isPublished(): boolean; - isHiddenInNavigation(): boolean; - url(language?: string): string; - type: 'cover-page'; -} - -export interface GuidelineDocumentGroup { - id(): number; - title(language?: string): string; - children(): (GuidelineDocument | GuidelineDocumentLibrary | GuidelineDocumentLink)[]; - type: 'document-group'; -} - -export interface GuidelineDocument { - id(): number; - title(language?: string): string; - slug(language?: string): string; - url(language?: string): string; - parentId(): Nullable; - type: 'document'; -} - -export interface GuidelineDocumentLibrary { - id(): number; - title(language?: string): string; - slug(language?: string): string; - url(language?: string): string; - parentId(): Nullable; - type: 'document-library'; -} - -export interface GuidelineDocumentLink { - id(): number; - title(language?: string): string; - url(): string; - displayMode(): LinkSettingsDisplay; - iconPosition(): LinkSettingsIconPosition; - customIconUrl(): Nullable; - shouldOpenInNewTab(): boolean; - parentId(): Nullable; - type: 'document-link'; -} - -export interface GuidelinePageCategory { - id(): number; - title(language?: string): string; - slug(language?: string): string; - children(): (GuidelineDocumentPage | GuidelineDocumentPageLink)[]; - type: 'page-category'; -} - -export interface GuidelineDocumentPage { - id(): number; - title(language?: string): string; - slug(language?: string): string; - url(language?: string): string; - headings(): GuidelineDocumentPageHeading[]; - type: 'document-page'; -} - -export interface GuidelineDocumentPageLink { - id(): number; - title(language?: string): string; - url(): string; - type: 'document-page-link'; -} - -export interface GuidelineDocumentPageHeading { - id(): number; - title(language?: string): string; - slug(language?: string): string; - type: 'document-page-heading'; -} - -export type PortalNavigationItem = - | GuidelineCoverPage - | GuidelineDocumentGroup - | GuidelineDocument - | GuidelineDocumentLibrary - | GuidelineDocumentLink; - -export type DocumentNavigationItem = - | GuidelinePageCategory - | GuidelineDocumentPage - | GuidelineDocumentPageLink - | GuidelineDocumentPageHeading; diff --git a/packages/app-bridge/src/types/GuidelineSearchResult.ts b/packages/app-bridge/src/types/GuidelineSearchResult.ts deleted file mode 100644 index 3b39d72e9..000000000 --- a/packages/app-bridge/src/types/GuidelineSearchResult.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type CamelCasedPropertiesDeep } from 'type-fest'; - -export const GuidelineSearchResultTypeMap = { - block: 'BLOCK', - section: 'SECTION', - page: 'PAGE', - color: 'COLOR', -} as const; -type GuidelineSearchResultType = (typeof GuidelineSearchResultTypeMap)[keyof typeof GuidelineSearchResultTypeMap]; - -export type GuidelineSearchResultApi = { - highlights: string[]; - type: GuidelineSearchResultType; - object_id: number; - page_id: number; - page_slug: string; - page_title: string; - page_category_slug: string | null; - block_id: number; - document_id: number; - document_slug: string; - document_title: string; - guideline_title: string; - portal_id: number; - portal_token: string | null; - section_id: string | null; - section_slug: string | null; - section_title: string | null; - color_hex?: string; - project_color_id?: string; -}; - -export type GuidelineSearchResult = CamelCasedPropertiesDeep; diff --git a/packages/app-bridge/src/types/Language.ts b/packages/app-bridge/src/types/Language.ts deleted file mode 100644 index ea2838728..000000000 --- a/packages/app-bridge/src/types/Language.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type Language = { - /** - * The language code in ISO 639-1 format. - */ - isoCode: string; - - /** - * The name of the language. - */ - name: string; - - /** - * Indicates whether the language is the default language. - */ - isDefault: boolean; - - /** - * Indicates whether the language is in draft state. - */ - isDraft: boolean; -}; diff --git a/packages/app-bridge/src/types/Project.ts b/packages/app-bridge/src/types/Project.ts deleted file mode 100644 index 6a65d7aff..000000000 --- a/packages/app-bridge/src/types/Project.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -import { type CamelCasedPropertiesDeep } from 'type-fest'; - -import { type DocumentLibraryMode } from './Document'; - -export type ProjectApi = { - id: number; - created: string; - creator: number; - name: string; - slug: string; - account: number; - token: string; - email_notification: number; - user_count: number; - brand_id: number; - project_type: string; - auto_tagging_enabled: Nullable; - date_begin: Nullable; - date_end: Nullable; - is_template: number; - download_sizes: string; - zoom_level: string; - success: boolean; - project: { - id: number; - url: string; - slug: string; - creator: number; - creator_name: string; - creator_initials: string; - name: string; - description: Nullable; - account: number; - }; -}; - -export type ProjectCreateApi = { - name: string; - brand: number; - styleguide: number; - project_type: DocumentLibraryMode; -}; - -export type Project = CamelCasedPropertiesDeep; - -export type ProjectCreate = CamelCasedPropertiesDeep; diff --git a/packages/app-bridge/src/types/ThemeTemplate.ts b/packages/app-bridge/src/types/ThemeTemplate.ts deleted file mode 100644 index 1b3df14e9..000000000 --- a/packages/app-bridge/src/types/ThemeTemplate.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* (c) Copyright Frontify Ltd., all rights reserved. */ - -export type ThemeTemplate = 'documentPage' | 'cover' | 'library'; diff --git a/packages/app-bridge/src/types/index.ts b/packages/app-bridge/src/types/index.ts index c9995b19a..2a059c20e 100644 --- a/packages/app-bridge/src/types/index.ts +++ b/packages/app-bridge/src/types/index.ts @@ -1,7 +1,6 @@ /* (c) Copyright Frontify Ltd., all rights reserved. */ export * from './Asset'; -export * from './BrandportalLink'; export * from './BulkDownload'; export * from './Color'; export * from './ColorPalette'; @@ -18,17 +17,12 @@ export * from './File'; export * from './FileExtension'; export * from './FileExtensionSets'; export * from './FileType'; -export * from './Guideline'; -export * from './GuidelineSearchResult'; -export * from './Language'; export * from './PageTemplateAsset'; export * from './PrivacySettings'; -export * from './Project'; export * from './SubscriptionHandler'; export * from './Targets'; export * from './TemplateLegacy'; export * from './Template'; export * from './Terrific'; -export * from './ThemeTemplate'; export * from './Topic'; export * from './User'; From 062d954060e32a6deb45c2bfd332f91846a65aef Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 24 Jun 2025 11:17:58 +0200 Subject: [PATCH 181/182] chore: release packages (alpha) (#1240) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 1 + packages/app-bridge/CHANGELOG.md | 6 ++++++ packages/app-bridge/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 0261552bf..419af1d3e 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -85,6 +85,7 @@ "tasty-coins-jam", "tasty-vans-cough", "ten-guests-wash", + "thirty-eggs-judge", "thirty-pears-lay", "three-avocados-push", "tough-nails-shout", diff --git a/packages/app-bridge/CHANGELOG.md b/packages/app-bridge/CHANGELOG.md index f325072a1..f5f66b15e 100644 --- a/packages/app-bridge/CHANGELOG.md +++ b/packages/app-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @frontify/app-bridge +## 4.0.0-alpha.42 + +### Patch Changes + +- [#1237](https://github.com/Frontify/brand-sdk/pull/1237) [`eb6822d`](https://github.com/Frontify/brand-sdk/commit/eb6822d507e6a96a77725cb4aeb16d26846b72ee) Thanks [@anxobotana](https://github.com/anxobotana)! - refactor: Removed `appBridgeTheme` from the `@frontify/app-bridge` package. It is now provided via the `@frontify/app-bridge-theme` package. + ## 4.0.0-alpha.41 ### Patch Changes diff --git a/packages/app-bridge/package.json b/packages/app-bridge/package.json index c01a87db5..dbd5da2a0 100644 --- a/packages/app-bridge/package.json +++ b/packages/app-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@frontify/app-bridge", "type": "module", - "version": "4.0.0-alpha.41", + "version": "4.0.0-alpha.42", "description": "Package to establish communication between Frontify and marketplace apps", "author": "Frontify Developers ", "repository": { From 2ff7c890b5aec28d7407a31da15b82f48640ee37 Mon Sep 17 00:00:00 2001 From: Oliver Eisenhut Date: Mon, 7 Jul 2025 18:06:58 +0200 Subject: [PATCH 182/182] Allow preview features in per GQL request --- packages/app-bridge-app/src/registries/api/ExecuteGraphQl.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/app-bridge-app/src/registries/api/ExecuteGraphQl.ts b/packages/app-bridge-app/src/registries/api/ExecuteGraphQl.ts index 1caacc70c..2ab25ab63 100644 --- a/packages/app-bridge-app/src/registries/api/ExecuteGraphQl.ts +++ b/packages/app-bridge-app/src/registries/api/ExecuteGraphQl.ts @@ -8,6 +8,7 @@ export type ExecuteGraphQlPayload = { * Attention: All Beta APIs can and will change without any warning. Be advised not to use those in production, see them as a preview of what is to come. */ beta?: boolean; + previewFeatures?: string[]; }; export type ExecuteGraphQlResponse = Record;