@maxax/ui 1.0.8 → 1.0.10

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 (32) hide show
  1. package/dist/components/basic-button-group/components/ButtonGroupItem.vue.d.ts.map +1 -1
  2. package/dist/components/basic-edit-batch/components/EditBatchItem.vue.d.ts.map +1 -1
  3. package/dist/components/basic-form/components/FormItem.vue.d.ts.map +1 -1
  4. package/dist/components/basic-json-viewer/BasicJsonViewer.d.ts +331 -0
  5. package/dist/components/basic-json-viewer/BasicJsonViewer.d.ts.map +1 -0
  6. package/dist/components/basic-json-viewer/components/Brackets.d.ts +24 -0
  7. package/dist/components/basic-json-viewer/components/Brackets.d.ts.map +1 -0
  8. package/dist/components/basic-json-viewer/components/Carets.d.ts +24 -0
  9. package/dist/components/basic-json-viewer/components/Carets.d.ts.map +1 -0
  10. package/dist/components/basic-json-viewer/components/CheckController.d.ts +34 -0
  11. package/dist/components/basic-json-viewer/components/CheckController.d.ts.map +1 -0
  12. package/dist/components/basic-json-viewer/components/TreeNode.d.ts +362 -0
  13. package/dist/components/basic-json-viewer/components/TreeNode.d.ts.map +1 -0
  14. package/dist/components/basic-json-viewer/context.d.ts +6 -0
  15. package/dist/components/basic-json-viewer/context.d.ts.map +1 -0
  16. package/dist/components/basic-json-viewer/hooks/useClipboard.d.ts +4 -0
  17. package/dist/components/basic-json-viewer/hooks/useClipboard.d.ts.map +1 -0
  18. package/dist/components/basic-json-viewer/hooks/useError.d.ts +8 -0
  19. package/dist/components/basic-json-viewer/hooks/useError.d.ts.map +1 -0
  20. package/dist/components/basic-json-viewer/index.d.ts +7 -0
  21. package/dist/components/basic-json-viewer/index.d.ts.map +1 -0
  22. package/dist/components/basic-json-viewer/interface.d.ts +377 -0
  23. package/dist/components/basic-json-viewer/interface.d.ts.map +1 -0
  24. package/dist/components/basic-json-viewer/utils/index.d.ts +8 -0
  25. package/dist/components/basic-json-viewer/utils/index.d.ts.map +1 -0
  26. package/dist/components/index.d.ts +1 -0
  27. package/dist/components/index.d.ts.map +1 -1
  28. package/dist/index.cjs +1124 -5
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.mjs +1151 -32
  31. package/dist/index.mjs.map +1 -1
  32. package/package.json +2 -2
package/dist/index.cjs CHANGED
@@ -12881,6 +12881,1121 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
12881
12881
  }
12882
12882
  });
12883
12883
  const XBasicIconPicker = utils.withInstall(_sfc_main$o);
12884
+ function useClipboard() {
12885
+ const copied = vue.ref(false);
12886
+ const copy = async (source) => {
12887
+ try {
12888
+ await navigator.clipboard.writeText(source);
12889
+ copied.value = true;
12890
+ setTimeout(() => {
12891
+ copied.value = false;
12892
+ }, 300);
12893
+ } catch (err) {
12894
+ console.error("[vue-json-pretty] Copy failed: ", err);
12895
+ }
12896
+ };
12897
+ return {
12898
+ copy
12899
+ };
12900
+ }
12901
+ const treeNodePropsPass$1 = {
12902
+ // JSONLike data.
12903
+ data: {
12904
+ type: [String, Number, Boolean, Array, Object],
12905
+ default: null
12906
+ },
12907
+ // Data root path.
12908
+ rootPath: {
12909
+ type: String,
12910
+ default: "root"
12911
+ },
12912
+ indent: {
12913
+ type: Number,
12914
+ default: 2
12915
+ },
12916
+ // Whether to display the length of (array|object).
12917
+ showLength: {
12918
+ type: Boolean,
12919
+ default: false
12920
+ },
12921
+ // Whether the key name uses double quotes.
12922
+ showDoubleQuotes: {
12923
+ type: Boolean,
12924
+ default: true
12925
+ },
12926
+ // Custom render for key.
12927
+ renderNodeKey: Function,
12928
+ // Custom render for value.
12929
+ renderNodeValue: Function,
12930
+ // Custom render for node actions.
12931
+ renderNodeActions: {
12932
+ type: [Boolean, Function],
12933
+ default: void 0
12934
+ },
12935
+ // Define the selection method supported by the data level, which is not available by default.
12936
+ selectableType: String,
12937
+ // Whether to display the selection control.
12938
+ showSelectController: {
12939
+ type: Boolean,
12940
+ default: false
12941
+ },
12942
+ // Whether to display the data level connection.
12943
+ showLine: {
12944
+ type: Boolean,
12945
+ default: true
12946
+ },
12947
+ showLineNumber: {
12948
+ type: Boolean,
12949
+ default: false
12950
+ },
12951
+ // Whether to trigger selection when clicking on the node.
12952
+ selectOnClickNode: {
12953
+ type: Boolean,
12954
+ default: true
12955
+ },
12956
+ // When using the selectableType, define whether current path/content is enabled.
12957
+ nodeSelectable: {
12958
+ type: Function,
12959
+ default: () => true
12960
+ },
12961
+ // Highlight current node when selected.
12962
+ highlightSelectedNode: {
12963
+ type: Boolean,
12964
+ default: true
12965
+ },
12966
+ showIcon: {
12967
+ type: Boolean,
12968
+ default: false
12969
+ },
12970
+ theme: {
12971
+ type: String,
12972
+ default: "light"
12973
+ },
12974
+ showKeyValueSpace: {
12975
+ type: Boolean,
12976
+ default: true
12977
+ },
12978
+ editable: {
12979
+ type: Boolean,
12980
+ default: false
12981
+ },
12982
+ editableTrigger: {
12983
+ type: String,
12984
+ default: "click"
12985
+ },
12986
+ onNodeClick: {
12987
+ type: Function
12988
+ },
12989
+ onNodeMouseover: {
12990
+ type: Function
12991
+ },
12992
+ onBracketsClick: {
12993
+ type: Function
12994
+ },
12995
+ onIconClick: {
12996
+ type: Function
12997
+ },
12998
+ onValueChange: {
12999
+ type: Function
13000
+ }
13001
+ };
13002
+ const treeNodeProps = {
13003
+ ...treeNodePropsPass$1,
13004
+ // Current node data.
13005
+ node: {
13006
+ type: Object,
13007
+ required: true
13008
+ },
13009
+ // Whether the current node is collapsed.
13010
+ collapsed: Boolean,
13011
+ // Whether the current node is checked(When using the selection function).
13012
+ checked: Boolean,
13013
+ style: {
13014
+ type: Object,
13015
+ default: void 0
13016
+ },
13017
+ onSelectedChange: {
13018
+ type: Function,
13019
+ default: void 0
13020
+ }
13021
+ };
13022
+ const basicJsonViewerProps = {
13023
+ ...treeNodePropsPass$1,
13024
+ collapsedNodeLength: {
13025
+ type: Number,
13026
+ default: Infinity
13027
+ },
13028
+ // Define the depth of the tree, nodes greater than this depth will not be expanded.
13029
+ deep: {
13030
+ type: Number,
13031
+ default: Infinity
13032
+ },
13033
+ pathCollapsible: {
13034
+ type: Function,
13035
+ default: () => false
13036
+ },
13037
+ // Whether to use virtual scroll, usually applied to big data.
13038
+ virtual: {
13039
+ type: Boolean,
13040
+ default: false
13041
+ },
13042
+ // When using virtual scroll, set the height of tree.
13043
+ height: {
13044
+ type: Number,
13045
+ default: 400
13046
+ },
13047
+ // When using virtual scroll without dynamicHeight, define the height of each row.
13048
+ itemHeight: {
13049
+ type: Number,
13050
+ default: 20
13051
+ },
13052
+ // Enable dynamic row heights for virtual scroll.
13053
+ dynamicHeight: {
13054
+ type: Boolean,
13055
+ default: true
13056
+ },
13057
+ // When there is a selection function, define the selected path.
13058
+ // For multiple selections, it is an array ['root.a','root.b'], for single selection, it is a string of 'root.a'.
13059
+ selectedValue: {
13060
+ type: [String, Array],
13061
+ default: () => ""
13062
+ },
13063
+ // Collapsed control.
13064
+ collapsedOnClickBrackets: {
13065
+ type: Boolean,
13066
+ default: true
13067
+ },
13068
+ style: {
13069
+ type: Object,
13070
+ default: void 0
13071
+ },
13072
+ onSelectedChange: {
13073
+ type: Function,
13074
+ default: void 0
13075
+ },
13076
+ theme: {
13077
+ type: String,
13078
+ default: "light"
13079
+ }
13080
+ };
13081
+ function emitError(message) {
13082
+ throw new Error(`[VueJSONPretty] ${message}`);
13083
+ }
13084
+ function getDataType(value) {
13085
+ return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
13086
+ }
13087
+ function jsonFlatten(data, path = "root", level = 0, options) {
13088
+ const { key: key2, index: index2, type = "content", showComma = false, length = 1 } = options || {};
13089
+ const dataType = getDataType(data);
13090
+ if (dataType === "array") {
13091
+ const inner = arrFlat(
13092
+ data.map(
13093
+ (item, idx, arr) => jsonFlatten(item, `${path}[${idx}]`, level + 1, {
13094
+ index: idx,
13095
+ showComma: idx !== arr.length - 1,
13096
+ length,
13097
+ type
13098
+ })
13099
+ )
13100
+ );
13101
+ return [
13102
+ jsonFlatten("[", path, level, {
13103
+ showComma: false,
13104
+ key: key2,
13105
+ length: data.length,
13106
+ type: "arrayStart"
13107
+ })[0]
13108
+ ].concat(
13109
+ inner,
13110
+ jsonFlatten("]", path, level, {
13111
+ showComma,
13112
+ length: data.length,
13113
+ type: "arrayEnd"
13114
+ })[0]
13115
+ );
13116
+ } else if (dataType === "object") {
13117
+ const keys = Object.keys(data);
13118
+ const inner = arrFlat(
13119
+ keys.map(
13120
+ (objKey, idx, arr) => jsonFlatten(data[objKey], /^[a-zA-Z_]\w*$/.test(objKey) ? `${path}.${objKey}` : `${path}["${objKey}"]`, level + 1, {
13121
+ key: objKey,
13122
+ showComma: idx !== arr.length - 1,
13123
+ length,
13124
+ type
13125
+ })
13126
+ )
13127
+ );
13128
+ return [
13129
+ jsonFlatten("{", path, level, {
13130
+ showComma: false,
13131
+ key: key2,
13132
+ index: index2,
13133
+ length: keys.length,
13134
+ type: "objectStart"
13135
+ })[0]
13136
+ ].concat(inner, jsonFlatten("}", path, level, { showComma, length: keys.length, type: "objectEnd" })[0]);
13137
+ }
13138
+ return [
13139
+ {
13140
+ content: data,
13141
+ level,
13142
+ key: key2,
13143
+ index: index2,
13144
+ path,
13145
+ showComma,
13146
+ length,
13147
+ type
13148
+ }
13149
+ ];
13150
+ }
13151
+ function arrFlat(arr) {
13152
+ if (typeof Array.prototype.flat === "function") {
13153
+ return arr.flat();
13154
+ }
13155
+ const stack = [...arr];
13156
+ const result = [];
13157
+ while (stack.length) {
13158
+ const first = stack.shift();
13159
+ if (Array.isArray(first)) {
13160
+ stack.unshift(...first);
13161
+ } else {
13162
+ result.push(first);
13163
+ }
13164
+ }
13165
+ return result;
13166
+ }
13167
+ function cloneDeep(source, hash = /* @__PURE__ */ new WeakMap()) {
13168
+ if (source === null || source === void 0) return source;
13169
+ if (source instanceof Date) return new Date(source);
13170
+ if (source instanceof RegExp) return new RegExp(source);
13171
+ if (typeof source !== "object") return source;
13172
+ if (hash.get(source)) return hash.get(source);
13173
+ if (Array.isArray(source)) {
13174
+ const output2 = source.map((item) => cloneDeep(item, hash));
13175
+ hash.set(source, output2);
13176
+ return output2;
13177
+ }
13178
+ const output = {};
13179
+ for (const key2 in source) {
13180
+ output[key2] = cloneDeep(source[key2], hash);
13181
+ }
13182
+ hash.set(source, output);
13183
+ return output;
13184
+ }
13185
+ function stringToAutoType(source) {
13186
+ let value;
13187
+ if (source === "null") value = null;
13188
+ else if (source === "undefined") value = void 0;
13189
+ else if (source === "true") value = true;
13190
+ else if (source === "false") value = false;
13191
+ else if (source[0] + source[source.length - 1] === '""' || source[0] + source[source.length - 1] === "''") {
13192
+ value = source.slice(1, -1);
13193
+ } else if (typeof Number(source) === "number" && !isNaN(Number(source)) || source === "NaN") {
13194
+ value = Number(source);
13195
+ } else {
13196
+ value = source;
13197
+ }
13198
+ return value;
13199
+ }
13200
+ const Brackets = /* @__PURE__ */ vue.defineComponent({
13201
+ name: "JsonBrackets",
13202
+ props: {
13203
+ data: {
13204
+ required: true,
13205
+ type: String
13206
+ },
13207
+ onClick: {
13208
+ type: Function,
13209
+ default: void 0
13210
+ }
13211
+ },
13212
+ render() {
13213
+ const {
13214
+ data
13215
+ } = this;
13216
+ const {
13217
+ onClick
13218
+ } = this;
13219
+ return vue.createVNode("span", {
13220
+ "class": "vjs-tree-brackets",
13221
+ "onClick": onClick
13222
+ }, [data]);
13223
+ }
13224
+ });
13225
+ const Carets = /* @__PURE__ */ vue.defineComponent({
13226
+ name: "JsonCarets",
13227
+ props: {
13228
+ nodeType: {
13229
+ required: true,
13230
+ type: String
13231
+ },
13232
+ onClick: {
13233
+ type: Function,
13234
+ default: void 0
13235
+ }
13236
+ },
13237
+ render() {
13238
+ const {
13239
+ nodeType
13240
+ } = this;
13241
+ const {
13242
+ onClick
13243
+ } = this;
13244
+ const isOpen = nodeType === "objectStart" || nodeType === "arrayStart";
13245
+ const isClose = nodeType === "objectCollapsed" || nodeType === "arrayCollapsed";
13246
+ if (!isOpen && !isClose) return null;
13247
+ return vue.createVNode("span", {
13248
+ "class": `vjs-carets vjs-carets-${isOpen ? "open" : "close"}`,
13249
+ "onClick": onClick
13250
+ }, [vue.createVNode("svg", {
13251
+ "viewBox": "0 0 24 24",
13252
+ "width": "1em",
13253
+ "height": "1em",
13254
+ "fill": "currentColor",
13255
+ "aria-hidden": "true",
13256
+ "focusable": "false",
13257
+ "data-icon": "caret-down"
13258
+ }, [vue.createVNode("path", {
13259
+ "fill": "currentColor",
13260
+ "d": "m12 13.171l4.95-4.95l1.414 1.415L12 16L5.636 9.636L7.05 8.222z"
13261
+ }, null)])]);
13262
+ }
13263
+ });
13264
+ const CheckController = /* @__PURE__ */ vue.defineComponent({
13265
+ props: {
13266
+ checked: {
13267
+ type: Boolean,
13268
+ default: false
13269
+ },
13270
+ isMultiple: Boolean,
13271
+ onChange: {
13272
+ type: Function,
13273
+ default: void 0
13274
+ }
13275
+ },
13276
+ emits: ["change", "update:modelValue"],
13277
+ setup(props, {
13278
+ emit
13279
+ }) {
13280
+ const uiType = vue.computed(() => props.isMultiple ? "checkbox" : "radio");
13281
+ const model = vue.computed({
13282
+ get: () => props.checked,
13283
+ set: (val) => emit("update:modelValue", val)
13284
+ });
13285
+ return {
13286
+ uiType,
13287
+ model
13288
+ };
13289
+ },
13290
+ render() {
13291
+ const {
13292
+ uiType,
13293
+ model,
13294
+ $emit
13295
+ } = this;
13296
+ return vue.createVNode("label", {
13297
+ "class": ["vjs-check-controller", model ? "is-checked" : ""],
13298
+ "onClick": (e) => e.stopPropagation()
13299
+ }, [vue.createVNode("span", {
13300
+ "class": `vjs-check-controller-inner is-${uiType}`
13301
+ }, null), vue.createVNode("input", {
13302
+ "checked": model,
13303
+ "class": `vjs-check-controller-original is-${uiType}`,
13304
+ "type": uiType,
13305
+ "onChange": () => $emit("change", model)
13306
+ }, null)]);
13307
+ }
13308
+ });
13309
+ const treeNodePropsPass = {
13310
+ // JSONLike data.
13311
+ data: {
13312
+ type: [String, Number, Boolean, Array, Object],
13313
+ default: null
13314
+ },
13315
+ // Data root path.
13316
+ rootPath: {
13317
+ type: String,
13318
+ default: "root"
13319
+ },
13320
+ indent: {
13321
+ type: Number,
13322
+ default: 2
13323
+ },
13324
+ // Whether to display the length of (array|object).
13325
+ showLength: {
13326
+ type: Boolean,
13327
+ default: false
13328
+ },
13329
+ // Whether the key name uses double quotes.
13330
+ showDoubleQuotes: {
13331
+ type: Boolean,
13332
+ default: true
13333
+ },
13334
+ // Custom render for key.
13335
+ renderNodeKey: Function,
13336
+ // Custom render for value.
13337
+ renderNodeValue: Function,
13338
+ // Custom render for node actions.
13339
+ renderNodeActions: {
13340
+ type: [Boolean, Function],
13341
+ default: void 0
13342
+ },
13343
+ // Define the selection method supported by the data level, which is not available by default.
13344
+ selectableType: String,
13345
+ // Whether to display the selection control.
13346
+ showSelectController: {
13347
+ type: Boolean,
13348
+ default: false
13349
+ },
13350
+ // Whether to display the data level connection.
13351
+ showLine: {
13352
+ type: Boolean,
13353
+ default: true
13354
+ },
13355
+ showLineNumber: {
13356
+ type: Boolean,
13357
+ default: false
13358
+ },
13359
+ // Whether to trigger selection when clicking on the node.
13360
+ selectOnClickNode: {
13361
+ type: Boolean,
13362
+ default: true
13363
+ },
13364
+ // When using the selectableType, define whether current path/content is enabled.
13365
+ nodeSelectable: {
13366
+ type: Function,
13367
+ default: () => true
13368
+ },
13369
+ // Highlight current node when selected.
13370
+ highlightSelectedNode: {
13371
+ type: Boolean,
13372
+ default: true
13373
+ },
13374
+ showIcon: {
13375
+ type: Boolean,
13376
+ default: false
13377
+ },
13378
+ theme: {
13379
+ type: String,
13380
+ default: "light"
13381
+ },
13382
+ showKeyValueSpace: {
13383
+ type: Boolean,
13384
+ default: true
13385
+ },
13386
+ editable: {
13387
+ type: Boolean,
13388
+ default: false
13389
+ },
13390
+ editableTrigger: {
13391
+ type: String,
13392
+ default: "click"
13393
+ },
13394
+ onNodeClick: {
13395
+ type: Function
13396
+ },
13397
+ onNodeMouseover: {
13398
+ type: Function
13399
+ },
13400
+ onBracketsClick: {
13401
+ type: Function
13402
+ },
13403
+ onIconClick: {
13404
+ type: Function
13405
+ },
13406
+ onValueChange: {
13407
+ type: Function
13408
+ }
13409
+ };
13410
+ const TreeNode$1 = /* @__PURE__ */ vue.defineComponent({
13411
+ name: "TreeNode",
13412
+ props: treeNodeProps,
13413
+ emits: ["nodeClick", "nodeMouseover", "bracketsClick", "iconClick", "selectedChange", "valueChange"],
13414
+ setup(props, {
13415
+ emit
13416
+ }) {
13417
+ const dataType = vue.computed(() => getDataType(props.node.content));
13418
+ const valueClass = vue.computed(() => `vjs-value vjs-value-${dataType.value}`);
13419
+ const prettyKey = vue.computed(() => props.showDoubleQuotes ? `"${props.node.key}"` : props.node.key);
13420
+ const renderKey = () => {
13421
+ const render2 = props.renderNodeKey;
13422
+ return render2 ? render2({
13423
+ node: props.node,
13424
+ defaultKey: prettyKey.value || ""
13425
+ }) : prettyKey.value;
13426
+ };
13427
+ const isMultiple = vue.computed(() => props.selectableType === "multiple");
13428
+ const isSingle = vue.computed(() => props.selectableType === "single");
13429
+ const selectable = vue.computed(() => props.nodeSelectable(props.node) && (isMultiple.value || isSingle.value));
13430
+ const state = vue.reactive({
13431
+ editing: false
13432
+ });
13433
+ const handleInputChange = (e) => {
13434
+ var _a;
13435
+ const source = (_a = e.target) == null ? void 0 : _a.value;
13436
+ const value = stringToAutoType(source);
13437
+ emit("valueChange", value, props.node.path);
13438
+ };
13439
+ const defaultValue = vue.computed(() => {
13440
+ var _a;
13441
+ let value = (_a = props.node) == null ? void 0 : _a.content;
13442
+ if (value === null) {
13443
+ value = "null";
13444
+ } else if (value === void 0) {
13445
+ value = "undefined";
13446
+ }
13447
+ return dataType.value === "string" ? `"${value}"` : `${value}`;
13448
+ });
13449
+ const renderValue = () => {
13450
+ const render2 = props.renderNodeValue;
13451
+ return render2 ? render2({
13452
+ node: props.node,
13453
+ defaultValue: defaultValue.value
13454
+ }) : defaultValue.value;
13455
+ };
13456
+ const handleBracketsClick = () => {
13457
+ emit("bracketsClick", !props.collapsed, props.node);
13458
+ };
13459
+ const handleIconClick = () => {
13460
+ emit("iconClick", !props.collapsed, props.node);
13461
+ };
13462
+ const handleSelectedChange = () => {
13463
+ emit("selectedChange", props.node);
13464
+ };
13465
+ const handleNodeClick = () => {
13466
+ emit("nodeClick", props.node);
13467
+ if (selectable.value && props.selectOnClickNode) {
13468
+ emit("selectedChange", props.node);
13469
+ }
13470
+ };
13471
+ const handleNodeMouseover = () => {
13472
+ emit("nodeMouseover", props.node);
13473
+ };
13474
+ const handleValueEdit = (e) => {
13475
+ if (!props.editable) return;
13476
+ if (!state.editing) {
13477
+ state.editing = true;
13478
+ const handle = (innerE) => {
13479
+ var _a;
13480
+ if (innerE.target !== e.target && ((_a = innerE.target) == null ? void 0 : _a.parentElement) !== e.target) {
13481
+ state.editing = false;
13482
+ document.removeEventListener("click", handle);
13483
+ }
13484
+ };
13485
+ document.removeEventListener("click", handle);
13486
+ document.addEventListener("click", handle);
13487
+ }
13488
+ };
13489
+ const {
13490
+ copy
13491
+ } = useClipboard();
13492
+ const handleCopy = () => {
13493
+ const {
13494
+ key: key2,
13495
+ path
13496
+ } = props.node;
13497
+ const rootPath = props.rootPath;
13498
+ const content = new Function("data", `return data${path.slice(rootPath.length)}`)(props.data);
13499
+ const copiedData = JSON.stringify(key2 ? {
13500
+ [key2]: content
13501
+ } : content, null, 2);
13502
+ copy(copiedData);
13503
+ };
13504
+ const renderNodeActions = () => {
13505
+ const render2 = props.renderNodeActions;
13506
+ if (!render2) return null;
13507
+ const defaultActions = {
13508
+ copy: handleCopy
13509
+ };
13510
+ return typeof render2 === "function" ? render2({
13511
+ node: props.node,
13512
+ defaultActions
13513
+ }) : vue.createVNode("span", {
13514
+ "onClick": handleCopy,
13515
+ "class": "vjs-tree-node-actions-item"
13516
+ }, [vue.createTextVNode("copy")]);
13517
+ };
13518
+ return () => {
13519
+ const {
13520
+ node
13521
+ } = props;
13522
+ return vue.createVNode("div", {
13523
+ "class": {
13524
+ "vjs-tree-node": true,
13525
+ "has-selector": props.showSelectController,
13526
+ "has-carets": props.showIcon,
13527
+ "is-highlight": props.highlightSelectedNode && props.checked,
13528
+ dark: props.theme === "dark"
13529
+ },
13530
+ "onClick": handleNodeClick,
13531
+ "onMouseover": handleNodeMouseover,
13532
+ "style": props.style
13533
+ }, [props.showLineNumber && vue.createVNode("span", {
13534
+ "class": "vjs-node-index"
13535
+ }, [node.id + 1]), props.showSelectController && selectable.value && node.type !== "objectEnd" && node.type !== "arrayEnd" && vue.createVNode(CheckController, {
13536
+ "isMultiple": isMultiple.value,
13537
+ "checked": props.checked,
13538
+ "onChange": handleSelectedChange
13539
+ }, null), vue.createVNode("div", {
13540
+ "class": "vjs-indent"
13541
+ }, [Array.from(Array(node.level)).map((item, index2) => vue.createVNode("div", {
13542
+ "key": index2,
13543
+ "class": {
13544
+ "vjs-indent-unit": true,
13545
+ "has-line": props.showLine
13546
+ }
13547
+ }, [Array.from(Array(props.indent)).map(() => vue.createVNode(vue.Fragment, null, [vue.createTextVNode(" ")]))])), props.showIcon && vue.createVNode(Carets, {
13548
+ "nodeType": node.type,
13549
+ "onClick": handleIconClick
13550
+ }, null)]), node.key && vue.createVNode("span", {
13551
+ "class": "vjs-key"
13552
+ }, [renderKey(), vue.createVNode("span", {
13553
+ "class": "vjs-colon"
13554
+ }, [`:${props.showKeyValueSpace ? " " : ""}`])]), vue.createVNode("span", null, [node.type !== "content" && node.content ? vue.createVNode(Brackets, {
13555
+ "data": node.content.toString(),
13556
+ "onClick": handleBracketsClick
13557
+ }, null) : vue.createVNode("span", {
13558
+ "class": valueClass.value,
13559
+ "onClick": props.editable && (!props.editableTrigger || props.editableTrigger === "click") ? handleValueEdit : void 0,
13560
+ "onDblclick": props.editable && props.editableTrigger === "dblclick" ? handleValueEdit : void 0
13561
+ }, [props.editable && state.editing ? vue.createVNode("input", {
13562
+ "value": defaultValue.value,
13563
+ "onChange": handleInputChange,
13564
+ "style": {
13565
+ padding: "3px 8px",
13566
+ border: "1px solid #eee",
13567
+ boxShadow: "none",
13568
+ boxSizing: "border-box",
13569
+ borderRadius: 5,
13570
+ fontFamily: "inherit"
13571
+ }
13572
+ }, null) : renderValue()]), node.showComma && vue.createVNode("span", null, [","]), props.showLength && props.collapsed && vue.createVNode("span", {
13573
+ "class": "vjs-comment"
13574
+ }, [vue.createTextVNode(" // "), node.length, vue.createTextVNode(" items ")])]), props.renderNodeActions && vue.createVNode("span", {
13575
+ "class": "vjs-tree-node-actions"
13576
+ }, [renderNodeActions()])]);
13577
+ };
13578
+ }
13579
+ });
13580
+ const BasicJsonViewer = /* @__PURE__ */ vue.defineComponent({
13581
+ name: "JsonTree",
13582
+ props: {
13583
+ ...treeNodePropsPass,
13584
+ collapsedNodeLength: {
13585
+ type: Number,
13586
+ default: Infinity
13587
+ },
13588
+ // Define the depth of the tree, nodes greater than this depth will not be expanded.
13589
+ deep: {
13590
+ type: Number,
13591
+ default: Infinity
13592
+ },
13593
+ pathCollapsible: {
13594
+ type: Function,
13595
+ default: () => false
13596
+ },
13597
+ // Whether to use virtual scroll, usually applied to big data.
13598
+ virtual: {
13599
+ type: Boolean,
13600
+ default: false
13601
+ },
13602
+ // When using virtual scroll, set the height of tree.
13603
+ height: {
13604
+ type: Number,
13605
+ default: 400
13606
+ },
13607
+ // When using virtual scroll without dynamicHeight, define the height of each row.
13608
+ itemHeight: {
13609
+ type: Number,
13610
+ default: 20
13611
+ },
13612
+ // Enable dynamic row heights for virtual scroll.
13613
+ dynamicHeight: {
13614
+ type: Boolean,
13615
+ default: true
13616
+ },
13617
+ // When there is a selection function, define the selected path.
13618
+ // For multiple selections, it is an array ['root.a','root.b'], for single selection, it is a string of 'root.a'.
13619
+ selectedValue: {
13620
+ type: [String, Array],
13621
+ default: () => ""
13622
+ },
13623
+ // Collapsed control.
13624
+ collapsedOnClickBrackets: {
13625
+ type: Boolean,
13626
+ default: true
13627
+ },
13628
+ style: {
13629
+ type: Object,
13630
+ default: void 0
13631
+ },
13632
+ onSelectedChange: {
13633
+ type: Function,
13634
+ default: void 0
13635
+ },
13636
+ theme: {
13637
+ type: String,
13638
+ default: "light"
13639
+ }
13640
+ },
13641
+ emits: ["nodeClick", "nodeMouseover", "bracketsClick", "iconClick", "selectedChange", "update:selectedValue", "update:data"],
13642
+ setup(props, {
13643
+ emit,
13644
+ slots
13645
+ }) {
13646
+ const {
13647
+ b
13648
+ } = useNamespace("basic-json-viewer");
13649
+ const treeRef = vue.ref();
13650
+ const originFlatData = vue.computed(() => jsonFlatten(props.data, props.rootPath));
13651
+ const initHiddenPaths = (deep, collapsedNodeLength) => {
13652
+ return originFlatData.value.reduce((acc, item) => {
13653
+ var _a;
13654
+ const doCollapse = item.level >= deep || item.length >= collapsedNodeLength;
13655
+ const pathComparison = (_a = props.pathCollapsible) == null ? void 0 : _a.call(props, item);
13656
+ if ((item.type === "objectStart" || item.type === "arrayStart") && (doCollapse || pathComparison)) {
13657
+ return {
13658
+ ...acc,
13659
+ [item.path]: 1
13660
+ };
13661
+ }
13662
+ return acc;
13663
+ }, {});
13664
+ };
13665
+ const state = vue.reactive({
13666
+ translateY: 0,
13667
+ visibleData: null,
13668
+ hiddenPaths: initHiddenPaths(props.deep, props.collapsedNodeLength),
13669
+ startIndex: 0,
13670
+ endIndex: 0
13671
+ });
13672
+ let heights = [];
13673
+ let offsets = [];
13674
+ let totalHeight = 0;
13675
+ const rowRefs = {};
13676
+ const OVERSCAN_COUNT = 5;
13677
+ const initDynamicHeights = (length) => {
13678
+ heights = Array(length).fill(0).map(() => props.itemHeight || 20);
13679
+ offsets = new Array(length + 1);
13680
+ offsets[0] = 0;
13681
+ for (let i = 0; i < length; i++) {
13682
+ offsets[i + 1] = offsets[i] + heights[i];
13683
+ }
13684
+ totalHeight = offsets[length] || 0;
13685
+ };
13686
+ const recomputeOffsetsFrom = (start) => {
13687
+ const length = heights.length;
13688
+ if (start < 0) start = 0;
13689
+ if (start > length) start = length;
13690
+ for (let i = start; i < length; i++) {
13691
+ offsets[i + 1] = offsets[i] + heights[i];
13692
+ }
13693
+ totalHeight = offsets[length] || 0;
13694
+ };
13695
+ const setRowRef = (index2, el) => {
13696
+ if (el) {
13697
+ rowRefs[index2] = el;
13698
+ } else {
13699
+ delete rowRefs[index2];
13700
+ }
13701
+ };
13702
+ const lowerBound = (arr, target) => {
13703
+ let lo = 0;
13704
+ let hi = arr.length - 1;
13705
+ while (lo < hi) {
13706
+ const mid = lo + hi >>> 1;
13707
+ if (arr[mid] < target) lo = mid + 1;
13708
+ else hi = mid;
13709
+ }
13710
+ return lo;
13711
+ };
13712
+ const findStartIndexByScrollTop = (scrollTop) => {
13713
+ const i = lowerBound(offsets, scrollTop + 1e-4);
13714
+ return Math.max(0, Math.min(i - 1, heights.length - 1));
13715
+ };
13716
+ const findEndIndexByViewport = (scrollTop, viewportHeight) => {
13717
+ const target = scrollTop + viewportHeight;
13718
+ const i = lowerBound(offsets, target);
13719
+ return Math.max(0, Math.min(i + 1, heights.length));
13720
+ };
13721
+ const flatData = vue.computed(() => {
13722
+ let startHiddenItem = null;
13723
+ const data = [];
13724
+ const length = originFlatData.value.length;
13725
+ for (let i = 0; i < length; i++) {
13726
+ const cur = originFlatData.value[i];
13727
+ const item = {
13728
+ ...cur,
13729
+ id: i
13730
+ };
13731
+ const isHidden = state.hiddenPaths[item.path];
13732
+ if (startHiddenItem && startHiddenItem.path === item.path) {
13733
+ const isObject2 = startHiddenItem.type === "objectStart";
13734
+ const mergeItem = {
13735
+ ...item,
13736
+ ...startHiddenItem,
13737
+ showComma: item.showComma,
13738
+ content: isObject2 ? "{...}" : "[...]",
13739
+ type: isObject2 ? "objectCollapsed" : "arrayCollapsed"
13740
+ };
13741
+ startHiddenItem = null;
13742
+ data.push(mergeItem);
13743
+ } else if (isHidden && !startHiddenItem) {
13744
+ startHiddenItem = item;
13745
+ continue;
13746
+ } else {
13747
+ if (startHiddenItem) continue;
13748
+ else data.push(item);
13749
+ }
13750
+ }
13751
+ return data;
13752
+ });
13753
+ const selectedPaths = vue.computed(() => {
13754
+ const value = props.selectedValue;
13755
+ if (value && props.selectableType === "multiple" && Array.isArray(value)) {
13756
+ return value;
13757
+ }
13758
+ return [value];
13759
+ });
13760
+ const propsErrorMessage = vue.computed(() => {
13761
+ const error = props.selectableType && !props.selectOnClickNode && !props.showSelectController;
13762
+ return error ? "When selectableType is not null, selectOnClickNode and showSelectController cannot be false at the same time, because this will cause the selection to fail." : "";
13763
+ });
13764
+ const listHeight = vue.computed(() => {
13765
+ if (props.dynamicHeight) {
13766
+ return totalHeight || 0;
13767
+ }
13768
+ return flatData.value.length * props.itemHeight;
13769
+ });
13770
+ const updateVisibleData = () => {
13771
+ var _a;
13772
+ const flatDataValue = flatData.value;
13773
+ if (!flatDataValue) return;
13774
+ if (props.virtual) {
13775
+ const scrollTop = ((_a = treeRef.value) == null ? void 0 : _a.scrollTop) || 0;
13776
+ if (props.dynamicHeight) {
13777
+ if (heights.length !== flatDataValue.length) {
13778
+ initDynamicHeights(flatDataValue.length);
13779
+ }
13780
+ const start = findStartIndexByScrollTop(scrollTop);
13781
+ const endNoOverscan = findEndIndexByViewport(scrollTop, props.height);
13782
+ const startWithOverscan = Math.max(0, start - OVERSCAN_COUNT);
13783
+ const endWithOverscan = Math.min(flatDataValue.length, endNoOverscan + OVERSCAN_COUNT);
13784
+ state.startIndex = startWithOverscan;
13785
+ state.endIndex = endWithOverscan;
13786
+ state.translateY = offsets[startWithOverscan] || 0;
13787
+ state.visibleData = flatDataValue.slice(startWithOverscan, endWithOverscan);
13788
+ vue.nextTick().then(() => {
13789
+ let changed = false;
13790
+ for (let i = state.startIndex; i < state.endIndex; i++) {
13791
+ const el = rowRefs[i];
13792
+ if (!el) continue;
13793
+ const h = el.offsetHeight;
13794
+ if (h && heights[i] !== h) {
13795
+ heights[i] = h;
13796
+ offsets[i + 1] = offsets[i] + heights[i];
13797
+ recomputeOffsetsFrom(i + 1);
13798
+ changed = true;
13799
+ }
13800
+ }
13801
+ if (changed) {
13802
+ updateVisibleData();
13803
+ }
13804
+ });
13805
+ } else {
13806
+ const visibleCount = props.height / props.itemHeight;
13807
+ const scrollCount = Math.floor(scrollTop / props.itemHeight);
13808
+ let start = scrollCount < 0 ? 0 : scrollCount + visibleCount > flatDataValue.length ? flatDataValue.length - visibleCount : scrollCount;
13809
+ if (start < 0) {
13810
+ start = 0;
13811
+ }
13812
+ const end = start + visibleCount;
13813
+ state.translateY = start * props.itemHeight;
13814
+ state.startIndex = start;
13815
+ state.endIndex = end;
13816
+ state.visibleData = flatDataValue.slice(start, end);
13817
+ }
13818
+ } else {
13819
+ state.translateY = 0;
13820
+ state.startIndex = 0;
13821
+ state.endIndex = flatDataValue.length;
13822
+ state.visibleData = flatDataValue;
13823
+ }
13824
+ };
13825
+ let rafId = null;
13826
+ const handleTreeScroll = () => {
13827
+ if (rafId) {
13828
+ cancelAnimationFrame(rafId);
13829
+ }
13830
+ rafId = requestAnimationFrame(() => {
13831
+ updateVisibleData();
13832
+ });
13833
+ };
13834
+ const handleSelectedChange = ({
13835
+ path
13836
+ }) => {
13837
+ const type = props.selectableType;
13838
+ if (type === "multiple") {
13839
+ const index2 = selectedPaths.value.findIndex((item) => item === path);
13840
+ const newVal = [...selectedPaths.value];
13841
+ if (index2 !== -1) {
13842
+ newVal.splice(index2, 1);
13843
+ } else {
13844
+ newVal.push(path);
13845
+ }
13846
+ emit("update:selectedValue", newVal);
13847
+ emit("selectedChange", newVal, [...selectedPaths.value]);
13848
+ } else if (type === "single") {
13849
+ if (selectedPaths.value[0] !== path) {
13850
+ const [oldVal] = selectedPaths.value;
13851
+ const newVal = path;
13852
+ emit("update:selectedValue", newVal);
13853
+ emit("selectedChange", newVal, oldVal);
13854
+ }
13855
+ }
13856
+ };
13857
+ const handleNodeClick = (node) => {
13858
+ emit("nodeClick", node);
13859
+ };
13860
+ const handleNodeMouseover = (node) => {
13861
+ emit("nodeMouseover", node);
13862
+ };
13863
+ const updateCollapsedPaths = (collapsed, path) => {
13864
+ if (collapsed) {
13865
+ state.hiddenPaths = {
13866
+ ...state.hiddenPaths,
13867
+ [path]: 1
13868
+ };
13869
+ } else {
13870
+ const newPaths = {
13871
+ ...state.hiddenPaths
13872
+ };
13873
+ delete newPaths[path];
13874
+ state.hiddenPaths = newPaths;
13875
+ }
13876
+ };
13877
+ const handleBracketsClick = (collapsed, node) => {
13878
+ if (props.collapsedOnClickBrackets) {
13879
+ updateCollapsedPaths(collapsed, node.path);
13880
+ }
13881
+ emit("bracketsClick", collapsed, node);
13882
+ };
13883
+ const handleIconClick = (collapsed, node) => {
13884
+ updateCollapsedPaths(collapsed, node.path);
13885
+ emit("iconClick", collapsed, node);
13886
+ };
13887
+ const handleValueChange = (value, path) => {
13888
+ const newData = cloneDeep(props.data);
13889
+ const rootPath = props.rootPath;
13890
+ new Function("data", "val", `data${path.slice(rootPath.length)}=val`)(newData, value);
13891
+ emit("update:data", newData);
13892
+ };
13893
+ vue.watchEffect(() => {
13894
+ if (propsErrorMessage.value) {
13895
+ emitError(propsErrorMessage.value);
13896
+ }
13897
+ });
13898
+ vue.watchEffect(() => {
13899
+ if (flatData.value) {
13900
+ if (props.virtual && props.dynamicHeight) {
13901
+ if (heights.length !== flatData.value.length) {
13902
+ initDynamicHeights(flatData.value.length);
13903
+ }
13904
+ }
13905
+ updateVisibleData();
13906
+ }
13907
+ });
13908
+ vue.watch(() => [props.dynamicHeight, props.itemHeight, originFlatData.value.length], () => {
13909
+ if (props.virtual && props.dynamicHeight) {
13910
+ initDynamicHeights(flatData.value.length);
13911
+ vue.nextTick(updateVisibleData);
13912
+ }
13913
+ });
13914
+ vue.watch(() => props.deep, (val) => {
13915
+ if (val) state.hiddenPaths = initHiddenPaths(val, props.collapsedNodeLength);
13916
+ });
13917
+ vue.watch(() => props.collapsedNodeLength, (val) => {
13918
+ if (val) state.hiddenPaths = initHiddenPaths(props.deep, val);
13919
+ });
13920
+ return () => {
13921
+ var _a, _b, _c, _d, _e;
13922
+ const renderNodeKey = (_a = props.renderNodeKey) != null ? _a : slots.renderNodeKey;
13923
+ const renderNodeValue = (_b = props.renderNodeValue) != null ? _b : slots.renderNodeValue;
13924
+ const renderNodeActions = (_d = (_c = props.renderNodeActions) != null ? _c : slots.renderNodeActions) != null ? _d : false;
13925
+ const nodeContent = (_e = state.visibleData) == null ? void 0 : _e.map((item, localIndex) => {
13926
+ const globalIndex = state.startIndex + localIndex;
13927
+ return vue.createVNode("div", {
13928
+ "key": item.id,
13929
+ "ref": (el) => setRowRef(globalIndex, el || null)
13930
+ }, [vue.createVNode(TreeNode$1, {
13931
+ "data": props.data,
13932
+ "rootPath": props.rootPath,
13933
+ "indent": props.indent,
13934
+ "node": item,
13935
+ "collapsed": !!state.hiddenPaths[item.path],
13936
+ "theme": props.theme,
13937
+ "showDoubleQuotes": props.showDoubleQuotes,
13938
+ "showLength": props.showLength,
13939
+ "checked": selectedPaths.value.includes(item.path),
13940
+ "selectableType": props.selectableType,
13941
+ "showLine": props.showLine,
13942
+ "showLineNumber": props.showLineNumber,
13943
+ "showSelectController": props.showSelectController,
13944
+ "selectOnClickNode": props.selectOnClickNode,
13945
+ "nodeSelectable": props.nodeSelectable,
13946
+ "highlightSelectedNode": props.highlightSelectedNode,
13947
+ "editable": props.editable,
13948
+ "editableTrigger": props.editableTrigger,
13949
+ "showIcon": props.showIcon,
13950
+ "showKeyValueSpace": props.showKeyValueSpace,
13951
+ "renderNodeKey": renderNodeKey,
13952
+ "renderNodeValue": renderNodeValue,
13953
+ "renderNodeActions": renderNodeActions,
13954
+ "onNodeClick": handleNodeClick,
13955
+ "onNodeMouseover": handleNodeMouseover,
13956
+ "onBracketsClick": handleBracketsClick,
13957
+ "onIconClick": handleIconClick,
13958
+ "onSelectedChange": handleSelectedChange,
13959
+ "onValueChange": handleValueChange,
13960
+ "class": props.dynamicHeight ? "dynamic-height" : void 0,
13961
+ "style": props.dynamicHeight ? {} : props.itemHeight && props.itemHeight !== 20 ? {
13962
+ lineHeight: `${props.itemHeight}px`
13963
+ } : {}
13964
+ }, null)]);
13965
+ });
13966
+ return vue.createVNode("div", {
13967
+ "ref": treeRef,
13968
+ "class": {
13969
+ [b()]: true,
13970
+ "vjs-tree": true,
13971
+ "is-virtual": props.virtual,
13972
+ dark: props.theme === "dark"
13973
+ },
13974
+ "onScroll": props.virtual ? handleTreeScroll : void 0,
13975
+ "style": props.showLineNumber ? {
13976
+ paddingLeft: `${Number(originFlatData.value.length.toString().length) * 12}px`,
13977
+ ...props.style
13978
+ } : props.style
13979
+ }, [props.virtual ? vue.createVNode("div", {
13980
+ "class": "vjs-tree-list",
13981
+ "style": {
13982
+ height: `${props.height}px`
13983
+ }
13984
+ }, [vue.createVNode("div", {
13985
+ "class": "vjs-tree-list-holder",
13986
+ "style": {
13987
+ height: `${listHeight.value}px`
13988
+ }
13989
+ }, [vue.createVNode("div", {
13990
+ "class": "vjs-tree-list-holder-inner",
13991
+ "style": {
13992
+ transform: `translateY(${state.translateY}px)`
13993
+ }
13994
+ }, [nodeContent])])]) : nodeContent]);
13995
+ };
13996
+ }
13997
+ });
13998
+ const XBasicJsonViewer = utils.withInstall(BasicJsonViewer);
12884
13999
  const ROW_KEY$1 = "_MAX_ROW_KEY";
12885
14000
  const PAGE_SIZE_OPTIONS$1 = [10, 50, 80, 100];
12886
14001
  const PAGE_SIZE$1 = 10;
@@ -23717,7 +24832,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
23717
24832
  });
23718
24833
  useIframeResize(updateRender);
23719
24834
  const treeNodePropKeys = ["titleField", "keyField", "checkable", "selectable", "unselectOnClick", "disableAll", "draggable", "droppable", "render", "nodeIndent", "showLine", "showLeftArrow", "showRightArrow"];
23720
- const treeNodeProps = vue.reactive(pickReadonly(vue.toRefs(props), ...treeNodePropKeys));
24835
+ const treeNodeProps2 = vue.reactive(pickReadonly(vue.toRefs(props), ...treeNodePropKeys));
23721
24836
  __expose({
23722
24837
  setData,
23723
24838
  setChecked,
@@ -23774,7 +24889,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
23774
24889
  style: vue.normalizeStyle({ height: `${vue.unref(topSpaceHeight)}px` })
23775
24890
  }, null, 4),
23776
24891
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(expandAnimation).ready.value ? vue.unref(expandAnimation).topNodes.value : vue.unref(renderNodes), (node) => {
23777
- return vue.openBlock(), vue.createBlock(vue.unref(XTreeNode), vue.mergeProps({ ref_for: true }, treeNodeProps, {
24892
+ return vue.openBlock(), vue.createBlock(vue.unref(XTreeNode), vue.mergeProps({ ref_for: true }, treeNodeProps2, {
23778
24893
  key: node[__props.keyField],
23779
24894
  data: node,
23780
24895
  "get-node": vue.unref(getNode),
@@ -23809,7 +24924,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
23809
24924
  class: vue.normalizeClass(vue.unref(transitionWrapperInnerCls))
23810
24925
  }, [
23811
24926
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(expandAnimation).middleNodes.value, (node) => {
23812
- return vue.openBlock(), vue.createBlock(vue.unref(XTreeNode), vue.mergeProps({ ref_for: true }, treeNodeProps, {
24927
+ return vue.openBlock(), vue.createBlock(vue.unref(XTreeNode), vue.mergeProps({ ref_for: true }, treeNodeProps2, {
23813
24928
  key: node[__props.keyField],
23814
24929
  data: node,
23815
24930
  "get-node": vue.unref(getNode),
@@ -23838,7 +24953,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
23838
24953
  _: 3
23839
24954
  }, 8, ["onAfterEnter", "onAfterLeave"]),
23840
24955
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(expandAnimation).bottomNodes.value, (node) => {
23841
- return vue.openBlock(), vue.createBlock(vue.unref(XTreeNode), vue.mergeProps({ ref_for: true }, treeNodeProps, {
24956
+ return vue.openBlock(), vue.createBlock(vue.unref(XTreeNode), vue.mergeProps({ ref_for: true }, treeNodeProps2, {
23842
24957
  key: node[__props.keyField],
23843
24958
  data: node,
23844
24959
  "get-node": vue.unref(getNode),
@@ -24758,8 +25873,8 @@ const components = [
24758
25873
  XBasicSubPanel,
24759
25874
  XBasicRow,
24760
25875
  XBasicCol,
25876
+ XBasicJsonViewer,
24761
25877
  XTree,
24762
- XTreeNode,
24763
25878
  XTreeSearch,
24764
25879
  XTreeDrop,
24765
25880
  XBasicViewBar,
@@ -25459,6 +26574,7 @@ exports.XBasicHelp = XBasicHelp;
25459
26574
  exports.XBasicHidden = XBasicHidden;
25460
26575
  exports.XBasicIconOnline = XBasicIconOnline;
25461
26576
  exports.XBasicIconPicker = XBasicIconPicker;
26577
+ exports.XBasicJsonViewer = XBasicJsonViewer;
25462
26578
  exports.XBasicListPage = XBasicListPage;
25463
26579
  exports.XBasicLoading = XBasicLoading;
25464
26580
  exports.XBasicLoadingDirective = vLoading;
@@ -25504,6 +26620,7 @@ exports.basicFontIconProps = basicFontIconProps;
25504
26620
  exports.basicGradientTitleProps = basicGradientTitleProps;
25505
26621
  exports.basicHelpProps = basicHelpProps;
25506
26622
  exports.basicIconOnlineProps = basicIconOnlineProps;
26623
+ exports.basicJsonViewerProps = basicJsonViewerProps;
25507
26624
  exports.basicMessageBoxProps = basicMessageBoxProps;
25508
26625
  exports.basicModalProps = basicModalProps;
25509
26626
  exports.basicRadioGroupProps = basicRadioGroupProps;
@@ -25526,6 +26643,8 @@ exports.provideGlobalConfig = provideGlobalConfig;
25526
26643
  exports.responsiveArray = responsiveArray;
25527
26644
  exports.setTableGlobalFormat = setTableGlobalFormat;
25528
26645
  exports.setVxeTableTheme = setVxeTableTheme;
26646
+ exports.treeNodeProps = treeNodeProps;
26647
+ exports.treeNodePropsPass = treeNodePropsPass$1;
25529
26648
  exports.useBasicDrawerModal = useBasicDrawerModal;
25530
26649
  exports.useComponentRegister = useComponentRegister;
25531
26650
  exports.useConfigProvider = useConfigProvider;