@ibiz-template/vue3-util 0.4.4 → 0.4.6-dev.0

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 (51) hide show
  1. package/dist/index.min.css +1 -1
  2. package/dist/index.system.min.js +1 -2
  3. package/es/index.mjs +4 -0
  4. package/es/panel-component/index.d.ts +2 -0
  5. package/es/panel-component/index.d.ts.map +1 -1
  6. package/es/panel-component/index.mjs +4 -0
  7. package/es/panel-component/panel-container-group/index.d.ts +29 -0
  8. package/es/panel-component/panel-container-group/index.d.ts.map +1 -0
  9. package/es/panel-component/panel-container-group/index.mjs +21 -0
  10. package/es/panel-component/panel-container-group/panel-container-group.controller.d.ts +32 -0
  11. package/es/panel-component/panel-container-group/panel-container-group.controller.d.ts.map +1 -0
  12. package/es/panel-component/panel-container-group/panel-container-group.controller.mjs +35 -0
  13. package/es/panel-component/panel-container-group/panel-container-group.css +1 -0
  14. package/es/panel-component/panel-container-group/panel-container-group.d.ts +29 -0
  15. package/es/panel-component/panel-container-group/panel-container-group.d.ts.map +1 -0
  16. package/es/panel-component/panel-container-group/panel-container-group.mjs +108 -0
  17. package/es/panel-component/panel-container-group/panel-container-group.provider.d.ts +16 -0
  18. package/es/panel-component/panel-container-group/panel-container-group.provider.d.ts.map +1 -0
  19. package/es/panel-component/panel-container-group/panel-container-group.provider.mjs +15 -0
  20. package/es/panel-component/panel-container-group/panel-container-group.state.d.ts +13 -0
  21. package/es/panel-component/panel-container-group/panel-container-group.state.d.ts.map +1 -0
  22. package/es/panel-component/panel-container-group/panel-container-group.state.mjs +7 -0
  23. package/es/panel-component/panel-tab-page/index.d.ts +24 -0
  24. package/es/panel-component/panel-tab-page/index.d.ts.map +1 -0
  25. package/es/panel-component/panel-tab-page/index.mjs +13 -0
  26. package/es/panel-component/panel-tab-page/panel-tab-page.d.ts +26 -0
  27. package/es/panel-component/panel-tab-page/panel-tab-page.d.ts.map +1 -0
  28. package/es/panel-component/panel-tab-page/panel-tab-page.mjs +63 -0
  29. package/es/panel-component/panel-tab-page/panel-tab-page.provider.d.ts +14 -0
  30. package/es/panel-component/panel-tab-page/panel-tab-page.provider.d.ts.map +1 -0
  31. package/es/panel-component/panel-tab-page/panel-tab-page.provider.mjs +15 -0
  32. package/es/plugin/plugin-factory/plugin-factory.d.ts +9 -0
  33. package/es/plugin/plugin-factory/plugin-factory.d.ts.map +1 -1
  34. package/es/plugin/plugin-factory/plugin-factory.mjs +44 -24
  35. package/es/util/route/route.d.ts.map +1 -1
  36. package/es/util/route/route.mjs +4 -1
  37. package/lib/index.cjs +21 -13
  38. package/package.json +6 -6
  39. package/src/panel-component/index.ts +2 -0
  40. package/src/panel-component/panel-container-group/index.ts +22 -0
  41. package/src/panel-component/panel-container-group/panel-container-group.controller.ts +43 -0
  42. package/src/panel-component/panel-container-group/panel-container-group.provider.ts +30 -0
  43. package/src/panel-component/panel-container-group/panel-container-group.scss +91 -0
  44. package/src/panel-component/panel-container-group/panel-container-group.state.ts +12 -0
  45. package/src/panel-component/panel-container-group/panel-container-group.tsx +112 -0
  46. package/src/panel-component/panel-tab-page/index.ts +12 -0
  47. package/src/panel-component/panel-tab-page/panel-tab-page.provider.ts +27 -0
  48. package/src/panel-component/panel-tab-page/panel-tab-page.tsx +55 -0
  49. package/src/plugin/plugin-factory/plugin-factory.ts +45 -23
  50. package/src/util/route/route.ts +4 -1
  51. package/dist/index.system.min.js.map +0 -1
@@ -0,0 +1,108 @@
1
+ import { isVNode, ref, computed, resolveComponent, createVNode, defineComponent } from 'vue';
2
+ import { PanelContainerGroupController } from './panel-container-group.controller.mjs';
3
+ import './panel-container-group.css';
4
+ import '../../use/index.mjs';
5
+ import { useNamespace } from '../../use/namespace/namespace.mjs';
6
+
7
+ "use strict";
8
+ function _isSlot(s) {
9
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
10
+ }
11
+ const PanelContainerGroup = /* @__PURE__ */ defineComponent({
12
+ name: "IBizPanelContainerGroup",
13
+ props: {
14
+ modelData: {
15
+ type: Object,
16
+ required: true
17
+ },
18
+ controller: {
19
+ type: PanelContainerGroupController,
20
+ required: true
21
+ }
22
+ },
23
+ setup(props) {
24
+ const ns = useNamespace("panel-container-group");
25
+ const isCollapse = ref(!props.controller.defaultExpansion);
26
+ const changeCollapse = () => {
27
+ if (!props.controller.disableClose) {
28
+ isCollapse.value = !isCollapse.value;
29
+ }
30
+ };
31
+ const captionText = computed(() => {
32
+ const {
33
+ captionItemName,
34
+ caption,
35
+ capLanguageRes
36
+ } = props.modelData;
37
+ if (captionItemName) {
38
+ return props.controller.data[captionItemName];
39
+ }
40
+ let text = caption;
41
+ if (capLanguageRes) {
42
+ text = ibiz.i18n.t(capLanguageRes.lanResTag, caption);
43
+ }
44
+ return text;
45
+ });
46
+ return {
47
+ ns,
48
+ captionText,
49
+ changeCollapse,
50
+ isCollapse
51
+ };
52
+ },
53
+ render() {
54
+ var _a, _b;
55
+ let _slot;
56
+ const classArr = [this.ns.b(), this.ns.m(this.modelData.id), ...this.controller.containerClass, this.ns.is("hidden", !this.controller.state.visible)];
57
+ if (this.modelData.showCaption === true) {
58
+ classArr.push(this.ns.m("show-header"));
59
+ classArr.push(this.ns.b("collapse"));
60
+ classArr.push(this.ns.is("collapse", this.isCollapse));
61
+ if (this.controller.disableClose) {
62
+ classArr.push(this.ns.bm("collapse", "disable-close"));
63
+ }
64
+ }
65
+ const defaultSlots = ((_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a)) || [];
66
+ const content = createVNode(resolveComponent("iBizRow"), {
67
+ "slot": "content",
68
+ "layout": this.modelData.layout
69
+ }, _isSlot(_slot = defaultSlots.map((slot) => {
70
+ const props = slot.props;
71
+ if (!props || !props.controller) {
72
+ return slot;
73
+ }
74
+ return createVNode(resolveComponent("iBizCol"), {
75
+ "layoutPos": props.modelData.layoutPos,
76
+ "state": props.controller.state
77
+ }, _isSlot(slot) ? slot : {
78
+ default: () => [slot]
79
+ });
80
+ })) ? _slot : {
81
+ default: () => [_slot]
82
+ });
83
+ let header = null;
84
+ if (this.modelData.showCaption) {
85
+ header = createVNode("div", {
86
+ "class": [this.ns.b("header")],
87
+ "onClick": this.changeCollapse
88
+ }, [createVNode("div", {
89
+ "class": [this.ns.be("header", "left")]
90
+ }, [createVNode("div", {
91
+ "class": [this.ns.e("caption"), ...this.controller.labelClass]
92
+ }, [this.captionText])]), createVNode("div", {
93
+ "class": [this.ns.be("header", "right")]
94
+ }, [this.modelData.titleBarCloseMode !== void 0 && this.modelData.titleBarCloseMode !== 0 && (this.isCollapse ? createVNode("ion-icon", {
95
+ "name": "caret-forward-sharp"
96
+ }, null) : createVNode("ion-icon", {
97
+ "name": "caret-down-sharp"
98
+ }, null))])]);
99
+ }
100
+ return createVNode("div", {
101
+ "class": classArr
102
+ }, [header, createVNode("div", {
103
+ "class": [this.ns.b("content")]
104
+ }, [content])]);
105
+ }
106
+ });
107
+
108
+ export { PanelContainerGroup };
@@ -0,0 +1,16 @@
1
+ import { IPanelItemProvider, PanelController, PanelItemController } from '@ibiz-template/runtime';
2
+ import { IPanelContainer } from '@ibiz/model-core';
3
+ /**
4
+ * 面板分组容器适配器
5
+ *
6
+ * @author lxm
7
+ * @date 2022-09-19 22:09:03
8
+ * @export
9
+ * @class PanelContainerGroupProvider
10
+ * @implements {EditorProvider}
11
+ */
12
+ export declare class PanelContainerGroupProvider implements IPanelItemProvider {
13
+ component: string;
14
+ createController(panelItem: IPanelContainer, panel: PanelController, parent: PanelItemController | undefined): Promise<PanelItemController>;
15
+ }
16
+ //# sourceMappingURL=panel-container-group.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-container-group.provider.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-container-group/panel-container-group.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,YAAW,kBAAkB;IACpE,SAAS,EAAE,MAAM,CAA6B;IAExC,gBAAgB,CACpB,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,OAAO,CAAC,mBAAmB,CAAC;CAKhC"}
@@ -0,0 +1,15 @@
1
+ import { PanelContainerGroupController } from './panel-container-group.controller.mjs';
2
+
3
+ "use strict";
4
+ class PanelContainerGroupProvider {
5
+ constructor() {
6
+ this.component = "IBizPanelContainerGroup";
7
+ }
8
+ async createController(panelItem, panel, parent) {
9
+ const c = new PanelContainerGroupController(panelItem, panel, parent);
10
+ await c.init();
11
+ return c;
12
+ }
13
+ }
14
+
15
+ export { PanelContainerGroupProvider };
@@ -0,0 +1,13 @@
1
+ import { PanelItemState } from '@ibiz-template/runtime';
2
+ /**
3
+ * 面板分组容器状态
4
+ *
5
+ * @author lxm
6
+ * @date 2023-02-07 06:04:27
7
+ * @export
8
+ * @class PanelContainerGroupState
9
+ * @extends {PanelItemState}
10
+ */
11
+ export declare class PanelContainerGroupState extends PanelItemState {
12
+ }
13
+ //# sourceMappingURL=panel-container-group.state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-container-group.state.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-container-group/panel-container-group.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,cAAc;CAAG"}
@@ -0,0 +1,7 @@
1
+ import { PanelItemState } from '@ibiz-template/runtime';
2
+
3
+ "use strict";
4
+ class PanelContainerGroupState extends PanelItemState {
5
+ }
6
+
7
+ export { PanelContainerGroupState };
@@ -0,0 +1,24 @@
1
+ export declare const IBizPanelTabPage: import("../../util").TypeWithInstall<import("vue").DefineComponent<{
2
+ modelData: {
3
+ type: import("vue").PropType<import("@ibiz/model-core").IPanelContainer>;
4
+ required: true;
5
+ };
6
+ controller: {
7
+ type: typeof import("@ibiz-template/runtime").PanelItemController;
8
+ required: true;
9
+ };
10
+ }, {
11
+ ns: import("@ibiz-template/core").Namespace;
12
+ classArr: import("vue").ComputedRef<(string | false)[]>;
13
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
14
+ modelData: {
15
+ type: import("vue").PropType<import("@ibiz/model-core").IPanelContainer>;
16
+ required: true;
17
+ };
18
+ controller: {
19
+ type: typeof import("@ibiz-template/runtime").PanelItemController;
20
+ required: true;
21
+ };
22
+ }>>, {}, {}>>;
23
+ export default IBizPanelTabPage;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-tab-page/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;aAG3B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { registerPanelItemProvider } from '@ibiz-template/runtime';
2
+ import { PanelTabPage } from './panel-tab-page.mjs';
3
+ import { PanelTabPageProvider } from './panel-tab-page.provider.mjs';
4
+ import '../../util/index.mjs';
5
+ import { withInstall } from '../../util/install.mjs';
6
+
7
+ "use strict";
8
+ const IBizPanelTabPage = withInstall(PanelTabPage, function(v) {
9
+ v.component(PanelTabPage.name, PanelTabPage);
10
+ registerPanelItemProvider("TABPAGE", () => new PanelTabPageProvider());
11
+ });
12
+
13
+ export { IBizPanelTabPage, IBizPanelTabPage as default };
@@ -0,0 +1,26 @@
1
+ import { PropType } from 'vue';
2
+ import { IPanelContainer } from '@ibiz/model-core';
3
+ import { PanelItemController } from '@ibiz-template/runtime';
4
+ export declare const PanelTabPage: import("vue").DefineComponent<{
5
+ modelData: {
6
+ type: PropType<IPanelContainer>;
7
+ required: true;
8
+ };
9
+ controller: {
10
+ type: typeof PanelItemController;
11
+ required: true;
12
+ };
13
+ }, {
14
+ ns: import("@ibiz-template/core").Namespace;
15
+ classArr: import("vue").ComputedRef<(string | false)[]>;
16
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
17
+ modelData: {
18
+ type: PropType<IPanelContainer>;
19
+ required: true;
20
+ };
21
+ controller: {
22
+ type: typeof PanelItemController;
23
+ required: true;
24
+ };
25
+ }>>, {}, {}>;
26
+ //# sourceMappingURL=panel-tab-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-tab-page.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-tab-page/panel-tab-page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,QAAQ,EAAS,MAAM,KAAK,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;YAiDvB,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { isVNode, computed, resolveComponent, createVNode, defineComponent } from 'vue';
2
+ import { PanelItemController } from '@ibiz-template/runtime';
3
+ import '../../use/index.mjs';
4
+ import { useNamespace } from '../../use/namespace/namespace.mjs';
5
+
6
+ "use strict";
7
+ function _isSlot(s) {
8
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
9
+ }
10
+ const PanelTabPage = /* @__PURE__ */ defineComponent({
11
+ name: "IBizPanelTabPage",
12
+ props: {
13
+ modelData: {
14
+ // IPanelTabPage 不能使用 IPanelTabPage模型 否则会类型报错
15
+ type: Object,
16
+ required: true
17
+ },
18
+ controller: {
19
+ type: PanelItemController,
20
+ required: true
21
+ }
22
+ },
23
+ setup(props) {
24
+ const ns = useNamespace("panel-tab-page");
25
+ const classArr = computed(() => {
26
+ const {
27
+ id
28
+ } = props.modelData;
29
+ const result = [ns.b(), ns.m(id)];
30
+ result.push(...props.controller.containerClass);
31
+ return result;
32
+ });
33
+ return {
34
+ ns,
35
+ classArr
36
+ };
37
+ },
38
+ render() {
39
+ var _a, _b;
40
+ let _slot;
41
+ const defaultSlots = ((_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a)) || [];
42
+ return createVNode(resolveComponent("iBizRow"), {
43
+ "class": [this.ns.b(), this.ns.m(this.modelData.codeName), this.classArr],
44
+ "layout": this.modelData.layout
45
+ }, _isSlot(_slot = defaultSlots.map((slot) => {
46
+ const props = slot.props;
47
+ if (!props || !props.controller) {
48
+ return slot;
49
+ }
50
+ const c = props.controller;
51
+ return createVNode(resolveComponent("iBizCol"), {
52
+ "layoutPos": c.model.layoutPos,
53
+ "state": c.state
54
+ }, _isSlot(slot) ? slot : {
55
+ default: () => [slot]
56
+ });
57
+ })) ? _slot : {
58
+ default: () => [_slot]
59
+ });
60
+ }
61
+ });
62
+
63
+ export { PanelTabPage };
@@ -0,0 +1,14 @@
1
+ import { IPanelItemProvider, PanelController, PanelItemController } from '@ibiz-template/runtime';
2
+ import { IPanelItem } from '@ibiz/model-core';
3
+ /**
4
+ * 面板分页适配器
5
+ *
6
+ * @export
7
+ * @class PanelTabPageController
8
+ * @implements {IPanelItemProvider}
9
+ */
10
+ export declare class PanelTabPageProvider implements IPanelItemProvider {
11
+ component: string;
12
+ createController(panelItem: IPanelItem, panel: PanelController, parent: PanelItemController | undefined): Promise<PanelItemController>;
13
+ }
14
+ //# sourceMappingURL=panel-tab-page.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-tab-page.provider.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-tab-page/panel-tab-page.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,SAAS,EAAE,MAAM,CAAsB;IAEjC,gBAAgB,CACpB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,OAAO,CAAC,mBAAmB,CAAC;CAKhC"}
@@ -0,0 +1,15 @@
1
+ import { PanelItemController } from '@ibiz-template/runtime';
2
+
3
+ "use strict";
4
+ class PanelTabPageProvider {
5
+ constructor() {
6
+ this.component = "IBizPanelTabPage";
7
+ }
8
+ async createController(panelItem, panel, parent) {
9
+ const c = new PanelItemController(panelItem, panel, parent);
10
+ await c.init();
11
+ return c;
12
+ }
13
+ }
14
+
15
+ export { PanelTabPageProvider };
@@ -63,6 +63,15 @@ export declare class PluginFactory implements IPluginFactory {
63
63
  * @type {((string | RegExp)[])}
64
64
  */
65
65
  protected ignoreRules: (string | RegExp)[];
66
+ /**
67
+ * 插件加载队列
68
+ *
69
+ * @author chitanda
70
+ * @date 2023-12-05 16:12:04
71
+ * @protected
72
+ * @type {Map<string, Promise<boolean>>}
73
+ */
74
+ protected loadQueue: Map<string, Promise<boolean>>;
66
75
  /**
67
76
  * 是否忽略插件加载
68
77
  *
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-factory.d.ts","sourceRoot":"","sources":["../../../src/plugin/plugin-factory/plugin-factory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,WAAW,EAEX,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAmB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,SAA0B;IAE1C;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAElD;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAEjE;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;IAErC;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAa;IAElE;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAEhD;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAS/C;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzC;;;;;;OAMG;IACH,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAInD;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAMxB;;;;;;;OAOG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO3C;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBxD;;;;;;;OAOG;IACG,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAwCnB;;;;;;;;OAQG;cACa,UAAU,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDzE;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAuB3C"}
1
+ {"version":3,"file":"plugin-factory.d.ts","sourceRoot":"","sources":["../../../src/plugin/plugin-factory/plugin-factory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,WAAW,EAEX,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAmB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,SAA0B;IAE1C;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAElD;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAEjE;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;IAErC;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAa;IAElE;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAEhD;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAa;IAE/D;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAS/C;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzC;;;;;;OAMG;IACH,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAInD;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAMxB;;;;;;;OAOG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO3C;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAuCxD;;;;;;;OAOG;IACG,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAwCnB;;;;;;;;OAQG;cACa,UAAU,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCzE;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAuB3C"}
@@ -58,6 +58,15 @@ class PluginFactory {
58
58
  * @type {((string | RegExp)[])}
59
59
  */
60
60
  this.ignoreRules = [];
61
+ /**
62
+ * 插件加载队列
63
+ *
64
+ * @author chitanda
65
+ * @date 2023-12-05 16:12:04
66
+ * @protected
67
+ * @type {Map<string, Promise<boolean>>}
68
+ */
69
+ this.loadQueue = /* @__PURE__ */ new Map();
61
70
  }
62
71
  /**
63
72
  * 是否忽略插件加载
@@ -150,13 +159,35 @@ class PluginFactory {
150
159
  if (plugin.runtimeObject === true) {
151
160
  const pluginRef = plugin;
152
161
  if (pluginRef) {
162
+ const rtObjectName = pluginRef.rtobjectName;
163
+ const rtObjectRepo = pluginRef.rtobjectRepo;
164
+ if (this.isIgnore(rtObjectRepo)) {
165
+ return true;
166
+ }
167
+ if (this.pluginCache.has(rtObjectName)) {
168
+ return true;
169
+ }
170
+ if (this.loadQueue.has(rtObjectRepo)) {
171
+ const p = await this.loadQueue.get(rtObjectRepo);
172
+ try {
173
+ const result = await p;
174
+ return result;
175
+ } catch (error) {
176
+ return false;
177
+ }
178
+ }
153
179
  try {
154
- await this.loadPluginRef(
180
+ const p = this.loadPluginRef(
155
181
  pluginRef.rtobjectName,
156
182
  pluginRef.rtobjectRepo
157
183
  );
184
+ this.loadQueue.set(rtObjectRepo, p);
185
+ const result = await p;
186
+ return result;
158
187
  } catch (error) {
159
188
  throw new RuntimeModelError(pluginRef, `\u914D\u7F6E\u52A0\u8F7D\u5931\u8D25`);
189
+ } finally {
190
+ this.loadQueue.delete(rtObjectRepo);
160
191
  }
161
192
  }
162
193
  }
@@ -218,13 +249,9 @@ class PluginFactory {
218
249
  */
219
250
  async loadScript(remotePlugin) {
220
251
  const pluginPath = remotePlugin.repo;
221
- const { name, system, module, styles } = remotePlugin.config;
252
+ const { name, system, styles = [] } = remotePlugin.config;
222
253
  let scriptUrl = "";
223
- if (ibiz.env.dev) {
224
- scriptUrl = this.urlReg.test(pluginPath) ? `${pluginPath}/${pathBrowserify.join(module)}` : `${ibiz.env.pluginBaseUrl}/${pluginPath}/${pathBrowserify.join(module)}`;
225
- } else {
226
- scriptUrl = pathBrowserify.join(pluginPath, system);
227
- }
254
+ scriptUrl = pathBrowserify.join(pluginPath, system);
228
255
  if (scriptUrl) {
229
256
  if (this.cache.has(scriptUrl)) {
230
257
  return;
@@ -234,23 +261,16 @@ class PluginFactory {
234
261
  const styleUrls = (typeof styles === "string" ? [styles] : styles).map(
235
262
  (styleUrl) => this.parseUrl(path.join(pluginPath, styleUrl))
236
263
  );
237
- if (ibiz.env.dev) {
238
- data = await import(
239
- /* @vite-ignore */
240
- scriptUrl
241
- );
242
- } else {
243
- System.addImportMap({
244
- imports: {
245
- [name]: url
246
- },
247
- styles: {
248
- [name]: styleUrls
249
- }
250
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
251
- });
252
- data = await System.import(name);
253
- }
264
+ System.addImportMap({
265
+ imports: {
266
+ [name]: url
267
+ },
268
+ styles: {
269
+ [name]: styleUrls
270
+ }
271
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
272
+ });
273
+ data = await System.import(name);
254
274
  if (data) {
255
275
  if (data.default) {
256
276
  this.setPluginCode(data.default);
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/util/route/route.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,6BAA6B,IAAI,KAAK,EAAY,MAAM,YAAY,CAAC;AAE9E,OAAO,EAGL,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAkB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE7E;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CA+DxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAuD9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAS7D;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAYpC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,QAAQ,EACjB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAC3B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAwD3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,CAqDzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,OAAc,GACvB,MAAM,CAwBR;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,EAClE,KAAK,EAAE,MAAM,GACZ,IAAI,CAaN"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/util/route/route.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,6BAA6B,IAAI,KAAK,EAAY,MAAM,YAAY,CAAC;AAE9E,OAAO,EAGL,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAkB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE7E;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CA+DxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAuD9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAS7D;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAYpC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,QAAQ,EACjB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAC3B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAwD3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,CAqDzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,OAAc,GACvB,MAAM,CAwBR;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,EAClE,KAAK,EAAE,MAAM,GACZ,IAAI,CAaN"}
@@ -118,7 +118,10 @@ async function calcResRoutePath(routePath, context, appDataEntityId) {
118
118
  if (!appDataEntityId) {
119
119
  routePath.pathNodes[0].context = void 0;
120
120
  } else {
121
- const entity = await ibiz.hub.getAppDataEntity(appDataEntityId);
121
+ const entity = await ibiz.hub.getAppDataEntity(
122
+ appDataEntityId,
123
+ context.srfappid
124
+ );
122
125
  let match = getMatchResPath(context, entity);
123
126
  if (!match) {
124
127
  match = { path: "", keys: [entity.codeName.toLowerCase()] };
package/lib/index.cjs CHANGED
@@ -45,12 +45,16 @@ var index$8 = require('./panel-component/grid-container/index.cjs');
45
45
  var panelContainerImage_state = require('./panel-component/panel-container-image/panel-container-image.state.cjs');
46
46
  var panelContainerImage_controller = require('./panel-component/panel-container-image/panel-container-image.controller.cjs');
47
47
  var index$9 = require('./panel-component/panel-container-image/index.cjs');
48
+ var panelContainerGroup_state = require('./panel-component/panel-container-group/panel-container-group.state.cjs');
49
+ var panelContainerGroup_controller = require('./panel-component/panel-container-group/panel-container-group.controller.cjs');
50
+ var index$a = require('./panel-component/panel-container-group/index.cjs');
51
+ var index$b = require('./panel-component/panel-tab-page/index.cjs');
48
52
  var appRedirectView = require('./view/app-redirect-view/app-redirect-view.cjs');
49
- var index$a = require('./view/common/index.cjs');
53
+ var index$c = require('./view/common/index.cjs');
50
54
  var todoRedirect = require('./view/todo-redirect/todo-redirect.cjs');
51
- var index$b = require('./view/portal-view/index.cjs');
52
- var index$c = require('./control/panel/view-layout-panel/index.cjs');
53
- var index$d = require('./control/panel/panel/index.cjs');
55
+ var index$d = require('./view/portal-view/index.cjs');
56
+ var index$e = require('./control/panel/view-layout-panel/index.cjs');
57
+ var index$f = require('./control/panel/panel/index.cjs');
54
58
  var pluginFactory = require('./plugin/plugin-factory/plugin-factory.cjs');
55
59
  var clickOutside = require('./use/click-outside/click-outside.cjs');
56
60
  var useControlController = require('./use/control/use-control-controller/use-control-controller.cjs');
@@ -58,7 +62,7 @@ var event = require('./use/event/event.cjs');
58
62
  var focusBlur = require('./use/focus-blur/focus-blur.cjs');
59
63
  var namespace = require('./use/namespace/namespace.cjs');
60
64
  var route = require('./use/route/route.cjs');
61
- var index$e = require('./use/util/index.cjs');
65
+ var index$g = require('./use/util/index.cjs');
62
66
  var useViewController = require('./use/view/use-view-controller/use-view-controller.cjs');
63
67
  var vue = require('./use/vue/vue.cjs');
64
68
  var overlayContainer = require('./util/overlay-container/overlay-container.cjs');
@@ -72,7 +76,7 @@ var render = require('./util/render/render.cjs');
72
76
  var overlayViewUtil = require('./util/overlay-view-util/overlay-view-util.cjs');
73
77
  var appStore = require('./util/store/app-store/app-store.cjs');
74
78
  var uiStore = require('./util/store/ui-store/ui-store.cjs');
75
- var index$f = require('./util/store/index.cjs');
79
+ var index$h = require('./util/store/index.cjs');
76
80
  var common = require('./props/common.cjs');
77
81
  var textBox = require('./props/editor/text-box.cjs');
78
82
  var span = require('./props/editor/span.cjs');
@@ -138,12 +142,16 @@ exports.IBizGridContainer = index$8.IBizGridContainer;
138
142
  exports.PanelContainerImageState = panelContainerImage_state.PanelContainerImageState;
139
143
  exports.PanelContainerImageController = panelContainerImage_controller.PanelContainerImageController;
140
144
  exports.IBizPanelContainerImage = index$9.IBizPanelContainerImage;
145
+ exports.PanelContainerGroupState = panelContainerGroup_state.PanelContainerGroupState;
146
+ exports.PanelContainerGroupController = panelContainerGroup_controller.PanelContainerGroupController;
147
+ exports.IBizPanelContainerGroup = index$a.IBizPanelContainerGroup;
148
+ exports.IBizPanelTabPage = index$b.IBizPanelTabPage;
141
149
  exports.AppRedirectView = appRedirectView.AppRedirectView;
142
- exports.IBizView = index$a.IBizView;
150
+ exports.IBizView = index$c.IBizView;
143
151
  exports.TodoRedirect = todoRedirect.TodoRedirect;
144
- exports.IBizPortalView = index$b.IBizPortalView;
145
- exports.IBizViewLayoutPanelControl = index$c.IBizViewLayoutPanelControl;
146
- exports.IBizPanelControl = index$d.IBizPanelControl;
152
+ exports.IBizPortalView = index$d.IBizPortalView;
153
+ exports.IBizViewLayoutPanelControl = index$e.IBizViewLayoutPanelControl;
154
+ exports.IBizPanelControl = index$f.IBizPanelControl;
147
155
  exports.PluginFactory = pluginFactory.PluginFactory;
148
156
  exports.useClickOutside = clickOutside.useClickOutside;
149
157
  exports.useControlController = useControlController.useControlController;
@@ -152,8 +160,8 @@ exports.useFocusAndBlur = focusBlur.useFocusAndBlur;
152
160
  exports.useNamespace = namespace.useNamespace;
153
161
  exports.useRouteKey = route.useRouteKey;
154
162
  exports.useRouterQuery = route.useRouterQuery;
155
- exports.useCtx = index$e.useCtx;
156
- exports.useMobCtx = index$e.useMobCtx;
163
+ exports.useCtx = index$g.useCtx;
164
+ exports.useMobCtx = index$g.useMobCtx;
157
165
  exports.useViewController = useViewController.useViewController;
158
166
  exports.EmptyVNode = vue.EmptyVNode;
159
167
  exports.getOrigin = vue.getOrigin;
@@ -187,7 +195,7 @@ exports.openViewModal = overlayViewUtil.openViewModal;
187
195
  exports.openViewPopover = overlayViewUtil.openViewPopover;
188
196
  exports.useAppStore = appStore.useAppStore;
189
197
  exports.useUIStore = uiStore.useUIStore;
190
- exports.piniaInstance = index$f.piniaInstance;
198
+ exports.piniaInstance = index$h.piniaInstance;
191
199
  exports.RequiredProp = common.RequiredProp;
192
200
  exports.getGridInputIpProps = textBox.getGridInputIpProps;
193
201
  exports.getGridInputNumberProps = textBox.getGridInputNumberProps;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/vue3-util",
3
- "version": "0.4.4",
3
+ "version": "0.4.6-dev.0",
4
4
  "description": "vue3 工具包",
5
5
  "type": "module",
6
6
  "module": "es/index.mjs",
@@ -31,10 +31,10 @@
31
31
  "license": "MIT",
32
32
  "devDependencies": {
33
33
  "@ibiz-template/cli": "0.3.2",
34
- "@ibiz-template/core": "^0.4.0",
35
- "@ibiz-template/runtime": "^0.4.4",
34
+ "@ibiz-template/core": "^0.4.6-dev.0",
35
+ "@ibiz-template/runtime": "^0.4.6-dev.0",
36
36
  "@ibiz-template/theme": "^0.4.0",
37
- "@ibiz/model-core": "^0.0.23",
37
+ "@ibiz/model-core": "^0.0.26",
38
38
  "@types/path-browserify": "^1.0.2",
39
39
  "@types/qs": "^6.9.10",
40
40
  "@types/systemjs": "^6.13.5",
@@ -51,7 +51,7 @@
51
51
  "peerDependencies": {
52
52
  "@ibiz-template/core": "^0.4.0",
53
53
  "@ibiz-template/runtime": "^0.4.0",
54
- "@ibiz/model-core": "^0.0.23",
54
+ "@ibiz/model-core": "^0.0.26",
55
55
  "dayjs": "^1.11.10",
56
56
  "path-browserify": "^1.0.1",
57
57
  "pinia": "^2.1.7",
@@ -61,5 +61,5 @@
61
61
  "vue": "^3.3.4",
62
62
  "vue-router": "^4.2.4"
63
63
  },
64
- "gitHead": "283c09417c873f27c58087f33a93466940c1b002"
64
+ "gitHead": "b7cde546c542456de87377e49677bdd21b04449d"
65
65
  }
@@ -8,3 +8,5 @@ export * from './multi-data-container';
8
8
  export * from './single-data-container';
9
9
  export * from './grid-container';
10
10
  export * from './panel-container-image';
11
+ export * from './panel-container-group';
12
+ export * from './panel-tab-page';
@@ -0,0 +1,22 @@
1
+ import { App } from 'vue';
2
+ import { registerPanelItemProvider } from '@ibiz-template/runtime';
3
+ import { PanelContainerGroupState } from './panel-container-group.state';
4
+ import { PanelContainerGroupProvider } from './panel-container-group.provider';
5
+ import { PanelContainerGroupController } from './panel-container-group.controller';
6
+ import { PanelContainerGroup } from './panel-container-group';
7
+ import { withInstall } from '../../util';
8
+
9
+ export { PanelContainerGroupState, PanelContainerGroupController };
10
+
11
+ export const IBizPanelContainerGroup = withInstall(
12
+ PanelContainerGroup,
13
+ function (v: App) {
14
+ v.component(PanelContainerGroup.name, PanelContainerGroup);
15
+ registerPanelItemProvider(
16
+ 'CONTAINER_CONTAINER_GROUP',
17
+ () => new PanelContainerGroupProvider(),
18
+ );
19
+ },
20
+ );
21
+
22
+ export default IBizPanelContainerGroup;