@cocreate/text 1.20.29 → 1.22.0

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.
package/src/index.js CHANGED
@@ -1,17 +1,16 @@
1
1
  /*global CustomEvent, navigator*/
2
2
  import observer from '@cocreate/observer';
3
- import crud from '@cocreate/crud-client';
4
3
  import crdt from '@cocreate/crdt';
5
4
  import cursors from '@cocreate/cursors';
6
5
  import uuid from '@cocreate/uuid';
6
+ import { getAttributes, getAttributeNames, checkValue } from '@cocreate/utils';
7
7
  import { updateDom } from './updateDom';
8
8
  import { insertAdjacentElement, removeElement, setInnerText, setAttribute, removeAttribute, setClass, setStyle, replaceInnerText } from './updateText';
9
9
  import { getSelection, processSelection } from '@cocreate/selection';
10
10
  import action from '@cocreate/actions';
11
- import './saveDomText';
12
11
 
13
12
  let eventObj;
14
- let selector = `[collection][document_id][name]`;
13
+ let selector = `[array][object][key]`;
15
14
  let selectors = `input${selector}, textarea${selector}, [contenteditable]${selector}:not([contenteditable='false'])`;
16
15
 
17
16
  function init() {
@@ -27,20 +26,20 @@ function initElements(elements) {
27
26
  }
28
27
 
29
28
  function initElement(element) {
30
- let { collection, document_id, name, isRealtime, isCrdt, isCrud, isSave, isRead } = crud.getAttributes(element);
31
- if (!collection || !document_id || !name)
29
+ let { array, object, key, isRealtime, isCrdt, isCrud, isSave, isRead } = getAttributes(element);
30
+ if (!array || !object || !key)
32
31
  return
33
- if (document_id == 'pending') {
34
- element.pendingDocument = true
32
+ if (object == 'pending') {
33
+ element.pendingObject = true
35
34
  return
36
35
  }
37
- if (['_id', 'organization_id', 'storage', 'database', 'collection'].includes(name))
36
+ if (['_id', 'organization_id', 'storage', 'database', 'array'].includes(key))
38
37
  return
39
38
  if (isCrdt == "false" || isRealtime == "false" || element.type == 'number')
40
39
  return
41
- if (!crud.checkValue(collection) || !crud.checkValue(document_id) || !crud.checkValue(name))
40
+ if (!checkValue(array) || !checkValue(object) || !checkValue(key))
42
41
  return
43
- if (name && name.startsWith("$"))
42
+ if (key && key.startsWith("$"))
44
43
  return
45
44
 
46
45
  if (element.tagName === "INPUT" && ["text", "tel", "url"].includes(element.type) || element.tagName === "TEXTAREA" || element.hasAttribute('contenteditable')) {
@@ -59,9 +58,9 @@ function initElement(element) {
59
58
  element.setAttribute('crdt', 'true');
60
59
  element.crdt = { init: true };
61
60
 
62
- // TODO: newDocument name consideration. its value is used for setting or overwriting existing value
63
- let newDocument = ''
64
- if (element.pendingDocument) {
61
+ // TODO: newObject name consideration. its value is used for setting or overwriting existing value
62
+ let newObject = ''
63
+ if (element.pendingObject) {
65
64
 
66
65
  let value;
67
66
  if (element.hasAttribute('contenteditable'))
@@ -69,18 +68,18 @@ function initElement(element) {
69
68
  else
70
69
  value = element.value;
71
70
  if (value)
72
- newDocument = value
71
+ newObject = value
73
72
 
74
- delete element.pendingDocument
73
+ delete element.pendingObject
75
74
  }
76
75
 
77
- crdt.getText({ collection, document_id, name, crud: isCrud, save: isSave, read: isRead, newDocument }).then(response => {
76
+ crdt.getText({ array, object, key, crud: isCrud, save: isSave, read: isRead, newObject }).then(response => {
78
77
  if (response === undefined)
79
78
  return;
80
79
  if (!response) {
81
- // if (element.pendingDocument) {
80
+ // if (element.pendingObject) {
82
81
  // isRead = 'true'
83
- // delete element.pendingDocument
82
+ // delete element.pendingObject
84
83
  // }
85
84
 
86
85
  let value;
@@ -91,7 +90,7 @@ function initElement(element) {
91
90
  value = element.value;
92
91
  }
93
92
  if (value)
94
- crdt.replaceText({ collection, document_id, name, value, crud: isCrud, save: isSave, read: isRead });
93
+ crdt.replaceText({ array, object, key, value, crud: isCrud, save: isSave, read: isRead });
95
94
  }
96
95
  else {
97
96
  if (element.hasAttribute('contenteditable')) {
@@ -100,9 +99,13 @@ function initElement(element) {
100
99
  else {
101
100
  element.value = '';
102
101
  }
103
- updateElement({ element, collection, document_id, name, value: response, start: 0 })
102
+ updateElement({ element, array, object, key, value: response, start: 0 })
104
103
  }
105
104
  });
105
+
106
+ element.getValue = async () => {
107
+ return await crdt.getText({ array, object, key })
108
+ }
106
109
  }
107
110
  }
108
111
 
@@ -157,11 +160,11 @@ function _mousedown(event) {
157
160
  }
158
161
  }
159
162
  }
160
- let contentEditable = target.closest('[collection][document_id][name]');
163
+ let contentEditable = target.closest('[array][object][key]');
161
164
  if (contentEditable) {
162
165
  target = contentEditable;
163
- const { collection, document_id, name } = crud.getAttributes(target);
164
- if (collection && document_id && name && !target.hasAttribute('contenteditable'))
166
+ const { array, object, key } = getAttributes(target);
167
+ if (array && object && key && !target.hasAttribute('contenteditable'))
165
168
  target.setAttribute('contenteditable', 'true');
166
169
  }
167
170
  // sendPosition(element)
@@ -169,10 +172,10 @@ function _mousedown(event) {
169
172
 
170
173
  function _blur(event) {
171
174
  let element = event.currentTarget;
172
- const { collection, document_id, name } = crud.getAttributes(element);
175
+ const { array, object, key } = getAttributes(element);
173
176
  let start = null;
174
177
  let end = null;
175
- cursors.sendPosition({ collection, document_id, name, start, end });
178
+ cursors.sendPosition({ array, object, key, start, end });
176
179
  }
177
180
 
178
181
  function _cut(event) {
@@ -285,20 +288,20 @@ export function sendPosition(element) {
285
288
  if (range.element) {
286
289
  element = range.element;
287
290
  }
288
- if (element.tagName == 'HTML' && !element.hasAttribute('collection') || !element.hasAttribute('collection')) {
291
+ if (element.tagName == 'HTML' && !element.hasAttribute('array') || !element.hasAttribute('array')) {
289
292
  element = element.ownerDocument.defaultView.frameElement;
290
293
  }
291
294
  }
292
295
  if (!element) return;
293
- const { collection, document_id, name, isCrdt } = crud.getAttributes(element);
294
- if (isCrdt == 'false' || !collection || !document_id || !name) return;
295
- let currentPosition = { collection, document_id, name, start, end };
296
+ const { array, object, key, isCrdt } = getAttributes(element);
297
+ if (isCrdt == 'false' || !array || !object || !key) return;
298
+ let currentPosition = { array, object, key, start, end };
296
299
  if (JSON.stringify(currentPosition) === JSON.stringify(previousPosition))
297
300
  return;
298
301
  previousPosition = currentPosition;
299
302
  element.activeElement = element;
300
303
  window.activeElement = element;
301
- cursors.sendPosition({ collection, document_id, name, start, end });
304
+ cursors.sendPosition({ array, object, key, start, end });
302
305
  }
303
306
 
304
307
  function updateText({ element, value, start, end, range, undoRedo }) {
@@ -306,20 +309,20 @@ function updateText({ element, value, start, end, range, undoRedo }) {
306
309
  if (range.element)
307
310
  element = range.element;
308
311
 
309
- if (element.tagName == 'HTML' && !element.hasAttribute('collection'))
312
+ if (element.tagName == 'HTML' && !element.hasAttribute('array'))
310
313
  element = element.ownerDocument.defaultView.frameElement;
311
314
  }
312
- const { collection, document_id, name, isCrud, isCrdt, isSave } = crud.getAttributes(element);
313
- if (isCrdt == "false" || !collection || !document_id || !name) return;
315
+ const { array, object, key, isCrud, isCrdt, isSave } = getAttributes(element);
316
+ if (isCrdt == "false" || !array || !object || !key) return;
314
317
 
315
318
  if (undoRedo == 'undo')
316
- return crdt.undoText({ collection, document_id, name, isCrud, isCrdt, isSave })
319
+ return crdt.undoText({ array, object, key, isCrud, isCrdt, isSave })
317
320
  if (undoRedo == 'redo')
318
- return crdt.redoText({ collection, document_id, name, isCrud, isCrdt, isSave })
321
+ return crdt.redoText({ array, object, key, isCrud, isCrdt, isSave })
319
322
 
320
323
  let length = end - start;
321
324
  if (element.tagName === "INPUT" || element.tagName === "TEXTAREA") {
322
- crdt.updateText({ collection, document_id, name, value, start, length, crud: isCrud, save: isSave });
325
+ crdt.updateText({ array, object, key, value, start, length, crud: isCrud, save: isSave });
323
326
  } else {
324
327
  let startEl = range.startContainer.parentElement;
325
328
  let endEl = range.endContainer.parentElement;
@@ -328,7 +331,7 @@ function updateText({ element, value, start, end, range, undoRedo }) {
328
331
  // // value = target.innerHTML;
329
332
  // // replaceInnerText(domTextEditor, target, value)
330
333
  }
331
- crdt.updateText({ collection, document_id, value, name, start, length, crud: isCrud, save: isSave });
334
+ crdt.updateText({ array, object, value, key, start, length, crud: isCrud, save: isSave });
332
335
  }
333
336
  }
334
337
 
@@ -338,9 +341,9 @@ function _crdtUpdateListener() {
338
341
  });
339
342
  }
340
343
 
341
- function updateElements({ elements, collection, document_id, name, value, start, length, string }) {
344
+ function updateElements({ elements, array, object, key, value, start, length, string }) {
342
345
  if (!elements) {
343
- let selectors = `[collection='${collection}'][document_id='${document_id}'][name='${name}']`;
346
+ let selectors = `[array='${array}'][object='${object}'][key='${key}']`;
344
347
  elements = document.querySelectorAll(`input${selectors}, textarea${selectors}, [contenteditable]${selectors}, [editor='dom']${selectors}`);
345
348
  }
346
349
 
@@ -348,11 +351,11 @@ function updateElements({ elements, collection, document_id, name, value, start,
348
351
  let isCrdt = element.getAttribute('crdt');
349
352
  if (!element.hasAttribute('contenteditable') && isCrdt == 'false') return;
350
353
 
351
- updateElement({ element, collection, document_id, name, value, start, length, string });
354
+ updateElement({ element, array, object, key, value, start, length, string });
352
355
  });
353
356
  }
354
357
 
355
- async function updateElement({ element, collection, document_id, name, value, start, length, string }) {
358
+ async function updateElement({ element, array, object, key, value, start, length, string }) {
356
359
  if (element.tagName == 'IFRAME') {
357
360
  let eid = element.getAttribute('eid')
358
361
  element = element.contentDocument.documentElement;
@@ -373,7 +376,7 @@ async function updateElement({ element, collection, document_id, name, value, st
373
376
  else {
374
377
  let domTextEditor = element;
375
378
  if (string == undefined)
376
- string = await crdt.getText({ collection, document_id, name });
379
+ string = await crdt.getText({ array, object, key });
377
380
  let html = string;
378
381
  if (length) {
379
382
  let end = start + length;
@@ -434,10 +437,10 @@ observer.init({
434
437
  observer.init({
435
438
  name: 'CoCreateTextAttribtes',
436
439
  observe: ['attributes'],
437
- attributeName: [...crud.getAttributeNames(['collection', 'document_id', 'name']), 'contenteditable'],
440
+ attributeName: [...getAttributeNames(['array', 'object', 'key']), 'contenteditable'],
438
441
  target: selectors,
439
442
  callback(mutation) {
440
- let _id = mutation.target.getAttribute('document_id')
443
+ let _id = mutation.target.getAttribute('object')
441
444
  if (!_id) {
442
445
  _removeEventListeners(mutation.target)
443
446
  mutation.target.removeAttribute('crdt')
@@ -450,18 +453,18 @@ observer.init({
450
453
  action.init({
451
454
  name: "undo",
452
455
  endEvent: "undo",
453
- callback: (btn, data) => {
454
- const { collection, document_id, name, isCrud, isCrdt, isSave } = crud.getAttributes(btn);
455
- crdt.undoText({ collection, document_id, name, isCrud, isCrdt, isSave })
456
+ callback: (data) => {
457
+ const { array, object, key, isCrud, isCrdt, isSave } = getAttributes(data.element);
458
+ crdt.undoText({ array, object, key, isCrud, isCrdt, isSave })
456
459
  }
457
460
  });
458
461
 
459
462
  action.init({
460
463
  name: "redo",
461
464
  endEvent: "redo",
462
- callback: (btn, data) => {
463
- const { collection, document_id, name, isCrud, isCrdt, isSave } = crud.getAttributes(btn);
464
- crdt.redoText({ collection, document_id, name, isCrud, isCrdt, isSave })
465
+ callback: (data) => {
466
+ const { array, object, key, isCrud, isCrdt, isSave } = getAttributes(data.element);
467
+ crdt.redoText({ array, object, key, isCrud, isCrdt, isSave })
465
468
  }
466
469
  });
467
470
 
package/src/updateText.js CHANGED
@@ -1,79 +1,79 @@
1
- import crud from '@cocreate/crud-client';
2
1
  import crdt from '@cocreate/crdt';
3
- import {getStringPosition} from '@cocreate/selection';
2
+ import {getAttributes} from '@cocreate/elements';
3
+ import { getStringPosition } from '@cocreate/selection';
4
4
 
5
5
  export function insertAdjacentElement({ domTextEditor, target, position, element, elementValue }) {
6
- let remove;
7
- if (element && !elementValue) {
8
- remove = getStringPosition({ string: domTextEditor.htmlString, target: element });
9
- if (!remove.start && !remove.end)
10
- throw new Error('insertAdjacentElement: element not found');
11
- elementValue = domTextEditor.htmlString.substring(remove.start, remove.end);
12
- }
13
-
14
- let {start} = getStringPosition({ string: domTextEditor.htmlString, target, position, value: elementValue });
15
- if (remove)
16
- _updateText({domTextEditor, start: remove.start, end: remove.end});
17
- if (remove && remove.start < start){
18
- let length = remove.end - remove.start;
19
- _updateText({ domTextEditor, value: elementValue, start: start - length});
20
- }
21
- else
22
- _updateText({ domTextEditor, value: elementValue, start});
6
+ let remove;
7
+ if (element && !elementValue) {
8
+ remove = getStringPosition({ string: domTextEditor.htmlString, target: element });
9
+ if (!remove.start && !remove.end)
10
+ throw new Error('insertAdjacentElement: element not found');
11
+ elementValue = domTextEditor.htmlString.substring(remove.start, remove.end);
12
+ }
13
+
14
+ let { start } = getStringPosition({ string: domTextEditor.htmlString, target, position, value: elementValue });
15
+ if (remove)
16
+ _updateText({ domTextEditor, start: remove.start, end: remove.end });
17
+ if (remove && remove.start < start) {
18
+ let length = remove.end - remove.start;
19
+ _updateText({ domTextEditor, value: elementValue, start: start - length });
20
+ }
21
+ else
22
+ _updateText({ domTextEditor, value: elementValue, start });
23
23
  }
24
24
 
25
25
  export function removeElement({ domTextEditor, target }) {
26
- updateDomText({ domTextEditor, target });
26
+ updateDomText({ domTextEditor, target });
27
27
  }
28
28
 
29
29
  export function setInnerText({ domTextEditor, target, value, start, end }) {
30
- updateDomText({ domTextEditor, target, value, pos: {start, end} });
30
+ updateDomText({ domTextEditor, target, value, pos: { start, end } });
31
31
  }
32
32
 
33
33
  export function setClass({ domTextEditor, target, value }) {
34
- updateDomText({ domTextEditor, target, attribute: 'class', value });
34
+ updateDomText({ domTextEditor, target, attribute: 'class', value });
35
35
  }
36
36
  export function removeClass({ domTextEditor, target, value }) {
37
- updateDomText({ domTextEditor, target, attribute: 'class', value, remove: true });
37
+ updateDomText({ domTextEditor, target, attribute: 'class', value, remove: true });
38
38
  }
39
39
 
40
40
  export function setStyle({ domTextEditor, target, property, value }) {
41
- updateDomText({ domTextEditor, target, attribute: 'style', property, value });
41
+ updateDomText({ domTextEditor, target, attribute: 'style', property, value });
42
42
  }
43
43
 
44
44
  export function removeStyle({ domTextEditor, target, property }) {
45
- updateDomText({ domTextEditor, target, attribute: 'style', property, remove: true });
45
+ updateDomText({ domTextEditor, target, attribute: 'style', property, remove: true });
46
46
  }
47
47
 
48
48
  export function setAttribute({ domTextEditor, target, name, value }) {
49
- updateDomText({ domTextEditor, target, attribute: name, value });
49
+ updateDomText({ domTextEditor, target, attribute: name, value });
50
50
  }
51
51
 
52
52
  export function removeAttribute({ domTextEditor, target, name }) {
53
- updateDomText({ domTextEditor, target, attribute: name, remove: 'true'});
53
+ updateDomText({ domTextEditor, target, attribute: name, remove: 'true' });
54
54
  }
55
55
 
56
56
  export function replaceInnerText({ domTextEditor, target, value }) {
57
- updateDomText({ domTextEditor, target, value });
57
+ updateDomText({ domTextEditor, target, value });
58
58
  }
59
59
 
60
60
  export function updateDomText({ domTextEditor, target, position, element, elementValue, attribute, value, property, pos, remove }) {
61
- let {start, end, newValue} = getStringPosition({ string: domTextEditor.htmlString, target, attribute, property, value, remove });
62
- if (pos){
63
- start += pos.start;
64
- end += pos.end;
65
- }
66
- if (start != end)
67
- _updateText({domTextEditor, start, end});
68
- if (attribute && remove != 'true' || attribute && value)
69
- _updateText({ domTextEditor, value: ` ${attribute}="${newValue}"`, start });
70
- else if (value)
71
- _updateText({ domTextEditor, value, start });
61
+ let { start, end, newValue } = getStringPosition({ string: domTextEditor.htmlString, target, attribute, property, value, remove });
62
+ if (pos) {
63
+ start += pos.start;
64
+ end += pos.end;
65
+ }
66
+ if (start != end)
67
+ _updateText({ domTextEditor, start, end });
68
+ if (attribute && remove != 'true' || attribute && value)
69
+ _updateText({ domTextEditor, value: ` ${attribute}="${newValue}"`, start });
70
+ else if (value)
71
+ _updateText({ domTextEditor, value, start });
72
72
  }
73
73
 
74
- function _updateText({ domTextEditor, value, start, end}) {
75
- if (domTextEditor.tagName =='HTML')
74
+ function _updateText({ domTextEditor, value, start, end }) {
75
+ if (domTextEditor.tagName == 'HTML')
76
76
  domTextEditor = domTextEditor.ownerDocument.defaultView.frameElement;
77
- const { collection, document_id, name, isCrud } = crud.getAttributes(domTextEditor);
78
- crdt.updateText({ collection, document_id, name, value, start, length: end - start, crud: isCrud });
77
+ const { array, object, key, isCrud } = getAttributes(domTextEditor);
78
+ crdt.updateText({ array, object, key, value, start, length: end - start, crud: isCrud });
79
79
  }
package/webpack.config.js CHANGED
@@ -1,84 +1,88 @@
1
1
  const path = require("path")
2
2
  const TerserPlugin = require("terser-webpack-plugin")
3
3
  const MiniCssExtractPlugin = require("mini-css-extract-plugin")
4
- let isProduction = process.env.NODE_ENV === "production"
5
4
  const { CleanWebpackPlugin } = require("clean-webpack-plugin")
6
5
 
7
- module.exports = {
8
- entry: {
9
- "CoCreate-text": "./src/index.js",
10
- },
11
- output: {
12
- path: path.resolve(__dirname, "dist"),
13
- filename: isProduction ? "[name].min.js" : "[name].js",
14
- libraryTarget: "umd",
15
- libraryExport: "default",
16
- library: ["CoCreate", "text"],
17
- globalObject: "this",
18
- },
6
+ module.exports = (env, argv) => {
7
+ let isProduction = false
8
+ if (argv.mode === 'production')
9
+ isProduction = true
19
10
 
20
- plugins: [
21
- new CleanWebpackPlugin(),
22
- new MiniCssExtractPlugin({
23
- filename: "[name].css",
24
- }),
25
- ],
26
- // Default mode for Webpack is production.
27
- // Depending on mode Webpack will apply different things
28
- // on final bundle. For now we don't need production's JavaScript
29
- // minifying and other thing so let's set mode to development
30
- mode: isProduction ? "production" : "development",
31
- module: {
32
- rules: [
33
- {
34
- test: /.js$/,
35
- exclude: /(node_modules)/,
36
- use: {
37
- loader: "babel-loader",
38
- options: {
39
- plugins: ["@babel/plugin-transform-modules-commonjs"],
40
- },
11
+ const config = {
12
+ entry: {
13
+ "CoCreate-text": "./src/index.js",
41
14
  },
42
- },
43
- {
44
- test: /.css$/i,
45
- use: [
46
- { loader: "style-loader", options: { injectType: "linkTag" } },
47
- "file-loader",
15
+ output: {
16
+ path: path.resolve(__dirname, "dist"),
17
+ filename: isProduction ? "[name].min.js" : "[name].js",
18
+ libraryTarget: "umd",
19
+ libraryExport: "default",
20
+ library: ["CoCreate", "text"],
21
+ globalObject: "this",
22
+ },
23
+
24
+ plugins: [
25
+ new CleanWebpackPlugin(),
26
+ new MiniCssExtractPlugin({
27
+ filename: "[name].css",
28
+ }),
48
29
  ],
49
- },
50
- ],
51
- },
30
+ // Default mode for Webpack is production.
31
+ // Depending on mode Webpack will apply different things
32
+ // on final bundle. For now we don't need production's JavaScript
33
+ // minifying and other thing so let's set mode to development
34
+ mode: isProduction ? "production" : "development",
35
+ module: {
36
+ rules: [
37
+ {
38
+ test: /.js$/,
39
+ exclude: /(node_modules)/,
40
+ use: {
41
+ loader: "babel-loader",
42
+ options: {
43
+ plugins: ["@babel/plugin-transform-modules-commonjs"],
44
+ },
45
+ },
46
+ },
47
+ {
48
+ test: /.css$/i,
49
+ use: [
50
+ { loader: "style-loader", options: { injectType: "linkTag" } },
51
+ "file-loader",
52
+ ],
53
+ },
54
+ ],
55
+ },
52
56
 
53
- // add source map
54
- ...(isProduction ? {} : { devtool: "eval-source-map" }),
57
+ // add source map
58
+ ...(isProduction ? {} : { devtool: "eval-source-map" }),
55
59
 
56
- // optimization: {
57
- // minimize: true,
58
- // minimizer: [
59
- // new TerserPlugin({
60
- // extractComments: true,
61
- // // cache: true,
62
- // parallel: true,
63
- // // sourceMap: true, // Must be set to true if using source-maps in production
64
- // terserOptions: {
65
- // // https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
66
- // // extractComments: 'all',
67
- // compress: {
68
- // drop_console: true,
69
- // },
70
- // },
71
- // }),
72
- // ],
73
- // splitChunks: {
74
- // chunks: "all",
75
- // minSize: 200,
76
- // // maxSize: 99999,
77
- // //minChunks: 1,
60
+ // optimization: {
61
+ // minimize: true,
62
+ // minimizer: [
63
+ // new TerserPlugin({
64
+ // extractComments: true,
65
+ // // cache: true,
66
+ // parallel: true,
67
+ // // sourceMap: true, // Must be set to true if using source-maps in production
68
+ // terserOptions: {
69
+ // // https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
70
+ // // extractComments: 'all',
71
+ // compress: {
72
+ // drop_console: true,
73
+ // },
74
+ // },
75
+ // }),
76
+ // ],
77
+ // splitChunks: {
78
+ // chunks: "all",
79
+ // minSize: 200,
80
+ // // maxSize: 99999,
81
+ // //minChunks: 1,
78
82
 
79
- // cacheGroups: {
80
- // defaultVendors: false,
81
- // },
82
- // },
83
- // },
84
- }
83
+ // cacheGroups: {
84
+ // defaultVendors: false,
85
+ // },
86
+ // },
87
+ // },
88
+ }
@@ -1,32 +0,0 @@
1
- /*globals CustomEvent*/
2
- import action from '@cocreate/actions';
3
- import crud from '@cocreate/crud-client';
4
- import crdt from '@cocreate/crdt';
5
-
6
- function save(btn){
7
- const { collection, document_id, name, namespace, room, broadcast, broadcastSender, isUpsert} = crud.getAttributes(btn);
8
- crdt.getText({collection, document_id, name}).then(response => {
9
- crud.updateDocument({
10
- collection,
11
- document: {
12
- _id: document_id,
13
- [name]: response
14
- },
15
- upsert: isUpsert,
16
- namespace,
17
- room,
18
- broadcast,
19
- broadcastSender
20
- });
21
-
22
- document.dispatchEvent(new CustomEvent('savedDomText'));
23
- });
24
- }
25
-
26
- action.init({
27
- name: "saveDomText",
28
- endEvent: "savedDomText",
29
- callback: (btn, data) => {
30
- save(btn);
31
- },
32
- });