@douyinfe/semi-foundation 2.70.1 → 2.71.0-alpha.3

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 (58) hide show
  1. package/cascader/constants.ts +2 -0
  2. package/cascader/foundation.ts +49 -2
  3. package/dragMove/foundation.ts +194 -0
  4. package/highlight/foundation.ts +211 -0
  5. package/jsonViewer/constants.ts +7 -0
  6. package/jsonViewer/foundation.ts +72 -0
  7. package/jsonViewer/jsonViewer.scss +200 -0
  8. package/jsonViewer/script/build.js +51 -0
  9. package/jsonViewer/variables.scss +15 -0
  10. package/lib/cjs/cascader/constants.d.ts +2 -0
  11. package/lib/cjs/cascader/constants.js +3 -1
  12. package/lib/cjs/cascader/foundation.d.ts +3 -0
  13. package/lib/cjs/cascader/foundation.js +55 -3
  14. package/lib/cjs/dragMove/foundation.d.ts +45 -0
  15. package/lib/cjs/dragMove/foundation.js +162 -0
  16. package/lib/cjs/highlight/foundation.d.ts +84 -0
  17. package/lib/cjs/highlight/foundation.js +184 -0
  18. package/lib/cjs/jsonViewer/constants.d.ts +4 -0
  19. package/lib/cjs/jsonViewer/constants.js +10 -0
  20. package/lib/cjs/jsonViewer/foundation.d.ts +24 -0
  21. package/lib/cjs/jsonViewer/foundation.js +69 -0
  22. package/lib/cjs/jsonViewer/jsonViewer.css +168 -0
  23. package/lib/cjs/jsonViewer/jsonViewer.scss +200 -0
  24. package/lib/cjs/jsonViewer/variables.scss +15 -0
  25. package/lib/cjs/lottie/foundation.d.ts +1 -1
  26. package/lib/cjs/resizable/foundation.d.ts +6 -2
  27. package/lib/cjs/tree/tree.css +1 -0
  28. package/lib/cjs/tree/tree.scss +2 -0
  29. package/lib/es/cascader/constants.d.ts +2 -0
  30. package/lib/es/cascader/constants.js +3 -1
  31. package/lib/es/cascader/foundation.d.ts +3 -0
  32. package/lib/es/cascader/foundation.js +55 -3
  33. package/lib/es/dragMove/foundation.d.ts +45 -0
  34. package/lib/es/dragMove/foundation.js +153 -0
  35. package/lib/es/highlight/foundation.d.ts +84 -0
  36. package/lib/es/highlight/foundation.js +174 -0
  37. package/lib/es/jsonViewer/constants.d.ts +4 -0
  38. package/lib/es/jsonViewer/constants.js +5 -0
  39. package/lib/es/jsonViewer/foundation.d.ts +24 -0
  40. package/lib/es/jsonViewer/foundation.js +62 -0
  41. package/lib/es/jsonViewer/jsonViewer.css +168 -0
  42. package/lib/es/jsonViewer/jsonViewer.scss +200 -0
  43. package/lib/es/jsonViewer/variables.scss +15 -0
  44. package/lib/es/lottie/foundation.d.ts +1 -1
  45. package/lib/es/resizable/foundation.d.ts +6 -2
  46. package/lib/es/resizable/foundation.js +3 -2
  47. package/lib/es/tree/tree.css +1 -0
  48. package/lib/es/tree/tree.scss +2 -0
  49. package/lottie/foundation.ts +2 -2
  50. package/package.json +5 -3
  51. package/resizable/foundation.ts +19 -5
  52. package/tree/tree.scss +2 -0
  53. package/tsconfig.json +1 -1
  54. package/lib/cjs/utils/getHighlight.d.ts +0 -45
  55. package/lib/cjs/utils/getHighlight.js +0 -175
  56. package/lib/es/utils/getHighlight.d.ts +0 -45
  57. package/lib/es/utils/getHighlight.js +0 -166
  58. package/utils/getHighlight.ts +0 -178
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _isString2 = _interopRequireDefault(require("lodash/isString"));
8
+ var _foundation = _interopRequireDefault(require("../base/foundation"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ // Modified version based on 'highlight-words-core'
11
+
12
+ const escapeRegExpFn = string => string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
13
+ class HighlightFoundation extends _foundation.default {
14
+ constructor(adapter) {
15
+ super(Object.assign({}, adapter));
16
+ /**
17
+ * Creates an array of chunk objects representing both higlightable and non highlightable pieces of text that match each search word.
18
+ *
19
+ findAll ['z'], 'aaazaaazaaa'
20
+ result #=> [
21
+ { start: 0, end: 3, highlight: false }
22
+ { start: 3, end: 4, highlight: true }
23
+ { start: 4, end: 7, highlight: false }
24
+ { start: 7, end: 8, highlight: true }
25
+ { start: 8, end: 11, highlight: false }
26
+ ]
27
+ findAll ['do', 'dollar'], 'aaa do dollar aaa'
28
+ #=> chunks: [
29
+ { start: 4, end: 6 },
30
+ { start: 7, end: 9 },
31
+ { start: 7, end: 13 },
32
+ ]
33
+ #=> chunksToHight: [
34
+ { start: 4, end: 6 },
35
+ { start: 7, end: 13 },
36
+ ]
37
+ #=> result: [
38
+ { start: 0, end: 4, highlight: false },
39
+ { start: 4, end: 6, highlight: true },
40
+ { start: 6, end: 7, highlight: false },
41
+ { start: 7, end: 13, highlight: true },
42
+ { start: 13, end: 17, highlight: false },
43
+ ]
44
+ * @return Array of "chunks" (where a Chunk is { start:number, end:number, highlight:boolean })
45
+ */
46
+ this.findAll = _ref => {
47
+ let {
48
+ autoEscape = true,
49
+ caseSensitive = false,
50
+ searchWords,
51
+ sourceString
52
+ } = _ref;
53
+ if ((0, _isString2.default)(searchWords)) {
54
+ searchWords = [searchWords];
55
+ }
56
+ const chunks = this.findChunks({
57
+ autoEscape,
58
+ caseSensitive,
59
+ searchWords,
60
+ sourceString
61
+ });
62
+ const chunksToHighlight = this.combineChunks({
63
+ chunks
64
+ });
65
+ const result = this.fillInChunks({
66
+ chunksToHighlight,
67
+ totalLength: sourceString ? sourceString.length : 0
68
+ });
69
+ return result;
70
+ };
71
+ /**
72
+ * Examine text for any matches.
73
+ * If we find matches, add them to the returned array as a "chunk" object ({start:number, end:number}).
74
+ * @return { start:number, end:number }[]
75
+ */
76
+ this.findChunks = _ref2 => {
77
+ let {
78
+ autoEscape,
79
+ caseSensitive,
80
+ searchWords,
81
+ sourceString
82
+ } = _ref2;
83
+ return searchWords.map(searchWord => typeof searchWord === 'string' ? {
84
+ text: searchWord
85
+ } : searchWord).filter(searchWord => searchWord.text) // Remove empty words
86
+ .reduce((chunks, searchWord) => {
87
+ let searchText = searchWord.text;
88
+ if (autoEscape) {
89
+ searchText = escapeRegExpFn(searchText);
90
+ }
91
+ const regex = new RegExp(searchText, caseSensitive ? 'g' : 'gi');
92
+ let match;
93
+ while (match = regex.exec(sourceString)) {
94
+ const start = match.index;
95
+ const end = regex.lastIndex;
96
+ if (end > start) {
97
+ chunks.push({
98
+ highlight: true,
99
+ start,
100
+ end,
101
+ className: searchWord.className,
102
+ style: searchWord.style
103
+ });
104
+ }
105
+ if (match.index === regex.lastIndex) {
106
+ regex.lastIndex++;
107
+ }
108
+ }
109
+ return chunks;
110
+ }, []);
111
+ };
112
+ /**
113
+ * Takes an array of {start:number, end:number} objects and combines chunks that overlap into single chunks.
114
+ * @return {start:number, end:number}[]
115
+ */
116
+ this.combineChunks = _ref3 => {
117
+ let {
118
+ chunks
119
+ } = _ref3;
120
+ return chunks.sort((first, second) => first.start - second.start).reduce((processedChunks, nextChunk) => {
121
+ // First chunk just goes straight in the array...
122
+ if (processedChunks.length === 0) {
123
+ return [nextChunk];
124
+ } else {
125
+ // ... subsequent chunks get checked to see if they overlap...
126
+ const prevChunk = processedChunks.pop();
127
+ if (nextChunk.start <= prevChunk.end) {
128
+ // It may be the case that prevChunk completely surrounds nextChunk, so take the
129
+ // largest of the end indeces.
130
+ const endIndex = Math.max(prevChunk.end, nextChunk.end);
131
+ processedChunks.push({
132
+ highlight: true,
133
+ start: prevChunk.start,
134
+ end: endIndex,
135
+ className: prevChunk.className || nextChunk.className,
136
+ style: Object.assign(Object.assign({}, prevChunk.style), nextChunk.style)
137
+ });
138
+ } else {
139
+ processedChunks.push(prevChunk, nextChunk);
140
+ }
141
+ return processedChunks;
142
+ }
143
+ }, []);
144
+ };
145
+ /**
146
+ * Given a set of chunks to highlight, create an additional set of chunks
147
+ * to represent the bits of text between the highlighted text.
148
+ * @param chunksToHighlight {start:number, end:number}[]
149
+ * @param totalLength number
150
+ * @return {start:number, end:number, highlight:boolean}[]
151
+ */
152
+ this.fillInChunks = _ref4 => {
153
+ let {
154
+ chunksToHighlight,
155
+ totalLength
156
+ } = _ref4;
157
+ const allChunks = [];
158
+ const append = (start, end, highlight, className, style) => {
159
+ if (end - start > 0) {
160
+ allChunks.push({
161
+ start,
162
+ end,
163
+ highlight,
164
+ className,
165
+ style
166
+ });
167
+ }
168
+ };
169
+ if (chunksToHighlight.length === 0) {
170
+ append(0, totalLength, false);
171
+ } else {
172
+ let lastIndex = 0;
173
+ chunksToHighlight.forEach(chunk => {
174
+ append(lastIndex, chunk.start, false);
175
+ append(chunk.start, chunk.end, true, chunk.className, chunk.style);
176
+ lastIndex = chunk.end;
177
+ });
178
+ append(lastIndex, totalLength, false);
179
+ }
180
+ return allChunks;
181
+ };
182
+ }
183
+ }
184
+ exports.default = HighlightFoundation;
@@ -0,0 +1,4 @@
1
+ declare const cssClasses: {
2
+ readonly PREFIX: "semi-json-viewer";
3
+ };
4
+ export { cssClasses };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.cssClasses = void 0;
7
+ var _constants = require("../base/constants");
8
+ const cssClasses = exports.cssClasses = {
9
+ PREFIX: `${_constants.BASE_CLASS_PREFIX}-json-viewer`
10
+ };
@@ -0,0 +1,24 @@
1
+ import { JsonViewer, JsonViewerOptions } from '@douyinfe/semi-json-viewer-core';
2
+ import BaseFoundation, { DefaultAdapter } from '../base/foundation';
3
+ export type { JsonViewerOptions };
4
+ export interface JsonViewerAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
5
+ getEditorRef: () => HTMLElement;
6
+ getSearchRef: () => HTMLInputElement;
7
+ notifyChange: (value: string) => void;
8
+ notifyHover: (value: string, el: HTMLElement) => HTMLElement | undefined;
9
+ setSearchOptions: (key: string) => void;
10
+ showSearchBar: () => void;
11
+ }
12
+ declare class JsonViewerFoundation extends BaseFoundation<JsonViewerAdapter> {
13
+ constructor(adapter: JsonViewerAdapter);
14
+ jsonViewer: JsonViewer | null;
15
+ init(): void;
16
+ search(searchText: string): void;
17
+ prevSearch(): void;
18
+ nextSearch(): void;
19
+ replace(replaceText: string): void;
20
+ replaceAll(replaceText: string): void;
21
+ setSearchOptions(key: string): void;
22
+ showSearchBar(): void;
23
+ }
24
+ export default JsonViewerFoundation;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _semiJsonViewerCore = require("@douyinfe/semi-json-viewer-core");
8
+ var _foundation = _interopRequireDefault(require("../base/foundation"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ class JsonViewerFoundation extends _foundation.default {
11
+ constructor(adapter) {
12
+ super(Object.assign(Object.assign({}, JsonViewerFoundation), adapter));
13
+ this.jsonViewer = null;
14
+ }
15
+ init() {
16
+ const props = this.getProps();
17
+ const editorRef = this._adapter.getEditorRef();
18
+ this.jsonViewer = new _semiJsonViewerCore.JsonViewer(editorRef, props.value, props.options);
19
+ this.jsonViewer.layout();
20
+ this.jsonViewer.emitter.on('contentChanged', e => {
21
+ var _a;
22
+ this._adapter.notifyChange((_a = this.jsonViewer) === null || _a === void 0 ? void 0 : _a.getModel().getValue());
23
+ if (this.getState('showSearchBar')) {
24
+ this.search(this._adapter.getSearchRef().value);
25
+ }
26
+ });
27
+ this.jsonViewer.emitter.on('hoverNode', e => {
28
+ const el = this._adapter.notifyHover(e.value, e.target);
29
+ if (el) {
30
+ this.jsonViewer.emitter.emit('renderHoverNode', {
31
+ el
32
+ });
33
+ }
34
+ });
35
+ }
36
+ search(searchText) {
37
+ var _a;
38
+ const state = this.getState('searchOptions');
39
+ const {
40
+ caseSensitive,
41
+ wholeWord,
42
+ regex
43
+ } = state;
44
+ (_a = this.jsonViewer) === null || _a === void 0 ? void 0 : _a.getSearchWidget().search(searchText, caseSensitive, wholeWord, regex);
45
+ }
46
+ prevSearch() {
47
+ var _a;
48
+ (_a = this.jsonViewer) === null || _a === void 0 ? void 0 : _a.getSearchWidget().navigateResults(-1);
49
+ }
50
+ nextSearch() {
51
+ var _a;
52
+ (_a = this.jsonViewer) === null || _a === void 0 ? void 0 : _a.getSearchWidget().navigateResults(1);
53
+ }
54
+ replace(replaceText) {
55
+ var _a;
56
+ (_a = this.jsonViewer) === null || _a === void 0 ? void 0 : _a.getSearchWidget().replace(replaceText);
57
+ }
58
+ replaceAll(replaceText) {
59
+ var _a;
60
+ (_a = this.jsonViewer) === null || _a === void 0 ? void 0 : _a.getSearchWidget().replaceAll(replaceText);
61
+ }
62
+ setSearchOptions(key) {
63
+ this._adapter.setSearchOptions(key);
64
+ }
65
+ showSearchBar() {
66
+ this._adapter.showSearchBar();
67
+ }
68
+ }
69
+ var _default = exports.default = JsonViewerFoundation;
@@ -0,0 +1,168 @@
1
+ /* shadow */
2
+ /* sizing */
3
+ /* spacing */
4
+ .semi-json-viewer-background {
5
+ background-color: var(--semi-color-default);
6
+ }
7
+ .semi-json-viewer-string-key {
8
+ color: rgba(var(--semi-red-5), 1);
9
+ }
10
+ .semi-json-viewer-string-value {
11
+ color: rgba(var(--semi-blue-5), 1);
12
+ }
13
+ .semi-json-viewer-keyword {
14
+ color: rgba(var(--semi-blue-5), 1);
15
+ }
16
+ .semi-json-viewer-number {
17
+ color: rgba(var(--semi-green-5), 1);
18
+ }
19
+ .semi-json-viewer-delimiter-comma {
20
+ color: rgba(var(--semi-blue-6), 1);
21
+ }
22
+ .semi-json-viewer-delimiter-bracket-0 {
23
+ color: rgba(var(--semi-blue-7), 1);
24
+ }
25
+ .semi-json-viewer-delimiter-bracket-1 {
26
+ color: rgba(var(--semi-green-7), 1);
27
+ }
28
+ .semi-json-viewer-delimiter-bracket-2 {
29
+ color: rgba(var(--semi-orange-7), 1);
30
+ }
31
+ .semi-json-viewer-delimiter-array-0 {
32
+ color: rgba(var(--semi-blue-7), 1);
33
+ }
34
+ .semi-json-viewer-delimiter-array-1 {
35
+ color: rgba(var(--semi-green-7), 1);
36
+ }
37
+ .semi-json-viewer-delimiter-array-2 {
38
+ color: rgba(var(--semi-orange-7), 1);
39
+ }
40
+ .semi-json-viewer-search-result {
41
+ background-color: rgba(var(--semi-green-2), 1);
42
+ }
43
+ .semi-json-viewer-current-search-result {
44
+ background-color: rgba(var(--semi-yellow-4), 1) !important;
45
+ }
46
+ .semi-json-viewer-folding-icon {
47
+ opacity: 0.7;
48
+ transition: opacity 0.8s;
49
+ color: rgba(var(--semi-blue-7), 1);
50
+ }
51
+ .semi-json-viewer-view-line {
52
+ font-family: Menlo, Firecode, Monaco, "Courier New", monospace;
53
+ font-weight: normal;
54
+ font-size: 12px;
55
+ font-feature-settings: "liga" 0, "calt" 0;
56
+ font-variation-settings: normal;
57
+ letter-spacing: 0px;
58
+ color: #237893;
59
+ word-wrap: break-word;
60
+ white-space: pre-wrap;
61
+ }
62
+ .semi-json-viewer-line-number {
63
+ font-family: Menlo, Firecode, Monaco, "Courier New", monospace;
64
+ font-weight: normal;
65
+ font-size: 12px;
66
+ font-feature-settings: "liga" 0, "calt" 0;
67
+ font-variation-settings: normal;
68
+ letter-spacing: 0px;
69
+ color: rgba(var(--semi-grey-5), 1);
70
+ text-align: center;
71
+ width: 50px;
72
+ }
73
+ .semi-json-viewer-content-container {
74
+ scrollbar-width: none; /* 隐藏滚动条(Firefox) */
75
+ -ms-overflow-style: none; /* 隐藏滚动条(IE 和 Edge) */
76
+ }
77
+ .semi-json-viewer-content-container::-webkit-scrollbar {
78
+ display: none; /* 隐藏滚动条(Webkit 浏览器) */
79
+ }
80
+ .semi-json-viewer-search-bar-container {
81
+ width: 458px;
82
+ box-sizing: border-box;
83
+ border: 1px solid var(--semi-color-border);
84
+ border-radius: var(--semi-border-radius-small);
85
+ display: flex;
86
+ flex-direction: column;
87
+ padding: 8px;
88
+ gap: 8px;
89
+ background-color: var(--semi-color-bg-0);
90
+ }
91
+ .semi-json-viewer-search-bar {
92
+ display: flex;
93
+ align-items: flex-start;
94
+ gap: 8px;
95
+ }
96
+ .semi-json-viewer-search-bar-input {
97
+ width: 200px;
98
+ flex-shrink: 0;
99
+ }
100
+ .semi-json-viewer-search-bar .semi-button-group {
101
+ flex-wrap: nowrap;
102
+ }
103
+ .semi-json-viewer-search-bar .semi-button:nth-of-type(1) {
104
+ width: 40px;
105
+ }
106
+ .semi-json-viewer-search-bar .semi-button:nth-of-type(2) {
107
+ width: 40px;
108
+ }
109
+ .semi-json-viewer-replace-bar {
110
+ display: flex;
111
+ align-items: flex-start;
112
+ gap: 8px;
113
+ }
114
+ .semi-json-viewer-replace-bar-input {
115
+ width: 261px;
116
+ }
117
+ .semi-json-viewer-replace-bar .semi-button:nth-of-type(1) {
118
+ width: 52px;
119
+ }
120
+ .semi-json-viewer-replace-bar .semi-button:nth-of-type(2) {
121
+ width: 80px;
122
+ }
123
+ .semi-json-viewer-search-options {
124
+ display: flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ list-style: none;
128
+ padding-inline-start: 0;
129
+ margin-block-start: 0;
130
+ margin-block-end: 0;
131
+ gap: 8px;
132
+ }
133
+ .semi-json-viewer-search-options-item {
134
+ min-width: 32px;
135
+ height: 32px;
136
+ display: flex;
137
+ align-items: center;
138
+ justify-content: center;
139
+ cursor: pointer;
140
+ border-radius: var(--semi-border-radius-small);
141
+ color: var(--semi-color-text-2);
142
+ }
143
+ .semi-json-viewer-search-options-item:hover {
144
+ background-color: var(--semi-color-default);
145
+ }
146
+ .semi-json-viewer-search-options-item-active {
147
+ color: var(--semi-color-primary);
148
+ background-color: var(--semi-color-primary-light-default);
149
+ }
150
+ .semi-json-viewer-complete-suggestions-container {
151
+ border-radius: var(--semi-border-radius-medium);
152
+ background-color: var(--semi-color-bg-3);
153
+ box-shadow: var(--semi-shadow-elevated);
154
+ z-index: 1000;
155
+ min-width: 200px;
156
+ max-width: 400px;
157
+ list-style: none;
158
+ padding: 4px 0;
159
+ }
160
+ .semi-json-viewer-complete-container {
161
+ position: absolute;
162
+ z-index: 1000;
163
+ }
164
+ .semi-json-viewer-complete-suggestions-item {
165
+ padding: 8px 16px;
166
+ color: var(--semi-color-text-0);
167
+ cursor: pointer;
168
+ }
@@ -0,0 +1,200 @@
1
+ @import './variables.scss';
2
+
3
+ $module: #{$prefix}-json-viewer;
4
+
5
+ .#{$module} {
6
+ &-background {
7
+ background-color: $color-json-viewer-background;
8
+ }
9
+
10
+ &-string-key {
11
+ color: $color-json-viewer-key;
12
+ }
13
+
14
+ &-string-value {
15
+ color: $color-json-viewer-value;
16
+ }
17
+
18
+ &-keyword {
19
+ color: $color-json-viewer-keyword;
20
+ }
21
+
22
+ &-number {
23
+ color: $color-json-viewer-number;
24
+ }
25
+
26
+ &-delimiter-comma {
27
+ color: $color-json-viewer-delimiter-comma;
28
+ }
29
+
30
+ &-delimiter-bracket-0 {
31
+ color: rgba(var(--semi-blue-7), 1);
32
+ }
33
+ &-delimiter-bracket-1 {
34
+ color: rgba(var(--semi-green-7), 1);
35
+ }
36
+ &-delimiter-bracket-2 {
37
+ color: rgba(var(--semi-orange-7), 1);
38
+ }
39
+ &-delimiter-array-0 {
40
+ color: rgba(var(--semi-blue-7), 1);
41
+ }
42
+ &-delimiter-array-1 {
43
+ color: rgba(var(--semi-green-7), 1);
44
+ }
45
+ &-delimiter-array-2 {
46
+ color: rgba(var(--semi-orange-7), 1);
47
+ }
48
+
49
+ &-search-result {
50
+ background-color: $color-json-viewer-search-result-background;
51
+ }
52
+
53
+ &-current-search-result {
54
+ background-color: $color-json-viewer-current-search-result-background !important;
55
+ }
56
+
57
+ &-folding-icon {
58
+ opacity: 0.7;
59
+ transition: opacity 0.8s;
60
+ color: $color-json-viewer-folding-icon;
61
+ }
62
+
63
+ &-view-line {
64
+ font-family: Menlo, Firecode, Monaco, 'Courier New', monospace;
65
+ font-weight: normal;
66
+ font-size: 12px;
67
+ font-feature-settings: 'liga' 0, 'calt' 0;
68
+ font-variation-settings: normal;
69
+ letter-spacing: 0px;
70
+ color: #237893;
71
+ word-wrap: break-word;
72
+ white-space: pre-wrap;
73
+ }
74
+
75
+ &-line-number {
76
+ font-family: Menlo, Firecode, Monaco, 'Courier New', monospace;
77
+ font-weight: normal;
78
+ font-size: 12px;
79
+ font-feature-settings: 'liga' 0, 'calt' 0;
80
+ font-variation-settings: normal;
81
+ letter-spacing: 0px;
82
+ color: $color-json-viewer-line-number;
83
+ text-align: center;
84
+ width: 50px;
85
+ }
86
+
87
+ &-content-container {
88
+ scrollbar-width: none; /* 隐藏滚动条(Firefox) */
89
+ -ms-overflow-style: none; /* 隐藏滚动条(IE 和 Edge) */
90
+ }
91
+
92
+ &-content-container::-webkit-scrollbar {
93
+ display: none; /* 隐藏滚动条(Webkit 浏览器) */
94
+ }
95
+
96
+ &-search-bar-container {
97
+ width: 458px;
98
+ box-sizing: border-box;
99
+ border: 1px solid var(--semi-color-border);
100
+ border-radius: var(--semi-border-radius-small);
101
+ display: flex;
102
+ flex-direction: column;
103
+ padding: 8px;
104
+ gap: 8px;
105
+ background-color: var(--semi-color-bg-0);
106
+ }
107
+
108
+ &-search-bar {
109
+ display: flex;
110
+ align-items: flex-start;
111
+ gap: 8px;
112
+ &-input {
113
+ width: 200px;
114
+ flex-shrink: 0;
115
+ }
116
+ .#{$prefix}-button-group {
117
+ flex-wrap: nowrap;
118
+ }
119
+ // next icon btn
120
+ .#{$prefix}-button:nth-of-type(1) {
121
+ width: 40px;
122
+ }
123
+ // prev icon btn
124
+ .#{$prefix}-button:nth-of-type(2) {
125
+ width: 40px;
126
+ }
127
+ }
128
+
129
+ &-replace-bar {
130
+ display: flex;
131
+ align-items: flex-start;
132
+ gap: 8px;
133
+ &-input {
134
+ width: 261px;
135
+ }
136
+ // replace btn
137
+ .#{$prefix}-button:nth-of-type(1) {
138
+ width: 52px;
139
+ }
140
+ // all replace btn
141
+ .#{$prefix}-button:nth-of-type(2) {
142
+ width: 80px;
143
+ }
144
+ }
145
+
146
+ &-search-options {
147
+ display: flex;
148
+ align-items: center;
149
+ justify-content: center;
150
+ list-style: none;
151
+ padding-inline-start: 0;
152
+ margin-block-start: 0;
153
+ margin-block-end: 0;
154
+ gap: 8px;
155
+ }
156
+
157
+ &-search-options-item {
158
+ min-width: 32px;
159
+ height: 32px;
160
+ display: flex;
161
+ align-items: center;
162
+ justify-content: center;
163
+ cursor: pointer;
164
+ border-radius: var(--semi-border-radius-small);
165
+ color: var(--semi-color-text-2);
166
+ }
167
+
168
+ &-search-options-item:hover {
169
+ background-color: var(--semi-color-default);
170
+ }
171
+
172
+ &-search-options-item-active {
173
+ color: var(--semi-color-primary);
174
+ background-color: var(--semi-color-primary-light-default);
175
+ }
176
+
177
+ &-complete-suggestions-container {
178
+ border-radius: var(--semi-border-radius-medium);
179
+ background-color: var(--semi-color-bg-3);
180
+ box-shadow: var(--semi-shadow-elevated);
181
+ z-index: 1000;
182
+ min-width: 200px;
183
+ max-width: 400px;
184
+ list-style: none;
185
+ padding: 4px 0;
186
+ }
187
+
188
+ &-complete-container {
189
+ position: absolute;
190
+ z-index: 1000;
191
+ }
192
+
193
+ &-complete-suggestions-item {
194
+ padding: 8px 16px;
195
+ color: var(--semi-color-text-0);
196
+ cursor: pointer;
197
+ }
198
+
199
+
200
+ }
@@ -0,0 +1,15 @@
1
+ $color-json-viewer-background: var(--semi-color-default); // JSON背景颜色
2
+ $color-json-viewer-key: rgba(var(--semi-red-5), 1); // JSON key 颜色
3
+ $color-json-viewer-value: rgba(var(--semi-blue-5), 1);
4
+ $color-json-viewer-number: rgba(var(--semi-green-5), 1); // JSON number 颜色
5
+ $color-json-viewer-keyword: rgba(var(--semi-blue-5), 1); // JSON keyword 颜色
6
+ $color-json-viewer-delimiter-comma: rgba(var(--semi-blue-6), 1); // JSON delimiter comma 颜色
7
+
8
+
9
+ $color-json-viewer-search-result-background: rgba(var(--semi-green-2), 1); // JSON search result background 颜色
10
+ $color-json-viewer-current-search-result-background: rgba(var(--semi-yellow-4), 1); // JSON current search result background 颜色
11
+
12
+ $color-json-viewer-folding-icon: rgba(var(--semi-blue-7), 1); // JSON folding icon 颜色
13
+
14
+
15
+ $color-json-viewer-line-number: rgba(var(--semi-grey-5), 1); // JSON line number 颜色
@@ -8,7 +8,7 @@ export interface LottieAdapter<P = Record<string, any>, S = Record<string, any>>
8
8
  export interface LottieBaseProps {
9
9
  width?: string;
10
10
  height?: string;
11
- params: ArgsType<typeof lottie.loadAnimation>[0];
11
+ params: Partial<ArgsType<typeof lottie.loadAnimation>[0]>;
12
12
  getAnimationInstance?: (instance: AnimationItem | null) => void;
13
13
  getLottie?: (lottiePKG: typeof lottie) => void;
14
14
  }
@@ -1,2 +1,6 @@
1
- export { ResizableHandlerAdapter, ResizableHandlerFoundation, ResizableFoundation, ResizableAdapter } from './single';
2
- export { ResizeGroupAdapter, ResizeItemAdapter, ResizeHandlerAdapter, ResizeGroupFoundation, ResizeItemFoundation, ResizeHandlerFoundation } from './group';
1
+ import { ResizableHandlerFoundation, ResizableFoundation } from './single';
2
+ import { ResizeGroupFoundation, ResizeItemFoundation, ResizeHandlerFoundation } from './group';
3
+ import type { ResizableHandlerAdapter, ResizableAdapter } from './single';
4
+ import type { ResizeGroupAdapter, ResizeItemAdapter, ResizeHandlerAdapter } from './group';
5
+ export type { ResizableHandlerAdapter, ResizableAdapter, ResizeGroupAdapter, ResizeItemAdapter, ResizeHandlerAdapter, };
6
+ export { ResizableHandlerFoundation, ResizableFoundation, ResizeGroupFoundation, ResizeItemFoundation, ResizeHandlerFoundation };