Skip to content

Commit 6ed043e

Browse files
committed
Merge remote-tracking branch 'upstream/refactor/develop' into refactor/theme-rest
2 parents 16dab59 + a7477a8 commit 6ed043e

File tree

119 files changed

+4985
-2014
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+4985
-2014
lines changed

designer-demo/public/mock/bundle.json

Lines changed: 49 additions & 184 deletions
Large diffs are not rendered by default.

designer-demo/registry.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
Breadcrumb,
1515
Fullscreen,
1616
Lang,
17+
ViewSetting,
1718
Logo,
1819
Lock,
1920
Media,
@@ -70,7 +71,8 @@ export default {
7071
collapse: [
7172
['engine.toolbars.collaboration'],
7273
['engine.toolbars.refresh', 'engine.toolbars.fullscreen'],
73-
['engine.toolbars.lang']
74+
['engine.toolbars.lang'],
75+
['engine.toolbars.viewSetting']
7476
]
7577
}
7678
}
@@ -96,9 +98,23 @@ export default {
9698
GenerateCode,
9799
Save,
98100
Fullscreen,
99-
Lang
101+
Lang,
102+
ViewSetting
103+
],
104+
plugins: [
105+
Materials,
106+
Tree,
107+
Page,
108+
[Block, { options: { ...Block.options, mergeCategoriesAndGroups: true } }],
109+
Datasource,
110+
Bridge,
111+
I18n,
112+
Script,
113+
State,
114+
Schema,
115+
Help,
116+
Robot
100117
],
101-
plugins: [Materials, Tree, Page, Block, Datasource, Bridge, I18n, Script, State, Schema, Help, Robot],
102118
dsls: [{ id: 'engine.dsls.dslvue' }],
103119
settings: [Props, Styles, Events],
104120
canvas: Canvas

jsconfig.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"@opentiny/tiny-engine-toolbar-breadcrumb": ["packages/toolbars/breadcrumb/index"],
2424
"@opentiny/tiny-engine-toolbar-fullscreen": ["packages/toolbars/fullscreen/index"],
2525
"@opentiny/tiny-engine-toolbar-lang": ["packages/toolbars/lang/index"],
26+
"@opentiny/tiny-engine-toolbar-view-setting": ["packages/toolbars/view-setting/index"],
2627
"@opentiny/tiny-engine-toolbar-layout": ["packages/toolbars/layout/index"],
2728
"@opentiny/tiny-engine-toolbar-lock": ["packages/toolbars/lock/index"],
2829
"@opentiny/tiny-engine-toolbar-logo": ["packages/toolbars/logo/index"],
@@ -51,6 +52,7 @@
5152
"@opentiny/tiny-engine-toolbar-breadcrumb/*": ["packages/toolbars/breadcrumb/*"],
5253
"@opentiny/tiny-engine-toolbar-fullscreen/*": ["packages/toolbars/fullscreen/*"],
5354
"@opentiny/tiny-engine-toolbar-lang/*": ["packages/toolbars/lang/*"],
55+
"@opentiny/tiny-engine-toolbar-view-setting/*": ["packages/toolbars/view-setting/*"],
5456
"@opentiny/tiny-engine-toolbar-layout/*": ["packages/toolbars/layout/*"],
5557
"@opentiny/tiny-engine-toolbar-lock/*": ["packages/toolbars/lock/*"],
5658
"@opentiny/tiny-engine-toolbar-logo/*": ["packages/toolbars/logo/*"],

mockServer/src/mock/get/app-center/v1/apps/schema/918.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2092,7 +2092,8 @@
20922092
"value": "",
20932093
"package": "axios",
20942094
"destructuring": false,
2095-
"exportName": "axios"
2095+
"exportName": "axios",
2096+
"cdnLink": "https://unpkg.com/browse/[email protected]/dist/esm/axios.min.js"
20962097
}
20972098
},
20982099
{

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"devDependencies": {
2525
"@babel/eslint-parser": "^7.21.3",
2626
"@types/node": "^18.0.0",
27+
"@vue/eslint-config-typescript": "^11.0.3",
2728
"chokidar": "^3.5.3",
2829
"concurrently": "^8.2.0",
2930
"cross-env": "^7.0.3",

packages/block-compiler/package.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,7 @@
3131
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
3232
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
3333
"@types/babel__core": "^7.20.5",
34-
"@typescript-eslint/eslint-plugin": "^8.14.0",
35-
"@typescript-eslint/parser": "^8.14.0",
3634
"@vitejs/plugin-vue": "^5.1.2",
37-
"eslint": "^8.38.0",
3835
"typescript": "~5.4.2",
3936
"vite": "^5.4.2",
4037
"vite-plugin-dts": "^4.3.0"

packages/build/vite-config/src/default-config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const getDefaultConfig = (engineConfig) => {
2929
base: './',
3030
publicDir: path.resolve(root, './public'),
3131
resolve: {
32-
extensions: ['.js', '.jsx', '.vue'],
32+
extensions: ['.js', '.jsx', '.vue', '.ts', '.tsx'],
3333
alias: {}
3434
},
3535
server: {

packages/build/vite-config/src/vite-plugins/devAliasPlugin.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ const getDevAlias = (useSourceAlias) => {
3636
'@opentiny/tiny-engine-toolbar-breadcrumb': path.resolve(basePath, 'packages/toolbars/breadcrumb/index.js'),
3737
'@opentiny/tiny-engine-toolbar-fullscreen': path.resolve(basePath, 'packages/toolbars/fullscreen/index.js'),
3838
'@opentiny/tiny-engine-toolbar-lang': path.resolve(basePath, 'packages/toolbars/lang/index.js'),
39+
'@opentiny/tiny-engine-toolbar-view-setting': path.resolve(basePath, 'packages/toolbars/view-setting/index.js'),
3940
'@opentiny/tiny-engine-toolbar-layout': path.resolve(basePath, 'packages/toolbars/layout/index.js'),
4041
'@opentiny/tiny-engine-toolbar-lock': path.resolve(basePath, 'packages/toolbars/lock/index.js'),
4142
'@opentiny/tiny-engine-toolbar-logo': path.resolve(basePath, 'packages/toolbars/logo/index.js'),
@@ -53,7 +54,7 @@ const getDevAlias = (useSourceAlias) => {
5354
'@opentiny/tiny-engine-theme-light': path.resolve(basePath, 'packages/theme/light/index.less'),
5455
'@opentiny/tiny-engine-theme-base': path.resolve(basePath, 'packages/theme/base/src/index.js'),
5556
'@opentiny/tiny-engine-svgs': path.resolve(basePath, 'packages/svgs/index.js'),
56-
'@opentiny/tiny-engine-canvas/render': path.resolve(basePath, 'packages/canvas/render/index.js'),
57+
'@opentiny/tiny-engine-canvas/render': path.resolve(basePath, 'packages/canvas/render/index.ts'),
5758
'@opentiny/tiny-engine-canvas': path.resolve(basePath, 'packages/canvas/index.js'),
5859
'@opentiny/tiny-engine-utils': path.resolve(basePath, 'packages/utils/src/index.js'),
5960
'@opentiny/tiny-engine-webcomponent-core': path.resolve(basePath, 'packages/webcomponent/src/lib.js'),

packages/canvas/.eslintrc.cjs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,23 @@
99
* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
1010
*
1111
*/
12-
1312
module.exports = {
1413
env: {
1514
browser: true,
1615
es2015: true,
1716
node: true,
1817
jest: true
1918
},
20-
extends: ['eslint:recommended', 'plugin:vue/vue3-essential'],
19+
extends: ['eslint:recommended', 'plugin:vue/vue3-essential', '@vue/eslint-config-typescript'],
2120
parser: 'vue-eslint-parser',
2221
parserOptions: {
23-
parser: '@babel/eslint-parser',
22+
parser: '@typescript-eslint/parser',
2423
ecmaVersion: 'latest',
2524
sourceType: 'module',
2625
requireConfigFile: false,
2726
babelOptions: {
2827
parserOpts: {
29-
plugins: ['jsx']
28+
plugins: ['jsx', 'typescript']
3029
}
3130
}
3231
},
@@ -37,6 +36,8 @@ module.exports = {
3736
'space-before-function-paren': 'off',
3837
'vue/multi-word-component-names': 'off',
3938
'no-use-before-define': 'error',
40-
'no-unused-vars': ['error', { ignoreRestSiblings: true, varsIgnorePattern: '^_', argsIgnorePattern: '^_' }]
39+
'no-unused-vars': 'off',
40+
'@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true, varsIgnorePattern: '^_', argsIgnorePattern: '^_' }],
41+
'import/no-inner-modules': 'off'
4142
}
4243
}

packages/canvas/DesignCanvas/src/DesignCanvas.vue

Lines changed: 89 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<template>
22
<component :is="CanvasLayout">
3+
<template #header>
4+
<component v-if="!isBlock()" :is="CanvasRouteBar"></component>
5+
</template>
36
<template #container>
47
<component
58
:is="CanvasContainer.entry"
@@ -9,7 +12,8 @@
912
:canvas-src-doc="canvasSrcDoc"
1013
@remove="removeNode"
1114
@selected="nodeSelected"
12-
></component>
15+
>
16+
</component>
1317
</template>
1418
<template #footer>
1519
<component :is="CanvasBreadcrumb" :data="footData"></component>
@@ -18,20 +22,22 @@
1822
</template>
1923

2024
<script>
21-
import { ref, watch, onUnmounted } from 'vue'
25+
import { ref, watch, onUnmounted, onMounted } from 'vue'
2226
import {
2327
useProperties,
2428
useCanvas,
2529
useLayout,
2630
useMaterial,
2731
useHistory,
2832
useModal,
33+
usePage,
34+
useMessage,
2935
getMergeRegistry,
3036
getMergeMeta,
3137
getOptions,
3238
getMetaApi,
3339
META_SERVICE,
34-
useMessage,
40+
META_APP,
3541
useNotify
3642
} from '@opentiny/tiny-engine-meta-register'
3743
import { constants } from '@opentiny/tiny-engine-utils'
@@ -51,20 +57,29 @@ export default {
5157
setup() {
5258
const registry = getMergeRegistry('canvas')
5359
const materialsPanel = getMergeMeta('engine.plugins.materials')?.entry
54-
const { CanvasBreadcrumb } = registry.components
60+
const { CanvasRouteBar, CanvasBreadcrumb } = registry.components
5561
const CanvasLayout = registry.layout.entry
5662
const [CanvasContainer] = registry.metas
5763
const footData = ref([])
5864
const showMask = ref(true)
5965
const canvasRef = ref(null)
6066
let showModal = false // 弹窗标识
6167
const { canvasSrc = '' } = getOptions(meta.id) || {}
62-
let canvasSrcDoc = ''
68+
const canvasSrcDoc = ref('')
6369
64-
if (!canvasSrc) {
65-
const { importMap, importStyles } = getImportMapData(getMergeMeta('engine.config')?.importMapVersion)
66-
canvasSrcDoc = initCanvas(importMap, importStyles).html
67-
}
70+
useMessage().subscribe({
71+
topic: 'init_canvas_deps',
72+
subscriber: 'canvas_design_canvas',
73+
callback: (deps) => {
74+
if (canvasSrc) {
75+
return
76+
}
77+
78+
const { importMap, importStyles } = getImportMapData(getMergeMeta('engine.config')?.importMapVersion, deps)
79+
80+
canvasSrcDoc.value = initCanvas(importMap, importStyles).html
81+
}
82+
})
6883
6984
const removeNode = (node) => {
7085
const { pageState } = useCanvas()
@@ -73,6 +88,8 @@ export default {
7388
pageState.properties = null
7489
}
7590
91+
const isBlock = useCanvas().isBlock
92+
7693
watch(
7794
[() => useCanvas().isSaved(), () => useLayout().layoutState.pageStatus, () => useCanvas().getPageSchema()],
7895
([isSaved, pageStatus, pageSchema], [oldIsSaved, _oldPageStatus, oldPageSchema]) => {
@@ -173,6 +190,63 @@ export default {
173190
canvasResizeObserver?.disconnect?.()
174191
})
175192
193+
const { addToCallbackFns: addHistoryDataChangedCallback } = (function () {
194+
const callbackFns = new Set()
195+
196+
const { subscribe, unsubscribe } = useMessage()
197+
let sub
198+
199+
onMounted(() => {
200+
sub = subscribe({
201+
topic: 'locationHistoryChanged',
202+
subscriber: 'canvas_design_canvas_controller',
203+
callback: (value) => callbackFns.forEach((cb) => cb(value))
204+
})
205+
})
206+
207+
onUnmounted(() => {
208+
if (sub) {
209+
unsubscribe(sub)
210+
}
211+
})
212+
213+
function addToCallbackFns(cb) {
214+
callbackFns.add(cb)
215+
return () => callbackFns.delete(cb)
216+
}
217+
return {
218+
addToCallbackFns
219+
}
220+
})()
221+
222+
// TODO: 待挪到 getBaseInfo
223+
const baseInfoKeys = Object.keys(getMetaApi(META_SERVICE.GlobalService).getBaseInfo())
224+
function replaceKey(key) {
225+
const existingKey = baseInfoKeys.find((eKey) => eKey.toLowerCase() === key.toLowerCase())
226+
if (existingKey) {
227+
return existingKey
228+
}
229+
return key
230+
}
231+
const postUrlChanged = () => {
232+
usePage().postLocationHistoryChanged(
233+
Object.fromEntries(
234+
Array.from(new URLSearchParams(window.location.search)).map(([key, value]) => [replaceKey(key), value])
235+
)
236+
)
237+
}
238+
onMounted(() => {
239+
window.addEventListener('popstate', postUrlChanged)
240+
})
241+
onUnmounted(() => {
242+
window.removeEventListener('popstate', postUrlChanged)
243+
244+
useMessage().unsubscribe({
245+
topic: 'init_canvas_deps',
246+
subscriber: 'canvas_design_canvas'
247+
})
248+
})
249+
176250
return {
177251
removeNode,
178252
canvasSrc,
@@ -186,15 +260,21 @@ export default {
186260
getMaterial: useMaterial().getMaterial,
187261
addHistory: useHistory().addHistory,
188262
request: getMetaApi(META_SERVICE.Http).getHttp(),
263+
getPageById: getMetaApi(META_APP.AppManage).getPageById,
264+
getPageAncestors: usePage().getAncestors,
265+
getBaseInfo: () => getMetaApi(META_SERVICE.GlobalService).getBaseInfo(),
266+
addHistoryDataChangedCallback,
189267
ast,
190268
getBlockByName: useMaterial().getBlockByName,
191269
useModal,
192270
useMessage,
193271
useNotify
194272
},
273+
isBlock,
195274
CanvasLayout,
196275
canvasRef,
197276
CanvasContainer,
277+
CanvasRouteBar,
198278
CanvasBreadcrumb
199279
}
200280
}

0 commit comments

Comments
 (0)