@pie-lib/editable-html 7.17.4-next.373 → 7.17.4-next.417
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/lib/editor.js +147 -109
- package/lib/editor.js.map +1 -1
- package/lib/index.js +30 -42
- package/lib/index.js.map +1 -1
- package/lib/plugins/characters/custom-popover.js +8 -11
- package/lib/plugins/characters/custom-popover.js.map +1 -1
- package/lib/plugins/characters/index.js +14 -19
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js +24 -4
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/image/component.js +65 -54
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +65 -27
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +47 -12
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +8 -12
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +6 -15
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +2 -2
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +8 -8
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +15 -20
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +26 -41
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +15 -25
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +22 -35
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +24 -37
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +8 -8
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +5 -5
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +5 -5
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +2 -2
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +5 -5
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +2 -2
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +9 -9
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +11 -11
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +25 -36
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +5 -5
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +2 -2
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +18 -30
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +5 -5
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +25 -43
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +30 -49
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/serialization.js +2 -2
- package/lib/serialization.js.map +1 -1
- package/package.json +3 -3
- package/src/editor.jsx +55 -37
- package/src/plugins/characters/index.jsx +7 -0
- package/src/plugins/characters/utils.js +8 -4
- package/src/plugins/image/component.jsx +49 -20
- package/src/plugins/image/image-toolbar.jsx +37 -2
- package/src/plugins/image/index.jsx +38 -9
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -22,8 +24,6 @@ var _utils = require("./utils");
|
|
|
22
24
|
|
|
23
25
|
var _icons = require("./icons");
|
|
24
26
|
|
|
25
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
26
|
-
|
|
27
27
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:respArea');
|
|
28
28
|
var lastIndexMap = {};
|
|
29
29
|
var elTypesMap = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["log","debug","lastIndexMap","elTypesMap","elTypesArray","Object","values","ResponseAreaPlugin","opts","isOfCurrentType","d","type","toolbar","icon","buttonStyles","margin","onClick","value","onChange","change","currentRespAreaList","document","filterDescendants","size","maxResponseAreas","replace","prevIndex","newIndex","newInline","getDefaultElement","selection","startKey","endKey","insertInline","lastText","getLastText","parentNode","getParent","key","index","nodes","indexOf","isVoid","insertNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","customToolbar","respAreaToolbar","supports","node","object","showDone","name","filterPlugins","plugins","filter","p","deleteNode","e","preventDefault","removeNodeByKey","renderNode","props","attributes","n","data","toJSON","error","editor","isUndefined","forEachDescendant","parseInt","get","oldRespAreaList","disabled","arrayToFilter","arrayToUseForFilter","elementsWithChangedStatus","find","onHandleAreaChange","onDrop","event","closestEl","target","closest","inline","findDescendant","dataset","serialization","deserialize","el","id","inTable","serialize"],"sources":["../../../src/plugins/respArea/index.jsx"],"sourcesContent":["import React from 'react';\nimport debug from 'debug';\nimport isUndefined from 'lodash/isUndefined';\n\nimport InlineDropdown from './inline-dropdown';\nimport DragInTheBlank from './drag-in-the-blank';\nimport ExplicitConstructedResponse from './explicit-constructed-response';\nimport { getDefaultElement } from './utils';\nimport { ToolbarIcon } from './icons';\n\nconst log = debug('@pie-lib:editable-html:plugins:respArea');\n\nconst lastIndexMap = {};\nconst elTypesMap = {\n 'inline-dropdown': 'inline_dropdown',\n 'explicit-constructed-response': 'explicit_constructed_response',\n 'drag-in-the-blank': 'drag_in_the_blank'\n};\nconst elTypesArray = Object.values(elTypesMap);\n\nexport default function ResponseAreaPlugin(opts) {\n const isOfCurrentType = d => d.type === opts.type || d.type === elTypesMap[opts.type];\n\n const toolbar = {\n icon: <ToolbarIcon />,\n buttonStyles: {\n margin: '0 20px 0 auto'\n },\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const change = value.change();\n const currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);\n\n if (currentRespAreaList.size >= opts.maxResponseAreas) {\n return;\n }\n\n const type = opts.type.replace(/-/g, '_');\n const prevIndex = lastIndexMap[type];\n const newIndex = prevIndex === 0 ? prevIndex : prevIndex + 1;\n const newInline = getDefaultElement(opts, newIndex);\n\n lastIndexMap[type] += 1;\n\n if (newInline) {\n if (change.value.selection.startKey || change.value.selection.endKey) {\n change.insertInline(newInline);\n } else {\n // If the markup is empty and there's no focus\n const lastText = value.document.getLastText();\n const parentNode = value.document.getParent(lastText.key);\n\n if (parentNode) {\n const index = parentNode.nodes.indexOf(lastText.key);\n\n if (parentNode.isVoid) return;\n\n change.insertNodeByKey(parentNode.key, index + 1, newInline);\n }\n }\n\n if (newInline.type === 'drag_in_the_blank') {\n const nextText = change.value.document.getNextText(newInline.key);\n\n if (nextText) {\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n }\n }\n\n onChange(change);\n }\n },\n customToolbar: opts.respAreaToolbar,\n supports: node => node.object === 'inline' && elTypesArray.indexOf(node.type) >= 0,\n showDone: false\n };\n\n return {\n name: 'response_area',\n toolbar,\n filterPlugins: (node, plugins) => {\n if (node.type === 'explicit_constructed_response' || node.type === 'drag_in_the_blank') {\n return [];\n }\n\n return plugins.filter(p => p.name !== 'response_area');\n },\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n const { attributes, node: n } = props;\n\n if (n.type === 'explicit_constructed_response') {\n const data = n.data.toJSON();\n let error;\n\n if (opts.error) {\n error = opts.error();\n }\n\n return (\n <ExplicitConstructedResponse\n attributes={attributes}\n value={data.value}\n error={error && error[data.index] && error[data.index][0]}\n />\n );\n }\n\n if (n.type === 'drag_in_the_blank') {\n const data = n.data.toJSON();\n\n return (\n <DragInTheBlank attributes={attributes} data={data} n={n} nodeProps={props} opts={opts} />\n );\n }\n\n if (n.type === 'inline_dropdown') {\n const data = n.data.toJSON();\n\n return <InlineDropdown attributes={attributes} selectedItem={data.value} />;\n }\n },\n onChange(change, editor) {\n const type = opts.type.replace(/-/g, '_');\n\n if (isUndefined(lastIndexMap[type])) {\n lastIndexMap[type] = 0;\n\n change.value.document.forEachDescendant(d => {\n if (d.type === type) {\n const newIndex = parseInt(d.data.get('index'), 10);\n\n if (newIndex > lastIndexMap[type]) {\n lastIndexMap[type] = newIndex;\n }\n }\n });\n }\n\n if (!editor.value) {\n return;\n }\n\n const currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);\n const oldRespAreaList = editor.value.document.filterDescendants(isOfCurrentType);\n\n if (currentRespAreaList.size >= opts.maxResponseAreas) {\n toolbar.disabled = true;\n } else {\n toolbar.disabled = false;\n }\n\n const arrayToFilter =\n oldRespAreaList.size > currentRespAreaList.size ? oldRespAreaList : currentRespAreaList;\n const arrayToUseForFilter =\n arrayToFilter === oldRespAreaList ? currentRespAreaList : oldRespAreaList;\n\n const elementsWithChangedStatus = arrayToFilter.filter(\n d => !arrayToUseForFilter.find(e => e.data.get('index') === d.data.get('index'))\n );\n\n if (elementsWithChangedStatus.size && oldRespAreaList.size > currentRespAreaList.size) {\n opts.onHandleAreaChange(elementsWithChangedStatus);\n }\n },\n onDrop(event, change, editor) {\n const closestEl = event.target.closest('[data-key]');\n const inline = editor.value.document.findDescendant(d => d.key === closestEl.dataset.key);\n\n if (inline.type === 'drag_in_the_blank') {\n return false;\n }\n }\n };\n}\n\nexport const serialization = {\n deserialize(el) {\n const type = el.dataset && el.dataset.type;\n\n switch (type) {\n case 'inline_dropdown':\n return {\n object: 'inline',\n type: 'inline_dropdown',\n isVoid: true,\n data: {\n index: el.dataset.index,\n value: el.dataset.value\n }\n };\n case 'explicit_constructed_response':\n return {\n object: 'inline',\n type: 'explicit_constructed_response',\n isVoid: true,\n data: {\n index: el.dataset.index,\n value: el.dataset.value\n }\n };\n case 'drag_in_the_blank':\n return {\n object: 'inline',\n type: 'drag_in_the_blank',\n isVoid: true,\n data: {\n index: el.dataset.index,\n id: el.dataset.id,\n value: el.dataset.value,\n inTable: el.dataset.inTable\n }\n };\n }\n },\n serialize(object) {\n if (object.object !== 'inline') {\n return;\n }\n\n switch (object.type) {\n case 'inline_dropdown': {\n const data = object.data.toJSON();\n\n return <span data-type=\"inline_dropdown\" data-index={data.index} data-value={data.value} />;\n }\n case 'explicit_constructed_response': {\n const data = object.data.toJSON();\n\n return (\n <span\n data-type=\"explicit_constructed_response\"\n data-index={data.index}\n data-value={data.value}\n />\n );\n }\n case 'drag_in_the_blank': {\n const data = object.data.toJSON();\n\n return (\n <span\n data-type=\"drag_in_the_blank\"\n data-index={data.index}\n data-id={data.id}\n data-value={data.value}\n data-in-table={data.inTable}\n />\n );\n }\n }\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","lastIndexMap","elTypesMap","elTypesArray","Object","values","ResponseAreaPlugin","opts","isOfCurrentType","d","type","toolbar","icon","buttonStyles","margin","onClick","value","onChange","change","currentRespAreaList","document","filterDescendants","size","maxResponseAreas","replace","prevIndex","newIndex","newInline","getDefaultElement","selection","startKey","endKey","insertInline","lastText","getLastText","parentNode","getParent","key","index","nodes","indexOf","isVoid","insertNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","customToolbar","respAreaToolbar","supports","node","object","showDone","name","filterPlugins","plugins","filter","p","deleteNode","e","preventDefault","removeNodeByKey","renderNode","props","attributes","n","data","toJSON","error","editor","isUndefined","forEachDescendant","parseInt","get","oldRespAreaList","disabled","arrayToFilter","arrayToUseForFilter","elementsWithChangedStatus","find","onHandleAreaChange","onDrop","event","closestEl","target","closest","inline","findDescendant","dataset","serialization","deserialize","el","id","inTable","serialize"],"sources":["../../../src/plugins/respArea/index.jsx"],"sourcesContent":["import React from 'react';\nimport debug from 'debug';\nimport isUndefined from 'lodash/isUndefined';\n\nimport InlineDropdown from './inline-dropdown';\nimport DragInTheBlank from './drag-in-the-blank';\nimport ExplicitConstructedResponse from './explicit-constructed-response';\nimport { getDefaultElement } from './utils';\nimport { ToolbarIcon } from './icons';\n\nconst log = debug('@pie-lib:editable-html:plugins:respArea');\n\nconst lastIndexMap = {};\nconst elTypesMap = {\n 'inline-dropdown': 'inline_dropdown',\n 'explicit-constructed-response': 'explicit_constructed_response',\n 'drag-in-the-blank': 'drag_in_the_blank'\n};\nconst elTypesArray = Object.values(elTypesMap);\n\nexport default function ResponseAreaPlugin(opts) {\n const isOfCurrentType = d => d.type === opts.type || d.type === elTypesMap[opts.type];\n\n const toolbar = {\n icon: <ToolbarIcon />,\n buttonStyles: {\n margin: '0 20px 0 auto'\n },\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const change = value.change();\n const currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);\n\n if (currentRespAreaList.size >= opts.maxResponseAreas) {\n return;\n }\n\n const type = opts.type.replace(/-/g, '_');\n const prevIndex = lastIndexMap[type];\n const newIndex = prevIndex === 0 ? prevIndex : prevIndex + 1;\n const newInline = getDefaultElement(opts, newIndex);\n\n lastIndexMap[type] += 1;\n\n if (newInline) {\n if (change.value.selection.startKey || change.value.selection.endKey) {\n change.insertInline(newInline);\n } else {\n // If the markup is empty and there's no focus\n const lastText = value.document.getLastText();\n const parentNode = value.document.getParent(lastText.key);\n\n if (parentNode) {\n const index = parentNode.nodes.indexOf(lastText.key);\n\n if (parentNode.isVoid) return;\n\n change.insertNodeByKey(parentNode.key, index + 1, newInline);\n }\n }\n\n if (newInline.type === 'drag_in_the_blank') {\n const nextText = change.value.document.getNextText(newInline.key);\n\n if (nextText) {\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n }\n }\n\n onChange(change);\n }\n },\n customToolbar: opts.respAreaToolbar,\n supports: node => node.object === 'inline' && elTypesArray.indexOf(node.type) >= 0,\n showDone: false\n };\n\n return {\n name: 'response_area',\n toolbar,\n filterPlugins: (node, plugins) => {\n if (node.type === 'explicit_constructed_response' || node.type === 'drag_in_the_blank') {\n return [];\n }\n\n return plugins.filter(p => p.name !== 'response_area');\n },\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n const { attributes, node: n } = props;\n\n if (n.type === 'explicit_constructed_response') {\n const data = n.data.toJSON();\n let error;\n\n if (opts.error) {\n error = opts.error();\n }\n\n return (\n <ExplicitConstructedResponse\n attributes={attributes}\n value={data.value}\n error={error && error[data.index] && error[data.index][0]}\n />\n );\n }\n\n if (n.type === 'drag_in_the_blank') {\n const data = n.data.toJSON();\n\n return (\n <DragInTheBlank attributes={attributes} data={data} n={n} nodeProps={props} opts={opts} />\n );\n }\n\n if (n.type === 'inline_dropdown') {\n const data = n.data.toJSON();\n\n return <InlineDropdown attributes={attributes} selectedItem={data.value} />;\n }\n },\n onChange(change, editor) {\n const type = opts.type.replace(/-/g, '_');\n\n if (isUndefined(lastIndexMap[type])) {\n lastIndexMap[type] = 0;\n\n change.value.document.forEachDescendant(d => {\n if (d.type === type) {\n const newIndex = parseInt(d.data.get('index'), 10);\n\n if (newIndex > lastIndexMap[type]) {\n lastIndexMap[type] = newIndex;\n }\n }\n });\n }\n\n if (!editor.value) {\n return;\n }\n\n const currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);\n const oldRespAreaList = editor.value.document.filterDescendants(isOfCurrentType);\n\n if (currentRespAreaList.size >= opts.maxResponseAreas) {\n toolbar.disabled = true;\n } else {\n toolbar.disabled = false;\n }\n\n const arrayToFilter =\n oldRespAreaList.size > currentRespAreaList.size ? oldRespAreaList : currentRespAreaList;\n const arrayToUseForFilter =\n arrayToFilter === oldRespAreaList ? currentRespAreaList : oldRespAreaList;\n\n const elementsWithChangedStatus = arrayToFilter.filter(\n d => !arrayToUseForFilter.find(e => e.data.get('index') === d.data.get('index'))\n );\n\n if (elementsWithChangedStatus.size && oldRespAreaList.size > currentRespAreaList.size) {\n opts.onHandleAreaChange(elementsWithChangedStatus);\n }\n },\n onDrop(event, change, editor) {\n const closestEl = event.target.closest('[data-key]');\n const inline = editor.value.document.findDescendant(d => d.key === closestEl.dataset.key);\n\n if (inline.type === 'drag_in_the_blank') {\n return false;\n }\n }\n };\n}\n\nexport const serialization = {\n deserialize(el) {\n const type = el.dataset && el.dataset.type;\n\n switch (type) {\n case 'inline_dropdown':\n return {\n object: 'inline',\n type: 'inline_dropdown',\n isVoid: true,\n data: {\n index: el.dataset.index,\n value: el.dataset.value\n }\n };\n case 'explicit_constructed_response':\n return {\n object: 'inline',\n type: 'explicit_constructed_response',\n isVoid: true,\n data: {\n index: el.dataset.index,\n value: el.dataset.value\n }\n };\n case 'drag_in_the_blank':\n return {\n object: 'inline',\n type: 'drag_in_the_blank',\n isVoid: true,\n data: {\n index: el.dataset.index,\n id: el.dataset.id,\n value: el.dataset.value,\n inTable: el.dataset.inTable\n }\n };\n }\n },\n serialize(object) {\n if (object.object !== 'inline') {\n return;\n }\n\n switch (object.type) {\n case 'inline_dropdown': {\n const data = object.data.toJSON();\n\n return <span data-type=\"inline_dropdown\" data-index={data.index} data-value={data.value} />;\n }\n case 'explicit_constructed_response': {\n const data = object.data.toJSON();\n\n return (\n <span\n data-type=\"explicit_constructed_response\"\n data-index={data.index}\n data-value={data.value}\n />\n );\n }\n case 'drag_in_the_blank': {\n const data = object.data.toJSON();\n\n return (\n <span\n data-type=\"drag_in_the_blank\"\n data-index={data.index}\n data-id={data.id}\n data-value={data.value}\n data-in-table={data.inTable}\n />\n );\n }\n }\n }\n};\n"],"mappings":"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"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports["default"] = void 0;
|
|
7
9
|
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
8
12
|
var _react = _interopRequireDefault(require("react"));
|
|
9
13
|
|
|
10
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
15
|
|
|
12
16
|
var _icons = require("../icons");
|
|
13
17
|
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
15
|
-
|
|
16
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
17
|
-
|
|
18
18
|
var InlineDropdown = function InlineDropdown(_ref) {
|
|
19
19
|
var attributes = _ref.attributes,
|
|
20
20
|
selectedItem = _ref.selectedItem;
|
|
21
21
|
// TODO: Investigate
|
|
22
22
|
// Needed because items with values inside have different positioning for some reason
|
|
23
23
|
var html = selectedItem || '<div> </div>';
|
|
24
|
-
return /*#__PURE__*/_react["default"].createElement("span",
|
|
24
|
+
return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, attributes, {
|
|
25
25
|
style: {
|
|
26
26
|
display: 'inline-flex',
|
|
27
27
|
height: '50px',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["InlineDropdown","attributes","selectedItem","html","display","height","margin","cursor","minWidth","background","border","boxSizing","borderRadius","position","flex","overflow","padding","whiteSpace","textOverflow","lineHeight","__html","top","right","propTypes","PropTypes","object","oneOfType","string"],"sources":["../../../../src/plugins/respArea/inline-dropdown/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Chevron } from '../icons';\n\nconst InlineDropdown = ({ attributes, selectedItem }) => {\n // TODO: Investigate\n // Needed because items with values inside have different positioning for some reason\n const html = selectedItem || '<div> </div>';\n\n return (\n <span\n {...attributes}\n style={{\n display: 'inline-flex',\n height: '50px',\n margin: '0 5px',\n cursor: 'pointer'\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n height: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n position: 'relative'\n }}\n >\n <div\n style={{\n flex: 1,\n overflow: 'hidden',\n padding: '0 25px 0 8px',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n lineHeight: '35px'\n }}\n dangerouslySetInnerHTML={{\n __html: html\n }}\n />\n <Chevron\n direction=\"down\"\n style={{\n position: 'absolute',\n top: '5px',\n right: '5px'\n }}\n />\n </div>\n </span>\n );\n};\n\nInlineDropdown.propTypes = {\n attributes: PropTypes.object,\n selectedItem: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\n\nexport default InlineDropdown;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["InlineDropdown","attributes","selectedItem","html","display","height","margin","cursor","minWidth","background","border","boxSizing","borderRadius","position","flex","overflow","padding","whiteSpace","textOverflow","lineHeight","__html","top","right","propTypes","PropTypes","object","oneOfType","string"],"sources":["../../../../src/plugins/respArea/inline-dropdown/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Chevron } from '../icons';\n\nconst InlineDropdown = ({ attributes, selectedItem }) => {\n // TODO: Investigate\n // Needed because items with values inside have different positioning for some reason\n const html = selectedItem || '<div> </div>';\n\n return (\n <span\n {...attributes}\n style={{\n display: 'inline-flex',\n height: '50px',\n margin: '0 5px',\n cursor: 'pointer'\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n height: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n position: 'relative'\n }}\n >\n <div\n style={{\n flex: 1,\n overflow: 'hidden',\n padding: '0 25px 0 8px',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n lineHeight: '35px'\n }}\n dangerouslySetInnerHTML={{\n __html: html\n }}\n />\n <Chevron\n direction=\"down\"\n style={{\n position: 'absolute',\n top: '5px',\n right: '5px'\n }}\n />\n </div>\n </span>\n );\n};\n\nInlineDropdown.propTypes = {\n attributes: PropTypes.object,\n selectedItem: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\n\nexport default InlineDropdown;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,OAAkC;EAAA,IAA/BC,UAA+B,QAA/BA,UAA+B;EAAA,IAAnBC,YAAmB,QAAnBA,YAAmB;EACvD;EACA;EACA,IAAMC,IAAI,GAAGD,YAAY,IAAI,kBAA7B;EAEA,oBACE,sEACMD,UADN;IAEE,KAAK,EAAE;MACLG,OAAO,EAAE,aADJ;MAELC,MAAM,EAAE,MAFH;MAGLC,MAAM,EAAE,OAHH;MAILC,MAAM,EAAE;IAJH;EAFT,iBASE;IACE,KAAK,EAAE;MACLH,OAAO,EAAE,aADJ;MAELI,QAAQ,EAAE,OAFL;MAGLH,MAAM,EAAE,MAHH;MAILI,UAAU,EAAE,MAJP;MAKLC,MAAM,EAAE,mBALH;MAMLC,SAAS,EAAE,YANN;MAOLC,YAAY,EAAE,KAPT;MAQLC,QAAQ,EAAE;IARL;EADT,gBAYE;IACE,KAAK,EAAE;MACLC,IAAI,EAAE,CADD;MAELC,QAAQ,EAAE,QAFL;MAGLC,OAAO,EAAE,cAHJ;MAILC,UAAU,EAAE,QAJP;MAKLC,YAAY,EAAE,UALT;MAMLC,UAAU,EAAE;IANP,CADT;IASE,uBAAuB,EAAE;MACvBC,MAAM,EAAEjB;IADe;EAT3B,EAZF,eAyBE,gCAAC,cAAD;IACE,SAAS,EAAC,MADZ;IAEE,KAAK,EAAE;MACLU,QAAQ,EAAE,UADL;MAELQ,GAAG,EAAE,KAFA;MAGLC,KAAK,EAAE;IAHF;EAFT,EAzBF,CATF,CADF;AA8CD,CAnDD;;AAqDAtB,cAAc,CAACuB,SAAf,GAA2B;EACzBtB,UAAU,EAAEuB,qBAAA,CAAUC,MADG;EAEzBvB,YAAY,EAAEsB,qBAAA,CAAUE,SAAV,CAAoB,CAACF,qBAAA,CAAUG,MAAX,EAAmBH,qBAAA,CAAUC,MAA7B,CAApB;AAFW,CAA3B;eAKezB,c"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -13,8 +15,6 @@ var _slate = require("slate");
|
|
|
13
15
|
|
|
14
16
|
var _Snackbar = _interopRequireDefault(require("@material-ui/core/Snackbar"));
|
|
15
17
|
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
17
|
-
|
|
18
18
|
var isNumber = function isNumber(val) {
|
|
19
19
|
return !isNaN(parseFloat(val)) && isFinite(val);
|
|
20
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["isNumber","val","isNaN","parseFloat","isFinite","insertSnackBar","message","prevSnacks","document","querySelectorAll","forEach","s","remove","newEl","createElement","className","el","vertical","horizontal","ReactDOM","render","body","appendChild","setTimeout","defaultECR","index","Inline","create","type","isVoid","data","defaultDIB","opts","duplicates","options","value","defaultIDD","object","getDefaultElement"],"sources":["../../../src/plugins/respArea/utils.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport Snackbar from '@material-ui/core/Snackbar';\n\nexport const isNumber = val => !isNaN(parseFloat(val)) && isFinite(val);\n\nexport const insertSnackBar = message => {\n const prevSnacks = document.querySelectorAll('.response-area-alert');\n\n prevSnacks.forEach(s => s.remove());\n\n const newEl = document.createElement('div');\n\n newEl.className = 'response-area-alert';\n\n const el = (\n <Snackbar\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n open={true}\n ContentProps={{\n 'aria-describedby': 'message-id'\n }}\n message={<span id=\"message-id\">{message}</span>}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n\n setTimeout(() => {\n newEl.remove();\n }, 2000);\n};\n\nexport const defaultECR = index =>\n Inline.create({\n type: 'explicit_constructed_response',\n isVoid: true,\n data: {\n index\n }\n });\n\nexport const defaultDIB = (opts, index) =>\n Inline.create({\n type: 'drag_in_the_blank',\n isVoid: true,\n data: {\n index,\n duplicates: opts.options.duplicates,\n value: null\n }\n });\n\nexport const defaultIDD = index =>\n Inline.create({\n object: 'inline',\n type: 'inline_dropdown',\n isVoid: true,\n data: {\n index\n }\n });\n\nexport const getDefaultElement = (opts, index) => {\n switch (opts.type) {\n case 'explicit-constructed-response':\n return defaultECR(index);\n case 'drag-in-the-blank':\n return defaultDIB(opts, index);\n default:\n // inline-dropdown\n return defaultIDD(index);\n }\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","names":["isNumber","val","isNaN","parseFloat","isFinite","insertSnackBar","message","prevSnacks","document","querySelectorAll","forEach","s","remove","newEl","createElement","className","el","vertical","horizontal","ReactDOM","render","body","appendChild","setTimeout","defaultECR","index","Inline","create","type","isVoid","data","defaultDIB","opts","duplicates","options","value","defaultIDD","object","getDefaultElement"],"sources":["../../../src/plugins/respArea/utils.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport Snackbar from '@material-ui/core/Snackbar';\n\nexport const isNumber = val => !isNaN(parseFloat(val)) && isFinite(val);\n\nexport const insertSnackBar = message => {\n const prevSnacks = document.querySelectorAll('.response-area-alert');\n\n prevSnacks.forEach(s => s.remove());\n\n const newEl = document.createElement('div');\n\n newEl.className = 'response-area-alert';\n\n const el = (\n <Snackbar\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n open={true}\n ContentProps={{\n 'aria-describedby': 'message-id'\n }}\n message={<span id=\"message-id\">{message}</span>}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n\n setTimeout(() => {\n newEl.remove();\n }, 2000);\n};\n\nexport const defaultECR = index =>\n Inline.create({\n type: 'explicit_constructed_response',\n isVoid: true,\n data: {\n index\n }\n });\n\nexport const defaultDIB = (opts, index) =>\n Inline.create({\n type: 'drag_in_the_blank',\n isVoid: true,\n data: {\n index,\n duplicates: opts.options.duplicates,\n value: null\n }\n });\n\nexport const defaultIDD = index =>\n Inline.create({\n object: 'inline',\n type: 'inline_dropdown',\n isVoid: true,\n data: {\n index\n }\n });\n\nexport const getDefaultElement = (opts, index) => {\n switch (opts.type) {\n case 'explicit-constructed-response':\n return defaultECR(index);\n case 'drag-in-the-blank':\n return defaultDIB(opts, index);\n default:\n // inline-dropdown\n return defaultIDD(index);\n }\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAAAC,GAAG;EAAA,OAAI,CAACC,KAAK,CAACC,UAAU,CAACF,GAAD,CAAX,CAAN,IAA2BG,QAAQ,CAACH,GAAD,CAAvC;AAAA,CAApB;;;;AAEA,IAAMI,cAAc,GAAG,SAAjBA,cAAiB,CAAAC,OAAO,EAAI;EACvC,IAAMC,UAAU,GAAGC,QAAQ,CAACC,gBAAT,CAA0B,sBAA1B,CAAnB;EAEAF,UAAU,CAACG,OAAX,CAAmB,UAAAC,CAAC;IAAA,OAAIA,CAAC,CAACC,MAAF,EAAJ;EAAA,CAApB;EAEA,IAAMC,KAAK,GAAGL,QAAQ,CAACM,aAAT,CAAuB,KAAvB,CAAd;EAEAD,KAAK,CAACE,SAAN,GAAkB,qBAAlB;;EAEA,IAAMC,EAAE,gBACN,gCAAC,oBAAD;IACE,YAAY,EAAE;MAAEC,QAAQ,EAAE,KAAZ;MAAmBC,UAAU,EAAE;IAA/B,CADhB;IAEE,IAAI,EAAE,IAFR;IAGE,YAAY,EAAE;MACZ,oBAAoB;IADR,CAHhB;IAME,OAAO,eAAE;MAAM,EAAE,EAAC;IAAT,GAAuBZ,OAAvB;EANX,EADF;;EAWAa,oBAAA,CAASC,MAAT,CAAgBJ,EAAhB,EAAoBH,KAApB;;EAEAL,QAAQ,CAACa,IAAT,CAAcC,WAAd,CAA0BT,KAA1B;EAEAU,UAAU,CAAC,YAAM;IACfV,KAAK,CAACD,MAAN;EACD,CAFS,EAEP,IAFO,CAAV;AAGD,CA3BM;;;;AA6BA,IAAMY,UAAU,GAAG,SAAbA,UAAa,CAAAC,KAAK;EAAA,OAC7BC,aAAA,CAAOC,MAAP,CAAc;IACZC,IAAI,EAAE,+BADM;IAEZC,MAAM,EAAE,IAFI;IAGZC,IAAI,EAAE;MACJL,KAAK,EAALA;IADI;EAHM,CAAd,CAD6B;AAAA,CAAxB;;;;AASA,IAAMM,UAAU,GAAG,SAAbA,UAAa,CAACC,IAAD,EAAOP,KAAP;EAAA,OACxBC,aAAA,CAAOC,MAAP,CAAc;IACZC,IAAI,EAAE,mBADM;IAEZC,MAAM,EAAE,IAFI;IAGZC,IAAI,EAAE;MACJL,KAAK,EAALA,KADI;MAEJQ,UAAU,EAAED,IAAI,CAACE,OAAL,CAAaD,UAFrB;MAGJE,KAAK,EAAE;IAHH;EAHM,CAAd,CADwB;AAAA,CAAnB;;;;AAWA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAAAX,KAAK;EAAA,OAC7BC,aAAA,CAAOC,MAAP,CAAc;IACZU,MAAM,EAAE,QADI;IAEZT,IAAI,EAAE,iBAFM;IAGZC,MAAM,EAAE,IAHI;IAIZC,IAAI,EAAE;MACJL,KAAK,EAALA;IADI;EAJM,CAAd,CAD6B;AAAA,CAAxB;;;;AAUA,IAAMa,iBAAiB,GAAG,SAApBA,iBAAoB,CAACN,IAAD,EAAOP,KAAP,EAAiB;EAChD,QAAQO,IAAI,CAACJ,IAAb;IACE,KAAK,+BAAL;MACE,OAAOJ,UAAU,CAACC,KAAD,CAAjB;;IACF,KAAK,mBAAL;MACE,OAAOM,UAAU,CAACC,IAAD,EAAOP,KAAP,CAAjB;;IACF;MACE;MACA,OAAOW,UAAU,CAACX,KAAD,CAAjB;EAPJ;AASD,CAVM"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports.RemoveTable = exports.RemoveRow = exports.RemoveColumn = exports.AddRow = exports.AddColumn = void 0;
|
|
7
9
|
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
8
12
|
var _react = _interopRequireDefault(require("react"));
|
|
9
13
|
|
|
10
14
|
var _styles = require("@material-ui/core/styles");
|
|
11
15
|
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
13
|
-
|
|
14
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
15
|
-
|
|
16
16
|
var styles = {
|
|
17
17
|
icon: {
|
|
18
18
|
fill: 'grey',
|
|
@@ -37,31 +37,31 @@ var SvgIcon = function SvgIcon(Component) {
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
var AddRow = SvgIcon(function (props) {
|
|
40
|
-
return /*#__PURE__*/_react["default"].createElement("path",
|
|
40
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
41
41
|
d: "M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z"
|
|
42
42
|
}));
|
|
43
43
|
});
|
|
44
44
|
exports.AddRow = AddRow;
|
|
45
45
|
var RemoveRow = SvgIcon(function (props) {
|
|
46
|
-
return /*#__PURE__*/_react["default"].createElement("path",
|
|
46
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
47
47
|
d: "M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z"
|
|
48
48
|
}));
|
|
49
49
|
});
|
|
50
50
|
exports.RemoveRow = RemoveRow;
|
|
51
51
|
var AddColumn = SvgIcon(function (props) {
|
|
52
|
-
return /*#__PURE__*/_react["default"].createElement("path",
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
53
53
|
d: "M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z"
|
|
54
54
|
}));
|
|
55
55
|
});
|
|
56
56
|
exports.AddColumn = AddColumn;
|
|
57
57
|
var RemoveColumn = SvgIcon(function (props) {
|
|
58
|
-
return /*#__PURE__*/_react["default"].createElement("path",
|
|
58
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
59
59
|
d: "M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z"
|
|
60
60
|
}));
|
|
61
61
|
});
|
|
62
62
|
exports.RemoveColumn = RemoveColumn;
|
|
63
63
|
var RemoveTable = SvgIcon(function (props) {
|
|
64
|
-
return /*#__PURE__*/_react["default"].createElement("path",
|
|
64
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
65
65
|
d: "M15.46,15.88L16.88,14.46L19,16.59L21.12,14.46L22.54,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.54L15.46,20.12L17.59,18L15.46,15.88M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z"
|
|
66
66
|
}));
|
|
67
67
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["styles","icon","fill","SvgIcon","Component","withStyles","props","classes","AddRow","RemoveRow","AddColumn","RemoveColumn","RemoveTable"],"sources":["../../../../src/plugins/table/icons/index.jsx"],"sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = {\n icon: {\n fill: 'grey',\n '&:hover': {\n fill: 'black'\n }\n }\n};\n\nconst SvgIcon = Component => {\n return withStyles(styles)(props => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <Component className={props.classes.icon} />\n </svg>\n ));\n};\nexport const AddRow = SvgIcon(props => (\n <path\n {...props}\n d=\"M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z\"\n />\n));\n\nexport const RemoveRow = SvgIcon(props => (\n <path\n {...props}\n d=\"M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z\"\n />\n));\n\nexport const AddColumn = SvgIcon(props => (\n <path\n {...props}\n d=\"M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z\"\n />\n));\n\nexport const RemoveColumn = SvgIcon(props => (\n <path\n {...props}\n d=\"M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z\"\n />\n));\n\nexport const RemoveTable = SvgIcon(props => (\n <path\n {...props}\n d=\"M15.46,15.88L16.88,14.46L19,16.59L21.12,14.46L22.54,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.54L15.46,20.12L17.59,18L15.46,15.88M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z\"\n />\n));\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["styles","icon","fill","SvgIcon","Component","withStyles","props","classes","AddRow","RemoveRow","AddColumn","RemoveColumn","RemoveTable"],"sources":["../../../../src/plugins/table/icons/index.jsx"],"sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = {\n icon: {\n fill: 'grey',\n '&:hover': {\n fill: 'black'\n }\n }\n};\n\nconst SvgIcon = Component => {\n return withStyles(styles)(props => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <Component className={props.classes.icon} />\n </svg>\n ));\n};\nexport const AddRow = SvgIcon(props => (\n <path\n {...props}\n d=\"M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z\"\n />\n));\n\nexport const RemoveRow = SvgIcon(props => (\n <path\n {...props}\n d=\"M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z\"\n />\n));\n\nexport const AddColumn = SvgIcon(props => (\n <path\n {...props}\n d=\"M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z\"\n />\n));\n\nexport const RemoveColumn = SvgIcon(props => (\n <path\n {...props}\n d=\"M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z\"\n />\n));\n\nexport const RemoveTable = SvgIcon(props => (\n <path\n {...props}\n d=\"M15.46,15.88L16.88,14.46L19,16.59L21.12,14.46L22.54,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.54L15.46,20.12L17.59,18L15.46,15.88M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z\"\n />\n));\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,MAAM,GAAG;EACbC,IAAI,EAAE;IACJC,IAAI,EAAE,MADF;IAEJ,WAAW;MACTA,IAAI,EAAE;IADG;EAFP;AADO,CAAf;;AASA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAAC,SAAS,EAAI;EAC3B,OAAO,IAAAC,kBAAA,EAAWL,MAAX,EAAmB,UAAAM,KAAK;IAAA,oBAC7B;MACE,KAAK,EAAC,4BADR;MAEE,OAAO,EAAC,KAFV;MAGE,KAAK,EAAC,IAHR;MAIE,MAAM,EAAC,IAJT;MAKE,OAAO,EAAC;IALV,gBAOE,gCAAC,SAAD;MAAW,SAAS,EAAEA,KAAK,CAACC,OAAN,CAAcN;IAApC,EAPF,CAD6B;EAAA,CAAxB,CAAP;AAWD,CAZD;;AAaO,IAAMO,MAAM,GAAGL,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACjC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADiC;AAAA,CAAN,CAAtB;;AAOA,IAAMG,SAAS,GAAGN,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACpC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADoC;AAAA,CAAN,CAAzB;;AAOA,IAAMI,SAAS,GAAGP,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACpC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADoC;AAAA,CAAN,CAAzB;;AAOA,IAAMK,YAAY,GAAGR,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACvC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADuC;AAAA,CAAN,CAA5B;;AAOA,IAAMM,WAAW,GAAGT,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACtC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADsC;AAAA,CAAN,CAA3B"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports.serialization = exports.reactAttributes = exports.parseStyleString = exports.moveFocusToBeginningOfTable = exports["default"] = void 0;
|
|
7
9
|
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
8
14
|
var _react = _interopRequireDefault(require("react"));
|
|
9
15
|
|
|
10
16
|
var _slateEditTable = _interopRequireDefault(require("slate-edit-table"));
|
|
@@ -27,15 +33,9 @@ var _reactAttrConverter = _interopRequireDefault(require("react-attr-converter")
|
|
|
27
33
|
|
|
28
34
|
var _toStyle = require("to-style");
|
|
29
35
|
|
|
30
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
31
|
-
|
|
32
36
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
33
37
|
|
|
34
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
35
|
-
|
|
36
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
37
|
-
|
|
38
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
38
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
39
39
|
|
|
40
40
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:table');
|
|
41
41
|
var Table = (0, _styles.withStyles)(function () {
|
|
@@ -44,7 +44,7 @@ var Table = (0, _styles.withStyles)(function () {
|
|
|
44
44
|
};
|
|
45
45
|
})(function (props) {
|
|
46
46
|
var nodeAttributes = dataToAttributes(props.node.data);
|
|
47
|
-
return /*#__PURE__*/_react["default"].createElement("table",
|
|
47
|
+
return /*#__PURE__*/_react["default"].createElement("table", (0, _extends2["default"])({
|
|
48
48
|
className: props.classes.table
|
|
49
49
|
}, props.attributes, nodeAttributes, {
|
|
50
50
|
onFocus: props.onFocus,
|
|
@@ -79,7 +79,7 @@ var TableCell = (0, _styles.withStyles)(function () {
|
|
|
79
79
|
var Tag = props.node.data.get('header') ? 'th' : 'td';
|
|
80
80
|
var nodeAttributes = dataToAttributes(props.node.data);
|
|
81
81
|
delete nodeAttributes.header;
|
|
82
|
-
return /*#__PURE__*/_react["default"].createElement(Tag,
|
|
82
|
+
return /*#__PURE__*/_react["default"].createElement(Tag, (0, _extends2["default"])({}, props.attributes, nodeAttributes, {
|
|
83
83
|
colSpan: props.node.data.get('colspan'),
|
|
84
84
|
className: props.classes[Tag],
|
|
85
85
|
onFocus: props.onFocus,
|
|
@@ -258,7 +258,7 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
258
258
|
var Node = function Node(props) {
|
|
259
259
|
switch (props.node.type) {
|
|
260
260
|
case 'table':
|
|
261
|
-
return /*#__PURE__*/_react["default"].createElement(Table,
|
|
261
|
+
return /*#__PURE__*/_react["default"].createElement(Table, (0, _extends2["default"])({}, props, {
|
|
262
262
|
onFocus: opts.onFocus,
|
|
263
263
|
onBlur: opts.onBlur
|
|
264
264
|
}));
|
|
@@ -267,7 +267,7 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
267
267
|
return /*#__PURE__*/_react["default"].createElement(TableRow, props);
|
|
268
268
|
|
|
269
269
|
case 'table_cell':
|
|
270
|
-
return /*#__PURE__*/_react["default"].createElement(TableCell,
|
|
270
|
+
return /*#__PURE__*/_react["default"].createElement(TableCell, (0, _extends2["default"])({}, props, {
|
|
271
271
|
onFocus: opts.onFocus,
|
|
272
272
|
onBlur: opts.onBlur
|
|
273
273
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["log","debug","Table","withStyles","table","props","nodeAttributes","dataToAttributes","node","data","classes","attributes","onFocus","onBlur","children","propTypes","PropTypes","object","func","SlatePropTypes","oneOfType","arrayOf","isRequired","TableRow","TableCell","td","minWidth","Tag","get","header","moveFocusToBeginningOfTable","change","addedTable","value","document","findDescendant","d","collapseToStartOf","update","remove","setNodeByKey","key","opts","toolbarPlugins","core","EditTable","typeContent","schema","blocks","Object","keys","forEach","block","parent","nodes","types","type","objects","utils","getTableBlock","containerNode","getDescendant","ancestors","getAncestors","push","findLast","p","createTableWithOptions","row","columns","extra","createdTable","createTable","newTable","Block","create","toJSON","toolbar","icon","onClick","onChange","border","insertBlock","supports","isSelectionInTable","customToolbar","onToolbarDone","tableBlock","hasBorder","addRow","changes","insertRow","addColumn","insertColumn","removeRow","removeColumn","removeTable","toggleBorder","set","onDone","Tb","c","Node","normalizeNode","tableAdded","nodeToSearch","getParent","shouldAddTextAfterNode","indexToNotHaveTableOn","size","indexOfLastTable","findLastIndex","tableJSON","removeNodeByKey","newBlock","withoutNormalization","prevText","getPreviousText","moveFocusTo","text","length","moveAnchorTo","renderNode","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","toStyleObject","camelize","addUnits","attributesToMap","el","acc","attribute","getAttribute","styleString","reactStyleObject","reduce","v","name","convert","cellAttributes","serialization","deserialize","next","tag","tagName","toLowerCase","Array","from","childNodes","serialize"],"sources":["../../../src/plugins/table/index.jsx"],"sourcesContent":["import React from 'react';\nimport EditTable from 'slate-edit-table';\nimport { Block } from 'slate';\nimport debug from 'debug';\nimport GridOn from '@material-ui/icons/GridOn';\nimport TableToolbar from './table-toolbar';\nimport PropTypes from 'prop-types';\nimport SlatePropTypes from 'slate-prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport convert from 'react-attr-converter';\nimport { object as toStyleObject } from 'to-style';\n\nconst log = debug('@pie-lib:editable-html:plugins:table');\n\nconst Table = withStyles(() => ({\n table: {}\n}))(props => {\n const nodeAttributes = dataToAttributes(props.node.data);\n\n return (\n <table\n className={props.classes.table}\n {...props.attributes}\n {...nodeAttributes}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n <tbody>{props.children}</tbody>\n </table>\n );\n});\n\nTable.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n node: SlatePropTypes.node,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nconst TableRow = props => <tr {...props.attributes}>{props.children}</tr>;\n\nTableRow.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nconst TableCell = withStyles(() => ({\n td: {\n minWidth: '25px'\n }\n}))(props => {\n const Tag = props.node.data.get('header') ? 'th' : 'td';\n\n const nodeAttributes = dataToAttributes(props.node.data);\n delete nodeAttributes.header;\n\n return (\n <Tag\n {...props.attributes}\n {...nodeAttributes}\n colSpan={props.node.data.get('colspan')}\n className={props.classes[Tag]}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n {props.children}\n </Tag>\n );\n});\n\nTableCell.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nexport const moveFocusToBeginningOfTable = change => {\n const addedTable = change.value.document.findDescendant(d => !!d.data && !!d.data.get('newTable'));\n\n if (!addedTable) {\n return;\n }\n\n change.collapseToStartOf(addedTable);\n\n const update = addedTable.data.remove('newTable');\n\n change.setNodeByKey(addedTable.key, { data: update });\n};\n\nexport default (opts, toolbarPlugins /* : {toolbar: {}}[] */) => {\n const core = EditTable({\n typeContent: 'div'\n });\n\n // fix outdated schema\n\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 if (block.nodes[0].types) {\n block.nodes[0] = {\n type: block.nodes[0].types[0]\n };\n }\n\n if (block.nodes[0].objects) {\n block.nodes[0] = {\n object: block.nodes[0].objects[0]\n };\n }\n\n block.parent = {\n type: block.parent.types[0]\n };\n } else {\n block.nodes[0] = { type: block.nodes[0].types[0] };\n }\n });\n }\n\n core.utils.getTableBlock = (containerNode, key) => {\n const node = containerNode.getDescendant(key);\n const ancestors = containerNode.getAncestors(key).push(node);\n return ancestors.findLast(p => p.type === 'table');\n };\n\n core.utils.createTableWithOptions = (row, columns, extra) => {\n const createdTable = core.utils.createTable(row, columns);\n const newTable = Block.create({\n ...createdTable.toJSON(),\n ...extra\n });\n\n return newTable;\n };\n\n core.toolbar = {\n icon: <GridOn />,\n onClick: (value, onChange) => {\n log('insert table');\n const change = value.change();\n const newTable = core.utils.createTableWithOptions(2, 2, {\n data: {\n border: '1',\n newTable: true\n }\n });\n\n change.insertBlock(newTable);\n\n moveFocusToBeginningOfTable(change);\n onChange(change);\n },\n supports: (node, value) =>\n node && node.object === 'block' && core.utils.isSelectionInTable(value),\n /**\n * Note - the node may not be a table node - it may be a node inside a table.\n */\n customToolbar: (node, value, onToolbarDone) => {\n log('[customToolbar] node.data: ', node.data);\n\n const tableBlock = core.utils.getTableBlock(value.document, node.key);\n log('[customToolbar] tableBlock: ', tableBlock);\n\n const hasBorder = () =>\n tableBlock.data.get('border') && tableBlock.data.get('border') !== '0';\n const addRow = () => {\n const change = core.changes.insertRow(value.change());\n onToolbarDone(change, false);\n };\n\n const addColumn = () => {\n const change = core.changes.insertColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeRow = () => {\n const change = core.changes.removeRow(value.change());\n onToolbarDone(change, false);\n };\n\n const removeColumn = () => {\n const change = core.changes.removeColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeTable = () => {\n const change = core.changes.removeTable(value.change());\n onToolbarDone(change, false);\n };\n\n const toggleBorder = () => {\n const { data } = tableBlock;\n const update = data.set('border', hasBorder() ? '0' : '1');\n log('[toggleBorder] update: ', update);\n const change = value.change().setNodeByKey(tableBlock.key, { data: update });\n onToolbarDone(change, false);\n };\n\n const onDone = () => {\n log('[onDone] call onToolbarDone...');\n onToolbarDone(null, true);\n };\n\n const Tb = () => (\n <TableToolbar\n plugins={toolbarPlugins}\n onChange={c => onToolbarDone(c, false)}\n value={value}\n onAddRow={addRow}\n onRemoveRow={removeRow}\n onAddColumn={addColumn}\n onRemoveColumn={removeColumn}\n onRemoveTable={removeTable}\n hasBorder={hasBorder()}\n onToggleBorder={toggleBorder}\n onDone={onDone}\n />\n );\n return Tb;\n }\n };\n\n const Node = props => {\n switch (props.node.type) {\n case 'table':\n return <Table {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n case 'table_row':\n return <TableRow {...props} />;\n case 'table_cell':\n return <TableCell {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n default:\n return null;\n }\n };\n Node.propTypes = {\n node: PropTypes.object\n };\n\n core.normalizeNode = node => {\n if (node.object !== 'document') {\n return;\n }\n\n const tableAdded = node.findDescendant(d => d.data && d.data.get('newTable'));\n\n if (!tableAdded) {\n return;\n }\n\n const nodeToSearch = node.getParent(tableAdded.key) || node;\n let shouldAddTextAfterNode = false;\n const indexToNotHaveTableOn = nodeToSearch.nodes.size - 1;\n const indexOfLastTable = nodeToSearch.nodes.findLastIndex(d => d.type === 'table');\n\n // if the last table in the document is of type table, we need to do the change\n if (indexOfLastTable === indexToNotHaveTableOn) {\n shouldAddTextAfterNode = true;\n }\n\n if (!shouldAddTextAfterNode) {\n return;\n }\n\n return change => {\n if (shouldAddTextAfterNode) {\n const tableJSON = tableAdded.toJSON();\n\n // we remove the table node because otherwise we can't add the empty block after it\n // we need a block that contains text in order to do it\n change.removeNodeByKey(tableAdded.key);\n\n const newBlock = Block.create({\n object: 'block',\n type: 'div'\n });\n\n // we add an empty block but that it's going to be normalized\n // because it will add the empty text to it like it should\n change.insertBlock(newBlock);\n\n change.withoutNormalization(() => {\n // we do these changes without normalization\n\n // we get the text previous to the new block added\n const prevText = change.value.document.getPreviousText(newBlock.key);\n\n if (prevText) {\n // we move focus to the previous text\n change\n .moveFocusTo(prevText.key, prevText.text.length)\n .moveAnchorTo(prevText.key, prevText.text.length);\n }\n\n // we insert the table block between the first block with text and the last block with text\n change.insertBlock({\n ...tableJSON,\n data: {\n ...tableJSON.data,\n newTable: true\n }\n });\n\n moveFocusToBeginningOfTable(change);\n });\n }\n };\n };\n\n core.renderNode = Node;\n\n return core;\n};\n\nexport const parseStyleString = s => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const reactAttributes = o => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = el => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst dataToAttributes = data => {\n if (!data || !data.get) {\n return {};\n }\n\n return data.reduce((acc, v, name) => {\n if (v) {\n acc[convert(name)] = v;\n }\n return acc;\n }, {});\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\nconst cellAttributes = ['colspan', 'rowspan', 'class', 'style'];\n\nexport const serialization = {\n deserialize(el, next) {\n const tag = el.tagName.toLowerCase();\n\n switch (tag) {\n case 'table': {\n const children =\n el.children.length === 1 && el.children[0].tagName.toLowerCase() === 'tbody'\n ? el.children[0].children\n : el.children;\n const c = Array.from(children);\n\n return {\n object: 'block',\n type: 'table',\n nodes: next(c),\n data: attributes.reduce(attributesToMap(el), {})\n };\n }\n case 'th': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(el.childNodes),\n data: cellAttributes.reduce(attributesToMap(el), { header: true })\n };\n }\n case 'tr': {\n return {\n object: 'block',\n type: 'table_row',\n nodes: next(Array.from(el.children))\n };\n }\n case 'td': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(Array.from(el.childNodes)),\n data: cellAttributes.reduce(attributesToMap(el), { header: false })\n };\n }\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') {\n return;\n }\n\n switch (object.type) {\n case 'table': {\n const attributes = dataToAttributes(object.data);\n return (\n <table {...attributes}>\n <tbody>{children}</tbody>\n </table>\n );\n }\n case 'table_row': {\n return <tr>{children}</tr>;\n }\n case 'table_cell': {\n const attributes = dataToAttributes(object.data);\n delete attributes.header;\n if (object.data.get('header')) {\n return <th {...attributes}>{children}</th>;\n } else {\n return <td {...attributes}>{children}</td>;\n }\n }\n }\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","Table","withStyles","table","props","nodeAttributes","dataToAttributes","node","data","classes","attributes","onFocus","onBlur","children","propTypes","PropTypes","object","func","SlatePropTypes","oneOfType","arrayOf","isRequired","TableRow","TableCell","td","minWidth","Tag","get","header","moveFocusToBeginningOfTable","change","addedTable","value","document","findDescendant","d","collapseToStartOf","update","remove","setNodeByKey","key","opts","toolbarPlugins","core","EditTable","typeContent","schema","blocks","Object","keys","forEach","block","parent","nodes","types","type","objects","utils","getTableBlock","containerNode","getDescendant","ancestors","getAncestors","push","findLast","p","createTableWithOptions","row","columns","extra","createdTable","createTable","newTable","Block","create","toJSON","toolbar","icon","onClick","onChange","border","insertBlock","supports","isSelectionInTable","customToolbar","onToolbarDone","tableBlock","hasBorder","addRow","changes","insertRow","addColumn","insertColumn","removeRow","removeColumn","removeTable","toggleBorder","set","onDone","Tb","c","Node","normalizeNode","tableAdded","nodeToSearch","getParent","shouldAddTextAfterNode","indexToNotHaveTableOn","size","indexOfLastTable","findLastIndex","tableJSON","removeNodeByKey","newBlock","withoutNormalization","prevText","getPreviousText","moveFocusTo","text","length","moveAnchorTo","renderNode","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","toStyleObject","camelize","addUnits","attributesToMap","el","acc","attribute","getAttribute","styleString","reactStyleObject","reduce","v","name","convert","cellAttributes","serialization","deserialize","next","tag","tagName","toLowerCase","Array","from","childNodes","serialize"],"sources":["../../../src/plugins/table/index.jsx"],"sourcesContent":["import React from 'react';\nimport EditTable from 'slate-edit-table';\nimport { Block } from 'slate';\nimport debug from 'debug';\nimport GridOn from '@material-ui/icons/GridOn';\nimport TableToolbar from './table-toolbar';\nimport PropTypes from 'prop-types';\nimport SlatePropTypes from 'slate-prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport convert from 'react-attr-converter';\nimport { object as toStyleObject } from 'to-style';\n\nconst log = debug('@pie-lib:editable-html:plugins:table');\n\nconst Table = withStyles(() => ({\n table: {}\n}))(props => {\n const nodeAttributes = dataToAttributes(props.node.data);\n\n return (\n <table\n className={props.classes.table}\n {...props.attributes}\n {...nodeAttributes}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n <tbody>{props.children}</tbody>\n </table>\n );\n});\n\nTable.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n node: SlatePropTypes.node,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nconst TableRow = props => <tr {...props.attributes}>{props.children}</tr>;\n\nTableRow.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nconst TableCell = withStyles(() => ({\n td: {\n minWidth: '25px'\n }\n}))(props => {\n const Tag = props.node.data.get('header') ? 'th' : 'td';\n\n const nodeAttributes = dataToAttributes(props.node.data);\n delete nodeAttributes.header;\n\n return (\n <Tag\n {...props.attributes}\n {...nodeAttributes}\n colSpan={props.node.data.get('colspan')}\n className={props.classes[Tag]}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n {props.children}\n </Tag>\n );\n});\n\nTableCell.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nexport const moveFocusToBeginningOfTable = change => {\n const addedTable = change.value.document.findDescendant(d => !!d.data && !!d.data.get('newTable'));\n\n if (!addedTable) {\n return;\n }\n\n change.collapseToStartOf(addedTable);\n\n const update = addedTable.data.remove('newTable');\n\n change.setNodeByKey(addedTable.key, { data: update });\n};\n\nexport default (opts, toolbarPlugins /* : {toolbar: {}}[] */) => {\n const core = EditTable({\n typeContent: 'div'\n });\n\n // fix outdated schema\n\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 if (block.nodes[0].types) {\n block.nodes[0] = {\n type: block.nodes[0].types[0]\n };\n }\n\n if (block.nodes[0].objects) {\n block.nodes[0] = {\n object: block.nodes[0].objects[0]\n };\n }\n\n block.parent = {\n type: block.parent.types[0]\n };\n } else {\n block.nodes[0] = { type: block.nodes[0].types[0] };\n }\n });\n }\n\n core.utils.getTableBlock = (containerNode, key) => {\n const node = containerNode.getDescendant(key);\n const ancestors = containerNode.getAncestors(key).push(node);\n return ancestors.findLast(p => p.type === 'table');\n };\n\n core.utils.createTableWithOptions = (row, columns, extra) => {\n const createdTable = core.utils.createTable(row, columns);\n const newTable = Block.create({\n ...createdTable.toJSON(),\n ...extra\n });\n\n return newTable;\n };\n\n core.toolbar = {\n icon: <GridOn />,\n onClick: (value, onChange) => {\n log('insert table');\n const change = value.change();\n const newTable = core.utils.createTableWithOptions(2, 2, {\n data: {\n border: '1',\n newTable: true\n }\n });\n\n change.insertBlock(newTable);\n\n moveFocusToBeginningOfTable(change);\n onChange(change);\n },\n supports: (node, value) =>\n node && node.object === 'block' && core.utils.isSelectionInTable(value),\n /**\n * Note - the node may not be a table node - it may be a node inside a table.\n */\n customToolbar: (node, value, onToolbarDone) => {\n log('[customToolbar] node.data: ', node.data);\n\n const tableBlock = core.utils.getTableBlock(value.document, node.key);\n log('[customToolbar] tableBlock: ', tableBlock);\n\n const hasBorder = () =>\n tableBlock.data.get('border') && tableBlock.data.get('border') !== '0';\n const addRow = () => {\n const change = core.changes.insertRow(value.change());\n onToolbarDone(change, false);\n };\n\n const addColumn = () => {\n const change = core.changes.insertColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeRow = () => {\n const change = core.changes.removeRow(value.change());\n onToolbarDone(change, false);\n };\n\n const removeColumn = () => {\n const change = core.changes.removeColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeTable = () => {\n const change = core.changes.removeTable(value.change());\n onToolbarDone(change, false);\n };\n\n const toggleBorder = () => {\n const { data } = tableBlock;\n const update = data.set('border', hasBorder() ? '0' : '1');\n log('[toggleBorder] update: ', update);\n const change = value.change().setNodeByKey(tableBlock.key, { data: update });\n onToolbarDone(change, false);\n };\n\n const onDone = () => {\n log('[onDone] call onToolbarDone...');\n onToolbarDone(null, true);\n };\n\n const Tb = () => (\n <TableToolbar\n plugins={toolbarPlugins}\n onChange={c => onToolbarDone(c, false)}\n value={value}\n onAddRow={addRow}\n onRemoveRow={removeRow}\n onAddColumn={addColumn}\n onRemoveColumn={removeColumn}\n onRemoveTable={removeTable}\n hasBorder={hasBorder()}\n onToggleBorder={toggleBorder}\n onDone={onDone}\n />\n );\n return Tb;\n }\n };\n\n const Node = props => {\n switch (props.node.type) {\n case 'table':\n return <Table {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n case 'table_row':\n return <TableRow {...props} />;\n case 'table_cell':\n return <TableCell {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n default:\n return null;\n }\n };\n Node.propTypes = {\n node: PropTypes.object\n };\n\n core.normalizeNode = node => {\n if (node.object !== 'document') {\n return;\n }\n\n const tableAdded = node.findDescendant(d => d.data && d.data.get('newTable'));\n\n if (!tableAdded) {\n return;\n }\n\n const nodeToSearch = node.getParent(tableAdded.key) || node;\n let shouldAddTextAfterNode = false;\n const indexToNotHaveTableOn = nodeToSearch.nodes.size - 1;\n const indexOfLastTable = nodeToSearch.nodes.findLastIndex(d => d.type === 'table');\n\n // if the last table in the document is of type table, we need to do the change\n if (indexOfLastTable === indexToNotHaveTableOn) {\n shouldAddTextAfterNode = true;\n }\n\n if (!shouldAddTextAfterNode) {\n return;\n }\n\n return change => {\n if (shouldAddTextAfterNode) {\n const tableJSON = tableAdded.toJSON();\n\n // we remove the table node because otherwise we can't add the empty block after it\n // we need a block that contains text in order to do it\n change.removeNodeByKey(tableAdded.key);\n\n const newBlock = Block.create({\n object: 'block',\n type: 'div'\n });\n\n // we add an empty block but that it's going to be normalized\n // because it will add the empty text to it like it should\n change.insertBlock(newBlock);\n\n change.withoutNormalization(() => {\n // we do these changes without normalization\n\n // we get the text previous to the new block added\n const prevText = change.value.document.getPreviousText(newBlock.key);\n\n if (prevText) {\n // we move focus to the previous text\n change\n .moveFocusTo(prevText.key, prevText.text.length)\n .moveAnchorTo(prevText.key, prevText.text.length);\n }\n\n // we insert the table block between the first block with text and the last block with text\n change.insertBlock({\n ...tableJSON,\n data: {\n ...tableJSON.data,\n newTable: true\n }\n });\n\n moveFocusToBeginningOfTable(change);\n });\n }\n };\n };\n\n core.renderNode = Node;\n\n return core;\n};\n\nexport const parseStyleString = s => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const reactAttributes = o => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = el => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst dataToAttributes = data => {\n if (!data || !data.get) {\n return {};\n }\n\n return data.reduce((acc, v, name) => {\n if (v) {\n acc[convert(name)] = v;\n }\n return acc;\n }, {});\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\nconst cellAttributes = ['colspan', 'rowspan', 'class', 'style'];\n\nexport const serialization = {\n deserialize(el, next) {\n const tag = el.tagName.toLowerCase();\n\n switch (tag) {\n case 'table': {\n const children =\n el.children.length === 1 && el.children[0].tagName.toLowerCase() === 'tbody'\n ? el.children[0].children\n : el.children;\n const c = Array.from(children);\n\n return {\n object: 'block',\n type: 'table',\n nodes: next(c),\n data: attributes.reduce(attributesToMap(el), {})\n };\n }\n case 'th': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(el.childNodes),\n data: cellAttributes.reduce(attributesToMap(el), { header: true })\n };\n }\n case 'tr': {\n return {\n object: 'block',\n type: 'table_row',\n nodes: next(Array.from(el.children))\n };\n }\n case 'td': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(Array.from(el.childNodes)),\n data: cellAttributes.reduce(attributesToMap(el), { header: false })\n };\n }\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') {\n return;\n }\n\n switch (object.type) {\n case 'table': {\n const attributes = dataToAttributes(object.data);\n return (\n <table {...attributes}>\n <tbody>{children}</tbody>\n </table>\n );\n }\n case 'table_row': {\n return <tr>{children}</tr>;\n }\n case 'table_cell': {\n const attributes = dataToAttributes(object.data);\n delete attributes.header;\n if (object.data.get('header')) {\n return <th {...attributes}>{children}</th>;\n } else {\n return <td {...attributes}>{children}</td>;\n }\n }\n }\n }\n};\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,IAAAC,iBAAA,EAAM,sCAAN,CAAZ;AAEA,IAAMC,KAAK,GAAG,IAAAC,kBAAA,EAAW;EAAA,OAAO;IAC9BC,KAAK,EAAE;EADuB,CAAP;AAAA,CAAX,EAEV,UAAAC,KAAK,EAAI;EACX,IAAMC,cAAc,GAAGC,gBAAgB,CAACF,KAAK,CAACG,IAAN,CAAWC,IAAZ,CAAvC;EAEA,oBACE;IACE,SAAS,EAAEJ,KAAK,CAACK,OAAN,CAAcN;EAD3B,GAEMC,KAAK,CAACM,UAFZ,EAGML,cAHN;IAIE,OAAO,EAAED,KAAK,CAACO,OAJjB;IAKE,MAAM,EAAEP,KAAK,CAACQ;EALhB,iBAOE,+CAAQR,KAAK,CAACS,QAAd,CAPF,CADF;AAWD,CAhBa,CAAd;AAkBAZ,KAAK,CAACa,SAAN,GAAkB;EAChBJ,UAAU,EAAEK,qBAAA,CAAUC,MADN;EAEhBL,OAAO,EAAEI,qBAAA,CAAUE,IAFH;EAGhBL,MAAM,EAAEG,qBAAA,CAAUE,IAHF;EAIhBV,IAAI,EAAEW,0BAAA,CAAeX,IAJL;EAKhBM,QAAQ,EAAEE,qBAAA,CAAUI,SAAV,CAAoB,CAACJ,qBAAA,CAAUK,OAAV,CAAkBL,qBAAA,CAAUR,IAA5B,CAAD,EAAoCQ,qBAAA,CAAUR,IAA9C,CAApB,EAAyEc;AALnE,CAAlB;;AAQA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAAlB,KAAK;EAAA,oBAAI,sCAAQA,KAAK,CAACM,UAAd,EAA2BN,KAAK,CAACS,QAAjC,CAAJ;AAAA,CAAtB;;AAEAS,QAAQ,CAACR,SAAT,GAAqB;EACnBJ,UAAU,EAAEK,qBAAA,CAAUC,MADH;EAEnBL,OAAO,EAAEI,qBAAA,CAAUE,IAFA;EAGnBL,MAAM,EAAEG,qBAAA,CAAUE,IAHC;EAInBJ,QAAQ,EAAEE,qBAAA,CAAUI,SAAV,CAAoB,CAACJ,qBAAA,CAAUK,OAAV,CAAkBL,qBAAA,CAAUR,IAA5B,CAAD,EAAoCQ,qBAAA,CAAUR,IAA9C,CAApB,EAAyEc;AAJhE,CAArB;AAOA,IAAME,SAAS,GAAG,IAAArB,kBAAA,EAAW;EAAA,OAAO;IAClCsB,EAAE,EAAE;MACFC,QAAQ,EAAE;IADR;EAD8B,CAAP;AAAA,CAAX,EAId,UAAArB,KAAK,EAAI;EACX,IAAMsB,GAAG,GAAGtB,KAAK,CAACG,IAAN,CAAWC,IAAX,CAAgBmB,GAAhB,CAAoB,QAApB,IAAgC,IAAhC,GAAuC,IAAnD;EAEA,IAAMtB,cAAc,GAAGC,gBAAgB,CAACF,KAAK,CAACG,IAAN,CAAWC,IAAZ,CAAvC;EACA,OAAOH,cAAc,CAACuB,MAAtB;EAEA,oBACE,gCAAC,GAAD,gCACMxB,KAAK,CAACM,UADZ,EAEML,cAFN;IAGE,OAAO,EAAED,KAAK,CAACG,IAAN,CAAWC,IAAX,CAAgBmB,GAAhB,CAAoB,SAApB,CAHX;IAIE,SAAS,EAAEvB,KAAK,CAACK,OAAN,CAAciB,GAAd,CAJb;IAKE,OAAO,EAAEtB,KAAK,CAACO,OALjB;IAME,MAAM,EAAEP,KAAK,CAACQ;EANhB,IAQGR,KAAK,CAACS,QART,CADF;AAYD,CAtBiB,CAAlB;AAwBAU,SAAS,CAACT,SAAV,GAAsB;EACpBJ,UAAU,EAAEK,qBAAA,CAAUC,MADF;EAEpBL,OAAO,EAAEI,qBAAA,CAAUE,IAFC;EAGpBL,MAAM,EAAEG,qBAAA,CAAUE,IAHE;EAIpBJ,QAAQ,EAAEE,qBAAA,CAAUI,SAAV,CAAoB,CAACJ,qBAAA,CAAUK,OAAV,CAAkBL,qBAAA,CAAUR,IAA5B,CAAD,EAAoCQ,qBAAA,CAAUR,IAA9C,CAApB,EAAyEc;AAJ/D,CAAtB;;AAOO,IAAMQ,2BAA2B,GAAG,SAA9BA,2BAA8B,CAAAC,MAAM,EAAI;EACnD,IAAMC,UAAU,GAAGD,MAAM,CAACE,KAAP,CAAaC,QAAb,CAAsBC,cAAtB,CAAqC,UAAAC,CAAC;IAAA,OAAI,CAAC,CAACA,CAAC,CAAC3B,IAAJ,IAAY,CAAC,CAAC2B,CAAC,CAAC3B,IAAF,CAAOmB,GAAP,CAAW,UAAX,CAAlB;EAAA,CAAtC,CAAnB;;EAEA,IAAI,CAACI,UAAL,EAAiB;IACf;EACD;;EAEDD,MAAM,CAACM,iBAAP,CAAyBL,UAAzB;EAEA,IAAMM,MAAM,GAAGN,UAAU,CAACvB,IAAX,CAAgB8B,MAAhB,CAAuB,UAAvB,CAAf;EAEAR,MAAM,CAACS,YAAP,CAAoBR,UAAU,CAACS,GAA/B,EAAoC;IAAEhC,IAAI,EAAE6B;EAAR,CAApC;AACD,CAZM;;;;eAcQ,kBAACI,IAAD,EAAOC;AAAe;AAAtB,EAAmD;EAChE,IAAMC,IAAI,GAAG,IAAAC,0BAAA,EAAU;IACrBC,WAAW,EAAE;EADQ,CAAV,CAAb,CADgE,CAKhE;;EAEA,IAAIF,IAAI,CAACG,MAAL,IAAeH,IAAI,CAACG,MAAL,CAAYC,MAA/B,EAAuC;IACrCC,MAAM,CAACC,IAAP,CAAYN,IAAI,CAACG,MAAL,CAAYC,MAAxB,EAAgCG,OAAhC,CAAwC,UAAAV,GAAG,EAAI;MAC7C,IAAMW,KAAK,GAAGR,IAAI,CAACG,MAAL,CAAYC,MAAZ,CAAmBP,GAAnB,CAAd;;MAEA,IAAIW,KAAK,CAACC,MAAV,EAAkB;QAChB,IAAID,KAAK,CAACE,KAAN,CAAY,CAAZ,EAAeC,KAAnB,EAA0B;UACxBH,KAAK,CAACE,KAAN,CAAY,CAAZ,IAAiB;YACfE,IAAI,EAAEJ,KAAK,CAACE,KAAN,CAAY,CAAZ,EAAeC,KAAf,CAAqB,CAArB;UADS,CAAjB;QAGD;;QAED,IAAIH,KAAK,CAACE,KAAN,CAAY,CAAZ,EAAeG,OAAnB,EAA4B;UAC1BL,KAAK,CAACE,KAAN,CAAY,CAAZ,IAAiB;YACfrC,MAAM,EAAEmC,KAAK,CAACE,KAAN,CAAY,CAAZ,EAAeG,OAAf,CAAuB,CAAvB;UADO,CAAjB;QAGD;;QAEDL,KAAK,CAACC,MAAN,GAAe;UACbG,IAAI,EAAEJ,KAAK,CAACC,MAAN,CAAaE,KAAb,CAAmB,CAAnB;QADO,CAAf;MAGD,CAhBD,MAgBO;QACLH,KAAK,CAACE,KAAN,CAAY,CAAZ,IAAiB;UAAEE,IAAI,EAAEJ,KAAK,CAACE,KAAN,CAAY,CAAZ,EAAeC,KAAf,CAAqB,CAArB;QAAR,CAAjB;MACD;IACF,CAtBD;EAuBD;;EAEDX,IAAI,CAACc,KAAL,CAAWC,aAAX,GAA2B,UAACC,aAAD,EAAgBnB,GAAhB,EAAwB;IACjD,IAAMjC,IAAI,GAAGoD,aAAa,CAACC,aAAd,CAA4BpB,GAA5B,CAAb;IACA,IAAMqB,SAAS,GAAGF,aAAa,CAACG,YAAd,CAA2BtB,GAA3B,EAAgCuB,IAAhC,CAAqCxD,IAArC,CAAlB;IACA,OAAOsD,SAAS,CAACG,QAAV,CAAmB,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACV,IAAF,KAAW,OAAf;IAAA,CAApB,CAAP;EACD,CAJD;;EAMAZ,IAAI,CAACc,KAAL,CAAWS,sBAAX,GAAoC,UAACC,GAAD,EAAMC,OAAN,EAAeC,KAAf,EAAyB;IAC3D,IAAMC,YAAY,GAAG3B,IAAI,CAACc,KAAL,CAAWc,WAAX,CAAuBJ,GAAvB,EAA4BC,OAA5B,CAArB;;IACA,IAAMI,QAAQ,GAAGC,YAAA,CAAMC,MAAN,iCACZJ,YAAY,CAACK,MAAb,EADY,GAEZN,KAFY,EAAjB;;IAKA,OAAOG,QAAP;EACD,CARD;;EAUA7B,IAAI,CAACiC,OAAL,GAAe;IACbC,IAAI,eAAE,gCAAC,kBAAD,OADO;IAEbC,OAAO,EAAE,iBAAC9C,KAAD,EAAQ+C,QAAR,EAAqB;MAC5BhF,GAAG,CAAC,cAAD,CAAH;MACA,IAAM+B,MAAM,GAAGE,KAAK,CAACF,MAAN,EAAf;MACA,IAAM0C,QAAQ,GAAG7B,IAAI,CAACc,KAAL,CAAWS,sBAAX,CAAkC,CAAlC,EAAqC,CAArC,EAAwC;QACvD1D,IAAI,EAAE;UACJwE,MAAM,EAAE,GADJ;UAEJR,QAAQ,EAAE;QAFN;MADiD,CAAxC,CAAjB;MAOA1C,MAAM,CAACmD,WAAP,CAAmBT,QAAnB;MAEA3C,2BAA2B,CAACC,MAAD,CAA3B;MACAiD,QAAQ,CAACjD,MAAD,CAAR;IACD,CAhBY;IAiBboD,QAAQ,EAAE,kBAAC3E,IAAD,EAAOyB,KAAP;MAAA,OACRzB,IAAI,IAAIA,IAAI,CAACS,MAAL,KAAgB,OAAxB,IAAmC2B,IAAI,CAACc,KAAL,CAAW0B,kBAAX,CAA8BnD,KAA9B,CAD3B;IAAA,CAjBG;;IAmBb;AACJ;AACA;IACIoD,aAAa,EAAE,uBAAC7E,IAAD,EAAOyB,KAAP,EAAcqD,aAAd,EAAgC;MAC7CtF,GAAG,CAAC,6BAAD,EAAgCQ,IAAI,CAACC,IAArC,CAAH;MAEA,IAAM8E,UAAU,GAAG3C,IAAI,CAACc,KAAL,CAAWC,aAAX,CAAyB1B,KAAK,CAACC,QAA/B,EAAyC1B,IAAI,CAACiC,GAA9C,CAAnB;MACAzC,GAAG,CAAC,8BAAD,EAAiCuF,UAAjC,CAAH;;MAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY;QAAA,OAChBD,UAAU,CAAC9E,IAAX,CAAgBmB,GAAhB,CAAoB,QAApB,KAAiC2D,UAAU,CAAC9E,IAAX,CAAgBmB,GAAhB,CAAoB,QAApB,MAAkC,GADnD;MAAA,CAAlB;;MAEA,IAAM6D,MAAM,GAAG,SAATA,MAAS,GAAM;QACnB,IAAM1D,MAAM,GAAGa,IAAI,CAAC8C,OAAL,CAAaC,SAAb,CAAuB1D,KAAK,CAACF,MAAN,EAAvB,CAAf;QACAuD,aAAa,CAACvD,MAAD,EAAS,KAAT,CAAb;MACD,CAHD;;MAKA,IAAM6D,SAAS,GAAG,SAAZA,SAAY,GAAM;QACtB,IAAM7D,MAAM,GAAGa,IAAI,CAAC8C,OAAL,CAAaG,YAAb,CAA0B5D,KAAK,CAACF,MAAN,EAA1B,CAAf;QACAuD,aAAa,CAACvD,MAAD,EAAS,KAAT,CAAb;MACD,CAHD;;MAKA,IAAM+D,SAAS,GAAG,SAAZA,SAAY,GAAM;QACtB,IAAM/D,MAAM,GAAGa,IAAI,CAAC8C,OAAL,CAAaI,SAAb,CAAuB7D,KAAK,CAACF,MAAN,EAAvB,CAAf;QACAuD,aAAa,CAACvD,MAAD,EAAS,KAAT,CAAb;MACD,CAHD;;MAKA,IAAMgE,YAAY,GAAG,SAAfA,YAAe,GAAM;QACzB,IAAMhE,MAAM,GAAGa,IAAI,CAAC8C,OAAL,CAAaK,YAAb,CAA0B9D,KAAK,CAACF,MAAN,EAA1B,CAAf;QACAuD,aAAa,CAACvD,MAAD,EAAS,KAAT,CAAb;MACD,CAHD;;MAKA,IAAMiE,WAAW,GAAG,SAAdA,WAAc,GAAM;QACxB,IAAMjE,MAAM,GAAGa,IAAI,CAAC8C,OAAL,CAAaM,WAAb,CAAyB/D,KAAK,CAACF,MAAN,EAAzB,CAAf;QACAuD,aAAa,CAACvD,MAAD,EAAS,KAAT,CAAb;MACD,CAHD;;MAKA,IAAMkE,YAAY,GAAG,SAAfA,YAAe,GAAM;QACzB,IAAQxF,IAAR,GAAiB8E,UAAjB,CAAQ9E,IAAR;QACA,IAAM6B,MAAM,GAAG7B,IAAI,CAACyF,GAAL,CAAS,QAAT,EAAmBV,SAAS,KAAK,GAAL,GAAW,GAAvC,CAAf;QACAxF,GAAG,CAAC,yBAAD,EAA4BsC,MAA5B,CAAH;QACA,IAAMP,MAAM,GAAGE,KAAK,CAACF,MAAN,GAAeS,YAAf,CAA4B+C,UAAU,CAAC9C,GAAvC,EAA4C;UAAEhC,IAAI,EAAE6B;QAAR,CAA5C,CAAf;QACAgD,aAAa,CAACvD,MAAD,EAAS,KAAT,CAAb;MACD,CAND;;MAQA,IAAMoE,MAAM,GAAG,SAATA,MAAS,GAAM;QACnBnG,GAAG,CAAC,gCAAD,CAAH;QACAsF,aAAa,CAAC,IAAD,EAAO,IAAP,CAAb;MACD,CAHD;;MAKA,IAAMc,EAAE,GAAG,SAALA,EAAK;QAAA,oBACT,gCAAC,wBAAD;UACE,OAAO,EAAEzD,cADX;UAEE,QAAQ,EAAE,kBAAA0D,CAAC;YAAA,OAAIf,aAAa,CAACe,CAAD,EAAI,KAAJ,CAAjB;UAAA,CAFb;UAGE,KAAK,EAAEpE,KAHT;UAIE,QAAQ,EAAEwD,MAJZ;UAKE,WAAW,EAAEK,SALf;UAME,WAAW,EAAEF,SANf;UAOE,cAAc,EAAEG,YAPlB;UAQE,aAAa,EAAEC,WARjB;UASE,SAAS,EAAER,SAAS,EATtB;UAUE,cAAc,EAAES,YAVlB;UAWE,MAAM,EAAEE;QAXV,EADS;MAAA,CAAX;;MAeA,OAAOC,EAAP;IACD;EApFY,CAAf;;EAuFA,IAAME,IAAI,GAAG,SAAPA,IAAO,CAAAjG,KAAK,EAAI;IACpB,QAAQA,KAAK,CAACG,IAAN,CAAWgD,IAAnB;MACE,KAAK,OAAL;QACE,oBAAO,gCAAC,KAAD,gCAAWnD,KAAX;UAAkB,OAAO,EAAEqC,IAAI,CAAC9B,OAAhC;UAAyC,MAAM,EAAE8B,IAAI,CAAC7B;QAAtD,GAAP;;MACF,KAAK,WAAL;QACE,oBAAO,gCAAC,QAAD,EAAcR,KAAd,CAAP;;MACF,KAAK,YAAL;QACE,oBAAO,gCAAC,SAAD,gCAAeA,KAAf;UAAsB,OAAO,EAAEqC,IAAI,CAAC9B,OAApC;UAA6C,MAAM,EAAE8B,IAAI,CAAC7B;QAA1D,GAAP;;MACF;QACE,OAAO,IAAP;IARJ;EAUD,CAXD;;EAYAyF,IAAI,CAACvF,SAAL,GAAiB;IACfP,IAAI,EAAEQ,qBAAA,CAAUC;EADD,CAAjB;;EAIA2B,IAAI,CAAC2D,aAAL,GAAqB,UAAA/F,IAAI,EAAI;IAC3B,IAAIA,IAAI,CAACS,MAAL,KAAgB,UAApB,EAAgC;MAC9B;IACD;;IAED,IAAMuF,UAAU,GAAGhG,IAAI,CAAC2B,cAAL,CAAoB,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAAC3B,IAAF,IAAU2B,CAAC,CAAC3B,IAAF,CAAOmB,GAAP,CAAW,UAAX,CAAd;IAAA,CAArB,CAAnB;;IAEA,IAAI,CAAC4E,UAAL,EAAiB;MACf;IACD;;IAED,IAAMC,YAAY,GAAGjG,IAAI,CAACkG,SAAL,CAAeF,UAAU,CAAC/D,GAA1B,KAAkCjC,IAAvD;IACA,IAAImG,sBAAsB,GAAG,KAA7B;IACA,IAAMC,qBAAqB,GAAGH,YAAY,CAACnD,KAAb,CAAmBuD,IAAnB,GAA0B,CAAxD;IACA,IAAMC,gBAAgB,GAAGL,YAAY,CAACnD,KAAb,CAAmByD,aAAnB,CAAiC,UAAA3E,CAAC;MAAA,OAAIA,CAAC,CAACoB,IAAF,KAAW,OAAf;IAAA,CAAlC,CAAzB,CAd2B,CAgB3B;;IACA,IAAIsD,gBAAgB,KAAKF,qBAAzB,EAAgD;MAC9CD,sBAAsB,GAAG,IAAzB;IACD;;IAED,IAAI,CAACA,sBAAL,EAA6B;MAC3B;IACD;;IAED,OAAO,UAAA5E,MAAM,EAAI;MACf,IAAI4E,sBAAJ,EAA4B;QAC1B,IAAMK,SAAS,GAAGR,UAAU,CAAC5B,MAAX,EAAlB,CAD0B,CAG1B;QACA;;QACA7C,MAAM,CAACkF,eAAP,CAAuBT,UAAU,CAAC/D,GAAlC;;QAEA,IAAMyE,QAAQ,GAAGxC,YAAA,CAAMC,MAAN,CAAa;UAC5B1D,MAAM,EAAE,OADoB;UAE5BuC,IAAI,EAAE;QAFsB,CAAb,CAAjB,CAP0B,CAY1B;QACA;;;QACAzB,MAAM,CAACmD,WAAP,CAAmBgC,QAAnB;QAEAnF,MAAM,CAACoF,oBAAP,CAA4B,YAAM;UAChC;UAEA;UACA,IAAMC,QAAQ,GAAGrF,MAAM,CAACE,KAAP,CAAaC,QAAb,CAAsBmF,eAAtB,CAAsCH,QAAQ,CAACzE,GAA/C,CAAjB;;UAEA,IAAI2E,QAAJ,EAAc;YACZ;YACArF,MAAM,CACHuF,WADH,CACeF,QAAQ,CAAC3E,GADxB,EAC6B2E,QAAQ,CAACG,IAAT,CAAcC,MAD3C,EAEGC,YAFH,CAEgBL,QAAQ,CAAC3E,GAFzB,EAE8B2E,QAAQ,CAACG,IAAT,CAAcC,MAF5C;UAGD,CAX+B,CAahC;;;UACAzF,MAAM,CAACmD,WAAP,iCACK8B,SADL;YAEEvG,IAAI,kCACCuG,SAAS,CAACvG,IADX;cAEFgE,QAAQ,EAAE;YAFR;UAFN;UAQA3C,2BAA2B,CAACC,MAAD,CAA3B;QACD,CAvBD;MAwBD;IACF,CA1CD;EA2CD,CApED;;EAsEAa,IAAI,CAAC8E,UAAL,GAAkBpB,IAAlB;EAEA,OAAO1D,IAAP;AACD,C;;;;AAEM,IAAM+E,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAAC,CAAC,EAAI;EACnC,IAAMC,KAAK,GAAG,yBAAd;EACA,IAAIC,KAAJ;EACA,IAAMC,MAAM,GAAG,EAAf;;EACA,OAAQD,KAAK,GAAGD,KAAK,CAACG,IAAN,CAAWJ,CAAX,CAAhB,EAAgC;IAC9BG,MAAM,CAACD,KAAK,CAAC,CAAD,CAAN,CAAN,GAAmBA,KAAK,CAAC,CAAD,CAAL,CAASG,IAAT,EAAnB;EACD;;EACD,OAAOF,MAAP;AACD,CARM;;;;AAUA,IAAMG,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,CAAC;EAAA,OAAI,IAAAC,eAAA,EAAcD,CAAd,EAAiB;IAAEE,QAAQ,EAAE,IAAZ;IAAkBC,QAAQ,EAAE;EAA5B,CAAjB,CAAJ;AAAA,CAAzB;;;;AAEP,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,EAAE;EAAA,OAAI,UAACC,GAAD,EAAMC,SAAN,EAAoB;IAChD,IAAMzG,KAAK,GAAGuG,EAAE,CAACG,YAAH,CAAgBD,SAAhB,CAAd;;IACA,IAAIzG,KAAJ,EAAW;MACT,IAAIyG,SAAS,KAAK,OAAlB,EAA2B;QACzB,IAAME,WAAW,GAAGJ,EAAE,CAACG,YAAH,CAAgBD,SAAhB,CAApB;QACA,IAAMG,gBAAgB,GAAGX,eAAe,CAACP,gBAAgB,CAACiB,WAAD,CAAjB,CAAxC;QACAH,GAAG,CAAC,OAAD,CAAH,GAAeI,gBAAf;MACD,CAJD,MAIO;QACLJ,GAAG,CAACC,SAAD,CAAH,GAAiBF,EAAE,CAACG,YAAH,CAAgBD,SAAhB,CAAjB;MACD;IACF;;IACD,OAAOD,GAAP;EACD,CAZyB;AAAA,CAA1B;;AAcA,IAAMlI,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAAE,IAAI,EAAI;EAC/B,IAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACmB,GAAnB,EAAwB;IACtB,OAAO,EAAP;EACD;;EAED,OAAOnB,IAAI,CAACqI,MAAL,CAAY,UAACL,GAAD,EAAMM,CAAN,EAASC,IAAT,EAAkB;IACnC,IAAID,CAAJ,EAAO;MACLN,GAAG,CAAC,IAAAQ,8BAAA,EAAQD,IAAR,CAAD,CAAH,GAAqBD,CAArB;IACD;;IACD,OAAON,GAAP;EACD,CALM,EAKJ,EALI,CAAP;AAMD,CAXD;;AAaA,IAAM9H,UAAU,GAAG,CAAC,QAAD,EAAW,aAAX,EAA0B,aAA1B,EAAyC,OAAzC,EAAkD,OAAlD,CAAnB;AAEA,IAAMuI,cAAc,GAAG,CAAC,SAAD,EAAY,SAAZ,EAAuB,OAAvB,EAAgC,OAAhC,CAAvB;AAEO,IAAMC,aAAa,GAAG;EAC3BC,WAD2B,uBACfZ,EADe,EACXa,IADW,EACL;IACpB,IAAMC,GAAG,GAAGd,EAAE,CAACe,OAAH,CAAWC,WAAX,EAAZ;;IAEA,QAAQF,GAAR;MACE,KAAK,OAAL;QAAc;UACZ,IAAMxI,QAAQ,GACZ0H,EAAE,CAAC1H,QAAH,CAAY0G,MAAZ,KAAuB,CAAvB,IAA4BgB,EAAE,CAAC1H,QAAH,CAAY,CAAZ,EAAeyI,OAAf,CAAuBC,WAAvB,OAAyC,OAArE,GACIhB,EAAE,CAAC1H,QAAH,CAAY,CAAZ,EAAeA,QADnB,GAEI0H,EAAE,CAAC1H,QAHT;UAIA,IAAMuF,CAAC,GAAGoD,KAAK,CAACC,IAAN,CAAW5I,QAAX,CAAV;UAEA,OAAO;YACLG,MAAM,EAAE,OADH;YAELuC,IAAI,EAAE,OAFD;YAGLF,KAAK,EAAE+F,IAAI,CAAChD,CAAD,CAHN;YAIL5F,IAAI,EAAEE,UAAU,CAACmI,MAAX,CAAkBP,eAAe,CAACC,EAAD,CAAjC,EAAuC,EAAvC;UAJD,CAAP;QAMD;;MACD,KAAK,IAAL;QAAW;UACT,OAAO;YACLvH,MAAM,EAAE,OADH;YAELuC,IAAI,EAAE,YAFD;YAGLF,KAAK,EAAE+F,IAAI,CAACb,EAAE,CAACmB,UAAJ,CAHN;YAILlJ,IAAI,EAAEyI,cAAc,CAACJ,MAAf,CAAsBP,eAAe,CAACC,EAAD,CAArC,EAA2C;cAAE3G,MAAM,EAAE;YAAV,CAA3C;UAJD,CAAP;QAMD;;MACD,KAAK,IAAL;QAAW;UACT,OAAO;YACLZ,MAAM,EAAE,OADH;YAELuC,IAAI,EAAE,WAFD;YAGLF,KAAK,EAAE+F,IAAI,CAACI,KAAK,CAACC,IAAN,CAAWlB,EAAE,CAAC1H,QAAd,CAAD;UAHN,CAAP;QAKD;;MACD,KAAK,IAAL;QAAW;UACT,OAAO;YACLG,MAAM,EAAE,OADH;YAELuC,IAAI,EAAE,YAFD;YAGLF,KAAK,EAAE+F,IAAI,CAACI,KAAK,CAACC,IAAN,CAAWlB,EAAE,CAACmB,UAAd,CAAD,CAHN;YAILlJ,IAAI,EAAEyI,cAAc,CAACJ,MAAf,CAAsBP,eAAe,CAACC,EAAD,CAArC,EAA2C;cAAE3G,MAAM,EAAE;YAAV,CAA3C;UAJD,CAAP;QAMD;IArCH;EAuCD,CA3C0B;EA4C3B+H,SA5C2B,qBA4CjB3I,MA5CiB,EA4CTH,QA5CS,EA4CC;IAC1B,IAAIG,MAAM,CAACA,MAAP,KAAkB,OAAtB,EAA+B;MAC7B;IACD;;IAED,QAAQA,MAAM,CAACuC,IAAf;MACE,KAAK,OAAL;QAAc;UACZ,IAAM7C,WAAU,GAAGJ,gBAAgB,CAACU,MAAM,CAACR,IAAR,CAAnC;;UACA,oBACE,yCAAWE,WAAX,eACE,+CAAQG,QAAR,CADF,CADF;QAKD;;MACD,KAAK,WAAL;QAAkB;UAChB,oBAAO,4CAAKA,QAAL,CAAP;QACD;;MACD,KAAK,YAAL;QAAmB;UACjB,IAAMH,YAAU,GAAGJ,gBAAgB,CAACU,MAAM,CAACR,IAAR,CAAnC;;UACA,OAAOE,YAAU,CAACkB,MAAlB;;UACA,IAAIZ,MAAM,CAACR,IAAP,CAAYmB,GAAZ,CAAgB,QAAhB,CAAJ,EAA+B;YAC7B,oBAAO,sCAAQjB,YAAR,EAAqBG,QAArB,CAAP;UACD,CAFD,MAEO;YACL,oBAAO,sCAAQH,YAAR,EAAqBG,QAArB,CAAP;UACD;QACF;IApBH;EAsBD;AAvE0B,CAAtB"}
|