@pie-lib/editable-html 7.17.4-next.224 → 7.17.4-next.226

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.
@@ -132,7 +132,7 @@ var createEditList = function createEditList() {
132
132
  normalize: false
133
133
  });
134
134
  });
135
- } else {
135
+ } else if (node.type !== 'list_item') {
136
136
  change.wrapBlockByKey(node.key, 'list_item', {
137
137
  normalize: false
138
138
  });
@@ -176,7 +176,7 @@ var _default = function _default(options) {
176
176
  }
177
177
 
178
178
  var current = core.utils.getCurrentList(value);
179
- return current.type === type;
179
+ return current ? current.type === type : false;
180
180
  },
181
181
  onClick: function onClick(value, onChange) {
182
182
  log('[onClick]', value);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/list/index.jsx"],"names":["log","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","createEditList","core","typeDefault","schema","blocks","Object","keys","forEach","key","block","parent","types","getHighestSelectedBlocks","value","range","selection","document","startBlock","getClosestBlock","startKey","endBlock","endKey","Immutable","List","ancestor","getCommonAncestor","startPath","getPath","endPath","slice","get","changes","wrapInList","change","data","selectedBlocks","wrapBlock","Data","create","normalize","node","utils","isList","_ref","unwrapNodeByKey","wrapBlockByKey","options","icon","renderNode","props","attributes","toolbar","isMark","isActive","isSelectionInList","current","getCurrentList","onClick","onChange","inList","call","unwrapList","propTypes","PropTypes","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Data } from 'slate';\nimport Immutable from 'immutable';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes)\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n }\n};\n\nconst createEditList = () => {\n const core = EditList({\n typeDefault: 'span'\n });\n\n // fix outdated schema\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach(key => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n /**\n * This override of the core.changes.wrapInList is needed because the version\n * of immutable that we have does not support getting the element at a specific\n * index with a square bracket (list[0]). We have to use the list.get function instead\n */\n\n /**\n * Returns the highest list of blocks that cover the current selection\n */\n const getHighestSelectedBlocks = value => {\n const range = value.selection;\n const document = value.document;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n return Immutable.List([startBlock]);\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n };\n\n /**\n * Wrap the blocks in the current selection in a new list. Selected\n * lists are merged together.\n */\n core.changes.wrapInList = function(change, type, data) {\n const selectedBlocks = getHighestSelectedBlocks(change.value);\n\n // Wrap in container\n change.wrapBlock({ type: type, data: Data.create(data) }, { normalize: false });\n\n // Wrap in list items\n selectedBlocks.forEach(function(node) {\n if (core.utils.isList(node)) {\n // Merge its items with the created list\n node.nodes.forEach(function(_ref) {\n const key = _ref.key;\n return change.unwrapNodeByKey(key, { normalize: false });\n });\n } else {\n change.wrapBlockByKey(node.key, 'list_item', {\n normalize: false\n });\n }\n });\n\n return change.normalize();\n };\n\n return core;\n};\n\nexport default options => {\n const { type, icon } = options;\n\n const core = createEditList();\n\n // eslint-disable-next-line react/display-name\n core.renderNode = props => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current.type === type;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n }\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func\n };\n\n return core;\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/plugins/list/index.jsx"],"names":["log","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","createEditList","core","typeDefault","schema","blocks","Object","keys","forEach","key","block","parent","types","getHighestSelectedBlocks","value","range","selection","document","startBlock","getClosestBlock","startKey","endBlock","endKey","Immutable","List","ancestor","getCommonAncestor","startPath","getPath","endPath","slice","get","changes","wrapInList","change","data","selectedBlocks","wrapBlock","Data","create","normalize","node","utils","isList","_ref","unwrapNodeByKey","wrapBlockByKey","options","icon","renderNode","props","attributes","toolbar","isMark","isActive","isSelectionInList","current","getCurrentList","onClick","onChange","inList","call","unwrapList","propTypes","PropTypes","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Data } from 'slate';\nimport Immutable from 'immutable';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes)\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n }\n};\n\nconst createEditList = () => {\n const core = EditList({\n typeDefault: 'span'\n });\n\n // fix outdated schema\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach(key => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n /**\n * This override of the core.changes.wrapInList is needed because the version\n * of immutable that we have does not support getting the element at a specific\n * index with a square bracket (list[0]). We have to use the list.get function instead\n */\n\n /**\n * Returns the highest list of blocks that cover the current selection\n */\n const getHighestSelectedBlocks = value => {\n const range = value.selection;\n const document = value.document;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n return Immutable.List([startBlock]);\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n };\n\n /**\n * Wrap the blocks in the current selection in a new list. Selected\n * lists are merged together.\n */\n core.changes.wrapInList = function(change, type, data) {\n const selectedBlocks = getHighestSelectedBlocks(change.value);\n\n // Wrap in container\n change.wrapBlock({ type: type, data: Data.create(data) }, { normalize: false });\n\n // Wrap in list items\n selectedBlocks.forEach(function(node) {\n if (core.utils.isList(node)) {\n // Merge its items with the created list\n node.nodes.forEach(function(_ref) {\n const key = _ref.key;\n return change.unwrapNodeByKey(key, { normalize: false });\n });\n } else if (node.type !== 'list_item') {\n change.wrapBlockByKey(node.key, 'list_item', {\n normalize: false\n });\n }\n });\n\n return change.normalize();\n };\n\n return core;\n};\n\nexport default options => {\n const { type, icon } = options;\n\n const core = createEditList();\n\n // eslint-disable-next-line react/display-name\n core.renderNode = props => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current ? current.type === type : false;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n }\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func\n };\n\n return core;\n};\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/editable-html",
3
- "version": "7.17.4-next.224+22dc9c41",
3
+ "version": "7.17.4-next.226+ec1de5ae",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "main": "lib/index.js",
@@ -12,7 +12,7 @@
12
12
  "@material-ui/styles": "^3.0.0-alpha.10",
13
13
  "@pie-lib/drag": "^1.1.52",
14
14
  "@pie-lib/math-rendering": "^2.3.9",
15
- "@pie-lib/math-toolbar": "^1.8.1-next.224+22dc9c41",
15
+ "@pie-lib/math-toolbar": "^1.8.0",
16
16
  "@pie-lib/render-ui": "^4.12.0",
17
17
  "change-case": "^3.0.2",
18
18
  "classnames": "^2.2.6",
@@ -46,6 +46,6 @@
46
46
  "publishConfig": {
47
47
  "access": "public"
48
48
  },
49
- "gitHead": "22dc9c41eb55defc603cbf89e58cfae81c667a26",
49
+ "gitHead": "ec1de5aec79bc33c5e009f456f712b07e3e1e71c",
50
50
  "scripts": {}
51
51
  }
@@ -109,7 +109,7 @@ const createEditList = () => {
109
109
  const key = _ref.key;
110
110
  return change.unwrapNodeByKey(key, { normalize: false });
111
111
  });
112
- } else {
112
+ } else if (node.type !== 'list_item') {
113
113
  change.wrapBlockByKey(node.key, 'list_item', {
114
114
  normalize: false
115
115
  });
@@ -150,7 +150,7 @@ export default options => {
150
150
  return false;
151
151
  }
152
152
  const current = core.utils.getCurrentList(value);
153
- return current.type === type;
153
+ return current ? current.type === type : false;
154
154
  },
155
155
  onClick: (value, onChange) => {
156
156
  log('[onClick]', value);