mirror of
https://github.com/docmost/docmost.git
synced 2026-05-15 21:24:09 +08:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a86890d856 | |||
| bef23b6738 | |||
| 5c3942c159 | |||
| e0809e7104 | |||
| da6793ac87 |
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "client",
|
"name": "client",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.25.0",
|
"version": "0.25.1",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build",
|
||||||
|
|||||||
@@ -407,6 +407,21 @@
|
|||||||
"Share deleted successfully": "Share deleted successfully",
|
"Share deleted successfully": "Share deleted successfully",
|
||||||
"Share not found": "Share not found",
|
"Share not found": "Share not found",
|
||||||
"Failed to share page": "Failed to share page",
|
"Failed to share page": "Failed to share page",
|
||||||
|
"Disable public sharing": "Disable public sharing",
|
||||||
|
"Prevent members from sharing pages publicly.": "Prevent members from sharing pages publicly.",
|
||||||
|
"Toggle public sharing": "Toggle public sharing",
|
||||||
|
"Toggle space public sharing": "Toggle space public sharing",
|
||||||
|
"Public sharing is disabled at the workspace level": "Public sharing is disabled at the workspace level",
|
||||||
|
"Prevent pages in this space from being shared publicly.": "Prevent pages in this space from being shared publicly.",
|
||||||
|
"Requires an enterprise license": "Requires an enterprise license",
|
||||||
|
"Enable public sharing": "Enable public sharing",
|
||||||
|
"Are you sure you want to enable public sharing? Members will be able to share pages publicly.": "Are you sure you want to enable public sharing? Members will be able to share pages publicly.",
|
||||||
|
"Are you sure you want to disable public sharing? All existing shared links in this workspace will be deleted.": "Are you sure you want to disable public sharing? All existing shared links in this workspace will be deleted.",
|
||||||
|
"Are you sure you want to enable public sharing for this space?": "Are you sure you want to enable public sharing for this space?",
|
||||||
|
"Are you sure you want to disable public sharing? All existing shared links in this space will be deleted.": "Are you sure you want to disable public sharing? All existing shared links in this space will be deleted.",
|
||||||
|
"Public sharing is disabled": "Public sharing is disabled",
|
||||||
|
"Public sharing has been disabled at the workspace level.": "Public sharing has been disabled at the workspace level.",
|
||||||
|
"Public sharing has been disabled for this space.": "Public sharing has been disabled for this space.",
|
||||||
"Copy page": "Copy page",
|
"Copy page": "Copy page",
|
||||||
"Copy page to a different space.": "Copy page to a different space.",
|
"Copy page to a different space.": "Copy page to a different space.",
|
||||||
"Page copied successfully": "Page copied successfully",
|
"Page copied successfully": "Page copied successfully",
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { isCloud } from "@/lib/config";
|
||||||
|
import useLicense from "@/ee/hooks/use-license";
|
||||||
|
import usePlan from "@/ee/hooks/use-plan";
|
||||||
|
|
||||||
|
const useEnterpriseAccess = () => {
|
||||||
|
const { hasLicenseKey } = useLicense();
|
||||||
|
const { isBusiness } = usePlan();
|
||||||
|
|
||||||
|
return (isCloud() && isBusiness) || (!isCloud() && hasLicenseKey);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default useEnterpriseAccess;
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
import { Group, Text, Switch, Tooltip } from "@mantine/core";
|
||||||
|
import { modals } from "@mantine/modals";
|
||||||
|
import { useAtom } from "jotai";
|
||||||
|
import { workspaceAtom } from "@/features/user/atoms/current-user-atom.ts";
|
||||||
|
import React, { useState } from "react";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { updateWorkspace } from "@/features/workspace/services/workspace-service.ts";
|
||||||
|
import { notifications } from "@mantine/notifications";
|
||||||
|
import useEnterpriseAccess from "@/ee/hooks/use-enterprise-access.tsx";
|
||||||
|
|
||||||
|
export default function DisablePublicSharing() {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Group justify="space-between" wrap="nowrap" gap="xl">
|
||||||
|
<div>
|
||||||
|
<Text size="md">{t("Disable public sharing")}</Text>
|
||||||
|
<Text size="sm" c="dimmed">
|
||||||
|
{t("Prevent members from sharing pages publicly.")}
|
||||||
|
</Text>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<DisablePublicSharingToggle />
|
||||||
|
</Group>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function DisablePublicSharingToggle() {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const [workspace, setWorkspace] = useAtom(workspaceAtom);
|
||||||
|
const [checked, setChecked] = useState(
|
||||||
|
workspace?.settings?.sharing?.disabled === true,
|
||||||
|
);
|
||||||
|
const hasAccess = useEnterpriseAccess();
|
||||||
|
|
||||||
|
const applyChange = async (value: boolean) => {
|
||||||
|
try {
|
||||||
|
const updatedWorkspace = await updateWorkspace({
|
||||||
|
disablePublicSharing: value,
|
||||||
|
});
|
||||||
|
setChecked(value);
|
||||||
|
setWorkspace(updatedWorkspace);
|
||||||
|
} catch (err) {
|
||||||
|
notifications.show({
|
||||||
|
message: err?.response?.data?.message,
|
||||||
|
color: "red",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const value = event.currentTarget.checked;
|
||||||
|
|
||||||
|
modals.openConfirmModal({
|
||||||
|
title: value ? t("Disable public sharing") : t("Enable public sharing"),
|
||||||
|
children: (
|
||||||
|
<Text size="sm">
|
||||||
|
{value
|
||||||
|
? t(
|
||||||
|
"Are you sure you want to disable public sharing? All existing shared links in this workspace will be deleted.",
|
||||||
|
)
|
||||||
|
: t(
|
||||||
|
"Are you sure you want to enable public sharing? Members will be able to share pages publicly.",
|
||||||
|
)}
|
||||||
|
</Text>
|
||||||
|
),
|
||||||
|
centered: true,
|
||||||
|
labels: { confirm: t("Confirm"), cancel: t("Cancel") },
|
||||||
|
confirmProps: value ? { color: "red" } : {},
|
||||||
|
onConfirm: () => applyChange(value),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Tooltip
|
||||||
|
label={t("Requires an enterprise license")}
|
||||||
|
disabled={hasAccess}
|
||||||
|
refProp="rootRef"
|
||||||
|
>
|
||||||
|
<Switch
|
||||||
|
checked={checked}
|
||||||
|
onChange={handleChange}
|
||||||
|
disabled={!hasAccess}
|
||||||
|
aria-label={t("Toggle public sharing")}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -10,23 +10,18 @@ export default function EnforceMfa() {
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<Group justify="space-between" wrap="nowrap" gap="xl">
|
||||||
<Title order={4} my="sm">
|
<div>
|
||||||
MFA
|
<Text size="md">{t("Enforce two-factor authentication")}</Text>
|
||||||
</Title>
|
<Text size="sm" c="dimmed">
|
||||||
<Group justify="space-between" wrap="nowrap" gap="xl">
|
{t(
|
||||||
<div>
|
"Once enforced, all members must enable two-factor authentication to access the workspace.",
|
||||||
<Text size="md">{t("Enforce two-factor authentication")}</Text>
|
)}
|
||||||
<Text size="sm" c="dimmed">
|
</Text>
|
||||||
{t(
|
</div>
|
||||||
"Once enforced, all members must enable two-factor authentication to access the workspace.",
|
|
||||||
)}
|
|
||||||
</Text>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<EnforceMfaToggle />
|
<EnforceMfaToggle />
|
||||||
</Group>
|
</Group>
|
||||||
</>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
import { Group, Text, Switch, Tooltip } from "@mantine/core";
|
||||||
|
import { modals } from "@mantine/modals";
|
||||||
|
import { useAtom } from "jotai";
|
||||||
|
import { workspaceAtom } from "@/features/user/atoms/current-user-atom.ts";
|
||||||
|
import React, { useState } from "react";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { ISpace } from "@/features/space/types/space.types.ts";
|
||||||
|
import { useUpdateSpaceMutation } from "@/features/space/queries/space-query.ts";
|
||||||
|
|
||||||
|
type SpacePublicSharingToggleProps = {
|
||||||
|
space: ISpace;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function SpacePublicSharingToggle({
|
||||||
|
space,
|
||||||
|
}: SpacePublicSharingToggleProps) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const [workspace] = useAtom(workspaceAtom);
|
||||||
|
const workspaceDisabled = workspace?.settings?.sharing?.disabled === true;
|
||||||
|
const [checked, setChecked] = useState(
|
||||||
|
space.settings?.sharing?.disabled === true,
|
||||||
|
);
|
||||||
|
const updateSpaceMutation = useUpdateSpaceMutation();
|
||||||
|
|
||||||
|
const applyChange = async (value: boolean) => {
|
||||||
|
try {
|
||||||
|
await updateSpaceMutation.mutateAsync({
|
||||||
|
spaceId: space.id,
|
||||||
|
disablePublicSharing: value,
|
||||||
|
});
|
||||||
|
setChecked(value);
|
||||||
|
} catch {
|
||||||
|
// error handled by mutation
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const value = event.currentTarget.checked;
|
||||||
|
|
||||||
|
modals.openConfirmModal({
|
||||||
|
title: value ? t("Disable public sharing") : t("Enable public sharing"),
|
||||||
|
children: (
|
||||||
|
<Text size="sm">
|
||||||
|
{value
|
||||||
|
? t(
|
||||||
|
"Are you sure you want to disable public sharing? All existing shared links in this space will be deleted.",
|
||||||
|
)
|
||||||
|
: t(
|
||||||
|
"Are you sure you want to enable public sharing for this space?",
|
||||||
|
)}
|
||||||
|
</Text>
|
||||||
|
),
|
||||||
|
centered: true,
|
||||||
|
labels: { confirm: t("Confirm"), cancel: t("Cancel") },
|
||||||
|
confirmProps: value ? { color: "red" } : {},
|
||||||
|
onConfirm: () => applyChange(value),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Group justify="space-between" wrap="nowrap" gap="xl">
|
||||||
|
<div>
|
||||||
|
<Text size="md">{t("Disable public sharing")}</Text>
|
||||||
|
<Text size="sm" c="dimmed">
|
||||||
|
{workspaceDisabled
|
||||||
|
? t("Public sharing is disabled at the workspace level")
|
||||||
|
: t("Prevent pages in this space from being shared publicly.")}
|
||||||
|
</Text>
|
||||||
|
</div>
|
||||||
|
<Tooltip
|
||||||
|
label={t("Public sharing is disabled at the workspace level")}
|
||||||
|
disabled={!workspaceDisabled}
|
||||||
|
refProp="rootRef"
|
||||||
|
>
|
||||||
|
<Switch
|
||||||
|
checked={checked}
|
||||||
|
onChange={handleChange}
|
||||||
|
disabled={workspaceDisabled}
|
||||||
|
aria-label={t("Toggle space public sharing")}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</Group>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -9,15 +9,16 @@ import CreateSsoProvider from "@/ee/security/components/create-sso-provider.tsx"
|
|||||||
import EnforceSso from "@/ee/security/components/enforce-sso.tsx";
|
import EnforceSso from "@/ee/security/components/enforce-sso.tsx";
|
||||||
import AllowedDomains from "@/ee/security/components/allowed-domains.tsx";
|
import AllowedDomains from "@/ee/security/components/allowed-domains.tsx";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import useLicense from "@/ee/hooks/use-license.tsx";
|
|
||||||
import usePlan from "@/ee/hooks/use-plan.tsx";
|
|
||||||
import EnforceMfa from "@/ee/security/components/enforce-mfa.tsx";
|
import EnforceMfa from "@/ee/security/components/enforce-mfa.tsx";
|
||||||
|
import DisablePublicSharing from "@/ee/security/components/disable-public-sharing.tsx";
|
||||||
|
import useEnterpriseAccess from "@/ee/hooks/use-enterprise-access.tsx";
|
||||||
|
import { useIsCloudEE } from "@/hooks/use-is-cloud-ee.tsx";
|
||||||
|
|
||||||
export default function Security() {
|
export default function Security() {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { isAdmin } = useUserRole();
|
const { isAdmin } = useUserRole();
|
||||||
const { hasLicenseKey } = useLicense();
|
const hasEnterpriseAccess = useEnterpriseAccess();
|
||||||
const { isBusiness } = usePlan();
|
const isCloudEE = useIsCloudEE();
|
||||||
|
|
||||||
if (!isAdmin) {
|
if (!isAdmin) {
|
||||||
return null;
|
return null;
|
||||||
@@ -30,26 +31,41 @@ export default function Security() {
|
|||||||
</Helmet>
|
</Helmet>
|
||||||
<SettingsTitle title={t("Security")} />
|
<SettingsTitle title={t("Security")} />
|
||||||
|
|
||||||
<AllowedDomains />
|
|
||||||
|
|
||||||
<Divider my="lg" />
|
|
||||||
|
|
||||||
<EnforceMfa />
|
<EnforceMfa />
|
||||||
|
|
||||||
<Divider my="lg" />
|
<Divider my="lg" />
|
||||||
|
|
||||||
|
{(!isCloud() || hasEnterpriseAccess) && (
|
||||||
|
<>
|
||||||
|
<DisablePublicSharing />
|
||||||
|
<Divider my="lg" />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
<Title order={4} my="lg">
|
<Title order={4} my="lg">
|
||||||
Single sign-on (SSO)
|
Single sign-on (SSO)
|
||||||
</Title>
|
</Title>
|
||||||
|
|
||||||
{(isCloud() && isBusiness) || (!isCloud() && hasLicenseKey) ? (
|
{hasEnterpriseAccess && (
|
||||||
<>
|
<>
|
||||||
<EnforceSso />
|
<EnforceSso />
|
||||||
<Divider my="lg" />
|
<Divider my="lg" />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{isCloudEE && (
|
||||||
|
<>
|
||||||
|
<AllowedDomains />
|
||||||
|
<Divider my="lg" />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{hasEnterpriseAccess && (
|
||||||
|
<>
|
||||||
<CreateSsoProvider />
|
<CreateSsoProvider />
|
||||||
<Divider size={0} my="lg" />
|
<Divider size={0} my="lg" />
|
||||||
</>
|
</>
|
||||||
) : null}
|
)}
|
||||||
|
|
||||||
<SsoProviderList />
|
<SsoProviderList />
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.mantine-AppShell-main {
|
.mantine-AppShell-main {
|
||||||
padding-top: 0 !important;
|
padding: 0 !important;
|
||||||
min-height: auto !important;
|
min-height: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ import { getAppUrl, isCloud } from "@/lib/config.ts";
|
|||||||
import { buildPageUrl } from "@/features/page/page.utils.ts";
|
import { buildPageUrl } from "@/features/page/page.utils.ts";
|
||||||
import classes from "@/features/share/components/share.module.css";
|
import classes from "@/features/share/components/share.module.css";
|
||||||
import useTrial from "@/ee/hooks/use-trial.tsx";
|
import useTrial from "@/ee/hooks/use-trial.tsx";
|
||||||
|
import { useAtom } from "jotai";
|
||||||
|
import { workspaceAtom } from "@/features/user/atoms/current-user-atom.ts";
|
||||||
|
import { useSpaceQuery } from "@/features/space/queries/space-query.ts";
|
||||||
|
|
||||||
interface ShareModalProps {
|
interface ShareModalProps {
|
||||||
readOnly: boolean;
|
readOnly: boolean;
|
||||||
@@ -40,6 +43,12 @@ export default function ShareModal({ readOnly }: ShareModalProps) {
|
|||||||
const { data: share } = useShareForPageQuery(pageId);
|
const { data: share } = useShareForPageQuery(pageId);
|
||||||
const { spaceSlug } = useParams();
|
const { spaceSlug } = useParams();
|
||||||
const { isTrial } = useTrial();
|
const { isTrial } = useTrial();
|
||||||
|
const [workspace] = useAtom(workspaceAtom);
|
||||||
|
const { data: space } = useSpaceQuery(spaceSlug);
|
||||||
|
const workspaceDisabled =
|
||||||
|
workspace?.settings?.sharing?.disabled === true;
|
||||||
|
const spaceDisabled = space?.settings?.sharing?.disabled === true;
|
||||||
|
const sharingDisabled = workspaceDisabled || spaceDisabled;
|
||||||
const createShareMutation = useCreateShareMutation();
|
const createShareMutation = useCreateShareMutation();
|
||||||
const updateShareMutation = useUpdateShareMutation();
|
const updateShareMutation = useUpdateShareMutation();
|
||||||
const deleteShareMutation = useDeleteShareMutation();
|
const deleteShareMutation = useDeleteShareMutation();
|
||||||
@@ -164,6 +173,20 @@ export default function ShareModal({ readOnly }: ShareModalProps) {
|
|||||||
{t("Upgrade Plan")}
|
{t("Upgrade Plan")}
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
|
) : sharingDisabled ? (
|
||||||
|
<>
|
||||||
|
<Group justify="center" mb="sm">
|
||||||
|
<IconLock size={20} stroke={1.5} />
|
||||||
|
</Group>
|
||||||
|
<Text size="sm" ta="center" fw={500} mb="xs">
|
||||||
|
{t("Public sharing is disabled")}
|
||||||
|
</Text>
|
||||||
|
<Text size="sm" c="dimmed" ta="center">
|
||||||
|
{workspaceDisabled
|
||||||
|
? t("Public sharing has been disabled at the workspace level.")
|
||||||
|
: t("Public sharing has been disabled for this space.")}
|
||||||
|
</Text>
|
||||||
|
</>
|
||||||
) : isDescendantShared ? (
|
) : isDescendantShared ? (
|
||||||
<>
|
<>
|
||||||
<Text size="sm">{t("Inherits public sharing from")}</Text>
|
<Text size="sm">{t("Inherits public sharing from")}</Text>
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ import {
|
|||||||
ResponsiveSettingsControl,
|
ResponsiveSettingsControl,
|
||||||
ResponsiveSettingsRow,
|
ResponsiveSettingsRow,
|
||||||
} from "@/components/ui/responsive-settings-row.tsx";
|
} from "@/components/ui/responsive-settings-row.tsx";
|
||||||
|
import SpacePublicSharingToggle from "@/ee/security/components/space-public-sharing-toggle.tsx";
|
||||||
|
import useEnterpriseAccess from "@/ee/hooks/use-enterprise-access.tsx";
|
||||||
|
|
||||||
interface SpaceDetailsProps {
|
interface SpaceDetailsProps {
|
||||||
spaceId: string;
|
spaceId: string;
|
||||||
@@ -26,6 +28,8 @@ interface SpaceDetailsProps {
|
|||||||
export default function SpaceDetails({ spaceId, readOnly }: SpaceDetailsProps) {
|
export default function SpaceDetails({ spaceId, readOnly }: SpaceDetailsProps) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { data: space, isLoading, refetch } = useSpaceQuery(spaceId);
|
const { data: space, isLoading, refetch } = useSpaceQuery(spaceId);
|
||||||
|
const hasEnterpriseAccess = useEnterpriseAccess();
|
||||||
|
const showSharingToggle = !readOnly && hasEnterpriseAccess;
|
||||||
const [exportOpened, { open: openExportModal, close: closeExportModal }] =
|
const [exportOpened, { open: openExportModal, close: closeExportModal }] =
|
||||||
useDisclosure(false);
|
useDisclosure(false);
|
||||||
const [isIconUploading, setIsIconUploading] = useState(false);
|
const [isIconUploading, setIsIconUploading] = useState(false);
|
||||||
@@ -77,7 +81,6 @@ export default function SpaceDetails({ spaceId, readOnly }: SpaceDetailsProps) {
|
|||||||
fallbackName={space.name}
|
fallbackName={space.name}
|
||||||
size={"60px"}
|
size={"60px"}
|
||||||
variant="filled"
|
variant="filled"
|
||||||
|
|
||||||
type={AvatarIconType.SPACE_ICON}
|
type={AvatarIconType.SPACE_ICON}
|
||||||
onUpload={handleIconUpload}
|
onUpload={handleIconUpload}
|
||||||
onRemove={handleIconRemove}
|
onRemove={handleIconRemove}
|
||||||
@@ -88,6 +91,13 @@ export default function SpaceDetails({ spaceId, readOnly }: SpaceDetailsProps) {
|
|||||||
|
|
||||||
<EditSpaceForm space={space} readOnly={readOnly} />
|
<EditSpaceForm space={space} readOnly={readOnly} />
|
||||||
|
|
||||||
|
{showSharingToggle && (
|
||||||
|
<>
|
||||||
|
<Divider my="lg" />
|
||||||
|
<SpacePublicSharingToggle space={space} />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
{!readOnly && (
|
{!readOnly && (
|
||||||
<>
|
<>
|
||||||
<Divider my="lg" />
|
<Divider my="lg" />
|
||||||
|
|||||||
@@ -5,6 +5,14 @@ import {
|
|||||||
} from "@/features/space/permissions/permissions.type.ts";
|
} from "@/features/space/permissions/permissions.type.ts";
|
||||||
import { ExportFormat } from "@/features/page/types/page.types.ts";
|
import { ExportFormat } from "@/features/page/types/page.types.ts";
|
||||||
|
|
||||||
|
export interface ISpaceSharingSettings {
|
||||||
|
disabled?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ISpaceSettings {
|
||||||
|
sharing?: ISpaceSharingSettings;
|
||||||
|
}
|
||||||
|
|
||||||
export interface ISpace {
|
export interface ISpace {
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
@@ -18,6 +26,9 @@ export interface ISpace {
|
|||||||
memberCount?: number;
|
memberCount?: number;
|
||||||
spaceId?: string;
|
spaceId?: string;
|
||||||
membership?: IMembership;
|
membership?: IMembership;
|
||||||
|
settings?: ISpaceSettings;
|
||||||
|
// for updates
|
||||||
|
disablePublicSharing?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IMembership {
|
interface IMembership {
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ export async function deleteWorkspaceMember(data: {
|
|||||||
await api.post("/workspace/members/delete", data);
|
await api.post("/workspace/members/delete", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateWorkspace(data: Partial<IWorkspace> & { aiSearch?: boolean }) {
|
export async function updateWorkspace(data: Partial<IWorkspace>) {
|
||||||
const req = await api.post<IWorkspace>("/workspace/update", data);
|
const req = await api.post<IWorkspace>("/workspace/update", data);
|
||||||
return req.data;
|
return req.data;
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,9 @@ export async function createInvitation(data: ICreateInvite) {
|
|||||||
return req.data;
|
return req.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function acceptInvitation(data: IAcceptInvite): Promise<{ requiresLogin?: boolean; }> {
|
export async function acceptInvitation(
|
||||||
|
data: IAcceptInvite,
|
||||||
|
): Promise<{ requiresLogin?: boolean }> {
|
||||||
const req = await api.post("/workspace/invites/accept", data);
|
const req = await api.post("/workspace/invites/accept", data);
|
||||||
return req.data;
|
return req.data;
|
||||||
}
|
}
|
||||||
@@ -108,4 +110,3 @@ export async function getAppVersion(): Promise<IVersion> {
|
|||||||
const req = await api.post("/version");
|
const req = await api.post("/version");
|
||||||
return req.data;
|
return req.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,16 +22,23 @@ export interface IWorkspace {
|
|||||||
plan?: string;
|
plan?: string;
|
||||||
hasLicenseKey?: boolean;
|
hasLicenseKey?: boolean;
|
||||||
enforceMfa?: boolean;
|
enforceMfa?: boolean;
|
||||||
|
aiSearch?: boolean;
|
||||||
|
disablePublicSharing?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IWorkspaceSettings {
|
export interface IWorkspaceSettings {
|
||||||
ai?: IWorkspaceAiSettings;
|
ai?: IWorkspaceAiSettings;
|
||||||
|
sharing?: IWorkspaceSharingSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IWorkspaceAiSettings {
|
export interface IWorkspaceAiSettings {
|
||||||
search?: boolean;
|
search?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IWorkspaceSharingSettings {
|
||||||
|
disabled?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
export interface ICreateInvite {
|
export interface ICreateInvite {
|
||||||
role: string;
|
role: string;
|
||||||
emails: string[];
|
emails: string[];
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "server",
|
"name": "server",
|
||||||
"version": "0.25.0",
|
"version": "0.25.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"author": "",
|
"author": "",
|
||||||
"private": true,
|
"private": true,
|
||||||
@@ -92,9 +92,9 @@
|
|||||||
"pdfjs-dist": "^5.4.394",
|
"pdfjs-dist": "^5.4.394",
|
||||||
"pg-tsquery": "^8.4.2",
|
"pg-tsquery": "^8.4.2",
|
||||||
"pgvector": "^0.2.1",
|
"pgvector": "^0.2.1",
|
||||||
"postgres": "^3.4.8",
|
|
||||||
"pino-http": "^11.0.0",
|
"pino-http": "^11.0.0",
|
||||||
"pino-pretty": "^13.1.3",
|
"pino-pretty": "^13.1.3",
|
||||||
|
"postgres": "^3.4.8",
|
||||||
"postmark": "^4.0.5",
|
"postmark": "^4.0.5",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"reflect-metadata": "^0.2.2",
|
"reflect-metadata": "^0.2.2",
|
||||||
|
|||||||
@@ -64,8 +64,18 @@ export class ShareController {
|
|||||||
throw new BadRequestException();
|
throw new BadRequestException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const shareData = await this.shareService.getSharedPage(dto, workspace.id);
|
||||||
|
|
||||||
|
const sharingAllowed = await this.shareService.isSharingAllowed(
|
||||||
|
workspace.id,
|
||||||
|
shareData.share.spaceId,
|
||||||
|
);
|
||||||
|
if (!sharingAllowed) {
|
||||||
|
throw new NotFoundException('Shared page not found');
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...(await this.shareService.getSharedPage(dto, workspace.id)),
|
...shareData,
|
||||||
hasLicenseKey: hasLicenseOrEE({
|
hasLicenseKey: hasLicenseOrEE({
|
||||||
licenseKey: workspace.licenseKey,
|
licenseKey: workspace.licenseKey,
|
||||||
isCloud: this.environmentService.isCloud(),
|
isCloud: this.environmentService.isCloud(),
|
||||||
@@ -86,6 +96,14 @@ export class ShareController {
|
|||||||
throw new NotFoundException('Share not found');
|
throw new NotFoundException('Share not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const sharingAllowed = await this.shareService.isSharingAllowed(
|
||||||
|
share.workspaceId,
|
||||||
|
share.spaceId,
|
||||||
|
);
|
||||||
|
if (!sharingAllowed) {
|
||||||
|
throw new NotFoundException('Share not found');
|
||||||
|
}
|
||||||
|
|
||||||
return share;
|
return share;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,6 +145,14 @@ export class ShareController {
|
|||||||
throw new ForbiddenException();
|
throw new ForbiddenException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const sharingAllowed = await this.shareService.isSharingAllowed(
|
||||||
|
workspace.id,
|
||||||
|
page.spaceId,
|
||||||
|
);
|
||||||
|
if (!sharingAllowed) {
|
||||||
|
throw new ForbiddenException('Public sharing is disabled');
|
||||||
|
}
|
||||||
|
|
||||||
return this.shareService.createShare({
|
return this.shareService.createShare({
|
||||||
page,
|
page,
|
||||||
authUserId: user.id,
|
authUserId: user.id,
|
||||||
@@ -176,8 +202,21 @@ export class ShareController {
|
|||||||
@Body() dto: ShareIdDto,
|
@Body() dto: ShareIdDto,
|
||||||
@AuthWorkspace() workspace: Workspace,
|
@AuthWorkspace() workspace: Workspace,
|
||||||
) {
|
) {
|
||||||
|
const treeData = await this.shareService.getShareTree(
|
||||||
|
dto.shareId,
|
||||||
|
workspace.id,
|
||||||
|
);
|
||||||
|
|
||||||
|
const sharingAllowed = await this.shareService.isSharingAllowed(
|
||||||
|
workspace.id,
|
||||||
|
treeData.share.spaceId,
|
||||||
|
);
|
||||||
|
if (!sharingAllowed) {
|
||||||
|
throw new NotFoundException('Share not found');
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...(await this.shareService.getShareTree(dto.shareId, workspace.id)),
|
...treeData,
|
||||||
hasLicenseKey: hasLicenseOrEE({
|
hasLicenseKey: hasLicenseOrEE({
|
||||||
licenseKey: workspace.licenseKey,
|
licenseKey: workspace.licenseKey,
|
||||||
isCloud: this.environmentService.isCloud(),
|
isCloud: this.environmentService.isCloud(),
|
||||||
|
|||||||
@@ -264,6 +264,31 @@ export class ShareService {
|
|||||||
return ancestor;
|
return ancestor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async isSharingAllowed(
|
||||||
|
workspaceId: string,
|
||||||
|
spaceId: string,
|
||||||
|
): Promise<boolean> {
|
||||||
|
const result = await this.db
|
||||||
|
.selectFrom('workspaces')
|
||||||
|
.innerJoin('spaces', 'spaces.workspaceId', 'workspaces.id')
|
||||||
|
.select([
|
||||||
|
'workspaces.settings as workspaceSettings',
|
||||||
|
'spaces.settings as spaceSettings',
|
||||||
|
])
|
||||||
|
.where('workspaces.id', '=', workspaceId)
|
||||||
|
.where('spaces.id', '=', spaceId)
|
||||||
|
.executeTakeFirst();
|
||||||
|
|
||||||
|
if (!result) return false;
|
||||||
|
|
||||||
|
const workspaceDisabled =
|
||||||
|
(result.workspaceSettings as any)?.sharing?.disabled === true;
|
||||||
|
const spaceDisabled =
|
||||||
|
(result.spaceSettings as any)?.sharing?.disabled === true;
|
||||||
|
|
||||||
|
return !workspaceDisabled && !spaceDisabled;
|
||||||
|
}
|
||||||
|
|
||||||
async updatePublicAttachments(page: Page): Promise<any> {
|
async updatePublicAttachments(page: Page): Promise<any> {
|
||||||
const prosemirrorJson = getProsemirrorContent(page.content);
|
const prosemirrorJson = getProsemirrorContent(page.content);
|
||||||
const attachmentIds = getAttachmentIds(prosemirrorJson);
|
const attachmentIds = getAttachmentIds(prosemirrorJson);
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import { PartialType } from '@nestjs/mapped-types';
|
import { PartialType } from '@nestjs/mapped-types';
|
||||||
import { CreateSpaceDto } from './create-space.dto';
|
import { CreateSpaceDto } from './create-space.dto';
|
||||||
import { IsNotEmpty, IsString, IsUUID } from 'class-validator';
|
import { IsBoolean, IsNotEmpty, IsOptional, IsString, IsUUID } from 'class-validator';
|
||||||
|
|
||||||
export class UpdateSpaceDto extends PartialType(CreateSpaceDto) {
|
export class UpdateSpaceDto extends PartialType(CreateSpaceDto) {
|
||||||
@IsString()
|
@IsString()
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@IsUUID()
|
@IsUUID()
|
||||||
spaceId: string;
|
spaceId: string;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@IsBoolean()
|
||||||
|
disablePublicSharing: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
BadRequestException,
|
BadRequestException,
|
||||||
|
ForbiddenException,
|
||||||
Injectable,
|
Injectable,
|
||||||
NotFoundException,
|
NotFoundException,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
@@ -17,12 +18,18 @@ import { QueueJob, QueueName } from 'src/integrations/queue/constants';
|
|||||||
import { Queue } from 'bullmq';
|
import { Queue } from 'bullmq';
|
||||||
import { InjectQueue } from '@nestjs/bullmq';
|
import { InjectQueue } from '@nestjs/bullmq';
|
||||||
import { CursorPaginationResult } from '@docmost/db/pagination/cursor-pagination';
|
import { CursorPaginationResult } from '@docmost/db/pagination/cursor-pagination';
|
||||||
|
import { ShareRepo } from '@docmost/db/repos/share/share.repo';
|
||||||
|
import { WorkspaceRepo } from '@docmost/db/repos/workspace/workspace.repo';
|
||||||
|
import { LicenseCheckService } from '../../../integrations/environment/license-check.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SpaceService {
|
export class SpaceService {
|
||||||
constructor(
|
constructor(
|
||||||
private spaceRepo: SpaceRepo,
|
private spaceRepo: SpaceRepo,
|
||||||
private spaceMemberService: SpaceMemberService,
|
private spaceMemberService: SpaceMemberService,
|
||||||
|
private shareRepo: ShareRepo,
|
||||||
|
private workspaceRepo: WorkspaceRepo,
|
||||||
|
private licenseCheckService: LicenseCheckService,
|
||||||
@InjectKysely() private readonly db: KyselyDB,
|
@InjectKysely() private readonly db: KyselyDB,
|
||||||
@InjectQueue(QueueName.ATTACHMENT_QUEUE) private attachmentQueue: Queue,
|
@InjectQueue(QueueName.ATTACHMENT_QUEUE) private attachmentQueue: Queue,
|
||||||
) {}
|
) {}
|
||||||
@@ -105,6 +112,31 @@ export class SpaceService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof updateSpaceDto.disablePublicSharing !== 'undefined') {
|
||||||
|
const workspace = await this.workspaceRepo.findById(workspaceId, {
|
||||||
|
withLicenseKey: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (
|
||||||
|
!this.licenseCheckService.isValidEELicense(workspace.licenseKey)
|
||||||
|
) {
|
||||||
|
throw new ForbiddenException(
|
||||||
|
'This feature requires a valid enterprise license',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.spaceRepo.updateSharingSettings(
|
||||||
|
updateSpaceDto.spaceId,
|
||||||
|
workspaceId,
|
||||||
|
'disabled',
|
||||||
|
updateSpaceDto.disablePublicSharing,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (updateSpaceDto.disablePublicSharing) {
|
||||||
|
await this.shareRepo.deleteBySpaceId(updateSpaceDto.spaceId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return await this.spaceRepo.updateSpace(
|
return await this.spaceRepo.updateSpace(
|
||||||
{
|
{
|
||||||
name: updateSpaceDto.name,
|
name: updateSpaceDto.name,
|
||||||
|
|||||||
@@ -30,4 +30,8 @@ export class UpdateWorkspaceDto extends PartialType(CreateWorkspaceDto) {
|
|||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsBoolean()
|
@IsBoolean()
|
||||||
generativeAi: boolean;
|
generativeAi: boolean;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@IsBoolean()
|
||||||
|
disablePublicSharing: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
Logger,
|
Logger,
|
||||||
NotFoundException,
|
NotFoundException,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
|
import { LicenseCheckService } from '../../../integrations/environment/license-check.service';
|
||||||
import { CreateWorkspaceDto } from '../dto/create-workspace.dto';
|
import { CreateWorkspaceDto } from '../dto/create-workspace.dto';
|
||||||
import { UpdateWorkspaceDto } from '../dto/update-workspace.dto';
|
import { UpdateWorkspaceDto } from '../dto/update-workspace.dto';
|
||||||
import { SpaceService } from '../../space/services/space.service';
|
import { SpaceService } from '../../space/services/space.service';
|
||||||
@@ -33,6 +34,7 @@ import { Queue } from 'bullmq';
|
|||||||
import { generateRandomSuffixNumbers } from '../../../common/helpers';
|
import { generateRandomSuffixNumbers } from '../../../common/helpers';
|
||||||
import { isPageEmbeddingsTableExists } from '@docmost/db/helpers/helpers';
|
import { isPageEmbeddingsTableExists } from '@docmost/db/helpers/helpers';
|
||||||
import { CursorPaginationResult } from '@docmost/db/pagination/cursor-pagination';
|
import { CursorPaginationResult } from '@docmost/db/pagination/cursor-pagination';
|
||||||
|
import { ShareRepo } from '@docmost/db/repos/share/share.repo';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class WorkspaceService {
|
export class WorkspaceService {
|
||||||
@@ -47,6 +49,8 @@ export class WorkspaceService {
|
|||||||
private userRepo: UserRepo,
|
private userRepo: UserRepo,
|
||||||
private environmentService: EnvironmentService,
|
private environmentService: EnvironmentService,
|
||||||
private domainService: DomainService,
|
private domainService: DomainService,
|
||||||
|
private licenseCheckService: LicenseCheckService,
|
||||||
|
private shareRepo: ShareRepo,
|
||||||
@InjectKysely() private readonly db: KyselyDB,
|
@InjectKysely() private readonly db: KyselyDB,
|
||||||
@InjectQueue(QueueName.ATTACHMENT_QUEUE) private attachmentQueue: Queue,
|
@InjectQueue(QueueName.ATTACHMENT_QUEUE) private attachmentQueue: Queue,
|
||||||
@InjectQueue(QueueName.BILLING_QUEUE) private billingQueue: Queue,
|
@InjectQueue(QueueName.BILLING_QUEUE) private billingQueue: Queue,
|
||||||
@@ -358,6 +362,32 @@ export class WorkspaceService {
|
|||||||
delete updateWorkspaceDto.generativeAi;
|
delete updateWorkspaceDto.generativeAi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof updateWorkspaceDto.disablePublicSharing !== 'undefined') {
|
||||||
|
const currentWorkspace = await this.workspaceRepo.findById(workspaceId, {
|
||||||
|
withLicenseKey: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (
|
||||||
|
!this.licenseCheckService.isValidEELicense(currentWorkspace.licenseKey)
|
||||||
|
) {
|
||||||
|
throw new ForbiddenException(
|
||||||
|
'This feature requires a valid enterprise license',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.workspaceRepo.updateSharingSettings(
|
||||||
|
workspaceId,
|
||||||
|
'disabled',
|
||||||
|
updateWorkspaceDto.disablePublicSharing,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (updateWorkspaceDto.disablePublicSharing) {
|
||||||
|
await this.shareRepo.deleteByWorkspaceId(workspaceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
delete updateWorkspaceDto.disablePublicSharing;
|
||||||
|
}
|
||||||
|
|
||||||
await this.workspaceRepo.updateWorkspace(updateWorkspaceDto, workspaceId);
|
await this.workspaceRepo.updateWorkspace(updateWorkspaceDto, workspaceId);
|
||||||
|
|
||||||
const workspace = await this.workspaceRepo.findById(workspaceId, {
|
const workspace = await this.workspaceRepo.findById(workspaceId, {
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import { Kysely } from 'kysely';
|
||||||
|
|
||||||
|
export async function up(db: Kysely<any>): Promise<void> {
|
||||||
|
await db.schema.alterTable('spaces').addColumn('settings', 'jsonb').execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function down(db: Kysely<any>): Promise<void> {
|
||||||
|
await db.schema.alterTable('spaces').dropColumn('settings').execute();
|
||||||
|
}
|
||||||
@@ -136,6 +136,20 @@ export class ShareRepo {
|
|||||||
await query.execute();
|
await query.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async deleteBySpaceId(spaceId: string): Promise<void> {
|
||||||
|
await this.db
|
||||||
|
.deleteFrom('shares')
|
||||||
|
.where('spaceId', '=', spaceId)
|
||||||
|
.execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
async deleteByWorkspaceId(workspaceId: string): Promise<void> {
|
||||||
|
await this.db
|
||||||
|
.deleteFrom('shares')
|
||||||
|
.where('workspaceId', '=', workspaceId)
|
||||||
|
.execute();
|
||||||
|
}
|
||||||
|
|
||||||
async getShares(userId: string, pagination: PaginationOptions) {
|
async getShares(userId: string, pagination: PaginationOptions) {
|
||||||
const query = this.db
|
const query = this.db
|
||||||
.selectFrom('shares')
|
.selectFrom('shares')
|
||||||
|
|||||||
@@ -89,6 +89,26 @@ export class SpaceRepo {
|
|||||||
.executeTakeFirst();
|
.executeTakeFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async updateSharingSettings(
|
||||||
|
spaceId: string,
|
||||||
|
workspaceId: string,
|
||||||
|
prefKey: string,
|
||||||
|
prefValue: string | boolean,
|
||||||
|
) {
|
||||||
|
return this.db
|
||||||
|
.updateTable('spaces')
|
||||||
|
.set({
|
||||||
|
settings: sql`COALESCE(settings, '{}'::jsonb)
|
||||||
|
|| jsonb_build_object('sharing', COALESCE(settings->'sharing', '{}'::jsonb)
|
||||||
|
|| jsonb_build_object('${sql.raw(prefKey)}', ${sql.lit(prefValue)}))`,
|
||||||
|
updatedAt: new Date(),
|
||||||
|
})
|
||||||
|
.where('id', '=', spaceId)
|
||||||
|
.where('workspaceId', '=', workspaceId)
|
||||||
|
.returningAll()
|
||||||
|
.executeTakeFirst();
|
||||||
|
}
|
||||||
|
|
||||||
async insertSpace(
|
async insertSpace(
|
||||||
insertableSpace: InsertableSpace,
|
insertableSpace: InsertableSpace,
|
||||||
trx?: KyselyTransaction,
|
trx?: KyselyTransaction,
|
||||||
|
|||||||
@@ -193,4 +193,22 @@ export class WorkspaceRepo {
|
|||||||
.returning(this.baseFields)
|
.returning(this.baseFields)
|
||||||
.executeTakeFirst();
|
.executeTakeFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async updateSharingSettings(
|
||||||
|
workspaceId: string,
|
||||||
|
prefKey: string,
|
||||||
|
prefValue: string | boolean,
|
||||||
|
) {
|
||||||
|
return this.db
|
||||||
|
.updateTable('workspaces')
|
||||||
|
.set({
|
||||||
|
settings: sql`COALESCE(settings, '{}'::jsonb)
|
||||||
|
|| jsonb_build_object('sharing', COALESCE(settings->'sharing', '{}'::jsonb)
|
||||||
|
|| jsonb_build_object('${sql.raw(prefKey)}', ${sql.lit(prefValue)}))`,
|
||||||
|
updatedAt: new Date(),
|
||||||
|
})
|
||||||
|
.where('id', '=', workspaceId)
|
||||||
|
.returning(this.baseFields)
|
||||||
|
.executeTakeFirst();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -273,6 +273,7 @@ export interface Spaces {
|
|||||||
id: Generated<string>;
|
id: Generated<string>;
|
||||||
logo: string | null;
|
logo: string | null;
|
||||||
name: string | null;
|
name: string | null;
|
||||||
|
settings: Json | null;
|
||||||
slug: string;
|
slug: string;
|
||||||
updatedAt: Generated<Timestamp>;
|
updatedAt: Generated<Timestamp>;
|
||||||
visibility: Generated<string>;
|
visibility: Generated<string>;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { ConfigModule } from '@nestjs/config';
|
|||||||
import { validate } from './environment.validation';
|
import { validate } from './environment.validation';
|
||||||
import { envPath } from '../../common/helpers';
|
import { envPath } from '../../common/helpers';
|
||||||
import { DomainService } from './domain.service';
|
import { DomainService } from './domain.service';
|
||||||
|
import { LicenseCheckService } from './license-check.service';
|
||||||
|
|
||||||
@Global()
|
@Global()
|
||||||
@Module({
|
@Module({
|
||||||
@@ -15,7 +16,7 @@ import { DomainService } from './domain.service';
|
|||||||
validate,
|
validate,
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
providers: [EnvironmentService, DomainService],
|
providers: [EnvironmentService, DomainService, LicenseCheckService],
|
||||||
exports: [EnvironmentService, DomainService],
|
exports: [EnvironmentService, DomainService, LicenseCheckService],
|
||||||
})
|
})
|
||||||
export class EnvironmentModule {}
|
export class EnvironmentModule {}
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { ModuleRef } from '@nestjs/core';
|
||||||
|
import { EnvironmentService } from './environment.service';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class LicenseCheckService {
|
||||||
|
constructor(
|
||||||
|
private moduleRef: ModuleRef,
|
||||||
|
private environmentService: EnvironmentService,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
isValidEELicense(licenseKey: string): boolean {
|
||||||
|
if (this.environmentService.isCloud()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||||
|
const LicenseModule = require('../../ee/licence/license.service');
|
||||||
|
const licenseService = this.moduleRef.get(LicenseModule.LicenseService, {
|
||||||
|
strict: false,
|
||||||
|
});
|
||||||
|
return licenseService.isValidEELicense(licenseKey);
|
||||||
|
} catch {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+31
-31
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "docmost",
|
"name": "docmost",
|
||||||
"homepage": "https://docmost.com",
|
"homepage": "https://docmost.com",
|
||||||
"version": "0.25.0",
|
"version": "0.25.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nx run-many -t build",
|
"build": "nx run-many -t build",
|
||||||
@@ -23,39 +23,39 @@
|
|||||||
"@casl/ability": "6.8.0",
|
"@casl/ability": "6.8.0",
|
||||||
"@docmost/editor-ext": "workspace:*",
|
"@docmost/editor-ext": "workspace:*",
|
||||||
"@floating-ui/dom": "^1.7.3",
|
"@floating-ui/dom": "^1.7.3",
|
||||||
"@hocuspocus/provider": "3.4.3",
|
"@hocuspocus/provider": "3.4.4",
|
||||||
"@hocuspocus/server": "3.4.3",
|
"@hocuspocus/server": "3.4.4",
|
||||||
"@hocuspocus/transformer": "3.4.3",
|
"@hocuspocus/transformer": "3.4.4",
|
||||||
"@joplin/turndown": "^4.0.74",
|
"@joplin/turndown": "^4.0.74",
|
||||||
"@joplin/turndown-plugin-gfm": "^1.0.56",
|
"@joplin/turndown-plugin-gfm": "^1.0.56",
|
||||||
"@sindresorhus/slugify": "1.1.0",
|
"@sindresorhus/slugify": "1.1.0",
|
||||||
"@tiptap/core": "3.19.0",
|
"@tiptap/core": "3.17.1",
|
||||||
"@tiptap/extension-code-block": "3.19.0",
|
"@tiptap/extension-code-block": "3.17.1",
|
||||||
"@tiptap/extension-collaboration": "3.19.0",
|
"@tiptap/extension-collaboration": "3.17.1",
|
||||||
"@tiptap/extension-collaboration-caret": "3.19.0",
|
"@tiptap/extension-collaboration-caret": "3.17.1",
|
||||||
"@tiptap/extension-color": "3.19.0",
|
"@tiptap/extension-color": "3.17.1",
|
||||||
"@tiptap/extension-document": "3.19.0",
|
"@tiptap/extension-document": "3.17.1",
|
||||||
"@tiptap/extension-heading": "3.19.0",
|
"@tiptap/extension-heading": "3.17.1",
|
||||||
"@tiptap/extension-highlight": "3.19.0",
|
"@tiptap/extension-highlight": "3.17.1",
|
||||||
"@tiptap/extension-history": "3.19.0",
|
"@tiptap/extension-history": "3.17.1",
|
||||||
"@tiptap/extension-image": "3.19.0",
|
"@tiptap/extension-image": "3.17.1",
|
||||||
"@tiptap/extension-link": "3.19.0",
|
"@tiptap/extension-link": "3.17.1",
|
||||||
"@tiptap/extension-list": "3.19.0",
|
"@tiptap/extension-list": "3.17.1",
|
||||||
"@tiptap/extension-placeholder": "3.19.0",
|
"@tiptap/extension-placeholder": "3.17.1",
|
||||||
"@tiptap/extension-subscript": "3.19.0",
|
"@tiptap/extension-subscript": "3.17.1",
|
||||||
"@tiptap/extension-superscript": "3.19.0",
|
"@tiptap/extension-superscript": "3.17.1",
|
||||||
"@tiptap/extension-table": "3.19.0",
|
"@tiptap/extension-table": "3.17.1",
|
||||||
"@tiptap/extension-text": "3.19.0",
|
"@tiptap/extension-text": "3.17.1",
|
||||||
"@tiptap/extension-text-align": "3.19.0",
|
"@tiptap/extension-text-align": "3.17.1",
|
||||||
"@tiptap/extension-text-style": "3.19.0",
|
"@tiptap/extension-text-style": "3.17.1",
|
||||||
"@tiptap/extension-typography": "3.19.0",
|
"@tiptap/extension-typography": "3.17.1",
|
||||||
"@tiptap/extension-unique-id": "^3.19.0",
|
"@tiptap/extension-unique-id": "^3.17.1",
|
||||||
"@tiptap/extension-youtube": "3.19.0",
|
"@tiptap/extension-youtube": "3.17.1",
|
||||||
"@tiptap/html": "3.19.0",
|
"@tiptap/html": "3.17.1",
|
||||||
"@tiptap/pm": "3.19.0",
|
"@tiptap/pm": "3.17.1",
|
||||||
"@tiptap/react": "3.19.0",
|
"@tiptap/react": "3.17.1",
|
||||||
"@tiptap/starter-kit": "3.19.0",
|
"@tiptap/starter-kit": "3.17.1",
|
||||||
"@tiptap/suggestion": "3.19.0",
|
"@tiptap/suggestion": "3.17.1",
|
||||||
"@types/qrcode": "^1.5.5",
|
"@types/qrcode": "^1.5.5",
|
||||||
"bytes": "^3.1.2",
|
"bytes": "^3.1.2",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
|
|||||||
Generated
+294
-294
@@ -32,14 +32,14 @@ importers:
|
|||||||
specifier: ^1.7.3
|
specifier: ^1.7.3
|
||||||
version: 1.7.3
|
version: 1.7.3
|
||||||
'@hocuspocus/provider':
|
'@hocuspocus/provider':
|
||||||
specifier: 3.4.3
|
specifier: 3.4.4
|
||||||
version: 3.4.3(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
version: 3.4.4(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
||||||
'@hocuspocus/server':
|
'@hocuspocus/server':
|
||||||
specifier: 3.4.3
|
specifier: 3.4.4
|
||||||
version: 3.4.3(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
version: 3.4.4(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
||||||
'@hocuspocus/transformer':
|
'@hocuspocus/transformer':
|
||||||
specifier: 3.4.3
|
specifier: 3.4.4
|
||||||
version: 3.4.3(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(y-prosemirror@1.3.7(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29)
|
version: 3.4.4(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(y-prosemirror@1.3.7(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29)
|
||||||
'@joplin/turndown':
|
'@joplin/turndown':
|
||||||
specifier: ^4.0.74
|
specifier: ^4.0.74
|
||||||
version: 4.0.74
|
version: 4.0.74
|
||||||
@@ -50,86 +50,86 @@ importers:
|
|||||||
specifier: 1.1.0
|
specifier: 1.1.0
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
'@tiptap/core':
|
'@tiptap/core':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/pm@3.19.0)
|
version: 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-code-block':
|
'@tiptap/extension-code-block':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-collaboration':
|
'@tiptap/extension-collaboration':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29)
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29)
|
||||||
'@tiptap/extension-collaboration-caret':
|
'@tiptap/extension-collaboration-caret':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))
|
||||||
'@tiptap/extension-color':
|
'@tiptap/extension-color':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/extension-text-style@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0)))
|
version: 3.17.1(@tiptap/extension-text-style@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1)))
|
||||||
'@tiptap/extension-document':
|
'@tiptap/extension-document':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-heading':
|
'@tiptap/extension-heading':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-highlight':
|
'@tiptap/extension-highlight':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-history':
|
'@tiptap/extension-history':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/extensions@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-image':
|
'@tiptap/extension-image':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-link':
|
'@tiptap/extension-link':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-list':
|
'@tiptap/extension-list':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-placeholder':
|
'@tiptap/extension-placeholder':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/extensions@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-subscript':
|
'@tiptap/extension-subscript':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-superscript':
|
'@tiptap/extension-superscript':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-table':
|
'@tiptap/extension-table':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-text':
|
'@tiptap/extension-text':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-text-align':
|
'@tiptap/extension-text-align':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-text-style':
|
'@tiptap/extension-text-style':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-typography':
|
'@tiptap/extension-typography':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-unique-id':
|
'@tiptap/extension-unique-id':
|
||||||
specifier: ^3.19.0
|
specifier: ^3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
version: 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-youtube':
|
'@tiptap/extension-youtube':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/html':
|
'@tiptap/html':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(happy-dom@20.1.0)
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(happy-dom@20.1.0)
|
||||||
'@tiptap/pm':
|
'@tiptap/pm':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0
|
version: 3.17.1
|
||||||
'@tiptap/react':
|
'@tiptap/react':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@floating-ui/dom@1.7.3)(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
version: 3.17.1(@floating-ui/dom@1.7.3)(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@tiptap/starter-kit':
|
'@tiptap/starter-kit':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0
|
version: 3.17.1
|
||||||
'@tiptap/suggestion':
|
'@tiptap/suggestion':
|
||||||
specifier: 3.19.0
|
specifier: 3.17.1
|
||||||
version: 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@types/qrcode':
|
'@types/qrcode':
|
||||||
specifier: ^1.5.5
|
specifier: ^1.5.5
|
||||||
version: 1.5.5
|
version: 1.5.5
|
||||||
@@ -2389,23 +2389,23 @@ packages:
|
|||||||
'@floating-ui/utils@0.2.10':
|
'@floating-ui/utils@0.2.10':
|
||||||
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
|
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
|
||||||
|
|
||||||
'@hocuspocus/common@3.4.3':
|
'@hocuspocus/common@3.4.4':
|
||||||
resolution: {integrity: sha512-wnBBO9sWcVAoUPEXN1qO+zk3HaEF9VTemxB6kjuuH6e1dHnD0v12m4P4X1wiZVhmMIX/PMl/fu3MGtYWQJz8gA==}
|
resolution: {integrity: sha512-RykIJ0tsHHMP4Xk+4UCbc7SO5LgGxGUSTdbh6anJEsaALAyqinf1Nn5HYuMjLPolAmsar1v++m9zufR09NLpXA==}
|
||||||
|
|
||||||
'@hocuspocus/provider@3.4.3':
|
'@hocuspocus/provider@3.4.4':
|
||||||
resolution: {integrity: sha512-zt+UgVXGsEQrqnDZgavc2PT9yKJjmVjV+5YxvhlmFVFLVORqawT4l601aKmLPhvyK97un4ZApZ5rso8iO6crWg==}
|
resolution: {integrity: sha512-KbsMAfdYcIJD8eMU/5QnpXcSOvIWAcCNI33FSRSaKCIpYBFtAwkYIwWnZJmPZ8a1BMAtqQc+uvy9+UQf7GHnGQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
y-protocols: ^1.0.6
|
y-protocols: ^1.0.6
|
||||||
yjs: ^13.6.8
|
yjs: ^13.6.8
|
||||||
|
|
||||||
'@hocuspocus/server@3.4.3':
|
'@hocuspocus/server@3.4.4':
|
||||||
resolution: {integrity: sha512-a9bqAXUMBo9YBeuzqNf9C3eVbu1RIWUrtmFMGq+ZssQr3Jugt/5PCkZskgqhJNvPkyTARHcUtN80j/SDLylZmg==}
|
resolution: {integrity: sha512-UV+oaONAejOzeYgUygNcgsc8RdZvSokVvAxluZJIisLACpRO/VsseQ5lWKDRwLd7Fn6+rHWDH3hGuQ1fdX1Ycg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
y-protocols: ^1.0.6
|
y-protocols: ^1.0.6
|
||||||
yjs: ^13.6.8
|
yjs: ^13.6.8
|
||||||
|
|
||||||
'@hocuspocus/transformer@3.4.3':
|
'@hocuspocus/transformer@3.4.4':
|
||||||
resolution: {integrity: sha512-jQZiqFGCvGQJLgE0nHZ4TdpEJlI7WkM8CKA1wLcs0beVs0kNXg32lykGckjveJwwJuJ/hieMqIEqj9POxTWPEw==}
|
resolution: {integrity: sha512-X0EJ863LV97YbL5m8WTt4NDSC6uHi6ZCq/teIH5aholdjdhdTmFrzMemdhha/ZqPUZyaKhOoAmZzwR55HZLPpQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.0.1
|
'@tiptap/core': ^3.0.1
|
||||||
'@tiptap/pm': ^3.0.1
|
'@tiptap/pm': ^3.0.1
|
||||||
@@ -4239,10 +4239,10 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^18 || ^19
|
react: ^18 || ^19
|
||||||
|
|
||||||
'@tiptap/core@3.19.0':
|
'@tiptap/core@3.17.1':
|
||||||
resolution: {integrity: sha512-bpqELwPW+DG8gWiD8iiFtSl4vIBooG5uVJod92Qxn3rA9nFatyXRr4kNbMJmOZ66ezUvmCjXVe/5/G4i5cyzKA==}
|
resolution: {integrity: sha512-f8hB9MzXqsuXoF9qXEDEH5Fb3VgwhEFMBMfk9EKN88l5adri6oM8mt2XOWVxVVssjpEW0177zXSLPKWzoS/vrw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-blockquote@3.19.0':
|
'@tiptap/extension-blockquote@3.19.0':
|
||||||
resolution: {integrity: sha512-y3UfqY9KD5XwWz3ndiiJ089Ij2QKeiXy/g1/tlAN/F1AaWsnkHEHMLxCP1BIqmMpwsX7rZjMLN7G5Lp7c9682A==}
|
resolution: {integrity: sha512-y3UfqY9KD5XwWz3ndiiJ089Ij2QKeiXy/g1/tlAN/F1AaWsnkHEHMLxCP1BIqmMpwsX7rZjMLN7G5Lp7c9682A==}
|
||||||
@@ -4265,41 +4265,41 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/extension-list': ^3.19.0
|
'@tiptap/extension-list': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/extension-code-block@3.19.0':
|
'@tiptap/extension-code-block@3.17.1':
|
||||||
resolution: {integrity: sha512-b/2qR+tMn8MQb+eaFYgVk4qXnLNkkRYmwELQ8LEtEDQPxa5Vl7J3eu8+4OyoIFhZrNDZvvoEp80kHMCP8sI6rg==}
|
resolution: {integrity: sha512-h4i+Y/cN7nMi0Tmlp6V1w4dI7NTqrUFSr1W/vMqnq4vn+c6jvm35KubKU5ry/1qQp8KfndDA02BtVQiMx6DmpA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-code@3.19.0':
|
'@tiptap/extension-code@3.19.0':
|
||||||
resolution: {integrity: sha512-2kqqQIXBXj2Or+4qeY3WoE7msK+XaHKL6EKOcKlOP2BW8eYqNTPzNSL+PfBDQ3snA7ljZQkTs/j4GYDj90vR1A==}
|
resolution: {integrity: sha512-2kqqQIXBXj2Or+4qeY3WoE7msK+XaHKL6EKOcKlOP2BW8eYqNTPzNSL+PfBDQ3snA7ljZQkTs/j4GYDj90vR1A==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/extension-collaboration-caret@3.19.0':
|
'@tiptap/extension-collaboration-caret@3.17.1':
|
||||||
resolution: {integrity: sha512-YMHQ7ZxdWaGzR+k0UWP7eHo+jrUbrx2C3gTEGYpR2YMGN38yuV5Yelwzd2rflaedccJrFsYwMWxRRs5ygTGGUw==}
|
resolution: {integrity: sha512-tYzujG4ABacSbjd8QOqMt1IP3QdCmAEBHP2faF4SeFauaP6Nto88JvTiZVCHad0BBwiNrj4UPGZSujcNQiLjTA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
'@tiptap/y-tiptap': ^3.0.2
|
'@tiptap/y-tiptap': ^3.0.2
|
||||||
|
|
||||||
'@tiptap/extension-collaboration@3.19.0':
|
'@tiptap/extension-collaboration@3.17.1':
|
||||||
resolution: {integrity: sha512-Cb4RXo2C05w44OsT22weLYqf2mnyTacvtz3iWYswgq1slMOl4Gs5RQE+jHgyvjVbhj34yPS6ghoWBBrriX9a1w==}
|
resolution: {integrity: sha512-4ehZ5LL7M3nFfcogCG7bWRHIR/8366i1vz5i0PaaoArJga2N5sXnWcuBGXG7ykC8owbgrfL3agFxjHlhTl4sNw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
'@tiptap/y-tiptap': ^3.0.2
|
'@tiptap/y-tiptap': ^3.0.2
|
||||||
yjs: ^13
|
yjs: ^13
|
||||||
|
|
||||||
'@tiptap/extension-color@3.19.0':
|
'@tiptap/extension-color@3.17.1':
|
||||||
resolution: {integrity: sha512-SemOrEEnmbKshhbTeKIvffwMlgqDAUDuOYyizfKqYM2dd5fRjohp+oszExO7scVhDtHtvtP/l3UmkBGBYfl4Tg==}
|
resolution: {integrity: sha512-QVlzpzGB+QcZgHgvFMRPckZutpkOLzNmZzhupNA7G2CMeeoCwZOJeZkyd3zvtAnRZkf7FrQBO123On30pJt7TA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/extension-text-style': ^3.19.0
|
'@tiptap/extension-text-style': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-document@3.19.0':
|
'@tiptap/extension-document@3.17.1':
|
||||||
resolution: {integrity: sha512-AOf0kHKSFO0ymjVgYSYDncRXTITdTcrj1tqxVazrmO60KNl1Rc2dAggDvIVTEBy5NvceF0scc7q3sE/5ZtVV7A==}
|
resolution: {integrity: sha512-F7Q5HoAU383HWFa6AXZQ5N6t6lTJzVjYM8z93XrtH/2GzDFwy1UmDSrsXqvgznedBLAOgCNVTNh9PjXpLoOUbg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-dropcursor@3.19.0':
|
'@tiptap/extension-dropcursor@3.19.0':
|
||||||
resolution: {integrity: sha512-sf3dEZXiLvsGqVK2maUIzXY6qtYYCvBumag7+VPTMGQ0D4hiZ1X/4ukt4+6VXDg5R2WP1CoIt/QvUetUjWNhbQ==}
|
resolution: {integrity: sha512-sf3dEZXiLvsGqVK2maUIzXY6qtYYCvBumag7+VPTMGQ0D4hiZ1X/4ukt4+6VXDg5R2WP1CoIt/QvUetUjWNhbQ==}
|
||||||
@@ -4323,20 +4323,20 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/extension-heading@3.19.0':
|
'@tiptap/extension-heading@3.17.1':
|
||||||
resolution: {integrity: sha512-uLpLlfyp086WYNOc0ekm1gIZNlEDfmzOhKzB0Hbyi6jDagTS+p9mxUNYeYOn9jPUxpFov43+Wm/4E24oY6B+TQ==}
|
resolution: {integrity: sha512-rT+Su/YnHdlikg8f78t6RXlc1sVSfp7B0fdJdtFgS2e6BBYJQoDMp5L9nt54RR9Yy953aDW2sko7NArUCb8log==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-highlight@3.19.0':
|
'@tiptap/extension-highlight@3.17.1':
|
||||||
resolution: {integrity: sha512-MYwSDCh/aG12KXw30XmHwrruElBRB8b7Ou0jd8n8H2oXb+QexVqnMa2+ylkuTAl+2D5PR7zdIIOeeHRSTmkPPw==}
|
resolution: {integrity: sha512-I4EdBhPVzJd4ECMI9kP0NE4aG4Numd46jy/AqeZyf3dqVgCxRyAbSyU7oy4aXUnsojYODrKKG6+djm07KgOGoQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-history@3.19.0':
|
'@tiptap/extension-history@3.17.1':
|
||||||
resolution: {integrity: sha512-hhN5nL7Pqcd9iomzeUUMKnmSQieKNlJ2FUgf2dHUqqvn4pWvcHA6P6UwdDNhuKFivSJNNMqtajkOvO4bYq1KPw==}
|
resolution: {integrity: sha512-YHW4HP9ovZ/zqc1u3+cDdAY/LITaMQNRnX5foLsDFLV5FU+zqonYo2CqDkVwaQs9UfCp9PM0ehZzxMI8hc58oA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/extensions': ^3.19.0
|
'@tiptap/extensions': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-horizontal-rule@3.19.0':
|
'@tiptap/extension-horizontal-rule@3.19.0':
|
||||||
resolution: {integrity: sha512-iqUHmgMGhMgYGwG6L/4JdelVQ5Mstb4qHcgTGd/4dkcUOepILvhdxajPle7OEdf9sRgjQO6uoAU5BVZVC26+ng==}
|
resolution: {integrity: sha512-iqUHmgMGhMgYGwG6L/4JdelVQ5Mstb4qHcgTGd/4dkcUOepILvhdxajPle7OEdf9sRgjQO6uoAU5BVZVC26+ng==}
|
||||||
@@ -4344,21 +4344,21 @@ packages:
|
|||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.19.0
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/extension-image@3.19.0':
|
'@tiptap/extension-image@3.17.1':
|
||||||
resolution: {integrity: sha512-/rGl8nBziBPVJJ/9639eQWFDKcI3RQsDM3s+cqYQMFQfMqc7sQB9h4o4sHCBpmKxk3Y0FV/0NjnjLbBVm8OKdQ==}
|
resolution: {integrity: sha512-VbSSZ//5qijm8F0lQQ6K+DGnZgjLKYQY2c+O56QNEoN8BaCFrJlsVgF1ttrSRUmoG4XBNIMlAS07kZXvMZQr0g==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-italic@3.19.0':
|
'@tiptap/extension-italic@3.19.0':
|
||||||
resolution: {integrity: sha512-6GffxOnS/tWyCbDkirWNZITiXRta9wrCmrfa4rh+v32wfaOL1RRQNyqo9qN6Wjyl1R42Js+yXTzTTzZsOaLMYA==}
|
resolution: {integrity: sha512-6GffxOnS/tWyCbDkirWNZITiXRta9wrCmrfa4rh+v32wfaOL1RRQNyqo9qN6Wjyl1R42Js+yXTzTTzZsOaLMYA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/extension-link@3.19.0':
|
'@tiptap/extension-link@3.17.1':
|
||||||
resolution: {integrity: sha512-HEGDJnnCPfr7KWu7Dsq+eRRe/mBCsv6DuI+7fhOCLDJjjKzNgrX2abbo/zG3D/4lCVFaVb+qawgJubgqXR/Smw==}
|
resolution: {integrity: sha512-5kdN7vms5hMXtjiophUkgvzy8dNGvGSmol1Sawh30TEPrgXc93Ayj7YyGZlbimInKZcD8q+Od/FFc+wkrof3nA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-list-item@3.19.0':
|
'@tiptap/extension-list-item@3.19.0':
|
||||||
resolution: {integrity: sha512-VsSKuJz4/Tb6ZmFkXqWpDYkRzmaLTyE6dNSEpNmUpmZ32sMqo58mt11/huADNwfBFB0Ve7siH/VnFNIJYY3xvg==}
|
resolution: {integrity: sha512-VsSKuJz4/Tb6ZmFkXqWpDYkRzmaLTyE6dNSEpNmUpmZ32sMqo58mt11/huADNwfBFB0Ve7siH/VnFNIJYY3xvg==}
|
||||||
@@ -4370,11 +4370,11 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/extension-list': ^3.19.0
|
'@tiptap/extension-list': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/extension-list@3.19.0':
|
'@tiptap/extension-list@3.17.1':
|
||||||
resolution: {integrity: sha512-N6nKbFB2VwMsPlCw67RlAtYSK48TAsAUgjnD+vd3ieSlIufdQnLXDFUP6hFKx9mwoUVUgZGz02RA6bkxOdYyTw==}
|
resolution: {integrity: sha512-LHKIxmXe5Me+vJZKhiwMBGHlApaBIAduNMRUpm5mkY7ER/m96zKR0VqrJd4LjVVH2iDvck5h1Ka4396MHWlKNg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-ordered-list@3.19.0':
|
'@tiptap/extension-ordered-list@3.19.0':
|
||||||
resolution: {integrity: sha512-cxGsINquwHYE1kmhAcLNLHAofmoDEG6jbesR5ybl7tU5JwtKVO7S/xZatll2DU1dsDAXWPWEeeMl4e/9svYjCg==}
|
resolution: {integrity: sha512-cxGsINquwHYE1kmhAcLNLHAofmoDEG6jbesR5ybl7tU5JwtKVO7S/xZatll2DU1dsDAXWPWEeeMl4e/9svYjCg==}
|
||||||
@@ -4386,53 +4386,53 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/extension-placeholder@3.19.0':
|
'@tiptap/extension-placeholder@3.17.1':
|
||||||
resolution: {integrity: sha512-i15OfgyI4IDCYAcYSKUMnuZkYuUInfanjf9zquH8J2BETiomf/jZldVCp/QycMJ8DOXZ38fXDc99wOygnSNySg==}
|
resolution: {integrity: sha512-cE8Rij5/1t4KnWE7GaDewhBek9DKNB+97yrxyggMegILg6v195hOmOkRZkyfnFMYZoBDlrfSAtX9wBvbZBqIsg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/extensions': ^3.19.0
|
'@tiptap/extensions': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-strike@3.19.0':
|
'@tiptap/extension-strike@3.19.0':
|
||||||
resolution: {integrity: sha512-xYpabHsv7PccLUBQaP8AYiFCnYbx6P93RHPd0lgNwhdOjYFd931Zy38RyoxPHAgbYVmhf1iyx7lpuLtBnhS5dA==}
|
resolution: {integrity: sha512-xYpabHsv7PccLUBQaP8AYiFCnYbx6P93RHPd0lgNwhdOjYFd931Zy38RyoxPHAgbYVmhf1iyx7lpuLtBnhS5dA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/extension-subscript@3.19.0':
|
'@tiptap/extension-subscript@3.17.1':
|
||||||
resolution: {integrity: sha512-RchUOSIDprlnuzmA/znZIBKMONIlCAXHuR6XkoNX2jFJ/9OHk/si+jEeY8jJfpPDpVqZ3KrwS/zJrqhU/pT+hQ==}
|
resolution: {integrity: sha512-+y/sl1d+TcecX2n1r6ZTjBmY3D6cfqAW86iKsvudCFSpp9SQk85RaumPzELOXWOjz9g0mtfUnXifrLYF3dS+vA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-superscript@3.19.0':
|
'@tiptap/extension-superscript@3.17.1':
|
||||||
resolution: {integrity: sha512-PjLUGjM23/7hqFP5HS1DbdywRm63GhjJ5SD6KqNgyZQwcwDZeJTAW2b/LYTHAP+k07OxOLPdj/k4ntQKtgKNow==}
|
resolution: {integrity: sha512-FKt+lI1ocFRW0EFla9EuO71aLQINpkC/wt9zxWnJJnfPIWfxYlsTSFJLjLkVungTmwfeCnoCVcXnZ0dSKDnoGg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-table@3.19.0':
|
'@tiptap/extension-table@3.17.1':
|
||||||
resolution: {integrity: sha512-Lg8DlkkDUMYE/CcGOxoCWF98B2i7VWh+AGgqlF+XWrHjhlKHfENLRXm1a0vWuyyP3NknRYILoaaZ1s7QzmXKRA==}
|
resolution: {integrity: sha512-FuAMdmM330tHJUYT5IV2ooFRqtXf+0D8llcE9nIQQCXKL4J0pfGSOIm40LVpunYgx2pV8SSCL51qTBuEmR84tQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-text-align@3.19.0':
|
'@tiptap/extension-text-align@3.17.1':
|
||||||
resolution: {integrity: sha512-cY8bHWYojLTHXZb2j2srdh7ltmDgnwXYvSxbPL4HK4j7XxQOGnOsTakgM/BNhxymOfEj2414i5Otyy8hlgviFA==}
|
resolution: {integrity: sha512-CyJbZf823dqPZ/1zwRsza5pk/NQwFZwILdFYLVkV88I4+Ua9YVztI9kmwTB6dJyuKT4kTc7nhQHdaa957alGZQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-text-style@3.19.0':
|
'@tiptap/extension-text-style@3.17.1':
|
||||||
resolution: {integrity: sha512-R55V6iUfRq03SGt/R2KvaeN+XGFiKJHx1jFJhZzvnWhMV7YqjHSG2r4BLvpTq1HBqteMbEjI+EOnb4t9AKd6aQ==}
|
resolution: {integrity: sha512-TCMsEU92r/TfZkN8AKo/WIcJ1uNq/5NiZxloq5drF1HXxDDjwliurgwBw3OTGUlKQmer0N9hV0AAePY/G+5Akw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-text@3.19.0':
|
'@tiptap/extension-text@3.17.1':
|
||||||
resolution: {integrity: sha512-K95+SnbZy0h6hNFtfy23n8t/nOcTFEf69In9TSFVVmwn/Nwlke+IfiESAkqbt1/7sKJeegRXYO7WzFEmFl9Q/g==}
|
resolution: {integrity: sha512-rGml96vokQbvPB+w6L3+WKyYJWwqELaLdFUr1WMgg+py5uNYGJYAExYNAbDb5biWJBrX9GgMlCaNeiJj849L1w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-typography@3.19.0':
|
'@tiptap/extension-typography@3.17.1':
|
||||||
resolution: {integrity: sha512-2Rwwz1ErNhqUcXPzPX2u4frdyrK4Yj6ZMvCLPxLt5lQXj9Eq9YEoD9isw8abR105ko3BCidvfElQYSFu6dWPSw==}
|
resolution: {integrity: sha512-bEocTrK/gryk3VtthC9Ca03p2kutVIIFnDkVW6iOG8PgQWEspuQRgqE8yPnHxY8pBBDWxiaBzcGTSrp+3U9d5A==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-underline@3.19.0':
|
'@tiptap/extension-underline@3.19.0':
|
||||||
resolution: {integrity: sha512-800MGEWfG49j10wQzAFiW/ele1HT04MamcL8iyuPNu7ZbjbGN2yknvdrJlRy7hZlzIrVkZMr/1tz62KN33VHIw==}
|
resolution: {integrity: sha512-800MGEWfG49j10wQzAFiW/ele1HT04MamcL8iyuPNu7ZbjbGN2yknvdrJlRy7hZlzIrVkZMr/1tz62KN33VHIw==}
|
||||||
@@ -4445,10 +4445,10 @@ packages:
|
|||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.19.0
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/extension-youtube@3.19.0':
|
'@tiptap/extension-youtube@3.17.1':
|
||||||
resolution: {integrity: sha512-/3Z/jw9VbD3WrS1cOcxKUN0oMVnX9NVSekVG4uJHZYs5LhG2tbmUkBYNzj4oJcZcuJ4WPTD1EaAVEgNVffaoJg==}
|
resolution: {integrity: sha512-AarpN4vI/S6jPMuLuFGEFLgdoasGiUW+rGLj+jH/0Of6l27nKRN00MTm/fD/62qjR6At3Rd7Xsue/GuXdmDUWw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/extensions@3.19.0':
|
'@tiptap/extensions@3.19.0':
|
||||||
resolution: {integrity: sha512-ZmGUhLbMWaGqnJh2Bry+6V4M6gMpUDYo4D1xNux5Gng/E/eYtc+PMxMZ/6F7tNTAuujLBOQKj6D+4SsSm457jw==}
|
resolution: {integrity: sha512-ZmGUhLbMWaGqnJh2Bry+6V4M6gMpUDYo4D1xNux5Gng/E/eYtc+PMxMZ/6F7tNTAuujLBOQKj6D+4SsSm457jw==}
|
||||||
@@ -4456,34 +4456,34 @@ packages:
|
|||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.19.0
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.19.0
|
||||||
|
|
||||||
'@tiptap/html@3.19.0':
|
'@tiptap/html@3.17.1':
|
||||||
resolution: {integrity: sha512-ceBKCurbi9Rir1QZOGt+l17w6VGSEnQu9LKWnSwK6A6x8x7wvP8zYvM6HiuSuP8CRLT284fNBc8qrbWDuBnHbg==}
|
resolution: {integrity: sha512-fLb2fo8+3oQ+5FTx5IGZvLI5+VLgN9BM6pHaO1+IrwqQ5w2RBFIGp8M946asBPkxJ74EtzHqFKJpVFtaY2CcpA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
happy-dom: ^20.0.2
|
happy-dom: ^20.0.2
|
||||||
|
|
||||||
'@tiptap/pm@3.19.0':
|
'@tiptap/pm@3.17.1':
|
||||||
resolution: {integrity: sha512-789zcnM4a8OWzvbD2DL31d0wbSm9BVeO/R7PLQwLIGysDI3qzrcclyZ8yhqOEVuvPitRRwYLq+mY14jz7kY4cw==}
|
resolution: {integrity: sha512-UyVLkN8axV/zop6Se2DCBJRu5DM21X0XEQvwEC5P/vk8eC9OcQZ3FLtxeYy2ZjpAZUzBGLw0/BGsmEip/n7olw==}
|
||||||
|
|
||||||
'@tiptap/react@3.19.0':
|
'@tiptap/react@3.17.1':
|
||||||
resolution: {integrity: sha512-GQQMUUXMpNd8tRjc1jDK3tDRXFugJO7C928EqmeBcBzTKDrFIJ3QUoZKEPxUNb6HWhZ2WL7q00fiMzsv4DNSmg==}
|
resolution: {integrity: sha512-Hn/pIP3HG9xYnhI3iGrfVhgQhfIdOaEBSxOFzJ37patqSOlIoP5aZH/b2HZ4vgo5DdRlV56q7WtRC+vLIw4Neg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
'@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
|
'@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
|
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
|
||||||
'@tiptap/starter-kit@3.19.0':
|
'@tiptap/starter-kit@3.17.1':
|
||||||
resolution: {integrity: sha512-dTCkHEz+Y8ADxX7h+xvl6caAj+3nII/wMB1rTQchSuNKqJTOrzyUsCWm094+IoZmLT738wANE0fRIgziNHs/ug==}
|
resolution: {integrity: sha512-3vBGqag9mwuQoWTrfQlULtHeoFs7k/2Q8CREf3Y79hv2fqAXTvTOKlWYPSgZhiGVMp6Dti7BDiE9Y1QpvAat2g==}
|
||||||
|
|
||||||
'@tiptap/suggestion@3.19.0':
|
'@tiptap/suggestion@3.17.1':
|
||||||
resolution: {integrity: sha512-tUZwMRFqTVPIo566ZmHNRteyZxJy2EE4FA+S3IeIUOOvY6AW0h1imhbpBO7sXV8CeEQvpa+2DWwLvy7L3vmstA==}
|
resolution: {integrity: sha512-a188uVYjlLsUiwK3Ki7KsaWVWC0u28KsqGEAqCk9ECYmtVY99Hrb+rcAwGpMjA7tn8WAwThOxiLISoMdpuqXwg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/core': ^3.19.0
|
'@tiptap/core': ^3.17.1
|
||||||
'@tiptap/pm': ^3.19.0
|
'@tiptap/pm': ^3.17.1
|
||||||
|
|
||||||
'@tiptap/y-tiptap@3.0.1':
|
'@tiptap/y-tiptap@3.0.1':
|
||||||
resolution: {integrity: sha512-F3hj5X77ckmyIywbCQpKgyX3xKra2/acJPWaV5R9wqp0cUPBmm62FYbkQ6HaqxH1VhCkUhhAZcDSQjbjj7tnWw==}
|
resolution: {integrity: sha512-F3hj5X77ckmyIywbCQpKgyX3xKra2/acJPWaV5R9wqp0cUPBmm62FYbkQ6HaqxH1VhCkUhhAZcDSQjbjj7tnWw==}
|
||||||
@@ -12657,13 +12657,13 @@ snapshots:
|
|||||||
|
|
||||||
'@floating-ui/utils@0.2.10': {}
|
'@floating-ui/utils@0.2.10': {}
|
||||||
|
|
||||||
'@hocuspocus/common@3.4.3':
|
'@hocuspocus/common@3.4.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
lib0: 0.2.117
|
lib0: 0.2.117
|
||||||
|
|
||||||
'@hocuspocus/provider@3.4.3(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)':
|
'@hocuspocus/provider@3.4.4(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@hocuspocus/common': 3.4.3
|
'@hocuspocus/common': 3.4.4
|
||||||
'@lifeomic/attempt': 3.0.3
|
'@lifeomic/attempt': 3.0.3
|
||||||
lib0: 0.2.117
|
lib0: 0.2.117
|
||||||
ws: 8.19.0
|
ws: 8.19.0
|
||||||
@@ -12673,9 +12673,9 @@ snapshots:
|
|||||||
- bufferutil
|
- bufferutil
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
'@hocuspocus/server@3.4.3(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)':
|
'@hocuspocus/server@3.4.4(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@hocuspocus/common': 3.4.3
|
'@hocuspocus/common': 3.4.4
|
||||||
async-lock: 1.4.1
|
async-lock: 1.4.1
|
||||||
async-mutex: 0.5.0
|
async-mutex: 0.5.0
|
||||||
kleur: 4.1.5
|
kleur: 4.1.5
|
||||||
@@ -12687,11 +12687,11 @@ snapshots:
|
|||||||
- bufferutil
|
- bufferutil
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
'@hocuspocus/transformer@3.4.3(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(y-prosemirror@1.3.7(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29)':
|
'@hocuspocus/transformer@3.4.4(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(y-prosemirror@1.3.7(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
'@tiptap/starter-kit': 3.19.0
|
'@tiptap/starter-kit': 3.17.1
|
||||||
y-prosemirror: 1.3.7(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
y-prosemirror: 1.3.7(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
||||||
yjs: 13.6.29
|
yjs: 13.6.29
|
||||||
|
|
||||||
@@ -14598,195 +14598,195 @@ snapshots:
|
|||||||
'@tanstack/query-core': 5.90.17
|
'@tanstack/query-core': 5.90.17
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@tiptap/core@3.19.0(@tiptap/pm@3.19.0)':
|
'@tiptap/core@3.17.1(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-blockquote@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-blockquote@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-bold@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-bold@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-bubble-menu@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-bubble-menu@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@floating-ui/dom': 1.7.4
|
'@floating-ui/dom': 1.7.4
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tiptap/extension-bullet-list@3.19.0(@tiptap/extension-list@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-bullet-list@3.19.0(@tiptap/extension-list@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/extension-list': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-list': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-code-block@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-code-block@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-code@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-code@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-collaboration-caret@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))':
|
'@tiptap/extension-collaboration-caret@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
'@tiptap/y-tiptap': 3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
'@tiptap/y-tiptap': 3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
||||||
|
|
||||||
'@tiptap/extension-collaboration@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29)':
|
'@tiptap/extension-collaboration@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
'@tiptap/y-tiptap': 3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
'@tiptap/y-tiptap': 3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)
|
||||||
yjs: 13.6.29
|
yjs: 13.6.29
|
||||||
|
|
||||||
'@tiptap/extension-color@3.19.0(@tiptap/extension-text-style@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0)))':
|
'@tiptap/extension-color@3.17.1(@tiptap/extension-text-style@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1)))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/extension-text-style': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-text-style': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
|
|
||||||
'@tiptap/extension-document@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-document@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-dropcursor@3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-dropcursor@3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/extensions': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extensions': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-floating-menu@3.19.0(@floating-ui/dom@1.7.3)(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-floating-menu@3.19.0(@floating-ui/dom@1.7.3)(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@floating-ui/dom': 1.7.3
|
'@floating-ui/dom': 1.7.3
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tiptap/extension-gapcursor@3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-gapcursor@3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/extensions': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extensions': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-hard-break@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-hard-break@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-heading@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-heading@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-highlight@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-highlight@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-history@3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-history@3.17.1(@tiptap/extensions@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/extensions': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extensions': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-horizontal-rule@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-horizontal-rule@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-image@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-image@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-italic@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-italic@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-link@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-link@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
linkifyjs: 4.3.2
|
linkifyjs: 4.3.2
|
||||||
|
|
||||||
'@tiptap/extension-list-item@3.19.0(@tiptap/extension-list@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-list-item@3.19.0(@tiptap/extension-list@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/extension-list': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-list': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-list-keymap@3.19.0(@tiptap/extension-list@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-list-keymap@3.19.0(@tiptap/extension-list@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/extension-list': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-list': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-list@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-list@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-ordered-list@3.19.0(@tiptap/extension-list@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-ordered-list@3.19.0(@tiptap/extension-list@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/extension-list': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-list': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-paragraph@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-paragraph@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-placeholder@3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-placeholder@3.17.1(@tiptap/extensions@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/extensions': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extensions': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-strike@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-strike@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-subscript@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-subscript@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-superscript@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-superscript@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-table@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-table@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/extension-text-align@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-text-align@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-text-style@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-text-style@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-text@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-text@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-typography@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-typography@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-underline@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-underline@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extension-unique-id@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extension-unique-id@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
uuid: 10.0.0
|
uuid: 10.0.0
|
||||||
|
|
||||||
'@tiptap/extension-youtube@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))':
|
'@tiptap/extension-youtube@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
|
|
||||||
'@tiptap/extensions@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/extensions@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/html@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(happy-dom@20.1.0)':
|
'@tiptap/html@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(happy-dom@20.1.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
happy-dom: 20.1.0
|
happy-dom: 20.1.0
|
||||||
|
|
||||||
'@tiptap/pm@3.19.0':
|
'@tiptap/pm@3.17.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
prosemirror-changeset: 2.3.1
|
prosemirror-changeset: 2.3.1
|
||||||
prosemirror-collab: 1.3.1
|
prosemirror-collab: 1.3.1
|
||||||
@@ -14807,10 +14807,10 @@ snapshots:
|
|||||||
prosemirror-transform: 1.10.4
|
prosemirror-transform: 1.10.4
|
||||||
prosemirror-view: 1.40.0
|
prosemirror-view: 1.40.0
|
||||||
|
|
||||||
'@tiptap/react@3.19.0(@floating-ui/dom@1.7.3)(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
'@tiptap/react@3.17.1(@floating-ui/dom@1.7.3)(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
'@types/react': 18.3.12
|
'@types/react': 18.3.12
|
||||||
'@types/react-dom': 18.3.1
|
'@types/react-dom': 18.3.1
|
||||||
'@types/use-sync-external-store': 0.0.6
|
'@types/use-sync-external-store': 0.0.6
|
||||||
@@ -14819,42 +14819,42 @@ snapshots:
|
|||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
use-sync-external-store: 1.6.0(react@18.3.1)
|
use-sync-external-store: 1.6.0(react@18.3.1)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@tiptap/extension-bubble-menu': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-bubble-menu': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-floating-menu': 3.19.0(@floating-ui/dom@1.7.3)(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-floating-menu': 3.19.0(@floating-ui/dom@1.7.3)(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@floating-ui/dom'
|
- '@floating-ui/dom'
|
||||||
|
|
||||||
'@tiptap/starter-kit@3.19.0':
|
'@tiptap/starter-kit@3.17.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-blockquote': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-blockquote': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-bold': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-bold': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-bullet-list': 3.19.0(@tiptap/extension-list@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))
|
'@tiptap/extension-bullet-list': 3.19.0(@tiptap/extension-list@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-code': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-code': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-code-block': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-code-block': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-document': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-document': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-dropcursor': 3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))
|
'@tiptap/extension-dropcursor': 3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-gapcursor': 3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))
|
'@tiptap/extension-gapcursor': 3.19.0(@tiptap/extensions@3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-hard-break': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-hard-break': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-heading': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-heading': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-horizontal-rule': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-horizontal-rule': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-italic': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-italic': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-link': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-link': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-list': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extension-list': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/extension-list-item': 3.19.0(@tiptap/extension-list@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))
|
'@tiptap/extension-list-item': 3.19.0(@tiptap/extension-list@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-list-keymap': 3.19.0(@tiptap/extension-list@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))
|
'@tiptap/extension-list-keymap': 3.19.0(@tiptap/extension-list@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-ordered-list': 3.19.0(@tiptap/extension-list@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0))
|
'@tiptap/extension-ordered-list': 3.19.0(@tiptap/extension-list@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-paragraph': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-paragraph': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-strike': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-strike': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-text': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-text': 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extension-underline': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))
|
'@tiptap/extension-underline': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
|
||||||
'@tiptap/extensions': 3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)
|
'@tiptap/extensions': 3.19.0(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/suggestion@3.19.0(@tiptap/core@3.19.0(@tiptap/pm@3.19.0))(@tiptap/pm@3.19.0)':
|
'@tiptap/suggestion@3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))(@tiptap/pm@3.17.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
|
'@tiptap/core': 3.17.1(@tiptap/pm@3.17.1)
|
||||||
'@tiptap/pm': 3.19.0
|
'@tiptap/pm': 3.17.1
|
||||||
|
|
||||||
'@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)':
|
'@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.29))(yjs@13.6.29)':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||
Reference in New Issue
Block a user