feat: init excalidraw plugin

feat/excalidraw
moonrailgun 2 years ago
parent ae33aa3571
commit 6c7fb3e2ba

@ -1957,6 +1957,35 @@ importers:
specifier: ^5.3.6
version: 5.3.6(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)
server/plugins/com.msgbyte.excalidraw:
dependencies:
tailchat-server-sdk:
specifier: '*'
version: link:../../packages/sdk
devDependencies:
'@types/react':
specifier: 18.0.20
version: 18.0.20
mini-star:
specifier: '*'
version: 1.3.1
server/plugins/com.msgbyte.excalidraw/web/plugins/com.msgbyte.excalidraw:
dependencies:
'@excalidraw/excalidraw':
specifier: ^0.15.2
version: 0.15.2(react-dom@18.2.0)(react@18.2.0)
devDependencies:
'@types/styled-components':
specifier: ^5.1.26
version: 5.1.26
react:
specifier: 18.2.0
version: 18.2.0
styled-components:
specifier: ^5.3.6
version: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)
server/plugins/com.msgbyte.getui:
dependencies:
got:
@ -2714,7 +2743,7 @@ packages:
'@babel/compat-data': 7.18.13
'@babel/core': 7.18.13
'@babel/helper-validator-option': 7.18.6
browserslist: 4.21.3
browserslist: 4.21.5
semver: 6.3.0
/@babel/helper-compilation-targets@7.18.9(@babel/core@7.21.0):
@ -7123,6 +7152,16 @@ packages:
transitivePeerDependencies:
- supports-color
/@excalidraw/excalidraw@0.15.2(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-rTI02kgWSTXiUdIkBxt9u/581F3eXcqQgJdIxmz54TFtG3ughoxO5fr4t7Fr2LZIturBPqfocQHGKZ0t2KLKgw==}
peerDependencies:
react: ^17.0.2 || ^18.2.0
react-dom: ^17.0.2 || ^18.2.0
dependencies:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
/@fastify/busboy@1.1.0:
resolution: {integrity: sha512-Fv854f94v0CzIDllbY3i/0NJPNBRNLDawf3BTYVGCe9VrIIs3Wi7AFx24F9NzCxdf0wyx/x0Q9kEVnvDOPnlxA==}
engines: {node: '>=10.17.0'}
@ -15244,6 +15283,7 @@ packages:
electron-to-chromium: 1.4.310
node-releases: 2.0.10
update-browserslist-db: 1.0.10(browserslist@4.21.3)
dev: true
/browserslist@4.21.5:
resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
@ -34470,6 +34510,7 @@ packages:
browserslist: 4.21.3
escalade: 3.1.1
picocolors: 1.0.0
dev: true
/update-browserslist-db@1.0.10(browserslist@4.21.5):
resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==}

@ -0,0 +1,14 @@
const path = require('path');
module.exports = {
externalDeps: [
'react',
'react-router',
'axios',
'styled-components',
'zustand',
'zustand/middleware/immer',
],
pluginRoot: path.resolve(__dirname, './web'),
outDir: path.resolve(__dirname, '../../public'),
};

@ -0,0 +1,26 @@
import { db } from 'tailchat-server-sdk';
const { getModelForClass, prop, modelOptions, TimeStamps } = db;
@modelOptions({
options: {
customName: 'p_excalidraw',
},
})
export class Excalidraw extends TimeStamps implements db.Base {
_id: db.Types.ObjectId;
id: string;
@prop()
userId: string;
@prop()
dataState: Record<string, any>;
}
export type ExcalidrawDocument = db.DocumentType<Excalidraw>;
const model = getModelForClass(Excalidraw);
export type ExcalidrawModel = typeof model;
export default model;

@ -0,0 +1,20 @@
{
"name": "tailchat-plugin-excalidraw",
"version": "1.0.0",
"main": "index.js",
"author": "moonrailgun",
"description": "Add excalidraw support in Tailchat",
"license": "MIT",
"private": true,
"scripts": {
"build:web": "ministar buildPlugin all",
"build:web:watch": "ministar watchPlugin all"
},
"devDependencies": {
"@types/react": "18.0.20",
"mini-star": "*"
},
"dependencies": {
"tailchat-server-sdk": "*"
}
}

@ -0,0 +1,22 @@
import { TcService, TcDbService } from 'tailchat-server-sdk';
import type { ExcalidrawDocument, ExcalidrawModel } from '../models/excalidraw';
/**
* Excalidraw
*
* Add excalidraw support in Tailchat
*/
interface ExcalidrawService
extends TcService,
TcDbService<ExcalidrawDocument, ExcalidrawModel> {}
class ExcalidrawService extends TcService {
get serviceName() {
return 'plugin:com.msgbyte.excalidraw';
}
onInit() {
this.registerLocalDb(require('../models/excalidraw').default);
}
}
export default ExcalidrawService;

@ -0,0 +1,9 @@
{
"label": "Excalidraw",
"name": "com.msgbyte.excalidraw",
"url": "{BACKEND}/plugins/com.msgbyte.excalidraw/index.js",
"version": "0.0.0",
"author": "moonrailgun",
"description": "Add excalidraw support in Tailchat",
"requireRestart": true
}

@ -0,0 +1,18 @@
{
"name": "@plugins/com.msgbyte.excalidraw",
"main": "src/index.tsx",
"version": "0.0.0",
"description": "Add excalidraw support in Tailchat",
"private": true,
"scripts": {
"sync:declaration": "tailchat declaration github"
},
"dependencies": {
"@excalidraw/excalidraw": "^0.15.2"
},
"devDependencies": {
"@types/styled-components": "^5.1.26",
"react": "18.2.0",
"styled-components": "^5.3.6"
}
}

@ -0,0 +1,11 @@
import React from 'react';
import { Excalidraw } from '@excalidraw/excalidraw';
export const ExcalidrawRender: React.FC = React.memo(() => {
return (
<div style={{ height: '100%', width: '100%' }}>
<Excalidraw initialData={{ elements: [] }} />
</div>
);
});
ExcalidrawRender.displayName = 'ExcalidrawRender';

@ -0,0 +1,7 @@
{
"compilerOptions": {
"esModuleInterop": true,
"jsx": "react",
"importsNotUsedAsValues": "error"
}
}

@ -0,0 +1,2 @@
declare module '@capital/common';
declare module '@capital/component';
Loading…
Cancel
Save