feat:备份

This commit is contained in:
shixiaohua 2024-03-08 17:54:39 +08:00
parent e24e50f68e
commit 57fbb7a259
17 changed files with 151 additions and 216 deletions

View File

@ -20,7 +20,7 @@ module.exports = {
// 修改output.publicPath为'./'
// webpackConfig.output.publicPath = './';
webpackConfig.output.path = path.join(__dirname,);
webpackConfig.output.publicPath = path.join(__dirname,path.sep);
webpackConfig.output.publicPath = "";
return webpackConfig;
},
}

View File

@ -30,24 +30,6 @@ const readDirLocal=async (filePath) => {
}
exports.menuRebuild = (mainWindow) => {
return template = [
// { role: 'appMenu' }
...(isMac
? [{
label: app.name,
submenu: [
{role: 'about'},
{type: 'separator'},
{role: 'services'},
{type: 'separator'},
{role: 'hide'},
{role: 'hideOthers'},
{role: 'unhide'},
{type: 'separator'},
{role: 'quit'}
]
}]
: []),
// { role: 'fileMenu' }
{
label: '文件',
submenu: [
@ -89,78 +71,30 @@ exports.menuRebuild = (mainWindow) => {
isMac ? {role: 'close'} : {role: 'quit'},
]
},
// { role: 'editMenu' }
{
label: 'Edit',
label: '编辑',
submenu: [
{role: 'undo'},
{role: 'redo'},
{label: '撤销'},
{label: '取消撤销'},
{type: 'separator'},// 分割线
{role: 'cut'},
{role: 'copy'},
{role: 'paste'},
...(isMac
? [
{role: 'pasteAndMatchStyle'},
{role: 'delete'},
{role: 'selectAll'},
{type: 'separator'},
{
label: 'Speech',
submenu: [
{role: 'startSpeaking'},
{role: 'stopSpeaking'}
]
}
]
: [
{role: 'delete'},
{type: 'separator'},
{role: 'selectAll'}
])
{label: '剪切'},
{label: '复制'},
{label: '粘贴'},
]
},
// { role: 'viewMenu' }
{
label: 'View',
label: '视图',
submenu: [
{label: '界面布局'},
{role: 'reload'},
{role: 'forceReload'},
{role: 'toggleDevTools'},
{type: 'separator'},
{role: 'resetZoom'},
{role: 'zoomIn'},
{role: 'zoomOut'},
{type: 'separator'},
{role: 'togglefullscreen'}
]
},
// { role: 'windowMenu' }
{
label: 'Window',
submenu: [
{role: 'minimize'},
{role: 'zoom'},
...(isMac
? [
{type: 'separator'},
{role: 'front'},
{type: 'separator'},
{role: 'window'}
]
: [
{role: 'close'}
])
]
},
{
role: 'help',
label: '帮助',
submenu: [
{
label: 'Learn More',
label: '了解更多',
click: async () => {
const {shell} = require('electron')
await shell.openExternal('http://www.huaruyu.com')
}
}

View File

@ -1,22 +1,50 @@
const pathOp=require("path")
module.exports = {
packagerConfig: {},
packagerConfig: {
// 参考网址https://electron.github.io/packager/main/interfaces/Options.html#afterCopy
"name": "xbb",
"executableName": "xbb",
"icon": pathOp.join(__dirname,pathOp.sep)+"public"+pathOp.sep+"favicon.ico",
"out": "build/",
"overwrite": true,
"asar":true,
"version": "1.0.0",
"copyright": "Copyright © 2023",
"platform": "linux,win32"
// "ignore": [ // 不需要打包的文件和文件夹的路径列表
// ".git",
// ".vscode",
// "node_modules",
// ]
},
rebuildConfig: {},
makers: [
{
name: '@electron-forge/maker-squirrel',
config: {},
config: {
"name":"electron_quick_start"
},
},
{
name: '@electron-forge/maker-zip',
platforms: ['darwin'],
config: {
"name": "xbb",
"executableName": "xbb",
}
},
{
name: '@electron-forge/maker-deb',
config: {},
config: {
"name": "xbb",
"executableName": "xbb",
},
},
{
name: '@electron-forge/maker-rpm',
config: {},
config: {
"name": "xbb"
},
},
],
};

28
main.js
View File

@ -1,8 +1,9 @@
const {app, Menu, BrowserWindow,ipcMain,dialog} = require('electron')
const path = require('path')
const {menuRebuild} = require('./src/comment/TopMenu.js')
const {menuRebuild} = require('./elsrc/TopMenu.js')
const Store = require('electron-store');
const store = new Store();
const isDev = require('electron-is-dev')
const createWindow = () => {
// Create the browser window.
const win = new BrowserWindow({
@ -15,11 +16,16 @@ const createWindow = () => {
preload: path.join(__dirname, 'preload.js')
}
})
// 加载 index.html
win.loadFile('./index.html')
// win.loadURL('http://localhost:3000')
// 打开开发工具
win.webContents.openDevTools()
if (isDev){
// 加载 index.html
win.loadURL('http://localhost:3000')
// 打开开发工具
win.webContents.openDevTools()
}else {
// 加载 index.html
win.loadFile('./index.html')
}
// let okPush =false
let devToolPush = false
win.webContents.on('before-input-event', (event, input) => {
@ -45,17 +51,25 @@ const createWindow = () => {
})
Menu.setApplicationMenu(Menu.buildFromTemplate(menuRebuild(win)))
win.once('ready-to-show', () => {
win.show()
})
return win
}
// 这段程序将会在 Electron 结束初始化和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
createWindow()
let browserWindow = createWindow();
// 在 macOS 系统内, 如果没有已开启的应用窗口
// 点击托盘图标时通常会重新创建一个新窗口
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
// ipcMain.on("redirectUrlTo",(event,value)=>
// browserWindow.webContents.send('redirectUrl', value)
// )
ipcMain.handle("saveFileWithName",(listen,args)=>{
console.log("saveFileWithName")
return dialog.showSaveDialog({"title":"保存文件",})

127
package-lock.json generated
View File

@ -9,6 +9,7 @@
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"electron-is-dev": "^1.1.0",
"electron-squirrel-startup": "^1.0.0",
"electron-store": "^8.1.0",
"md5": "^2.3.0",
@ -36,8 +37,6 @@
"concurrently": "^4.1.1",
"craco-less": "^2.0.0",
"cross-env": "^5.2.0",
"echarts": "^5.4.1",
"echarts-for-react": "^3.0.2",
"electron": "^22.1.0",
"formik": "^2.2.9",
"lexical": "^0.12.6",
@ -10786,36 +10785,6 @@
"safer-buffer": "^2.1.0"
}
},
"node_modules/echarts": {
"version": "5.4.3",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz",
"integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==",
"dev": true,
"dependencies": {
"tslib": "2.3.0",
"zrender": "5.4.4"
}
},
"node_modules/echarts-for-react": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/echarts-for-react/-/echarts-for-react-3.0.2.tgz",
"integrity": "sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"size-sensor": "^1.0.1"
},
"peerDependencies": {
"echarts": "^3.0.0 || ^4.0.0 || ^5.0.0",
"react": "^15.0.0 || >=16.0.0"
}
},
"node_modules/echarts/node_modules/tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
"dev": true
},
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
@ -11269,6 +11238,11 @@
"node": ">=10"
}
},
"node_modules/electron-is-dev": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz",
"integrity": "sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw=="
},
"node_modules/electron-packager": {
"version": "17.1.1",
"resolved": "https://registry.npmmirror.com/electron-packager/-/electron-packager-17.1.1.tgz",
@ -22668,6 +22642,40 @@
"graceful-fs": "^4.1.6"
}
},
"node_modules/react-scripts/node_modules/sass-loader": {
"version": "12.6.0",
"resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-12.6.0.tgz",
"integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==",
"dev": true,
"dependencies": {
"klona": "^2.0.4",
"neo-async": "^2.6.2"
},
"engines": {
"node": ">= 12.13.0"
},
"peerDependencies": {
"fibers": ">= 3.1.0",
"node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0",
"sass": "^1.3.0",
"sass-embedded": "*",
"webpack": "^5.0.0"
},
"peerDependenciesMeta": {
"fibers": {
"optional": true
},
"node-sass": {
"optional": true
},
"sass": {
"optional": true
},
"sass-embedded": {
"optional": true
}
}
},
"node_modules/react-scripts/node_modules/semver": {
"version": "7.5.4",
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz",
@ -23513,40 +23521,6 @@
"node": ">=12"
}
},
"node_modules/sass-loader": {
"version": "12.6.0",
"resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-12.6.0.tgz",
"integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==",
"dev": true,
"dependencies": {
"klona": "^2.0.4",
"neo-async": "^2.6.2"
},
"engines": {
"node": ">= 12.13.0"
},
"peerDependencies": {
"fibers": ">= 3.1.0",
"node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0",
"sass": "^1.3.0",
"sass-embedded": "*",
"webpack": "^5.0.0"
},
"peerDependenciesMeta": {
"fibers": {
"optional": true
},
"node-sass": {
"optional": true
},
"sass": {
"optional": true
},
"sass-embedded": {
"optional": true
}
}
},
"node_modules/sax": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz",
@ -23903,12 +23877,6 @@
"integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
"dev": true
},
"node_modules/size-sensor": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/size-sensor/-/size-sensor-1.0.2.tgz",
"integrity": "sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==",
"dev": true
},
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
@ -27182,21 +27150,6 @@
"engines": {
"node": ">=10"
}
},
"node_modules/zrender": {
"version": "5.4.4",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz",
"integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==",
"dev": true,
"dependencies": {
"tslib": "2.3.0"
}
},
"node_modules/zrender/node_modules/tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
"dev": true
}
}
}

View File

@ -8,12 +8,12 @@
"devDependencies": {
"@ant-design/pro-components": "^2.3.57",
"@craco/craco": "^6.0.0",
"@excalidraw/excalidraw": "^0.17.0",
"@electron-forge/cli": "^6.0.4",
"@electron-forge/maker-deb": "^6.0.4",
"@electron-forge/maker-rpm": "^6.0.4",
"@electron-forge/maker-squirrel": "^6.0.4",
"@electron-forge/maker-zip": "^6.0.4",
"@excalidraw/excalidraw": "^0.17.0",
"@lexical/react": "^0.12.6",
"@reduxjs/toolkit": "^1.9.3",
"@testing-library/jest-dom": "^5.16.5",
@ -52,6 +52,7 @@
"make": "electron-forge make"
},
"dependencies": {
"electron-is-dev": "^1.1.0",
"electron-squirrel-startup": "^1.0.0",
"electron-store": "^8.1.0",
"md5": "^2.3.0",
@ -74,5 +75,8 @@
"last 1 firefox version",
"last 1 safari version"
]
},
"config": {
"forge": "./forge.config.js"
}
}

View File

@ -14,11 +14,11 @@
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!-- 应用加壳 -->
<!-- <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> -->
<title>工作小能手</title>
<title>送给最亲爱的小宝贝</title>
<!--[if IE]>
<script src="js/html5.js"></script>
<![endif]-->
<![endif]-->
<script src="index.jsx"></script>
</head>
@ -31,4 +31,4 @@
<script src="./js/demo-1.js"></script> -->
</body>
</html>
</html>

3
public/index.jsx Normal file
View File

@ -0,0 +1,3 @@
const path = require("path");
_webpack_public_path=path.join(__dirname,path.sep)
console.log("_webpack_public_path:",_webpack_public_path)

View File

@ -5,6 +5,7 @@ import useIpcRenderer from '../src/utils/useIpcRenderer'
import {dirAdd} from "./redux/dirMessage_reducer";
import {pushHotkeys} from "./redux/pushHotkeys_reducer";
import {useDispatch} from "react-redux";
import Note from "./pages/Note";
function App() {
@ -32,9 +33,9 @@ function App() {
return (
<>
{/* 注册路由 */}
{element}
{element}<Note/>
</>
)
};
export default App;
}
export default App;

View File

@ -698,22 +698,22 @@ i.redo {
background-image: url(images/icons/type-h2.svg);
}
.icon.small-heading,
.icon.h3 {
background-image: url(images/icons/type-h3.svg);
}
.icon.small-heading,
.icon.h4 {
background-image: url(images/icons/type-h4.svg);
}
.icon.small-heading,
.icon.h5 {
background-image: url(images/icons/type-h5.svg);
}
.icon.small-heading,
.icon.h6 {
background-image: url(images/icons/type-h6.svg);
}

View File

@ -66,7 +66,7 @@ export function InsertImageUriDialogBody({
data-test-id="image-modal-confirm-btn"
disabled={isDisabled}
onClick={() => onClick({altText, src})}>
Confirm
确认
</Button>
</DialogActions>
</>
@ -114,7 +114,7 @@ export function InsertImageUploadedDialogBody({
data-test-id="image-modal-file-upload-btn"
disabled={isDisabled}
onClick={() => onClick({altText, src})}>
Confirm
确认
</Button>
</DialogActions>
</>

View File

@ -222,16 +222,16 @@ export default function ImageResizer({
};
return (
<div ref={controlWrapperRef}>
{!showCaption && captionsEnabled && (
<button
className="image-caption-button"
ref={buttonRef}
onClick={() => {
setShowCaption(!showCaption);
}}>
Add Caption
</button>
)}
{/*{!showCaption && captionsEnabled && (*/}
{/* <button*/}
{/* className="image-caption-button"*/}
{/* ref={buttonRef}*/}
{/* onClick={() => {*/}
{/* setShowCaption(!showCaption);*/}
{/* }}>*/}
{/* Add Caption*/}
{/* </button>*/}
{/*)}*/}
<div
className="image-resizer image-resizer-n"
onPointerDown={(event) => {

View File

@ -451,7 +451,7 @@ function TableActionMenu({
className="item"
onClick={() => mergeTableCellsAtSelection()}
data-test-id="table-merge-cells">
Merge cells
和并单元格
</button>
);
} else if (canUnmergeCell) {
@ -460,7 +460,7 @@ function TableActionMenu({
className="item"
onClick={() => unmergeTableCellsAtSelection()}
data-test-id="table-unmerge-cells">
Unmerge cells
拆分单元格
</button>
);
}

View File

@ -79,7 +79,7 @@ export function InsertTableDialog({activeEditor,
<>
<TextInput
placeholder={'# of rows (1-500)'}
label="Rows"
label=""
onChange={setRows}
value={rows}
data-test-id="table-modal-rows"
@ -87,7 +87,7 @@ export function InsertTableDialog({activeEditor,
/>
<TextInput
placeholder={'# of columns (1-50)'}
label="Columns"
label=""
onChange={setColumns}
value={columns}
data-test-id="table-modal-columns"
@ -95,7 +95,7 @@ export function InsertTableDialog({activeEditor,
/>
<DialogActions data-test-id="table-model-confirm-insert">
<Button disabled={isDisabled} onClick={onClick}>
Confirm
确认
</Button>
</DialogActions>
</>

View File

@ -400,7 +400,7 @@ function BlockOptionsDropdownList({
{blockType === "h1" && <span className="active"/>}
</button>
<button className="item" onClick={formatSmallHeading}>
<span className="icon small-heading"/>
<span className="icon small-heading h2"/>
<span className="text">二级标题</span>
{blockType === "h2" && <span className="active"/>}
</button>

View File

@ -4,6 +4,10 @@ import GateWay from '../pages/GateWay'
import Note from '../pages/Note'
import Hlexical from '../pages/Note/Hlexical'
export default [
{
path:'/',
element:<Navigate to="/note"/>
},
{
path:'/note',
element:<Note/>,
@ -22,16 +26,6 @@ export default [
path:'/GateWay',
element:<GateWay/>,
},
{
path:'/',
// element:<Navigate to="/note"/>
element:<Note/>,
children:[
{
path:'Hlexical',
element:<Hlexical/>
}
]
},
]

View File

@ -26,7 +26,11 @@ export function fileDirFormat(dir,fileName){
}
export function fileDirFormatArray(dirArray){
// todo
return pathOperate.sep+dirArray.join(pathOperate.sep)
if(process.platform==="win32"){
return dirArray.join(pathOperate.sep)
}else {
return pathOperate.sep+dirArray.join(pathOperate.sep)
}
}
export function fullFileNameFormat(dir,fileName){