@composy/log-viewer-vue 0.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 (43) hide show
  1. package/README.md +46 -0
  2. package/dist/index.css +3 -0
  3. package/dist/index.js +260 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.min.css +3 -0
  6. package/dist/index.min.js +1 -0
  7. package/es/components/LogViewer.js +17 -0
  8. package/es/components/LogViewer.js.map +1 -0
  9. package/es/components/LogViewer.vue_vue_type_script_setup_true_lang.js +109 -0
  10. package/es/components/LogViewer.vue_vue_type_script_setup_true_lang.js.map +1 -0
  11. package/es/composables/useLogViewer.d.ts +116 -0
  12. package/es/composables/useLogViewer.d.ts.map +1 -0
  13. package/es/composables/useLogViewer.js +113 -0
  14. package/es/composables/useLogViewer.js.map +1 -0
  15. package/es/index.d.ts +15 -0
  16. package/es/index.d.ts.map +1 -0
  17. package/es/index.js +19 -0
  18. package/es/index.js.map +1 -0
  19. package/es/plugin.d.ts +8 -0
  20. package/es/plugin.d.ts.map +1 -0
  21. package/es/plugin.js +18 -0
  22. package/es/plugin.js.map +1 -0
  23. package/es/style/css.js +1 -0
  24. package/es/style/index.js +1 -0
  25. package/es/style/index.less +1 -0
  26. package/lib/components/LogViewer.cjs +21 -0
  27. package/lib/components/LogViewer.cjs.map +1 -0
  28. package/lib/components/LogViewer.vue_vue_type_script_setup_true_lang.cjs +109 -0
  29. package/lib/components/LogViewer.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  30. package/lib/composables/useLogViewer.cjs +114 -0
  31. package/lib/composables/useLogViewer.cjs.map +1 -0
  32. package/lib/composables/useLogViewer.d.ts +116 -0
  33. package/lib/index.cjs +53 -0
  34. package/lib/index.cjs.map +1 -0
  35. package/lib/index.d.ts +15 -0
  36. package/lib/package.json +3 -0
  37. package/lib/plugin.cjs +19 -0
  38. package/lib/plugin.cjs.map +1 -0
  39. package/lib/plugin.d.ts +8 -0
  40. package/lib/style/css.js +1 -0
  41. package/lib/style/index.css +2 -0
  42. package/lib/style/index.js +1 -0
  43. package/package.json +95 -0
package/README.md ADDED
@@ -0,0 +1,46 @@
1
+ # @composy/log-viewer-vue
2
+
3
+ 审计日志查看器 - 操作日志可视化与追溯(Vue 3 适配层)
4
+
5
+ ## 功能特性
6
+
7
+ - 🧩 Vue 3 组件
8
+ - 🪝 组合式函数 (Composables)
9
+ - ⚡ 响应式数据绑定
10
+
11
+ ## 安装
12
+
13
+ ```bash
14
+ npm install @composy/log-viewer-vue
15
+ ```
16
+
17
+ ## 快速开始
18
+
19
+ ```vue
20
+ <template>
21
+ <!-- 使用组件 -->
22
+ </template>
23
+
24
+ <script setup>
25
+ // import { /* 组件 */ } from '@composy/log-viewer-vue'
26
+ </script>
27
+ ```
28
+
29
+ ## 目录结构
30
+
31
+ ```
32
+ packages/vue/
33
+ ├── src/ # 源码
34
+ ├── package.json
35
+ ├── tsconfig.json # ESM 构建配置
36
+ └── tsconfig.cjs.json # CJS 构建配置
37
+ ```
38
+
39
+ ## 依赖
40
+
41
+ - `@composy/log-viewer-core` — 核心引擎
42
+ - `vue` ^3.3.0 (peerDependency)
43
+
44
+ ## License
45
+
46
+ MIT
package/dist/index.css ADDED
@@ -0,0 +1,3 @@
1
+ /* style/index.less */
2
+
3
+ /*# sourceMappingURL=src/style/index.less.map */
package/dist/index.js ADDED
@@ -0,0 +1,260 @@
1
+ /*!
2
+ * ***********************************
3
+ * @composy/log-viewer-vue v0.0.1 *
4
+ * Built with rollup *
5
+ * Build time: 2024-08-17 11:42:24 *
6
+ * Build mode: production *
7
+ * Minified: No *
8
+ * ***********************************
9
+ */
10
+ (function(global, factory) {
11
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue"), require("@composy/log-viewer-core")) : typeof define === "function" && define.amd ? define([
12
+ "exports",
13
+ "vue",
14
+ "@composy/log-viewer-core"
15
+ ], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.LDesignPackagesVue3 = {}, global.Vue, global.ComposyLogViewerCore));
16
+ })(this, function(exports, vue, _composy_log_viewer_core) {
17
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
18
+ //#region src/components/LogViewer.vue?vue&type=script&setup=true&lang.ts
19
+ var LogViewer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
20
+ __name: "LogViewer",
21
+ props: {
22
+ data: {
23
+ type: Array,
24
+ required: false,
25
+ default: () => []
26
+ },
27
+ filter: {
28
+ type: Object,
29
+ required: false
30
+ },
31
+ theme: {
32
+ type: String,
33
+ required: false,
34
+ default: "light"
35
+ },
36
+ pageSize: {
37
+ type: Number,
38
+ required: false,
39
+ default: 20
40
+ },
41
+ showFilter: {
42
+ type: Boolean,
43
+ required: false,
44
+ default: true
45
+ },
46
+ showDiff: {
47
+ type: Boolean,
48
+ required: false,
49
+ default: true
50
+ },
51
+ showAnomalyBadge: {
52
+ type: Boolean,
53
+ required: false,
54
+ default: true
55
+ }
56
+ },
57
+ emits: [
58
+ "entry-click",
59
+ "entry-expand",
60
+ "entry-collapse",
61
+ "filter-change",
62
+ "theme-change",
63
+ "page-change"
64
+ ],
65
+ setup(__props, { expose: __expose, emit: __emit }) {
66
+ const props = __props;
67
+ const emit = __emit;
68
+ const containerRef = (0, vue.ref)(null);
69
+ let instance = null;
70
+ (0, vue.onMounted)(() => {
71
+ if (!containerRef.value) return;
72
+ instance = (0, _composy_log_viewer_core.createLogViewer)({
73
+ container: containerRef.value,
74
+ data: props.data,
75
+ filter: props.filter,
76
+ theme: props.theme,
77
+ pageSize: props.pageSize,
78
+ showFilter: props.showFilter,
79
+ showDiff: props.showDiff,
80
+ showAnomalyBadge: props.showAnomalyBadge
81
+ });
82
+ instance.on("entry:click", (entry) => emit("entry-click", entry));
83
+ instance.on("entry:expand", (entry) => emit("entry-expand", entry));
84
+ instance.on("entry:collapse", (entry) => emit("entry-collapse", entry));
85
+ instance.on("filter:change", (filter) => emit("filter-change", filter));
86
+ instance.on("theme:change", (theme) => emit("theme-change", theme));
87
+ instance.on("page:change", (page) => emit("page-change", page));
88
+ });
89
+ (0, vue.watch)(() => props.data, (newData) => {
90
+ instance?.setData(newData);
91
+ }, { deep: true });
92
+ (0, vue.watch)(() => props.filter, (newFilter) => {
93
+ if (newFilter) instance?.setFilter(newFilter);
94
+ }, { deep: true });
95
+ (0, vue.watch)(() => props.theme, (newTheme) => {
96
+ instance?.setTheme(newTheme);
97
+ });
98
+ (0, vue.onUnmounted)(() => {
99
+ instance?.destroy();
100
+ instance = null;
101
+ });
102
+ __expose({ getInstance: () => instance });
103
+ return (_ctx, _cache) => {
104
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
105
+ ref_key: "containerRef",
106
+ ref: containerRef,
107
+ class: "lv-vue-root"
108
+ }, null, 512);
109
+ };
110
+ }
111
+ });
112
+ //#endregion
113
+ //#region src/components/LogViewer.vue
114
+ LogViewer_vue_vue_type_script_setup_true_lang_default.__file = "src/components/LogViewer.vue";
115
+ var LogViewer_default = LogViewer_vue_vue_type_script_setup_true_lang_default;
116
+ //#endregion
117
+ //#region src/composables/useLogViewer.ts
118
+ function useLogViewer() {
119
+ const instance = (0, vue.ref)(null);
120
+ const data = (0, vue.ref)([]);
121
+ const filter = (0, vue.ref)({});
122
+ const theme = (0, vue.ref)("light");
123
+ const pagination = (0, vue.ref)({
124
+ page: 1,
125
+ pageSize: 20
126
+ });
127
+ function create(container, config) {
128
+ if (instance.value) instance.value.destroy();
129
+ instance.value = (0, _composy_log_viewer_core.createLogViewer)({
130
+ container,
131
+ ...config
132
+ });
133
+ instance.value.on("data:change", (entries) => {
134
+ data.value = entries;
135
+ });
136
+ instance.value.on("filter:change", (f) => {
137
+ filter.value = f;
138
+ });
139
+ instance.value.on("theme:change", (t) => {
140
+ theme.value = t;
141
+ });
142
+ instance.value.on("page:change", () => {
143
+ if (instance.value) pagination.value = instance.value.getPagination();
144
+ });
145
+ if (config?.data) data.value = config.data;
146
+ if (config?.theme) theme.value = config.theme;
147
+ if (config?.filter) filter.value = config.filter;
148
+ }
149
+ function setData(entries) {
150
+ instance.value?.setData(entries);
151
+ data.value = entries;
152
+ }
153
+ function appendData(entries) {
154
+ instance.value?.appendData(entries);
155
+ data.value = instance.value?.getData() || [];
156
+ }
157
+ function setFilter(f) {
158
+ instance.value?.setFilter(f);
159
+ filter.value = f;
160
+ }
161
+ function resetFilter() {
162
+ instance.value?.resetFilter();
163
+ filter.value = {};
164
+ }
165
+ function setTheme(t) {
166
+ instance.value?.setTheme(t);
167
+ theme.value = t;
168
+ }
169
+ function expandEntry(id) {
170
+ instance.value?.expandEntry(id);
171
+ }
172
+ function collapseEntry(id) {
173
+ instance.value?.collapseEntry(id);
174
+ }
175
+ function collapseAll() {
176
+ instance.value?.collapseAll();
177
+ }
178
+ function goToPage(page) {
179
+ instance.value?.goToPage(page);
180
+ }
181
+ function refresh() {
182
+ instance.value?.refresh();
183
+ }
184
+ function destroy() {
185
+ instance.value?.destroy();
186
+ instance.value = null;
187
+ }
188
+ function on(event, callback) {
189
+ return instance.value?.on(event, callback) || (() => {});
190
+ }
191
+ (0, vue.onUnmounted)(() => {
192
+ destroy();
193
+ });
194
+ return {
195
+ instance,
196
+ data,
197
+ filter,
198
+ theme,
199
+ pagination,
200
+ create,
201
+ setData,
202
+ appendData,
203
+ setFilter,
204
+ resetFilter,
205
+ setTheme,
206
+ expandEntry,
207
+ collapseEntry,
208
+ collapseAll,
209
+ goToPage,
210
+ refresh,
211
+ destroy,
212
+ on
213
+ };
214
+ }
215
+ //#endregion
216
+ //#region src/plugin.ts
217
+ const LogViewerPlugin = { install(app) {
218
+ app.component("LogViewer", LogViewer_default);
219
+ } };
220
+ //#endregion
221
+ //#region src/index.ts
222
+ const VERSION = "0.1.0";
223
+ //#endregion
224
+ Object.defineProperty(exports, "ACTION_COLORS", {
225
+ enumerable: true,
226
+ get: function() {
227
+ return _composy_log_viewer_core.ACTION_COLORS;
228
+ }
229
+ });
230
+ Object.defineProperty(exports, "ACTION_LABELS", {
231
+ enumerable: true,
232
+ get: function() {
233
+ return _composy_log_viewer_core.ACTION_LABELS;
234
+ }
235
+ });
236
+ exports.LogViewer = LogViewer_default;
237
+ exports.LogViewerPlugin = LogViewerPlugin;
238
+ exports.VERSION = VERSION;
239
+ Object.defineProperty(exports, "createLogViewer", {
240
+ enumerable: true,
241
+ get: function() {
242
+ return _composy_log_viewer_core.createLogViewer;
243
+ }
244
+ });
245
+ Object.defineProperty(exports, "formatDate", {
246
+ enumerable: true,
247
+ get: function() {
248
+ return _composy_log_viewer_core.formatDate;
249
+ }
250
+ });
251
+ Object.defineProperty(exports, "formatRelativeTime", {
252
+ enumerable: true,
253
+ get: function() {
254
+ return _composy_log_viewer_core.formatRelativeTime;
255
+ }
256
+ });
257
+ exports.useLogViewer = useLogViewer;
258
+ });
259
+ /*! End of @composy/log-viewer-vue | Powered by @composy/builder */
260
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/components/LogViewer.vue","../src/components/LogViewer.vue","../src/composables/useLogViewer.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["<!--\n @file 日志查看器组件\n @description LDesign 日志查看器组件,支持日志过滤、差异对比、异常标记等功能\n-->\n<template>\n <div ref=\"containerRef\" class=\"lv-vue-root\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted, watch, toRefs } from 'vue'\nimport {\n createLogViewer,\n type LogViewerConfig,\n type LogEntry,\n type FilterConfig,\n type ThemeMode,\n type LogViewer as LogViewerInstance,\n} from '@composy/log-viewer-core'\n\nconst props = withDefaults(defineProps<{\n data?: LogEntry[]\n filter?: FilterConfig\n theme?: ThemeMode\n pageSize?: number\n showFilter?: boolean\n showDiff?: boolean\n showAnomalyBadge?: boolean\n}>(), {\n data: () => [],\n theme: 'light',\n pageSize: 20,\n showFilter: true,\n showDiff: true,\n showAnomalyBadge: true,\n})\n\nconst emit = defineEmits<{\n 'entry-click': [entry: LogEntry]\n 'entry-expand': [entry: LogEntry]\n 'entry-collapse': [entry: LogEntry]\n 'filter-change': [filter: FilterConfig]\n 'theme-change': [theme: ThemeMode]\n 'page-change': [page: number]\n}>()\n\nconst containerRef = ref<HTMLElement | null>(null)\nlet instance: LogViewerInstance | null = null\n\nonMounted(() => {\n if (!containerRef.value) return\n\n instance = createLogViewer({\n container: containerRef.value,\n data: props.data,\n filter: props.filter,\n theme: props.theme,\n pageSize: props.pageSize,\n showFilter: props.showFilter,\n showDiff: props.showDiff,\n showAnomalyBadge: props.showAnomalyBadge,\n })\n\n instance.on('entry:click', (entry: LogEntry) => emit('entry-click', entry))\n instance.on('entry:expand', (entry: LogEntry) => emit('entry-expand', entry))\n instance.on('entry:collapse', (entry: LogEntry) => emit('entry-collapse', entry))\n instance.on('filter:change', (filter: FilterConfig) => emit('filter-change', filter))\n instance.on('theme:change', (theme: ThemeMode) => emit('theme-change', theme))\n instance.on('page:change', (page: number) => emit('page-change', page))\n})\n\nwatch(() => props.data, (newData) => {\n instance?.setData(newData)\n}, { deep: true })\n\nwatch(() => props.filter, (newFilter) => {\n if (newFilter) instance?.setFilter(newFilter)\n}, { deep: true })\n\nwatch(() => props.theme, (newTheme) => {\n instance?.setTheme(newTheme)\n})\n\nonUnmounted(() => {\n instance?.destroy()\n instance = null\n})\n\ndefineExpose({\n getInstance: () => instance,\n})\n</script>\n","<!--\n @file 日志查看器组件\n @description LDesign 日志查看器组件,支持日志过滤、差异对比、异常标记等功能\n-->\n<template>\n <div ref=\"containerRef\" class=\"lv-vue-root\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted, watch, toRefs } from 'vue'\nimport {\n createLogViewer,\n type LogViewerConfig,\n type LogEntry,\n type FilterConfig,\n type ThemeMode,\n type LogViewer as LogViewerInstance,\n} from '@composy/log-viewer-core'\n\nconst props = withDefaults(defineProps<{\n data?: LogEntry[]\n filter?: FilterConfig\n theme?: ThemeMode\n pageSize?: number\n showFilter?: boolean\n showDiff?: boolean\n showAnomalyBadge?: boolean\n}>(), {\n data: () => [],\n theme: 'light',\n pageSize: 20,\n showFilter: true,\n showDiff: true,\n showAnomalyBadge: true,\n})\n\nconst emit = defineEmits<{\n 'entry-click': [entry: LogEntry]\n 'entry-expand': [entry: LogEntry]\n 'entry-collapse': [entry: LogEntry]\n 'filter-change': [filter: FilterConfig]\n 'theme-change': [theme: ThemeMode]\n 'page-change': [page: number]\n}>()\n\nconst containerRef = ref<HTMLElement | null>(null)\nlet instance: LogViewerInstance | null = null\n\nonMounted(() => {\n if (!containerRef.value) return\n\n instance = createLogViewer({\n container: containerRef.value,\n data: props.data,\n filter: props.filter,\n theme: props.theme,\n pageSize: props.pageSize,\n showFilter: props.showFilter,\n showDiff: props.showDiff,\n showAnomalyBadge: props.showAnomalyBadge,\n })\n\n instance.on('entry:click', (entry: LogEntry) => emit('entry-click', entry))\n instance.on('entry:expand', (entry: LogEntry) => emit('entry-expand', entry))\n instance.on('entry:collapse', (entry: LogEntry) => emit('entry-collapse', entry))\n instance.on('filter:change', (filter: FilterConfig) => emit('filter-change', filter))\n instance.on('theme:change', (theme: ThemeMode) => emit('theme-change', theme))\n instance.on('page:change', (page: number) => emit('page-change', page))\n})\n\nwatch(() => props.data, (newData) => {\n instance?.setData(newData)\n}, { deep: true })\n\nwatch(() => props.filter, (newFilter) => {\n if (newFilter) instance?.setFilter(newFilter)\n}, { deep: true })\n\nwatch(() => props.theme, (newTheme) => {\n instance?.setTheme(newTheme)\n})\n\nonUnmounted(() => {\n instance?.destroy()\n instance = null\n})\n\ndefineExpose({\n getInstance: () => instance,\n})\n</script>\n","/**\n * useLogViewer - Vue 3 组合式 API\n */\nimport { ref, onUnmounted } from 'vue'\nimport {\n createLogViewer,\n type LogViewer,\n type LogViewerConfig,\n type LogEntry,\n type FilterConfig,\n type ThemeMode,\n type PaginationConfig,\n} from '@composy/log-viewer-core'\n\n/**\n * useLogViewer - use Log Viewer function\n * @returns 返回值说明\n */\nexport function useLogViewer() {\n const instance = ref<LogViewer | null>(null)\n const data = ref<LogEntry[]>([])\n const filter = ref<FilterConfig>({})\n const theme = ref<ThemeMode>('light')\n const pagination = ref<PaginationConfig>({ page: 1, pageSize: 20 })\n\n function create(container: HTMLElement | string, config?: Partial<LogViewerConfig>) {\n if (instance.value) {\n instance.value.destroy()\n }\n\n instance.value = createLogViewer({\n container,\n ...config,\n })\n\n // Sync refs\n instance.value.on('data:change', (entries: LogEntry[]) => {\n data.value = entries\n })\n instance.value.on('filter:change', (f: FilterConfig) => {\n filter.value = f\n })\n instance.value.on('theme:change', (t: ThemeMode) => {\n theme.value = t\n })\n instance.value.on('page:change', () => {\n if (instance.value) {\n pagination.value = instance.value.getPagination()\n }\n })\n\n if (config?.data) data.value = config.data\n if (config?.theme) theme.value = config.theme\n if (config?.filter) filter.value = config.filter\n }\n\n function setData(entries: LogEntry[]) {\n instance.value?.setData(entries)\n data.value = entries\n }\n\n function appendData(entries: LogEntry[]) {\n instance.value?.appendData(entries)\n data.value = instance.value?.getData() || []\n }\n\n function setFilter(f: FilterConfig) {\n instance.value?.setFilter(f)\n filter.value = f\n }\n\n function resetFilter() {\n instance.value?.resetFilter()\n filter.value = {}\n }\n\n function setTheme(t: ThemeMode) {\n instance.value?.setTheme(t)\n theme.value = t\n }\n\n function expandEntry(id: string) {\n instance.value?.expandEntry(id)\n }\n\n function collapseEntry(id: string) {\n instance.value?.collapseEntry(id)\n }\n\n function collapseAll() {\n instance.value?.collapseAll()\n }\n\n function goToPage(page: number) {\n instance.value?.goToPage(page)\n }\n\n function refresh() {\n instance.value?.refresh()\n }\n\n function destroy() {\n instance.value?.destroy()\n instance.value = null\n }\n\n function on(event: string, callback: (...args: unknown[]) => void): () => void {\n return instance.value?.on(event, callback) || (() => {})\n }\n\n onUnmounted(() => {\n destroy()\n })\n\n return {\n instance,\n data,\n filter,\n theme,\n pagination,\n create,\n setData,\n appendData,\n setFilter,\n resetFilter,\n setTheme,\n expandEntry,\n collapseEntry,\n collapseAll,\n goToPage,\n refresh,\n destroy,\n on,\n }\n}\n","/**\n * Vue 插件 - 全局注册 LogViewer 组件\n */\nimport type { App } from 'vue'\nimport LogViewer from './components/LogViewer.vue'\n\nexport const LogViewerPlugin = {\n install(app: App) {\n app.component('LogViewer', LogViewer)\n },\n}\n","/**\n * @composy/log-viewer-vue\n *\n * 审计日志查看器 — Vue 3 适配层\n * 提供 LogViewer 组件、useLogViewer 组合式函数和 Vue 插件\n *\n * @packageDocumentation\n */\n\nexport const VERSION = '0.1.0'\n\n// 组件\nexport { default as LogViewer } from './components/LogViewer.vue'\n\n// 组合式 API\nexport { useLogViewer } from './composables/useLogViewer'\n\n// 插件\nexport { LogViewerPlugin } from './plugin'\n\n// 重新导出核心类型\nexport type {\n ActionType,\n ThemeMode,\n AnomalyType,\n DiffEntry,\n LogEntry,\n FilterConfig,\n PaginationConfig,\n LogViewerConfig,\n LogViewerInstance,\n LogViewerEvents,\n} from '@composy/log-viewer-core'\n\nexport {\n createLogViewer,\n ACTION_LABELS,\n ACTION_COLORS,\n formatDate,\n formatRelativeTime,\n} from '@composy/log-viewer-core'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmBA,MAAM,QAAQ;GAiBd,MAAM,OAAO;GASb,MAAM,gBAAA,GAAA,IAAA,IAAA,CAAuC,IAAI;GACjD,IAAI,WAAqC;GAEzC,CAAA,GAAA,IAAA,UAAA,OAAgB;IACd,IAAI,CAAC,aAAa,OAAO;IAEzB,YAAA,GAAA,yBAAA,gBAAA,CAA2B;KACzB,WAAW,aAAa;KACxB,MAAM,MAAM;KACZ,QAAQ,MAAM;KACd,OAAO,MAAM;KACb,UAAU,MAAM;KAChB,YAAY,MAAM;KAClB,UAAU,MAAM;KAChB,kBAAkB,MAAM;IAC1B,CAAC;IAED,SAAS,GAAG,gBAAgB,UAAoB,KAAK,eAAe,KAAK,CAAC;IAC1E,SAAS,GAAG,iBAAiB,UAAoB,KAAK,gBAAgB,KAAK,CAAC;IAC5E,SAAS,GAAG,mBAAmB,UAAoB,KAAK,kBAAkB,KAAK,CAAC;IAChF,SAAS,GAAG,kBAAkB,WAAyB,KAAK,iBAAiB,MAAM,CAAC;IACpF,SAAS,GAAG,iBAAiB,UAAqB,KAAK,gBAAgB,KAAK,CAAC;IAC7E,SAAS,GAAG,gBAAgB,SAAiB,KAAK,eAAe,IAAI,CAAC;GACxE,CAAC;GAED,CAAA,GAAA,IAAA,MAAA,OAAY,MAAM,OAAO,YAAY;IACnC,UAAU,QAAQ,OAAO;GAC3B,GAAG,EAAE,MAAM,KAAK,CAAC;GAEjB,CAAA,GAAA,IAAA,MAAA,OAAY,MAAM,SAAS,cAAc;IACvC,IAAI,WAAW,UAAU,UAAU,SAAS;GAC9C,GAAG,EAAE,MAAM,KAAK,CAAC;GAEjB,CAAA,GAAA,IAAA,MAAA,OAAY,MAAM,QAAQ,aAAa;IACrC,UAAU,SAAS,QAAQ;GAC7B,CAAC;GAED,CAAA,GAAA,IAAA,YAAA,OAAkB;IAChB,UAAU,QAAQ;IAClB,WAAW;GACb,CAAC;GAED,SAAa,EACX,mBAAmB,SACrB,CAAC;;6DApFmD,OAAA;cAAzC;KAAJ,KAAI;KAAe,OAAM;;;;;;;;;;;CEazB,SAAS,eAAe;EAC7B,MAAM,YAAA,GAAA,IAAA,IAAA,CAAiC,IAAI;EAC3C,MAAM,QAAA,GAAA,IAAA,IAAA,CAAuB,CAAC,CAAC;EAC/B,MAAM,UAAA,GAAA,IAAA,IAAA,CAA2B,CAAC,CAAC;EACnC,MAAM,SAAA,GAAA,IAAA,IAAA,CAAuB,OAAO;EACpC,MAAM,cAAA,GAAA,IAAA,IAAA,CAAmC;GAAE,MAAM;GAAG,UAAU;EAAG,CAAC;EAElE,SAAS,OAAO,WAAiC,QAAmC;GAClF,IAAI,SAAS,OACX,SAAS,MAAM,QAAQ;GAGzB,SAAS,SAAA,GAAA,yBAAA,gBAAA,CAAwB;IAC/B;IACA,GAAG;GACL,CAAC;GAGD,SAAS,MAAM,GAAG,gBAAgB,YAAwB;IACxD,KAAK,QAAQ;GACf,CAAC;GACD,SAAS,MAAM,GAAG,kBAAkB,MAAoB;IACtD,OAAO,QAAQ;GACjB,CAAC;GACD,SAAS,MAAM,GAAG,iBAAiB,MAAiB;IAClD,MAAM,QAAQ;GAChB,CAAC;GACD,SAAS,MAAM,GAAG,qBAAqB;IACrC,IAAI,SAAS,OACX,WAAW,QAAQ,SAAS,MAAM,cAAc;GAEpD,CAAC;GAED,IAAI,QAAQ,MAAM,KAAK,QAAQ,OAAO;GACtC,IAAI,QAAQ,OAAO,MAAM,QAAQ,OAAO;GACxC,IAAI,QAAQ,QAAQ,OAAO,QAAQ,OAAO;EAC5C;EAEA,SAAS,QAAQ,SAAqB;GACpC,SAAS,OAAO,QAAQ,OAAO;GAC/B,KAAK,QAAQ;EACf;EAEA,SAAS,WAAW,SAAqB;GACvC,SAAS,OAAO,WAAW,OAAO;GAClC,KAAK,QAAQ,SAAS,OAAO,QAAQ,KAAK,CAAC;EAC7C;EAEA,SAAS,UAAU,GAAiB;GAClC,SAAS,OAAO,UAAU,CAAC;GAC3B,OAAO,QAAQ;EACjB;EAEA,SAAS,cAAc;GACrB,SAAS,OAAO,YAAY;GAC5B,OAAO,QAAQ,CAAC;EAClB;EAEA,SAAS,SAAS,GAAc;GAC9B,SAAS,OAAO,SAAS,CAAC;GAC1B,MAAM,QAAQ;EAChB;EAEA,SAAS,YAAY,IAAY;GAC/B,SAAS,OAAO,YAAY,EAAE;EAChC;EAEA,SAAS,cAAc,IAAY;GACjC,SAAS,OAAO,cAAc,EAAE;EAClC;EAEA,SAAS,cAAc;GACrB,SAAS,OAAO,YAAY;EAC9B;EAEA,SAAS,SAAS,MAAc;GAC9B,SAAS,OAAO,SAAS,IAAI;EAC/B;EAEA,SAAS,UAAU;GACjB,SAAS,OAAO,QAAQ;EAC1B;EAEA,SAAS,UAAU;GACjB,SAAS,OAAO,QAAQ;GACxB,SAAS,QAAQ;EACnB;EAEA,SAAS,GAAG,OAAe,UAAoD;GAC7E,OAAO,SAAS,OAAO,GAAG,OAAO,QAAQ,YAAY,CAAC;EACxD;EAEA,CAAA,GAAA,IAAA,YAAA,OAAkB;GAChB,QAAQ;EACV,CAAC;EAED,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;CACF;;;CChIO,MAAM,kBAAkB,EAC7B,QAAQ,KAAU;EAChB,IAAI,UAAU,aAAa,iBAAS;CACtC,EACF;;;CCDO,MAAM,UAAU"}
@@ -0,0 +1,3 @@
1
+ /* style/index.less */
2
+
3
+ /*# sourceMappingURL=src/style/index.less.map */
@@ -0,0 +1 @@
1
+ (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports,require("vue"),require("@composy/log-viewer-core")):typeof define==="function"&&define.amd?define(["exports","vue","@composy/log-viewer-core"],factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,factory(global.LDesignPackagesVue3={},global.Vue,global.ComposyLogViewerCore));})(this,function(exports,vue,_composy_log_viewer_core){Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var LogViewer_vue_vue_type_script_setup_true_lang_default=(0,vue.defineComponent)({__name:"LogViewer",props:{data:{type:Array,required:false,default:()=>[]},filter:{type:Object,required:false},theme:{type:String,required:false,default:"light"},pageSize:{type:Number,required:false,default:20},showFilter:{type:Boolean,required:false,default:true},showDiff:{type:Boolean,required:false,default:true},showAnomalyBadge:{type:Boolean,required:false,default:true}},emits:["entry-click","entry-expand","entry-collapse","filter-change","theme-change","page-change"],setup(__props,{expose:__expose,emit:__emit}){const props=__props;const emit=__emit;const containerRef=(0,vue.ref)(null);let instance=null;(0,vue.onMounted)(()=>{if(!containerRef.value)return;instance=(0,_composy_log_viewer_core.createLogViewer)({container:containerRef.value,data:props.data,filter:props.filter,theme:props.theme,pageSize:props.pageSize,showFilter:props.showFilter,showDiff:props.showDiff,showAnomalyBadge:props.showAnomalyBadge});instance.on("entry:click",(entry)=>emit("entry-click",entry));instance.on("entry:expand",(entry)=>emit("entry-expand",entry));instance.on("entry:collapse",(entry)=>emit("entry-collapse",entry));instance.on("filter:change",(filter)=>emit("filter-change",filter));instance.on("theme:change",(theme)=>emit("theme-change",theme));instance.on("page:change",(page)=>emit("page-change",page));});(0,vue.watch)(()=>props.data,(newData)=>{instance?.setData(newData);},{deep:true});(0,vue.watch)(()=>props.filter,(newFilter)=>{if(newFilter)instance?.setFilter(newFilter);},{deep:true});(0,vue.watch)(()=>props.theme,(newTheme)=>{instance?.setTheme(newTheme);});(0,vue.onUnmounted)(()=>{instance?.destroy();instance=null;});__expose({getInstance:()=>instance});return(_ctx,_cache)=>{return(0,vue.openBlock)(),(0,vue.createElementBlock)("div",{ref_key:"containerRef",ref:containerRef,class:"lv-vue-root"},null,512);};}});LogViewer_vue_vue_type_script_setup_true_lang_default.__file="src/components/LogViewer.vue";var LogViewer_default=LogViewer_vue_vue_type_script_setup_true_lang_default;function useLogViewer(){const instance=(0,vue.ref)(null);const data=(0,vue.ref)([]);const filter=(0,vue.ref)({});const theme=(0,vue.ref)("light");const pagination=(0,vue.ref)({page:1,pageSize:20});function create(container,config){if(instance.value)instance.value.destroy();instance.value=(0,_composy_log_viewer_core.createLogViewer)({container,...config});instance.value.on("data:change",(entries)=>{data.value=entries;});instance.value.on("filter:change",(f)=>{filter.value=f;});instance.value.on("theme:change",(t)=>{theme.value=t;});instance.value.on("page:change",()=>{if(instance.value)pagination.value=instance.value.getPagination();});if(config?.data)data.value=config.data;if(config?.theme)theme.value=config.theme;if(config?.filter)filter.value=config.filter;}function setData(entries){instance.value?.setData(entries);data.value=entries;}function appendData(entries){instance.value?.appendData(entries);data.value=instance.value?.getData()||[];}function setFilter(f){instance.value?.setFilter(f);filter.value=f;}function resetFilter(){instance.value?.resetFilter();filter.value={};}function setTheme(t){instance.value?.setTheme(t);theme.value=t;}function expandEntry(id){instance.value?.expandEntry(id);}function collapseEntry(id){instance.value?.collapseEntry(id);}function collapseAll(){instance.value?.collapseAll();}function goToPage(page){instance.value?.goToPage(page);}function refresh(){instance.value?.refresh();}function destroy(){instance.value?.destroy();instance.value=null;}function on(event,callback){return instance.value?.on(event,callback)||(()=>{});}(0,vue.onUnmounted)(()=>{destroy();});return{instance,data,filter,theme,pagination,create,setData,appendData,setFilter,resetFilter,setTheme,expandEntry,collapseEntry,collapseAll,goToPage,refresh,destroy,on};}const LogViewerPlugin={install(app){app.component("LogViewer",LogViewer_default);}};const VERSION="0.1.0";Object.defineProperty(exports,"ACTION_COLORS",{enumerable:true,get:function(){return _composy_log_viewer_core.ACTION_COLORS;}});Object.defineProperty(exports,"ACTION_LABELS",{enumerable:true,get:function(){return _composy_log_viewer_core.ACTION_LABELS;}});exports.LogViewer=LogViewer_default;exports.LogViewerPlugin=LogViewerPlugin;exports.VERSION=VERSION;Object.defineProperty(exports,"createLogViewer",{enumerable:true,get:function(){return _composy_log_viewer_core.createLogViewer;}});Object.defineProperty(exports,"formatDate",{enumerable:true,get:function(){return _composy_log_viewer_core.formatDate;}});Object.defineProperty(exports,"formatRelativeTime",{enumerable:true,get:function(){return _composy_log_viewer_core.formatRelativeTime;}});exports.useLogViewer=useLogViewer;});
@@ -0,0 +1,17 @@
1
+ /*!
2
+ * ***********************************
3
+ * @composy/log-viewer-vue v0.0.1 *
4
+ * Built with rollup *
5
+ * Build time: 2024-08-17 11:42:24 *
6
+ * Build mode: production *
7
+ * Minified: No *
8
+ * ***********************************
9
+ */
10
+ import LogViewer_vue_vue_type_script_setup_true_lang_default from "./LogViewer.vue_vue_type_script_setup_true_lang.js";
11
+ //#region src/components/LogViewer.vue
12
+ LogViewer_vue_vue_type_script_setup_true_lang_default.__file = "src/components/LogViewer.vue";
13
+ var LogViewer_default = LogViewer_vue_vue_type_script_setup_true_lang_default;
14
+ //#endregion
15
+ export { LogViewer_default as default };
16
+ /*! End of @composy/log-viewer-vue | Powered by @composy/builder */
17
+ //# sourceMappingURL=LogViewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogViewer.js","names":[],"sources":["../../src/components/LogViewer.vue"],"sourcesContent":["<!--\n @file 日志查看器组件\n @description LDesign 日志查看器组件,支持日志过滤、差异对比、异常标记等功能\n-->\n<template>\n <div ref=\"containerRef\" class=\"lv-vue-root\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted, watch, toRefs } from 'vue'\nimport {\n createLogViewer,\n type LogViewerConfig,\n type LogEntry,\n type FilterConfig,\n type ThemeMode,\n type LogViewer as LogViewerInstance,\n} from '@composy/log-viewer-core'\n\nconst props = withDefaults(defineProps<{\n data?: LogEntry[]\n filter?: FilterConfig\n theme?: ThemeMode\n pageSize?: number\n showFilter?: boolean\n showDiff?: boolean\n showAnomalyBadge?: boolean\n}>(), {\n data: () => [],\n theme: 'light',\n pageSize: 20,\n showFilter: true,\n showDiff: true,\n showAnomalyBadge: true,\n})\n\nconst emit = defineEmits<{\n 'entry-click': [entry: LogEntry]\n 'entry-expand': [entry: LogEntry]\n 'entry-collapse': [entry: LogEntry]\n 'filter-change': [filter: FilterConfig]\n 'theme-change': [theme: ThemeMode]\n 'page-change': [page: number]\n}>()\n\nconst containerRef = ref<HTMLElement | null>(null)\nlet instance: LogViewerInstance | null = null\n\nonMounted(() => {\n if (!containerRef.value) return\n\n instance = createLogViewer({\n container: containerRef.value,\n data: props.data,\n filter: props.filter,\n theme: props.theme,\n pageSize: props.pageSize,\n showFilter: props.showFilter,\n showDiff: props.showDiff,\n showAnomalyBadge: props.showAnomalyBadge,\n })\n\n instance.on('entry:click', (entry: LogEntry) => emit('entry-click', entry))\n instance.on('entry:expand', (entry: LogEntry) => emit('entry-expand', entry))\n instance.on('entry:collapse', (entry: LogEntry) => emit('entry-collapse', entry))\n instance.on('filter:change', (filter: FilterConfig) => emit('filter-change', filter))\n instance.on('theme:change', (theme: ThemeMode) => emit('theme-change', theme))\n instance.on('page:change', (page: number) => emit('page-change', page))\n})\n\nwatch(() => props.data, (newData) => {\n instance?.setData(newData)\n}, { deep: true })\n\nwatch(() => props.filter, (newFilter) => {\n if (newFilter) instance?.setFilter(newFilter)\n}, { deep: true })\n\nwatch(() => props.theme, (newTheme) => {\n instance?.setTheme(newTheme)\n})\n\nonUnmounted(() => {\n instance?.destroy()\n instance = null\n})\n\ndefineExpose({\n getInstance: () => instance,\n})\n</script>\n"],"mappings":""}
@@ -0,0 +1,109 @@
1
+ /*!
2
+ * ***********************************
3
+ * @composy/log-viewer-vue v0.0.1 *
4
+ * Built with rollup *
5
+ * Build time: 2024-08-17 11:42:24 *
6
+ * Build mode: production *
7
+ * Minified: No *
8
+ * ***********************************
9
+ */
10
+ import { createElementBlock, defineComponent, onMounted, onUnmounted, openBlock, ref, watch } from "vue";
11
+ import { createLogViewer } from "@composy/log-viewer-core";
12
+ //#region src/components/LogViewer.vue?vue&type=script&setup=true&lang.ts
13
+ var LogViewer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
14
+ __name: "LogViewer",
15
+ props: {
16
+ data: {
17
+ type: Array,
18
+ required: false,
19
+ default: () => []
20
+ },
21
+ filter: {
22
+ type: Object,
23
+ required: false
24
+ },
25
+ theme: {
26
+ type: String,
27
+ required: false,
28
+ default: "light"
29
+ },
30
+ pageSize: {
31
+ type: Number,
32
+ required: false,
33
+ default: 20
34
+ },
35
+ showFilter: {
36
+ type: Boolean,
37
+ required: false,
38
+ default: true
39
+ },
40
+ showDiff: {
41
+ type: Boolean,
42
+ required: false,
43
+ default: true
44
+ },
45
+ showAnomalyBadge: {
46
+ type: Boolean,
47
+ required: false,
48
+ default: true
49
+ }
50
+ },
51
+ emits: [
52
+ "entry-click",
53
+ "entry-expand",
54
+ "entry-collapse",
55
+ "filter-change",
56
+ "theme-change",
57
+ "page-change"
58
+ ],
59
+ setup(__props, { expose: __expose, emit: __emit }) {
60
+ const props = __props;
61
+ const emit = __emit;
62
+ const containerRef = ref(null);
63
+ let instance = null;
64
+ onMounted(() => {
65
+ if (!containerRef.value) return;
66
+ instance = createLogViewer({
67
+ container: containerRef.value,
68
+ data: props.data,
69
+ filter: props.filter,
70
+ theme: props.theme,
71
+ pageSize: props.pageSize,
72
+ showFilter: props.showFilter,
73
+ showDiff: props.showDiff,
74
+ showAnomalyBadge: props.showAnomalyBadge
75
+ });
76
+ instance.on("entry:click", (entry) => emit("entry-click", entry));
77
+ instance.on("entry:expand", (entry) => emit("entry-expand", entry));
78
+ instance.on("entry:collapse", (entry) => emit("entry-collapse", entry));
79
+ instance.on("filter:change", (filter) => emit("filter-change", filter));
80
+ instance.on("theme:change", (theme) => emit("theme-change", theme));
81
+ instance.on("page:change", (page) => emit("page-change", page));
82
+ });
83
+ watch(() => props.data, (newData) => {
84
+ instance?.setData(newData);
85
+ }, { deep: true });
86
+ watch(() => props.filter, (newFilter) => {
87
+ if (newFilter) instance?.setFilter(newFilter);
88
+ }, { deep: true });
89
+ watch(() => props.theme, (newTheme) => {
90
+ instance?.setTheme(newTheme);
91
+ });
92
+ onUnmounted(() => {
93
+ instance?.destroy();
94
+ instance = null;
95
+ });
96
+ __expose({ getInstance: () => instance });
97
+ return (_ctx, _cache) => {
98
+ return openBlock(), createElementBlock("div", {
99
+ ref_key: "containerRef",
100
+ ref: containerRef,
101
+ class: "lv-vue-root"
102
+ }, null, 512);
103
+ };
104
+ }
105
+ });
106
+ //#endregion
107
+ export { LogViewer_vue_vue_type_script_setup_true_lang_default as default };
108
+ /*! End of @composy/log-viewer-vue | Powered by @composy/builder */
109
+ //# sourceMappingURL=LogViewer.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogViewer.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../src/components/LogViewer.vue"],"sourcesContent":["<!--\n @file 日志查看器组件\n @description LDesign 日志查看器组件,支持日志过滤、差异对比、异常标记等功能\n-->\n<template>\n <div ref=\"containerRef\" class=\"lv-vue-root\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted, watch, toRefs } from 'vue'\nimport {\n createLogViewer,\n type LogViewerConfig,\n type LogEntry,\n type FilterConfig,\n type ThemeMode,\n type LogViewer as LogViewerInstance,\n} from '@composy/log-viewer-core'\n\nconst props = withDefaults(defineProps<{\n data?: LogEntry[]\n filter?: FilterConfig\n theme?: ThemeMode\n pageSize?: number\n showFilter?: boolean\n showDiff?: boolean\n showAnomalyBadge?: boolean\n}>(), {\n data: () => [],\n theme: 'light',\n pageSize: 20,\n showFilter: true,\n showDiff: true,\n showAnomalyBadge: true,\n})\n\nconst emit = defineEmits<{\n 'entry-click': [entry: LogEntry]\n 'entry-expand': [entry: LogEntry]\n 'entry-collapse': [entry: LogEntry]\n 'filter-change': [filter: FilterConfig]\n 'theme-change': [theme: ThemeMode]\n 'page-change': [page: number]\n}>()\n\nconst containerRef = ref<HTMLElement | null>(null)\nlet instance: LogViewerInstance | null = null\n\nonMounted(() => {\n if (!containerRef.value) return\n\n instance = createLogViewer({\n container: containerRef.value,\n data: props.data,\n filter: props.filter,\n theme: props.theme,\n pageSize: props.pageSize,\n showFilter: props.showFilter,\n showDiff: props.showDiff,\n showAnomalyBadge: props.showAnomalyBadge,\n })\n\n instance.on('entry:click', (entry: LogEntry) => emit('entry-click', entry))\n instance.on('entry:expand', (entry: LogEntry) => emit('entry-expand', entry))\n instance.on('entry:collapse', (entry: LogEntry) => emit('entry-collapse', entry))\n instance.on('filter:change', (filter: FilterConfig) => emit('filter-change', filter))\n instance.on('theme:change', (theme: ThemeMode) => emit('theme-change', theme))\n instance.on('page:change', (page: number) => emit('page-change', page))\n})\n\nwatch(() => props.data, (newData) => {\n instance?.setData(newData)\n}, { deep: true })\n\nwatch(() => props.filter, (newFilter) => {\n if (newFilter) instance?.setFilter(newFilter)\n}, { deep: true })\n\nwatch(() => props.theme, (newTheme) => {\n instance?.setTheme(newTheme)\n})\n\nonUnmounted(() => {\n instance?.destroy()\n instance = null\n})\n\ndefineExpose({\n getInstance: () => instance,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBA,MAAM,QAAQ;EAiBd,MAAM,OAAO;EASb,MAAM,eAAe,IAAwB,IAAI;EACjD,IAAI,WAAqC;EAEzC,gBAAgB;GACd,IAAI,CAAC,aAAa,OAAO;GAEzB,WAAW,gBAAgB;IACzB,WAAW,aAAa;IACxB,MAAM,MAAM;IACZ,QAAQ,MAAM;IACd,OAAO,MAAM;IACb,UAAU,MAAM;IAChB,YAAY,MAAM;IAClB,UAAU,MAAM;IAChB,kBAAkB,MAAM;GAC1B,CAAC;GAED,SAAS,GAAG,gBAAgB,UAAoB,KAAK,eAAe,KAAK,CAAC;GAC1E,SAAS,GAAG,iBAAiB,UAAoB,KAAK,gBAAgB,KAAK,CAAC;GAC5E,SAAS,GAAG,mBAAmB,UAAoB,KAAK,kBAAkB,KAAK,CAAC;GAChF,SAAS,GAAG,kBAAkB,WAAyB,KAAK,iBAAiB,MAAM,CAAC;GACpF,SAAS,GAAG,iBAAiB,UAAqB,KAAK,gBAAgB,KAAK,CAAC;GAC7E,SAAS,GAAG,gBAAgB,SAAiB,KAAK,eAAe,IAAI,CAAC;EACxE,CAAC;EAED,YAAY,MAAM,OAAO,YAAY;GACnC,UAAU,QAAQ,OAAO;EAC3B,GAAG,EAAE,MAAM,KAAK,CAAC;EAEjB,YAAY,MAAM,SAAS,cAAc;GACvC,IAAI,WAAW,UAAU,UAAU,SAAS;EAC9C,GAAG,EAAE,MAAM,KAAK,CAAC;EAEjB,YAAY,MAAM,QAAQ,aAAa;GACrC,UAAU,SAAS,QAAQ;EAC7B,CAAC;EAED,kBAAkB;GAChB,UAAU,QAAQ;GAClB,WAAW;EACb,CAAC;EAED,SAAa,EACX,mBAAmB,SACrB,CAAC;;uBApFC,mBAAkD,OAAA;aAAzC;IAAJ,KAAI;IAAe,OAAM"}
@@ -0,0 +1,116 @@
1
+ import { type LogViewer, type LogViewerConfig, type LogEntry, type FilterConfig, type ThemeMode, type PaginationConfig } from '@composy/log-viewer-core';
2
+ /**
3
+ * useLogViewer - use Log Viewer function
4
+ * @returns 返回值说明
5
+ */
6
+ export declare function useLogViewer(): {
7
+ instance: import("vue").Ref<{
8
+ getData: () => LogEntry[];
9
+ setData: (entries: LogEntry[]) => void;
10
+ appendData: (entries: LogEntry[]) => void;
11
+ getFilter: () => FilterConfig;
12
+ setFilter: (filter: FilterConfig) => void;
13
+ resetFilter: () => void;
14
+ getTheme: () => ThemeMode;
15
+ setTheme: (theme: ThemeMode) => void;
16
+ expandEntry: (id: string) => void;
17
+ collapseEntry: (id: string) => void;
18
+ collapseAll: () => void;
19
+ goToPage: (page: number) => void;
20
+ getPagination: () => PaginationConfig;
21
+ on: (event: string, callback: (...args: unknown[]) => void) => () => void;
22
+ refresh: () => void;
23
+ destroy: () => void;
24
+ }, LogViewer | {
25
+ getData: () => LogEntry[];
26
+ setData: (entries: LogEntry[]) => void;
27
+ appendData: (entries: LogEntry[]) => void;
28
+ getFilter: () => FilterConfig;
29
+ setFilter: (filter: FilterConfig) => void;
30
+ resetFilter: () => void;
31
+ getTheme: () => ThemeMode;
32
+ setTheme: (theme: ThemeMode) => void;
33
+ expandEntry: (id: string) => void;
34
+ collapseEntry: (id: string) => void;
35
+ collapseAll: () => void;
36
+ goToPage: (page: number) => void;
37
+ getPagination: () => PaginationConfig;
38
+ on: (event: string, callback: (...args: unknown[]) => void) => () => void;
39
+ refresh: () => void;
40
+ destroy: () => void;
41
+ }>;
42
+ data: import("vue").Ref<{
43
+ id: string;
44
+ timestamp: string | number | Date;
45
+ user: string;
46
+ userId?: string;
47
+ action: import("@composy/log-viewer-core").ActionType;
48
+ module: string;
49
+ detail?: string;
50
+ ip?: string;
51
+ changes?: {
52
+ field: string;
53
+ label?: string;
54
+ oldValue: unknown;
55
+ newValue: unknown;
56
+ }[];
57
+ metadata?: Record<string, unknown>;
58
+ anomaly?: import("@composy/log-viewer-core").AnomalyType;
59
+ }[], LogEntry[] | {
60
+ id: string;
61
+ timestamp: string | number | Date;
62
+ user: string;
63
+ userId?: string;
64
+ action: import("@composy/log-viewer-core").ActionType;
65
+ module: string;
66
+ detail?: string;
67
+ ip?: string;
68
+ changes?: {
69
+ field: string;
70
+ label?: string;
71
+ oldValue: unknown;
72
+ newValue: unknown;
73
+ }[];
74
+ metadata?: Record<string, unknown>;
75
+ anomaly?: import("@composy/log-viewer-core").AnomalyType;
76
+ }[]>;
77
+ filter: import("vue").Ref<{
78
+ user?: string;
79
+ action?: import("@composy/log-viewer-core").ActionType | import("@composy/log-viewer-core").ActionType[];
80
+ module?: string;
81
+ ip?: string;
82
+ timeRange?: [Date | string | number, Date | string | number];
83
+ keyword?: string;
84
+ }, FilterConfig | {
85
+ user?: string;
86
+ action?: import("@composy/log-viewer-core").ActionType | import("@composy/log-viewer-core").ActionType[];
87
+ module?: string;
88
+ ip?: string;
89
+ timeRange?: [Date | string | number, Date | string | number];
90
+ keyword?: string;
91
+ }>;
92
+ theme: import("vue").Ref<ThemeMode, ThemeMode>;
93
+ pagination: import("vue").Ref<{
94
+ page: number;
95
+ pageSize: number;
96
+ total?: number;
97
+ }, PaginationConfig | {
98
+ page: number;
99
+ pageSize: number;
100
+ total?: number;
101
+ }>;
102
+ create: (container: HTMLElement | string, config?: Partial<LogViewerConfig>) => void;
103
+ setData: (entries: LogEntry[]) => void;
104
+ appendData: (entries: LogEntry[]) => void;
105
+ setFilter: (f: FilterConfig) => void;
106
+ resetFilter: () => void;
107
+ setTheme: (t: ThemeMode) => void;
108
+ expandEntry: (id: string) => void;
109
+ collapseEntry: (id: string) => void;
110
+ collapseAll: () => void;
111
+ goToPage: (page: number) => void;
112
+ refresh: () => void;
113
+ destroy: () => void;
114
+ on: (event: string, callback: (...args: unknown[]) => void) => () => void;
115
+ };
116
+ //# sourceMappingURL=useLogViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLogViewer.d.ts","sourceRoot":"","sources":["../../src/composables/useLogViewer.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAA;AAEjC;;;GAGG;AACH,wBAAgB,YAAY;;;;;;;;;;;;;;;uCAyBV,GAAG;;;;;;;;;;;;;;;;;uCAAH,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAlBQ,WAAW,GAAG,MAAM,WAAW,OAAO,CAAC,eAAe,CAAC;uBA+BxD,QAAQ,EAAE;0BAKP,QAAQ,EAAE;mBAKjB,YAAY;;kBAUb,SAAS;sBAKL,MAAM;wBAIJ,MAAM;;qBAQT,MAAM;;;gBAaX,MAAM,YAAY,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAG,MAAM,IAAI;EA4B/E"}