layplux 1.0.1 → 2.0.1

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 (91) hide show
  1. package/dist/cjs/components/center-view/index.cjs +18 -28
  2. package/dist/cjs/components/corner-glow/index.cjs +11 -28
  3. package/dist/cjs/components/dropdown/index.cjs +136 -130
  4. package/dist/cjs/components/icon/index.cjs +29 -51
  5. package/dist/cjs/components/index.cjs +24 -25
  6. package/dist/cjs/components/panel-view/index.cjs +111 -114
  7. package/dist/cjs/components/popup/index.cjs +166 -151
  8. package/dist/cjs/components/title/index.cjs +34 -47
  9. package/dist/cjs/components/tooltip/index.cjs +70 -61
  10. package/dist/cjs/components/widget/index.cjs +52 -72
  11. package/dist/cjs/index.cjs +13 -40
  12. package/dist/cjs/layout/glass-overlay.cjs +15 -28
  13. package/dist/cjs/layout/layered-manager.cjs +20 -29
  14. package/dist/cjs/layout/layplux.cjs +19 -32
  15. package/dist/cjs/layout/root-pane.cjs +20 -38
  16. package/dist/cjs/layout/skeleton/bottom-area.cjs +26 -43
  17. package/dist/cjs/layout/skeleton/bottom-left-area.cjs +12 -29
  18. package/dist/cjs/layout/skeleton/bottom-right-area.cjs +11 -28
  19. package/dist/cjs/layout/skeleton/center-area.cjs +278 -371
  20. package/dist/cjs/layout/skeleton/index.cjs +7 -24
  21. package/dist/cjs/layout/skeleton/left-bottom-area.cjs +12 -29
  22. package/dist/cjs/layout/skeleton/left-top-area.cjs +12 -29
  23. package/dist/cjs/layout/skeleton/right-bottom-area.cjs +11 -28
  24. package/dist/cjs/layout/skeleton/right-top-area.cjs +11 -28
  25. package/dist/cjs/layout/skeleton/skeleton.cjs +55 -60
  26. package/dist/cjs/layout/skeleton/top-area.cjs +26 -43
  27. package/dist/cjs/locales/en-US.cjs +11 -30
  28. package/dist/cjs/locales/index.cjs +12 -30
  29. package/dist/cjs/locales/zh-CN.cjs +11 -30
  30. package/dist/cjs/managers/area.cjs +12 -25
  31. package/dist/cjs/managers/index.cjs +12 -20
  32. package/dist/cjs/managers/pane.cjs +12 -26
  33. package/dist/cjs/managers/skeleton.cjs +112 -124
  34. package/dist/cjs/managers/theme.cjs +8 -29
  35. package/dist/cjs/managers/widget-container.cjs +31 -31
  36. package/dist/cjs/managers/widget.cjs +63 -50
  37. package/dist/cjs/types/config.cjs +2 -16
  38. package/dist/cjs/types/index.cjs +2 -18
  39. package/dist/cjs/types/locale.cjs +2 -16
  40. package/dist/cjs/utils/event-bus.cjs +53 -49
  41. package/dist/cjs/utils/focus-tracker.cjs +66 -42
  42. package/dist/cjs/utils/index.cjs +23 -31
  43. package/dist/cjs/utils/unique-id.cjs +5 -24
  44. package/dist/cjs/utils/vue.cjs +20 -30
  45. package/dist/esm/components/center-view/index.mjs +15 -7
  46. package/dist/esm/components/corner-glow/index.mjs +8 -7
  47. package/dist/esm/components/dropdown/index.mjs +117 -101
  48. package/dist/esm/components/icon/index.mjs +24 -30
  49. package/dist/esm/components/index.mjs +7 -8
  50. package/dist/esm/components/panel-view/index.mjs +107 -98
  51. package/dist/esm/components/popup/index.mjs +155 -130
  52. package/dist/esm/components/title/index.mjs +29 -24
  53. package/dist/esm/components/tooltip/index.mjs +67 -40
  54. package/dist/esm/components/widget/index.mjs +45 -48
  55. package/dist/esm/index.mjs +4 -10
  56. package/dist/esm/layout/glass-overlay.mjs +12 -7
  57. package/dist/esm/layout/layered-manager.mjs +17 -8
  58. package/dist/esm/layout/layplux.mjs +14 -11
  59. package/dist/esm/layout/root-pane.mjs +16 -16
  60. package/dist/esm/layout/skeleton/bottom-area.mjs +23 -22
  61. package/dist/esm/layout/skeleton/bottom-left-area.mjs +9 -8
  62. package/dist/esm/layout/skeleton/bottom-right-area.mjs +8 -7
  63. package/dist/esm/layout/skeleton/center-area.mjs +251 -333
  64. package/dist/esm/layout/skeleton/index.mjs +1 -4
  65. package/dist/esm/layout/skeleton/left-bottom-area.mjs +9 -8
  66. package/dist/esm/layout/skeleton/left-top-area.mjs +9 -8
  67. package/dist/esm/layout/skeleton/right-bottom-area.mjs +8 -7
  68. package/dist/esm/layout/skeleton/right-top-area.mjs +8 -7
  69. package/dist/esm/layout/skeleton/skeleton.mjs +52 -39
  70. package/dist/esm/layout/skeleton/top-area.mjs +23 -22
  71. package/dist/esm/locales/en-US.mjs +9 -10
  72. package/dist/esm/locales/index.mjs +7 -9
  73. package/dist/esm/locales/zh-CN.mjs +9 -10
  74. package/dist/esm/managers/area.mjs +10 -5
  75. package/dist/esm/managers/index.mjs +3 -3
  76. package/dist/esm/managers/pane.mjs +9 -5
  77. package/dist/esm/managers/skeleton.mjs +97 -95
  78. package/dist/esm/managers/theme.mjs +6 -9
  79. package/dist/esm/managers/widget-container.mjs +28 -10
  80. package/dist/esm/managers/widget.mjs +55 -25
  81. package/dist/esm/types/config.mjs +1 -0
  82. package/dist/esm/types/index.mjs +1 -1
  83. package/dist/esm/types/locale.mjs +1 -0
  84. package/dist/esm/utils/event-bus.mjs +46 -17
  85. package/dist/esm/utils/focus-tracker.mjs +63 -23
  86. package/dist/esm/utils/index.mjs +7 -10
  87. package/dist/esm/utils/unique-id.mjs +3 -4
  88. package/dist/esm/utils/vue.mjs +13 -5
  89. package/dist/types/managers/skeleton.d.ts.map +1 -1
  90. package/dist/umd/index.js +2 -30
  91. package/package.json +18 -14
@@ -1,33 +1,15 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var panel_view_exports = {};
20
- __export(panel_view_exports, {
21
- PanelView: () => PanelView
22
- });
23
- module.exports = __toCommonJS(panel_view_exports);
24
- var import_jsx_runtime = require("vue/jsx-runtime");
25
- var import_vue = require("vue");
26
- var import_dropdown = require("../dropdown");
27
- var import_icon = require("../icon");
28
- var import_utils = require("../../utils");
29
- var import_locales = require("../../locales");
30
- const viewModeKeys = /* @__PURE__ */ new Set(["DockPinned", "DockUnpinned", "Undock"]);
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var index$1 = require('../dropdown/index.cjs');
5
+ var index$2 = require('../icon/index.cjs');
6
+ var index = require('../../locales/index.cjs');
7
+ var vue$1 = require('../../utils/vue.cjs');
8
+
9
+ function _isSlot(s) {
10
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
11
+ }
12
+ const viewModeKeys = new Set(['DockPinned', 'DockUnpinned', 'Undock']);
31
13
  function findItem(items, key) {
32
14
  if (!items) return;
33
15
  for (const item of items) {
@@ -38,21 +20,26 @@ function findItem(items, key) {
38
20
  }
39
21
  }
40
22
  }
41
- const PanelView = (0, import_vue.defineComponent)({
42
- name: "PanelView",
23
+ const PanelView = vue.defineComponent({
24
+ name: 'PanelView',
43
25
  props: {
44
26
  anchor: String,
45
27
  title: String,
46
28
  widget: Object,
47
29
  menuItems: Array
48
30
  },
49
- setup(props, { slots }) {
50
- const panelRef = (0, import_vue.ref)();
51
- const defaultLocale = (0, import_vue.ref)((0, import_locales.getBuiltInLocale)("zh-CN"));
52
- const locale = (0, import_vue.inject)("layplux-locale", defaultLocale);
53
- const handleClick = (key) => {
31
+ setup(props, {
32
+ slots
33
+ }) {
34
+ const panelRef = vue.ref();
35
+ const defaultLocale = vue.ref(index.getBuiltInLocale('zh-CN'));
36
+ const locale = vue.inject('layplux-locale', defaultLocale);
37
+ const handleClick = key => {
54
38
  const widget = props.widget;
55
- widget?.event?.emitGlobal(`panel:${widget.name}:menu-click`, { widget, key });
39
+ widget?.event?.emitGlobal(`panel:${widget.name}:menu-click`, {
40
+ widget,
41
+ key
42
+ });
56
43
  const widgetProps = widget?.config.props;
57
44
  const panelItems = widgetProps?.panelMenuItems;
58
45
  const panelItem = findItem(panelItems, key);
@@ -62,7 +49,7 @@ const PanelView = (0, import_vue.defineComponent)({
62
49
  }
63
50
  if (viewModeKeys.has(key)) {
64
51
  widget?.pane.setViewMode(key);
65
- } else if (key === "help") {
52
+ } else if (key === 'help') {
66
53
  widgetProps?.onHelpClick?.();
67
54
  }
68
55
  };
@@ -70,29 +57,32 @@ const PanelView = (0, import_vue.defineComponent)({
70
57
  props.widget?.focusable.active();
71
58
  }
72
59
  function renderItems(items, currentMode) {
73
- return items.map((item) => {
74
- if (item.type === "divider") {
75
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dropdown.DropdownDivider, {}, item.key ?? "divider");
60
+ return items.map(item => {
61
+ if (item.type === 'divider') {
62
+ return vue.createVNode(index$1.DropdownDivider, {
63
+ "key": item.key ?? 'divider'
64
+ }, null);
76
65
  }
77
- const k = item.key ?? "";
66
+ const k = item.key ?? '';
78
67
  if (item.children?.length) {
79
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
80
- import_dropdown.DropdownSubmenu,
81
- {
82
- title: item.label,
83
- icon: item.icon,
84
- getContainer: () => panelRef.value,
85
- children: renderItems(item.children, currentMode)
86
- },
87
- k
88
- );
68
+ let _slot;
69
+ return vue.createVNode(index$1.DropdownSubmenu, {
70
+ "key": k,
71
+ "title": item.label,
72
+ "icon": item.icon,
73
+ "getContainer": () => panelRef.value
74
+ }, _isSlot(_slot = renderItems(item.children, currentMode)) ? _slot : {
75
+ default: () => [_slot]
76
+ });
89
77
  }
90
- const disabled = currentMode !== void 0 && viewModeKeys.has(k) && currentMode === k;
91
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dropdown.DropdownItem, { eventKey: k, disabled, children: [
92
- item.icon,
93
- " ",
94
- item.label
95
- ] }, k);
78
+ const disabled = currentMode !== undefined && viewModeKeys.has(k) && currentMode === k;
79
+ return vue.createVNode(index$1.DropdownItem, {
80
+ "key": k,
81
+ "eventKey": k,
82
+ "disabled": disabled
83
+ }, {
84
+ default: () => [item.icon, vue.createTextVNode(" "), item.label]
85
+ });
96
86
  });
97
87
  }
98
88
  return () => {
@@ -104,63 +94,70 @@ const PanelView = (0, import_vue.defineComponent)({
104
94
  const hasPanelMenuItems = panelMenuItems && panelMenuItems.length > 0;
105
95
  const showHelp = widgetProps?.showHelp !== false;
106
96
  const loc = locale.value.panel;
107
- const finalInnerItems = [
108
- {
109
- key: "viewMode",
110
- label: loc.viewMode,
111
- children: [
112
- { key: "DockPinned", label: loc.dockPinned },
113
- { key: "DockUnpinned", label: loc.dockUnpinned },
114
- { key: "Undock", label: loc.undock }
115
- ]
116
- },
117
- { type: "divider" },
118
- ...showHelp ? [{ key: "help", label: loc.help }] : []
119
- ];
97
+ const finalInnerItems = [{
98
+ key: 'viewMode',
99
+ label: loc.viewMode,
100
+ children: [{
101
+ key: 'DockPinned',
102
+ label: loc.dockPinned
103
+ }, {
104
+ key: 'DockUnpinned',
105
+ label: loc.dockUnpinned
106
+ }, {
107
+ key: 'Undock',
108
+ label: loc.undock
109
+ }]
110
+ }, {
111
+ type: 'divider'
112
+ }, ...(showHelp ? [{
113
+ key: 'help',
114
+ label: loc.help
115
+ }] : [])];
120
116
  const panelTitleExtra = widgetProps?.panelTitleExtra;
121
117
  const panelActionsExtra = widgetProps?.panelActionsExtra;
122
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { ref: panelRef, id: widget?.id, class: "layplux-panel", onClick: handlePanelClick, children: [
123
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { class: "layplux-panel__header", children: [
124
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { class: "layplux-panel__title", children: props.title ?? widget?.name }),
125
- panelTitleExtra && (0, import_utils.createContent)(panelTitleExtra),
126
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { class: "layplux-panel__actions", children: [
127
- panelActionsExtra && (0, import_utils.createContent)(panelActionsExtra),
128
- slots.actionsExtra?.(),
129
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
130
- import_dropdown.Dropdown,
131
- {
132
- trigger: "click",
133
- placement: "bottom-start",
134
- onClick: handleClick,
135
- getContainer: () => panelRef.value,
136
- children: {
137
- default: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { class: "layplux-panel__action-btn", title: loc.more, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icon.MoreIcon, { size: 16 }) }),
138
- overlay: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dropdown.DropdownMenu, { children: [
139
- hasPanelMenuItems && renderItems(panelMenuItems),
140
- hasPanelMenuItems && hasCustomItems && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dropdown.DropdownDivider, {}),
141
- hasCustomItems && renderItems(props.menuItems),
142
- (hasPanelMenuItems || hasCustomItems) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dropdown.DropdownDivider, {}),
143
- renderItems(finalInnerItems, currentMode)
144
- ] })
145
- }
146
- }
147
- ),
148
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
149
- "button",
150
- {
151
- class: "layplux-panel__action-btn",
152
- title: loc.minimize,
153
- onClick: () => {
154
- widget?.event?.emitGlobal(`panel:${widget.name}:minimize`, { widget });
155
- widget?.container?.deactivate();
156
- },
157
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icon.MinimizeIcon, { size: 16 })
158
- }
159
- )
160
- ] })
161
- ] }),
162
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { id: props.anchor, class: "layplux-panel__body" })
163
- ] });
118
+ return vue.createVNode("div", {
119
+ "ref": panelRef,
120
+ "id": widget?.id,
121
+ "class": "layplux-panel",
122
+ "onClick": handlePanelClick
123
+ }, [vue.createVNode("div", {
124
+ "class": "layplux-panel__header"
125
+ }, [vue.createVNode("span", {
126
+ "class": "layplux-panel__title"
127
+ }, [props.title ?? widget?.name]), panelTitleExtra && vue$1.createContent(panelTitleExtra), vue.createVNode("div", {
128
+ "class": "layplux-panel__actions"
129
+ }, [panelActionsExtra && vue$1.createContent(panelActionsExtra), slots.actionsExtra?.(), vue.createVNode(index$1.Dropdown, {
130
+ "trigger": "click",
131
+ "placement": "bottom-start",
132
+ "onClick": handleClick,
133
+ "getContainer": () => panelRef.value
134
+ }, {
135
+ default: () => vue.createVNode("button", {
136
+ "class": "layplux-panel__action-btn",
137
+ "title": loc.more
138
+ }, [vue.createVNode(index$2.MoreIcon, {
139
+ "size": 16
140
+ }, null)]),
141
+ overlay: () => vue.createVNode(index$1.DropdownMenu, null, {
142
+ default: () => [hasPanelMenuItems && renderItems(panelMenuItems), hasPanelMenuItems && hasCustomItems && vue.createVNode(index$1.DropdownDivider, null, null), hasCustomItems && renderItems(props.menuItems), (hasPanelMenuItems || hasCustomItems) && vue.createVNode(index$1.DropdownDivider, null, null), renderItems(finalInnerItems, currentMode)]
143
+ })
144
+ }), vue.createVNode("button", {
145
+ "class": "layplux-panel__action-btn",
146
+ "title": loc.minimize,
147
+ "onClick": () => {
148
+ widget?.event?.emitGlobal(`panel:${widget.name}:minimize`, {
149
+ widget
150
+ });
151
+ widget?.container?.deactivate();
152
+ }
153
+ }, [vue.createVNode(index$2.MinimizeIcon, {
154
+ "size": 16
155
+ }, null)])])]), vue.createVNode("div", {
156
+ "id": props.anchor,
157
+ "class": "layplux-panel__body"
158
+ }, null)]);
164
159
  };
165
160
  }
166
161
  });
162
+
163
+ exports.PanelView = PanelView;