@xtalpi/agentic-lab-skills 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +1 -1
  2. package/package.json +14 -14
  3. package/skills/lab-flow-designer/SKILL.md +612 -593
  4. package/skills/lab-flow-designer/embedded-template/SKILL.md +103 -88
  5. package/skills/lab-flow-designer/embedded-template/pools//345/205/245/345/217/243/346/261/240.md +21 -12
  6. package/skills/lab-flow-designer/embedded-template/pools//345/207/272/345/217/243/346/261/240.md +21 -12
  7. package/skills/lab-flow-designer/embedded-template/scripts//347/244/272/344/276/213/346/225/260/346/215/256/344/270/216/346/240/241/351/252/214/351/227/250/346/216/247.js +142 -142
  8. package/skills/lab-flow-designer/embedded-template/valves//347/244/272/344/276/213/346/225/260/346/215/256/344/270/216/346/240/241/351/252/214/351/227/250/346/216/247.md +114 -99
  9. package/skills/lab-flow-designer/references/agentic-lab-processer.md +122 -78
  10. package/skills/lab-flow-designer/references/agentic-lab-sdk.md +534 -361
  11. package/skills/lab-flow-designer/references/rhea-api/README.md +7 -7
  12. package/skills/lab-flow-designer/references/rhea-api/execute_process_batch.md +58 -58
  13. package/skills/lab-flow-designer/references/skill-package-layout.md +268 -204
  14. package/skills/lab-flow-designer/references//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/346/240/207/345/207/206.md +216 -208
  15. package/skills/lab-flow-designer/templates//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/346/250/241/346/235/277.md +192 -169
  16. package/skills/lab-flow-designer/templates//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/347/244/272/344/276/213.md +207 -197
  17. package/skills/lab-flow-designer/testing/test-processer.mjs +1240 -1075
  18. package/skills/lab-nocobase-flow-generator/SKILL.md +164 -164
  19. package/skills/lab-nocobase-flow-generator/examples/setting/350/241/250/350/216/267/345/217/226/345/244/226/351/203/250/346/234/215/345/212/241.js +70 -70
  20. package/skills/lab-nocobase-flow-generator/examples//346/237/245/350/257/242/345/214/226/345/255/246/345/223/201/344/277/241/346/201/257.js +30 -30
  21. package/skills/lab-nocobase-flow-generator/references/doc-standard.md +84 -84
  22. package/skills/lab-nocobase-flow-generator/references/runtime-api.md +224 -224
  23. package/skills/lab-nocobase-flow-generator/templates//350/204/232/346/234/254/351/200/273/350/276/221/346/226/207/346/241/243/346/250/241/346/235/277.md +121 -121
  24. package/skills/lab-nocobase-flow-generator/templates//350/204/232/346/234/254/351/200/273/350/276/221/346/226/207/346/241/243/347/244/272/344/276/213.md +67 -67
  25. package/skills/lab-orbit-component-builder/SKILL.md +353 -353
  26. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.env.local.example +27 -27
  27. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintignore +7 -7
  28. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintrc.cjs +88 -88
  29. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.nvmrc +1 -1
  30. package/skills/lab-orbit-component-builder/examples/xnb-component-template/AgenticAppAPI.md +268 -268
  31. package/skills/lab-orbit-component-builder/examples/xnb-component-template/Jenkinsfile +106 -106
  32. package/skills/lab-orbit-component-builder/examples/xnb-component-template/OrbitAPI.md +453 -453
  33. package/skills/lab-orbit-component-builder/examples/xnb-component-template/README.md +176 -176
  34. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/public/index.html +12 -12
  35. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/App.vue +151 -151
  36. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/components/DevOpenerLauncher.vue +143 -143
  37. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/global.d.ts +77 -77
  38. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/main.ts +308 -308
  39. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/mockXNBBitable.ts +119 -119
  40. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/shims-vue.d.ts +6 -6
  41. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/utils/devOpenerHost.ts +75 -75
  42. package/skills/lab-orbit-component-builder/examples/xnb-component-template/index.html +13 -13
  43. package/skills/lab-orbit-component-builder/examples/xnb-component-template/package.json +60 -60
  44. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/api/agenticlabTickets.ts +110 -110
  45. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/bitable.ts +4 -4
  46. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/custom-page.ts +4 -4
  47. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/index.ts +1 -1
  48. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/styles/orbit-quasar-host.scss +19 -19
  49. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/context.ts +15 -15
  50. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/xnb-context.ts +70 -70
  51. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useBitablePage.ts +189 -189
  52. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperCellDemo.ts +257 -257
  53. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperTableBitableLifecycle.ts +555 -555
  54. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerInitParams.ts +158 -158
  55. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerTicketIds.ts +32 -32
  56. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/orbitHttpClient.ts +110 -110
  57. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/request.ts +92 -92
  58. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/bitable.vue +67 -67
  59. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/custom-page.vue +140 -140
  60. package/skills/lab-orbit-component-builder/examples/xnb-component-template/tsconfig.json +45 -45
  61. package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.config.ts +170 -170
  62. package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.dev.config.ts +58 -58
  63. package/skills/lab-orbit-component-builder/references/flow-document-human-ui.md +65 -65
  64. package/skills/lab-orbit-component-builder/references/orbit-vue-conventions.md +133 -133
  65. package/skills/lab-orbit-component-builder/references/pool-schema-to-columns.md +67 -67
  66. package/skills/lab-orbit-component-builder/references/vue-template-checklist.md +179 -179
  67. package/skills/lab-orbit-component-builder/references/xnb-context-vue-props.md +49 -49
  68. package/skills/lab-orbit-component-builder/references/xnbitable-vue-parity.md +32 -32
@@ -1,119 +1,119 @@
1
- import type { DemoBitableSheet, XNBBitableChoreo } from '../../src/types/xnb-context'
2
-
3
- /** 与 `useSuperTableBitableLifecycle` 中 listSub.index 对齐,便于 dev 命中子表 */
4
- const DEV_DEFAULT_INDEX = 'sheet-demo'
5
- const DEV_DEFAULT_NAME = '演示'
6
-
7
- type BitableItem = { id: string; fields: Record<string, string>; visible?: boolean }
8
-
9
- type MainBitable = {
10
- index: string
11
- name: string
12
- row: number
13
- items: BitableItem[]
14
- data_columns: Array<Record<string, unknown>>
15
- config: Record<string, unknown>
16
- xnb_show_sheetbar?: boolean
17
- xnb_hide_statisticbar?: boolean
18
- xnb_hide_toolbar?: boolean
19
- xnb_hide_formulaBar?: boolean
20
- xnb_excel_with_bg?: boolean
21
- xnb_height?: string
22
- }
23
-
24
- /**
25
- * Dev 专用:模拟宿主注入的 XNBBitable,便于 `bitable` 视图演练
26
- * `new XNBBitable({ bookPath, cellUid })` 与 `getSubCell` / `getAllSubBitable` / `addColumns` 等调用链。
27
- * 真机行为以 Orbit / 业务实现为准。
28
- */
29
- export class DevXNBBitable implements XNBBitableChoreo {
30
- bookPath: string
31
- cellUid: string
32
-
33
- private readonly main: MainBitable
34
-
35
- constructor (opts: { bookPath: string; cellUid: string }) {
36
- this.bookPath = opts.bookPath
37
- this.cellUid = opts.cellUid
38
- this.main = {
39
- index: DEV_DEFAULT_INDEX,
40
- name: DEV_DEFAULT_NAME,
41
- row: 200,
42
- items: [],
43
- data_columns: [],
44
- config: {}
45
- }
46
- }
47
-
48
- async getSubCell (): Promise<string | null> {
49
- return `mock-subcell::${this.cellUid}`
50
- }
51
-
52
- async getAllSubBitable (refresh?: boolean): Promise<DemoBitableSheet[]> {
53
- if (refresh === true) {
54
- /* dev mock 不区分 refresh;与真机签名对齐 */
55
- }
56
- return [this.main]
57
- }
58
-
59
- async getSubBitable (refresh?: boolean): Promise<DemoBitableSheet> {
60
- if (refresh === true) {
61
- /* dev mock 不区分 refresh;与真机签名对齐 */
62
- }
63
- return this.main
64
- }
65
-
66
- async addColumns (bitable: Record<string, unknown>, cols: unknown[], extra: unknown[]): Promise<void> {
67
- if (Array.isArray(extra) && extra.length > 0) {
68
- /* 第三参占位;真机可能传列元数据 */
69
- }
70
- const list = Array.isArray(cols) ? cols : []
71
- const prev = Array.isArray(bitable.data_columns)
72
- ? (bitable.data_columns as Array<Record<string, unknown>>)
73
- : []
74
- const offset = prev.length
75
- bitable.data_columns = [
76
- ...prev,
77
- ...list.map((col: unknown, i: number) => ({
78
- ...(typeof col === 'object' && col !== null ? (col as Record<string, unknown>) : {}),
79
- c: offset + i
80
- }))
81
- ]
82
- }
83
-
84
- async createSubBitable (bitables: unknown[], sheetName: string): Promise<string> {
85
- console.log('[DevXNBBitable] createSubBitable', sheetName, bitables)
86
- const first = bitables[0] as Partial<MainBitable> | undefined
87
- if (first != null) {
88
- if (typeof first.index === 'string') this.main.index = first.index
89
- if (typeof first.name === 'string') this.main.name = first.name
90
- if (typeof first.row === 'number') this.main.row = first.row
91
- if (Array.isArray(first.items)) this.main.items = [...first.items] as BitableItem[]
92
- if (Array.isArray(first.data_columns)) {
93
- this.main.data_columns = [...first.data_columns] as MainBitable['data_columns']
94
- }
95
- if (first.config != null && typeof first.config === 'object' && !Array.isArray(first.config)) {
96
- this.main.config = { ...(first.config as Record<string, unknown>) }
97
- }
98
- }
99
- return `mock-created-${sheetName}`
100
- }
101
-
102
- async updateSubBitable (bitables: unknown[], _opts?: Record<string, unknown>): Promise<void> {
103
- const first = bitables[0] as Partial<MainBitable> | undefined
104
- if (first == null) return
105
- if (first !== this.main) {
106
- if (Array.isArray(first.items)) this.main.items = [...first.items] as BitableItem[]
107
- if (Array.isArray(first.data_columns)) {
108
- this.main.data_columns = [...first.data_columns]
109
- }
110
- }
111
- console.log('[DevXNBBitable] updateSubBitable', bitables, _opts)
112
- }
113
-
114
- async delay (ms: number): Promise<void> {
115
- await new Promise<void>((resolve: () => void) => {
116
- setTimeout(resolve, ms)
117
- })
118
- }
119
- }
1
+ import type { DemoBitableSheet, XNBBitableChoreo } from '../../src/types/xnb-context'
2
+
3
+ /** 与 `useSuperTableBitableLifecycle` 中 listSub.index 对齐,便于 dev 命中子表 */
4
+ const DEV_DEFAULT_INDEX = 'sheet-demo'
5
+ const DEV_DEFAULT_NAME = '演示'
6
+
7
+ type BitableItem = { id: string; fields: Record<string, string>; visible?: boolean }
8
+
9
+ type MainBitable = {
10
+ index: string
11
+ name: string
12
+ row: number
13
+ items: BitableItem[]
14
+ data_columns: Array<Record<string, unknown>>
15
+ config: Record<string, unknown>
16
+ xnb_show_sheetbar?: boolean
17
+ xnb_hide_statisticbar?: boolean
18
+ xnb_hide_toolbar?: boolean
19
+ xnb_hide_formulaBar?: boolean
20
+ xnb_excel_with_bg?: boolean
21
+ xnb_height?: string
22
+ }
23
+
24
+ /**
25
+ * Dev 专用:模拟宿主注入的 XNBBitable,便于 `bitable` 视图演练
26
+ * `new XNBBitable({ bookPath, cellUid })` 与 `getSubCell` / `getAllSubBitable` / `addColumns` 等调用链。
27
+ * 真机行为以 Orbit / 业务实现为准。
28
+ */
29
+ export class DevXNBBitable implements XNBBitableChoreo {
30
+ bookPath: string
31
+ cellUid: string
32
+
33
+ private readonly main: MainBitable
34
+
35
+ constructor (opts: { bookPath: string; cellUid: string }) {
36
+ this.bookPath = opts.bookPath
37
+ this.cellUid = opts.cellUid
38
+ this.main = {
39
+ index: DEV_DEFAULT_INDEX,
40
+ name: DEV_DEFAULT_NAME,
41
+ row: 200,
42
+ items: [],
43
+ data_columns: [],
44
+ config: {}
45
+ }
46
+ }
47
+
48
+ async getSubCell (): Promise<string | null> {
49
+ return `mock-subcell::${this.cellUid}`
50
+ }
51
+
52
+ async getAllSubBitable (refresh?: boolean): Promise<DemoBitableSheet[]> {
53
+ if (refresh === true) {
54
+ /* dev mock 不区分 refresh;与真机签名对齐 */
55
+ }
56
+ return [this.main]
57
+ }
58
+
59
+ async getSubBitable (refresh?: boolean): Promise<DemoBitableSheet> {
60
+ if (refresh === true) {
61
+ /* dev mock 不区分 refresh;与真机签名对齐 */
62
+ }
63
+ return this.main
64
+ }
65
+
66
+ async addColumns (bitable: Record<string, unknown>, cols: unknown[], extra: unknown[]): Promise<void> {
67
+ if (Array.isArray(extra) && extra.length > 0) {
68
+ /* 第三参占位;真机可能传列元数据 */
69
+ }
70
+ const list = Array.isArray(cols) ? cols : []
71
+ const prev = Array.isArray(bitable.data_columns)
72
+ ? (bitable.data_columns as Array<Record<string, unknown>>)
73
+ : []
74
+ const offset = prev.length
75
+ bitable.data_columns = [
76
+ ...prev,
77
+ ...list.map((col: unknown, i: number) => ({
78
+ ...(typeof col === 'object' && col !== null ? (col as Record<string, unknown>) : {}),
79
+ c: offset + i
80
+ }))
81
+ ]
82
+ }
83
+
84
+ async createSubBitable (bitables: unknown[], sheetName: string): Promise<string> {
85
+ console.log('[DevXNBBitable] createSubBitable', sheetName, bitables)
86
+ const first = bitables[0] as Partial<MainBitable> | undefined
87
+ if (first != null) {
88
+ if (typeof first.index === 'string') this.main.index = first.index
89
+ if (typeof first.name === 'string') this.main.name = first.name
90
+ if (typeof first.row === 'number') this.main.row = first.row
91
+ if (Array.isArray(first.items)) this.main.items = [...first.items] as BitableItem[]
92
+ if (Array.isArray(first.data_columns)) {
93
+ this.main.data_columns = [...first.data_columns] as MainBitable['data_columns']
94
+ }
95
+ if (first.config != null && typeof first.config === 'object' && !Array.isArray(first.config)) {
96
+ this.main.config = { ...(first.config as Record<string, unknown>) }
97
+ }
98
+ }
99
+ return `mock-created-${sheetName}`
100
+ }
101
+
102
+ async updateSubBitable (bitables: unknown[], _opts?: Record<string, unknown>): Promise<void> {
103
+ const first = bitables[0] as Partial<MainBitable> | undefined
104
+ if (first == null) return
105
+ if (first !== this.main) {
106
+ if (Array.isArray(first.items)) this.main.items = [...first.items] as BitableItem[]
107
+ if (Array.isArray(first.data_columns)) {
108
+ this.main.data_columns = [...first.data_columns]
109
+ }
110
+ }
111
+ console.log('[DevXNBBitable] updateSubBitable', bitables, _opts)
112
+ }
113
+
114
+ async delay (ms: number): Promise<void> {
115
+ await new Promise<void>((resolve: () => void) => {
116
+ setTimeout(resolve, ms)
117
+ })
118
+ }
119
+ }
@@ -1,6 +1,6 @@
1
- /* eslint-disable */
2
- declare module '*.vue' {
3
- import type { DefineComponent } from 'vue'
4
- const component: DefineComponent<{}, {}, any>
5
- export default component
6
- }
1
+ /* eslint-disable */
2
+ declare module '*.vue' {
3
+ import type { DefineComponent } from 'vue'
4
+ const component: DefineComponent<{}, {}, any>
5
+ export default component
6
+ }
@@ -1,75 +1,75 @@
1
- /**
2
- * Dev 联调:当前页作为 opener 宿主,子页带 `?trace=` 调用 `fetchOpenerInitPayload`。
3
- * 回包格式与流程页一致:`get-data-response` + 平铺 `ticket_ids` / `valve_id`。
4
- */
5
-
6
- import { OPENER_MSG_GET_DATA_RESPONSE } from '@/utils/openerInitParams'
7
-
8
- export const DEV_OPENER_CHILD_QUERY = 'devOpenerChild'
9
-
10
- export function isDevOpenerChildPage (): boolean {
11
- const params = new URLSearchParams(window.location.search)
12
- return (
13
- params.get(DEV_OPENER_CHILD_QUERY) === '1'
14
- && window.opener != null
15
- && !window.opener.closed
16
- )
17
- }
18
-
19
- export function createDevOpenerTrace (): string {
20
- return `dev-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
21
- }
22
-
23
- export interface DevOpenerHostHandle {
24
- dispose: () => void
25
- }
26
-
27
- function flatFieldsFromPayload (payload: unknown): Record<string, unknown> {
28
- if (payload == null || typeof payload !== 'object') return {}
29
- const p = payload as Record<string, unknown>
30
- const out: Record<string, unknown> = {}
31
- if ('ticket_ids' in p) out.ticket_ids = p.ticket_ids
32
- if ('valve_id' in p) out.valve_id = p.valve_id
33
- return out
34
- }
35
-
36
- /**
37
- * 监听子页 `{ msg: 'get-data', trace }`,回 `{ msg: 'get-data-response', trace, ticket_ids, valve_id }`。
38
- */
39
- export function installDevOpenerHost (getPayload: () => unknown): DevOpenerHostHandle {
40
- const onMessage = (e: MessageEvent): void => {
41
- if (e.source == null || e.source === window) return
42
- const d = e.data as Record<string, unknown> | null
43
- if (d == null || typeof d !== 'object') return
44
- if (d.msg !== 'get-data') return
45
- const { trace } = d
46
- if (typeof trace !== 'string' || trace === '') return
47
-
48
- const flat = flatFieldsFromPayload(getPayload())
49
- const child = e.source as Window
50
- window.setTimeout(() => {
51
- child.postMessage(
52
- { msg: OPENER_MSG_GET_DATA_RESPONSE, trace, ...flat },
53
- '*'
54
- )
55
- console.log('[devOpenerHost] 已回包 get-data-response', { trace, ...flat })
56
- }, 0)
57
- }
58
-
59
- window.addEventListener('message', onMessage)
60
- return {
61
- dispose: (): void => {
62
- window.removeEventListener('message', onMessage)
63
- }
64
- }
65
- }
66
-
67
- /**
68
- * 打开子页(同源),URL 携带 `trace` 与 `devOpenerChild=1`。
69
- */
70
- export function openDevOpenerChild (trace: string): Window | null {
71
- const url = new URL(window.location.href)
72
- url.searchParams.set('trace', trace)
73
- url.searchParams.set(DEV_OPENER_CHILD_QUERY, '1')
74
- return window.open(url.toString(), `dev-opener-${trace}`)
75
- }
1
+ /**
2
+ * Dev 联调:当前页作为 opener 宿主,子页带 `?trace=` 调用 `fetchOpenerInitPayload`。
3
+ * 回包格式与流程页一致:`get-data-response` + 平铺 `ticket_ids` / `valve_id`。
4
+ */
5
+
6
+ import { OPENER_MSG_GET_DATA_RESPONSE } from '@/utils/openerInitParams'
7
+
8
+ export const DEV_OPENER_CHILD_QUERY = 'devOpenerChild'
9
+
10
+ export function isDevOpenerChildPage (): boolean {
11
+ const params = new URLSearchParams(window.location.search)
12
+ return (
13
+ params.get(DEV_OPENER_CHILD_QUERY) === '1'
14
+ && window.opener != null
15
+ && !window.opener.closed
16
+ )
17
+ }
18
+
19
+ export function createDevOpenerTrace (): string {
20
+ return `dev-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
21
+ }
22
+
23
+ export interface DevOpenerHostHandle {
24
+ dispose: () => void
25
+ }
26
+
27
+ function flatFieldsFromPayload (payload: unknown): Record<string, unknown> {
28
+ if (payload == null || typeof payload !== 'object') return {}
29
+ const p = payload as Record<string, unknown>
30
+ const out: Record<string, unknown> = {}
31
+ if ('ticket_ids' in p) out.ticket_ids = p.ticket_ids
32
+ if ('valve_id' in p) out.valve_id = p.valve_id
33
+ return out
34
+ }
35
+
36
+ /**
37
+ * 监听子页 `{ msg: 'get-data', trace }`,回 `{ msg: 'get-data-response', trace, ticket_ids, valve_id }`。
38
+ */
39
+ export function installDevOpenerHost (getPayload: () => unknown): DevOpenerHostHandle {
40
+ const onMessage = (e: MessageEvent): void => {
41
+ if (e.source == null || e.source === window) return
42
+ const d = e.data as Record<string, unknown> | null
43
+ if (d == null || typeof d !== 'object') return
44
+ if (d.msg !== 'get-data') return
45
+ const { trace } = d
46
+ if (typeof trace !== 'string' || trace === '') return
47
+
48
+ const flat = flatFieldsFromPayload(getPayload())
49
+ const child = e.source as Window
50
+ window.setTimeout(() => {
51
+ child.postMessage(
52
+ { msg: OPENER_MSG_GET_DATA_RESPONSE, trace, ...flat },
53
+ '*'
54
+ )
55
+ console.log('[devOpenerHost] 已回包 get-data-response', { trace, ...flat })
56
+ }, 0)
57
+ }
58
+
59
+ window.addEventListener('message', onMessage)
60
+ return {
61
+ dispose: (): void => {
62
+ window.removeEventListener('message', onMessage)
63
+ }
64
+ }
65
+ }
66
+
67
+ /**
68
+ * 打开子页(同源),URL 携带 `trace` 与 `devOpenerChild=1`。
69
+ */
70
+ export function openDevOpenerChild (trace: string): Window | null {
71
+ const url = new URL(window.location.href)
72
+ url.searchParams.set('trace', trace)
73
+ url.searchParams.set(DEV_OPENER_CHILD_QUERY, '1')
74
+ return window.open(url.toString(), `dev-opener-${trace}`)
75
+ }
@@ -1,13 +1,13 @@
1
- <!DOCTYPE html>
2
- <html lang="">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
- <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
7
- <title>Xnb Component Dev</title>
8
- </head>
9
- <body>
10
- <div id="app"></div>
11
- <script type="module" src="/dev/src/main.ts"></script>
12
- </body>
13
- </html>
1
+ <!DOCTYPE html>
2
+ <html lang="">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
7
+ <title>Xnb Component Dev</title>
8
+ </head>
9
+ <body>
10
+ <div id="app"></div>
11
+ <script type="module" src="/dev/src/main.ts"></script>
12
+ </body>
13
+ </html>
@@ -1,60 +1,60 @@
1
- {
2
- "name": "xnbOrbitComponent",
3
- "version": "0.2.0",
4
- "author": "yansen.lei",
5
- "main": "./dist/DemoOrbitBitable.umd.js",
6
- "type": "module",
7
- "engines": {
8
- "node": ">=22"
9
- },
10
- "scripts": {
11
- "dev": "vite --config vite.dev.config.ts",
12
- "dev:bitable": "VITE_COMPONENT_ID=bitable vite --config vite.dev.config.ts",
13
- "dev:custom-page": "VITE_COMPONENT_ID=custom-page vite --config vite.dev.config.ts",
14
- "build": "vite build --mode func",
15
- "build:bitable": "VITE_COMPONENT_ID=bitable vite build --mode func",
16
- "build:custom-page": "VITE_COMPONENT_ID=custom-page vite build --mode func",
17
- "build:all": "npm run build:bitable && npm run build:custom-page",
18
- "build:es": "vite build",
19
- "lint": "eslint --ext .js,.ts,.tsx,.vue src",
20
- "lint:fix": "eslint --fix --ext .js,.ts,.tsx,.vue src",
21
- "typecheck": "vue-tsc --noEmit"
22
- },
23
- "dependencies": {
24
- "@vueuse/core": "^10.2.1"
25
- },
26
- "devDependencies": {
27
- "dayjs": "^1.11.7",
28
- "@quasar/extras": "^1.14.1",
29
- "@quasar/vite-plugin": "1.6.0",
30
- "@typescript-eslint/eslint-plugin": "^7.0.0",
31
- "@typescript-eslint/parser": "^7.0.0",
32
- "@vitejs/plugin-vue": "^5.0.0",
33
- "@vue/compiler-sfc": "3.2.29",
34
- "@xtalpi/webb-api": "0.1.0",
35
- "axios": "^1.7.0",
36
- "eslint": "^8.57.0",
37
- "eslint-plugin-vue": "^9.28.0",
38
- "lodash": "^4.17.21",
39
- "quasar": "2.12.7",
40
- "rollup-plugin-external-globals": "^0.13.0",
41
- "sass": "~1.77.6",
42
- "typescript": "~5.5.0",
43
- "vue-tsc": "^2.0.0",
44
- "vite": "^5.4.0",
45
- "vite-plugin-compression": "^0.5.1",
46
- "vite-plugin-css-injected-by-js": "^3.5.2",
47
- "vue": "3.2.29"
48
- },
49
- "webb": {
50
- "name": "DemoOrbitVueLib",
51
- "type": "element",
52
- "exports": [
53
- {
54
- "name": "View",
55
- "category": "view"
56
- }
57
- ],
58
- "dependencies": {}
59
- }
60
- }
1
+ {
2
+ "name": "xnbOrbitComponent",
3
+ "version": "0.2.0",
4
+ "author": "yansen.lei",
5
+ "main": "./dist/DemoOrbitBitable.umd.js",
6
+ "type": "module",
7
+ "engines": {
8
+ "node": ">=22"
9
+ },
10
+ "scripts": {
11
+ "dev": "vite --config vite.dev.config.ts",
12
+ "dev:bitable": "VITE_COMPONENT_ID=bitable vite --config vite.dev.config.ts",
13
+ "dev:custom-page": "VITE_COMPONENT_ID=custom-page vite --config vite.dev.config.ts",
14
+ "build": "vite build --mode func",
15
+ "build:bitable": "VITE_COMPONENT_ID=bitable vite build --mode func",
16
+ "build:custom-page": "VITE_COMPONENT_ID=custom-page vite build --mode func",
17
+ "build:all": "npm run build:bitable && npm run build:custom-page",
18
+ "build:es": "vite build",
19
+ "lint": "eslint --ext .js,.ts,.tsx,.vue src",
20
+ "lint:fix": "eslint --fix --ext .js,.ts,.tsx,.vue src",
21
+ "typecheck": "vue-tsc --noEmit"
22
+ },
23
+ "dependencies": {
24
+ "@vueuse/core": "^10.2.1"
25
+ },
26
+ "devDependencies": {
27
+ "dayjs": "^1.11.7",
28
+ "@quasar/extras": "^1.14.1",
29
+ "@quasar/vite-plugin": "1.6.0",
30
+ "@typescript-eslint/eslint-plugin": "^7.0.0",
31
+ "@typescript-eslint/parser": "^7.0.0",
32
+ "@vitejs/plugin-vue": "^5.0.0",
33
+ "@vue/compiler-sfc": "3.2.29",
34
+ "@xtalpi/webb-api": "0.1.0",
35
+ "axios": "^1.7.0",
36
+ "eslint": "^8.57.0",
37
+ "eslint-plugin-vue": "^9.28.0",
38
+ "lodash": "^4.17.21",
39
+ "quasar": "2.12.7",
40
+ "rollup-plugin-external-globals": "^0.13.0",
41
+ "sass": "~1.77.6",
42
+ "typescript": "~5.5.0",
43
+ "vue-tsc": "^2.0.0",
44
+ "vite": "^5.4.0",
45
+ "vite-plugin-compression": "^0.5.1",
46
+ "vite-plugin-css-injected-by-js": "^3.5.2",
47
+ "vue": "3.2.29"
48
+ },
49
+ "webb": {
50
+ "name": "DemoOrbitVueLib",
51
+ "type": "element",
52
+ "exports": [
53
+ {
54
+ "name": "View",
55
+ "category": "view"
56
+ }
57
+ ],
58
+ "dependencies": {}
59
+ }
60
+ }