update 0.9.3
This commit is contained in:
@@ -1,5 +1,13 @@
|
|||||||
## changelog
|
## changelog
|
||||||
|
|
||||||
|
## 0.9.3
|
||||||
|
|
||||||
|
增加双击置入画布。
|
||||||
|
|
||||||
|
变更元素初始focus状态。
|
||||||
|
|
||||||
|
存在元素宽高,则置入时定位于元素中心。
|
||||||
|
|
||||||
## 0.9.2
|
## 0.9.2
|
||||||
|
|
||||||
增加远程组件调用全流程,component中增加url属性,便于script加载。
|
增加远程组件调用全流程,component中增加url属性,便于script加载。
|
||||||
|
@@ -4,6 +4,14 @@ order: 1
|
|||||||
---
|
---
|
||||||
## changelog
|
## changelog
|
||||||
|
|
||||||
|
## 0.9.3
|
||||||
|
|
||||||
|
增加双击置入画布。
|
||||||
|
|
||||||
|
变更元素初始focus状态。
|
||||||
|
|
||||||
|
存在元素宽高,则置入时定位于元素中心。
|
||||||
|
|
||||||
## 0.9.2
|
## 0.9.2
|
||||||
|
|
||||||
增加远程组件调用全流程,component中增加url属性,便于script加载。
|
增加远程组件调用全流程,component中增加url属性,便于script加载。
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "0.9.2",
|
"version": "0.9.3",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"module": "dist/dooringx-lib.esm.js",
|
"module": "dist/dooringx-lib.esm.js",
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
* @Author: yehuozhili
|
* @Author: yehuozhili
|
||||||
* @Date: 2021-02-04 10:32:45
|
* @Date: 2021-02-04 10:32:45
|
||||||
* @LastEditors: yehuozhili
|
* @LastEditors: yehuozhili
|
||||||
* @LastEditTime: 2021-09-28 21:28:41
|
* @LastEditTime: 2021-10-07 12:35:38
|
||||||
* @FilePath: \dooringx\packages\dooringx-lib\src\components\leftConfig.tsx
|
* @FilePath: \dooringx\packages\dooringx-lib\src\components\leftConfig.tsx
|
||||||
*/
|
*/
|
||||||
import React, { ReactNode, useEffect, useMemo, useState } from 'react';
|
import React, { ReactNode, useEffect, useMemo, useState } from 'react';
|
||||||
@@ -109,7 +109,7 @@ function LeftConfig(props: LeftConfigProps) {
|
|||||||
<div
|
<div
|
||||||
className={`${styles.coitem} yh-left-item-wrap`}
|
className={`${styles.coitem} yh-left-item-wrap`}
|
||||||
key={index}
|
key={index}
|
||||||
{...dragEventResolve(v)}
|
{...dragEventResolve(v, props.config)}
|
||||||
>
|
>
|
||||||
<div className={`${styles.redbox} yh-left-item-img-wrap`}>
|
<div className={`${styles.redbox} yh-left-item-img-wrap`}>
|
||||||
{v.imgCustom ? (
|
{v.imgCustom ? (
|
||||||
@@ -140,7 +140,7 @@ function LeftConfig(props: LeftConfigProps) {
|
|||||||
<div
|
<div
|
||||||
className={`${styles.coitem} yh-left-item-wrap`}
|
className={`${styles.coitem} yh-left-item-wrap`}
|
||||||
key={index}
|
key={index}
|
||||||
{...dragEventResolve(v)}
|
{...dragEventResolve(v, props.config)}
|
||||||
>
|
>
|
||||||
<div className={`${styles.redbox} yh-left-item-img-wrap`}>
|
<div className={`${styles.redbox} yh-left-item-img-wrap`}>
|
||||||
{v.imgCustom ? (
|
{v.imgCustom ? (
|
||||||
|
@@ -2,15 +2,23 @@
|
|||||||
* @Author: yehuozhili
|
* @Author: yehuozhili
|
||||||
* @Date: 2021-03-14 04:29:09
|
* @Date: 2021-03-14 04:29:09
|
||||||
* @LastEditors: yehuozhili
|
* @LastEditors: yehuozhili
|
||||||
* @LastEditTime: 2021-08-06 10:24:32
|
* @LastEditTime: 2021-10-07 12:45:49
|
||||||
* @FilePath: \dooringx\packages\dooringx-lib\src\core\components\createBlock.ts
|
* @FilePath: \dooringx\packages\dooringx-lib\src\core\components\createBlock.ts
|
||||||
*/
|
*/
|
||||||
|
import { UserConfig } from '../..';
|
||||||
|
import { innerRemoveFocus } from '../focusHandler';
|
||||||
import { IBlockType } from '../store/storetype';
|
import { IBlockType } from '../store/storetype';
|
||||||
import { createUid } from '../utils';
|
import { createUid } from '../utils';
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
import { ComponentItem } from './componentItem';
|
import { ComponentItem } from './componentItem';
|
||||||
|
|
||||||
export function createBlock(top: number, left: number, ComponentItem: ComponentItem): IBlockType {
|
export function createBlock(
|
||||||
|
top: number,
|
||||||
|
left: number,
|
||||||
|
ComponentItem: ComponentItem,
|
||||||
|
config: UserConfig
|
||||||
|
): IBlockType {
|
||||||
|
innerRemoveFocus(config);
|
||||||
return {
|
return {
|
||||||
id: createUid(ComponentItem.name),
|
id: createUid(ComponentItem.name),
|
||||||
name: ComponentItem.name,
|
name: ComponentItem.name,
|
||||||
@@ -19,7 +27,7 @@ export function createBlock(top: number, left: number, ComponentItem: ComponentI
|
|||||||
zIndex: ComponentItem.initData.zIndex || 0,
|
zIndex: ComponentItem.initData.zIndex || 0,
|
||||||
props: ComponentItem.initData.props || {},
|
props: ComponentItem.initData.props || {},
|
||||||
resize: ComponentItem.initData.resize || ComponentItem.resize,
|
resize: ComponentItem.initData.resize || ComponentItem.resize,
|
||||||
focus: false,
|
focus: ComponentItem.initData.focus ?? true,
|
||||||
position: ComponentItem.initData.position || 'absolute',
|
position: ComponentItem.initData.position || 'absolute',
|
||||||
display: ComponentItem.initData.display || 'block',
|
display: ComponentItem.initData.display || 'block',
|
||||||
width: ComponentItem.initData.width,
|
width: ComponentItem.initData.width,
|
||||||
|
@@ -2,10 +2,10 @@
|
|||||||
* @Author: yehuozhili
|
* @Author: yehuozhili
|
||||||
* @Date: 2021-03-14 04:29:09
|
* @Date: 2021-03-14 04:29:09
|
||||||
* @LastEditors: yehuozhili
|
* @LastEditors: yehuozhili
|
||||||
* @LastEditTime: 2021-07-26 20:42:16
|
* @LastEditTime: 2021-10-07 12:45:30
|
||||||
* @FilePath: \dooringx\packages\dooringx-lib\src\core\crossDrag\index.ts
|
* @FilePath: \dooringx\packages\dooringx-lib\src\core\crossDrag\index.ts
|
||||||
*/
|
*/
|
||||||
import { DragEvent, ReactNode } from 'react';
|
import React, { DragEvent, ReactNode } from 'react';
|
||||||
import { createBlock } from '../components/createBlock';
|
import { createBlock } from '../components/createBlock';
|
||||||
import { IBlockType } from '../store/storetype';
|
import { IBlockType } from '../store/storetype';
|
||||||
import { deepCopy } from '../utils';
|
import { deepCopy } from '../utils';
|
||||||
@@ -28,7 +28,58 @@ export interface LeftRegistComponentMapItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let currentDrag: LeftRegistComponentMapItem | null = null;
|
let currentDrag: LeftRegistComponentMapItem | null = null;
|
||||||
export const dragEventResolve = function (item: LeftRegistComponentMapItem) {
|
|
||||||
|
function resolveDrop(
|
||||||
|
config: UserConfig,
|
||||||
|
item: LeftRegistComponentMapItem,
|
||||||
|
e: DragEvent<HTMLDivElement> | React.MouseEvent,
|
||||||
|
x: number,
|
||||||
|
y: number,
|
||||||
|
dbclick: boolean = false
|
||||||
|
) {
|
||||||
|
const componentRegister = config.getComponentRegister();
|
||||||
|
const store = config.getStore();
|
||||||
|
const origin = componentRegister.getComp(item.component);
|
||||||
|
if (!origin) {
|
||||||
|
console.log(item.component, 'wait the chunk pull compeletely and retry');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const target = e.target as HTMLElement;
|
||||||
|
let newblock: IBlockType;
|
||||||
|
//如果有宽高,那么让其在中间
|
||||||
|
let fixX = x;
|
||||||
|
let fixY = y;
|
||||||
|
if (origin.initData.width && typeof origin.initData.width === 'number') {
|
||||||
|
fixX = x - origin.initData.width / 2;
|
||||||
|
}
|
||||||
|
if (origin.initData.height && typeof origin.initData.height === 'number') {
|
||||||
|
fixY = y - origin.initData.height / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!origin.needPosition) {
|
||||||
|
newblock = createBlock(
|
||||||
|
origin.initData.top ?? fixY,
|
||||||
|
origin.initData.left ?? fixX,
|
||||||
|
origin,
|
||||||
|
config
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
if (dbclick) {
|
||||||
|
newblock = createBlock(fixY, fixX, origin, config);
|
||||||
|
} else {
|
||||||
|
if (target.id !== 'yh-container') {
|
||||||
|
newblock = createBlock(fixY + target.offsetTop, fixX + target.offsetLeft, origin, config);
|
||||||
|
} else {
|
||||||
|
newblock = createBlock(fixY, fixX, origin, config);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const data = deepCopy(store.getData());
|
||||||
|
data.block.push(newblock);
|
||||||
|
store.setData({ ...data });
|
||||||
|
}
|
||||||
|
|
||||||
|
export const dragEventResolve = function (item: LeftRegistComponentMapItem, config: UserConfig) {
|
||||||
return {
|
return {
|
||||||
draggable: true,
|
draggable: true,
|
||||||
onDragStart: () => {
|
onDragStart: () => {
|
||||||
@@ -39,12 +90,16 @@ export const dragEventResolve = function (item: LeftRegistComponentMapItem) {
|
|||||||
},
|
},
|
||||||
onDrop: () => {},
|
onDrop: () => {},
|
||||||
onDragEnd: () => {},
|
onDragEnd: () => {},
|
||||||
|
onDoubleClick: (e: React.MouseEvent) => {
|
||||||
|
const container = config.getStore().getData().container;
|
||||||
|
const x = container.width / 2;
|
||||||
|
const y = container.height / 2;
|
||||||
|
resolveDrop(config, item, e, x, y, true);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const containerDragResolve = (config: UserConfig) => {
|
export const containerDragResolve = (config: UserConfig) => {
|
||||||
const store = config.getStore();
|
|
||||||
const componentRegister = config.getComponentRegister();
|
|
||||||
return {
|
return {
|
||||||
onDragStart: () => {},
|
onDragStart: () => {},
|
||||||
onDragOver: (e: DragEvent<HTMLDivElement>) => {
|
onDragOver: (e: DragEvent<HTMLDivElement>) => {
|
||||||
@@ -55,30 +110,7 @@ export const containerDragResolve = (config: UserConfig) => {
|
|||||||
const offestY = Math.round(e.nativeEvent.offsetY);
|
const offestY = Math.round(e.nativeEvent.offsetY);
|
||||||
//drop后修改store,
|
//drop后修改store,
|
||||||
if (currentDrag) {
|
if (currentDrag) {
|
||||||
// 还需要拿到注册的组件状态
|
resolveDrop(config, currentDrag, e, offsetX, offestY);
|
||||||
const origin = componentRegister.getComp(currentDrag.component);
|
|
||||||
if (!origin) {
|
|
||||||
console.log(currentDrag.component, 'wait the chunk pull compeletely and retry');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const target = e.target as HTMLElement;
|
|
||||||
let newblock: IBlockType;
|
|
||||||
if (!origin.needPosition) {
|
|
||||||
newblock = createBlock(
|
|
||||||
origin.initData.top ?? offestY,
|
|
||||||
origin.initData.left ?? offsetX,
|
|
||||||
origin
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
if (target.id !== 'yh-container') {
|
|
||||||
newblock = createBlock(offestY + target.offsetTop, offsetX + target.offsetLeft, origin);
|
|
||||||
} else {
|
|
||||||
newblock = createBlock(offestY, offsetX, origin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const data = deepCopy(store.getData());
|
|
||||||
data.block.push(newblock);
|
|
||||||
store.setData({ ...data });
|
|
||||||
}
|
}
|
||||||
currentDrag = null;
|
currentDrag = null;
|
||||||
},
|
},
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
* @Author: yehuozhili
|
* @Author: yehuozhili
|
||||||
* @Date: 2021-03-14 04:29:09
|
* @Date: 2021-03-14 04:29:09
|
||||||
* @LastEditors: yehuozhili
|
* @LastEditors: yehuozhili
|
||||||
* @LastEditTime: 2021-09-28 17:14:16
|
* @LastEditTime: 2021-10-07 12:40:32
|
||||||
* @FilePath: \dooringx\packages\dooringx-lib\src\core\focusHandler\index.tsx
|
* @FilePath: \dooringx\packages\dooringx-lib\src\core\focusHandler\index.tsx
|
||||||
*/
|
*/
|
||||||
import { innerDragState } from '../innerDrag/state';
|
import { innerDragState } from '../innerDrag/state';
|
||||||
@@ -12,10 +12,8 @@ import { selectRangeMouseDown } from '../selectRange';
|
|||||||
import { unmountContextMenu } from '../contextMenu';
|
import { unmountContextMenu } from '../contextMenu';
|
||||||
import UserConfig from '../../config';
|
import UserConfig from '../../config';
|
||||||
|
|
||||||
export function containerFocusRemove(config: UserConfig) {
|
function resolveRemove(config: UserConfig) {
|
||||||
const store = config.getStore();
|
const store = config.getStore();
|
||||||
|
|
||||||
const onMouseDown = (e: React.MouseEvent) => {
|
|
||||||
const focusState = config.getFocusState();
|
const focusState = config.getFocusState();
|
||||||
const clonedata = deepCopy(store.getData());
|
const clonedata = deepCopy(store.getData());
|
||||||
const newBlock = clonedata.block.map((v: IBlockType) => {
|
const newBlock = clonedata.block.map((v: IBlockType) => {
|
||||||
@@ -24,10 +22,19 @@ export function containerFocusRemove(config: UserConfig) {
|
|||||||
});
|
});
|
||||||
focusState.blocks = [];
|
focusState.blocks = [];
|
||||||
store.setData({ ...clonedata, block: newBlock });
|
store.setData({ ...clonedata, block: newBlock });
|
||||||
|
unmountContextMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function innerRemoveFocus(config: UserConfig) {
|
||||||
|
resolveRemove(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function containerFocusRemove(config: UserConfig) {
|
||||||
|
const onMouseDown = (e: React.MouseEvent) => {
|
||||||
|
resolveRemove(config);
|
||||||
if (!innerDragState.item) {
|
if (!innerDragState.item) {
|
||||||
selectRangeMouseDown(e, config);
|
selectRangeMouseDown(e, config);
|
||||||
}
|
}
|
||||||
unmountContextMenu();
|
|
||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
onMouseDown,
|
onMouseDown,
|
||||||
|
22
packages/dooringx-plugin-template/package.json
Normal file
22
packages/dooringx-plugin-template/package.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "dooringx-plugin-template",
|
||||||
|
"version": "0.9.3",
|
||||||
|
"description": "> TODO: description",
|
||||||
|
"author": "yehuozhili <673632758@qq.com>",
|
||||||
|
"homepage": "https://github.com/H5-Dooring/dooringx#readme",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "index.js",
|
||||||
|
"files": [
|
||||||
|
"template"
|
||||||
|
],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/H5-Dooring/dooringx.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "rimraf ./dist && rollup -c"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/H5-Dooring/dooringx/issues"
|
||||||
|
}
|
||||||
|
}
|
59
packages/dooringx-plugin-template/template/.babelrc.js
Normal file
59
packages/dooringx-plugin-template/template/.babelrc.js
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* @Author: yehuozhili
|
||||||
|
* @Date: 2021-09-30 10:01:24
|
||||||
|
* @LastEditors: yehuozhili
|
||||||
|
* @LastEditTime: 2021-09-30 11:19:59
|
||||||
|
* @FilePath: \dooringx\packages\dooringx-plugin-template\.babelrc.js
|
||||||
|
*/
|
||||||
|
const envPreset = [
|
||||||
|
"@babel/preset-env",
|
||||||
|
{
|
||||||
|
modules: false,
|
||||||
|
// Allow importing core-js in entrypoint and use browserlist to select polyfills
|
||||||
|
useBuiltIns: "entry",
|
||||||
|
// Set the corejs version we are using to avoid warnings in console
|
||||||
|
corejs: 3,
|
||||||
|
// Exclude transforms that make all code slower
|
||||||
|
exclude: ["transform-typeof-symbol"],
|
||||||
|
loose: true,
|
||||||
|
targets: {
|
||||||
|
node: "current",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
"@babel/preset-react",
|
||||||
|
{
|
||||||
|
development: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"@babel/preset-typescript",
|
||||||
|
{
|
||||||
|
isTSX: true,
|
||||||
|
allExtensions: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
envPreset,
|
||||||
|
],
|
||||||
|
plugins: [
|
||||||
|
["@babel/plugin-proposal-class-properties", { loose: true }],
|
||||||
|
["@babel/plugin-syntax-dynamic-import"],
|
||||||
|
["@babel/plugin-transform-runtime"],
|
||||||
|
],
|
||||||
|
env: {
|
||||||
|
production: {
|
||||||
|
plugins: [
|
||||||
|
[
|
||||||
|
"babel-plugin-transform-react-remove-prop-types",
|
||||||
|
{
|
||||||
|
removeImport: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
5
packages/dooringx-plugin-template/template/.prettierrc
Normal file
5
packages/dooringx-plugin-template/template/.prettierrc
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"tabWidth": 4,
|
||||||
|
"useTabs": true,
|
||||||
|
"TrailingCooma": "es5"
|
||||||
|
}
|
11
packages/dooringx-plugin-template/template/README.md
Normal file
11
packages/dooringx-plugin-template/template/README.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# `dooringx-plugin-template`
|
||||||
|
|
||||||
|
> TODO: description
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```
|
||||||
|
const dooringxPluginTemplate = require('dooringx-plugin-template');
|
||||||
|
|
||||||
|
// TODO: DEMONSTRATE API
|
||||||
|
```
|
79
packages/dooringx-plugin-template/template/rollup.config.js
Normal file
79
packages/dooringx-plugin-template/template/rollup.config.js
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* @Author: yehuozhili
|
||||||
|
* @Date: 2021-09-30 09:51:40
|
||||||
|
* @LastEditors: yehuozhili
|
||||||
|
* @LastEditTime: 2021-10-07 13:18:49
|
||||||
|
* @FilePath: \dooringx\packages\dooringx-plugin-template\template\rollup.config.js
|
||||||
|
*/
|
||||||
|
import { DEFAULT_EXTENSIONS } from "@babel/core";
|
||||||
|
import babel from "@rollup/plugin-babel";
|
||||||
|
import typescript from "rollup-plugin-typescript2";
|
||||||
|
import commonjs from "@rollup/plugin-commonjs";
|
||||||
|
import postcss from "rollup-plugin-postcss";
|
||||||
|
import resolve from "@rollup/plugin-node-resolve";
|
||||||
|
import url from "@rollup/plugin-url";
|
||||||
|
import svgr from "@svgr/rollup";
|
||||||
|
import { terser } from "rollup-plugin-terser";
|
||||||
|
import typescriptEngine from "typescript";
|
||||||
|
import external from "rollup-plugin-peer-deps-external";
|
||||||
|
const externalPkg = ["react", "react-dom"];
|
||||||
|
const externals = (id) => externalPkg.some((e) => id.indexOf(e) === 0);
|
||||||
|
|
||||||
|
export default {
|
||||||
|
input: "./src/index.tsx",
|
||||||
|
output: [
|
||||||
|
{
|
||||||
|
file: "dist/index.js",
|
||||||
|
format: "umd",
|
||||||
|
name: "DOORINGXPLUGIN",
|
||||||
|
globals: { react: "React", "react-dom": "ReactDom" },
|
||||||
|
freeze: false,
|
||||||
|
exports: "default",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
onwarn: function (warning) {
|
||||||
|
// Skip certain warnings
|
||||||
|
// should intercept ... but doesn't in some rollup versions
|
||||||
|
if (warning.code === "THIS_IS_UNDEFINED") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// console.warn everything else
|
||||||
|
console.warn(warning.message);
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
postcss({
|
||||||
|
modules: true, //cssmodule
|
||||||
|
plugins: [],
|
||||||
|
minimize: true,
|
||||||
|
}),
|
||||||
|
external({
|
||||||
|
includeDependencies: true,
|
||||||
|
}),
|
||||||
|
typescript({
|
||||||
|
typescript: typescriptEngine,
|
||||||
|
include: ["*.js+(|x)", "**/*.js+(|x)"],
|
||||||
|
exclude: [
|
||||||
|
"coverage",
|
||||||
|
"config",
|
||||||
|
"dist",
|
||||||
|
"node_modules/**",
|
||||||
|
"*.test.{js+(|x), ts+(|x)}",
|
||||||
|
"**/*.test.{js+(|x), ts+(|x)}",
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
commonjs({
|
||||||
|
sourceMap: true,
|
||||||
|
}),
|
||||||
|
babel({
|
||||||
|
extensions: [...DEFAULT_EXTENSIONS, ".ts", "tsx"],
|
||||||
|
babelHelpers: "runtime",
|
||||||
|
exclude: /node_modules/,
|
||||||
|
skipPreflightCheck: true,
|
||||||
|
}),
|
||||||
|
url(),
|
||||||
|
svgr(),
|
||||||
|
resolve(),
|
||||||
|
terser(),
|
||||||
|
],
|
||||||
|
external: externals,
|
||||||
|
};
|
12
packages/dooringx-plugin-template/template/src/global.d.ts
vendored
Normal file
12
packages/dooringx-plugin-template/template/src/global.d.ts
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* @Author: yehuozhili
|
||||||
|
* @Date: 2021-09-30 09:55:01
|
||||||
|
* @LastEditors: yehuozhili
|
||||||
|
* @LastEditTime: 2021-09-30 09:55:02
|
||||||
|
* @FilePath: \dooringx\packages\dooringx-plugin-template\src\global.d.ts
|
||||||
|
*/
|
||||||
|
/// <reference types="react-scripts" />
|
||||||
|
declare module "*.less" {
|
||||||
|
const classes: { readonly [key: string]: string };
|
||||||
|
export default classes;
|
||||||
|
}
|
@@ -0,0 +1,3 @@
|
|||||||
|
.hello {
|
||||||
|
background: red;
|
||||||
|
}
|
57
packages/dooringx-plugin-template/template/src/index.tsx
Normal file
57
packages/dooringx-plugin-template/template/src/index.tsx
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* @Author: yehuozhili
|
||||||
|
* @Date: 2021-09-30 09:54:13
|
||||||
|
* @LastEditors: yehuozhili
|
||||||
|
* @LastEditTime: 2021-09-30 09:54:24
|
||||||
|
* @FilePath: \dooringx\packages\dooringx-plugin-template\src\index.tsx
|
||||||
|
*/
|
||||||
|
import React from "react";
|
||||||
|
import styles from "./index.less";
|
||||||
|
import { ComponentItemFactory, createPannelOptions } from "dooringx-lib";
|
||||||
|
export interface FormBaseType {
|
||||||
|
receive?: string;
|
||||||
|
}
|
||||||
|
export interface FormInputType extends FormBaseType {
|
||||||
|
label: string;
|
||||||
|
}
|
||||||
|
export interface FormMap {
|
||||||
|
input: FormInputType;
|
||||||
|
}
|
||||||
|
const remoteCo = new ComponentItemFactory(
|
||||||
|
"remoteCo",
|
||||||
|
"远程组件",
|
||||||
|
{
|
||||||
|
style: [
|
||||||
|
createPannelOptions<FormMap, "input">("input", {
|
||||||
|
receive: "text",
|
||||||
|
label: "文字",
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
width: 200,
|
||||||
|
height: 100,
|
||||||
|
props: {
|
||||||
|
text: "远程组件a",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
(data) => {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={styles.hello}
|
||||||
|
style={{
|
||||||
|
zIndex: data.zIndex,
|
||||||
|
width: data.width,
|
||||||
|
height: data.height,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{data.props.text}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
true
|
||||||
|
);
|
||||||
|
remoteCo.url =
|
||||||
|
"https://img.guguzhu.com/d/file/android/ico/2021/09/08/rytzi2w34tm.png";
|
||||||
|
|
||||||
|
export default remoteCo;
|
51
packages/dooringx-plugin-template/template/template.json
Normal file
51
packages/dooringx-plugin-template/template/template.json
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"name": "dooringx-plugin-template",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"description": "> TODO: description",
|
||||||
|
"author": "yehuozhili <673632758@qq.com>",
|
||||||
|
"homepage": "https://github.com/H5-Dooring/dooringx#readme",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "index.js",
|
||||||
|
"publishConfig": {
|
||||||
|
"registry": "http://registry.npmjs.org/"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/H5-Dooring/dooringx.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "rimraf ./dist && rollup -c"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/H5-Dooring/dooringx/issues"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/react": "^17.0.18",
|
||||||
|
"@types/react-dom": "^17.0.9",
|
||||||
|
"less": "^4.1.1",
|
||||||
|
"prettier": "^2.3.2",
|
||||||
|
"react": "^17.0.2",
|
||||||
|
"react-dom": "^17.0.2",
|
||||||
|
"react-scripts": "^4.0.3",
|
||||||
|
"rimraf": "^3.0.2",
|
||||||
|
"rollup": "^2.56.2",
|
||||||
|
"tslib": "^2.3.1",
|
||||||
|
"typescript": "^4.3.5",
|
||||||
|
"@babel/core": "^7.15.0",
|
||||||
|
"@babel/plugin-transform-runtime": "^7.15.0",
|
||||||
|
"@babel/preset-typescript": "^7.15.0",
|
||||||
|
"@rollup/plugin-babel": "^5.3.0",
|
||||||
|
"@rollup/plugin-commonjs": "^20.0.0",
|
||||||
|
"@rollup/plugin-json": "^4.1.0",
|
||||||
|
"@rollup/plugin-node-resolve": "^13.0.4",
|
||||||
|
"@rollup/plugin-url": "^6.1.0",
|
||||||
|
"@svgr/rollup": "^5.5.0",
|
||||||
|
"dooringx-lib": "^0.9.3",
|
||||||
|
"postcss": "^8.3.6",
|
||||||
|
"rollup-plugin-peer-deps-external": "^2.2.4",
|
||||||
|
"rollup-plugin-postcss": "^4.0.1",
|
||||||
|
"rollup-plugin-terser": "^7.0.2",
|
||||||
|
"rollup-plugin-typescript2": "^0.30.0"
|
||||||
|
},
|
||||||
|
"dependencies": {}
|
||||||
|
}
|
50
packages/dooringx-plugin-template/template/tsconfig.json
Normal file
50
packages/dooringx-plugin-template/template/tsconfig.json
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"declaration": false,
|
||||||
|
"module": "esnext",
|
||||||
|
"noImplicitAny": true,
|
||||||
|
"outDir": "./dist",
|
||||||
|
"target": "es5",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"baseUrl": "./src",
|
||||||
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
|
"allowJs": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "react",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"strict": true,
|
||||||
|
"pretty": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
|
"downlevelIteration": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"noImplicitReturns": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"stripInternal": true,
|
||||||
|
"emitDecoratorMetadata": false,
|
||||||
|
"experimentalDecorators": false,
|
||||||
|
"strictPropertyInitialization": true,
|
||||||
|
"importHelpers": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"strictNullChecks": true,
|
||||||
|
"strictFunctionTypes": true,
|
||||||
|
"noImplicitThis": true,
|
||||||
|
"alwaysStrict": true,
|
||||||
|
"noEmit": false,
|
||||||
|
"paths": {
|
||||||
|
"*": ["*", "src/*"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"include": ["src/**/*", "node_modules/dooringx-lib/**/*"],
|
||||||
|
"exclude": [
|
||||||
|
"coverage",
|
||||||
|
"config",
|
||||||
|
"dist",
|
||||||
|
"node_modules/**",
|
||||||
|
"**/*.test.js",
|
||||||
|
"**/*.test.ts"
|
||||||
|
]
|
||||||
|
}
|
@@ -2,18 +2,41 @@
|
|||||||
* @Author: yehuozhili
|
* @Author: yehuozhili
|
||||||
* @Date: 2021-07-04 10:28:57
|
* @Date: 2021-07-04 10:28:57
|
||||||
* @LastEditors: yehuozhili
|
* @LastEditors: yehuozhili
|
||||||
* @LastEditTime: 2021-07-29 10:59:24
|
* @LastEditTime: 2021-10-07 14:40:30
|
||||||
* @FilePath: \dooringx\script\publish.js
|
* @FilePath: \dooringx\script\publish.js
|
||||||
*/
|
*/
|
||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const spawn = require('child_process').spawn;
|
const spawn = require('child_process').spawn;
|
||||||
|
const execSync = require('child_process').execSync;
|
||||||
const root = process.cwd();
|
const root = process.cwd();
|
||||||
|
execSync('npm run changelog');
|
||||||
const rootPath = path.resolve(root, 'packages', 'dooringx-lib');
|
const rootPath = path.resolve(root, 'packages', 'dooringx-lib');
|
||||||
|
const templatePath = path.resolve(root, 'packages', 'dooringx-plugin-template');
|
||||||
|
const templateJsonPath = path.resolve(templatePath, 'template', 'template.json');
|
||||||
|
const templatePkgPath = path.resolve(templatePath, 'package.json');
|
||||||
const readme = path.resolve(root, 'README.md');
|
const readme = path.resolve(root, 'README.md');
|
||||||
const libreadme = path.resolve(root, 'packages', 'dooringx-lib', 'README.md');
|
const libreadme = path.resolve(root, 'packages', 'dooringx-lib', 'README.md');
|
||||||
|
const libPkgPath = path.resolve(root, 'packages', 'dooringx-lib', 'package.json');
|
||||||
fs.removeSync(libreadme);
|
fs.removeSync(libreadme);
|
||||||
fs.copyFileSync(readme, libreadme);
|
fs.copyFileSync(readme, libreadme);
|
||||||
|
const res = execSync('npm view dooringx-lib version');
|
||||||
|
const version = res.toString().replace('\n', '');
|
||||||
|
const libpkgVersion = JSON.parse(fs.readFileSync(libPkgPath).toString()).version;
|
||||||
|
console.log('npm version is' + version);
|
||||||
|
if (version === libpkgVersion) {
|
||||||
|
console.log('you might forget to change version');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//同步template
|
||||||
|
const templatejson = JSON.parse(fs.readFileSync(templateJsonPath).toString());
|
||||||
|
templatejson.devDependencies['dooringx-lib'] = '^' + libpkgVersion;
|
||||||
|
fs.removeSync(templateJsonPath);
|
||||||
|
fs.writeFileSync(templateJsonPath, JSON.stringify(templatejson, null, 2));
|
||||||
|
const templatePkgJson = JSON.parse(fs.readFileSync(templatePkgPath).toString());
|
||||||
|
templatePkgJson.version = libpkgVersion;
|
||||||
|
fs.removeSync(templatePkgPath);
|
||||||
|
fs.writeFileSync(templatePkgPath, JSON.stringify(templatePkgJson, null, 2));
|
||||||
|
|
||||||
const command = `npm`;
|
const command = `npm`;
|
||||||
const args = [`publish`];
|
const args = [`publish`];
|
||||||
@@ -28,3 +51,14 @@ child.on('close', (i) => {
|
|||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
const tpl = spawn(command, args, {
|
||||||
|
stdio: 'inherit',
|
||||||
|
env: process.env,
|
||||||
|
shell: true,
|
||||||
|
cwd: templatePath,
|
||||||
|
});
|
||||||
|
tpl.on('close', (i) => {
|
||||||
|
if (i !== 0) {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Reference in New Issue
Block a user