@quadrats/common 1.1.1 → 1.1.5

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.
@@ -1,4 +1,4 @@
1
- import { Element, Node, Transforms, Editor, createParagraphElement } from '@quadrats/core';
1
+ import { Element, Node, Transforms, Editor, Path, createParagraphElement } from '@quadrats/core';
2
2
  import { CARD_TYPES, CARD_PLACEHOLDER_TYPE } from './constants.js';
3
3
 
4
4
  function createCard(options) {
@@ -43,7 +43,25 @@ function createCard(options) {
43
43
  return Object.assign(Object.assign({ type: types.card, confirmModal }, cardValues), { children: [cardImageElement, cardContentsElement] });
44
44
  };
45
45
  const insertCard = ({ editor, cardValues }) => {
46
- Transforms.insertNodes(editor, [createCardElement(cardValues), createParagraphElement()]);
46
+ const [currentBlockEntry] = Editor.nodes(editor, {
47
+ match: (n) => Element.isElement(n) && Editor.isBlock(editor, n),
48
+ });
49
+ if (currentBlockEntry) {
50
+ const [, currentPath] = currentBlockEntry;
51
+ // 在目前 block 後面插入
52
+ const insertPath = Path.next(currentPath);
53
+ Editor.withoutNormalizing(editor, () => {
54
+ Transforms.insertNodes(editor, [createCardElement(cardValues), createParagraphElement()], {
55
+ at: insertPath,
56
+ });
57
+ });
58
+ }
59
+ else {
60
+ // 沒找到 block(例如空編輯器)
61
+ Editor.withoutNormalizing(editor, () => {
62
+ Transforms.insertNodes(editor, [createCardElement(cardValues), createParagraphElement()]);
63
+ });
64
+ }
47
65
  };
48
66
  const updateCardElement = ({ editor, cardValues, path }) => {
49
67
  var _a;
package/card/index.cjs.js CHANGED
@@ -54,7 +54,25 @@ function createCard(options) {
54
54
  return Object.assign(Object.assign({ type: types.card, confirmModal }, cardValues), { children: [cardImageElement, cardContentsElement] });
55
55
  };
56
56
  const insertCard = ({ editor, cardValues }) => {
57
- core.Transforms.insertNodes(editor, [createCardElement(cardValues), core.createParagraphElement()]);
57
+ const [currentBlockEntry] = core.Editor.nodes(editor, {
58
+ match: (n) => core.Element.isElement(n) && core.Editor.isBlock(editor, n),
59
+ });
60
+ if (currentBlockEntry) {
61
+ const [, currentPath] = currentBlockEntry;
62
+ // 在目前 block 後面插入
63
+ const insertPath = core.Path.next(currentPath);
64
+ core.Editor.withoutNormalizing(editor, () => {
65
+ core.Transforms.insertNodes(editor, [createCardElement(cardValues), core.createParagraphElement()], {
66
+ at: insertPath,
67
+ });
68
+ });
69
+ }
70
+ else {
71
+ // 沒找到 block(例如空編輯器)
72
+ core.Editor.withoutNormalizing(editor, () => {
73
+ core.Transforms.insertNodes(editor, [createCardElement(cardValues), core.createParagraphElement()]);
74
+ });
75
+ }
58
76
  };
59
77
  const updateCardElement = ({ editor, cardValues, path }) => {
60
78
  var _a;
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from './_virtual/_tslib.js';
2
- import { Element, Node, Transforms, Editor, createParagraphElement } from '@quadrats/core';
2
+ import { Element, Node, Transforms, Editor, Path, createParagraphElement } from '@quadrats/core';
3
3
  import { CAROUSEL_TYPES, CAROUSEL_PLACEHOLDER_TYPE } from './constants.js';
4
4
  import { getFilesFromInput } from './getFilesFromInput.js';
5
5
 
@@ -48,7 +48,25 @@ function createCarousel(options) {
48
48
  };
49
49
  };
50
50
  const insertCarousel = ({ editor, items }) => {
51
- Transforms.insertNodes(editor, [createCarouselElement({ items }), createParagraphElement()]);
51
+ const [currentBlockEntry] = Editor.nodes(editor, {
52
+ match: (n) => Element.isElement(n) && Editor.isBlock(editor, n),
53
+ });
54
+ if (currentBlockEntry) {
55
+ const [, currentPath] = currentBlockEntry;
56
+ // 在目前 block 後面插入
57
+ const insertPath = Path.next(currentPath);
58
+ Editor.withoutNormalizing(editor, () => {
59
+ Transforms.insertNodes(editor, [createCarouselElement({ items }), createParagraphElement()], {
60
+ at: insertPath,
61
+ });
62
+ });
63
+ }
64
+ else {
65
+ // 沒找到 block(例如空編輯器)
66
+ Editor.withoutNormalizing(editor, () => {
67
+ Transforms.insertNodes(editor, [createCarouselElement({ items }), createParagraphElement()]);
68
+ });
69
+ }
52
70
  };
53
71
  const updateCarouselElement = ({ editor, items, path }) => {
54
72
  Transforms.setNodes(editor, { items }, { at: path });
@@ -118,7 +118,25 @@ function createCarousel(options) {
118
118
  };
119
119
  };
120
120
  const insertCarousel = ({ editor, items }) => {
121
- core.Transforms.insertNodes(editor, [createCarouselElement({ items }), core.createParagraphElement()]);
121
+ const [currentBlockEntry] = core.Editor.nodes(editor, {
122
+ match: (n) => core.Element.isElement(n) && core.Editor.isBlock(editor, n),
123
+ });
124
+ if (currentBlockEntry) {
125
+ const [, currentPath] = currentBlockEntry;
126
+ // 在目前 block 後面插入
127
+ const insertPath = core.Path.next(currentPath);
128
+ core.Editor.withoutNormalizing(editor, () => {
129
+ core.Transforms.insertNodes(editor, [createCarouselElement({ items }), core.createParagraphElement()], {
130
+ at: insertPath,
131
+ });
132
+ });
133
+ }
134
+ else {
135
+ // 沒找到 block(例如空編輯器)
136
+ core.Editor.withoutNormalizing(editor, () => {
137
+ core.Transforms.insertNodes(editor, [createCarouselElement({ items }), core.createParagraphElement()]);
138
+ });
139
+ }
122
140
  };
123
141
  const updateCarouselElement = ({ editor, items, path }) => {
124
142
  core.Transforms.setNodes(editor, { items }, { at: path });
@@ -50,7 +50,7 @@ export interface Carousel<T extends Editor = Editor> extends Withable {
50
50
  maxLength: number;
51
51
  limitSize: number;
52
52
  confirmModal: boolean;
53
- selectFiles(editor: T): Promise<File[] | undefined>;
53
+ selectFiles(): Promise<File[] | undefined>;
54
54
  getBody: FileUploaderGetBody;
55
55
  getHeaders?: FileUploaderGetHeaders;
56
56
  getUrl: FileUploaderGetUrl;
@@ -1,4 +1,4 @@
1
- import { PARAGRAPH_TYPE, Element, Transforms, normalizeVoidElementChildren, Editor, isAboveBlockEmpty } from '@quadrats/core';
1
+ import { PARAGRAPH_TYPE, Element, Transforms, normalizeVoidElementChildren, Editor, Path, isAboveBlockEmpty } from '@quadrats/core';
2
2
  import { EMBED_TYPE, EMBED_PLACEHOLDER_TYPE } from './constants.js';
3
3
  import { serializeEmbedCode } from './serializeEmbedCode.js';
4
4
 
@@ -9,17 +9,42 @@ function createEmbed(options) {
9
9
  const result = serializeEmbedCode(embedCode, strategies, provider);
10
10
  if (result) {
11
11
  const [provider, data] = result;
12
- const embedElement = Object.assign(Object.assign({}, data), { type, provider, children: [{ text: '' }] });
12
+ const embedElement = Object.assign(Object.assign({}, data), { type,
13
+ provider, children: [{ text: '' }] });
14
+ const [currentBlockEntry] = Editor.nodes(editor, {
15
+ match: (n) => Element.isElement(n) && Editor.isBlock(editor, n),
16
+ });
17
+ if (currentBlockEntry) {
18
+ const [, currentPath] = currentBlockEntry;
19
+ // 在目前 block 後面插入
20
+ const insertPath = Path.next(currentPath);
21
+ Editor.withoutNormalizing(editor, () => {
22
+ Transforms.insertNodes(editor, [
23
+ embedElement,
24
+ typeof defaultNode === 'string'
25
+ ? { type: defaultNode, children: [{ text: '' }] }
26
+ : defaultNode,
27
+ ], {
28
+ at: insertPath,
29
+ });
30
+ });
31
+ }
32
+ else {
33
+ // 沒找到 block(例如空編輯器)
34
+ Editor.withoutNormalizing(editor, () => {
35
+ Transforms.insertNodes(editor, [
36
+ embedElement,
37
+ typeof defaultNode === 'string'
38
+ ? { type: defaultNode, children: [{ text: '' }] }
39
+ : defaultNode,
40
+ ]);
41
+ });
42
+ }
13
43
  if (isAboveBlockEmpty(editor)) {
14
44
  Transforms.removeNodes(editor, {
15
45
  at: (_a = editor.selection) === null || _a === void 0 ? void 0 : _a.anchor,
16
46
  });
17
47
  }
18
- Transforms.insertNodes(editor, [
19
- embedElement,
20
- typeof defaultNode === 'string'
21
- ? { type: defaultNode, children: [{ text: '' }] } : defaultNode,
22
- ]);
23
48
  Transforms.move(editor);
24
49
  }
25
50
  };
@@ -34,9 +59,17 @@ function createEmbed(options) {
34
59
  });
35
60
  };
36
61
  const removeEmbedPlaceholder = (editor) => {
37
- Transforms.removeNodes(editor, {
38
- match: node => Element.isElement(node) && node.type === EMBED_PLACEHOLDER_TYPE,
39
- });
62
+ const matches = Array.from(Editor.nodes(editor, {
63
+ at: [],
64
+ match: (node) => Element.isElement(node) && node.type === EMBED_PLACEHOLDER_TYPE,
65
+ }));
66
+ if (matches.length) {
67
+ matches
68
+ .map(([, path]) => path)
69
+ .forEach((path) => {
70
+ Transforms.removeNodes(editor, { at: path });
71
+ });
72
+ }
40
73
  };
41
74
  return {
42
75
  type,
@@ -46,12 +79,13 @@ function createEmbed(options) {
46
79
  removeEmbedPlaceholder,
47
80
  with(editor) {
48
81
  const { isVoid, normalizeNode } = editor;
49
- editor.isVoid = element => element.type === type || isVoid(element);
82
+ editor.isVoid = (element) => element.type === type || isVoid(element);
50
83
  editor.normalizeNode = (entry) => {
51
84
  const [node, path] = entry;
52
85
  if (Element.isElement(node) && node.type === type) {
53
86
  const strategy = node.provider
54
- ? strategies[node.provider] : undefined;
87
+ ? strategies[node.provider]
88
+ : undefined;
55
89
  if (!strategy || !strategy.isElementDataValid(node)) {
56
90
  Transforms.removeNodes(editor, { at: path });
57
91
  return;
@@ -28,17 +28,42 @@ function createEmbed(options) {
28
28
  const result = serializeEmbedCode(embedCode, strategies, provider);
29
29
  if (result) {
30
30
  const [provider, data] = result;
31
- const embedElement = Object.assign(Object.assign({}, data), { type, provider, children: [{ text: '' }] });
31
+ const embedElement = Object.assign(Object.assign({}, data), { type,
32
+ provider, children: [{ text: '' }] });
33
+ const [currentBlockEntry] = core.Editor.nodes(editor, {
34
+ match: (n) => core.Element.isElement(n) && core.Editor.isBlock(editor, n),
35
+ });
36
+ if (currentBlockEntry) {
37
+ const [, currentPath] = currentBlockEntry;
38
+ // 在目前 block 後面插入
39
+ const insertPath = core.Path.next(currentPath);
40
+ core.Editor.withoutNormalizing(editor, () => {
41
+ core.Transforms.insertNodes(editor, [
42
+ embedElement,
43
+ typeof defaultNode === 'string'
44
+ ? { type: defaultNode, children: [{ text: '' }] }
45
+ : defaultNode,
46
+ ], {
47
+ at: insertPath,
48
+ });
49
+ });
50
+ }
51
+ else {
52
+ // 沒找到 block(例如空編輯器)
53
+ core.Editor.withoutNormalizing(editor, () => {
54
+ core.Transforms.insertNodes(editor, [
55
+ embedElement,
56
+ typeof defaultNode === 'string'
57
+ ? { type: defaultNode, children: [{ text: '' }] }
58
+ : defaultNode,
59
+ ]);
60
+ });
61
+ }
32
62
  if (core.isAboveBlockEmpty(editor)) {
33
63
  core.Transforms.removeNodes(editor, {
34
64
  at: (_a = editor.selection) === null || _a === void 0 ? void 0 : _a.anchor,
35
65
  });
36
66
  }
37
- core.Transforms.insertNodes(editor, [
38
- embedElement,
39
- typeof defaultNode === 'string'
40
- ? { type: defaultNode, children: [{ text: '' }] } : defaultNode,
41
- ]);
42
67
  core.Transforms.move(editor);
43
68
  }
44
69
  };
@@ -53,9 +78,17 @@ function createEmbed(options) {
53
78
  });
54
79
  };
55
80
  const removeEmbedPlaceholder = (editor) => {
56
- core.Transforms.removeNodes(editor, {
57
- match: node => core.Element.isElement(node) && node.type === EMBED_PLACEHOLDER_TYPE,
58
- });
81
+ const matches = Array.from(core.Editor.nodes(editor, {
82
+ at: [],
83
+ match: (node) => core.Element.isElement(node) && node.type === EMBED_PLACEHOLDER_TYPE,
84
+ }));
85
+ if (matches.length) {
86
+ matches
87
+ .map(([, path]) => path)
88
+ .forEach((path) => {
89
+ core.Transforms.removeNodes(editor, { at: path });
90
+ });
91
+ }
59
92
  };
60
93
  return {
61
94
  type,
@@ -65,12 +98,13 @@ function createEmbed(options) {
65
98
  removeEmbedPlaceholder,
66
99
  with(editor) {
67
100
  const { isVoid, normalizeNode } = editor;
68
- editor.isVoid = element => element.type === type || isVoid(element);
101
+ editor.isVoid = (element) => element.type === type || isVoid(element);
69
102
  editor.normalizeNode = (entry) => {
70
103
  const [node, path] = entry;
71
104
  if (core.Element.isElement(node) && node.type === type) {
72
105
  const strategy = node.provider
73
- ? strategies[node.provider] : undefined;
106
+ ? strategies[node.provider]
107
+ : undefined;
74
108
  if (!strategy || !strategy.isElementDataValid(node)) {
75
109
  core.Transforms.removeNodes(editor, { at: path });
76
110
  return;
@@ -1,8 +1,8 @@
1
- import { Editor } from '@quadrats/core';
1
+ import { Editor, NodeEntry, Node } from '@quadrats/core';
2
2
  import { FileUploader, FileUploaderElement } from './typings';
3
3
  export interface CreateFileUploaderOptions {
4
4
  type?: string;
5
5
  }
6
6
  export declare const createFileUploaderElementByType: (type: string) => FileUploader<Editor>['createFileUploaderElement'];
7
- export declare function insertFileUploaderElement(editor: Editor, fileUploaderElement: FileUploaderElement | undefined): void;
7
+ export declare function insertFileUploaderElement(editor: Editor, fileUploaderElement: FileUploaderElement | undefined, currentBlockEntry?: NodeEntry<Node> | undefined): void;
8
8
  export declare function createFileUploader(options?: CreateFileUploaderOptions): FileUploader<Editor>;
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from './_virtual/_tslib.js';
2
2
  import { readFileAsDataURL } from '@quadrats/utils';
3
- import { Editor, isAboveBlockEmpty, Transforms, createParagraphElement, Element, HistoryEditor } from '@quadrats/core';
3
+ import { Editor, Transforms, createParagraphElement, isAboveBlockEmpty, Element, HistoryEditor } from '@quadrats/core';
4
4
  import { FILE_UPLOADER_TYPE, FILE_UPLOADER_PLACEHOLDER_TYPE } from './constants.js';
5
5
  import { getFilesFromInput } from './getFilesFromInput.js';
6
6
  import { TABLE_CELL_TYPE } from '@quadrats/common/table';
@@ -54,8 +54,7 @@ const createFileUploaderElementByType = (type) => (editor, file, options) => __a
54
54
  }
55
55
  return fileUploaderElement;
56
56
  });
57
- function insertFileUploaderElement(editor, fileUploaderElement) {
58
- var _a, _b;
57
+ function insertFileUploaderElement(editor, fileUploaderElement, currentBlockEntry) {
59
58
  if (fileUploaderElement) {
60
59
  // 驗證當前 selection 是否仍然有效
61
60
  if (!editor.selection) {
@@ -73,25 +72,47 @@ function insertFileUploaderElement(editor, fileUploaderElement) {
73
72
  console.warn('Cannot insert file uploader element: invalid selection path', error);
74
73
  return;
75
74
  }
75
+ if (currentBlockEntry) {
76
+ const [, currentPath] = currentBlockEntry;
77
+ Editor.withoutNormalizing(editor, () => {
78
+ Transforms.insertNodes(editor, [fileUploaderElement, createParagraphElement()], {
79
+ at: currentPath,
80
+ });
81
+ });
82
+ }
83
+ else {
84
+ // 沒找到 block(例如空編輯器)
85
+ Editor.withoutNormalizing(editor, () => {
86
+ Transforms.insertNodes(editor, [fileUploaderElement, createParagraphElement()]);
87
+ });
88
+ }
76
89
  // Clear empty node
77
90
  if (isAboveBlockEmpty(editor)) {
78
91
  Transforms.removeNodes(editor, {
79
92
  at: editor.selection.anchor,
80
93
  });
81
94
  }
82
- Transforms.insertNodes(editor, [fileUploaderElement, createParagraphElement()], {
83
- at: ((_a = editor.selection) === null || _a === void 0 ? void 0 : _a.anchor.path.length) ? [((_b = editor.selection) === null || _b === void 0 ? void 0 : _b.anchor.path[0]) + 1] : undefined,
84
- });
85
- Transforms.move(editor);
95
+ if (currentBlockEntry) {
96
+ const [, currentPath] = currentBlockEntry;
97
+ Transforms.select(editor, Editor.start(editor, currentPath));
98
+ }
86
99
  }
87
100
  }
88
101
  function createFileUploader(options = {}) {
89
102
  const { type = FILE_UPLOADER_TYPE } = options;
90
103
  const createFileUploaderElement = createFileUploaderElementByType(type);
91
104
  const removeUploaderPlaceholder = (editor) => {
92
- Transforms.removeNodes(editor, {
105
+ const matches = Array.from(Editor.nodes(editor, {
106
+ at: [],
93
107
  match: (node) => Element.isElement(node) && node.type === FILE_UPLOADER_PLACEHOLDER_TYPE,
94
- });
108
+ }));
109
+ if (matches.length) {
110
+ matches
111
+ .map(([, path]) => path)
112
+ .forEach((path) => {
113
+ Transforms.removeNodes(editor, { at: path });
114
+ });
115
+ }
95
116
  };
96
117
  const upload = (editor, options) => __awaiter(this, void 0, void 0, function* () {
97
118
  // 檢查是否在不允許的元件之中,如果是則不執行上傳
@@ -109,6 +130,9 @@ function createFileUploader(options = {}) {
109
130
  }
110
131
  }
111
132
  const { accept, multiple } = options;
133
+ const [currentBlockEntry] = Editor.nodes(editor, {
134
+ match: (n) => Element.isElement(n) && Editor.isBlock(editor, n),
135
+ });
112
136
  const files = yield getFilesFromInput({ accept, multiple });
113
137
  if (!files) {
114
138
  removeUploaderPlaceholder(editor);
@@ -118,7 +142,7 @@ function createFileUploader(options = {}) {
118
142
  files.reduce((prev, file) => __awaiter(this, void 0, void 0, function* () {
119
143
  yield prev;
120
144
  return createFileUploaderElement(editor, file, options).then((fileUploaderElement) => {
121
- insertFileUploaderElement(editor, fileUploaderElement);
145
+ insertFileUploaderElement(editor, fileUploaderElement, currentBlockEntry);
122
146
  });
123
147
  }), Promise.resolve());
124
148
  });
@@ -117,8 +117,7 @@ const createFileUploaderElementByType = (type) => (editor, file, options) => __a
117
117
  }
118
118
  return fileUploaderElement;
119
119
  });
120
- function insertFileUploaderElement(editor, fileUploaderElement) {
121
- var _a, _b;
120
+ function insertFileUploaderElement(editor, fileUploaderElement, currentBlockEntry) {
122
121
  if (fileUploaderElement) {
123
122
  // 驗證當前 selection 是否仍然有效
124
123
  if (!editor.selection) {
@@ -136,25 +135,47 @@ function insertFileUploaderElement(editor, fileUploaderElement) {
136
135
  console.warn('Cannot insert file uploader element: invalid selection path', error);
137
136
  return;
138
137
  }
138
+ if (currentBlockEntry) {
139
+ const [, currentPath] = currentBlockEntry;
140
+ core.Editor.withoutNormalizing(editor, () => {
141
+ core.Transforms.insertNodes(editor, [fileUploaderElement, core.createParagraphElement()], {
142
+ at: currentPath,
143
+ });
144
+ });
145
+ }
146
+ else {
147
+ // 沒找到 block(例如空編輯器)
148
+ core.Editor.withoutNormalizing(editor, () => {
149
+ core.Transforms.insertNodes(editor, [fileUploaderElement, core.createParagraphElement()]);
150
+ });
151
+ }
139
152
  // Clear empty node
140
153
  if (core.isAboveBlockEmpty(editor)) {
141
154
  core.Transforms.removeNodes(editor, {
142
155
  at: editor.selection.anchor,
143
156
  });
144
157
  }
145
- core.Transforms.insertNodes(editor, [fileUploaderElement, core.createParagraphElement()], {
146
- at: ((_a = editor.selection) === null || _a === void 0 ? void 0 : _a.anchor.path.length) ? [((_b = editor.selection) === null || _b === void 0 ? void 0 : _b.anchor.path[0]) + 1] : undefined,
147
- });
148
- core.Transforms.move(editor);
158
+ if (currentBlockEntry) {
159
+ const [, currentPath] = currentBlockEntry;
160
+ core.Transforms.select(editor, core.Editor.start(editor, currentPath));
161
+ }
149
162
  }
150
163
  }
151
164
  function createFileUploader(options = {}) {
152
165
  const { type = FILE_UPLOADER_TYPE } = options;
153
166
  const createFileUploaderElement = createFileUploaderElementByType(type);
154
167
  const removeUploaderPlaceholder = (editor) => {
155
- core.Transforms.removeNodes(editor, {
168
+ const matches = Array.from(core.Editor.nodes(editor, {
169
+ at: [],
156
170
  match: (node) => core.Element.isElement(node) && node.type === FILE_UPLOADER_PLACEHOLDER_TYPE,
157
- });
171
+ }));
172
+ if (matches.length) {
173
+ matches
174
+ .map(([, path]) => path)
175
+ .forEach((path) => {
176
+ core.Transforms.removeNodes(editor, { at: path });
177
+ });
178
+ }
158
179
  };
159
180
  const upload = (editor, options) => __awaiter(this, void 0, void 0, function* () {
160
181
  // 檢查是否在不允許的元件之中,如果是則不執行上傳
@@ -172,6 +193,9 @@ function createFileUploader(options = {}) {
172
193
  }
173
194
  }
174
195
  const { accept, multiple } = options;
196
+ const [currentBlockEntry] = core.Editor.nodes(editor, {
197
+ match: (n) => core.Element.isElement(n) && core.Editor.isBlock(editor, n),
198
+ });
175
199
  const files = yield getFilesFromInput({ accept, multiple });
176
200
  if (!files) {
177
201
  removeUploaderPlaceholder(editor);
@@ -181,7 +205,7 @@ function createFileUploader(options = {}) {
181
205
  files.reduce((prev, file) => __awaiter(this, void 0, void 0, function* () {
182
206
  yield prev;
183
207
  return createFileUploaderElement(editor, file, options).then((fileUploaderElement) => {
184
- insertFileUploaderElement(editor, fileUploaderElement);
208
+ insertFileUploaderElement(editor, fileUploaderElement, currentBlockEntry);
185
209
  });
186
210
  }), Promise.resolve());
187
211
  });
@@ -22,7 +22,6 @@ function createImage(options = {}) {
22
22
  const createImageElement = (src, hosting) => {
23
23
  const imageElement = {
24
24
  type: types.image,
25
- figureType: types.figure,
26
25
  src,
27
26
  hosting,
28
27
  children: [{ text: '' }],
@@ -74,7 +74,6 @@ function createImage(options = {}) {
74
74
  const createImageElement = (src, hosting) => {
75
75
  const imageElement = {
76
76
  type: types.image,
77
- figureType: types.figure,
78
77
  src,
79
78
  hosting,
80
79
  children: [{ text: '' }],
@@ -10,7 +10,6 @@ export interface ImageFigureElement extends QuadratsElement, WithElementType {
10
10
  export interface ImageElement extends QuadratsElement, WithElementType {
11
11
  children: [Text];
12
12
  src: string;
13
- figureType: string;
14
13
  /**
15
14
  * e.g. The src of image is `8gy9pbaht92y4.jpg` and your static files are hosted by `https://foo.storage`.
16
15
  * Then you can make the hosting of element be `foo`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quadrats/common",
3
- "version": "1.1.1",
3
+ "version": "1.1.5",
4
4
  "description": "",
5
5
  "author": "Rytass",
6
6
  "homepage": "https://github.com/Quadrats/quadrats#readme",
@@ -18,7 +18,7 @@
18
18
  "url": "https://github.com/Quadrats/quadrats/issues"
19
19
  },
20
20
  "dependencies": {
21
- "@quadrats/core": "^1.1.0",
21
+ "@quadrats/core": "^1.1.5",
22
22
  "@quadrats/locales": "^1.0.0",
23
23
  "@quadrats/utils": "^1.0.0"
24
24
  }