Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions packages/features/textEncoder/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"name": "dokit-studio-plugin-demo",
"description": "a DoKit desktop application",
"homepage": "https://www.dokit.cn/#/index/home",
"version": "1.0.0",
"main": "dist/main/index.cjs",
"author": "[email protected]",
"license": "MIT",
"repository": "",
"scripts": {
"dev": "node scripts/watch.mjs",
"prebuild": "vue-tsc --noEmit --p packages/renderer/tsconfig.json && node scripts/build.mjs",
"build": "electron-builder",
"init": "git config core.hooksPath .git/hooks/ && rm -rf .git/hooks && npx simple-git-hooks",
"test:e2e": "npx playwright test",
"test:e2e:headless": "npx playwright test --headed"
},
"engines": {
"node": ">=14.16.0"
},
"devDependencies": {
"@arco-design/web-vue": "^2.30.1",
"@playwright/test": "^1.22.2",
"@types/lowdb": "^1.0.11",
"@vitejs/plugin-vue": "^2.3.2",
"electron": "19.0.1",
"electron-builder": "^23.0.3",
"nano-staged": "^0.8.0",
"simple-git-hooks": "^2.8.0",
"typescript": "^4.7.2",
"vite": "^2.9.8",
"vite-plugin-electron": "^0.4.5",
"vite-plugin-resolve": "2.1.2",
"vue": "^3.2.36",
"vue-router": "^4.0.16",
"vue-tsc": "^0.35.2"
},
"env": {
"VITE_DEV_SERVER_HOST": "127.0.0.1",
"VITE_DEV_SERVER_PORT": 8899
},
"keywords": [
"electron",
"rollup",
"vite",
"vue3",
"vue"
],
"dependencies": {
"@vitejs/plugin-vue-jsx": "^1.3.10",
"@vueuse/core": "^8.6.0",
"address": "^1.2.0",
"axios": "^0.27.2",
"echarts": "^5.3.2",
"http": "0.0.1-security",
"less": "^4.1.3",
"lodash-id": "^0.14.1",
"lowdb": "^1.0.0",
"mitt": "^3.0.0",
"mockjs": "^1.1.0",
"moment": "^2.29.3",
"nprogress": "^0.2.0",
"pinia": "^2.0.14",
"portfinder": "^1.0.28",
"query-string": "^7.1.1",
"vite-svg-loader": "^3.3.0",
"vue-echarts": "^6.0.3",
"vue-i18n": "^9.1.10",
"vue3-json-viewer": "^2.2.2",
"ws": "^7.5.8"
}
}
7 changes: 7 additions & 0 deletions packages/features/textEncoder/packages/main/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module.exports = () => {
return {
onReady(ctx) {
console.log('demo onReady')
}
}
}
32 changes: 32 additions & 0 deletions packages/features/textEncoder/packages/main/vite.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { join } from 'path'
import { builtinModules } from 'module'
import { defineConfig } from 'vite'
import pkg from '../../package.json'

export default defineConfig({
root: __dirname,
build: {
outDir: '../../dist/main',
emptyOutDir: true,
minify: process.env./* from mode option */NODE_ENV === 'production',
// https://github.com/caoxiemeihao/electron-vue-vite/issues/61
sourcemap: 'inline',
rollupOptions: {
input: {
// multiple entry
index: join(__dirname, 'index.ts'),
},
output: {
format: 'cjs',
entryFileNames: '[name].cjs',
manualChunks: {},
},
external: [
'electron',
...builtinModules,
// @ts-ignore
...Object.keys(pkg.dependencies || {}),
],
},
},
})
8 changes: 8 additions & 0 deletions packages/features/textEncoder/packages/preload/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { domReady } from './utils'
import { useLoading } from './loading'
const { appendLoading, removeLoading } = useLoading()
window.removeLoading = removeLoading

// domReady().then(appendLoading)


67 changes: 67 additions & 0 deletions packages/features/textEncoder/packages/preload/loading.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* https://tobiasahlin.com/spinkit
* https://connoratherton.com/loaders
* https://projects.lukehaas.me/css-loaders
* https://matejkustec.github.io/SpinThatShit
*/
export function useLoading() {
const className = `loaders-css__square-spin`
const styleContent = `
@keyframes square-spin {
25% { transform: perspective(100px) rotateX(180deg) rotateY(0); }
50% { transform: perspective(100px) rotateX(180deg) rotateY(180deg); }
75% { transform: perspective(100px) rotateX(0) rotateY(180deg); }
100% { transform: perspective(100px) rotateX(0) rotateY(0); }
}
.${className} > div {
animation-fill-mode: both;
width: 50px;
height: 50px;
background: #fff;
animation: square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite;
}
.app-loading-wrap {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: #282c34;
z-index: 9;
}
`
const oStyle = document.createElement('style')
const oDiv = document.createElement('div')

oStyle.id = 'app-loading-style'
oStyle.innerHTML = styleContent
oDiv.className = 'app-loading-wrap'
oDiv.innerHTML = `<div class="${className}"><div></div></div>`

return {
appendLoading() {
safe.append(document.head, oStyle)
safe.append(document.body, oDiv)
},
removeLoading() {
safe.remove(document.head, oStyle)
safe.remove(document.body, oDiv)
},
}
}

const safe = {
append(parent: HTMLElement, child: HTMLElement) {
if (!Array.from(parent.children).find(e => e === child)) {
return parent.appendChild(child)
}
},
remove(parent: HTMLElement, child: HTMLElement) {
if (Array.from(parent.children).find(e => e === child)) {
return parent.removeChild(child)
}
},
}
15 changes: 15 additions & 0 deletions packages/features/textEncoder/packages/preload/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

/** docoment ready */
export function domReady(condition: DocumentReadyState[] = ['complete', 'interactive']) {
return new Promise(resolve => {
if (condition.includes(document.readyState)) {
resolve(true)
} else {
document.addEventListener('readystatechange', () => {
if (condition.includes(document.readyState)) {
resolve(true)
}
})
}
})
}
32 changes: 32 additions & 0 deletions packages/features/textEncoder/packages/preload/vite.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { join } from 'path'
import { builtinModules } from 'module'
import { defineConfig } from 'vite'
import pkg from '../../package.json'

export default defineConfig({
root: __dirname,
build: {
outDir: '../../dist/preload',
emptyOutDir: true,
minify: process.env./* from mode option */NODE_ENV === 'production',
// https://github.com/caoxiemeihao/electron-vue-vite/issues/61
sourcemap: 'inline',
rollupOptions: {
input: {
// multiple entry
index: join(__dirname, 'index.ts'),
},
output: {
format: 'cjs',
entryFileNames: '[name].cjs',
manualChunks: {},
},
external: [
'electron',
...builtinModules,
// @ts-ignore
...Object.keys(pkg.dependencies || {}),
],
},
},
})
14 changes: 14 additions & 0 deletions packages/features/textEncoder/packages/renderer/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self' 'unsafe-eval'; script-src 'self' 'unsafe-eval'" />
<title>DokitStudio编解码工具</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
7 changes: 7 additions & 0 deletions packages/features/textEncoder/packages/renderer/src/App.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<template>
<router-view />
</template>

<script setup lang="ts">

</script>
13 changes: 13 additions & 0 deletions packages/features/textEncoder/packages/renderer/src/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { createApp } from 'vue'
import App from './App.vue'
import ArcoVue from '@arco-design/web-vue'
import '@arco-design/web-vue/dist/arco.css'
import router from './router'

const app = createApp(App)


app.use(router)
.use(ArcoVue);

app.mount('#app')
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'

const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/',
name: 'home',
component: () => import('../views/HomeView.vue')
},
// {
// path: '/about',
// name: 'about',
// // route level code-splitting
// // this generates a separate chunk (About.[hash].js) for this route
// // which is lazy-loaded when the route is visited.
// component: () => import('../views/AboutView.vue')
// }
]
})

export default router
Loading