diff --git a/package.json b/package.json
index 3c729a234..23ec38b79 100644
--- a/package.json
+++ b/package.json
@@ -5,6 +5,7 @@
"workspaces": [
"web",
"space",
+ "packages/editor/*",
"packages/*"
],
"scripts": {
diff --git a/packages/editor/package.json b/packages/editor/core/package.json
similarity index 100%
rename from packages/editor/package.json
rename to packages/editor/core/package.json
diff --git a/packages/editor/postcss.config.js b/packages/editor/core/postcss.config.js
similarity index 100%
rename from packages/editor/postcss.config.js
rename to packages/editor/core/postcss.config.js
diff --git a/packages/editor/core/src/index.ts b/packages/editor/core/src/index.ts
new file mode 100644
index 000000000..7e137d3c6
--- /dev/null
+++ b/packages/editor/core/src/index.ts
@@ -0,0 +1,6 @@
+import "@/styles/tailwind.css";
+import "@/styles/editor.css";
+
+export { TiptapEditor, TiptapEditorWithRef } from "@/ui";
+
+export { useEditor } from "@/useEditor";
diff --git a/packages/editor/core/src/lib/utils.ts b/packages/editor/core/src/lib/utils.ts
new file mode 100644
index 000000000..1c985922b
--- /dev/null
+++ b/packages/editor/core/src/lib/utils.ts
@@ -0,0 +1,15 @@
+import { clsx, type ClassValue } from "clsx";
+import { twMerge } from "tailwind-merge";
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs));
+}
+
+export const findTableAncestor = (
+ node: Node | null
+): HTMLTableElement | null => {
+ while (node !== null && node.nodeName !== "TABLE") {
+ node = node.parentNode;
+ }
+ return node as HTMLTableElement;
+};
\ No newline at end of file
diff --git a/packages/editor/src/styles/editor.css b/packages/editor/core/src/styles/editor.css
similarity index 100%
rename from packages/editor/src/styles/editor.css
rename to packages/editor/core/src/styles/editor.css
diff --git a/packages/editor/src/styles/tailwind.css b/packages/editor/core/src/styles/tailwind.css
similarity index 100%
rename from packages/editor/src/styles/tailwind.css
rename to packages/editor/core/src/styles/tailwind.css
diff --git a/packages/editor/src/types/delete-image.ts b/packages/editor/core/src/types/delete-image.ts
similarity index 100%
rename from packages/editor/src/types/delete-image.ts
rename to packages/editor/core/src/types/delete-image.ts
diff --git a/packages/editor/src/types/upload-image.ts b/packages/editor/core/src/types/upload-image.ts
similarity index 100%
rename from packages/editor/src/types/upload-image.ts
rename to packages/editor/core/src/types/upload-image.ts
diff --git a/packages/editor/src/ui/editor/extensions/image/image-resize.tsx b/packages/editor/core/src/ui/extensions/image/image-resize.tsx
similarity index 100%
rename from packages/editor/src/ui/editor/extensions/image/image-resize.tsx
rename to packages/editor/core/src/ui/extensions/image/image-resize.tsx
diff --git a/packages/editor/src/ui/light-editor/extensions/image/updated-image.tsx b/packages/editor/core/src/ui/extensions/image/updated-image.tsx
similarity index 77%
rename from packages/editor/src/ui/light-editor/extensions/image/updated-image.tsx
rename to packages/editor/core/src/ui/extensions/image/updated-image.tsx
index 2ba977f57..9157e8905 100644
--- a/packages/editor/src/ui/light-editor/extensions/image/updated-image.tsx
+++ b/packages/editor/core/src/ui/extensions/image/updated-image.tsx
@@ -1,6 +1,6 @@
import Image from "@tiptap/extension-image";
-import TrackImageDeletionPlugin from "@/ui/editor/plugins/delete-image";
-import UploadImagesPlugin from "@/ui/editor/plugins/upload-image";
+import TrackImageDeletionPlugin from "@/ui/plugins/delete-image";
+import UploadImagesPlugin from "@/ui/plugins/upload-image";
import { DeleteImage } from "@/types/delete-image";
const UpdatedImage = (deleteImage: DeleteImage) => Image.extend({
diff --git a/packages/editor/src/ui/light-editor/extensions/index.tsx b/packages/editor/core/src/ui/extensions/index.tsx
similarity index 91%
rename from packages/editor/src/ui/light-editor/extensions/index.tsx
rename to packages/editor/core/src/ui/extensions/index.tsx
index 5fd7f9ad1..f018fab49 100644
--- a/packages/editor/src/ui/light-editor/extensions/index.tsx
+++ b/packages/editor/core/src/ui/extensions/index.tsx
@@ -12,18 +12,18 @@ import Highlight from "@tiptap/extension-highlight";
import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight";
import { InputRule } from "@tiptap/core";
import Gapcursor from "@tiptap/extension-gapcursor";
-import { Table } from "@/ui/editor/extensions/table/table";
-import { TableHeader } from "@/ui/editor/extensions/table/table-header";
+import { Table } from "@/ui/extensions/table/table";
+import { TableHeader } from "@/ui/extensions/table/table-header";
import { TableRow } from "@tiptap/extension-table-row";
-import { CustomTableCell } from "@/ui/editor/extensions/table/table-cell";
+import { CustomTableCell } from "@/ui/extensions/table/table-cell";
-import UpdatedImage from "@/ui/editor/extensions/image/updated-image";
-import SlashCommand from "@/ui/editor/extensions/slash-command";
+import UpdatedImage from "@/ui/extensions/image/updated-image";
+import SlashCommand from "@/ui/extensions/slash-command";
import { DeleteImage } from "@/types/delete-image";
import { UploadImage } from "@/types/upload-image";
-import isValidHttpUrl from "@/ui/editor/menus/bubble-menu/utils"
+import isValidHttpUrl from "@/ui/menus/bubble-menu/utils"
import ts from "highlight.js/lib/languages/typescript";
import { lowlight } from "lowlight/lib/core";
diff --git a/packages/editor/src/ui/editor/extensions/slash-command.tsx b/packages/editor/core/src/ui/extensions/slash-command.tsx
similarity index 99%
rename from packages/editor/src/ui/editor/extensions/slash-command.tsx
rename to packages/editor/core/src/ui/extensions/slash-command.tsx
index 4fba7af5f..3813c1def 100644
--- a/packages/editor/src/ui/editor/extensions/slash-command.tsx
+++ b/packages/editor/core/src/ui/extensions/slash-command.tsx
@@ -17,7 +17,7 @@ import {
ImageIcon,
Table,
} from "lucide-react";
-import { startImageUpload } from "@/ui/editor/plugins/upload-image";
+import { startImageUpload } from "@/ui/plugins/upload-image";
import { cn } from "@/lib/utils";
import { UploadImage } from "@/types/upload-image";
diff --git a/packages/editor/src/ui/editor/extensions/table/table-cell.ts b/packages/editor/core/src/ui/extensions/table/table-cell.ts
similarity index 100%
rename from packages/editor/src/ui/editor/extensions/table/table-cell.ts
rename to packages/editor/core/src/ui/extensions/table/table-cell.ts
diff --git a/packages/editor/src/ui/editor/extensions/table/table-header.ts b/packages/editor/core/src/ui/extensions/table/table-header.ts
similarity index 100%
rename from packages/editor/src/ui/editor/extensions/table/table-header.ts
rename to packages/editor/core/src/ui/extensions/table/table-header.ts
diff --git a/packages/editor/src/ui/editor/extensions/table/table.ts b/packages/editor/core/src/ui/extensions/table/table.ts
similarity index 100%
rename from packages/editor/src/ui/editor/extensions/table/table.ts
rename to packages/editor/core/src/ui/extensions/table/table.ts
diff --git a/packages/editor/src/ui/editor/index.tsx b/packages/editor/core/src/ui/index.tsx
similarity index 85%
rename from packages/editor/src/ui/editor/index.tsx
rename to packages/editor/core/src/ui/index.tsx
index 286768f51..7eb332a43 100644
--- a/packages/editor/src/ui/editor/index.tsx
+++ b/packages/editor/core/src/ui/index.tsx
@@ -3,11 +3,11 @@ import * as React from 'react';
import { useImperativeHandle, useRef, forwardRef } from "react";
import { useEditor, EditorContent, Editor } from "@tiptap/react";
import { useDebouncedCallback } from "use-debounce";
-import { TableMenu } from '@/ui/editor/menus/table-menu';
-import { TiptapExtensions } from '@/ui/editor/extensions';
-import { EditorBubbleMenu } from '@/ui/editor/menus/bubble-menu';
-import { ImageResizer } from '@/ui/editor/extensions/image/image-resize';
-import { TiptapEditorProps } from '@/ui/editor/props';
+import { TableMenu } from '@/ui/menus/table-menu';
+import { TiptapExtensions } from '@/ui/extensions';
+import { EditorBubbleMenu } from '@/ui/menus/bubble-menu';
+import { ImageResizer } from '@/ui/extensions/image/image-resize';
+import { TiptapEditorProps } from '@/ui/props';
import { UploadImage } from '@/types/upload-image';
import { DeleteImage } from '@/types/delete-image';
import { cn } from '@/lib/utils';
@@ -28,6 +28,13 @@ interface ITiptapEditor {
editable?: boolean;
forwardedRef?: any;
debouncedUpdatesEnabled?: boolean;
+ accessValue: string;
+ onAccessChange: (accessKey: string) => void;
+ commentAccess: {
+ icon: string;
+ key: string;
+ label: "Private" | "Public";
+ }[];
}
interface TiptapProps extends ITiptapEditor {
@@ -56,6 +63,9 @@ const TiptapEditor = ({
borderOnFocus,
customClassName,
forwardedRef,
+ accessValue,
+ onAccessChange,
+ commentAccess,
}: TiptapProps) => {
const editor = useEditor({
editable: editable ?? true,
@@ -117,8 +127,8 @@ const TiptapEditor = ({
{editor?.isActive("image") && }
{editor && editable !== false &&
- (
diff --git a/packages/editor/src/ui/editor/menus/bubble-menu/index.tsx b/packages/editor/core/src/ui/menus/bubble-menu/index.tsx
similarity index 100%
rename from packages/editor/src/ui/editor/menus/bubble-menu/index.tsx
rename to packages/editor/core/src/ui/menus/bubble-menu/index.tsx
diff --git a/packages/editor/src/ui/editor/menus/bubble-menu/link-selector.tsx b/packages/editor/core/src/ui/menus/bubble-menu/link-selector.tsx
similarity index 97%
rename from packages/editor/src/ui/editor/menus/bubble-menu/link-selector.tsx
rename to packages/editor/core/src/ui/menus/bubble-menu/link-selector.tsx
index 4f8284506..f3730c4dc 100644
--- a/packages/editor/src/ui/editor/menus/bubble-menu/link-selector.tsx
+++ b/packages/editor/core/src/ui/menus/bubble-menu/link-selector.tsx
@@ -2,7 +2,7 @@ import { cn } from "@/lib/utils";
import { Editor } from "@tiptap/core";
import { Check, Trash } from "lucide-react";
import { Dispatch, FC, SetStateAction, useCallback, useEffect, useRef } from "react";
-import isValidHttpUrl from "@/ui/editor/menus/bubble-menu/utils";
+import isValidHttpUrl from "@/ui/menus/bubble-menu/utils";
interface LinkSelectorProps {
editor: Editor;
diff --git a/packages/editor/src/ui/editor/menus/bubble-menu/node-selector.tsx b/packages/editor/core/src/ui/menus/bubble-menu/node-selector.tsx
similarity index 100%
rename from packages/editor/src/ui/editor/menus/bubble-menu/node-selector.tsx
rename to packages/editor/core/src/ui/menus/bubble-menu/node-selector.tsx
diff --git a/packages/editor/src/ui/editor/menus/bubble-menu/utils/index.tsx b/packages/editor/core/src/ui/menus/bubble-menu/utils/index.tsx
similarity index 100%
rename from packages/editor/src/ui/editor/menus/bubble-menu/utils/index.tsx
rename to packages/editor/core/src/ui/menus/bubble-menu/utils/index.tsx
diff --git a/packages/editor/core/src/ui/menus/fixed-menu/icon.tsx b/packages/editor/core/src/ui/menus/fixed-menu/icon.tsx
new file mode 100644
index 000000000..c0006b3f2
--- /dev/null
+++ b/packages/editor/core/src/ui/menus/fixed-menu/icon.tsx
@@ -0,0 +1,13 @@
+import React from "react";
+
+type Props = {
+ iconName: string;
+ className?: string;
+};
+
+export const Icon: React.FC = ({ iconName, className = "" }) => (
+
+ {iconName}
+
+);
+
diff --git a/packages/editor/src/ui/editor/menus/fixed-menu/index.tsx b/packages/editor/core/src/ui/menus/fixed-menu/index.tsx
similarity index 59%
rename from packages/editor/src/ui/editor/menus/fixed-menu/index.tsx
rename to packages/editor/core/src/ui/menus/fixed-menu/index.tsx
index 31a7ad90d..7d00b65e6 100644
--- a/packages/editor/src/ui/editor/menus/fixed-menu/index.tsx
+++ b/packages/editor/core/src/ui/menus/fixed-menu/index.tsx
@@ -1,8 +1,9 @@
-import { BubbleMenu, BubbleMenuProps } from "@tiptap/react";
-import { FC, useState } from "react";
+import { Editor } from "@tiptap/react";
import { BoldIcon, ItalicIcon, UnderlineIcon, StrikethroughIcon, CodeIcon } from "lucide-react";
import { cn } from "@/lib/utils";
+import { Tooltip } from "../table-menu/tooltip";
+import { Icon } from "./icon";
export interface BubbleMenuItem {
name: string;
@@ -11,9 +12,18 @@ export interface BubbleMenuItem {
icon: typeof BoldIcon;
}
-type EditorBubbleMenuProps = Omit;
+type EditorBubbleMenuProps = {
+ editor: Editor;
+ accessValue: string;
+ onAccessChange: (accessKey: string) => void;
+ commentAccess: {
+ icon: string;
+ key: string;
+ label: "Private" | "Public";
+ }[] | undefined;
+}
-export const FixedMenu: FC = (props: any) => {
+export const FixedMenu = (props: EditorBubbleMenuProps) => {
const items: BubbleMenuItem[] = [
{
name: "bold",
@@ -47,12 +57,36 @@ export const FixedMenu: FC = (props: any) => {
},
];
+ const handleAccessChange = (accessKey: string) => {
+ props.onAccessChange(accessKey);
+ };
+
return (
+
+ {props?.commentAccess?.map((access) => (
+
+
+
+ ))}
+
{items.map((item, index) => (
- }
- position={position}
- renderTarget={({ isOpen: isTooltipOpen, ref: eleReference, ...tooltipProps }) =>
- React.cloneElement(children, { ref: eleReference, ...tooltipProps, ...children.props })
- }
- />
- );
-};
diff --git a/packages/editor/src/ui/light-editor/plugins/delete-image.tsx b/packages/editor/src/ui/light-editor/plugins/delete-image.tsx
deleted file mode 100644
index 9204481a8..000000000
--- a/packages/editor/src/ui/light-editor/plugins/delete-image.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import { EditorState, Plugin, PluginKey, Transaction } from "@tiptap/pm/state";
-import { Node as ProseMirrorNode } from "@tiptap/pm/model";
-import { DeleteImage } from "@/types/delete-image";
-
-const deleteKey = new PluginKey("delete-image");
-const IMAGE_NODE_TYPE = "image";
-
-interface ImageNode extends ProseMirrorNode {
- attrs: {
- src: string;
- id: string;
- };
-}
-
-const TrackImageDeletionPlugin = (deleteImage: DeleteImage): Plugin =>
- new Plugin({
- key: deleteKey,
- appendTransaction: (transactions: readonly Transaction[], oldState: EditorState, newState: EditorState) => {
- const newImageSources = new Set();
- newState.doc.descendants((node) => {
- if (node.type.name === IMAGE_NODE_TYPE) {
- newImageSources.add(node.attrs.src);
- }
- });
-
- transactions.forEach((transaction) => {
- if (!transaction.docChanged) return;
-
- const removedImages: ImageNode[] = [];
-
- oldState.doc.descendants((oldNode, oldPos) => {
- if (oldNode.type.name !== IMAGE_NODE_TYPE) return;
- if (oldPos < 0 || oldPos > newState.doc.content.size) return;
- if (!newState.doc.resolve(oldPos).parent) return;
-
- const newNode = newState.doc.nodeAt(oldPos);
-
- // Check if the node has been deleted or replaced
- if (!newNode || newNode.type.name !== IMAGE_NODE_TYPE) {
- if (!newImageSources.has(oldNode.attrs.src)) {
- removedImages.push(oldNode as ImageNode);
- }
- }
- });
-
- removedImages.forEach(async (node) => {
- const src = node.attrs.src;
- await onNodeDeleted(src, deleteImage);
- });
- });
-
- return null;
- },
- });
-
-export default TrackImageDeletionPlugin;
-
-async function onNodeDeleted(src: string, deleteImage: DeleteImage): Promise
{
- try {
- const assetUrlWithWorkspaceId = new URL(src).pathname.substring(1);
- const resStatus = await deleteImage(assetUrlWithWorkspaceId);
- if (resStatus === 204) {
- console.log("Image deleted successfully");
- }
- } catch (error) {
- console.error("Error deleting image: ", error);
- }
-}
diff --git a/packages/editor/src/ui/light-editor/plugins/upload-image.tsx b/packages/editor/src/ui/light-editor/plugins/upload-image.tsx
deleted file mode 100644
index 4c3bbf9a8..000000000
--- a/packages/editor/src/ui/light-editor/plugins/upload-image.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import { UploadImage } from "@/types/upload-image";
-import { EditorState, Plugin, PluginKey } from "@tiptap/pm/state";
-import { Decoration, DecorationSet, EditorView } from "@tiptap/pm/view";
-
-const uploadKey = new PluginKey("upload-image");
-
-const UploadImagesPlugin = () =>
- new Plugin({
- key: uploadKey,
- state: {
- init() {
- return DecorationSet.empty;
- },
- apply(tr, set) {
- set = set.map(tr.mapping, tr.doc);
- // See if the transaction adds or removes any placeholders
- const action = tr.getMeta(uploadKey);
- if (action && action.add) {
- const { id, pos, src } = action.add;
-
- const placeholder = document.createElement("div");
- placeholder.setAttribute("class", "img-placeholder");
- const image = document.createElement("img");
- image.setAttribute("class", "opacity-10 rounded-lg border border-custom-border-300");
- image.src = src;
- placeholder.appendChild(image);
- const deco = Decoration.widget(pos + 1, placeholder, {
- id,
- });
- set = set.add(tr.doc, [deco]);
- } else if (action && action.remove) {
- set = set.remove(set.find(undefined, undefined, (spec) => spec.id == action.remove.id));
- }
- return set;
- },
- },
- props: {
- decorations(state) {
- return this.getState(state);
- },
- },
- });
-
-export default UploadImagesPlugin;
-
-function findPlaceholder(state: EditorState, id: {}) {
- const decos = uploadKey.getState(state);
- const found = decos.find(
- undefined,
- undefined,
- (spec: { id: number | undefined }) => spec.id == id
- );
- return found.length ? found[0].from : null;
-}
-
-export async function startImageUpload(
- file: File,
- view: EditorView,
- pos: number,
- workspaceSlug: string,
- uploadFile: UploadImage,
- setIsSubmitting?: (isSubmitting: "submitting" | "submitted" | "saved") => void
-) {
- if (!file.type.includes("image/")) {
- return;
- }
-
- const id = {};
-
- const tr = view.state.tr;
- if (!tr.selection.empty) tr.deleteSelection();
-
- const reader = new FileReader();
- reader.readAsDataURL(file);
- reader.onload = () => {
- tr.setMeta(uploadKey, {
- add: {
- id,
- pos,
- src: reader.result,
- },
- });
- view.dispatch(tr);
- };
-
- if (!workspaceSlug) {
- return;
- }
- setIsSubmitting?.("submitting");
- const src = await UploadImageHandler(file, workspaceSlug, uploadFile);
- const { schema } = view.state;
- pos = findPlaceholder(view.state, id);
-
- if (pos == null) return;
- const imageSrc = typeof src === "object" ? reader.result : src;
-
- const node = schema.nodes.image.create({ src: imageSrc });
- const transaction = view.state.tr
- .replaceWith(pos, pos, node)
- .setMeta(uploadKey, { remove: { id } });
- view.dispatch(transaction);
-}
-
-const UploadImageHandler = (file: File, workspaceSlug: string,
- uploadFile: UploadImage
-): Promise => {
- if (!workspaceSlug) {
- return Promise.reject("Workspace slug is missing");
- }
- try {
- const formData = new FormData();
- formData.append("asset", file);
- formData.append("attributes", JSON.stringify({}));
-
- return new Promise(async (resolve, reject) => {
- try {
- const imageUrl = await uploadFile(workspaceSlug, formData)
- .then((response: { asset: string }) => response.asset);
-
- const image = new Image();
- image.src = imageUrl;
- image.onload = () => {
- resolve(imageUrl);
- };
- } catch (error) {
- if (error instanceof Error) {
- console.log(error.message);
- }
- reject(error);
- }
- });
- } catch (error) {
- if (error instanceof Error) {
- console.log(error.message);
- }
- return Promise.reject(error);
- }
-};
diff --git a/web/components/issues/comment/add-comment.tsx b/web/components/issues/comment/add-comment.tsx
index 78b38e1d3..76a45faa4 100644
--- a/web/components/issues/comment/add-comment.tsx
+++ b/web/components/issues/comment/add-comment.tsx
@@ -22,7 +22,12 @@ type Props = {
showAccessSpecifier?: boolean;
};
-const commentAccess = [
+type commentAccessType = {
+ icon: string;
+ key: string;
+ label: "Private" | "Public";
+}
+const commentAccess: commentAccessType[] = [
{
icon: "lock",
key: "INTERNAL",
@@ -67,51 +72,30 @@ export const AddComment: React.FC = ({
(
- " : value}
- customClassName="p-3 min-h-[100px] shadow-sm"
- debouncedUpdatesEnabled={false}
- onChange={(comment_json: Object, comment_html: string) => onChange(comment_html)}
+ render={({ field: { onChange, value } }) => (
+ (
+ " : commentValue}
+ customClassName="p-3 min-h-[100px] shadow-sm"
+ debouncedUpdatesEnabled={false}
+ onChange={(comment_json: Object, comment_html: string) => onCommentChange(comment_html)}
+ accessValue={value}
+ onAccessChange={onChange}
+ commentAccess={commentAccess}
+ />
+ )}
/>
)}
/>
- {showAccessSpecifier && (
-
-
(
-
- {commentAccess.map((access) => (
-
- onChange(access.key)}
- className={`grid place-items-center p-1 hover:bg-custom-background-80 ${value === access.key ? "bg-custom-background-80" : ""
- }`}
- >
-
-
-
- ))}
-
- )}
- />
-
- )}
diff --git a/yarn.lock b/yarn.lock
index 9ec69da91..d92d076bf 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2808,7 +2808,7 @@
dependencies:
"@types/react" "*"
-"@types/react@*", "@types/react@^18.0.17":
+"@types/react@*", "@types/react@18.0.15", "@types/react@18.0.28", "@types/react@18.2.0", "@types/react@^18.0.17":
version "18.2.0"
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.0.tgz#15cda145354accfc09a18d2f2305f9fc099ada21"
integrity sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==
@@ -2817,24 +2817,6 @@
"@types/scheduler" "*"
csstype "^3.0.2"
-"@types/react@18.0.15":
- version "18.0.15"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.15.tgz#d355644c26832dc27f3e6cbf0c4f4603fc4ab7fe"
- integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==
- dependencies:
- "@types/prop-types" "*"
- "@types/scheduler" "*"
- csstype "^3.0.2"
-
-"@types/react@18.0.28":
- version "18.0.28"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065"
- integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==
- dependencies:
- "@types/prop-types" "*"
- "@types/scheduler" "*"
- csstype "^3.0.2"
-
"@types/reactcss@*":
version "1.2.6"
resolved "https://registry.yarnpkg.com/@types/reactcss/-/reactcss-1.2.6.tgz#133c1e7e896f2726370d1d5a26bf06a30a038bcc"