@pie-lib/mask-markup 1.30.1 → 1.30.4
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/esm/index.js +21543 -25
- package/esm/index.js.map +1 -1
- package/package.json +6 -6
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/serialization.js","../src/mask.jsx","../src/componentize.js","../src/with-mask.jsx","../src/choices/choice.jsx","../src/choices/index.jsx","../src/components/blank.jsx","../src/drag-in-the-blank.jsx","../src/constructed-response.jsx","../src/customizable.jsx","../src/components/dropdown.jsx","../src/inline-dropdown.jsx"],"sourcesContent":["import Html from 'slate-html-serializer';\nimport { object as toStyleObject } from 'to-style';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:mask-markup:serialization');\n\nconst INLINE = ['span'];\nconst MARK = ['em', 'strong', 'u'];\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\n\nconst attr = (el) => {\n if (!el.attributes || el.attributes.length <= 0) {\n return undefined;\n }\n\n const out = {};\n let i;\n\n for (i = 0; i < el.attributes.length; i++) {\n const a = el.attributes[i];\n\n out[a.name] = a.value;\n }\n\n return out;\n};\n\nconst getObject = (type) => {\n if (INLINE.includes(type)) {\n return 'inline';\n } else if (MARK.includes(type)) {\n return 'mark';\n }\n return 'block';\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 handleStyles = (el, attribute) => {\n const styleString = el.getAttribute(attribute);\n\n return reactAttributes(parseStyleString(styleString));\n};\n\nconst handleClass = (el, acc, attribute) => {\n const classNames = el.getAttribute(attribute);\n\n delete acc.class;\n\n return classNames;\n};\n\nconst attributesToMap = (el) => (acc, attribute) => {\n if (!el.getAttribute) {\n return acc;\n }\n\n const value = el.getAttribute(attribute);\n\n if (value) {\n switch (attribute) {\n case 'style':\n acc.style = handleStyles(el, attribute);\n break;\n case 'class':\n acc.className = handleClass(el, acc, attribute);\n break;\n default:\n acc[attribute] = el.getAttribute(attribute);\n break;\n }\n }\n\n return acc;\n};\n\nconst attributes = ['border', 'class', 'style'];\n\n/**\n * Tags to marks.\n *\n * @type {Object}\n */\n\nexport const MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: 'strikethrough',\n code: 'code',\n strong: 'strong',\n};\n\nconst marks = {\n deserialize(el, next) {\n const mark = MARK_TAGS[el.tagName.toLowerCase()];\n if (!mark) return;\n log('[deserialize] mark: ', mark);\n return {\n object: 'mark',\n type: mark,\n nodes: next(el.childNodes),\n };\n },\n};\n\nconst rules = [\n marks,\n {\n /**\n * deserialize everything, we're not fussy about the dom structure for now.\n */\n deserialize: (el, next) => {\n if (el.nodeType === COMMENT_NODE) {\n return undefined;\n }\n\n if (el.nodeType === TEXT_NODE) {\n return {\n object: 'text',\n leaves: [{ text: el.textContent }],\n };\n }\n\n const type = el.tagName.toLowerCase();\n\n const normalAttrs = attr(el) || {};\n\n if (type == 'audio' && normalAttrs.controls == '') {\n normalAttrs.controls = true;\n }\n\n const allAttrs = attributes.reduce(attributesToMap(el), { ...normalAttrs });\n const object = getObject(type);\n\n if (el.tagName.toLowerCase() === 'math') {\n return {\n isMath: true,\n nodes: [el],\n };\n }\n\n return {\n object,\n type,\n data: { dataset: { ...el.dataset }, attributes: { ...allAttrs } },\n nodes: next(el.childNodes),\n };\n },\n },\n];\n\n/**\n * Create a new serializer instance with our `rules` from above.\n * Having a default div block will just put every div on it's own line, which is not ideal.\n */\nconst html = new Html({ rules, defaultBlock: 'span' });\n\nexport const deserialize = (s) => html.deserialize(s, { toJSON: true });\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport { withStyles } from '@material-ui/core/styles';\nimport { MARK_TAGS } from './serialization';\nimport cx from 'classnames';\n\nconst Paragraph = withStyles((theme) => ({\n para: {\n paddingTop: 2 * theme.spacing.unit,\n paddingBottom: 2 * theme.spacing.unit,\n },\n}))((props) => <div className={props.classes.para}>{props.children}</div>);\n\nconst Spacer = withStyles(() => ({\n spacer: {\n display: 'inline-block',\n width: '.75em',\n },\n}))((props) => <span className={props.classes.spacer} />);\n\nconst restrictWhitespaceTypes = ['tbody', 'tr'];\n\nconst addText = (parentNode, text) => {\n const isWhitespace = text.trim() === '';\n const parentType = parentNode && parentNode.type;\n\n if (isWhitespace && restrictWhitespaceTypes.includes(parentType)) {\n return undefined;\n } else {\n return text;\n }\n};\n\nconst getMark = (n) => {\n const mark = n.leaves.find((leave) => get(leave, 'marks', []).length);\n\n if (mark) {\n return mark.marks[0];\n }\n\n return null;\n};\n\nexport const renderChildren = (layout, value, onChange, rootRenderChildren, parentNode, elementType) => {\n if (!value) {\n return null;\n }\n\n const children = [];\n\n (layout.nodes || []).forEach((n, index) => {\n const key = n.type ? `${n.type}-${index}` : `${index}`;\n\n if (n.isMath) {\n children.push(\n <span\n dangerouslySetInnerHTML={{\n __html: `<math displaystyle=\"true\">${n.nodes[0].innerHTML}</math>`,\n }}\n />,\n );\n return children;\n }\n\n if (rootRenderChildren) {\n const c = rootRenderChildren(n, value, onChange);\n if (c) {\n children.push(c);\n if (parentNode?.type !== 'td' && elementType === 'drag-in-the-blank') {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n return;\n }\n }\n\n if (n.object === 'text') {\n const content = n.leaves.reduce((acc, l) => {\n const t = l.text;\n const extraText = addText(parentNode, t);\n return extraText ? acc + extraText : acc;\n }, '');\n const mark = getMark(n);\n\n if (mark) {\n let markKey;\n\n for (markKey in MARK_TAGS) {\n if (MARK_TAGS[markKey] === mark.type) {\n const Tag = markKey;\n\n children.push(<Tag key={key}>{content}</Tag>);\n break;\n }\n }\n } else if (content.length > 0) {\n children.push(content);\n if (parentNode?.type !== 'td' && elementType === 'drag-in-the-blank') {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n }\n } else {\n const subNodes = renderChildren(n, value, onChange, rootRenderChildren, n, elementType);\n if (n.type === 'p' || n.type === 'paragraph') {\n children.push(<Paragraph key={key}>{subNodes}</Paragraph>);\n } else {\n const Tag = n.type;\n if (n.nodes && n.nodes.length > 0) {\n children.push(\n <Tag key={key} {...n.data.attributes}>\n {subNodes}\n </Tag>,\n );\n } else {\n children.push(<Tag key={key} {...n.data.attributes} />);\n }\n }\n }\n });\n return children;\n};\n\nconst MaskContainer = withStyles(() => ({\n main: {\n display: 'initial',\n },\n tableStyle: {\n '&:not(.MathJax) table': {\n borderCollapse: 'collapse',\n },\n // align table content to left as per STAR requirement PD-3687\n '&:not(.MathJax) table td, &:not(.MathJax) table th': {\n padding: '8px 12px',\n textAlign: 'left',\n },\n },\n}))((props) => <div className={cx(props.classes.main, props.classes.tableStyle)}>{props.children}</div>);\n\n/**\n * Renders a layout that uses the slate.js Value model structure.\n */\nexport default class Mask extends React.Component {\n static propTypes = {\n renderChildren: PropTypes.func,\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n elementType: PropTypes.string,\n };\n\n handleChange = (id, value) => {\n const data = { ...this.props.value, [id]: value };\n this.props.onChange(data);\n };\n\n render() {\n const { value, layout, elementType } = this.props;\n const children = renderChildren(layout, value, this.handleChange, this.props.renderChildren, null, elementType);\n\n return <MaskContainer>{children}</MaskContainer>;\n }\n}\n","const REGEX = /\\{\\{(\\d+)\\}\\}/g;\n\nexport default (s, t) => {\n if (!s) {\n return { markup: '' };\n }\n\n const markup = s.replace(REGEX, (match, g) => {\n return `<span data-component=\"${t}\" data-id=\"${g}\"></span>`;\n });\n\n return { markup };\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport Mask from './mask';\nimport componentize from './componentize';\nimport { deserialize } from './serialization';\n\nexport const buildLayoutFromMarkup = (markup, type) => {\n const { markup: processed } = componentize(markup, type);\n const value = deserialize(processed);\n return value.document;\n};\n\nexport const withMask = (type, renderChildren) => {\n return class WithMask extends React.Component {\n static propTypes = {\n /**\n * At the start we'll probably work with markup\n */\n markup: PropTypes.string,\n /**\n * Once we start authoring, it may make sense for use to us layout, which will be a simple js object that maps to `slate.Value`.\n */\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n customMarkMarkupComponent: PropTypes.func,\n elementType: PropTypes.string,\n };\n\n componentDidUpdate(prevProps) {\n if (this.props.markup !== prevProps.markup) {\n // eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n // Query all elements that may contain outdated MathJax renderings\n const mathElements = domNode && domNode.querySelectorAll('[data-latex][data-math-handled=\"true\"]');\n\n // Clean up for fresh MathJax processing\n (mathElements || []).forEach((el) => {\n // Remove the MathJax container to allow for clean updates\n const mjxContainer = el.querySelector('mjx-container');\n\n if (mjxContainer) {\n el.removeChild(mjxContainer);\n }\n\n // Update the innerHTML to match the raw LaTeX data, ensuring it is reprocessed correctly\n const latexCode = el.getAttribute('data-raw');\n el.innerHTML = latexCode;\n\n // Remove the attribute to signal that MathJax should reprocess this element\n el.removeAttribute('data-math-handled');\n });\n }\n }\n\n render() {\n const { markup, layout, value, onChange, elementType } = this.props;\n\n const maskLayout = layout ? layout : buildLayoutFromMarkup(markup, type);\n return (\n <Mask\n elementType={elementType}\n layout={maskLayout}\n value={value}\n onChange={onChange}\n renderChildren={renderChildren(this.props)}\n />\n );\n }\n };\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\nimport classnames from 'classnames';\n\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { color } from '@pie-lib/render-ui';\nimport { DragSource } from '@pie-lib/drag';\n\nexport const DRAG_TYPE = 'MaskBlank';\n\nclass BlankContentComp extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n choice: PropTypes.object,\n classes: PropTypes.object,\n connectDragSource: PropTypes.func,\n };\n\n startDrag = () => {\n const { connectDragSource, disabled } = this.props;\n if (!disabled) {\n connectDragSource(this.dragContainerRef);\n }\n };\n\n // start drag after 500ms (touch and hold duration) for chromebooks and other touch devices PD-4888\n handleTouchStart = (e) => {\n e.preventDefault();\n this.longPressTimer = setTimeout(() => {\n this.startDrag(e);\n }, 500);\n };\n\n handleTouchEnd = () => {\n clearTimeout(this.longPressTimer);\n };\n\n handleTouchMove = () => {\n clearTimeout(this.longPressTimer);\n };\n\n componentDidMount() {\n if (this.dragContainerRef) {\n this.dragContainerRef.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n this.dragContainerRef.addEventListener('touchend', this.handleTouchEnd);\n this.dragContainerRef.addEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n componentWillUnmount() {\n if (this.dragContainerRef) {\n this.dragContainerRef.removeEventListener('touchstart', this.handleTouchStart);\n this.dragContainerRef.removeEventListener('touchend', this.handleTouchEnd);\n this.dragContainerRef.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n componentDidUpdate() {\n renderMath(this.rootRef);\n }\n\n render() {\n const { connectDragSource, choice, classes, disabled } = this.props;\n\n // TODO the Chip element is causing drag problems on touch devices. Avoid using Chip and consider refactoring the code. Keep in mind that Chip is a span with a button role, which interferes with seamless touch device dragging.\n\n return connectDragSource(\n <span\n className={classnames(classes.choice, disabled && classes.disabled)}\n ref={(ref) => {\n //eslint-disable-next-line\n this.dragContainerRef = ReactDOM.findDOMNode(ref);\n }}\n >\n <Chip\n clickable={false}\n disabled={true}\n ref={(ref) => {\n //eslint-disable-next-line\n this.rootRef = ReactDOM.findDOMNode(ref);\n }}\n className={classes.chip}\n label={\n <span\n className={classes.chipLabel}\n ref={(ref) => {\n if (ref) {\n ref.innerHTML = choice.value || ' ';\n }\n }}\n >\n {' '}\n </span>\n }\n variant={disabled ? 'outlined' : undefined}\n />\n </span>,\n {},\n );\n }\n}\n\nexport const BlankContent = withStyles((theme) => ({\n choice: {\n border: `solid 0px ${theme.palette.primary.main}`,\n borderRadius: theme.spacing.unit * 2,\n margin: theme.spacing.unit / 2,\n transform: 'translate(0, 0)',\n },\n chip: {\n backgroundColor: color.white(),\n border: `1px solid ${color.text()}`,\n color: color.text(),\n alignItems: 'center',\n display: 'inline-flex',\n height: 'initial',\n minHeight: '32px',\n fontSize: 'inherit',\n whiteSpace: 'pre-wrap',\n maxWidth: '374px',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n borderRadius: '3px',\n paddingTop: '12px',\n paddingBottom: '12px',\n },\n chipLabel: {\n whiteSpace: 'normal',\n '& img': {\n display: 'block',\n padding: '2px 0',\n },\n '& mjx-frac': {\n fontSize: '120% !important',\n },\n },\n disabled: {\n opacity: 0.6,\n },\n}))(BlankContentComp);\n\nconst tileSource = {\n canDrag(props) {\n return !props.disabled;\n },\n beginDrag(props) {\n return {\n choice: props.choice,\n instanceId: props.instanceId,\n };\n },\n};\n\nconst DragDropTile = DragSource(DRAG_TYPE, tileSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(BlankContent);\n\nexport default DragDropTile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport findKey from 'lodash/findKey';\nimport Choice from './choice';\nimport { DragDroppablePlaceholder } from '@pie-lib/drag';\n\nexport default class Choices extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choices: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n value: PropTypes.object,\n choicePosition: PropTypes.string.isRequired,\n };\n\n getStyleForWrapper = () => {\n const { choicePosition } = this.props;\n\n switch (choicePosition) {\n case 'above':\n return {\n margin: '0 0 40px 0',\n };\n\n case 'below':\n return {\n margin: '40px 0 0 0',\n };\n\n case 'right':\n return {\n margin: '0 0 0 40px',\n };\n\n default:\n return {\n margin: '0 40px 0 0',\n };\n }\n };\n\n render() {\n const { disabled, duplicates, choices, value } = this.props;\n const filteredChoices = choices.filter((c) => {\n if (duplicates === true) {\n return true;\n }\n const foundChoice = findKey(value, (v) => v === c.id);\n return foundChoice === undefined;\n });\n const elementStyle = { ...this.getStyleForWrapper(), minWidth: '100px' };\n\n return (\n <div style={elementStyle}>\n <DragDroppablePlaceholder disabled={disabled}>\n {filteredChoices.map((c, index) => (\n <Choice key={`${c.value}-${index}`} disabled={disabled} choice={c} />\n ))}\n </DragDroppablePlaceholder>\n </div>\n );\n }\n}\n","import grey from '@material-ui/core/colors/grey';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\nimport { DragSource, DropTarget } from '@pie-lib/drag';\nimport { withStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\nimport classnames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-lib:mask-markup:blank');\nexport const DRAG_TYPE = 'MaskBlank';\n\nconst useStyles = withStyles(() => ({\n content: {\n border: `solid 0px ${color.primary()}`,\n minWidth: '200px',\n touchAction: 'none',\n overflow: 'hidden',\n whiteSpace: 'nowrap', // Prevent line wrapping\n },\n chip: {\n backgroundColor: color.background(),\n border: `2px dashed ${color.text()}`,\n color: color.text(),\n fontSize: 'inherit',\n maxWidth: '374px',\n position: 'relative',\n borderRadius: '3px',\n },\n chipLabel: {\n whiteSpace: 'normal',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n '& img': {\n display: 'block',\n padding: '2px 0',\n },\n // Remove default <p> margins to ensure consistent spacing across all wrapped content (p, span, div, math)\n // Padding for top and bottom will instead be controlled by the container for consistent layout\n // Ensures consistent behavior with pie-api-browser, where marginTop is already removed by a Bootstrap stylesheet\n '& p': {\n marginTop: '0',\n marginBottom: '0',\n },\n '& mjx-frac': {\n fontSize: '120% !important',\n },\n },\n hidden: {\n color: 'transparent',\n opacity: 0,\n },\n dragged: {\n position: 'absolute',\n left: 16,\n maxWidth: '60px',\n },\n correct: {\n border: `solid 1px ${color.correct()}`,\n },\n incorrect: {\n border: `solid 1px ${color.incorrect()}`,\n },\n over: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n parentOver: {\n border: `1px solid ${grey[500]}`,\n backgroundColor: `${grey[300]}`,\n },\n}));\n\nexport class BlankContent extends React.Component {\n constructor() {\n super();\n this.state = {\n height: 0,\n width: 0,\n };\n }\n\n handleImageLoad = () => {\n this.updateDimensions();\n };\n\n handleElements() {\n const imageElement = this.spanRef?.querySelector('img');\n\n if (imageElement) {\n imageElement.onload = this.handleImageLoad;\n } else {\n setTimeout(() => {\n this.updateDimensions();\n }, 300);\n }\n }\n\n componentDidMount() {\n this.handleElements();\n if (this.rootRef) {\n this.rootRef.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n }\n }\n\n componentDidUpdate(prevProps) {\n renderMath(this.rootRef);\n const { choice: currentChoice } = this.props;\n const { choice: prevChoice } = prevProps;\n\n if (JSON.stringify(currentChoice) !== JSON.stringify(prevChoice)) {\n if (!currentChoice) {\n this.setState({\n height: 0,\n width: 0,\n });\n return;\n }\n this.handleElements();\n }\n }\n\n componentWillUnmount() {\n if (this.rootRef) {\n this.rootRef.removeEventListener('touchstart', this.handleTouchStart);\n }\n }\n\n handleTouchStart = (e) => {\n e.preventDefault();\n this.touchStartTimer = setTimeout(() => {\n this.startDrag();\n }, 300); // Start drag after 300ms (touch and hold duration)\n };\n\n startDrag = () => {\n const { connectDragSource, disabled } = this.props;\n if (!disabled) {\n connectDragSource(this.rootRef);\n }\n };\n\n updateDimensions() {\n if (this.spanRef && this.rootRef) {\n // Temporarily set rootRef width to 'auto' for natural measurement\n this.rootRef.style.width = 'auto';\n\n // Get the natural dimensions of the content\n const width = this.spanRef.offsetWidth || 0;\n const height = this.spanRef.offsetHeight || 0;\n\n const widthWithPadding = width + 24; // 12px padding on each side\n const heightWithPadding = height + 24; // 12px padding on top and bottom\n\n const responseAreaWidth = parseFloat(this.props.emptyResponseAreaWidth) || 0;\n const responseAreaHeight = parseFloat(this.props.emptyResponseAreaHeight) || 0;\n\n const adjustedWidth = widthWithPadding <= responseAreaWidth ? responseAreaWidth : widthWithPadding;\n const adjustedHeight = heightWithPadding <= responseAreaHeight ? responseAreaHeight : heightWithPadding;\n\n this.setState((prevState) => ({\n width: adjustedWidth > responseAreaWidth ? adjustedWidth : prevState.width,\n height: adjustedHeight > responseAreaHeight ? adjustedHeight : prevState.height,\n }));\n\n this.rootRef.style.width = `${adjustedWidth}px`;\n this.rootRef.style.height = `${adjustedHeight}px`;\n }\n }\n\n addDraggableFalseAttributes(parent) {\n parent.childNodes.forEach((elem) => {\n if (elem instanceof Element || elem instanceof HTMLDocument) {\n elem.setAttribute('draggable', false);\n }\n });\n }\n\n getRootDimensions() {\n // Handle potential non-numeric values\n const responseAreaWidth = !isNaN(parseFloat(this.props.emptyResponseAreaWidth))\n ? parseFloat(this.props.emptyResponseAreaWidth)\n : 0;\n const responseAreaHeight = !isNaN(parseFloat(this.props.emptyResponseAreaHeight))\n ? parseFloat(this.props.emptyResponseAreaHeight)\n : 0;\n\n const rootStyle = {\n height: this.state.height || responseAreaHeight,\n width: this.state.width || responseAreaWidth,\n };\n\n // add minWidth, minHeight if width and height are not defined\n // minWidth, minHeight will be also in model in the future\n return {\n ...rootStyle,\n ...(responseAreaWidth ? {} : { minWidth: 90 }),\n ...(responseAreaHeight ? {} : { minHeight: 32 }),\n };\n }\n\n render() {\n const { disabled, choice, classes, isOver, dragItem, correct } = this.props;\n const draggedLabel = dragItem && isOver && dragItem.choice.value;\n const label = choice && choice.value;\n\n return (\n // TODO the Chip element is causing drag problems on touch devices. Avoid using Chip and consider refactoring the code. Keep in mind that Chip is a span with a button role, which interferes with seamless touch device dragging.\n <Chip\n clickable={false}\n disabled={true}\n ref={(ref) => {\n //eslint-disable-next-line\n this.rootRef = ReactDOM.findDOMNode(ref);\n }}\n component=\"span\"\n label={\n <React.Fragment>\n <span\n className={classnames(classes.chipLabel, isOver && classes.over, {\n [classes.hidden]: draggedLabel,\n })}\n ref={(ref) => {\n if (ref) {\n //eslint-disable-next-line\n this.spanRef = ReactDOM.findDOMNode(ref);\n ref.innerHTML = label || '';\n this.addDraggableFalseAttributes(ref);\n }\n }}\n >\n {' '}\n </span>\n {draggedLabel && (\n <span\n className={classnames(classes.chipLabel, isOver && classes.over, classes.dragged)}\n ref={(ref) => {\n if (ref) {\n //eslint-disable-next-line\n this.spanRef = ReactDOM.findDOMNode(ref);\n ref.innerHTML = draggedLabel || '';\n this.addDraggableFalseAttributes(ref);\n }\n }}\n >\n {' '}\n </span>\n )}\n </React.Fragment>\n }\n className={classnames(classes.chip, isOver && classes.over, isOver && classes.parentOver, {\n [classes.correct]: correct !== undefined && correct,\n [classes.incorrect]: correct !== undefined && !correct,\n })}\n variant={disabled ? 'outlined' : undefined}\n style={{\n ...this.getRootDimensions(),\n }}\n />\n );\n }\n}\n\nBlankContent.defaultProps = {\n emptyResponseAreaWidth: 0,\n emptyResponseAreaHeight: 0,\n};\n\nBlankContent.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choice: PropTypes.object,\n classes: PropTypes.object,\n isOver: PropTypes.bool,\n dragItem: PropTypes.object,\n correct: PropTypes.bool,\n onChange: PropTypes.func,\n emptyResponseAreaWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n emptyResponseAreaHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nconst StyledBlankContent = useStyles(BlankContent);\n\nconst connectedBlankContent = useStyles(({ connectDragSource, connectDropTarget, ...props }) => {\n const { classes, isOver } = props;\n\n return connectDropTarget(\n connectDragSource(\n <span className={classnames(classes.content, isOver && classes.over)}>\n <StyledBlankContent {...props} />\n </span>,\n ),\n );\n});\n\nconst tileTarget = {\n drop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n log('props.instanceId', props.instanceId, 'draggedItem.instanceId:', draggedItem.instanceId);\n\n if (draggedItem.id !== props.id) {\n props.onChange(props.id, draggedItem.choice.id);\n }\n\n return {\n dropped: draggedItem.id !== props.id,\n };\n },\n canDrop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n return draggedItem.instanceId === props.instanceId;\n },\n};\n\nconst DropTile = DropTarget(DRAG_TYPE, tileTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n dragItem: monitor.getItem(),\n}))(connectedBlankContent);\n\nconst tileSource = {\n canDrag(props) {\n return !props.disabled && !!props.choice;\n },\n beginDrag(props) {\n return {\n id: props.id,\n choice: props.choice,\n instanceId: props.instanceId,\n fromChoice: true,\n };\n },\n endDrag(props, monitor) {\n // this will be null if it did not drop\n const dropResult = monitor.getDropResult();\n\n if (!dropResult || dropResult.dropped) {\n const draggedItem = monitor.getItem();\n\n if (draggedItem.fromChoice) {\n props.onChange(props.id, undefined);\n }\n }\n },\n};\n\nconst DragDropTile = DragSource(DRAG_TYPE, tileSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(DropTile);\n\nexport default DragDropTile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport Choices from './choices';\nimport Blank from './components/blank';\nimport { withMask } from './with-mask';\n\n// eslint-disable-next-line react/display-name\nconst Masked = withMask('blank', (props) => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n if (dataset.component === 'blank') {\n // eslint-disable-next-line react/prop-types\n const {\n disabled,\n duplicates,\n correctResponse,\n feedback,\n showCorrectAnswer,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n } = props;\n const choiceId = showCorrectAnswer ? correctResponse[dataset.id] : data[dataset.id];\n // eslint-disable-next-line react/prop-types\n const choice = choiceId && props.choices.find((c) => c.id === choiceId);\n\n return (\n <Blank\n key={`${node.type}-${dataset.id}`}\n correct={showCorrectAnswer || (feedback && feedback[dataset.id])}\n disabled={disabled}\n duplicates={duplicates}\n choice={choice}\n id={dataset.id}\n emptyResponseAreaWidth={emptyResponseAreaWidth}\n emptyResponseAreaHeight={emptyResponseAreaHeight}\n onChange={onChange}\n />\n );\n }\n});\n\nexport default class DragInTheBlank extends React.Component {\n static propTypes = {\n markup: PropTypes.string,\n layout: PropTypes.object,\n choicesPosition: PropTypes.string,\n choices: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n value: PropTypes.object,\n onChange: PropTypes.func,\n duplicates: PropTypes.bool,\n disabled: PropTypes.bool,\n feedback: PropTypes.object,\n correctResponse: PropTypes.object,\n showCorrectAnswer: PropTypes.bool,\n emptyResponseAreaWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n emptyResponseAreaHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n };\n\n UNSAFE_componentWillReceiveProps() {\n if (this.rootRef) {\n renderMath(this.rootRef);\n }\n }\n\n componentDidUpdate() {\n renderMath(this.rootRef);\n }\n\n getPositionDirection = (choicePosition) => {\n let flexDirection;\n let justifyContent;\n let alignItems;\n\n switch (choicePosition) {\n case 'left':\n flexDirection = 'row';\n alignItems = 'center';\n break;\n case 'right':\n flexDirection = 'row-reverse';\n justifyContent = 'flex-end';\n alignItems = 'center';\n break;\n case 'below':\n flexDirection = 'column-reverse';\n break;\n default:\n // above\n flexDirection = 'column';\n break;\n }\n\n return { flexDirection, justifyContent, alignItems };\n };\n\n render() {\n const {\n markup,\n duplicates,\n layout,\n value,\n onChange,\n choicesPosition,\n choices,\n correctResponse,\n disabled,\n feedback,\n showCorrectAnswer,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n } = this.props;\n\n const choicePosition = choicesPosition || 'below';\n const style = {\n display: 'flex',\n minWidth: '100px',\n ...this.getPositionDirection(choicePosition),\n };\n\n return (\n <div ref={(ref) => ref && (this.rootRef = ref)} style={style}>\n <Choices\n choicePosition={choicePosition}\n duplicates={duplicates}\n choices={choices}\n value={value}\n disabled={disabled}\n />\n <Masked\n elementType={'drag-in-the-blank'}\n markup={markup}\n layout={layout}\n value={value}\n choices={choices}\n onChange={onChange}\n disabled={disabled}\n duplicates={duplicates}\n feedback={feedback}\n correctResponse={correctResponse}\n showCorrectAnswer={showCorrectAnswer}\n emptyResponseAreaWidth={emptyResponseAreaWidth}\n emptyResponseAreaHeight={emptyResponseAreaHeight}\n />\n </div>\n );\n }\n}\n","import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport classnames from 'classnames';\n\nimport { color } from '@pie-lib/render-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { withMask } from './with-mask';\n\nconst styles = () => ({\n editableHtmlCustom: {\n display: 'inline-block',\n verticalAlign: 'middle',\n margin: '4px',\n borderRadius: '4px',\n border: `1px solid ${color.black()}`,\n },\n correct: {\n border: `1px solid ${color.correct()}`,\n },\n incorrect: {\n border: `1px solid ${color.incorrect()}`,\n },\n});\n\nconst MaskedInput = (props) => (node, data) => {\n const {\n adjustedLimit,\n disabled,\n feedback,\n showCorrectAnswer,\n maxLength,\n spellCheck,\n classes,\n pluginProps,\n onChange,\n } = props;\n const dataset = node.data?.dataset || {};\n\n if (dataset.component === 'input') {\n const correctAnswer = ((props.choices && dataset && props.choices[dataset.id]) || [])[0];\n const finalValue = showCorrectAnswer ? correctAnswer && correctAnswer.label : data[dataset.id] || '';\n const width = maxLength && maxLength[dataset.id];\n const feedbackStatus = feedback && feedback[dataset.id];\n const isCorrect = showCorrectAnswer || feedbackStatus === 'correct';\n const isIncorrect = !showCorrectAnswer && feedbackStatus === 'incorrect';\n\n const handleInputChange = (newValue) => {\n const updatedValue = {\n ...data,\n [dataset.id]: newValue,\n };\n onChange(updatedValue);\n };\n\n const handleKeyDown = (event) => {\n // the keyCode value for the Enter/Return key is 13\n if (event.key === 'Enter' || event.keyCode === 13) {\n return false;\n }\n };\n\n return (\n <EditableHtml\n id={dataset.id}\n key={`${node.type}-input-${dataset.id}`}\n disabled={showCorrectAnswer || disabled}\n disableUnderline\n onChange={handleInputChange}\n markup={finalValue || ''}\n charactersLimit={adjustedLimit ? width : 25}\n activePlugins={['languageCharacters']}\n pluginProps={pluginProps}\n languageCharactersProps={[{ language: 'spanish' }]}\n spellCheck={spellCheck}\n width={`calc(${width}em + 42px)`} // added 42px for left and right padding of editable-html\n onKeyDown={handleKeyDown}\n autoWidthToolbar\n toolbarOpts={{\n minWidth: 'auto',\n noBorder: true,\n isHidden: !!pluginProps?.characters?.disabled,\n }}\n className={classnames(classes.editableHtmlCustom, {\n [classes.correct]: isCorrect,\n [classes.incorrect]: isIncorrect,\n })}\n />\n );\n }\n};\n\nexport default withStyles(styles)(withMask('input', MaskedInput));\n","import React from 'react';\n// import Input from './components/input';\nimport { withMask } from './with-mask';\n\n// eslint-disable-next-line react/display-name\nexport default withMask('input', (props) => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n if (dataset.component === 'input') {\n // eslint-disable-next-line react/prop-types\n // const { adjustedLimit, disabled, feedback, showCorrectAnswer, maxLength, spellCheck } = props;\n\n // the first answer is the correct one\n // eslint-disable-next-line react/prop-types\n // const correctAnswer = ((props.choices && dataset && props.choices[dataset.id]) || [])[0];\n // const finalValue = showCorrectAnswer ? correctAnswer && correctAnswer.label : data[dataset.id] || '';\n // const width = maxLength && maxLength[dataset.id];\n\n return props.customMarkMarkupComponent(dataset.id);\n // return (\n // <Input\n // key={`${node.type}-input-${dataset.id}`}\n // correct={feedback && feedback[dataset.id] && feedback[dataset.id] === 'correct'}\n // disabled={showCorrectAnswer || disabled}\n // value={finalValue}\n // id={dataset.id}\n // onChange={onChange}\n // showCorrectAnswer={showCorrectAnswer}\n // width={width}\n // charactersLimit={adjustedLimit ? width : 25}\n // isConstructedResponse={true}\n // spellCheck={spellCheck}\n // />\n // );\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\nimport Close from '@material-ui/icons/Close';\nimport Check from '@material-ui/icons/Check';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nimport { color } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nclass Dropdown extends React.Component {\n static propTypes = {\n id: PropTypes.string,\n value: PropTypes.string,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n classes: PropTypes.object,\n correct: PropTypes.bool,\n choices: PropTypes.arrayOf(PropTypes.shape({ value: PropTypes.string, label: PropTypes.string })),\n showCorrectAnswer: PropTypes.bool,\n singleQuery: PropTypes.bool,\n correctValue: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n anchorEl: null,\n highlightedOptionId: null,\n menuWidth: null,\n previewValue: null,\n };\n this.hiddenRef = React.createRef();\n this.buttonRef = React.createRef();\n this.previewRef = React.createRef();\n this.elementRefs = [];\n }\n\n componentDidMount() {\n // measure hidden menu width once\n if (this.hiddenRef.current && this.state.menuWidth === null) {\n this.setState({ menuWidth: this.hiddenRef.current.clientWidth });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const hiddenEl = this.hiddenRef.current;\n\n const dropdownJustOpened = !prevState.anchorEl && this.state.anchorEl;\n if (dropdownJustOpened) {\n this.elementRefs.forEach((ref) => {\n if (!ref) return;\n\n const containsLatex = ref.querySelector('[data-latex], [data-raw]');\n const hasMathJax = ref.querySelector('mjx-container');\n const mathHandled = ref.querySelector('[data-math-handled=\"true\"]');\n\n if (containsLatex && (!mathHandled || !hasMathJax)) {\n renderMath(ref);\n }\n });\n }\n\n if (hiddenEl) {\n const newWidth = hiddenEl.clientWidth;\n if (newWidth !== this.state.menuWidth) {\n this.elementRefs.forEach((ref) => {\n if (ref) renderMath(ref);\n });\n\n renderMath(hiddenEl);\n this.setState({ menuWidth: newWidth });\n }\n }\n }\n\n handleClick = (event) => this.setState({ anchorEl: event.currentTarget });\n\n handleClose = () => {\n const { value } = this.props;\n this.setState({ anchorEl: null, previewValue: null, highlightedOptionId: null });\n // clear displayed preview if no selection\n if (!value && this.previewRef.current) {\n this.previewRef.current.innerHTML = '';\n }\n };\n\n handleHighlight = (index) => {\n const highlightedOptionId = `dropdown-option-${this.props.id}-${index}`;\n\n // preview on hover if nothing selected\n const stateUpdate = { highlightedOptionId };\n if (!this.props.value) {\n stateUpdate.previewValue = this.props.choices[index].value;\n }\n this.setState(stateUpdate);\n };\n\n handleSelect = (value, index) => {\n this.props.onChange(this.props.id, value);\n this.handleHighlight(index);\n this.handleClose();\n };\n\n handleHover = (index) => {\n const selectedValue = this.props.value;\n\n if (selectedValue) return;\n\n const highlightedOptionId = `dropdown-option-${this.props.id}-${index}`;\n const previewValue = this.state.previewValue;\n\n this.setState({ highlightedOptionId, previewValue }, () => {\n // On hover, preview the math-rendered content inside the button if no value is selected.\n const ref = this.elementRefs[index];\n const preview = this.previewRef.current;\n\n if (ref && preview) {\n preview.innerHTML = ref.innerHTML;\n }\n });\n };\n\n getLabel(choices, value) {\n const found = (choices || []).find((choice) => choice.value === value);\n\n return found ? found.label.trim() : undefined;\n }\n\n render() {\n const { classes, id, correct, disabled, value, choices, showCorrectAnswer, singleQuery, correctValue } = this.props;\n const { anchorEl } = this.state;\n const open = Boolean(anchorEl);\n const buttonId = `dropdown-button-${id}`;\n const menuId = `dropdown-menu-${id}`;\n const valueDisplayId = `dropdown-value-${id}`;\n\n // Determine the class for disabled state, view mode and evaluate mode\n let disabledClass;\n // Reset elementRefs before each render to avoid stale references\n this.elementRefs = [];\n\n if (disabled && correct !== undefined) {\n disabledClass = correct || showCorrectAnswer ? classes.disabledCorrect : classes.disabledIncorrect;\n }\n\n // Create distinct, visually hidden labels for each dropdown\n const incrementedId = parseInt(id, 10) + 1;\n const labelId = singleQuery ? 'Query-label' : `Query-label-${incrementedId}`;\n const labelText = singleQuery ? 'Query' : `Query ${incrementedId}`;\n\n // Changed from Select to Button for dropdown to enhance accessibility. This modification offers explicit control over aria attributes and focuses management, ensuring the dropdown is compliant with accessibility standards. The use of Button and Menu components allows for better handling of keyboard interactions and provides accessible labels and menus, aligning with WCAG guidelines and improving usability for assistive technology users.\n let correctnessIcon = null;\n if (disabled && correct !== undefined) {\n correctnessIcon =\n correct || showCorrectAnswer ? (\n <Check className={classNames(classes.correctnessIndicatorIcon, classes.correctIcon)} />\n ) : (\n <Close className={classNames(classes.correctnessIndicatorIcon, classes.incorrectIcon)} />\n );\n }\n\n return (\n <>\n <div\n ref={this.hiddenRef}\n style={{ position: 'absolute', visibility: 'hidden', top: 0, left: 0 }}\n tabIndex={-1}\n aria-hidden=\"true\"\n >\n {(choices || []).map((c, index) => (\n <MenuItem\n key={index}\n classes={{ root: classes.menuRoot, selected: classes.selected }}\n tabIndex={-1}\n aria-hidden=\"true\"\n >\n <span className={classes.label} dangerouslySetInnerHTML={{ __html: c.label }} />\n </MenuItem>\n ))}\n </div>\n <InputLabel className={classes.srOnly} id={labelId} tabIndex={-1} aria-hidden=\"true\">\n {labelText}\n </InputLabel>\n <Button\n ref={this.buttonRef}\n style={{\n ...(this.state.menuWidth && { minWidth: `calc(${this.state.menuWidth}px + 8px)` }),\n borderWidth: open ? '2px' : '1px',\n transition: 'border-width 0.2s ease-in-out',\n }}\n aria-controls={open ? menuId : undefined}\n aria-haspopup=\"listbox\"\n aria-expanded={open ? 'true' : undefined}\n aria-activedescendant={this.state.highlightedOptionId}\n onClick={this.handleClick}\n classes={{\n root: classes.root,\n disabled: disabledClass,\n }}\n disabled={disabled}\n id={buttonId}\n role=\"combobox\"\n aria-label={`Select an option for ${labelText}`}\n aria-labelledby={valueDisplayId}\n >\n {correctnessIcon}\n <span\n id={valueDisplayId}\n ref={this.previewRef}\n className={classes.label}\n dangerouslySetInnerHTML={{\n __html: correctValue\n ? correctValue\n : open && this.state.previewValue\n ? this.getLabel(choices, this.state.previewValue)\n : this.getLabel(choices, value) || '',\n }}\n />\n {open ? <ArrowDropUpIcon /> : <ArrowDropDownIcon />}\n </Button>\n <Menu\n id={menuId}\n anchorEl={anchorEl}\n className={classes.selectMenu}\n keepMounted\n open={open}\n onClose={this.handleClose}\n getContentAnchorEl={null}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n PaperProps={this.state.menuWidth ? { style: { minWidth: this.state.menuWidth, padding: '4px' } } : undefined}\n MenuListProps={{\n 'aria-labelledby': buttonId,\n role: 'listbox',\n disablePadding: true,\n }}\n >\n {(choices || []).map((c, index) => {\n const optionId = `dropdown-option-${id}-${index}`;\n\n return (\n <MenuItem\n id={optionId}\n classes={{ root: classes.menuRoot, selected: classes.selected }}\n key={`${c.label}-${index}`}\n value={c.value}\n onClick={() => this.handleSelect(c.value, index)}\n role=\"option\"\n aria-selected={this.state.highlightedOptionId === optionId ? 'true' : undefined}\n onMouseOver={() => this.handleHover(index)}\n >\n <span\n ref={(ref) => (this.elementRefs[index] = ref)}\n className={classes.label}\n dangerouslySetInnerHTML={{ __html: c.label }}\n />\n <span\n className={classes.selectedIndicator}\n dangerouslySetInnerHTML={{ __html: c.value === value ? ' ✓' : '' }}\n />\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n }\n}\n\nconst styles = () => ({\n root: {\n color: color.text(),\n border: `1px solid ${color.borderGray()}`,\n borderRadius: '4px',\n justifyContent: 'space-between',\n backgroundColor: color.background(),\n position: 'relative',\n height: '45px',\n width: 'fit-content',\n margin: '2px',\n textTransform: 'none',\n '& span': {\n paddingRight: '5px',\n },\n '& svg': {\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 12px)',\n pointerEvents: 'none',\n color: color.text(),\n marginLeft: '5px',\n },\n '&:focus, &:focus-visible': {\n outline: `3px solid ${color.tertiary()}`,\n outlineOffset: '2px',\n borderWidth: '3px',\n },\n },\n disabledCorrect: {\n borderWidth: '2px',\n borderColor: color.correct(),\n color: `${color.text()} !important`,\n },\n disabledIncorrect: {\n borderWidth: '2px',\n borderColor: color.incorrectWithIcon(),\n color: `${color.text()} !important`,\n },\n selectMenu: {\n backgroundColor: color.background(),\n border: `1px solid ${color.correct()} !important`,\n '&:hover': {\n border: `1px solid ${color.text()} `,\n borderColor: 'initial',\n },\n '&:focus': {\n border: `1px solid ${color.text()}`,\n borderColor: 'initial',\n },\n // remove default padding on the inner list\n '& .MuiList-root': {\n padding: 0,\n },\n },\n selected: {\n color: `${color.text()} !important`,\n backgroundColor: `${color.background()} !important`,\n '&:hover': {\n color: color.text(),\n backgroundColor: `${color.dropdownBackground()} !important`,\n },\n },\n menuRoot: {\n color: color.text(),\n backgroundColor: color.background(),\n '&:focus, &:focus-visible': {\n outline: `3px solid ${color.tertiary()}`,\n outlineOffset: '-1px', // keeps it inside the item\n },\n '&:focus': {\n color: color.text(),\n backgroundColor: color.background(),\n },\n '&:hover': {\n color: color.text(),\n backgroundColor: color.dropdownBackground(),\n },\n boxSizing: 'border-box',\n padding: '25px',\n borderRadius: '4px',\n },\n label: {\n fontSize: 'max(1rem, 14px)',\n },\n selectedIndicator: {\n fontSize: 'max(1rem, 14px)',\n position: 'absolute',\n right: '10px',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n correctnessIndicatorIcon: {\n color: `${color.white()} !important`,\n position: 'absolute',\n top: '-8px !important',\n left: '-8px',\n marginLeft: '0 !important',\n borderRadius: '50%',\n fontSize: '16px',\n padding: '2px',\n },\n correctIcon: {\n backgroundColor: color.correct(),\n },\n incorrectIcon: {\n backgroundColor: color.incorrectWithIcon(),\n },\n});\n\nexport default withStyles(styles)(Dropdown);\n","import React from 'react';\nimport Dropdown from './components/dropdown';\nimport { withMask } from './with-mask';\n\n// eslint-disable-next-line react/display-name\nexport default withMask('dropdown', (props) => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n if (dataset.component === 'dropdown') {\n // eslint-disable-next-line react/prop-types\n const { choices, disabled, feedback, showCorrectAnswer } = props;\n const correctAnswer = choices && choices[dataset.id] && choices[dataset.id].find((c) => c.correct);\n const finalChoice = showCorrectAnswer ? correctAnswer && correctAnswer.value : data[dataset.id];\n\n return (\n <Dropdown\n key={`${node.type}-dropdown-${dataset.id}`}\n correct={feedback && feedback[dataset.id] && feedback[dataset.id] === 'correct'}\n disabled={disabled || showCorrectAnswer}\n value={finalChoice}\n correctValue={showCorrectAnswer ? correctAnswer && correctAnswer.label : undefined}\n id={dataset.id}\n onChange={onChange}\n choices={choices[dataset.id]}\n showCorrectAnswer={showCorrectAnswer}\n singleQuery={Object.keys(choices).length == 1}\n />\n );\n }\n});\n"],"names":["log","debug","INLINE","MARK","TEXT_NODE","COMMENT_NODE","attr","el","attributes","length","undefined","out","i","a","name","value","getObject","type","includes","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","toStyleObject","camelize","addUnits","handleStyles","attribute","styleString","getAttribute","handleClass","acc","classNames","class","attributesToMap","style","className","MARK_TAGS","b","em","u","code","strong","marks","deserialize","next","mark","tagName","toLowerCase","object","nodes","childNodes","rules","nodeType","leaves","text","textContent","normalAttrs","controls","allAttrs","reduce","isMath","data","dataset","html","Html","defaultBlock","toJSON","Paragraph","withStyles","theme","para","paddingTop","spacing","unit","paddingBottom","props","classes","children","Spacer","spacer","display","width","restrictWhitespaceTypes","addText","parentNode","isWhitespace","parentType","getMark","n","find","leave","get","renderChildren","layout","onChange","rootRenderChildren","elementType","forEach","index","key","push","__html","innerHTML","c","content","l","t","extraText","markKey","Tag","subNodes","MaskContainer","main","tableStyle","borderCollapse","padding","textAlign","cx","Mask","React","Component","handleChange","id","render","propTypes","PropTypes","func","string","REGEX","markup","replace","g","buildLayoutFromMarkup","processed","componentize","document","withMask","WithMask","componentDidUpdate","prevProps","domNode","ReactDOM","findDOMNode","mathElements","querySelectorAll","mjxContainer","querySelector","removeChild","latexCode","removeAttribute","maskLayout","customMarkMarkupComponent","DRAG_TYPE","BlankContentComp","startDrag","connectDragSource","disabled","dragContainerRef","handleTouchStart","e","preventDefault","longPressTimer","setTimeout","handleTouchEnd","clearTimeout","handleTouchMove","componentDidMount","addEventListener","passive","componentWillUnmount","removeEventListener","renderMath","rootRef","choice","classnames","ref","chip","chipLabel","bool","BlankContent","border","palette","primary","borderRadius","margin","transform","backgroundColor","color","white","alignItems","height","minHeight","fontSize","whiteSpace","maxWidth","pointerEvents","opacity","tileSource","canDrag","beginDrag","instanceId","DragDropTile","DragSource","connect","monitor","dragSource","isDragging","Choices","getStyleForWrapper","choicePosition","duplicates","choices","filteredChoices","filter","foundChoice","findKey","v","elementStyle","minWidth","map","Choice","arrayOf","shape","label","isRequired","useStyles","touchAction","overflow","background","position","marginTop","marginBottom","hidden","dragged","left","correct","incorrect","over","parentOver","grey","constructor","handleImageLoad","updateDimensions","touchStartTimer","state","handleElements","imageElement","spanRef","onload","currentChoice","prevChoice","JSON","stringify","setState","offsetWidth","offsetHeight","widthWithPadding","heightWithPadding","responseAreaWidth","parseFloat","emptyResponseAreaWidth","responseAreaHeight","emptyResponseAreaHeight","adjustedWidth","adjustedHeight","prevState","addDraggableFalseAttributes","parent","elem","Element","HTMLDocument","setAttribute","getRootDimensions","isNaN","rootStyle","isOver","dragItem","draggedLabel","defaultProps","oneOfType","number","StyledBlankContent","connectedBlankContent","connectDropTarget","tileTarget","drop","draggedItem","getItem","dropped","canDrop","DropTile","DropTarget","dropTarget","fromChoice","endDrag","dropResult","getDropResult","Masked","node","component","correctResponse","feedback","showCorrectAnswer","choiceId","Blank","DragInTheBlank","getPositionDirection","flexDirection","justifyContent","UNSAFE_componentWillReceiveProps","choicesPosition","styles","editableHtmlCustom","verticalAlign","black","MaskedInput","adjustedLimit","maxLength","spellCheck","pluginProps","correctAnswer","finalValue","feedbackStatus","isCorrect","isIncorrect","handleInputChange","newValue","updatedValue","handleKeyDown","event","keyCode","language","noBorder","isHidden","characters","Dropdown","handleClick","anchorEl","currentTarget","handleClose","previewValue","highlightedOptionId","previewRef","current","handleHighlight","stateUpdate","handleSelect","handleHover","selectedValue","elementRefs","preview","menuWidth","hiddenRef","createRef","buttonRef","clientWidth","hiddenEl","dropdownJustOpened","containsLatex","hasMathJax","mathHandled","newWidth","getLabel","found","singleQuery","correctValue","open","Boolean","buttonId","menuId","valueDisplayId","disabledClass","disabledCorrect","disabledIncorrect","incrementedId","parseInt","labelId","labelText","correctnessIcon","correctnessIndicatorIcon","correctIcon","incorrectIcon","visibility","top","root","menuRoot","selected","srOnly","borderWidth","transition","selectMenu","vertical","horizontal","role","disablePadding","optionId","selectedIndicator","borderGray","textTransform","paddingRight","right","marginLeft","outline","tertiary","outlineOffset","borderColor","incorrectWithIcon","dropdownBackground","boxSizing","finalChoice","Object","keys"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/type-of/index.js","../../../node_modules/isobject/index.js","../../../node_modules/is-plain-object/index.js","../../../node_modules/slate-dev-logger/lib/slate-dev-logger.es.js","../../../node_modules/immutable/dist/immutable.es.js","../../../node_modules/direction/index.js","../../../node_modules/esrever/esrever.js","../../../node_modules/slate-schema-violations/lib/slate-schema-violations.es.js","../../../node_modules/is-empty/lib/index.js","../../../node_modules/slate/lib/slate.es.js","../../../node_modules/slate-html-serializer/lib/slate-html-serializer.es.js","../src/serialization.js","../src/mask.jsx","../src/componentize.js","../src/with-mask.jsx","../src/choices/choice.jsx","../src/choices/index.jsx","../src/components/blank.jsx","../src/drag-in-the-blank.jsx","../src/constructed-response.jsx","../src/customizable.jsx","../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/inheritsLoose.js","../../../node_modules/recompose/setStatic.js","../../../node_modules/recompose/setDisplayName.js","../../../node_modules/recompose/getDisplayName.js","../../../node_modules/recompose/wrapDisplayName.js","../../../node_modules/recompose/shouldUpdate.js","../../../node_modules/fbjs/lib/shallowEqual.js","../../../node_modules/recompose/shallowEqual.js","../../../node_modules/recompose/pure.js","../../../node_modules/@material-ui/icons/utils/createSvgIcon.js","../../../node_modules/@material-ui/icons/ArrowDropDown.js","../../../node_modules/@material-ui/icons/ArrowDropUp.js","../../../node_modules/@material-ui/icons/Close.js","../../../node_modules/@material-ui/icons/Check.js","../src/components/dropdown.jsx","../src/inline-dropdown.jsx"],"sourcesContent":["var toString = Object.prototype.toString\r\n\r\nmodule.exports = function(val){\r\n switch (toString.call(val)) {\r\n case '[object Function]': return 'function'\r\n case '[object Date]': return 'date'\r\n case '[object RegExp]': return 'regexp'\r\n case '[object Arguments]': return 'arguments'\r\n case '[object Array]': return 'array'\r\n case '[object String]': return 'string'\r\n }\r\n\r\n if (typeof val == 'object' && val && typeof val.length == 'number') {\r\n try {\r\n if (typeof val.callee == 'function') return 'arguments';\r\n } catch (ex) {\r\n if (ex instanceof TypeError) {\r\n return 'arguments';\r\n }\r\n }\r\n }\r\n\r\n if (val === null) return 'null'\r\n if (val === undefined) return 'undefined'\r\n if (val && val.nodeType === 1) return 'element'\r\n if (val === Object(val)) return 'object'\r\n\r\n return typeof val\r\n}\r\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","var global$1 = typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {}\n\n// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global$1.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global$1.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nvar title = 'browser';\nvar platform = 'browser';\nvar browser = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\nvar versions = {};\nvar release = {};\nvar config = {};\n\nfunction noop() {}\n\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\n\nfunction binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nfunction cwd () { return '/' }\nfunction chdir (dir) {\n throw new Error('process.chdir is not supported');\n}\nfunction umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global$1.performance || {};\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() };\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor((clocktime%1)*1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds<0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nfunction uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nvar process = {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n\n/* eslint-disable no-console */\n\n/**\n * Is deprecate interface forbidden?\n */\n\nvar FORBID_DEPRECATE = process && process.env && process.env.FORBID_DEPRECATIONS;\n\n/**\n * Is warning scenarios forbidden?\n */\n\nvar FORBID_WARNING = process && process.env && process.env.FORBID_WARNINGS;\n\n/**\n * Is in development?\n *\n * @type {Boolean}\n */\n\nvar IS_DEV = typeof process !== 'undefined' && process.env && \"development\" !== 'production';\n\n/**\n * Has console?\n *\n * @type {Boolean}\n */\n\nvar HAS_CONSOLE = typeof console != 'undefined' && typeof console.log == 'function' && typeof console.warn == 'function' && typeof console.error == 'function';\n\n/**\n * Log a `message` at `level`.\n *\n * @param {String} level\n * @param {String} message\n * @param {Any} ...args\n */\n\nfunction log(level, message) {\n if (!IS_DEV) {\n return;\n }\n\n if (HAS_CONSOLE) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n (_console = console)[level].apply(_console, [message].concat(args));\n }\n}\n\n/**\n * Log an error `message`.\n *\n * @param {String} message\n * @param {Any} ...args\n */\n\nfunction error(message) {\n if (HAS_CONSOLE) {\n var _console2;\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (_console2 = console).error.apply(_console2, [message].concat(args));\n }\n}\n\n/**\n * Log a warning `message` in development only.\n *\n * @param {String} message\n * @param {Any} ...args\n */\n\nfunction warn(message) {\n var logger = FORBID_WARNING ? forbidden : log;\n\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n logger.apply(undefined, ['warn', 'Warning: ' + message].concat(args));\n}\n\n/**\n * Log a deprecation warning `message`, with helpful `version` number in\n * development only.\n *\n * @param {String} version\n * @param {String} message\n * @param {Any} ...args\n */\n\nfunction deprecate(version$$1, message) {\n var logger = FORBID_DEPRECATE ? forbidden : log;\n\n for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n logger.apply(undefined, ['warn', 'Deprecation (' + version$$1 + '): ' + message].concat(args));\n}\n\nfunction forbidden(level, message) {\n throw new Error(message);\n}\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nvar index = {\n deprecate: deprecate,\n error: error,\n warn: warn\n};\n\nexport default index;\n//# sourceMappingURL=slate-dev-logger.es.js.map\n","/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nfunction isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n}\n\nfunction isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n function Seq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection ) Seq.__proto__ = Collection;\n Seq.prototype = Object.create( Collection && Collection.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === null || value === undefined\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (\n isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value)\n ? seq.fromEntrySeq()\n : isKeysIterable(value)\n ? seq.toSetSeq()\n : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n var v = valueOf(o);\n\n if (v == null) {\n return hashNullish(v);\n }\n\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(v)\n : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n}\n\nfunction hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = nextHash();\n\n symbolMap[sym] = hashed;\n\n return hashed;\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = nextHash();\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\nfunction valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n ? obj.valueOf(obj)\n : obj;\n}\n\nfunction nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar symbolMap = Object.create(null);\n\nvar _objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n fn(v, iterations++, this$1$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries\n .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n .forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(\n null,\n steps.map(function (s) { return s.value; })\n )\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (\n !value ||\n typeof value !== 'object' ||\n toString.call(value) !== '[object Object]'\n ) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n );\n}\n\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n}\n\nfunction update(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n}\n\nfunction merge$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) &&\n isDataStructure(newValue) &&\n areMergeable(oldValue, newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return (\n isIndexed(oldSeq) === isIndexed(newSeq) &&\n isKeyed(oldSeq) === isKeyed(newSeq)\n );\n}\n\nfunction mergeDeep() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n function Map(value) {\n return value === null || value === undefined\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator ) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n function OrderedMap(value) {\n return value === null || value === undefined\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map ) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create( Map && Map.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n function Stack(value) {\n return value === null || value === undefined\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n function Set(value) {\n return value === null || value === undefined\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection ) Set.__proto__ = SetCollection;\n Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n\n var newMap = updateSet(\n this,\n this._map.mapEntries(function (ref) {\n var v = ref[1];\n\n var mapped = mapper.call(context, v, v, this$1$1);\n\n if (mapped !== v) {\n didChanges = true;\n }\n\n return [mapped, mapped];\n }, context)\n );\n\n return didChanges ? newMap : this;\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq().map(this.__toStringMapper).join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n this.size === Infinity ||\n (this.size !== undefined && index > this.size)\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n function OrderedSet(value) {\n return value === null || value === undefined\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set ) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create( Set && Set.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n );\n }\n\n if (isImmutable(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n );\n }\n\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error(\n 'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n );\n }\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n throwOnInvalidDefaultValues(defaultValues);\n\n var RecordType = function Record(values) {\n var this$1$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n\n var RecordTypePrototype = (RecordType.prototype =\n Object.create(RecordPrototype));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other || (other && recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (\n typeof value !== 'string' &&\n !isImmutable(value) &&\n (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n ) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"4.0.0\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };\n","'use strict';\n\nvar GROUP_LEFT_TO_RIGHT,\n GROUP_RIGHT_TO_LEFT,\n EXPRESSION_LEFT_TO_RIGHT,\n EXPRESSION_RIGHT_TO_LEFT;\n\n/*\n * Character ranges of left-to-right characters.\n */\n\nGROUP_LEFT_TO_RIGHT = 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF';\n\n/*\n * Character ranges of right-to-left characters.\n */\n\nGROUP_RIGHT_TO_LEFT = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC';\n\n/*\n * Expression to match a left-to-right string.\n *\n * Matches the start of a string, followed by zero or\n * more non-right-to-left characters, followed by a\n * left-to-right character.\n */\n\nEXPRESSION_LEFT_TO_RIGHT = new RegExp(\n '^[^' + GROUP_RIGHT_TO_LEFT + ']*[' + GROUP_LEFT_TO_RIGHT + ']'\n);\n\n/*\n * Expression to match a right-to-left string.\n *\n * Matches the start of a string, followed by zero or\n * more non-left-to-right characters, followed by a\n * right-to-left character.\n */\n\nEXPRESSION_RIGHT_TO_LEFT = new RegExp(\n '^[^' + GROUP_LEFT_TO_RIGHT + ']*[' + GROUP_RIGHT_TO_LEFT + ']'\n);\n\n/**\n * Detect the direction of text.\n *\n * @param {string} value - value to stringify and check.\n * @return {string} - One of `\"rtl\"`, `\"ltr\"`, or\n * `\"neutral\"`.\n */\nfunction direction(value) {\n value = value.toString();\n\n if (EXPRESSION_RIGHT_TO_LEFT.test(value)) {\n return 'rtl';\n }\n\n if (EXPRESSION_LEFT_TO_RIGHT.test(value)) {\n return 'ltr';\n }\n\n return 'neutral';\n}\n\n/*\n * Expose `direction`.\n */\n\nmodule.exports = direction;\n","/*! https://mths.be/esrever v0.2.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar regexSymbolWithCombiningMarks = /([\\0-\\u02FF\\u0370-\\u1AAF\\u1B00-\\u1DBF\\u1E00-\\u20CF\\u2100-\\uD7FF\\uE000-\\uFE1F\\uFE30-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])([\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]+)/g;\n\tvar regexSurrogatePair = /([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g;\n\n\tvar reverse = function(string) {\n\t\t// Step 1: deal with combining marks and astral symbols (surrogate pairs)\n\t\tstring = string\n\t\t\t// Swap symbols with their combining marks so the combining marks go first\n\t\t\t.replace(regexSymbolWithCombiningMarks, function($0, $1, $2) {\n\t\t\t\t// Reverse the combining marks so they will end up in the same order\n\t\t\t\t// later on (after another round of reversing)\n\t\t\t\treturn reverse($2) + $1;\n\t\t\t})\n\t\t\t// Swap high and low surrogates so the low surrogates go first\n\t\t\t.replace(regexSurrogatePair, '$2$1');\n\t\t// Step 2: reverse the code units in the string\n\t\tvar result = '';\n\t\tvar index = string.length;\n\t\twhile (index--) {\n\t\t\tresult += string.charAt(index);\n\t\t}\n\t\treturn result;\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar esrever = {\n\t\t'version': '0.2.0',\n\t\t'reverse': reverse\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn esrever;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = esrever;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in esrever) {\n\t\t\t\tesrever.hasOwnProperty(key) && (freeExports[key] = esrever[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.esrever = esrever;\n\t}\n\n}(this));\n","/**\n * Schema violations.\n *\n * @type {String}\n */\n\nvar CHILD_OBJECT_INVALID = 'child_object_invalid';\nvar CHILD_REQUIRED = 'child_required';\nvar CHILD_TYPE_INVALID = 'child_type_invalid';\nvar CHILD_UNKNOWN = 'child_unknown';\nvar FIRST_CHILD_OBJECT_INVALID = 'first_child_object_invalid';\nvar FIRST_CHILD_TYPE_INVALID = 'first_child_type_invalid';\nvar LAST_CHILD_OBJECT_INVALID = 'last_child_object_invalid';\nvar LAST_CHILD_TYPE_INVALID = 'last_child_type_invalid';\nvar NEXT_SIBLING_OBJECT_INVALID = 'next_sibling_object_invalid';\nvar NEXT_SIBLING_TYPE_INVALID = 'next_sibling_type_invalid';\nvar NODE_DATA_INVALID = 'node_data_invalid';\nvar NODE_IS_VOID_INVALID = 'node_is_void_invalid';\nvar NODE_MARK_INVALID = 'node_mark_invalid';\nvar NODE_OBJECT_INVALID = 'node_object_invalid';\nvar NODE_TEXT_INVALID = 'node_text_invalid';\nvar NODE_TYPE_INVALID = 'node_type_invalid';\nvar PARENT_OBJECT_INVALID = 'parent_object_invalid';\nvar PARENT_TYPE_INVALID = 'parent_type_invalid';\nvar PREVIOUS_SIBLING_OBJECT_INVALID = 'previous_sibling_object_invalid';\nvar PREVIOUS_SIBLING_TYPE_INVALID = 'previous_sibling_type_invalid';\n\nexport { CHILD_OBJECT_INVALID, CHILD_REQUIRED, CHILD_TYPE_INVALID, CHILD_UNKNOWN, FIRST_CHILD_OBJECT_INVALID, FIRST_CHILD_TYPE_INVALID, LAST_CHILD_OBJECT_INVALID, LAST_CHILD_TYPE_INVALID, NEXT_SIBLING_OBJECT_INVALID, NEXT_SIBLING_TYPE_INVALID, NODE_DATA_INVALID, NODE_IS_VOID_INVALID, NODE_MARK_INVALID, NODE_OBJECT_INVALID, NODE_TEXT_INVALID, NODE_TYPE_INVALID, PARENT_OBJECT_INVALID, PARENT_TYPE_INVALID, PREVIOUS_SIBLING_OBJECT_INVALID, PREVIOUS_SIBLING_TYPE_INVALID };\n//# sourceMappingURL=slate-schema-violations.es.js.map\n","\n/**\n * Has own property.\n *\n * @type {Function}\n */\n\nvar has = Object.prototype.hasOwnProperty\n\n/**\n * To string.\n *\n * @type {Function}\n */\n\nvar toString = Object.prototype.toString\n\n/**\n * Test whether a value is \"empty\".\n *\n * @param {Mixed} val\n * @return {Boolean}\n */\n\nfunction isEmpty(val) {\n // Null and Undefined...\n if (val == null) return true\n\n // Booleans...\n if ('boolean' == typeof val) return false\n\n // Numbers...\n if ('number' == typeof val) return val === 0\n\n // Strings...\n if ('string' == typeof val) return val.length === 0\n\n // Functions...\n if ('function' == typeof val) return val.length === 0\n\n // Arrays...\n if (Array.isArray(val)) return val.length === 0\n\n // Errors...\n if (val instanceof Error) return val.message === ''\n\n // Objects...\n if (val.toString == toString) {\n switch (val.toString()) {\n\n // Maps, Sets, Files and Errors...\n case '[object File]':\n case '[object Map]':\n case '[object Set]': {\n return val.size === 0\n }\n\n // Plain objects...\n case '[object Object]': {\n for (var key in val) {\n if (has.call(val, key)) return false\n }\n\n return true\n }\n }\n }\n\n // Anything else...\n return false\n}\n\n/**\n * Export `isEmpty`.\n *\n * @type {Function}\n */\n\nmodule.exports = isEmpty\n","import isPlainObject from 'is-plain-object';\nimport logger from 'slate-dev-logger';\nimport { List, Map as Map$1, Record, Set, OrderedSet, Stack, is } from 'immutable';\nimport direction from 'direction';\nimport { reverse } from 'esrever';\nimport Debug from 'debug';\nimport isEqual from 'lodash/isEqual';\nimport { CHILD_OBJECT_INVALID, CHILD_REQUIRED, CHILD_TYPE_INVALID, CHILD_UNKNOWN, FIRST_CHILD_OBJECT_INVALID, FIRST_CHILD_TYPE_INVALID, LAST_CHILD_OBJECT_INVALID, LAST_CHILD_TYPE_INVALID, NODE_DATA_INVALID, NODE_IS_VOID_INVALID, NODE_MARK_INVALID, NODE_OBJECT_INVALID, NODE_TEXT_INVALID, NODE_TYPE_INVALID, PARENT_OBJECT_INVALID, PARENT_TYPE_INVALID } from 'slate-schema-violations';\nimport pick from 'lodash/pick';\nimport omit from 'lodash/omit';\nimport isEmpty from 'is-empty';\n\n/**\n * Slate-specific model types.\n *\n * @type {Object}\n */\n\nvar MODEL_TYPES = {\n BLOCK: '@@__SLATE_BLOCK__@@',\n CHANGE: '@@__SLATE_CHANGE__@@',\n CHARACTER: '@@__SLATE_CHARACTER__@@',\n DOCUMENT: '@@__SLATE_DOCUMENT__@@',\n HISTORY: '@@__SLATE_HISTORY__@@',\n INLINE: '@@__SLATE_INLINE__@@',\n LEAF: '@@__SLATE_LEAF__@@',\n MARK: '@@__SLATE_MARK__@@',\n OPERATION: '@@__SLATE_OPERATION__@@',\n RANGE: '@@__SLATE_RANGE__@@',\n SCHEMA: '@@__SLATE_SCHEMA__@@',\n STACK: '@@__SLATE_STACK__@@',\n TEXT: '@@__SLATE_TEXT__@@',\n VALUE: '@@__SLATE_VALUE__@@'\n\n /**\n * Export type identification function\n *\n * @param {string} type\n * @param {any} any\n * @return {boolean}\n */\n\n};function isType(type, any) {\n return !!(any && any[MODEL_TYPES[type]]);\n}\n\n/**\n * An auto-incrementing index for generating keys.\n *\n * @type {Number}\n */\n\nvar n = void 0;\n\n/**\n * The global key generating function.\n *\n * @type {Function}\n */\n\nvar generate = void 0;\n\n/**\n * Create a key, using a provided key if available.\n *\n * @param {String|Void} key\n * @return {String}\n */\n\nfunction create(key) {\n if (key == null) {\n return generate();\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n throw new Error('Keys must be strings, but you passed: ' + key);\n}\n\n/**\n * Set a different unique ID generating `function`.\n *\n * @param {Function} func\n */\n\nfunction setGenerator(func) {\n generate = func;\n}\n\n/**\n * Reset the key generating function to its initial state.\n */\n\nfunction resetGenerator() {\n n = 0;\n generate = function generate() {\n return '' + n++;\n };\n}\n\n/**\n * Set the initial state.\n */\n\nresetGenerator();\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar KeyUtils = {\n create: create,\n setGenerator: setGenerator,\n resetGenerator: resetGenerator\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * Dependencies.\n */\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS = {\n data: new Map$1(),\n isVoid: false,\n key: undefined,\n nodes: new List(),\n type: undefined\n\n /**\n * Block.\n *\n * @type {Block}\n */\n\n};\nvar Block = function (_Record) {\n inherits(Block, _Record);\n\n function Block() {\n classCallCheck(this, Block);\n return possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).apply(this, arguments));\n }\n\n createClass(Block, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the block.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n type: this.type,\n isVoid: this.isVoid,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'block';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n\n /**\n * Check if the block is empty.\n * Returns true if block is not void and all it's children nodes are empty.\n * Void node is never empty, regardless of it's content.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n return !this.isVoid && !this.nodes.some(function (child) {\n return !child.isEmpty;\n });\n }\n\n /**\n * Get the concatenated text of all the block's children.\n *\n * @return {String}\n */\n\n }, {\n key: 'text',\n get: function get$$1() {\n return this.getText();\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Block` from `attrs`.\n *\n * @param {Object|String|Block} attrs\n * @return {Block}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Block.fromJSON(attrs);\n }\n\n throw new Error('`Block.create` only accepts objects, strings or blocks, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Blocks` from `attrs`.\n *\n * @param {Array<Block|Object>|List<Block|Object>} attrs\n * @return {List<Block>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(attrs) || Array.isArray(attrs)) {\n var list = new List(attrs.map(Block.create));\n return list;\n }\n\n throw new Error('`Block.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Block` from a JSON `object`.\n *\n * @param {Object|Block} object\n * @return {Block}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Block.isBlock(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$isVoid = object.isVoid,\n isVoid = _object$isVoid === undefined ? false : _object$isVoid,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n\n if (typeof type != 'string') {\n throw new Error('`Block.fromJSON` requires a `type` string.');\n }\n\n var block = new Block({\n key: key,\n type: type,\n isVoid: !!isVoid,\n data: Map$1(data),\n nodes: Block.createChildren(nodes)\n });\n\n return block;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Block`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isBlockList',\n\n\n /**\n * Check if `any` is a block list.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n value: function isBlockList(any) {\n return List.isList(any) && any.every(function (item) {\n return Block.isBlock(item);\n });\n }\n }]);\n return Block;\n}(Record(DEFAULTS));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nBlock.fromJS = Block.fromJSON;\nBlock.isBlock = isType.bind(null, 'BLOCK');\nBlock.prototype[MODEL_TYPES.BLOCK] = true;\n\n/**\n * Dependencies.\n */\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$1 = {\n data: new Map$1(),\n isVoid: false,\n key: undefined,\n nodes: new List(),\n type: undefined\n\n /**\n * Inline.\n *\n * @type {Inline}\n */\n\n};\nvar Inline = function (_Record) {\n inherits(Inline, _Record);\n\n function Inline() {\n classCallCheck(this, Inline);\n return possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n createClass(Inline, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the inline.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n type: this.type,\n isVoid: this.isVoid,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'inline';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n\n /**\n * Check if the inline is empty.\n * Returns true if inline is not void and all it's children nodes are empty.\n * Void node is never empty, regardless of it's content.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n return !this.isVoid && !this.nodes.some(function (child) {\n return !child.isEmpty;\n });\n }\n\n /**\n * Get the concatenated text of all the inline's children.\n *\n * @return {String}\n */\n\n }, {\n key: 'text',\n get: function get$$1() {\n return this.getText();\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Inline` with `attrs`.\n *\n * @param {Object|String|Inline} attrs\n * @return {Inline}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Inline.isInline(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Inline.fromJSON(attrs);\n }\n\n throw new Error('`Inline.create` only accepts objects, strings or inlines, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Inlines` from an array.\n *\n * @param {Array<Inline|Object>|List<Inline|Object>} elements\n * @return {List<Inline>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Inline.create));\n return list;\n }\n\n throw new Error('`Inline.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Inline` from a JSON `object`.\n *\n * @param {Object|Inline} object\n * @return {Inline}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Inline.isInline(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$isVoid = object.isVoid,\n isVoid = _object$isVoid === undefined ? false : _object$isVoid,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n\n if (typeof type != 'string') {\n throw new Error('`Inline.fromJS` requires a `type` string.');\n }\n\n var inline = new Inline({\n key: key,\n type: type,\n isVoid: !!isVoid,\n data: new Map$1(data),\n nodes: Inline.createChildren(nodes)\n });\n\n return inline;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Inline`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isInlineList',\n\n\n /**\n * Check if `any` is a list of inlines.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n value: function isInlineList(any) {\n return List.isList(any) && any.every(function (item) {\n return Inline.isInline(item);\n });\n }\n }]);\n return Inline;\n}(Record(DEFAULTS$1));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nInline.fromJS = Inline.fromJSON;\nInline.isInline = isType.bind(null, 'INLINE');\nInline.prototype[MODEL_TYPES.INLINE] = true;\n\n/**\n * Data.\n *\n * This isn't an immutable record, it's just a thin wrapper around `Map` so that\n * we can allow for more convenient creation.\n *\n * @type {Object}\n */\n\nvar Data = function () {\n function Data() {\n classCallCheck(this, Data);\n }\n\n createClass(Data, null, [{\n key: 'create',\n\n /**\n * Create a new `Data` with `attrs`.\n *\n * @param {Object|Data|Map} attrs\n * @return {Data} data\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Map$1.isMap(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Data.fromJSON(attrs);\n }\n\n throw new Error('`Data.create` only accepts objects or maps, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Data` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Data}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n return new Map$1(object);\n }\n\n /**\n * Alias `fromJS`.\n */\n\n }]);\n return Data;\n}();\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nData.fromJS = Data.fromJSON;\n\n/**\n * GLOBAL: True if memoization should is enabled.\n *\n * @type {Boolean}\n */\n\nvar ENABLED = true;\n\n/**\n * GLOBAL: Changing this cache key will clear all previous cached results.\n *\n * @type {Number}\n */\n\nvar CACHE_KEY = 0;\n\n/**\n * The leaf node of a cache tree. Used to support variable argument length. A\n * unique object, so that native Maps will key it by reference.\n *\n * @type {Object}\n */\n\nvar LEAF = {};\n\n/**\n * A value to represent a memoized undefined value. Allows efficient value\n * retrieval using Map.get only.\n *\n * @type {Object}\n */\n\nvar UNDEFINED = {};\n\n/**\n * Default value for unset keys in native Maps\n *\n * @type {Undefined}\n */\n\nvar UNSET = undefined;\n\n/**\n * Memoize all of the `properties` on a `object`.\n *\n * @param {Object} object\n * @param {Array} properties\n * @return {Record}\n */\n\nfunction memoize(object, properties) {\n var _loop = function _loop(property) {\n var original = object[property];\n\n if (!original) {\n throw new Error(\"Object does not have a property named \\\"\" + property + \"\\\".\");\n }\n\n object[property] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // If memoization is disabled, call into the original method.\n if (!ENABLED) return original.apply(this, args);\n\n // If the cache key is different, previous caches must be cleared.\n if (CACHE_KEY !== this.__cache_key) {\n this.__cache_key = CACHE_KEY;\n this.__cache = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n this.__cache_no_args = {};\n }\n\n if (!this.__cache) {\n this.__cache = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n }\n\n if (!this.__cache_no_args) {\n this.__cache_no_args = {};\n }\n\n var takesArguments = args.length !== 0;\n\n var cachedValue = void 0;\n var keys = void 0;\n\n if (takesArguments) {\n keys = [property].concat(args);\n cachedValue = getIn(this.__cache, keys);\n } else {\n cachedValue = this.__cache_no_args[property];\n }\n\n // If we've got a result already, return it.\n if (cachedValue !== UNSET) {\n return cachedValue === UNDEFINED ? undefined : cachedValue;\n }\n\n // Otherwise calculate what it should be once and cache it.\n var value = original.apply(this, args);\n var v = value === undefined ? UNDEFINED : value;\n\n if (takesArguments) {\n this.__cache = setIn(this.__cache, keys, v);\n } else {\n this.__cache_no_args[property] = v;\n }\n\n return value;\n };\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = properties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var property = _step.value;\n\n _loop(property);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n/**\n * Get a value at a key path in a tree of Map.\n *\n * If not set, returns UNSET.\n * If the set value is undefined, returns UNDEFINED.\n *\n * @param {Map} map\n * @param {Array} keys\n * @return {Any|UNSET|UNDEFINED}\n */\n\nfunction getIn(map, keys) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = keys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n\n map = map.get(key);\n if (map === UNSET) return UNSET;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return map.get(LEAF);\n}\n\n/**\n * Set a value at a key path in a tree of Map, creating Maps on the go.\n *\n * @param {Map} map\n * @param {Array} keys\n * @param {Any} value\n * @return {Map}\n */\n\nfunction setIn(map, keys, value) {\n var parent = map;\n var child = void 0;\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = keys[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var key = _step3.value;\n\n child = parent.get(key);\n\n // If the path was not created yet...\n if (child === UNSET) {\n child = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n parent.set(key, child);\n }\n\n parent = child;\n }\n\n // The whole path has been created, so set the value to the bottom most map.\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n child.set(LEAF, value);\n return map;\n}\n\n/**\n * In DEV mode, clears the previously memoized values, globally.\n *\n * @return {Void}\n */\n\nfunction resetMemoization() {\n CACHE_KEY++;\n\n if (CACHE_KEY >= Number.MAX_SAFE_INTEGER) {\n CACHE_KEY = 0;\n }\n}\n\n/**\n * In DEV mode, enable or disable the use of memoize values, globally.\n *\n * @param {Boolean} enabled\n * @return {Void}\n */\n\nfunction useMemoization(enabled) {\n ENABLED = enabled;\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$2 = {\n data: new Map$1(),\n type: undefined\n\n /**\n * Mark.\n *\n * @type {Mark}\n */\n\n};\nvar Mark = function (_Record) {\n inherits(Mark, _Record);\n\n function Mark() {\n classCallCheck(this, Mark);\n return possibleConstructorReturn(this, (Mark.__proto__ || Object.getPrototypeOf(Mark)).apply(this, arguments));\n }\n\n createClass(Mark, [{\n key: 'getComponent',\n\n\n /**\n * Get the component for the node from a `schema`.\n *\n * @param {Schema} schema\n * @return {Component|Void}\n */\n\n value: function getComponent(schema) {\n return schema.__getComponent(this);\n }\n\n /**\n * Return a JSON representation of the mark.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON()\n };\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n */\n\n get: function get$$1() {\n return 'mark';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Mark` with `attrs`.\n *\n * @param {Object|Mark} attrs\n * @return {Mark}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Mark.fromJSON(attrs);\n }\n\n throw new Error('`Mark.create` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n\n /**\n * Create a set of marks.\n *\n * @param {Array<Object|Mark>} elements\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'createSet',\n value: function createSet(elements) {\n if (Set.isSet(elements) || Array.isArray(elements)) {\n var marks = new Set(elements.map(Mark.create));\n return marks;\n }\n\n if (elements == null) {\n return Set();\n }\n\n throw new Error('`Mark.createSet` only accepts sets, arrays or null, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable mark properties from `attrs`.\n *\n * @param {Object|String|Mark} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return {\n data: attrs.data,\n type: attrs.type\n };\n }\n\n if (typeof attrs == 'string') {\n return { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n return props;\n }\n\n throw new Error('`Mark.createProperties` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Mark` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Mark}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n type = object.type;\n\n\n if (typeof type != 'string') {\n throw new Error('`Mark.fromJS` requires a `type` string.');\n }\n\n var mark = new Mark({\n type: type,\n data: new Map$1(data)\n });\n\n return mark;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Mark`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isMarkSet',\n\n\n /**\n * Check if `any` is a set of marks.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n value: function isMarkSet(any) {\n return Set.isSet(any) && any.every(function (item) {\n return Mark.isMark(item);\n });\n }\n }]);\n return Mark;\n}(Record(DEFAULTS$2));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nMark.fromJS = Mark.fromJSON;\nMark.isMark = isType.bind(null, 'MARK');\nMark.prototype[MODEL_TYPES.MARK] = true;\n\n/**\n * Memoize read methods.\n */\n\nmemoize(Mark.prototype, ['getComponent']);\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes = {};\n\n/**\n * Mix in the changes that pass through to their at-range equivalents because\n * they don't have any effect on the selection.\n */\n\nvar PROXY_TRANSFORMS = ['deleteBackward', 'deleteCharBackward', 'deleteLineBackward', 'deleteWordBackward', 'deleteForward', 'deleteCharForward', 'deleteWordForward', 'deleteLineForward', 'setBlocks', 'setInlines', 'splitInline', 'unwrapBlock', 'unwrapInline', 'wrapBlock', 'wrapInline'];\n\nPROXY_TRANSFORMS.forEach(function (method) {\n Changes[method] = function (change) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var value = change.value;\n var selection = value.selection;\n\n var methodAtRange = method + 'AtRange';\n change[methodAtRange].apply(change, [selection].concat(args));\n\n if (method.match(/Backward$/)) {\n change.collapseToStart();\n } else if (method.match(/Forward$/)) {\n change.collapseToEnd();\n }\n };\n});\n\nChanges.setBlock = function () {\n logger.deprecate('slate@0.33.0', 'The `setBlock` method of Slate changes has been renamed to `setBlocks`.');\n\n Changes.setBlocks.apply(Changes, arguments);\n};\n\nChanges.setInline = function () {\n logger.deprecate('slate@0.33.0', 'The `setInline` method of Slate changes has been renamed to `setInlines`.');\n\n Changes.setInlines.apply(Changes, arguments);\n};\n\n/**\n * Add a `mark` to the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.addMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n\n if (selection.isExpanded) {\n change.addMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.add(mark);\n var sel = selection.set('marks', marks);\n change.select(sel);\n } else {\n var _marks = document.getActiveMarksAtRange(selection).add(mark);\n var _sel = selection.set('marks', _marks);\n change.select(_sel);\n }\n};\n\n/**\n * Add a list of `marks` to the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.addMarks = function (change, marks) {\n marks.forEach(function (mark) {\n return change.addMark(mark);\n });\n};\n\n/**\n * Delete at the current selection.\n *\n * @param {Change} change\n */\n\nChanges.delete = function (change) {\n var value = change.value;\n var selection = value.selection;\n\n change.deleteAtRange(selection);\n\n // Ensure that the selection is collapsed to the start, because in certain\n // cases when deleting across inline nodes, when splitting the inline node the\n // end point of the selection will end up after the split point.\n change.collapseToStart();\n};\n\n/**\n * Insert a `block` at the current selection.\n *\n * @param {Change} change\n * @param {String|Object|Block} block\n */\n\nChanges.insertBlock = function (change, block) {\n block = Block.create(block);\n var value = change.value;\n var selection = value.selection;\n\n change.insertBlockAtRange(selection, block);\n\n // If the node was successfully inserted, update the selection.\n var node = change.value.document.getNode(block.key);\n if (node) change.collapseToEndOf(node);\n};\n\n/**\n * Insert a `fragment` at the current selection.\n *\n * @param {Change} change\n * @param {Document} fragment\n */\n\nChanges.insertFragment = function (change, fragment) {\n if (!fragment.nodes.size) return;\n\n var value = change.value;\n var _value = value,\n document = _value.document,\n selection = _value.selection;\n var _value2 = value,\n startText = _value2.startText,\n endText = _value2.endText,\n startInline = _value2.startInline;\n\n var lastText = fragment.getLastText();\n var lastInline = fragment.getClosestInline(lastText.key);\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var keys = document.getTexts().map(function (text) {\n return text.key;\n });\n var isAppending = !startInline || selection.hasEdgeAtStartOf(startText) || selection.hasEdgeAtEndOf(endText);\n\n var isInserting = firstChild.hasBlockChildren() || lastChild.hasBlockChildren();\n\n change.insertFragmentAtRange(selection, fragment);\n value = change.value;\n document = value.document;\n\n var newTexts = document.getTexts().filter(function (n) {\n return !keys.includes(n.key);\n });\n var newText = isAppending ? newTexts.last() : newTexts.takeLast(2).first();\n\n if (newText && (lastInline || isInserting)) {\n change.select(selection.collapseToEndOf(newText));\n } else if (newText) {\n change.select(selection.collapseToStartOf(newText).move(lastText.text.length));\n } else {\n change.select(selection.collapseToStart().move(lastText.text.length));\n }\n};\n\n/**\n * Insert an `inline` at the current selection.\n *\n * @param {Change} change\n * @param {String|Object|Inline} inline\n */\n\nChanges.insertInline = function (change, inline) {\n inline = Inline.create(inline);\n var value = change.value;\n var selection = value.selection;\n\n change.insertInlineAtRange(selection, inline);\n\n // If the node was successfully inserted, update the selection.\n var node = change.value.document.getNode(inline.key);\n if (node) change.collapseToEndOf(node);\n};\n\n/**\n * Insert a string of `text` with optional `marks` at the current selection.\n *\n * @param {Change} change\n * @param {String} text\n * @param {Set<Mark>} marks (optional)\n */\n\nChanges.insertText = function (change, text, marks) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n marks = marks || selection.marks || document.getInsertMarksAtRange(selection);\n change.insertTextAtRange(selection, text, marks);\n\n // If the text was successfully inserted, and the selection had marks on it,\n // unset the selection's marks.\n if (selection.marks && document != change.value.document) {\n change.select({ marks: null });\n }\n};\n\n/**\n * Split the block node at the current selection, to optional `depth`.\n *\n * @param {Change} change\n * @param {Number} depth (optional)\n */\n\nChanges.splitBlock = function (change) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var value = change.value;\n var selection = value.selection,\n document = value.document;\n\n var marks = selection.marks || document.getInsertMarksAtRange(selection);\n change.splitBlockAtRange(selection, depth).collapseToEnd();\n\n if (marks && marks.size !== 0) {\n change.select({ marks: marks });\n }\n};\n\n/**\n * Remove a `mark` from the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.removeMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n\n if (selection.isExpanded) {\n change.removeMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.remove(mark);\n var sel = selection.set('marks', marks);\n change.select(sel);\n } else {\n var _marks2 = document.getActiveMarksAtRange(selection).remove(mark);\n var _sel2 = selection.set('marks', _marks2);\n change.select(_sel2);\n }\n};\n\n/**\n * Replace an `oldMark` with a `newMark` in the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} oldMark\n * @param {Mark} newMark\n */\n\nChanges.replaceMark = function (change, oldMark, newMark) {\n change.removeMark(oldMark);\n change.addMark(newMark);\n};\n\n/**\n * Add or remove a `mark` from the characters in the current selection,\n * depending on whether it's already there.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.toggleMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n\n var exists = value.activeMarks.has(mark);\n\n if (exists) {\n change.removeMark(mark);\n } else {\n change.addMark(mark);\n }\n};\n\n/**\n * Wrap the current selection with prefix/suffix.\n *\n * @param {Change} change\n * @param {String} prefix\n * @param {String} suffix\n */\n\nChanges.wrapText = function (change, prefix) {\n var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : prefix;\n var value = change.value;\n var selection = value.selection;\n\n change.wrapTextAtRange(selection, prefix, suffix);\n\n // If the selection was collapsed, it will have moved the start offset too.\n if (selection.isCollapsed) {\n change.moveStart(0 - prefix.length);\n }\n\n // Adding the suffix will have pushed the end of the selection further on, so\n // we need to move it back to account for this.\n change.moveEnd(0 - suffix.length);\n\n // There's a chance that the selection points moved \"through\" each other,\n // resulting in a now-incorrect selection direction.\n if (selection.isForward != change.value.selection.isForward) {\n change.flip();\n }\n};\n\n/**\n * Dependencies.\n */\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$3 = {\n data: new Map$1(),\n key: undefined,\n nodes: new List()\n\n /**\n * Document.\n *\n * @type {Document}\n */\n\n};\nvar Document = function (_Record) {\n inherits(Document, _Record);\n\n function Document() {\n classCallCheck(this, Document);\n return possibleConstructorReturn(this, (Document.__proto__ || Object.getPrototypeOf(Document)).apply(this, arguments));\n }\n\n createClass(Document, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the document.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'document';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n\n /**\n * Check if the document is empty.\n * Returns true if all it's children nodes are empty.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n return !this.nodes.some(function (child) {\n return !child.isEmpty;\n });\n }\n\n /**\n * Get the concatenated text of all the document's children.\n *\n * @return {String}\n */\n\n }, {\n key: 'text',\n get: function get$$1() {\n return this.getText();\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Document` with `attrs`.\n *\n * @param {Object|Array|List|Text} attrs\n * @return {Document}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Document.isDocument(attrs)) {\n return attrs;\n }\n\n if (List.isList(attrs) || Array.isArray(attrs)) {\n attrs = { nodes: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Document.fromJSON(attrs);\n }\n\n throw new Error('`Document.create` only accepts objects, arrays, lists or documents, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Document` from a JSON `object`.\n *\n * @param {Object|Document} object\n * @return {Document}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Document.isDocument(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes;\n\n\n var document = new Document({\n key: key,\n data: new Map$1(data),\n nodes: Document.createChildren(nodes)\n });\n\n return document;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Document`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }]);\n return Document;\n}(Record(DEFAULTS$3));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nDocument.fromJS = Document.fromJSON;\nDocument.isDocument = isType.bind(null, 'DOCUMENT');\nDocument.prototype[MODEL_TYPES.DOCUMENT] = true;\n\n/**\n * Compare paths `a` and `b` to see which is before or after.\n *\n * @param {List} a\n * @param {List} b\n * @return {Number|Null}\n */\n\nfunction compare(a, b) {\n // PERF: if the paths are the same we can exit early.\n if (a.size !== b.size) return null;\n\n for (var i = 0; i < a.size; i++) {\n var av = a.get(i);\n var bv = b.get(i);\n\n // If a's value is ever less than b's, it's before.\n if (av < bv) return -1;\n\n // If b's value is ever less than a's, it's after.\n if (av > bv) return 1;\n }\n\n // Otherwise they were equal the whole way, it's the same.\n return 0;\n}\n\n/**\n * Create a path from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\nfunction create$1(attrs) {\n if (attrs == null) {\n return null;\n }\n\n if (List.isList(attrs)) {\n return attrs;\n }\n\n if (Array.isArray(attrs)) {\n return List(attrs);\n }\n\n throw new Error('Paths can only be created from arrays or lists, but you passed: ' + attrs);\n}\n\n/**\n * Crop paths `a` and `b` to an equal size, defaulting to the shortest.\n *\n * @param {List} a\n * @param {List} b\n */\n\nfunction crop(a, b) {\n var size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : min(a, b);\n\n var ca = a.slice(0, size);\n var cb = b.slice(0, size);\n return [ca, cb];\n}\n\n/**\n * Decrement a `path` by `n` at `index`, defaulting to the last index.\n *\n * @param {List} path\n * @param {Number} n\n * @param {Number} index\n */\n\nfunction decrement(path) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path.size - 1;\n\n return increment(path, 0 - n, index);\n}\n\n/**\n * Increment a `path` by `n` at `index`, defaulting to the last index.\n *\n * @param {List} path\n * @param {Number} n\n * @param {Number} index\n */\n\nfunction increment(path) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path.size - 1;\n\n var value = path.get(index);\n var newValue = value + n;\n var newPath = path.set(index, newValue);\n return newPath;\n}\n\n/**\n * Is a `path` above another `target` path?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isAbove(path, target) {\n var _crop = crop(path, target),\n _crop2 = slicedToArray(_crop, 2),\n p = _crop2[0],\n t = _crop2[1];\n\n return path.size < target.size && compare(p, t) === 0;\n}\n\n/**\n * Is a `path` after another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isAfter(path, target) {\n var _crop3 = crop(path, target),\n _crop4 = slicedToArray(_crop3, 2),\n p = _crop4[0],\n t = _crop4[1];\n\n return compare(p, t) === 1;\n}\n\n/**\n * Is a `path` before another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isBefore(path, target) {\n var _crop5 = crop(path, target),\n _crop6 = slicedToArray(_crop5, 2),\n p = _crop6[0],\n t = _crop6[1];\n\n return compare(p, t) === -1;\n}\n\n/**\n * Lift a `path` to refer to its parent.\n *\n * @param {List} path\n * @return {Array}\n */\n\nfunction lift(path) {\n var parent = path.slice(0, -1);\n return parent;\n}\n\n/**\n * Get the maximum length of paths `a` and `b`.\n *\n * @param {List} path\n * @param {List} path\n * @return {Number}\n */\n\nfunction max(a, b) {\n var n = Math.max(a.size, b.size);\n return n;\n}\n\n/**\n * Get the minimum length of paths `a` and `b`.\n *\n * @param {List} path\n * @param {List} path\n * @return {Number}\n */\n\nfunction min(a, b) {\n var n = Math.min(a.size, b.size);\n return n;\n}\n\n/**\n * Get the common ancestor path of path `a` and path `b`.\n *\n * @param {List} a\n * @param {List} b\n * @return {List}\n */\n\nfunction relate(a, b) {\n var array = [];\n\n for (var i = 0; i < a.size && i < b.size; i++) {\n var av = a.get(i);\n var bv = b.get(i);\n\n // If the values aren't equal, they've diverged and don't share an ancestor.\n if (av !== bv) break;\n\n // Otherwise, the current value is still a common ancestor.\n array.push(av);\n }\n\n var path = create$1(array);\n return path;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar PathUtils = {\n compare: compare,\n create: create$1,\n crop: crop,\n decrement: decrement,\n increment: increment,\n isAbove: isAbove,\n isAfter: isAfter,\n isBefore: isBefore,\n lift: lift,\n max: max,\n min: min,\n relate: relate\n};\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$4 = {\n anchorKey: null,\n anchorOffset: 0,\n anchorPath: null,\n focusKey: null,\n focusOffset: 0,\n focusPath: null,\n isAtomic: false,\n isBackward: null,\n isFocused: false,\n marks: null\n\n /**\n * Range.\n *\n * @type {Range}\n */\n\n};\nvar Range = function (_Record) {\n inherits(Range, _Record);\n\n function Range() {\n classCallCheck(this, Range);\n return possibleConstructorReturn(this, (Range.__proto__ || Object.getPrototypeOf(Range)).apply(this, arguments));\n }\n\n createClass(Range, [{\n key: 'hasAnchorAtStartOf',\n\n\n /**\n * Check whether anchor point of the range is at the start of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n value: function hasAnchorAtStartOf(node) {\n // PERF: Do a check for a `0` offset first since it's quickest.\n if (this.anchorOffset != 0) return false;\n var first = getFirstText(node);\n return this.anchorKey == first.key;\n }\n\n /**\n * Check whether anchor point of the range is at the end of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasAnchorAtEndOf',\n value: function hasAnchorAtEndOf(node) {\n var last = getLastText(node);\n return this.anchorKey == last.key && this.anchorOffset == last.text.length;\n }\n\n /**\n * Check whether the anchor edge of a range is in a `node` and at an\n * offset between `start` and `end`.\n *\n * @param {Node} node\n * @param {Number} start\n * @param {Number} end\n * @return {Boolean}\n */\n\n }, {\n key: 'hasAnchorBetween',\n value: function hasAnchorBetween(node, start, end) {\n return this.anchorOffset <= end && start <= this.anchorOffset && this.hasAnchorIn(node);\n }\n\n /**\n * Check whether the anchor edge of a range is in a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasAnchorIn',\n value: function hasAnchorIn(node) {\n return node.object == 'text' ? node.key == this.anchorKey : this.anchorKey != null && node.hasDescendant(this.anchorKey);\n }\n\n /**\n * Check whether focus point of the range is at the end of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasFocusAtEndOf',\n value: function hasFocusAtEndOf(node) {\n var last = getLastText(node);\n return this.focusKey == last.key && this.focusOffset == last.text.length;\n }\n\n /**\n * Check whether focus point of the range is at the start of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasFocusAtStartOf',\n value: function hasFocusAtStartOf(node) {\n if (this.focusOffset != 0) return false;\n var first = getFirstText(node);\n return this.focusKey == first.key;\n }\n\n /**\n * Check whether the focus edge of a range is in a `node` and at an\n * offset between `start` and `end`.\n *\n * @param {Node} node\n * @param {Number} start\n * @param {Number} end\n * @return {Boolean}\n */\n\n }, {\n key: 'hasFocusBetween',\n value: function hasFocusBetween(node, start, end) {\n return start <= this.focusOffset && this.focusOffset <= end && this.hasFocusIn(node);\n }\n\n /**\n * Check whether the focus edge of a range is in a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasFocusIn',\n value: function hasFocusIn(node) {\n return node.object == 'text' ? node.key == this.focusKey : this.focusKey != null && node.hasDescendant(this.focusKey);\n }\n\n /**\n * Check whether the range is at the start of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtStartOf',\n value: function isAtStartOf(node) {\n return this.isCollapsed && this.hasAnchorAtStartOf(node);\n }\n\n /**\n * Check whether the range is at the end of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtEndOf',\n value: function isAtEndOf(node) {\n return this.isCollapsed && this.hasAnchorAtEndOf(node);\n }\n\n /**\n * Focus the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'focus',\n value: function focus() {\n return this.merge({\n isFocused: true\n });\n }\n\n /**\n * Blur the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'blur',\n value: function blur() {\n return this.merge({\n isFocused: false\n });\n }\n\n /**\n * Unset the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'deselect',\n value: function deselect() {\n return this.merge({\n anchorKey: null,\n anchorOffset: 0,\n anchorPath: null,\n focusKey: null,\n focusOffset: 0,\n focusPath: null,\n isFocused: false,\n isBackward: false\n });\n }\n\n /**\n * Flip the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'flip',\n value: function flip() {\n return this.merge({\n anchorKey: this.focusKey,\n anchorOffset: this.focusOffset,\n anchorPath: this.focusPath,\n focusKey: this.anchorKey,\n focusOffset: this.anchorOffset,\n focusPath: this.anchorPath,\n isBackward: this.isBackward == null ? null : !this.isBackward\n });\n }\n\n /**\n * Move the anchor offset `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchor',\n value: function moveAnchor() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var anchorKey = this.anchorKey,\n focusKey = this.focusKey,\n focusOffset = this.focusOffset,\n isBackward = this.isBackward;\n\n var anchorOffset = this.anchorOffset + n;\n return this.merge({\n anchorOffset: anchorOffset,\n isBackward: anchorKey == focusKey ? anchorOffset > focusOffset : isBackward\n });\n }\n\n /**\n * Move the anchor offset `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveFocus',\n value: function moveFocus() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var anchorKey = this.anchorKey,\n anchorOffset = this.anchorOffset,\n focusKey = this.focusKey,\n isBackward = this.isBackward;\n\n var focusOffset = this.focusOffset + n;\n return this.merge({\n focusOffset: focusOffset,\n isBackward: focusKey == anchorKey ? anchorOffset > focusOffset : isBackward\n });\n }\n\n /**\n * Move the range's anchor point to a new `key` or `path` and `offset`.\n *\n * @param {String|List} key or path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorTo',\n value: function moveAnchorTo(key, offset) {\n var anchorKey = this.anchorKey,\n focusKey = this.focusKey,\n focusOffset = this.focusOffset,\n anchorPath = this.anchorPath,\n focusPath = this.focusPath,\n isBackward = this.isBackward;\n\n\n if (typeof key === 'string') {\n var isAnchor = key === anchorKey;\n var isFocus = key === focusKey;\n return this.merge({\n anchorKey: key,\n anchorPath: isFocus ? focusPath : isAnchor ? anchorPath : null,\n anchorOffset: offset,\n isBackward: isFocus ? offset > focusOffset : isAnchor ? isBackward : null\n });\n } else {\n var path = key;\n var _isAnchor = path && path.equals(anchorPath);\n var _isFocus = path && path.equals(focusPath);\n return this.merge({\n anchorPath: path,\n anchorKey: _isAnchor ? anchorKey : _isFocus ? focusKey : null,\n anchorOffset: offset,\n isBackward: _isFocus ? offset > focusOffset : _isAnchor ? isBackward : null\n });\n }\n }\n\n /**\n * Move the range's focus point to a new `key` or `path` and `offset`.\n *\n * @param {String|List} key or path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusTo',\n value: function moveFocusTo(key, offset) {\n var focusKey = this.focusKey,\n anchorKey = this.anchorKey,\n anchorOffset = this.anchorOffset,\n anchorPath = this.anchorPath,\n focusPath = this.focusPath,\n isBackward = this.isBackward;\n\n\n if (typeof key === 'string') {\n var isAnchor = key === anchorKey;\n var isFocus = key === focusKey;\n return this.merge({\n focusKey: key,\n focusPath: isAnchor ? anchorPath : isFocus ? focusPath : null,\n focusOffset: offset,\n isBackward: isAnchor ? offset < anchorOffset : isFocus ? isBackward : null\n });\n } else {\n var path = key;\n var _isAnchor2 = path && path.equals(anchorPath);\n var _isFocus2 = path && path.equals(focusPath);\n return this.merge({\n focusPath: path,\n focusKey: _isFocus2 ? focusKey : _isAnchor2 ? anchorKey : null,\n focusOffset: offset,\n isBackward: _isAnchor2 ? offset < anchorOffset : _isFocus2 ? isBackward : null\n });\n }\n }\n\n /**\n * Move the range to `anchorOffset`.\n *\n * @param {Number} anchorOffset\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorOffsetTo',\n value: function moveAnchorOffsetTo(anchorOffset) {\n return this.merge({\n anchorOffset: anchorOffset,\n isBackward: this.anchorKey == this.focusKey ? anchorOffset > this.focusOffset : this.isBackward\n });\n }\n\n /**\n * Move the range to `focusOffset`.\n *\n * @param {Number} focusOffset\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusOffsetTo',\n value: function moveFocusOffsetTo(focusOffset) {\n return this.merge({\n focusOffset: focusOffset,\n isBackward: this.anchorKey == this.focusKey ? this.anchorOffset > focusOffset : this.isBackward\n });\n }\n\n /**\n * Move the range to `anchorOffset` and `focusOffset`.\n *\n * @param {Number} anchorOffset\n * @param {Number} focusOffset (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveOffsetsTo',\n value: function moveOffsetsTo(anchorOffset) {\n var focusOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : anchorOffset;\n\n return this.moveAnchorOffsetTo(anchorOffset).moveFocusOffsetTo(focusOffset);\n }\n\n /**\n * Move the focus point to the anchor point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToAnchor',\n value: function moveToAnchor() {\n return this.moveFocusTo(this.anchorKey, this.anchorOffset);\n }\n\n /**\n * Move the anchor point to the focus point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToFocus',\n value: function moveToFocus() {\n return this.moveAnchorTo(this.focusKey, this.focusOffset);\n }\n\n /**\n * Move the range's anchor point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToStartOf',\n value: function moveAnchorToStartOf(node) {\n node = getFirstText(node);\n return this.moveAnchorTo(node.key, 0);\n }\n\n /**\n * Move the range's anchor point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToEndOf',\n value: function moveAnchorToEndOf(node) {\n node = getLastText(node);\n return this.moveAnchorTo(node.key, node.text.length);\n }\n\n /**\n * Move the range's focus point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToStartOf',\n value: function moveFocusToStartOf(node) {\n node = getFirstText(node);\n return this.moveFocusTo(node.key, 0);\n }\n\n /**\n * Move the range's focus point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToEndOf',\n value: function moveFocusToEndOf(node) {\n node = getLastText(node);\n return this.moveFocusTo(node.key, node.text.length);\n }\n\n /**\n * Move to the entire range of `start` and `end` nodes.\n *\n * @param {Node} start\n * @param {Node} end (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveToRangeOf',\n value: function moveToRangeOf(start) {\n var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : start;\n\n var range = this.isBackward ? this.flip() : this;\n return range.moveAnchorToStartOf(start).moveFocusToEndOf(end);\n }\n\n /**\n * Normalize the range, relative to a `node`, ensuring that the anchor\n * and focus nodes of the range always refer to leaf text nodes.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(node) {\n var range = this;\n var anchorKey = range.anchorKey,\n anchorOffset = range.anchorOffset,\n anchorPath = range.anchorPath,\n focusKey = range.focusKey,\n focusOffset = range.focusOffset,\n focusPath = range.focusPath,\n isBackward = range.isBackward;\n\n\n var anchorOffsetType = typeof anchorOffset === 'undefined' ? 'undefined' : _typeof(anchorOffset);\n var focusOffsetType = typeof focusOffset === 'undefined' ? 'undefined' : _typeof(focusOffset);\n\n if (anchorOffsetType != 'number' || focusOffsetType != 'number') {\n logger.warn('The range offsets should be numbers, but they were of type \"' + anchorOffsetType + '\" and \"' + focusOffsetType + '\".');\n }\n\n // If either point in the range is unset, make sure it is fully unset.\n if (anchorKey == null && anchorPath == null || focusKey == null && focusPath == null) {\n return range.merge({\n anchorKey: null,\n anchorOffset: 0,\n anchorPath: null,\n focusKey: null,\n focusOffset: 0,\n focusPath: null,\n isBackward: false\n });\n }\n\n // Get the anchor and focus nodes.\n var anchorNode = node.getNode(anchorKey || anchorPath);\n var focusNode = node.getNode(focusKey || focusPath);\n\n // If the range is malformed, warn and zero it out.\n if (!anchorNode || !focusNode) {\n logger.warn('The range was invalid and was reset. The range in question was:', range);\n\n var first = node.getFirstText();\n var path = first && node.getPath(first.key);\n return range.merge({\n anchorKey: first ? first.key : null,\n anchorOffset: 0,\n anchorPath: first ? path : null,\n focusKey: first ? first.key : null,\n focusOffset: 0,\n focusPath: first ? path : null,\n isBackward: false\n });\n }\n\n // If the anchor node isn't a text node, match it to one.\n if (anchorNode.object != 'text') {\n logger.warn('The range anchor was set to a Node that is not a Text node. This should not happen and can degrade performance. The node in question was:', anchorNode);\n\n var anchorText = anchorNode.getTextAtOffset(anchorOffset);\n var offset = anchorNode.getOffset(anchorText.key);\n anchorOffset = anchorOffset - offset;\n anchorNode = anchorText;\n }\n\n // If the focus node isn't a text node, match it to one.\n if (focusNode.object != 'text') {\n logger.warn('The range focus was set to a Node that is not a Text node. This should not happen and can degrade performance. The node in question was:', focusNode);\n\n var focusText = focusNode.getTextAtOffset(focusOffset);\n var _offset = focusNode.getOffset(focusText.key);\n focusOffset = focusOffset - _offset;\n focusNode = focusText;\n }\n\n anchorKey = anchorNode.key;\n focusKey = focusNode.key;\n anchorPath = node.getPath(anchorKey);\n focusPath = node.getPath(focusKey);\n\n // If `isBackward` is not set, derive it.\n if (isBackward == null) {\n var result = PathUtils.compare(anchorPath, focusPath);\n isBackward = result === 0 ? anchorOffset > focusOffset : result === 1;\n }\n\n // Merge in any updated properties.\n return range.merge({\n anchorKey: anchorKey,\n anchorOffset: anchorOffset,\n anchorPath: anchorPath,\n focusKey: focusKey,\n focusOffset: focusOffset,\n focusPath: focusPath,\n isBackward: isBackward\n });\n }\n\n /**\n * Return a JSON representation of the range.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n anchorKey: this.anchorKey,\n anchorOffset: this.anchorOffset,\n anchorPath: this.anchorPath && this.anchorPath.toArray(),\n focusKey: this.focusKey,\n focusOffset: this.focusOffset,\n focusPath: this.focusPath && this.focusPath.toArray(),\n isAtomic: this.isAtomic,\n isBackward: this.isBackward,\n isFocused: this.isFocused,\n marks: this.marks == null ? null : this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n\n if (!options.preserveKeys) {\n delete object.anchorKey;\n delete object.focusKey;\n }\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'range';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n\n /**\n * Check whether the range is blurred.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isBlurred',\n get: function get$$1() {\n return !this.isFocused;\n }\n\n /**\n * Check whether the range is collapsed.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isCollapsed',\n get: function get$$1() {\n return this.anchorKey == this.focusKey && this.anchorOffset == this.focusOffset;\n }\n\n /**\n * Check whether the range is expanded.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isExpanded',\n get: function get$$1() {\n return !this.isCollapsed;\n }\n\n /**\n * Check whether the range is forward.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isForward',\n get: function get$$1() {\n return this.isBackward == null ? null : !this.isBackward;\n }\n\n /**\n * Check whether the range's keys are set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isSet',\n get: function get$$1() {\n return this.anchorKey != null && this.focusKey != null || this.anchorPath != null && this.focusPath != null;\n }\n\n /**\n * Check whether the range's keys are not set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isUnset',\n get: function get$$1() {\n return !this.isSet;\n }\n\n /**\n * Get the start key.\n *\n * @return {String}\n */\n\n }, {\n key: 'startKey',\n get: function get$$1() {\n return this.isBackward ? this.focusKey : this.anchorKey;\n }\n\n /**\n * Get the start offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'startOffset',\n get: function get$$1() {\n return this.isBackward ? this.focusOffset : this.anchorOffset;\n }\n\n /**\n * Get the start path.\n *\n * @return {String}\n */\n\n }, {\n key: 'startPath',\n get: function get$$1() {\n return this.isBackward ? this.focusPath : this.anchorPath;\n }\n\n /**\n * Get the end key.\n *\n * @return {String}\n */\n\n }, {\n key: 'endKey',\n get: function get$$1() {\n return this.isBackward ? this.anchorKey : this.focusKey;\n }\n\n /**\n * Get the end offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'endOffset',\n get: function get$$1() {\n return this.isBackward ? this.anchorOffset : this.focusOffset;\n }\n\n /**\n * Get the end path.\n *\n * @return {String}\n */\n\n }, {\n key: 'endPath',\n get: function get$$1() {\n return this.isBackward ? this.anchorPath : this.focusPath;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Range` with `attrs`.\n *\n * @param {Object|Range} attrs\n * @return {Range}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Range.fromJSON(attrs);\n }\n\n throw new Error('`Range.create` only accepts objects or ranges, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Ranges` from `elements`.\n *\n * @param {Array<Range|Object>|List<Range|Object>} elements\n * @return {List<Range>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Range.create));\n return list;\n }\n\n throw new Error('`Range.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable range properties from `attrs`.\n *\n * @param {Object|String|Range} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(a)) {\n return {\n anchorKey: a.anchorKey,\n anchorOffset: a.anchorOffset,\n anchorPath: a.anchorPath,\n focusKey: a.focusKey,\n focusOffset: a.focusOffset,\n focusPath: a.focusPath,\n isAtomic: a.isAtomic,\n isBackward: a.isBackward,\n isFocused: a.isFocused,\n marks: a.marks\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('anchorKey' in a) p.anchorKey = a.anchorKey;\n if ('anchorOffset' in a) p.anchorOffset = a.anchorOffset;\n if ('anchorPath' in a) p.anchorPath = PathUtils.create(a.anchorPath);\n if ('focusKey' in a) p.focusKey = a.focusKey;\n if ('focusOffset' in a) p.focusOffset = a.focusOffset;\n if ('focusPath' in a) p.focusPath = PathUtils.create(a.focusPath);\n if ('isAtomic' in a) p.isAtomic = a.isAtomic;\n if ('isBackward' in a) p.isBackward = a.isBackward;\n if ('isFocused' in a) p.isFocused = a.isFocused;\n if ('marks' in a) p.marks = a.marks == null ? null : Mark.createSet(a.marks);\n\n // If only a path is set, or only a key is set, ensure that the other is\n // set to null so that it can be normalized back to the right value.\n // Otherwise we won't realize that the path and key don't match anymore.\n if ('anchorPath' in a && !('anchorKey' in a)) p.anchorKey = null;\n if ('anchorKey' in a && !('anchorPath' in a)) p.anchorPath = null;\n if ('focusPath' in a && !('focusKey' in a)) p.focusKey = null;\n if ('focusKey' in a && !('focusPath' in a)) p.focusPath = null;\n\n return p;\n }\n\n throw new Error('`Range.createProperties` only accepts objects or ranges, but you passed it: ' + a);\n }\n\n /**\n * Create a `Range` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Range}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$anchorKey = object.anchorKey,\n anchorKey = _object$anchorKey === undefined ? null : _object$anchorKey,\n _object$anchorOffset = object.anchorOffset,\n anchorOffset = _object$anchorOffset === undefined ? 0 : _object$anchorOffset,\n _object$anchorPath = object.anchorPath,\n anchorPath = _object$anchorPath === undefined ? null : _object$anchorPath,\n _object$focusKey = object.focusKey,\n focusKey = _object$focusKey === undefined ? null : _object$focusKey,\n _object$focusOffset = object.focusOffset,\n focusOffset = _object$focusOffset === undefined ? 0 : _object$focusOffset,\n _object$focusPath = object.focusPath,\n focusPath = _object$focusPath === undefined ? null : _object$focusPath,\n _object$isAtomic = object.isAtomic,\n isAtomic = _object$isAtomic === undefined ? false : _object$isAtomic,\n _object$isBackward = object.isBackward,\n isBackward = _object$isBackward === undefined ? null : _object$isBackward,\n _object$isFocused = object.isFocused,\n isFocused = _object$isFocused === undefined ? false : _object$isFocused,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? null : _object$marks;\n\n\n var range = new Range({\n anchorKey: anchorKey,\n anchorOffset: anchorOffset,\n anchorPath: PathUtils.create(anchorPath),\n focusKey: focusKey,\n focusOffset: focusOffset,\n focusPath: PathUtils.create(focusPath),\n isAtomic: isAtomic,\n isBackward: isBackward,\n isFocused: isFocused,\n marks: marks == null ? null : new Set(marks.map(Mark.fromJSON))\n });\n\n return range;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isRange',\n\n\n /**\n * Check if an `obj` is a `Range`.\n *\n * @param {Any} obj\n * @return {Boolean}\n */\n\n value: function isRange(obj) {\n return !!(obj && obj[MODEL_TYPES.RANGE]);\n }\n }]);\n return Range;\n}(Record(DEFAULTS$4));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nRange.fromJS = Range.fromJSON;\nRange.prototype[MODEL_TYPES.RANGE] = true;\n\n/**\n * Mix in some \"move\" convenience methods.\n */\n\nvar MOVE_METHODS = [['move', ''], ['move', 'To'], ['move', 'ToStartOf'], ['move', 'ToEndOf']];\n\nMOVE_METHODS.forEach(function (_ref) {\n var _ref2 = slicedToArray(_ref, 2),\n p = _ref2[0],\n s = _ref2[1];\n\n Range.prototype['' + p + s] = function () {\n var _ref3;\n\n return (_ref3 = this[p + 'Anchor' + s].apply(this, arguments))[p + 'Focus' + s].apply(_ref3, arguments);\n };\n});\n\n/**\n * Mix in the \"start\", \"end\" and \"edge\" convenience methods.\n */\n\nvar EDGE_METHODS = [['has', 'AtStartOf', true], ['has', 'AtEndOf', true], ['has', 'Between', true], ['has', 'In', true], ['collapseTo', ''], ['move', ''], ['moveTo', ''], ['move', 'To'], ['move', 'OffsetTo']];\n\nEDGE_METHODS.forEach(function (_ref4) {\n var _ref5 = slicedToArray(_ref4, 3),\n p = _ref5[0],\n s = _ref5[1],\n hasEdge = _ref5[2];\n\n var anchor = p + 'Anchor' + s;\n var focus = p + 'Focus' + s;\n\n Range.prototype[p + 'Start' + s] = function () {\n return this.isBackward ? this[focus].apply(this, arguments) : this[anchor].apply(this, arguments);\n };\n\n Range.prototype[p + 'End' + s] = function () {\n return this.isBackward ? this[anchor].apply(this, arguments) : this[focus].apply(this, arguments);\n };\n\n if (hasEdge) {\n Range.prototype[p + 'Edge' + s] = function () {\n return this[anchor].apply(this, arguments) || this[focus].apply(this, arguments);\n };\n }\n});\n\n/**\n * Mix in some aliases for convenience / parallelism with the browser APIs.\n */\n\nvar ALIAS_METHODS = [['collapseTo', 'moveTo'], ['collapseToAnchor', 'moveToAnchor'], ['collapseToFocus', 'moveToFocus'], ['collapseToStart', 'moveToStart'], ['collapseToEnd', 'moveToEnd'], ['collapseToStartOf', 'moveToStartOf'], ['collapseToEndOf', 'moveToEndOf'], ['extend', 'moveFocus'], ['extendTo', 'moveFocusTo'], ['extendToStartOf', 'moveFocusToStartOf'], ['extendToEndOf', 'moveFocusToEndOf']];\n\nALIAS_METHODS.forEach(function (_ref6) {\n var _ref7 = slicedToArray(_ref6, 2),\n alias = _ref7[0],\n method = _ref7[1];\n\n Range.prototype[alias] = function () {\n return this[method].apply(this, arguments);\n };\n});\n\n/**\n * Get the first text of a `node`.\n *\n * @param {Node} node\n * @return {Text}\n */\n\nfunction getFirstText(node) {\n return node.object == 'text' ? node : node.getFirstText();\n}\n\n/**\n * Get the last text of a `node`.\n *\n * @param {Node} node\n * @return {Text}\n */\n\nfunction getLastText(node) {\n return node.object == 'text' ? node : node.getLastText();\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$5 = {\n marks: new Set(),\n text: ''\n\n /**\n * Character.\n *\n * @type {Character}\n */\n\n};\nvar Character = function (_Record) {\n inherits(Character, _Record);\n\n function Character() {\n classCallCheck(this, Character);\n return possibleConstructorReturn(this, (Character.__proto__ || Object.getPrototypeOf(Character)).apply(this, arguments));\n }\n\n createClass(Character, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the character.\n *\n * @return {Object}\n */\n\n value: function toJSON() {\n var object = {\n object: this.object,\n text: this.text,\n marks: this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'character';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a `Character` with `attrs`.\n *\n * @param {Object|String|Character} attrs\n * @return {Character}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Character.isCharacter(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { text: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Character.fromJSON(attrs);\n }\n\n throw new Error('`Character.create` only accepts objects, strings or characters, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Characters` from `elements`.\n *\n * @param {String|Array<Object|Character|String>|List<Object|Character|String>} elements\n * @return {List<Character>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (typeof elements == 'string') {\n elements = elements.split('');\n }\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Character.create));\n return list;\n }\n\n throw new Error('`Block.createList` only accepts strings, arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Character` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Character}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var text = object.text,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? [] : _object$marks;\n\n\n if (typeof text != 'string') {\n throw new Error('`Character.fromJSON` requires a block `text` string.');\n }\n\n var character = new Character({\n text: text,\n marks: new Set(marks)\n });\n\n return character;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Character`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isCharacterList',\n\n\n /**\n * Check if `any` is a character list.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n value: function isCharacterList(any) {\n return List.isList(any) && any.every(function (item) {\n return Character.isCharacter(item);\n });\n }\n }]);\n return Character;\n}(Record(DEFAULTS$5));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nCharacter.fromJS = Character.fromJSON;\nCharacter.isCharacter = isType.bind(null, 'CHARACTER');\nCharacter.prototype[MODEL_TYPES.CHARACTER] = true;\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$6 = {\n marks: Set(),\n text: ''\n\n /**\n * Leaf.\n *\n * @type {Leaf}\n */\n\n};\nvar Leaf = function (_Record) {\n inherits(Leaf, _Record);\n\n function Leaf() {\n classCallCheck(this, Leaf);\n return possibleConstructorReturn(this, (Leaf.__proto__ || Object.getPrototypeOf(Leaf)).apply(this, arguments));\n }\n\n createClass(Leaf, [{\n key: 'getCharacters',\n\n\n /**\n * Return leaf as a list of characters\n *\n * @return {List<Character>}\n */\n\n value: function getCharacters() {\n logger.deprecate('slate@0.34.0', 'The `characters` property of Slate objects is deprecated');\n\n var marks = this.marks;\n\n var characters = Character.createList(this.text.split('').map(function (char) {\n return Character.create({\n text: char,\n marks: marks\n });\n }));\n\n return characters;\n }\n\n /**\n * Update a `mark` at leaf, replace with newMark\n *\n * @param {Mark} mark\n * @param {Mark} newMark\n * @returns {Leaf}\n */\n\n }, {\n key: 'updateMark',\n value: function updateMark(mark, newMark) {\n var marks = this.marks;\n\n if (newMark.equals(mark)) return this;\n if (!marks.has(mark)) return this;\n var newMarks = marks.withMutations(function (collection) {\n collection.remove(mark).add(newMark);\n });\n return this.set('marks', newMarks);\n }\n\n /**\n * Add a `set` of marks at `index` and `length`.\n *\n * @param {Set<Mark>} set\n * @returns {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(set$$1) {\n var marks = this.marks;\n\n return this.set('marks', marks.union(set$$1));\n }\n\n /**\n * Remove a `mark` at `index` and `length`.\n *\n * @param {Mark} mark\n * @returns {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(mark) {\n var marks = this.marks;\n\n return this.set('marks', marks.remove(mark));\n }\n\n /**\n * Return a JSON representation of the leaf.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n text: this.text,\n marks: this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'leaf';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Leaf` with `attrs`.\n *\n * @param {Object|Leaf} attrs\n * @return {Leaf}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Leaf.isLeaf(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { text: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Leaf.fromJSON(attrs);\n }\n\n throw new Error('`Leaf.create` only accepts objects, strings or leaves, but you passed it: ' + attrs);\n }\n\n /**\n * Create a valid List of `Leaf` from `leaves`\n *\n * @param {List<Leaf>} leaves\n * @return {List<Leaf>}\n */\n\n }, {\n key: 'createLeaves',\n value: function createLeaves(leaves) {\n if (leaves.size <= 1) return leaves;\n\n var invalid = false;\n\n // TODO: we can make this faster with [List] and then flatten\n var result = List().withMutations(function (cache) {\n // Search from the leaves left end to find invalid node;\n leaves.findLast(function (leaf, index) {\n var firstLeaf = cache.first();\n\n // If the first leaf of cache exist, check whether the first leaf is connectable with the current leaf\n if (firstLeaf) {\n // If marks equals, then the two leaves can be connected\n if (firstLeaf.marks.equals(leaf.marks)) {\n invalid = true;\n cache.set(0, firstLeaf.set('text', '' + leaf.text + firstLeaf.text));\n return;\n }\n\n // If the cached leaf is empty, drop the empty leaf with the upcoming leaf\n if (firstLeaf.text === '') {\n invalid = true;\n cache.set(0, leaf);\n return;\n }\n\n // If the current leaf is empty, drop the leaf\n if (leaf.text === '') {\n invalid = true;\n return;\n }\n }\n\n cache.unshift(leaf);\n });\n });\n\n if (!invalid) return leaves;\n return result;\n }\n\n /**\n * Split a list of leaves to two lists; if the leaves are valid leaves, the returned leaves are also valid\n * Corner Cases:\n * 1. if offset is smaller than 0, then return [List(), leaves]\n * 2. if offset is bigger than the text length, then return [leaves, List()]\n *\n * @param {List<Leaf> leaves\n * @return {Array<List<Leaf>>}\n */\n\n }, {\n key: 'splitLeaves',\n value: function splitLeaves(leaves, offset) {\n if (offset < 0) return [List(), leaves];\n\n if (leaves.size === 0) {\n return [List(), List()];\n }\n\n var endOffset = 0;\n var index = -1;\n var left = void 0,\n right = void 0;\n\n leaves.find(function (leaf) {\n index++;\n var startOffset = endOffset;\n var text = leaf.text;\n\n endOffset += text.length;\n\n if (endOffset < offset) return false;\n if (startOffset > offset) return false;\n\n var length = offset - startOffset;\n left = leaf.set('text', text.slice(0, length));\n right = leaf.set('text', text.slice(length));\n return true;\n });\n\n if (!left) return [leaves, List()];\n\n if (left.text === '') {\n if (index === 0) {\n return [List.of(left), leaves];\n }\n\n return [leaves.take(index), leaves.skip(index)];\n }\n\n if (right.text === '') {\n if (index === leaves.size - 1) {\n return [leaves, List.of(right)];\n }\n\n return [leaves.take(index + 1), leaves.skip(index + 1)];\n }\n\n return [leaves.take(index).push(left), leaves.skip(index + 1).unshift(right)];\n }\n\n /**\n * Create a `Leaf` list from `attrs`.\n *\n * @param {Array<Leaf|Object>|List<Leaf|Object>} attrs\n * @return {List<Leaf>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(attrs) || Array.isArray(attrs)) {\n var list = new List(attrs.map(Leaf.create));\n return list;\n }\n\n throw new Error('`Leaf.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Leaf` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Leaf}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$text = object.text,\n text = _object$text === undefined ? '' : _object$text,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? [] : _object$marks;\n\n\n var leaf = new Leaf({\n text: text,\n marks: Set(marks.map(Mark.fromJSON))\n });\n\n return leaf;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Leaf`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafList',\n\n\n /**\n * Check if `any` is a list of leaves.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n value: function isLeafList(any) {\n return List.isList(any) && any.every(function (item) {\n return Leaf.isLeaf(item);\n });\n }\n }]);\n return Leaf;\n}(Record(DEFAULTS$6));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nLeaf.fromJS = Leaf.fromJSON;\nLeaf.isLeaf = isType.bind(null, 'LEAF');\nLeaf.prototype[MODEL_TYPES.LEAF] = true;\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$7 = {\n leaves: List(),\n key: undefined\n\n /**\n * Text.\n *\n * @type {Text}\n */\n\n};\nvar Text = function (_Record) {\n inherits(Text, _Record);\n\n function Text() {\n classCallCheck(this, Text);\n return possibleConstructorReturn(this, (Text.__proto__ || Object.getPrototypeOf(Text)).apply(this, arguments));\n }\n\n createClass(Text, [{\n key: 'getString',\n\n\n /**\n * Get the concatenated text of the node, cached for text getter\n *\n * @returns {String}\n */\n\n value: function getString() {\n return this.leaves.reduce(function (string, leaf) {\n return string + leaf.text;\n }, '');\n }\n\n /**\n * Get the concatenated characters of the node;\n *\n * @returns {String}\n */\n\n }, {\n key: 'searchLeafAtOffset',\n\n\n /**\n * Find the 'first' leaf at offset; By 'first' the alorighthm prefers `endOffset === offset` than `startOffset === offset`\n * Corner Cases:\n * 1. if offset is negative, return the first leaf;\n * 2. if offset is larger than text length, the leaf is null, startOffset, endOffset and index is of the last leaf\n *\n * @param {number}\n * @returns {Object}\n * @property {number} startOffset\n * @property {number} endOffset\n * @property {number} index\n * @property {Leaf} leaf\n */\n\n value: function searchLeafAtOffset(offset) {\n var endOffset = 0;\n var startOffset = 0;\n var index = -1;\n\n var leaf = this.leaves.find(function (l) {\n index++;\n startOffset = endOffset;\n endOffset = startOffset + l.text.length;\n return endOffset >= offset;\n });\n\n return {\n leaf: leaf,\n endOffset: endOffset,\n index: index,\n startOffset: startOffset\n };\n }\n\n /**\n * Add a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(index, length, mark) {\n var marks = Set.of(mark);\n return this.addMarks(index, length, marks);\n }\n\n /**\n * Add a `set` of marks at `index` and `length`.\n * Corner Cases:\n * 1. If empty text, and if length === 0 and index === 0, will make sure the text contain an empty leaf with the given mark.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Set<Mark>} set\n * @return {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(index, length, set$$1) {\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves = this.leaves;\n\n var first = _leaves.first();\n\n if (!first) {\n return this.set('leaves', List.of(Leaf.fromJSON({ text: '', marks: set$$1 })));\n }\n\n var newFirst = first.addMarks(set$$1);\n if (newFirst === first) return this;\n return this.set('leaves', List.of(newFirst));\n }\n\n if (this.text === '') return this;\n if (length === 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves2 = slicedToArray(_Leaf$splitLeaves, 2),\n before = _Leaf$splitLeaves2[0],\n bundle = _Leaf$splitLeaves2[1];\n\n var _Leaf$splitLeaves3 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves4 = slicedToArray(_Leaf$splitLeaves3, 2),\n middle = _Leaf$splitLeaves4[0],\n after = _Leaf$splitLeaves4[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.addMarks(set$$1);\n }), after);\n return this.setLeaves(leaves);\n }\n\n /**\n * Get the decorations for the node from a `schema`.\n *\n * @param {Schema} schema\n * @return {Array}\n */\n\n }, {\n key: 'getDecorations',\n value: function getDecorations(schema) {\n return schema.__getDecorations(this);\n }\n\n /**\n * Derive the leaves for a list of `decorations`.\n *\n * @param {Array|Void} decorations (optional)\n * @return {List<Leaf>}\n */\n\n }, {\n key: 'getLeaves',\n value: function getLeaves() {\n var _this2 = this;\n\n var decorations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var leaves = this.leaves;\n\n if (leaves.size === 0) return List.of(Leaf.create({}));\n if (!decorations || decorations.length === 0) return leaves;\n if (this.text.length === 0) return leaves;\n var key = this.key;\n\n\n decorations.forEach(function (range) {\n var startKey = range.startKey,\n endKey = range.endKey,\n startOffset = range.startOffset,\n endOffset = range.endOffset,\n marks = range.marks;\n\n var hasStart = startKey == key;\n var hasEnd = endKey == key;\n\n if (hasStart && hasEnd) {\n var index = hasStart ? startOffset : 0;\n var length = hasEnd ? endOffset - index : _this2.text.length - index;\n\n if (length < 1) return;\n if (index >= _this2.text.length) return;\n\n if (index !== 0 || length < _this2.text.length) {\n var _Leaf$splitLeaves5 = Leaf.splitLeaves(leaves, index),\n _Leaf$splitLeaves6 = slicedToArray(_Leaf$splitLeaves5, 2),\n before = _Leaf$splitLeaves6[0],\n bundle = _Leaf$splitLeaves6[1];\n\n var _Leaf$splitLeaves7 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves8 = slicedToArray(_Leaf$splitLeaves7, 2),\n middle = _Leaf$splitLeaves8[0],\n after = _Leaf$splitLeaves8[1];\n\n leaves = before.concat(middle.map(function (x) {\n return x.addMarks(marks);\n }), after);\n return;\n }\n }\n\n leaves = leaves.map(function (x) {\n return x.addMarks(marks);\n });\n });\n\n if (leaves === this.leaves) return leaves;\n return Leaf.createLeaves(leaves);\n }\n\n /**\n * Get all of the active marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getActiveMarksBetweenOffsets',\n value: function getActiveMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getActiveMarks();\n }\n\n if (startOffset >= endOffset) return Set();\n // For empty text in a paragraph, use getActiveMarks;\n if (this.text === '') return this.getActiveMarks();\n\n var result = null;\n var leafEnd = 0;\n\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.intersect(leaf.marks);\n if (result && result.size === 0) return false;\n return false;\n });\n\n return result || Set();\n }\n\n /**\n * Get all of the active marks on the text\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getActiveMarks',\n value: function getActiveMarks() {\n var _this3 = this;\n\n if (this.leaves.size === 0) return Set();\n\n var result = this.leaves.first().marks;\n if (result.size === 0) return result;\n\n return result.withMutations(function (x) {\n _this3.leaves.forEach(function (c) {\n x.intersect(c.marks);\n if (x.size === 0) return false;\n });\n });\n }\n }, {\n key: 'getFirstText',\n value: function getFirstText() {\n return this;\n }\n }, {\n key: 'getLastText',\n value: function getLastText() {\n return this;\n }\n\n /**\n * Get all of the marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getMarksBetweenOffsets',\n value: function getMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getMarks();\n }\n\n if (startOffset >= endOffset) return Set();\n // For empty text in a paragraph, use getActiveMarks;\n if (this.text === '') return this.getActiveMarks();\n\n var result = null;\n var leafEnd = 0;\n\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.union(leaf.marks);\n });\n\n return result || Set();\n }\n\n /**\n * Get all of the marks on the text.\n *\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n return new OrderedSet(array);\n }\n\n /**\n * Get all of the marks on the text as an array\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n if (this.leaves.size === 0) return [];\n var first = this.leaves.first().marks;\n if (this.leaves.size === 1) return first.toArray();\n\n var result = [];\n\n this.leaves.forEach(function (leaf) {\n result.push(leaf.marks.toArray());\n });\n\n return Array.prototype.concat.apply(first.toArray(), result);\n }\n\n /**\n * Get the marks on the text at `index`.\n * Corner Cases:\n * 1. if no text is before the index, and index !== 0, then return Set()\n * 2. (for insert after split node or mark at range) if index === 0, and text === '', then return the leaf.marks\n * 3. if index === 0, text !== '', return Set()\n *\n *\n * @param {Number} index\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getMarksAtIndex',\n value: function getMarksAtIndex(index) {\n var _searchLeafAtOffset = this.searchLeafAtOffset(index),\n leaf = _searchLeafAtOffset.leaf;\n\n if (!leaf) return Set();\n return leaf.marks;\n }\n\n /**\n * Get a node by `key`, to parallel other nodes.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNode',\n value: function getNode(key) {\n return this.key == key ? this : null;\n }\n\n /**\n * Check if the node has a node by `key`, to parallel other nodes.\n *\n * @param {String} key\n * @return {Boolean}\n */\n\n }, {\n key: 'hasNode',\n value: function hasNode(key) {\n return !!this.getNode(key);\n }\n\n /**\n * Insert `text` at `index`.\n *\n * @param {Numbder} offset\n * @param {String} text\n * @param {Set} marks (optional)\n * @return {Text}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(offset, text, marks) {\n if (this.text === '') {\n return this.set('leaves', List.of(Leaf.create({ text: text, marks: marks })));\n }\n\n if (text.length === 0) return this;\n if (!marks) marks = Set();\n\n var _searchLeafAtOffset2 = this.searchLeafAtOffset(offset),\n startOffset = _searchLeafAtOffset2.startOffset,\n leaf = _searchLeafAtOffset2.leaf,\n index = _searchLeafAtOffset2.index;\n\n var delta = offset - startOffset;\n var beforeText = leaf.text.slice(0, delta);\n var afterText = leaf.text.slice(delta);\n var leaves = this.leaves;\n\n\n if (leaf.marks.equals(marks)) {\n return this.set('leaves', leaves.set(index, leaf.set('text', beforeText + text + afterText)));\n }\n\n var nextLeaves = leaves.splice(index, 1, leaf.set('text', beforeText), Leaf.create({ text: text, marks: marks }), leaf.set('text', afterText));\n\n return this.setLeaves(nextLeaves);\n }\n\n /**\n * Regenerate the node's key.\n *\n * @return {Text}\n */\n\n }, {\n key: 'regenerateKey',\n value: function regenerateKey() {\n var key = KeyUtils.create();\n return this.set('key', key);\n }\n\n /**\n * Remove a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(index, length, mark) {\n if (this.text === '' && index === 0 && length === 0) {\n var first = this.leaves.first();\n if (!first) return this;\n var newFirst = first.removeMark(mark);\n if (newFirst === first) return this;\n return this.set('leaves', List.of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves9 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves10 = slicedToArray(_Leaf$splitLeaves9, 2),\n before = _Leaf$splitLeaves10[0],\n bundle = _Leaf$splitLeaves10[1];\n\n var _Leaf$splitLeaves11 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves12 = slicedToArray(_Leaf$splitLeaves11, 2),\n middle = _Leaf$splitLeaves12[0],\n after = _Leaf$splitLeaves12[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.removeMark(mark);\n }), after);\n return this.setLeaves(leaves);\n }\n\n /**\n * Remove text from the text node at `start` for `length`.\n *\n * @param {Number} start\n * @param {Number} length\n * @return {Text}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(start, length) {\n if (length <= 0) return this;\n if (start >= this.text.length) return this;\n\n // PERF: For simple backspace, we can operate directly on the leaf\n if (length === 1) {\n var _searchLeafAtOffset3 = this.searchLeafAtOffset(start + 1),\n leaf = _searchLeafAtOffset3.leaf,\n index = _searchLeafAtOffset3.index,\n startOffset = _searchLeafAtOffset3.startOffset;\n\n var offset = start - startOffset;\n\n if (leaf) {\n if (leaf.text.length === 1) {\n var _leaves2 = this.leaves.remove(index);\n return this.setLeaves(_leaves2);\n }\n\n var beforeText = leaf.text.slice(0, offset);\n var afterText = leaf.text.slice(offset + length);\n var text = beforeText + afterText;\n\n if (text.length > 0) {\n return this.set('leaves', this.leaves.set(index, leaf.set('text', text)));\n }\n }\n }\n\n var _Leaf$splitLeaves13 = Leaf.splitLeaves(this.leaves, start),\n _Leaf$splitLeaves14 = slicedToArray(_Leaf$splitLeaves13, 2),\n before = _Leaf$splitLeaves14[0],\n bundle = _Leaf$splitLeaves14[1];\n\n var after = Leaf.splitLeaves(bundle, length)[1];\n var leaves = Leaf.createLeaves(before.concat(after));\n\n if (leaves.size === 1) {\n var first = leaves.first();\n\n if (first.text === '') {\n return this.set('leaves', List.of(first.set('marks', this.getActiveMarks())));\n }\n }\n\n return this.set('leaves', leaves);\n }\n\n /**\n * Return a JSON representation of the text.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n leaves: this.getLeaves().toArray().map(function (r) {\n return r.toJSON();\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n\n /**\n * Update a `mark` at `index` and `length` with `properties`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Text}\n */\n\n }, {\n key: 'updateMark',\n value: function updateMark(index, length, mark, properties) {\n var newMark = mark.merge(properties);\n\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves3 = this.leaves;\n\n var first = _leaves3.first();\n if (!first) return this;\n var newFirst = first.updateMark(mark, newMark);\n if (newFirst === first) return this;\n return this.set('leaves', List.of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves15 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves16 = slicedToArray(_Leaf$splitLeaves15, 2),\n before = _Leaf$splitLeaves16[0],\n bundle = _Leaf$splitLeaves16[1];\n\n var _Leaf$splitLeaves17 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves18 = slicedToArray(_Leaf$splitLeaves17, 2),\n middle = _Leaf$splitLeaves18[0],\n after = _Leaf$splitLeaves18[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.updateMark(mark, newMark);\n }), after);\n\n return this.setLeaves(leaves);\n }\n\n /**\n * Split this text and return two different texts\n * @param {Number} position\n * @returns {Array<Text>}\n */\n\n }, {\n key: 'splitText',\n value: function splitText(offset) {\n var splitted = Leaf.splitLeaves(this.leaves, offset);\n var one = this.set('leaves', splitted[0]);\n var two = this.set('leaves', splitted[1]).regenerateKey();\n return [one, two];\n }\n\n /**\n * merge this text and another text at the end\n * @param {Text} text\n * @returns {Text}\n */\n\n }, {\n key: 'mergeText',\n value: function mergeText(text) {\n var leaves = this.leaves.concat(text.leaves);\n return this.setLeaves(leaves);\n }\n\n /**\n * Normalize the text node with a `schema`.\n *\n * @param {Schema} schema\n * @return {Function|Void}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(schema) {\n return schema.normalizeNode(this);\n }\n\n /**\n * Validate the text node against a `schema`.\n *\n * @param {Schema} schema\n * @return {Error|Void}\n */\n\n }, {\n key: 'validate',\n value: function validate(schema) {\n return schema.validateNode(this);\n }\n\n /**\n * Get the first invalid descendant\n * PERF: Do not cache this method; because it can cause cycle reference\n *\n * @param {Schema} schema\n * @returns {Text|Null}\n */\n\n }, {\n key: 'getFirstInvalidDescendant',\n value: function getFirstInvalidDescendant(schema) {\n return this.validate(schema) ? this : null;\n }\n\n /**\n * Set leaves with normalized `leaves`\n *\n * @param {Schema} schema\n * @returns {Text|Null}\n */\n\n }, {\n key: 'setLeaves',\n value: function setLeaves(leaves) {\n var result = Leaf.createLeaves(leaves);\n\n if (result.size === 1) {\n var first = result.first();\n\n if (!first.marks || first.marks.size === 0) {\n if (first.text === '') {\n return this.set('leaves', List());\n }\n }\n }\n\n return this.set('leaves', Leaf.createLeaves(leaves));\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'text';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n\n /**\n * Is the node empty?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n return this.text == '';\n }\n\n /**\n * Get the concatenated text of the node.\n *\n * @return {String}\n */\n\n }, {\n key: 'text',\n get: function get$$1() {\n return this.getString();\n }\n }, {\n key: 'characters',\n get: function get$$1() {\n return this.leaves.flatMap(function (x) {\n return x.getCharacters();\n });\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Text` with `attrs`.\n *\n * @param {Object|Array|List|String|Text} attrs\n * @return {Text}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (Text.isText(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { leaves: [{ text: attrs }] };\n }\n\n if (isPlainObject(attrs)) {\n if (attrs.text) {\n var _attrs = attrs,\n text = _attrs.text,\n marks = _attrs.marks,\n key = _attrs.key;\n\n attrs = { key: key, leaves: [{ text: text, marks: marks }] };\n }\n\n return Text.fromJSON(attrs);\n }\n\n throw new Error('`Text.create` only accepts objects, arrays, strings or texts, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Texts` from `elements`.\n *\n * @param {Array<Text|Object>|List<Text|Object>} elements\n * @return {List<Text>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Text.create));\n return list;\n }\n\n throw new Error('`Text.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Text` from a JSON `object`.\n *\n * @param {Object|Text} object\n * @return {Text}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Text.isText(object)) {\n return object;\n }\n\n var _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key;\n var leaves = object.leaves;\n\n\n if (!leaves) {\n if (object.ranges) {\n logger.deprecate('slate@0.27.0', 'The `ranges` property of Slate objects has been renamed to `leaves`.');\n\n leaves = object.ranges;\n } else {\n leaves = List();\n }\n }\n\n if (Array.isArray(leaves)) {\n leaves = List(leaves.map(function (x) {\n return Leaf.create(x);\n }));\n } else if (List.isList(leaves)) {\n leaves = leaves.map(function (x) {\n return Leaf.create(x);\n });\n } else {\n throw new Error('leaves must be either Array or Immutable.List');\n }\n\n var node = new Text({\n leaves: Leaf.createLeaves(leaves),\n key: key\n });\n\n return node;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Text`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isTextList',\n\n\n /**\n * Check if `any` is a list of texts.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n value: function isTextList(any) {\n return List.isList(any) && any.every(function (item) {\n return Text.isText(item);\n });\n }\n }]);\n return Text;\n}(Record(DEFAULTS$7));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nText.fromJS = Text.fromJSON;\nText.isText = isType.bind(null, 'TEXT');\nText.prototype[MODEL_TYPES.TEXT] = true;\n\n/**\n * Memoize read methods.\n */\n\nmemoize(Text.prototype, ['getDecorations', 'getActiveMarks', 'getMarks', 'getMarksAsArray', 'normalize', 'validate', 'getString']);\n\n/**\n * Node.\n *\n * And interface that `Document`, `Block` and `Inline` all implement, to make\n * working with the recursive node tree easier.\n *\n * @type {Node}\n */\n\nvar Node = function () {\n function Node() {\n classCallCheck(this, Node);\n }\n\n createClass(Node, [{\n key: 'addMark',\n\n\n /**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Node}\n */\n\n value: function addMark(path, offset, length, mark) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.addMark(offset, length, mark);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Recursively filter all descendant nodes with `iterator`.\n *\n * @param {Function} iterator\n * @return {List<Node>}\n */\n\n }, {\n key: 'filterDescendants',\n value: function filterDescendants(iterator) {\n var matches = [];\n\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) matches.push(node);\n });\n\n return List(matches);\n }\n\n /**\n * Recursively find all descendant nodes by `iterator`.\n *\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'findDescendant',\n value: function findDescendant(iterator) {\n var found = null;\n\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) {\n found = node;\n return false;\n }\n });\n\n return found;\n }\n\n /**\n * Recursively iterate over all descendant nodes with `iterator`. If the\n * iterator returns false it will break the loop.\n *\n * @param {Function} iterator\n */\n\n }, {\n key: 'forEachDescendant',\n value: function forEachDescendant(iterator) {\n var ret = void 0;\n\n this.nodes.forEach(function (child, i, nodes) {\n if (iterator(child, i, nodes) === false) {\n ret = false;\n return false;\n }\n\n if (child.object != 'text') {\n ret = child.forEachDescendant(iterator);\n return ret;\n }\n });\n\n return ret;\n }\n\n /**\n * Get a set of the active marks in a `range`.\n *\n * @param {Range} range\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getActiveMarksAtRange',\n value: function getActiveMarksAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return Set();\n\n if (range.isCollapsed) {\n var _range = range,\n _startKey = _range.startKey,\n _startOffset = _range.startOffset;\n\n return this.getMarksAtPosition(_startKey, _startOffset).toSet();\n }\n\n var _range2 = range,\n startKey = _range2.startKey,\n endKey = _range2.endKey,\n startOffset = _range2.startOffset,\n endOffset = _range2.endOffset;\n\n var startText = this.getDescendant(startKey);\n\n if (startKey !== endKey) {\n while (startKey !== endKey && endOffset === 0) {\n var _endText = this.getPreviousText(endKey);\n endKey = _endText.key;\n endOffset = _endText.text.length;\n }\n\n while (startKey !== endKey && startOffset === startText.text.length) {\n startText = this.getNextText(startKey);\n startKey = startText.key;\n startOffset = 0;\n }\n }\n\n if (startKey === endKey) {\n return startText.getActiveMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var startMarks = startText.getActiveMarksBetweenOffsets(startOffset, startText.text.length);\n if (startMarks.size === 0) return Set();\n var endText = this.getDescendant(endKey);\n var endMarks = endText.getActiveMarksBetweenOffsets(0, endOffset);\n var marks = startMarks.intersect(endMarks);\n // If marks is already empty, the active marks is empty\n if (marks.size === 0) return marks;\n\n var text = this.getNextText(startKey);\n\n while (text.key !== endKey) {\n if (text.text.length !== 0) {\n marks = marks.intersect(text.getActiveMarks());\n if (marks.size === 0) return Set();\n }\n\n text = this.getNextText(text.key);\n }\n return marks;\n }\n\n /**\n * Get a list of the ancestors of a descendant.\n *\n * @param {List|String} path\n * @return {List<Node>|Null}\n */\n\n }, {\n key: 'getAncestors',\n value: function getAncestors(path) {\n var _this = this;\n\n path = this.resolvePath(path);\n if (!path) return null;\n\n var ancestors = [];\n\n path.forEach(function (p, i) {\n var current = path.slice(0, i);\n var parent = _this.getNode(current);\n ancestors.push(parent);\n });\n\n return List(ancestors);\n }\n\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getBlocks',\n value: function getBlocks() {\n var array = this.getBlocksAsArray();\n return new List(array);\n }\n\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getBlocksAsArray',\n value: function getBlocksAsArray() {\n return this.nodes.reduce(function (array, child) {\n if (child.object != 'block') return array;\n if (!child.isLeafBlock()) return array.concat(child.getBlocksAsArray());\n array.push(child);\n return array;\n }, []);\n }\n\n /**\n * Get the leaf block descendants in a `range`.\n *\n * @param {Range} range\n * @return {List<Node>}\n */\n\n }, {\n key: 'getBlocksAtRange',\n value: function getBlocksAtRange(range) {\n var array = this.getBlocksAtRangeAsArray(range);\n // Eliminate duplicates by converting to an `OrderedSet` first.\n return new List(new OrderedSet(array));\n }\n\n /**\n * Get the leaf block descendants in a `range` as an array\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksAtRangeAsArray',\n value: function getBlocksAtRangeAsArray(range) {\n range = range.normalize(this);\n if (range.isUnset) return [];\n\n var _range3 = range,\n startKey = _range3.startKey,\n endKey = _range3.endKey;\n\n var startBlock = this.getClosestBlock(startKey);\n\n // PERF: the most common case is when the range is in a single block node,\n // where we can avoid a lot of iterating of the tree.\n if (startKey === endKey) return [startBlock];\n\n var endBlock = this.getClosestBlock(endKey);\n var blocks = this.getBlocksAsArray();\n var start = blocks.indexOf(startBlock);\n var end = blocks.indexOf(endBlock);\n return blocks.slice(start, end + 1);\n }\n\n /**\n * Get all of the leaf blocks that match a `type`.\n *\n * @param {String} type\n * @return {List<Node>}\n */\n\n }, {\n key: 'getBlocksByType',\n value: function getBlocksByType(type) {\n var array = this.getBlocksByTypeAsArray(type);\n return new List(array);\n }\n\n /**\n * Get all of the leaf blocks that match a `type` as an array\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksByTypeAsArray',\n value: function getBlocksByTypeAsArray(type) {\n return this.nodes.reduce(function (array, node) {\n if (node.object != 'block') {\n return array;\n } else if (node.isLeafBlock() && node.type == type) {\n array.push(node);\n return array;\n } else {\n return array.concat(node.getBlocksByTypeAsArray(type));\n }\n }, []);\n }\n\n /**\n * Get all of the characters for every text node.\n *\n * @return {List<Character>}\n */\n\n }, {\n key: 'getCharacters',\n value: function getCharacters() {\n var characters = this.getTexts().flatMap(function (t) {\n return t.characters;\n });\n return characters;\n }\n\n /**\n * Get a list of the characters in a `range`.\n *\n * @param {Range} range\n * @return {List<Character>}\n */\n\n }, {\n key: 'getCharactersAtRange',\n value: function getCharactersAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return List();\n var _range4 = range,\n startKey = _range4.startKey,\n endKey = _range4.endKey,\n startOffset = _range4.startOffset,\n endOffset = _range4.endOffset;\n\n\n if (startKey === endKey) {\n var endText = this.getDescendant(endKey);\n return endText.characters.slice(startOffset, endOffset);\n }\n\n return this.getTextsAtRange(range).flatMap(function (t) {\n if (t.key === startKey) {\n return t.characters.slice(startOffset);\n }\n\n if (t.key === endKey) {\n return t.characters.slice(0, endOffset);\n }\n return t.characters;\n });\n }\n\n /**\n * Get a child node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getChild',\n value: function getChild(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n var child = path.size === 1 ? this.nodes.get(path.first()) : null;\n return child;\n }\n\n /**\n * Get closest parent of node that matches an `iterator`.\n *\n * @param {List|String} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosest',\n value: function getClosest(path, iterator) {\n var _this2 = this;\n\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var closest = ancestors.findLast(function (node) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // We never want to include the top-level node.\n if (node === _this2) return false;\n return iterator.apply(undefined, [node].concat(args));\n });\n\n return closest || null;\n }\n\n /**\n * Get the closest block parent of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestBlock',\n value: function getClosestBlock(path) {\n var closest = this.getClosest(path, function (n) {\n return n.object === 'block';\n });\n return closest;\n }\n\n /**\n * Get the closest inline parent of a node by `path`.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestInline',\n value: function getClosestInline(path) {\n var closest = this.getClosest(path, function (n) {\n return n.object === 'inline';\n });\n return closest;\n }\n\n /**\n * Get the closest void parent of a node by `path`.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestVoid',\n value: function getClosestVoid(path) {\n var closest = this.getClosest(path, function (p) {\n return p.isVoid;\n });\n return closest;\n }\n\n /**\n * Get the common ancestor of nodes `a` and `b`.\n *\n * @param {List} a\n * @param {List} b\n * @return {Node}\n */\n\n }, {\n key: 'getCommonAncestor',\n value: function getCommonAncestor(a, b) {\n a = this.resolvePath(a);\n b = this.resolvePath(b);\n if (!a || !b) return null;\n\n var path = PathUtils.relate(a, b);\n var node = this.getNode(path);\n return node;\n }\n\n /**\n * Get the decorations for the node from a `stack`.\n *\n * @param {Stack} stack\n * @return {List}\n */\n\n }, {\n key: 'getDecorations',\n value: function getDecorations(stack) {\n var decorations = stack.find('decorateNode', this);\n var list = Range.createList(decorations || []);\n return list;\n }\n\n /**\n * Get the depth of a descendant, with optional `startAt`.\n *\n * @param {List|String} path\n * @param {Number} startAt\n * @return {Number|Null}\n */\n\n }, {\n key: 'getDepth',\n value: function getDepth(path) {\n var startAt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n path = this.resolvePath(path);\n if (!path) return null;\n\n var node = this.getNode(path);\n var depth = node ? path.size - 1 + startAt : null;\n return depth;\n }\n\n /**\n * Get a descendant node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getDescendant',\n value: function getDescendant(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n\n var array = path.toArray();\n var descendant = this;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = array[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var index = _step.value;\n\n if (!descendant) return null;\n if (!descendant.nodes) return null;\n descendant = descendant.nodes.get(index);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return descendant;\n }\n\n /**\n * Get the first invalid descendant\n *\n * @param {Schema} schema\n * @return {Node|Text|Null}\n */\n\n }, {\n key: 'getFirstInvalidDescendant',\n value: function getFirstInvalidDescendant(schema) {\n var result = null;\n\n this.nodes.find(function (n) {\n result = n.validate(schema) ? n : n.getFirstInvalidDescendant(schema);\n return result;\n });\n\n return result;\n }\n\n /**\n * Get the first child text node.\n *\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFirstText',\n value: function getFirstText() {\n var descendant = null;\n\n var found = this.nodes.find(function (node) {\n if (node.object === 'text') return true;\n descendant = node.getFirstText();\n return !!descendant;\n });\n\n return descendant || found;\n }\n\n /**\n * Get a fragment of the node at a `range`.\n *\n * @param {Range} range\n * @return {Document}\n */\n\n }, {\n key: 'getFragmentAtRange',\n value: function getFragmentAtRange(range) {\n range = range.normalize(this);\n\n if (range.isUnset) {\n return Document.create();\n }\n\n var _range5 = range,\n startPath = _range5.startPath,\n startOffset = _range5.startOffset,\n endPath = _range5.endPath,\n endOffset = _range5.endOffset;\n\n var node = this;\n var targetPath = endPath;\n var targetPosition = endOffset;\n var mode = 'end';\n\n while (targetPath.size) {\n var index = targetPath.last();\n node = node.splitNode(targetPath, targetPosition);\n targetPosition = index + 1;\n targetPath = PathUtils.lift(targetPath);\n\n if (!targetPath.size && mode === 'end') {\n targetPath = startPath;\n targetPosition = startOffset;\n mode = 'start';\n }\n }\n\n var startIndex = startPath.first() + 1;\n var endIndex = endPath.first() + 2;\n var nodes = node.nodes.slice(startIndex, endIndex);\n var fragment = Document.create({ nodes: nodes });\n return fragment;\n }\n\n /**\n * Get the furthest parent of a node that matches an `iterator`.\n *\n * @param {Path} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthest',\n value: function getFurthest(path, iterator) {\n var _this3 = this;\n\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var furthest = ancestors.find(function (node) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n // We never want to include the top-level node.\n if (node === _this3) return false;\n return iterator.apply(undefined, [node].concat(args));\n });\n\n return furthest || null;\n }\n\n /**\n * Get the furthest ancestor of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestAncestor',\n value: function getFurthestAncestor(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n var furthest = path.size ? this.nodes.get(path.first()) : null;\n return furthest;\n }\n\n /**\n * Get the furthest block parent of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestBlock',\n value: function getFurthestBlock(path) {\n var furthest = this.getFurthest(path, function (n) {\n return n.object === 'block';\n });\n return furthest;\n }\n\n /**\n * Get the furthest inline parent of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestInline',\n value: function getFurthestInline(path) {\n var furthest = this.getFurthest(path, function (n) {\n return n.object === 'inline';\n });\n return furthest;\n }\n\n /**\n * Get the furthest ancestor of a node that has only one child.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestOnlyChildAncestor',\n value: function getFurthestOnlyChildAncestor(path) {\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var furthest = ancestors.rest().reverse().takeUntil(function (p) {\n return p.nodes.size > 1;\n }).last();\n\n return furthest || null;\n }\n\n /**\n * Get the closest inline nodes for each text node in the node.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getInlines',\n value: function getInlines() {\n var array = this.getInlinesAsArray();\n var list = new List(array);\n return list;\n }\n\n /**\n * Get the closest inline nodes for each text node in the node, as an array.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getInlinesAsArray',\n value: function getInlinesAsArray() {\n var array = [];\n\n this.nodes.forEach(function (child) {\n if (child.object == 'text') return;\n\n if (child.isLeafInline()) {\n array.push(child);\n } else {\n array = array.concat(child.getInlinesAsArray());\n }\n });\n\n return array;\n }\n\n /**\n * Get the closest inline nodes for each text node in a `range`.\n *\n * @param {Range} range\n * @return {List<Node>}\n */\n\n }, {\n key: 'getInlinesAtRange',\n value: function getInlinesAtRange(range) {\n var array = this.getInlinesAtRangeAsArray(range);\n // Remove duplicates by converting it to an `OrderedSet` first.\n var list = new List(new OrderedSet(array));\n return list;\n }\n\n /**\n * Get the closest inline nodes for each text node in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesAtRangeAsArray',\n value: function getInlinesAtRangeAsArray(range) {\n var _this4 = this;\n\n range = range.normalize(this);\n if (range.isUnset) return [];\n\n var array = this.getTextsAtRangeAsArray(range).map(function (text) {\n return _this4.getClosestInline(text.key);\n }).filter(function (exists) {\n return exists;\n });\n\n return array;\n }\n\n /**\n * Get all of the leaf inline nodes that match a `type`.\n *\n * @param {String} type\n * @return {List<Node>}\n */\n\n }, {\n key: 'getInlinesByType',\n value: function getInlinesByType(type) {\n var array = this.getInlinesByTypeAsArray(type);\n var list = new List(array);\n return list;\n }\n\n /**\n * Get all of the leaf inline nodes that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesByTypeAsArray',\n value: function getInlinesByTypeAsArray(type) {\n var array = this.nodes.reduce(function (inlines, node) {\n if (node.object == 'text') {\n return inlines;\n } else if (node.isLeafInline() && node.type == type) {\n inlines.push(node);\n return inlines;\n } else {\n return inlines.concat(node.getInlinesByTypeAsArray(type));\n }\n }, []);\n\n return array;\n }\n\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getInsertMarksAtRange',\n value: function getInsertMarksAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return Set();\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use key and offset as proxies for cache\n return this.getMarksAtPosition(range.startKey, range.startOffset);\n }\n\n var _range6 = range,\n startKey = _range6.startKey,\n startOffset = _range6.startOffset;\n\n var text = this.getDescendant(startKey);\n var marks = text.getMarksAtIndex(startOffset + 1);\n return marks;\n }\n\n /**\n * Get an object mapping all the keys in the node to their paths.\n *\n * @return {Object}\n */\n\n }, {\n key: 'getKeysToPathsTable',\n value: function getKeysToPathsTable() {\n var ret = defineProperty({}, this.key, []);\n\n this.nodes.forEach(function (node, i) {\n ret[node.key] = [i];\n\n if (node.object !== 'text') {\n var nested = node.getKeysToPathsTable();\n\n for (var key in nested) {\n var path = nested[key];\n ret[key] = [i].concat(toConsumableArray(path));\n }\n }\n });\n\n return ret;\n }\n\n /**\n * Get the last child text node.\n *\n * @return {Node|Null}\n */\n\n }, {\n key: 'getLastText',\n value: function getLastText() {\n var descendant = null;\n\n var found = this.nodes.findLast(function (node) {\n if (node.object == 'text') return true;\n descendant = node.getLastText();\n return descendant;\n });\n\n return descendant || found;\n }\n\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n var set$$1 = new Set(array);\n return set$$1;\n }\n\n /**\n * Get all of the marks as an array.\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n var _ref;\n\n var result = [];\n\n this.nodes.forEach(function (node) {\n result.push(node.getMarksAsArray());\n });\n\n // PERF: use only one concat rather than multiple for speed.\n var array = (_ref = []).concat.apply(_ref, result);\n return array;\n }\n\n /**\n * Get a set of marks in a `position`, the equivalent of a collapsed range\n *\n * @param {string} key\n * @param {number} offset\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtPosition',\n value: function getMarksAtPosition(key, offset) {\n var text = this.getDescendant(key);\n var currentMarks = text.getMarksAtIndex(offset);\n if (offset !== 0) return currentMarks;\n var closestBlock = this.getClosestBlock(key);\n\n if (closestBlock.text === '') {\n // insert mark for empty block; the empty block are often created by split node or add marks in a range including empty blocks\n return currentMarks;\n }\n\n var previous = this.getPreviousText(key);\n if (!previous) return Set();\n\n if (closestBlock.hasDescendant(previous.key)) {\n return previous.getMarksAtIndex(previous.text.length);\n }\n\n return currentMarks;\n }\n\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getMarksAtRange',\n value: function getMarksAtRange(range) {\n var marks = new Set(this.getOrderedMarksAtRange(range));\n return marks;\n }\n\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'getMarksByType',\n value: function getMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n var set$$1 = new Set(array);\n return set$$1;\n }\n\n /**\n * Get all of the marks that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getMarksByTypeAsArray',\n value: function getMarksByTypeAsArray(type) {\n var array = this.nodes.reduce(function (memo, node) {\n return node.object == 'text' ? memo.concat(node.getMarksAsArray().filter(function (m) {\n return m.type == type;\n })) : memo.concat(node.getMarksByTypeAsArray(type));\n }, []);\n\n return array;\n }\n\n /**\n * Get the block node before a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextBlock',\n value: function getNextBlock(key) {\n var child = this.assertDescendant(key);\n var last = void 0;\n\n if (child.object == 'block') {\n last = child.getLastText();\n } else {\n var block = this.getClosestBlock(key);\n last = block.getLastText();\n }\n\n var next = this.getNextText(last.key);\n if (!next) return null;\n\n var closest = this.getClosestBlock(next.key);\n return closest;\n }\n\n /**\n * Get the next node in the tree from a node.\n *\n * This will not only check for siblings but instead move up the tree\n * returning the next ancestor if no sibling is found.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextNode',\n value: function getNextNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n var target = PathUtils.increment(p);\n var node = this.getNode(target);\n if (node) return node;\n }\n\n return null;\n }\n\n /**\n * Get the next sibling of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextSibling',\n value: function getNextSibling(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var p = PathUtils.increment(path);\n var sibling = this.getNode(p);\n return sibling;\n }\n\n /**\n * Get the text node after a descendant text node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextText',\n value: function getNextText(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var next = this.getNextNode(path);\n if (!next) return null;\n var text = next.getFirstText();\n return text;\n }\n\n /**\n * Get a node in the tree.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNode',\n value: function getNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n var node = path.size ? this.getDescendant(path) : this;\n return node;\n }\n\n /**\n * Get the offset for a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Number}\n */\n\n }, {\n key: 'getOffset',\n value: function getOffset(key) {\n this.assertDescendant(key);\n\n // Calculate the offset of the nodes before the highest child.\n var child = this.getFurthestAncestor(key);\n var offset = this.nodes.takeUntil(function (n) {\n return n == child;\n }).reduce(function (memo, n) {\n return memo + n.text.length;\n }, 0);\n\n // Recurse if need be.\n var ret = this.hasChild(key) ? offset : offset + child.getOffset(key);\n return ret;\n }\n\n /**\n * Get the offset from a `range`.\n *\n * @param {Range} range\n * @return {Number}\n */\n\n }, {\n key: 'getOffsetAtRange',\n value: function getOffsetAtRange(range) {\n range = range.normalize(this);\n\n if (range.isUnset) {\n throw new Error('The range cannot be unset to calculcate its offset.');\n }\n\n if (range.isExpanded) {\n throw new Error('The range must be collapsed to calculcate its offset.');\n }\n\n var _range7 = range,\n startKey = _range7.startKey,\n startOffset = _range7.startOffset;\n\n var offset = this.getOffset(startKey) + startOffset;\n return offset;\n }\n\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getOrderedMarks',\n value: function getOrderedMarks() {\n var array = this.getMarksAsArray();\n var set$$1 = new OrderedSet(array);\n return set$$1;\n }\n\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getOrderedMarksAtRange',\n value: function getOrderedMarksAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return OrderedSet();\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use key and offset as proxies for cache\n return this.getMarksAtPosition(range.startKey, range.startOffset);\n }\n\n var _range8 = range,\n startKey = _range8.startKey,\n startOffset = _range8.startOffset,\n endKey = _range8.endKey,\n endOffset = _range8.endOffset;\n\n var marks = this.getOrderedMarksBetweenPositions(startKey, startOffset, endKey, endOffset);\n\n return marks;\n }\n\n /**\n * Get a set of the marks in a `range`.\n * PERF: arguments use key and offset for utilizing cache\n *\n * @param {string} startKey\n * @param {number} startOffset\n * @param {string} endKey\n * @param {number} endOffset\n * @returns {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getOrderedMarksBetweenPositions',\n value: function getOrderedMarksBetweenPositions(startKey, startOffset, endKey, endOffset) {\n if (startKey === endKey) {\n var startText = this.getDescendant(startKey);\n return startText.getMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var texts = this.getTextsBetweenPositionsAsArray(startKey, endKey);\n\n return OrderedSet().withMutations(function (result) {\n texts.forEach(function (text) {\n if (text.key === startKey) {\n result.union(text.getMarksBetweenOffsets(startOffset, text.text.length));\n } else if (text.key === endKey) {\n result.union(text.getMarksBetweenOffsets(0, endOffset));\n } else {\n result.union(text.getMarks());\n }\n });\n });\n }\n\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {OrderedSet<Mark>}\n */\n\n }, {\n key: 'getOrderedMarksByType',\n value: function getOrderedMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n var set$$1 = new OrderedSet(array);\n return set$$1;\n }\n\n /**\n * Get the parent of a descendant node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getParent',\n value: function getParent(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var parentPath = PathUtils.lift(path);\n var parent = this.getNode(parentPath);\n return parent;\n }\n\n /**\n * Find the path to a node.\n *\n * @param {String|List} key\n * @return {List}\n */\n\n }, {\n key: 'getPath',\n value: function getPath(key) {\n // Handle the case of passing in a path directly, to match other methods.\n if (List.isList(key)) return key;\n\n var dict = this.getKeysToPathsTable();\n var path = dict[key];\n return path ? List(path) : null;\n }\n\n /**\n * Get the block node before a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousBlock',\n value: function getPreviousBlock(key) {\n var child = this.assertDescendant(key);\n var first = void 0;\n\n if (child.object == 'block') {\n first = child.getFirstText();\n } else {\n var block = this.getClosestBlock(key);\n first = block.getFirstText();\n }\n\n var previous = this.getPreviousText(first.key);\n if (!previous) return null;\n\n var closest = this.getClosestBlock(previous.key);\n return closest;\n }\n\n /**\n * Get the previous node from a node in the tree.\n *\n * This will not only check for siblings but instead move up the tree\n * returning the previous ancestor if no sibling is found.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousNode',\n value: function getPreviousNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n if (p.last() === 0) continue;\n\n var target = PathUtils.decrement(p);\n var node = this.getNode(target);\n if (node) return node;\n }\n\n return null;\n }\n\n /**\n * Get the previous sibling of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousSibling',\n value: function getPreviousSibling(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n if (path.last() === 0) return null;\n var p = PathUtils.decrement(path);\n var sibling = this.getNode(p);\n return sibling;\n }\n\n /**\n * Get the text node after a descendant text node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousText',\n value: function getPreviousText(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var previous = this.getPreviousNode(path);\n if (!previous) return null;\n var text = previous.getLastText();\n return text;\n }\n\n /**\n * Get the indexes of the selection for a `range`, given an extra flag for\n * whether the node `isSelected`, to determine whether not finding matches\n * means everything is selected or nothing is.\n *\n * @param {Range} range\n * @param {Boolean} isSelected\n * @return {Object|Null}\n */\n\n }, {\n key: 'getSelectionIndexes',\n value: function getSelectionIndexes(range) {\n var isSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var startKey = range.startKey,\n endKey = range.endKey;\n\n // PERF: if we're not selected, we can exit early.\n\n if (!isSelected) {\n return null;\n }\n\n // if we've been given an invalid selection we can exit early.\n if (range.isUnset) {\n return null;\n }\n\n // PERF: if the start and end keys are the same, just check for the child\n // that contains that single key.\n if (startKey == endKey) {\n var child = this.getFurthestAncestor(startKey);\n var index = child ? this.nodes.indexOf(child) : null;\n return { start: index, end: index + 1 };\n }\n\n // Otherwise, check all of the children...\n var start = null;\n var end = null;\n\n this.nodes.forEach(function (child, i) {\n if (child.object == 'text') {\n if (start == null && child.key == startKey) start = i;\n if (end == null && child.key == endKey) end = i + 1;\n } else {\n if (start == null && child.hasDescendant(startKey)) start = i;\n if (end == null && child.hasDescendant(endKey)) end = i + 1;\n }\n\n // PERF: exit early if both start and end have been found.\n return start == null || end == null;\n });\n\n if (isSelected && start == null) start = 0;\n if (isSelected && end == null) end = this.nodes.size;\n return start == null ? null : { start: start, end: end };\n }\n\n /**\n * Get the concatenated text string of all child nodes.\n *\n * @return {String}\n */\n\n }, {\n key: 'getText',\n value: function getText() {\n var text = this.nodes.reduce(function (string, node) {\n return string + node.text;\n }, '');\n\n return text;\n }\n\n /**\n * Get the descendent text node at an `offset`.\n *\n * @param {String} offset\n * @return {Node|Null}\n */\n\n }, {\n key: 'getTextAtOffset',\n value: function getTextAtOffset(offset) {\n // PERF: Add a few shortcuts for the obvious cases.\n if (offset === 0) return this.getFirstText();\n if (offset === this.text.length) return this.getLastText();\n if (offset < 0 || offset > this.text.length) return null;\n\n var length = 0;\n var text = this.getTexts().find(function (node, i, nodes) {\n length += node.text.length;\n return length > offset;\n });\n\n return text;\n }\n\n /**\n * Get the direction of the node's text.\n *\n * @return {String}\n */\n\n }, {\n key: 'getTextDirection',\n value: function getTextDirection() {\n var dir = direction(this.text);\n return dir === 'neutral' ? null : dir;\n }\n\n /**\n * Recursively get all of the child text nodes in order of appearance.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getTexts',\n value: function getTexts() {\n var array = this.getTextsAsArray();\n var list = new List(array);\n return list;\n }\n\n /**\n * Recursively get all the leaf text nodes in order of appearance, as array.\n *\n * @return {List<Node>}\n */\n\n }, {\n key: 'getTextsAsArray',\n value: function getTextsAsArray() {\n var array = [];\n\n this.nodes.forEach(function (node) {\n if (node.object == 'text') {\n array.push(node);\n } else {\n array = array.concat(node.getTextsAsArray());\n }\n });\n\n return array;\n }\n\n /**\n * Get all of the text nodes in a `range`.\n *\n * @param {Range} range\n * @return {List<Node>}\n */\n\n }, {\n key: 'getTextsAtRange',\n value: function getTextsAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return List();\n var _range9 = range,\n startKey = _range9.startKey,\n endKey = _range9.endKey;\n\n var list = new List(this.getTextsBetweenPositionsAsArray(startKey, endKey));\n\n return list;\n }\n\n /**\n * Get all of the text nodes in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getTextsAtRangeAsArray',\n value: function getTextsAtRangeAsArray(range) {\n range = range.normalize(this);\n if (range.isUnset) return [];\n var _range10 = range,\n startKey = _range10.startKey,\n endKey = _range10.endKey;\n\n var texts = this.getTextsBetweenPositionsAsArray(startKey, endKey);\n return texts;\n }\n\n /**\n * Get all of the text nodes in a `range` as an array.\n * PERF: use key in arguments for cache\n *\n * @param {string} startKey\n * @param {string} endKey\n * @returns {Array}\n */\n\n }, {\n key: 'getTextsBetweenPositionsAsArray',\n value: function getTextsBetweenPositionsAsArray(startKey, endKey) {\n var startText = this.getDescendant(startKey);\n\n // PERF: the most common case is when the range is in a single text node,\n // where we can avoid a lot of iterating of the tree.\n if (startKey == endKey) return [startText];\n\n var endText = this.getDescendant(endKey);\n var texts = this.getTextsAsArray();\n var start = texts.indexOf(startText);\n var end = texts.indexOf(endText, start);\n var ret = texts.slice(start, end + 1);\n return ret;\n }\n\n /**\n * Check if the node has block children.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasBlockChildren',\n value: function hasBlockChildren() {\n return !!(this.nodes && this.nodes.find(function (n) {\n return n.object === 'block';\n }));\n }\n\n /**\n * Check if a child node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasChild',\n value: function hasChild(path) {\n var child = this.getChild(path);\n return !!child;\n }\n\n /**\n * Check if a node has inline children.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasInlineChildren',\n value: function hasInlineChildren() {\n return !!(this.nodes && this.nodes.find(function (n) {\n return n.object === 'inline' || n.object === 'text';\n }));\n }\n\n /**\n * Recursively check if a child node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasDescendant',\n value: function hasDescendant(path) {\n var descendant = this.getDescendant(path);\n return !!descendant;\n }\n\n /**\n * Recursively check if a node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasNode',\n value: function hasNode(path) {\n var node = this.getNode(path);\n return !!node;\n }\n\n /**\n * Check if a node has a void parent.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasVoidParent',\n value: function hasVoidParent(path) {\n var closest = this.getClosestVoid(path);\n return !!closest;\n }\n\n /**\n * Insert a `node`.\n *\n * @param {List|String} path\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode(path, node) {\n path = this.resolvePath(path);\n var index = path.last();\n var parentPath = PathUtils.lift(path);\n var parent = this.assertNode(parentPath);\n var nodes = parent.nodes.splice(index, 0, node);\n parent = parent.set('nodes', nodes);\n var ret = this.replaceNode(parentPath, parent);\n return ret;\n }\n\n /**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks\n * @return {Node}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(path, offset, text, marks) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.insertText(offset, text, marks);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Check whether the node is a leaf block.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafBlock',\n value: function isLeafBlock() {\n return this.object === 'block' && this.nodes.every(function (n) {\n return n.object !== 'block';\n });\n }\n\n /**\n * Check whether the node is a leaf inline.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafInline',\n value: function isLeafInline() {\n return this.object === 'inline' && this.nodes.every(function (n) {\n return n.object !== 'inline';\n });\n }\n\n /**\n * Map all child nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapChildren',\n value: function mapChildren(iterator) {\n var _this5 = this;\n\n var nodes = this.nodes;\n\n\n nodes.forEach(function (node, i) {\n var ret = iterator(node, i, _this5.nodes);\n if (ret !== node) nodes = nodes.set(ret.key, ret);\n });\n\n var ret = this.set('nodes', nodes);\n return ret;\n }\n\n /**\n * Map all descendant nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapDescendants',\n value: function mapDescendants(iterator) {\n var _this6 = this;\n\n var nodes = this.nodes;\n\n\n nodes.forEach(function (node, index) {\n var ret = node;\n if (ret.object !== 'text') ret = ret.mapDescendants(iterator);\n ret = iterator(ret, index, _this6.nodes);\n if (ret === node) return;\n\n nodes = nodes.set(index, ret);\n });\n\n var ret = this.set('nodes', nodes);\n return ret;\n }\n\n /**\n * Merge a node backwards its previous sibling.\n *\n * @param {List|Key} path\n * @return {Node}\n */\n\n }, {\n key: 'mergeNode',\n value: function mergeNode(path) {\n var b = this.assertNode(path);\n path = this.resolvePath(path);\n\n if (path.last() === 0) {\n throw new Error('Unable to merge node because it has no previous sibling: ' + b);\n }\n\n var withPath = PathUtils.decrement(path);\n var a = this.assertNode(withPath);\n\n if (a.object !== b.object) {\n throw new Error('Unable to merge two different kinds of nodes: ' + a + ' and ' + b);\n }\n\n var newNode = a.object === 'text' ? a.mergeText(b) : a.set('nodes', a.nodes.concat(b.nodes));\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.removeNode(withPath);\n ret = ret.insertNode(withPath, newNode);\n return ret;\n }\n\n /**\n * Move a node by `path` to `newPath`.\n *\n * A `newIndex` can be provided when move nodes by `key`, to account for not\n * being able to have a key for a location in the tree that doesn't exist yet.\n *\n * @param {List|Key} path\n * @param {List|Key} newPath\n * @param {Number} newIndex\n * @return {Node}\n */\n\n }, {\n key: 'moveNode',\n value: function moveNode(path, newPath) {\n var newIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var node = this.assertNode(path);\n path = this.resolvePath(path);\n newPath = this.resolvePath(newPath, newIndex);\n\n var newParentPath = PathUtils.lift(newPath);\n this.assertNode(newParentPath);\n\n var _PathUtils$crop = PathUtils.crop(path, newPath),\n _PathUtils$crop2 = slicedToArray(_PathUtils$crop, 2),\n p = _PathUtils$crop2[0],\n np = _PathUtils$crop2[1];\n\n var position = PathUtils.compare(p, np);\n\n // If the old path ends above and before a node in the new path, then\n // removing it will alter the target, so we need to adjust the new path.\n if (path.size < newPath.size && position === -1) {\n newPath = PathUtils.decrement(newPath, 1, p.size - 1);\n }\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.insertNode(newPath, node);\n return ret;\n }\n\n /**\n * Attempt to \"refind\" a node by a previous `path`, falling back to looking\n * it up by `key` again.\n *\n * @param {List|String} path\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'refindNode',\n value: function refindNode(path, key) {\n var node = this.getDescendant(path);\n var found = node && node.key === key ? node : this.getDescendant(key);\n return found;\n }\n\n /**\n * Attempt to \"refind\" the path to a node by a previous `path`, falling back\n * to looking it up by `key`.\n *\n * @param {List|String} path\n * @param {String} key\n * @return {List|Null}\n */\n\n }, {\n key: 'refindPath',\n value: function refindPath(path, key) {\n var node = this.getDescendant(path);\n var found = node && node.key === key ? path : this.getPath(key);\n return found;\n }\n\n /**\n * Regenerate the node's key.\n *\n * @return {Node}\n */\n\n }, {\n key: 'regenerateKey',\n value: function regenerateKey() {\n var key = KeyUtils.create();\n var node = this.set('key', key);\n return node;\n }\n\n /**\n * Remove mark from text at `offset` and `length` in node.\n *\n * @param {List} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Node}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(path, offset, length, mark) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.removeMark(offset, length, mark);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Remove a node.\n *\n * @param {List|String} path\n * @return {Node}\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(path) {\n this.assertDescendant(path);\n path = this.resolvePath(path);\n var deep = path.flatMap(function (x) {\n return List(['nodes', x]);\n });\n var ret = this.deleteIn(deep);\n return ret;\n }\n\n /**\n * Remove `text` at `offset` in node.\n *\n * @param {List|Key} path\n * @param {Number} offset\n * @param {String} text\n * @return {Node}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(path, offset, text) {\n var node = this.assertDescendant(path);\n node = node.removeText(offset, text.length);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Replace a `node` in the tree.\n *\n * @param {List|Key} path\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'replaceNode',\n value: function replaceNode(path, node) {\n path = this.resolvePath(path);\n\n if (!path) {\n throw new Error('Unable to replace a node because it could not be found in the first place: ' + path);\n }\n\n if (!path.size) return node;\n this.assertNode(path);\n var deep = path.flatMap(function (x) {\n return List(['nodes', x]);\n });\n var ret = this.setIn(deep, node);\n return ret;\n }\n\n /**\n * Resolve a path from a path list or key string.\n *\n * An `index` can be provided, in which case paths created from a key string\n * will have the index pushed onto them. This is helpful in cases where you\n * want to accept either a `path` or a `key, index` combination for targeting\n * a location in the tree that doesn't exist yet, like when inserting.\n *\n * @param {List|String} value\n * @param {Number} index\n * @return {List}\n */\n\n }, {\n key: 'resolvePath',\n value: function resolvePath(path, index) {\n if (typeof path === 'string') {\n path = this.getPath(path);\n\n if (index != null) {\n path = path.concat(index);\n }\n } else {\n path = PathUtils.create(path);\n }\n\n return path;\n }\n\n /**\n * Set `properties` on a node.\n *\n * @param {List|String} path\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'setNode',\n value: function setNode(path, properties) {\n var node = this.assertNode(path);\n node = node.merge(properties);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Set `properties` on `mark` on text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'setMark',\n value: function setMark(path, offset, length, mark, properties) {\n var node = this.assertNode(path);\n node = node.updateMark(offset, length, mark, properties);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Split a node by `path` at `position` with optional `properties` to apply\n * to the newly split node.\n *\n * @param {List|String} path\n * @param {Number} position\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'splitNode',\n value: function splitNode(path, position, properties) {\n var child = this.assertNode(path);\n path = this.resolvePath(path);\n var a = void 0;\n var b = void 0;\n\n if (child.object === 'text') {\n \n var _child$splitText = child.splitText(position);\n\n var _child$splitText2 = slicedToArray(_child$splitText, 2);\n\n a = _child$splitText2[0];\n b = _child$splitText2[1];\n } else {\n var befores = child.nodes.take(position);\n var afters = child.nodes.skip(position);\n a = child.set('nodes', befores);\n b = child.set('nodes', afters).regenerateKey();\n }\n\n if (properties && child.object !== 'text') {\n b = b.merge(properties);\n }\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.insertNode(path, b);\n ret = ret.insertNode(path, a);\n return ret;\n }\n\n /**\n * Normalize the node with a `schema`.\n *\n * @param {Schema} schema\n * @return {Function|Void}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(schema) {\n return schema.normalizeNode(this);\n }\n\n /**\n * Validate the node against a `schema`.\n *\n * @param {Schema} schema\n * @return {Error|Void}\n */\n\n }, {\n key: 'validate',\n value: function validate(schema) {\n return schema.validateNode(this);\n }\n\n /**\n * Deprecated.\n */\n\n }, {\n key: 'getNodeAtPath',\n value: function getNodeAtPath(path) {\n logger.deprecate('0.35.0', 'The `Node.getNodeAtPath` method has been combined into `Node.getNode`.');\n\n return this.getNode(path);\n }\n }, {\n key: 'getDescendantAtPath',\n value: function getDescendantAtPath(path) {\n logger.deprecate('0.35.0', 'The `Node.getDescendantAtPath` has been combined into `Node.getDescendant`.');\n\n return this.getDescendant(path);\n }\n }, {\n key: 'getKeys',\n value: function getKeys() {\n logger.deprecate('0.35.0', 'The `Node.getKeys` method is deprecated.');\n\n var keys = this.getKeysAsArray();\n return new Set(keys);\n }\n }, {\n key: 'getKeysAsArray',\n value: function getKeysAsArray() {\n logger.deprecate('0.35.0', 'The `Node.getKeysAsArray` method is deprecated.');\n\n var dict = this.getKeysToPathsTable();\n var keys = [];\n\n for (var key in dict) {\n if (this.key !== key) {\n keys.push(key);\n }\n }\n\n return keys;\n }\n }, {\n key: 'areDescendantsSorted',\n value: function areDescendantsSorted(first, second) {\n var _this7 = this;\n\n logger.deprecate('0.35.0', 'The `Node.areDescendantsSorted` method is deprecated. Use the new `PathUtils.compare` helper instead.');\n\n first = KeyUtils.create(first);\n second = KeyUtils.create(second);\n\n var keys = this.getKeysAsArray().filter(function (k) {\n return k !== _this7.key;\n });\n var firstIndex = keys.indexOf(first);\n var secondIndex = keys.indexOf(second);\n if (firstIndex == -1 || secondIndex == -1) return null;\n\n return firstIndex < secondIndex;\n }\n }, {\n key: 'isInRange',\n value: function isInRange(range) {\n logger.deprecate('0.35.0', 'The `Node.isInRange` method is deprecated. Use the new `PathUtils.compare` helper instead.');\n\n range = range.normalize(this);\n\n var node = this;\n var _range11 = range,\n startKey = _range11.startKey,\n endKey = _range11.endKey,\n isCollapsed = _range11.isCollapsed;\n\n // PERF: solve the most common cast where the start or end key are inside\n // the node, for collapsed selections.\n\n if (node.key == startKey || node.key == endKey || node.hasDescendant(startKey) || node.hasDescendant(endKey)) {\n return true;\n }\n\n // PERF: if the selection is collapsed and the previous check didn't return\n // true, then it must be false.\n if (isCollapsed) {\n return false;\n }\n\n // Otherwise, look through all of the leaf text nodes in the range, to see\n // if any of them are inside the node.\n var texts = node.getTextsAtRange(range);\n var memo = false;\n\n texts.forEach(function (text) {\n if (node.hasDescendant(text.key)) memo = true;\n return memo;\n });\n\n return memo;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Node` with `attrs`.\n *\n * @param {Object|Node} attrs\n * @return {Node}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Node.isNode(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n var object = attrs.object;\n\n\n if (!object && attrs.kind) {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n\n object = attrs.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.create(attrs);\n case 'document':\n return Document.create(attrs);\n case 'inline':\n return Inline.create(attrs);\n case 'text':\n return Text.create(attrs);\n\n default:\n {\n throw new Error('`Node.create` requires a `object` string.');\n }\n }\n }\n\n throw new Error('`Node.create` only accepts objects or nodes but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Nodes` from an array.\n *\n * @param {Array<Object|Node>} elements\n * @return {List<Node>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = List(elements.map(Node.create));\n return list;\n }\n\n throw new Error('`Node.createList` only accepts lists or arrays, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable node properties from `attrs`.\n *\n * @param {Object|String|Node} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs) || Inline.isInline(attrs)) {\n return {\n data: attrs.data,\n isVoid: attrs.isVoid,\n type: attrs.type\n };\n }\n\n if (typeof attrs == 'string') {\n return { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n if ('isVoid' in attrs) props.isVoid = attrs.isVoid;\n return props;\n }\n\n throw new Error('`Node.createProperties` only accepts objects, strings, blocks or inlines, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Node` from a JSON `value`.\n *\n * @param {Object} value\n * @return {Node}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(value) {\n var object = value.object;\n\n\n if (!object && value.kind) {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n\n object = value.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.fromJSON(value);\n case 'document':\n return Document.fromJSON(value);\n case 'inline':\n return Inline.fromJSON(value);\n case 'text':\n return Text.fromJSON(value);\n\n default:\n {\n throw new Error('`Node.fromJSON` requires an `object` of either \\'block\\', \\'document\\', \\'inline\\' or \\'text\\', but you passed: ' + value);\n }\n }\n }\n\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isNode',\n\n\n /**\n * Check if `any` is a `Node`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n value: function isNode(any) {\n return !!['BLOCK', 'DOCUMENT', 'INLINE', 'TEXT'].find(function (type) {\n return isType(type, any);\n });\n }\n\n /**\n * Check if `any` is a list of nodes.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isNodeList',\n value: function isNodeList(any) {\n return List.isList(any) && any.every(function (item) {\n return Node.isNode(item);\n });\n }\n }]);\n return Node;\n}();\n\n/**\n * Mix in assertion variants.\n */\n\nNode.fromJS = Node.fromJSON;\nvar ASSERTS = ['Child', 'Depth', 'Descendant', 'Node', 'Parent', 'Path'];\n\nvar _loop = function _loop(method) {\n Node.prototype['assert' + method] = function (path) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n var ret = this['get' + method].apply(this, [path].concat(args));\n\n if (ret == null) {\n throw new Error('`Node.assert' + method + '` could not find node with path or key: ' + path);\n }\n\n return ret;\n };\n};\n\nvar _iteratorNormalCompletion2 = true;\nvar _didIteratorError2 = false;\nvar _iteratorError2 = undefined;\n\ntry {\n for (var _iterator2 = ASSERTS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var method = _step2.value;\n\n _loop(method);\n }\n\n /**\n * Memoize read methods.\n */\n} catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n}\n\nmemoize(Node.prototype, ['getBlocksAsArray', 'getBlocksAtRangeAsArray', 'getBlocksByTypeAsArray', 'getDecorations', 'getFirstInvalidDescendant', 'getFirstText', 'getFragmentAtRange', 'getInlinesAsArray', 'getInlinesAtRangeAsArray', 'getInlinesByTypeAsArray', 'getMarksAsArray', 'getMarksAtPosition', 'getOrderedMarksBetweenPositions', 'getInsertMarksAtRange', 'getKeysToPathsTable', 'getLastText', 'getMarksByTypeAsArray', 'getNextBlock', 'getOffset', 'getOffsetAtRange', 'getPreviousBlock', 'getText', 'getTextAtOffset', 'getTextDirection', 'getTextsAsArray', 'getTextsBetweenPositionsAsArray', 'isLeafBlock', 'isLeafInline', 'normalize', 'validate']);\n\n/**\n * Mix in `Node` methods.\n */\n\nObject.getOwnPropertyNames(Node.prototype).forEach(function (method) {\n if (method === 'constructor') return;\n Block.prototype[method] = Node.prototype[method];\n Inline.prototype[method] = Node.prototype[method];\n Document.prototype[method] = Node.prototype[method];\n});\n\nBlock.createChildren = Node.createList;\nInline.createChildren = Node.createList;\nDocument.createChildren = Node.createList;\n\n/**\n * Surrogate pair start and end points.\n *\n * @type {Number}\n */\n\nvar SURROGATE_START = 0xd800;\nvar SURROGATE_END = 0xdfff;\n\n/**\n * A regex to match space characters.\n *\n * @type {RegExp}\n */\n\nvar SPACE = /\\s/;\n\n/**\n * A regex to match chameleon characters, that count as word characters as long\n * as they are inside of a word.\n *\n * @type {RegExp}\n */\n\nvar CHAMELEON = /['\\u2018\\u2019]/;\n\n/**\n * A regex that matches punctuation.\n *\n * @type {RegExp}\n */\n\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\n\n/**\n * Is a character `code` in a surrogate character.\n *\n * @param {Number} code\n * @return {Boolean}\n */\n\nfunction isSurrogate(code) {\n return SURROGATE_START <= code && code <= SURROGATE_END;\n}\n\n/**\n * Is a character a word character? Needs the `remaining` characters too.\n *\n * @param {String} char\n * @param {String|Void} remaining\n * @return {Boolean}\n */\n\nfunction isWord(char, remaining) {\n if (SPACE.test(char)) return false;\n\n // If it's a chameleon character, recurse to see if the next one is or not.\n if (CHAMELEON.test(char)) {\n var next = remaining.charAt(0);\n var length = getCharLength(next);\n next = remaining.slice(0, length);\n var rest = remaining.slice(length);\n if (isWord(next, rest)) return true;\n }\n\n if (PUNCTUATION.test(char)) return false;\n return true;\n}\n\n/**\n * Get the length of a `character`.\n *\n * @param {String} char\n * @return {Number}\n */\n\nfunction getCharLength(char) {\n return isSurrogate(char.charCodeAt(0)) ? 2 : 1;\n}\n\n/**\n * Get the offset to the end of the first character in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\nfunction getCharOffset(text) {\n var char = text.charAt(0);\n return getCharLength(char);\n}\n\n/**\n * Get the offset to the end of the character before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getCharOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = reverse(text);\n return getCharOffset(text);\n}\n\n/**\n * Get the offset to the end of the character after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getCharOffsetForward(text, offset) {\n text = text.slice(offset);\n return getCharOffset(text);\n}\n\n/**\n * Get the offset to the end of the first word in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\nfunction getWordOffset(text) {\n var length = 0;\n var i = 0;\n var started = false;\n var char = void 0;\n\n while (char = text.charAt(i)) {\n var l = getCharLength(char);\n char = text.slice(i, i + l);\n var rest = text.slice(i + l);\n\n if (isWord(char, rest)) {\n started = true;\n length += l;\n } else if (!started) {\n length += l;\n } else {\n break;\n }\n\n i += l;\n }\n\n return length;\n}\n\n/**\n * Get the offset to the end of the word before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getWordOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = reverse(text);\n var o = getWordOffset(text);\n return o;\n}\n\n/**\n * Get the offset to the end of the word after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getWordOffsetForward(text, offset) {\n text = text.slice(offset);\n var o = getWordOffset(text);\n return o;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar TextUtils = {\n getCharLength: getCharLength,\n getCharOffset: getCharOffset,\n getCharOffsetBackward: getCharOffsetBackward,\n getCharOffsetForward: getCharOffsetForward,\n getWordOffset: getWordOffset,\n getWordOffsetBackward: getWordOffsetBackward,\n getWordOffsetForward: getWordOffsetForward,\n isSurrogate: isSurrogate,\n isWord: isWord\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$1 = {};\n\n/**\n * Add a new `mark` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mixed} mark\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.addMarkAtRange = function (change, range, mark) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (range.isCollapsed) return;\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n\n var texts = document.getTextsAtRange(range);\n\n texts.forEach(function (node) {\n var key = node.key;\n\n var index = 0;\n var length = node.text.length;\n\n if (key == startKey) index = startOffset;\n if (key == endKey) length = endOffset;\n if (key == startKey && key == endKey) length = endOffset - startOffset;\n\n change.addMarkByKey(key, index, length, mark, { normalize: normalize });\n });\n};\n\n/**\n * Add a list of `marks` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Array<Mixed>} mark\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.addMarksAtRange = function (change, range, marks) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n marks.forEach(function (mark) {\n return change.addMarkAtRange(range, mark, options);\n });\n};\n\n/**\n * Delete everything in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.deleteAtRange = function (change, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (range.isCollapsed) return;\n\n // Snapshot the selection, which creates an extra undo save point, so that\n // when you undo a delete, the expanded selection will be retained.\n change.snapshotSelection();\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n var document = value.document;\n\n var isStartVoid = document.hasVoidParent(startKey);\n var isEndVoid = document.hasVoidParent(endKey);\n var startBlock = document.getClosestBlock(startKey);\n var endBlock = document.getClosestBlock(endKey);\n\n // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n var isHanging = startOffset == 0 && endOffset == 0 && isStartVoid == false && startKey == startBlock.getFirstText().key && endKey == endBlock.getFirstText().key;\n\n // If it's a hanging selection, nudge it back to end in the previous text.\n if (isHanging && isEndVoid) {\n var prevText = document.getPreviousText(endKey);\n endKey = prevText.key;\n endOffset = prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey);\n }\n\n // If the start node is inside a void node, remove the void node and update\n // the starting point to be right after it, continuously until the start point\n // is not a void, or until the entire range is handled.\n while (isStartVoid) {\n var startVoid = document.getClosestVoid(startKey);\n var nextText = document.getNextText(startKey);\n change.removeNodeByKey(startVoid.key, { normalize: false });\n\n // If the start and end keys are the same, we're done.\n if (startKey == endKey) return;\n\n // If there is no next text node, we're done.\n if (!nextText) return;\n\n // Continue...\n document = change.value.document;\n startKey = nextText.key;\n startOffset = 0;\n isStartVoid = document.hasVoidParent(startKey);\n }\n\n // If the end node is inside a void node, do the same thing but backwards. But\n // we don't need any aborting checks because if we've gotten this far there\n // must be a non-void node that will exit the loop.\n while (isEndVoid) {\n var endVoid = document.getClosestVoid(endKey);\n var _prevText = document.getPreviousText(endKey);\n change.removeNodeByKey(endVoid.key, { normalize: false });\n\n // Continue...\n document = change.value.document;\n endKey = _prevText.key;\n endOffset = _prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey);\n }\n\n // If the start and end key are the same, and it was a hanging selection, we\n // can just remove the entire block.\n if (startKey == endKey && isHanging) {\n change.removeNodeByKey(startBlock.key, { normalize: normalize });\n return;\n } else if (startKey == endKey) {\n // Otherwise, if it wasn't hanging, we're inside a single text node, so we can\n // simply remove the text in the range.\n var index = startOffset;\n var length = endOffset - startOffset;\n change.removeTextByKey(startKey, index, length, { normalize: normalize });\n return;\n } else {\n // Otherwise, we need to recursively remove text and nodes inside the start\n // block after the start offset and inside the end block before the end\n // offset. Then remove any blocks that are in between the start and end\n // blocks. Then finally merge the start and end nodes.\n startBlock = document.getClosestBlock(startKey);\n endBlock = document.getClosestBlock(endKey);\n var startText = document.getNode(startKey);\n var endText = document.getNode(endKey);\n var startLength = startText.text.length - startOffset;\n var endLength = endOffset;\n\n var ancestor = document.getCommonAncestor(startKey, endKey);\n var startChild = ancestor.getFurthestAncestor(startKey);\n var endChild = ancestor.getFurthestAncestor(endKey);\n\n var startParent = document.getParent(startBlock.key);\n var startParentIndex = startParent.nodes.indexOf(startBlock);\n var endParentIndex = startParent.nodes.indexOf(endBlock);\n\n var child = void 0;\n\n // Iterate through all of the nodes in the tree after the start text node\n // but inside the end child, and remove them.\n child = startText;\n\n while (child.key != startChild.key) {\n var parent = document.getParent(child.key);\n var _index = parent.nodes.indexOf(child);\n var afters = parent.nodes.slice(_index + 1);\n\n afters.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key, { normalize: false });\n });\n\n child = parent;\n }\n\n // Remove all of the middle children.\n var startChildIndex = ancestor.nodes.indexOf(startChild);\n var endChildIndex = ancestor.nodes.indexOf(endChild);\n var middles = ancestor.nodes.slice(startChildIndex + 1, endChildIndex);\n\n middles.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key, { normalize: false });\n });\n\n // Remove the nodes before the end text node in the tree.\n child = endText;\n\n while (child.key != endChild.key) {\n var _parent = document.getParent(child.key);\n var _index2 = _parent.nodes.indexOf(child);\n var befores = _parent.nodes.slice(0, _index2);\n\n befores.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key, { normalize: false });\n });\n\n child = _parent;\n }\n\n // Remove any overlapping text content from the leaf text nodes.\n if (startLength != 0) {\n change.removeTextByKey(startKey, startOffset, startLength, {\n normalize: false\n });\n }\n\n if (endLength != 0) {\n change.removeTextByKey(endKey, 0, endOffset, { normalize: false });\n }\n\n // If the start and end blocks aren't the same, move and merge the end block\n // into the start block.\n if (startBlock.key != endBlock.key) {\n document = change.value.document;\n var lonely = document.getFurthestOnlyChildAncestor(endBlock.key);\n\n // Move the end block to be right after the start block.\n if (endParentIndex != startParentIndex + 1) {\n change.moveNodeByKey(endBlock.key, startParent.key, startParentIndex + 1, { normalize: false });\n }\n\n // If the selection is hanging, just remove the start block, otherwise\n // merge the end block into it.\n if (isHanging) {\n change.removeNodeByKey(startBlock.key, { normalize: false });\n } else {\n change.mergeNodeByKey(endBlock.key, { normalize: false });\n }\n\n // If nested empty blocks are left over above the end block, remove them.\n if (lonely) {\n change.removeNodeByKey(lonely.key, { normalize: false });\n }\n }\n\n // If we should normalize, do it now after everything.\n if (normalize) {\n change.normalizeNodeByKey(ancestor.key);\n }\n }\n};\n\n/**\n * Delete backward until the character boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.deleteCharBackwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n var text = startBlock.text;\n\n var n = TextUtils.getCharOffsetBackward(text, o);\n change.deleteBackwardAtRange(range, n, options);\n};\n\n/**\n * Delete backward until the line boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.deleteLineBackwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n change.deleteBackwardAtRange(range, o, options);\n};\n\n/**\n * Delete backward until the word boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.deleteWordBackwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n var text = startBlock.text;\n\n var n = TextUtils.getWordOffsetBackward(text, o);\n change.deleteBackwardAtRange(range, n, options);\n};\n\n/**\n * Delete backward `n` characters at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} n (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.deleteBackwardAtRange = function (change, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (n === 0) return;\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var _range = range,\n startKey = _range.startKey,\n focusOffset = _range.focusOffset;\n\n // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n change.deleteAtRange(range, { normalize: normalize });\n return;\n }\n\n var voidParent = document.getClosestVoid(startKey);\n\n // If there is a void parent, delete it.\n if (voidParent) {\n change.removeNodeByKey(voidParent.key, { normalize: normalize });\n return;\n }\n\n var block = document.getClosestBlock(startKey);\n\n // If the closest is not void, but empty, remove it\n if (block && block.isEmpty && document.nodes.size !== 1) {\n change.removeNodeByKey(block.key, { normalize: normalize });\n return;\n }\n\n // If the range is at the start of the document, abort.\n if (range.isAtStartOf(document)) {\n return;\n }\n\n // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n var text = document.getDescendant(startKey);\n\n if (range.isAtStartOf(text)) {\n var prev = document.getPreviousText(text.key);\n var prevBlock = document.getClosestBlock(prev.key);\n var prevVoid = document.getClosestVoid(prev.key);\n\n // If the previous text node has a void parent, remove it.\n if (prevVoid) {\n change.removeNodeByKey(prevVoid.key, { normalize: normalize });\n return;\n }\n\n // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n if (n == 1 && prevBlock != block) {\n range = range.merge({\n anchorKey: prev.key,\n anchorOffset: prev.text.length\n });\n\n change.deleteAtRange(range, { normalize: normalize });\n return;\n }\n }\n\n // If the focus offset is farther than the number of characters to delete,\n // just remove the characters backwards inside the current node.\n if (n < focusOffset) {\n range = range.merge({\n focusOffset: focusOffset - n,\n isBackward: true\n });\n\n change.deleteAtRange(range, { normalize: normalize });\n return;\n }\n\n // Otherwise, we need to see how many nodes backwards to go.\n var node = text;\n var offset = 0;\n var traversed = focusOffset;\n\n while (n > traversed) {\n node = document.getPreviousText(node.key);\n var next = traversed + node.text.length;\n\n if (n <= next) {\n offset = next - n;\n break;\n } else {\n traversed = next;\n }\n }\n\n range = range.merge({\n focusKey: node.key,\n focusOffset: offset,\n isBackward: true\n });\n\n change.deleteAtRange(range, { normalize: normalize });\n};\n\n/**\n * Delete forward until the character boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.deleteCharForwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n var text = startBlock.text;\n\n var n = TextUtils.getCharOffsetForward(text, o);\n change.deleteForwardAtRange(range, n, options);\n};\n\n/**\n * Delete forward until the line boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.deleteLineForwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n change.deleteForwardAtRange(range, startBlock.text.length - o, options);\n};\n\n/**\n * Delete forward until the word boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.deleteWordForwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n var text = startBlock.text;\n\n var n = TextUtils.getWordOffsetForward(text, o);\n change.deleteForwardAtRange(range, n, options);\n};\n\n/**\n * Delete forward `n` characters at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} n (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.deleteForwardAtRange = function (change, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (n === 0) return;\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var _range2 = range,\n startKey = _range2.startKey,\n focusOffset = _range2.focusOffset;\n\n // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n change.deleteAtRange(range, { normalize: normalize });\n return;\n }\n\n var voidParent = document.getClosestVoid(startKey);\n\n // If the node has a void parent, delete it.\n if (voidParent) {\n change.removeNodeByKey(voidParent.key, { normalize: normalize });\n return;\n }\n\n var block = document.getClosestBlock(startKey);\n\n // If the closest is not void, but empty, remove it\n if (block && block.isEmpty && document.nodes.size !== 1) {\n var nextBlock = document.getNextBlock(block.key);\n change.removeNodeByKey(block.key, { normalize: normalize });\n\n if (nextBlock && nextBlock.key) {\n change.moveToStartOf(nextBlock);\n }\n return;\n }\n\n // If the range is at the start of the document, abort.\n if (range.isAtEndOf(document)) {\n return;\n }\n\n // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n var text = document.getDescendant(startKey);\n\n if (range.isAtEndOf(text)) {\n var next = document.getNextText(text.key);\n var _nextBlock = document.getClosestBlock(next.key);\n var nextVoid = document.getClosestVoid(next.key);\n\n // If the next text node has a void parent, remove it.\n if (nextVoid) {\n change.removeNodeByKey(nextVoid.key, { normalize: normalize });\n return;\n }\n\n // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n if (n == 1 && _nextBlock != block) {\n range = range.merge({\n focusKey: next.key,\n focusOffset: 0\n });\n\n change.deleteAtRange(range, { normalize: normalize });\n return;\n }\n }\n\n // If the remaining characters to the end of the node is greater than or equal\n // to the number of characters to delete, just remove the characters forwards\n // inside the current node.\n if (n <= text.text.length - focusOffset) {\n range = range.merge({\n focusOffset: focusOffset + n\n });\n\n change.deleteAtRange(range, { normalize: normalize });\n return;\n }\n\n // Otherwise, we need to see how many nodes forwards to go.\n var node = text;\n var offset = focusOffset;\n var traversed = text.text.length - focusOffset;\n\n while (n > traversed) {\n node = document.getNextText(node.key);\n var _next = traversed + node.text.length;\n\n if (n <= _next) {\n offset = n - traversed;\n break;\n } else {\n traversed = _next;\n }\n }\n\n range = range.merge({\n focusKey: node.key,\n focusOffset: offset\n });\n\n change.deleteAtRange(range, { normalize: normalize });\n};\n\n/**\n * Insert a `block` node at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Block|String|Object} block\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.insertBlockAtRange = function (change, range, block) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n block = Block.create(block);\n var normalize = change.getFlag('normalize', options);\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n range = range.collapseToStart();\n }\n\n var value = change.value;\n var document = value.document;\n var _range3 = range,\n startKey = _range3.startKey,\n startOffset = _range3.startOffset;\n\n var startBlock = document.getClosestBlock(startKey);\n var startInline = document.getClosestInline(startKey);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n\n if (startBlock.isVoid) {\n var extra = range.isAtEndOf(startBlock) ? 1 : 0;\n change.insertNodeByKey(parent.key, index + extra, block, { normalize: normalize });\n } else if (startBlock.isEmpty) {\n change.insertNodeByKey(parent.key, index + 1, block, { normalize: normalize });\n } else if (range.isAtStartOf(startBlock)) {\n change.insertNodeByKey(parent.key, index, block, { normalize: normalize });\n } else if (range.isAtEndOf(startBlock)) {\n change.insertNodeByKey(parent.key, index + 1, block, { normalize: normalize });\n } else {\n if (startInline && startInline.isVoid) {\n var atEnd = range.isAtEndOf(startInline);\n var siblingText = atEnd ? document.getNextText(startKey) : document.getPreviousText(startKey);\n\n var splitRange = atEnd ? range.moveToStartOf(siblingText) : range.moveToEndOf(siblingText);\n\n startKey = splitRange.startKey;\n startOffset = splitRange.startOffset;\n }\n\n change.splitDescendantsByKey(startBlock.key, startKey, startOffset, {\n normalize: false\n });\n\n change.insertNodeByKey(parent.key, index + 1, block, { normalize: normalize });\n }\n\n if (normalize) {\n change.normalizeNodeByKey(parent.key);\n }\n};\n\n/**\n * Insert a `fragment` at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Document} fragment\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.insertFragmentAtRange = function (change, range, fragment) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var normalize = change.getFlag('normalize', options);\n\n // If the range is expanded, delete it first.\n if (range.isExpanded) {\n change.deleteAtRange(range, { normalize: false });\n\n if (change.value.document.getDescendant(range.startKey)) {\n range = range.collapseToStart();\n } else {\n range = range.collapseTo(range.endKey, 0);\n }\n }\n\n // If the fragment is empty, there's nothing to do after deleting.\n if (!fragment.nodes.size) return;\n\n // Regenerate the keys for all of the fragments nodes, so that they're\n // guaranteed not to collide with the existing keys in the document. Otherwise\n // they will be rengerated automatically and we won't have an easy way to\n // reference them.\n fragment = fragment.mapDescendants(function (child) {\n return child.regenerateKey();\n });\n\n // Calculate a few things...\n var _range4 = range,\n startKey = _range4.startKey,\n startOffset = _range4.startOffset;\n var value = change.value;\n var document = value.document;\n\n var startText = document.getDescendant(startKey);\n var startBlock = document.getClosestBlock(startText.key);\n var startChild = startBlock.getFurthestAncestor(startText.key);\n var isAtStart = range.isAtStartOf(startBlock);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n var blocks = fragment.getBlocks();\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var firstBlock = blocks.first();\n var lastBlock = blocks.last();\n\n // If the fragment only contains a void block, use `insertBlock` instead.\n if (firstBlock == lastBlock && firstBlock.isVoid) {\n change.insertBlockAtRange(range, firstBlock, options);\n return;\n }\n\n // If the fragment starts or ends with single nested block, (e.g., table),\n // do not merge this fragment with existing blocks.\n if (firstChild.hasBlockChildren() || lastChild.hasBlockChildren()) {\n fragment.nodes.reverse().forEach(function (node) {\n change.insertBlockAtRange(range, node, options);\n });\n return;\n }\n\n // If the first and last block aren't the same, we need to insert all of the\n // nodes after the fragment's first block at the index.\n if (firstBlock != lastBlock) {\n var lonelyParent = fragment.getFurthest(firstBlock.key, function (p) {\n return p.nodes.size == 1;\n });\n var lonelyChild = lonelyParent || firstBlock;\n var startIndex = parent.nodes.indexOf(startBlock);\n fragment = fragment.removeNode(lonelyChild.key);\n\n fragment.nodes.forEach(function (node, i) {\n var newIndex = startIndex + i + 1;\n change.insertNodeByKey(parent.key, newIndex, node, { normalize: false });\n });\n }\n\n // Check if we need to split the node.\n if (startOffset != 0) {\n change.splitDescendantsByKey(startChild.key, startKey, startOffset, {\n normalize: false\n });\n }\n\n // Update our variables with the new value.\n document = change.value.document;\n startText = document.getDescendant(startKey);\n startBlock = document.getClosestBlock(startKey);\n startChild = startBlock.getFurthestAncestor(startText.key);\n\n // If the first and last block aren't the same, we need to move any of the\n // starting block's children after the split into the last block of the\n // fragment, which has already been inserted.\n if (firstBlock != lastBlock) {\n var nextChild = isAtStart ? startChild : startBlock.getNextSibling(startChild.key);\n var nextNodes = nextChild ? startBlock.nodes.skipUntil(function (n) {\n return n.key == nextChild.key;\n }) : List();\n var lastIndex = lastBlock.nodes.size;\n\n nextNodes.forEach(function (node, i) {\n var newIndex = lastIndex + i;\n\n change.moveNodeByKey(node.key, lastBlock.key, newIndex, {\n normalize: false\n });\n });\n }\n\n // If the starting block is empty, we replace it entirely with the first block\n // of the fragment, since this leads to a more expected behavior for the user.\n if (startBlock.isEmpty) {\n change.removeNodeByKey(startBlock.key, { normalize: false });\n change.insertNodeByKey(parent.key, index, firstBlock, { normalize: false });\n } else {\n // Otherwise, we maintain the starting block, and insert all of the first\n // block's inline nodes into it at the split point.\n var inlineChild = startBlock.getFurthestAncestor(startText.key);\n var inlineIndex = startBlock.nodes.indexOf(inlineChild);\n\n firstBlock.nodes.forEach(function (inline, i) {\n var o = startOffset == 0 ? 0 : 1;\n var newIndex = inlineIndex + i + o;\n\n change.insertNodeByKey(startBlock.key, newIndex, inline, {\n normalize: false\n });\n });\n }\n\n // Normalize if requested.\n if (normalize) {\n change.normalizeNodeByKey(parent.key);\n }\n};\n\n/**\n * Insert an `inline` node at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Inline|String|Object} inline\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.insertInlineAtRange = function (change, range, inline) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var normalize = change.getFlag('normalize', options);\n inline = Inline.create(inline);\n\n if (range.isExpanded) {\n change.deleteAtRange(range, { normalize: false });\n range = range.collapseToStart();\n }\n\n var value = change.value;\n var document = value.document;\n var _range5 = range,\n startKey = _range5.startKey,\n startOffset = _range5.startOffset;\n\n var parent = document.getParent(startKey);\n var startText = document.assertDescendant(startKey);\n var index = parent.nodes.indexOf(startText);\n\n if (parent.isVoid) return;\n\n change.splitNodeByKey(startKey, startOffset, { normalize: false });\n change.insertNodeByKey(parent.key, index + 1, inline, { normalize: false });\n\n if (normalize) {\n change.normalizeNodeByKey(parent.key);\n }\n};\n\n/**\n * Insert `text` at a `range`, with optional `marks`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String} text\n * @param {Set<Mark>} marks (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.insertTextAtRange = function (change, range, text, marks) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var normalize = options.normalize;\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n\n var key = startKey;\n var offset = startOffset;\n var parent = document.getParent(startKey);\n\n if (parent.isVoid) return;\n\n if (range.isExpanded) {\n change.deleteAtRange(range, { normalize: false });\n\n // Update range start after delete\n if (change.value.startKey !== key) {\n key = change.value.startKey;\n offset = change.value.startOffset;\n }\n }\n\n // PERF: Unless specified, don't normalize if only inserting text.\n if (normalize === undefined) {\n normalize = range.isExpanded && marks && marks.size !== 0;\n }\n\n change.insertTextByKey(key, offset, text, marks, { normalize: false });\n\n if (normalize) {\n // normalize in the narrowest existing block that originally contains startKey and endKey\n var commonAncestor = document.getCommonAncestor(startKey, range.endKey);\n var ancestors = document.getAncestors(commonAncestor.key).push(commonAncestor);\n var normalizeAncestor = ancestors.findLast(function (n) {\n return change.value.document.getDescendant(n.key);\n });\n // it is possible that normalizeAncestor doesn't return any node\n // on that case fallback to startKey to be normalized\n var normalizeKey = normalizeAncestor ? normalizeAncestor.key : startKey;\n change.normalizeNodeByKey(normalizeKey);\n }\n};\n\n/**\n * Remove an existing `mark` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mark|String} mark (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.removeMarkAtRange = function (change, range, mark) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (range.isCollapsed) return;\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n\n var texts = document.getTextsAtRange(range);\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n\n\n texts.forEach(function (node) {\n var key = node.key;\n\n var index = 0;\n var length = node.text.length;\n\n if (key == startKey) index = startOffset;\n if (key == endKey) length = endOffset;\n if (key == startKey && key == endKey) length = endOffset - startOffset;\n\n change.removeMarkByKey(key, index, length, mark, { normalize: normalize });\n });\n};\n\n/**\n * Set the `properties` of block nodes in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object|String} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.setBlocksAtRange = function (change, range, properties) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n\n var blocks = document.getBlocksAtRange(range);\n\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset,\n isCollapsed = range.isCollapsed;\n\n var isStartVoid = document.hasVoidParent(startKey);\n var startBlock = document.getClosestBlock(startKey);\n var endBlock = document.getClosestBlock(endKey);\n\n // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n var isHanging = isCollapsed == false && startOffset == 0 && endOffset == 0 && isStartVoid == false && startKey == startBlock.getFirstText().key && endKey == endBlock.getFirstText().key;\n\n // If it's a hanging selection, ignore the last block.\n var sets = isHanging ? blocks.slice(0, -1) : blocks;\n\n sets.forEach(function (block) {\n change.setNodeByKey(block.key, properties, { normalize: normalize });\n });\n};\n\nChanges$1.setBlockAtRange = function () {\n logger.deprecate('slate@0.33.0', 'The `setBlockAtRange` method of Slate changes has been renamed to `setBlocksAtRange`.');\n\n Changes$1.setBlocksAtRange.apply(Changes$1, arguments);\n};\n\n/**\n * Set the `properties` of inline nodes in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object|String} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.setInlinesAtRange = function (change, range, properties) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n\n var inlines = document.getInlinesAtRange(range);\n\n inlines.forEach(function (inline) {\n change.setNodeByKey(inline.key, properties, { normalize: normalize });\n });\n};\n\nChanges$1.setInlineAtRange = function () {\n logger.deprecate('slate@0.33.0', 'The `setInlineAtRange` method of Slate changes has been renamed to `setInlinesAtRange`.');\n\n Changes$1.setInlinesAtRange.apply(Changes$1, arguments);\n};\n\n/**\n * Split the block nodes at a `range`, to optional `height`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} height (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.splitBlockAtRange = function (change, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var normalize = change.getFlag('normalize', options);\n\n var _range6 = range,\n startKey = _range6.startKey,\n startOffset = _range6.startOffset,\n endOffset = _range6.endOffset,\n endKey = _range6.endKey;\n var value = change.value;\n var document = value.document;\n\n var node = document.assertDescendant(startKey);\n var parent = document.getClosestBlock(node.key);\n var h = 0;\n\n while (parent && parent.object == 'block' && h < height) {\n node = parent;\n parent = document.getClosestBlock(parent.key);\n h++;\n }\n\n change.splitDescendantsByKey(node.key, startKey, startOffset, {\n normalize: normalize && range.isCollapsed\n });\n\n if (range.isExpanded) {\n if (range.isBackward) range = range.flip();\n var nextBlock = change.value.document.getNextBlock(node.key);\n range = range.moveAnchorToStartOf(nextBlock);\n\n if (startKey === endKey) {\n range = range.moveFocusTo(range.anchorKey, endOffset - startOffset);\n }\n\n change.deleteAtRange(range, { normalize: normalize });\n }\n};\n\n/**\n * Split the inline nodes at a `range`, to optional `height`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} height (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.splitInlineAtRange = function (change, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var normalize = change.getFlag('normalize', options);\n\n if (range.isExpanded) {\n change.deleteAtRange(range, { normalize: normalize });\n range = range.collapseToStart();\n }\n\n var _range7 = range,\n startKey = _range7.startKey,\n startOffset = _range7.startOffset;\n var value = change.value;\n var document = value.document;\n\n var node = document.assertDescendant(startKey);\n var parent = document.getClosestInline(node.key);\n var h = 0;\n\n while (parent && parent.object == 'inline' && h < height) {\n node = parent;\n parent = document.getClosestInline(parent.key);\n h++;\n }\n\n change.splitDescendantsByKey(node.key, startKey, startOffset, { normalize: normalize });\n};\n\n/**\n * Add or remove a `mark` from the characters at `range`, depending on whether\n * it's already there.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mixed} mark\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.toggleMarkAtRange = function (change, range, mark) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (range.isCollapsed) return;\n\n mark = Mark.create(mark);\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n\n var marks = document.getActiveMarksAtRange(range);\n var exists = marks.some(function (m) {\n return m.equals(mark);\n });\n\n if (exists) {\n change.removeMarkAtRange(range, mark, { normalize: normalize });\n } else {\n change.addMarkAtRange(range, mark, { normalize: normalize });\n }\n};\n\n/**\n * Unwrap all of the block nodes in a `range` from a block with `properties`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String|Object} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.unwrapBlockAtRange = function (change, range, properties) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n properties = Node.createProperties(properties);\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n\n var blocks = document.getBlocksAtRange(range);\n var wrappers = blocks.map(function (block) {\n return document.getClosest(block.key, function (parent) {\n if (parent.object != 'block') return false;\n if (properties.type != null && parent.type != properties.type) return false;\n if (properties.isVoid != null && parent.isVoid != properties.isVoid) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n\n wrappers.forEach(function (block) {\n var first = block.nodes.first();\n var last = block.nodes.last();\n var parent = document.getParent(block.key);\n var index = parent.nodes.indexOf(block);\n\n var children = block.nodes.filter(function (child) {\n return blocks.some(function (b) {\n return child == b || child.hasDescendant(b.key);\n });\n });\n\n var firstMatch = children.first();\n var lastMatch = children.last();\n\n if (first == firstMatch && last == lastMatch) {\n block.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i, {\n normalize: false\n });\n });\n\n change.removeNodeByKey(block.key, { normalize: false });\n } else if (last == lastMatch) {\n block.nodes.skipUntil(function (n) {\n return n == firstMatch;\n }).forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + 1 + i, {\n normalize: false\n });\n });\n } else if (first == firstMatch) {\n block.nodes.takeUntil(function (n) {\n return n == lastMatch;\n }).push(lastMatch).forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i, {\n normalize: false\n });\n });\n } else {\n var firstText = firstMatch.getFirstText();\n\n change.splitDescendantsByKey(block.key, firstText.key, 0, {\n normalize: false\n });\n\n document = change.value.document;\n\n children.forEach(function (child, i) {\n if (i == 0) {\n var extra = child;\n child = document.getNextBlock(child.key);\n change.removeNodeByKey(extra.key, { normalize: false });\n }\n\n change.moveNodeByKey(child.key, parent.key, index + 1 + i, {\n normalize: false\n });\n });\n }\n });\n\n // TODO: optmize to only normalize the right block\n if (normalize) {\n change.normalizeDocument();\n }\n};\n\n/**\n * Unwrap the inline nodes in a `range` from an inline with `properties`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String|Object} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.unwrapInlineAtRange = function (change, range, properties) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n properties = Node.createProperties(properties);\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n\n var texts = document.getTextsAtRange(range);\n var inlines = texts.map(function (text) {\n return document.getClosest(text.key, function (parent) {\n if (parent.object != 'inline') return false;\n if (properties.type != null && parent.type != properties.type) return false;\n if (properties.isVoid != null && parent.isVoid != properties.isVoid) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n\n inlines.forEach(function (inline) {\n var parent = change.value.document.getParent(inline.key);\n var index = parent.nodes.indexOf(inline);\n\n inline.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i, {\n normalize: false\n });\n });\n });\n\n // TODO: optmize to only normalize the right block\n if (normalize) {\n change.normalizeDocument();\n }\n};\n\n/**\n * Wrap all of the blocks in a `range` in a new `block`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Block|Object|String} block\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.wrapBlockAtRange = function (change, range, block) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n\n\n var blocks = document.getBlocksAtRange(range);\n var firstblock = blocks.first();\n var lastblock = blocks.last();\n var parent = void 0,\n siblings = void 0,\n index = void 0;\n\n // If there is only one block in the selection then we know the parent and\n // siblings.\n if (blocks.length === 1) {\n parent = document.getParent(firstblock.key);\n siblings = blocks;\n } else {\n // Determine closest shared parent to all blocks in selection.\n parent = document.getClosest(firstblock.key, function (p1) {\n return !!document.getClosest(lastblock.key, function (p2) {\n return p1 == p2;\n });\n });\n }\n\n // If no shared parent could be found then the parent is the document.\n if (parent == null) parent = document;\n\n // Create a list of direct children siblings of parent that fall in the\n // selection.\n if (siblings == null) {\n var indexes = parent.nodes.reduce(function (ind, node, i) {\n if (node == firstblock || node.hasDescendant(firstblock.key)) ind[0] = i;\n if (node == lastblock || node.hasDescendant(lastblock.key)) ind[1] = i;\n return ind;\n }, []);\n\n index = indexes[0];\n siblings = parent.nodes.slice(indexes[0], indexes[1] + 1);\n }\n\n // Get the index to place the new wrapped node at.\n if (index == null) {\n index = parent.nodes.indexOf(siblings.first());\n }\n\n // Inject the new block node into the parent.\n change.insertNodeByKey(parent.key, index, block, { normalize: false });\n\n // Move the sibling nodes into the new block node.\n siblings.forEach(function (node, i) {\n change.moveNodeByKey(node.key, block.key, i, { normalize: false });\n });\n\n if (normalize) {\n change.normalizeNodeByKey(parent.key);\n }\n};\n\n/**\n * Wrap the text and inlines in a `range` in a new `inline`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Inline|Object|String} inline\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.wrapInlineAtRange = function (change, range, inline) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var value = change.value;\n var document = value.document;\n\n var normalize = change.getFlag('normalize', options);\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n\n\n if (range.isCollapsed) {\n // Wrapping an inline void\n var inlineParent = document.getClosestInline(startKey);\n\n if (!inlineParent.isVoid) {\n return;\n }\n\n return change.wrapInlineByKey(inlineParent.key, inline, options);\n }\n\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n\n var blocks = document.getBlocksAtRange(range);\n var startBlock = document.getClosestBlock(startKey);\n var endBlock = document.getClosestBlock(endKey);\n var startInline = document.getClosestInline(startKey);\n var endInline = document.getClosestInline(endKey);\n var startChild = startBlock.getFurthestAncestor(startKey);\n var endChild = endBlock.getFurthestAncestor(endKey);\n\n if (!startInline || startInline != endInline) {\n change.splitDescendantsByKey(endChild.key, endKey, endOffset, {\n normalize: false\n });\n\n change.splitDescendantsByKey(startChild.key, startKey, startOffset, {\n normalize: false\n });\n }\n\n document = change.value.document;\n startBlock = document.getDescendant(startBlock.key);\n endBlock = document.getDescendant(endBlock.key);\n startChild = startBlock.getFurthestAncestor(startKey);\n endChild = endBlock.getFurthestAncestor(endKey);\n var startIndex = startBlock.nodes.indexOf(startChild);\n var endIndex = endBlock.nodes.indexOf(endChild);\n\n if (startInline && startInline == endInline) {\n var text = startBlock.getTextsAtRange(range).get(0).splitText(startOffset)[1].splitText(endOffset - startOffset)[0];\n inline = inline.set('nodes', List([text]));\n Changes$1.insertInlineAtRange(change, range, inline, { normalize: false });\n var inlinekey = inline.getFirstText().key;\n var rng = {\n anchorKey: inlinekey,\n focusKey: inlinekey,\n anchorOffset: 0,\n focusOffset: endOffset - startOffset,\n isFocused: true\n };\n change.select(rng);\n } else if (startBlock == endBlock) {\n document = change.value.document;\n startBlock = document.getClosestBlock(startKey);\n startChild = startBlock.getFurthestAncestor(startKey);\n\n var startInner = document.getNextSibling(startChild.key);\n var startInnerIndex = startBlock.nodes.indexOf(startInner);\n var endInner = startKey == endKey ? startInner : startBlock.getFurthestAncestor(endKey);\n var inlines = startBlock.nodes.skipUntil(function (n) {\n return n == startInner;\n }).takeUntil(function (n) {\n return n == endInner;\n }).push(endInner);\n\n var node = inline.regenerateKey();\n\n change.insertNodeByKey(startBlock.key, startInnerIndex, node, {\n normalize: false\n });\n\n inlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, node.key, i, { normalize: false });\n });\n\n if (normalize) {\n change.normalizeNodeByKey(startBlock.key);\n }\n } else {\n var startInlines = startBlock.nodes.slice(startIndex + 1);\n var endInlines = endBlock.nodes.slice(0, endIndex + 1);\n var startNode = inline.regenerateKey();\n var endNode = inline.regenerateKey();\n\n change.insertNodeByKey(startBlock.key, startIndex + 1, startNode, {\n normalize: false\n });\n\n change.insertNodeByKey(endBlock.key, endIndex, endNode, {\n normalize: false\n });\n\n startInlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, startNode.key, i, { normalize: false });\n });\n\n endInlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, endNode.key, i, { normalize: false });\n });\n\n if (normalize) {\n change.normalizeNodeByKey(startBlock.key).normalizeNodeByKey(endBlock.key);\n }\n\n blocks.slice(1, -1).forEach(function (block) {\n var node = inline.regenerateKey();\n change.insertNodeByKey(block.key, 0, node, { normalize: false });\n\n block.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, node.key, i, { normalize: false });\n });\n\n if (normalize) {\n change.normalizeNodeByKey(block.key);\n }\n });\n }\n};\n\n/**\n * Wrap the text in a `range` in a prefix/suffix.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String} prefix\n * @param {String} suffix (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.wrapTextAtRange = function (change, range, prefix) {\n var suffix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : prefix;\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n\n var normalize = change.getFlag('normalize', options);\n var startKey = range.startKey,\n endKey = range.endKey;\n\n var start = range.collapseToStart();\n var end = range.collapseToEnd();\n\n if (startKey == endKey) {\n end = end.move(prefix.length);\n }\n\n change.insertTextAtRange(start, prefix, [], { normalize: normalize });\n change.insertTextAtRange(end, suffix, [], { normalize: normalize });\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$2 = {};\n\n/**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mixed} mark\n * @param {Object} options\n */\n\nChanges$2.addMarkByPath = function (change, path, offset, length, mark, options) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n\n o += leaf.text.length;\n\n // If the leaf doesn't overlap with the operation, continue on.\n if (ay < bx || by < ax) return;\n\n // If the leaf already has the mark, continue on.\n if (leaf.marks.has(mark)) return;\n\n // Otherwise, determine which offset and characters overlap.\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n\n operations.push({\n type: 'add_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n\n change.applyOperations(operations);\n change.normalizeParentByPath(path, options);\n};\n\n/**\n * Insert a `fragment` at `index` in a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} index\n * @param {Fragment} fragment\n * @param {Object} options\n */\n\nChanges$2.insertFragmentByPath = function (change, path, index, fragment, options) {\n fragment.nodes.forEach(function (node, i) {\n change.insertNodeByPath(path, index + i, node);\n });\n\n change.normalizeNodeByPath(path, options);\n};\n\n/**\n * Insert a `node` at `index` in a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} index\n * @param {Node} node\n * @param {Object} options\n */\n\nChanges$2.insertNodeByPath = function (change, path, index, node, options) {\n var value = change.value;\n\n\n change.applyOperation({\n type: 'insert_node',\n value: value,\n path: path.concat(index),\n node: node\n });\n\n change.normalizeNodeByPath(path, options);\n};\n\n/**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set<Mark>} marks (optional)\n * @param {Object} options\n */\n\nChanges$2.insertTextByPath = function (change, path, offset, text, marks, options) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n marks = marks || node.getMarksAtIndex(offset);\n\n change.applyOperation({\n type: 'insert_text',\n value: value,\n path: path,\n offset: offset,\n text: text,\n marks: marks\n });\n\n change.normalizeParentByPath(path, options);\n};\n\n/**\n * Merge a node by `path` with the previous node.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object} options\n */\n\nChanges$2.mergeNodeByPath = function (change, path, options) {\n var value = change.value;\n var document = value.document;\n\n var original = document.getDescendant(path);\n var previous = document.getPreviousSibling(path);\n\n if (!previous) {\n throw new Error('Unable to merge node with path \"' + path + '\", because it has no previous sibling.');\n }\n\n var position = previous.object == 'text' ? previous.text.length : previous.nodes.size;\n\n change.applyOperation({\n type: 'merge_node',\n value: value,\n path: path,\n position: position,\n // for undos to succeed we only need the type and data because\n // these are the only properties that get changed in the merge operation\n properties: {\n type: original.type,\n data: original.data\n },\n target: null\n });\n\n change.normalizeParentByPath(path, options);\n};\n\n/**\n * Move a node by `path` to a new parent by `newPath` and `index`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {String} newPath\n * @param {Number} index\n * @param {Object} options\n */\n\nChanges$2.moveNodeByPath = function (change, path, newPath, newIndex, options) {\n var value = change.value;\n\n\n change.applyOperation({\n type: 'move_node',\n value: value,\n path: path,\n newPath: newPath.concat(newIndex)\n });\n\n var ancestorPath = PathUtils.relate(path, newPath);\n change.normalizeNodeByPath(ancestorPath, options);\n};\n\n/**\n * Remove mark from text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} options\n */\n\nChanges$2.removeMarkByPath = function (change, path, offset, length, mark, options) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n\n o += leaf.text.length;\n\n // If the leaf doesn't overlap with the operation, continue on.\n if (ay < bx || by < ax) return;\n\n // If the leaf already has the mark, continue on.\n if (!leaf.marks.has(mark)) return;\n\n // Otherwise, determine which offset and characters overlap.\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n\n operations.push({\n type: 'remove_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n\n change.applyOperations(operations);\n change.normalizeParentByPath(path, options);\n};\n\n/**\n * Remove all `marks` from node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object} options\n */\n\nChanges$2.removeAllMarksByPath = function (change, path, options) {\n var state = change.state;\n var document = state.document;\n\n var node = document.assertNode(path);\n var texts = node.object === 'text' ? [node] : node.getTextsAsArray();\n\n texts.forEach(function (text) {\n text.getMarksAsArray().forEach(function (mark) {\n change.removeMarkByKey(text.key, 0, text.text.length, mark, options);\n });\n });\n};\n\n/**\n * Remove a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object} options\n */\n\nChanges$2.removeNodeByPath = function (change, path, options) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n\n change.applyOperation({\n type: 'remove_node',\n value: value,\n path: path,\n node: node\n });\n\n change.normalizeParentByPath(path, options);\n};\n\n/**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {String} text\n * @param {Set<Mark>} marks (optional)\n * @param {Object} options\n */\n\nChanges$2.setTextByPath = function (change, path, text, marks, options) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var end = node.text.length;\n change.replaceTextByPath(path, 0, end, text, marks, options);\n};\n\n/**\n * Replace A Length of Text with another string or text\n * @param {Change} change\n * @param {String} key\n * @param {Number} offset\n * @param {Number} length\n * @param {string} text\n * @param {Set<Mark>} marks (optional)\n * @param {Object} options\n *\n */\n\nChanges$2.replaceTextByPath = function (change, path, offset, length, text, marks, options) {\n var document = change.value.document;\n\n var node = document.assertNode(path);\n\n if (length + offset > node.text.length) {\n length = node.text.length - offset;\n }\n\n var range = Range.create({\n anchorPath: path,\n focusPath: path,\n anchorOffset: offset,\n focusOffset: offset + length\n }).normalize(document);\n\n var activeMarks = document.getActiveMarksAtRange(range);\n\n change.removeTextByPath(path, offset, length, { normalize: false });\n\n if (!marks) {\n // Do not use mark at index when marks and activeMarks are both empty\n marks = activeMarks ? activeMarks : [];\n } else if (activeMarks) {\n // Do not use `has` because we may want to reset marks like font-size with an updated data;\n activeMarks = activeMarks.filter(function (activeMark) {\n return !marks.find(function (m) {\n return activeMark.type === m.type;\n });\n });\n\n marks = activeMarks.merge(marks);\n }\n\n change.insertTextByPath(path, offset, text, marks, options);\n};\n\n/**\n * Remove text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Object} options\n */\n\nChanges$2.removeTextByPath = function (change, path, offset, length, options) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n var text = node.text;\n\n\n var removals = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n\n o += leaf.text.length;\n\n // If the leaf doesn't overlap with the removal, continue on.\n if (ay < bx || by < ax) return;\n\n // Otherwise, determine which offset and characters overlap.\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n var string = text.slice(start, end);\n\n removals.push({\n type: 'remove_text',\n value: value,\n path: path,\n offset: start,\n text: string,\n marks: leaf.marks\n });\n });\n\n // Apply in reverse order, so subsequent removals don't impact previous ones.\n change.applyOperations(removals.reverse());\n\n var block = document.getClosestBlock(node.key);\n change.normalizeNodeByKey(block.key, options);\n};\n\n/**\n`* Replace a `node` with another `node`\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|Node} node\n * @param {Object} options\n */\n\nChanges$2.replaceNodeByPath = function (change, path, newNode, options) {\n newNode = Node.create(newNode);\n var index = path.last();\n var parentPath = PathUtils.lift(path);\n change.removeNodeByPath(path, { normalize: false });\n change.insertNodeByPath(parentPath, index, newNode, { normalize: false });\n change.normalizeParentByPath(path, options);\n};\n\n/**\n * Set `properties` on mark on text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} options\n */\n\nChanges$2.setMarkByPath = function (change, path, offset, length, mark, properties, options) {\n mark = Mark.create(mark);\n properties = Mark.createProperties(properties);\n var value = change.value;\n\n\n change.applyOperation({\n type: 'set_mark',\n value: value,\n path: path,\n offset: offset,\n length: length,\n mark: mark,\n properties: properties\n });\n\n change.normalizeParentByPath(path, options);\n};\n\n/**\n * Set `properties` on a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|String} properties\n * @param {Object} options\n */\n\nChanges$2.setNodeByPath = function (change, path, properties, options) {\n properties = Node.createProperties(properties);\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n\n change.applyOperation({\n type: 'set_node',\n value: value,\n path: path,\n node: node,\n properties: properties\n });\n\n change.normalizeNodeByPath(path, options);\n};\n\n/**\n * Split a node by `path` at `position`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} position\n * @param {Object} options\n */\n\nChanges$2.splitNodeByPath = function (change, path, position) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$target = options.target,\n target = _options$target === undefined ? null : _options$target;\n var value = change.value;\n var document = value.document;\n\n var node = document.getDescendant(path);\n\n change.applyOperation({\n type: 'split_node',\n value: value,\n path: path,\n position: position,\n properties: {\n type: node.type,\n data: node.data\n },\n target: target\n });\n\n change.normalizeParentByPath(path, options);\n};\n\n/**\n * Split a node deeply down the tree by `path`, `textPath` and `textOffset`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Array} textPath\n * @param {Number} textOffset\n * @param {Object} options\n */\n\nChanges$2.splitDescendantsByPath = function (change, path, textPath, textOffset, options) {\n if (path.equals(textPath)) {\n change.splitNodeByPath(textPath, textOffset, options);\n return;\n }\n\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var text = document.assertNode(textPath);\n var ancestors = document.getAncestors(textPath);\n var nodes = ancestors.skipUntil(function (a) {\n return a.key == node.key;\n }).reverse().unshift(text);\n\n var previous = void 0;\n var index = void 0;\n\n nodes.forEach(function (n) {\n var prevIndex = index == null ? null : index;\n index = previous ? n.nodes.indexOf(previous) + 1 : textOffset;\n previous = n;\n\n change.splitNodeByKey(n.key, index, {\n normalize: false,\n target: prevIndex\n });\n });\n\n change.normalizeParentByPath(path, options);\n};\n\n/**\n * Unwrap content from an inline parent with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|String} properties\n * @param {Object} options\n */\n\nChanges$2.unwrapInlineByPath = function (change, path, properties, options) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var node = document.assertNode(path);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOf(first, last);\n change.unwrapInlineAtRange(range, properties, options);\n};\n\n/**\n * Unwrap content from a block parent with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|String} properties\n * @param {Object} options\n */\n\nChanges$2.unwrapBlockByPath = function (change, path, properties, options) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var node = document.assertNode(path);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOf(first, last);\n change.unwrapBlockAtRange(range, properties, options);\n};\n\n/**\n * Unwrap a single node from its parent.\n *\n * If the node is surrounded with siblings, its parent will be\n * split. If the node is the only child, the parent is removed, and\n * simply replaced by the node itself. Cannot unwrap a root node.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object} options\n */\n\nChanges$2.unwrapNodeByPath = function (change, path, options) {\n var value = change.value;\n var document = value.document;\n\n document.assertNode(path);\n\n var parentPath = PathUtils.lift(path);\n var parent = document.assertNode(parentPath);\n var index = path.last();\n var parentIndex = parentPath.last();\n var grandPath = PathUtils.lift(parentPath);\n var isFirst = index === 0;\n var isLast = index === parent.nodes.size - 1;\n\n if (parent.nodes.size === 1) {\n change.moveNodeByPath(path, grandPath, parentIndex + 1, {\n normalize: false\n });\n\n change.removeNodeByPath(parentPath, options);\n } else if (isFirst) {\n change.moveNodeByPath(path, grandPath, parentIndex, options);\n } else if (isLast) {\n change.moveNodeByPath(path, grandPath, parentIndex + 1, options);\n } else {\n change.splitNodeByPath(parentPath, index, { normalize: false });\n\n var updatedPath = PathUtils.increment(path, 1, parentPath.size - 1);\n updatedPath = updatedPath.set(updatedPath.size - 1, 0);\n\n change.moveNodeByPath(updatedPath, grandPath, parentIndex + 1, {\n normalize: false\n });\n\n change.normalizeNodeByPath(grandPath, options);\n }\n};\n\n/**\n * Wrap a node in a block with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Block|Object|String} block\n * @param {Object} options\n */\n\nChanges$2.wrapBlockByPath = function (change, path, block, options) {\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n var parentPath = PathUtils.lift(path);\n var index = path.last();\n var newPath = PathUtils.increment(path);\n change.insertNodeByPath(parentPath, index, block, { normalize: false });\n change.moveNodeByPath(newPath, path, 0, options);\n};\n\n/**\n * Wrap a node in an inline with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Block|Object|String} inline\n * @param {Object} options\n */\n\nChanges$2.wrapInlineByPath = function (change, path, inline, options) {\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n var parentPath = PathUtils.lift(path);\n var index = path.last();\n var newPath = PathUtils.increment(path);\n change.insertNodeByPath(parentPath, index, inline, { normalize: false });\n change.moveNodeByPath(newPath, path, 0, options);\n};\n\n/**\n * Wrap a node by `path` with `node`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Node|Object} node\n * @param {Object} options\n */\n\nChanges$2.wrapNodeByPath = function (change, path, node) {\n node = Node.create(node);\n\n if (node.object == 'block') {\n change.wrapBlockByPath(path, node);\n return;\n }\n\n if (node.object == 'inline') {\n change.wrapInlineByPath(path, node);\n return;\n }\n};\n\n/**\n * Mix in `*ByKey` variants.\n */\n\nvar CHANGES = ['addMark', 'insertFragment', 'insertNode', 'insertText', 'mergeNode', 'removeMark', 'removeAllMarks', 'removeNode', 'setText', 'replaceText', 'removeText', 'replaceNode', 'setMark', 'setNode', 'splitNode', 'unwrapInline', 'unwrapBlock', 'unwrapNode', 'wrapBlock', 'wrapInline', 'wrapNode'];\n\nvar _loop$1 = function _loop(method) {\n Changes$2[method + 'ByKey'] = function (change, key) {\n for (var _len3 = arguments.length, args = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n var value = change.value;\n var document = value.document;\n\n var path = document.assertPath(key);\n change[method + 'ByPath'].apply(change, [path].concat(args));\n };\n};\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = CHANGES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var method$1 = _step.value;\n\n _loop$1(method$1);\n }\n\n // Moving nodes takes two keys, so it's slightly different.\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nChanges$2.moveNodeByKey = function (change, key, newKey) {\n for (var _len = arguments.length, args = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var value = change.value;\n var document = value.document;\n\n var path = document.assertPath(key);\n var newPath = document.assertPath(newKey);\n change.moveNodeByPath.apply(change, [path, newPath].concat(args));\n};\n\n// Splitting descendants takes two keys, so it's slightly different.\nChanges$2.splitDescendantsByKey = function (change, key, textKey) {\n for (var _len2 = arguments.length, args = Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n args[_key2 - 3] = arguments[_key2];\n }\n\n var value = change.value;\n var document = value.document;\n\n var path = document.assertPath(key);\n var textPath = document.assertPath(textKey);\n change.splitDescendantsByPath.apply(change, [path, textPath].concat(args));\n};\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug = Debug('slate:history');\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$8 = {\n redos: new Stack(),\n undos: new Stack()\n\n /**\n * History.\n *\n * @type {History}\n */\n\n};\nvar History = function (_Record) {\n inherits(History, _Record);\n\n function History() {\n classCallCheck(this, History);\n return possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).apply(this, arguments));\n }\n\n createClass(History, [{\n key: 'save',\n\n\n /**\n * Save an `operation` into the history.\n *\n * @param {Object} operation\n * @param {Object} options\n * @return {History}\n */\n\n value: function save(operation) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var history = this;\n var _history = history,\n undos = _history.undos,\n redos = _history.redos;\n var merge = options.merge,\n skip = options.skip;\n\n var prevBatch = undos.peek();\n var prevOperation = prevBatch && prevBatch.last();\n\n if (skip == null) {\n skip = shouldSkip(operation, prevOperation);\n }\n\n if (skip) {\n return history;\n }\n\n if (merge == null) {\n merge = shouldMerge(operation, prevOperation);\n }\n\n debug('save', { operation: operation, merge: merge });\n\n // If the `merge` flag is true, add the operation to the previous batch.\n if (merge && prevBatch) {\n var batch = prevBatch.push(operation);\n undos = undos.pop();\n undos = undos.push(batch);\n } else {\n // Otherwise, create a new batch with the operation.\n var _batch = new List([operation]);\n undos = undos.push(_batch);\n }\n\n // Constrain the history to 100 entries for memory's sake.\n if (undos.size > 100) {\n undos = undos.take(100);\n }\n\n // Clear the redos and update the history.\n redos = redos.clear();\n history = history.set('undos', undos).set('redos', redos);\n return history;\n }\n\n /**\n * Return a JSON representation of the history.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n redos: this.redos.toJSON(),\n undos: this.undos.toJSON()\n };\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'history';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `History` with `attrs`.\n *\n * @param {Object|History} attrs\n * @return {History}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (History.isHistory(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return History.fromJSON(attrs);\n }\n\n throw new Error('`History.create` only accepts objects or histories, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Operations` from `operations`.\n *\n * @param {Array<Object>|List<Object>} operations\n * @return {List<Object>}\n */\n\n }, {\n key: 'createOperationsList',\n value: function createOperationsList() {\n var operations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(operations)) {\n return operations;\n }\n\n if (Array.isArray(operations)) {\n return new List(operations);\n }\n\n throw new Error('`History.createList` only accepts arrays or lists, but you passed it: ' + operations);\n }\n\n /**\n * Create a `History` from a JSON `object`.\n *\n * @param {Object} object\n * @return {History}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$redos = object.redos,\n redos = _object$redos === undefined ? [] : _object$redos,\n _object$undos = object.undos,\n undos = _object$undos === undefined ? [] : _object$undos;\n\n\n var history = new History({\n redos: new Stack(redos.map(this.createOperationsList)),\n undos: new Stack(undos.map(this.createOperationsList))\n });\n\n return history;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `History`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }]);\n return History;\n}(Record(DEFAULTS$8));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nHistory.fromJS = History.fromJSON;\nHistory.isHistory = isType.bind(null, 'HISTORY');\nHistory.prototype[MODEL_TYPES.HISTORY] = true;\n\n/**\n * Check whether to merge a new operation `o` into the previous operation `p`.\n *\n * @param {Object} o\n * @param {Object} p\n * @return {Boolean}\n */\n\nfunction shouldMerge(o, p) {\n if (!p) return false;\n\n var merge = o.type == 'set_selection' && p.type == 'set_selection' || o.type == 'insert_text' && p.type == 'insert_text' && o.offset == p.offset + p.text.length && isEqual(o.path, p.path) || o.type == 'remove_text' && p.type == 'remove_text' && o.offset + o.text.length == p.offset && isEqual(o.path, p.path);\n\n return merge;\n}\n\n/**\n * Check whether to skip a new operation `o`, given previous operation `p`.\n *\n * @param {Object} o\n * @param {Object} p\n * @return {Boolean}\n */\n\nfunction shouldSkip(o, p) {\n if (!p) return false;\n\n var skip = o.type == 'set_selection' && p.type == 'set_selection';\n\n return skip;\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$9 = {\n plugins: []\n\n /**\n * Stack.\n *\n * @type {Stack}\n */\n\n};\nvar Stack$1 = function (_Record) {\n inherits(Stack$$1, _Record);\n\n function Stack$$1() {\n classCallCheck(this, Stack$$1);\n return possibleConstructorReturn(this, (Stack$$1.__proto__ || Object.getPrototypeOf(Stack$$1)).apply(this, arguments));\n }\n\n createClass(Stack$$1, [{\n key: 'getPluginsWith',\n\n\n /**\n * Get all plugins with `property`.\n *\n * @param {String} property\n * @return {Array}\n */\n\n value: function getPluginsWith(property) {\n return this.plugins.filter(function (plugin) {\n return plugin[property] != null;\n });\n }\n\n /**\n * Iterate the plugins with `property`, returning the first non-null value.\n *\n * @param {String} property\n * @param {Any} ...args\n */\n\n }, {\n key: 'find',\n value: function find(property) {\n var plugins = this.getPluginsWith(property);\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var plugin = _step.value;\n\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) return ret;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n /**\n * Iterate the plugins with `property`, returning all the non-null values.\n *\n * @param {String} property\n * @param {Any} ...args\n * @return {Array}\n */\n\n }, {\n key: 'map',\n value: function map(property) {\n var plugins = this.getPluginsWith(property);\n var array = [];\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = plugins[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var plugin = _step2.value;\n\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) array.push(ret);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return array;\n }\n\n /**\n * Iterate the plugins with `property`, breaking on any a non-null values.\n *\n * @param {String} property\n * @param {Any} ...args\n */\n\n }, {\n key: 'run',\n value: function run(property) {\n var plugins = this.getPluginsWith(property);\n\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = plugins[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var plugin = _step3.value;\n\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) return;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n\n /**\n * Iterate the plugins with `property`, reducing to a set of React children.\n *\n * @param {String} property\n * @param {Object} props\n * @param {Any} ...args\n */\n\n }, {\n key: 'render',\n value: function render(property, props) {\n for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n var plugins = this.getPluginsWith(property);\n return plugins.reduceRight(function (children, plugin) {\n if (!plugin[property]) return children;\n var ret = plugin[property].apply(plugin, [props].concat(args));\n if (ret == null) return children;\n props.children = ret;\n return ret;\n }, props.children === undefined ? null : props.children);\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'stack';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Constructor.\n *\n * @param {Object} attrs\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _attrs$plugins = attrs.plugins,\n plugins = _attrs$plugins === undefined ? [] : _attrs$plugins;\n\n var stack = new Stack$$1({ plugins: plugins });\n return stack;\n }\n\n /**\n * Check if `any` is a `Stack`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isStack',\n value: function isStack(any) {\n return !!(any && any[MODEL_TYPES.STACK]);\n }\n }]);\n return Stack$$1;\n}(Record(DEFAULTS$9));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nStack$1.prototype[MODEL_TYPES.STACK] = true;\n\n/**\n * Memoize read methods.\n */\n\nmemoize(Stack$1.prototype, ['getPluginsWith']);\n\n/**\n * Define a Slate error.\n *\n * @type {SlateError}\n */\n\nvar SlateError = function (_Error) {\n inherits(SlateError, _Error);\n\n function SlateError(code) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, SlateError);\n\n var _this = possibleConstructorReturn(this, (SlateError.__proto__ || Object.getPrototypeOf(SlateError)).call(this, code));\n\n _this.code = code;\n\n for (var key in attrs) {\n _this[key] = attrs[key];\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, _this.constructor);\n } else {\n _this.stack = new Error().stack;\n }\n return _this;\n }\n\n return SlateError;\n}(Error);\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$1 = Debug('slate:schema');\n\n/**\n * Define the core schema rules, order-sensitive.\n *\n * @type {Array}\n */\n\nvar CORE_RULES = [\n// Only allow block nodes in documents.\n{\n match: { object: 'document' },\n nodes: [{\n match: { object: 'block' }\n }]\n},\n\n// Only allow block nodes or inline and text nodes in blocks.\n{\n match: {\n object: 'block',\n first: { object: 'block' }\n },\n nodes: [{\n match: { object: 'block' }\n }]\n}, {\n match: {\n object: 'block',\n first: [{ object: 'inline' }, { object: 'text' }]\n },\n nodes: [{\n match: [{ object: 'inline' }, { object: 'text' }]\n }]\n},\n\n// Only allow inline and text nodes in inlines.\n{\n match: { object: 'inline' },\n nodes: [{ match: [{ object: 'inline' }, { object: 'text' }] }]\n},\n\n// Ensure that block and inline nodes have at least one text child.\n{\n match: [{ object: 'block' }, { object: 'inline' }],\n nodes: [{ min: 1 }],\n normalize: function normalize(change, error) {\n var code = error.code,\n node = error.node;\n\n if (code !== 'child_required') return;\n change.insertNodeByKey(node.key, 0, Text.create(), { normalize: false });\n }\n},\n\n// Ensure that inline non-void nodes are never empty.\n{\n match: {\n object: 'inline',\n isVoid: false,\n nodes: [{ match: { object: 'text' } }]\n },\n text: /[\\w\\W]+/\n},\n\n// Ensure that inline void nodes are surrounded by text nodes.\n{\n match: { object: 'block' },\n first: [{ object: 'block' }, { object: 'text' }],\n last: [{ object: 'block' }, { object: 'text' }],\n normalize: function normalize(change, error) {\n var code = error.code,\n node = error.node;\n\n var text = Text.create();\n var i = void 0;\n\n if (code === 'first_child_object_invalid') {\n i = 0;\n } else if (code === 'last_child_object_invalid') {\n i = node.nodes.size;\n } else {\n return;\n }\n\n change.insertNodeByKey(node.key, i, text, { normalize: false });\n }\n}, {\n match: { object: 'inline' },\n first: [{ object: 'block' }, { object: 'text' }],\n last: [{ object: 'block' }, { object: 'text' }],\n previous: [{ object: 'block' }, { object: 'text' }],\n next: [{ object: 'block' }, { object: 'text' }],\n normalize: function normalize(change, error) {\n var code = error.code,\n node = error.node,\n index = error.index;\n\n var text = Text.create();\n var i = void 0;\n\n if (code === 'first_child_object_invalid') {\n i = 0;\n } else if (code === 'last_child_object_invalid') {\n i = node.nodes.size;\n } else if (code === 'previous_sibling_object_invalid') {\n i = index;\n } else if (code === 'next_sibling_object_invalid') {\n i = index + 1;\n } else {\n return;\n }\n\n change.insertNodeByKey(node.key, i, text, { normalize: false });\n }\n},\n\n// Merge adjacent text nodes.\n{\n match: { object: 'text' },\n next: [{ object: 'block' }, { object: 'inline' }],\n normalize: function normalize(change, error) {\n var code = error.code,\n next = error.next;\n\n if (code !== 'next_sibling_object_invalid') return;\n change.mergeNodeByKey(next.key, { normalize: false });\n }\n}];\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$10 = {\n stack: Stack$1.create(),\n rules: []\n\n /**\n * Schema.\n *\n * @type {Schema}\n */\n\n};\nvar Schema = function (_Record) {\n inherits(Schema, _Record);\n\n function Schema() {\n classCallCheck(this, Schema);\n return possibleConstructorReturn(this, (Schema.__proto__ || Object.getPrototypeOf(Schema)).apply(this, arguments));\n }\n\n createClass(Schema, [{\n key: 'validateNode',\n\n\n /**\n * Validate a `node` with the schema, returning an error if it's invalid.\n *\n * @param {Node} node\n * @return {Error|Void}\n */\n\n value: function validateNode(node) {\n var rules = this.rules.filter(function (r) {\n return testRules(node, r.match);\n });\n var failure = validateRules(node, rules, this.rules, { every: true });\n if (!failure) return;\n var error = new SlateError(failure.code, failure);\n return error;\n }\n\n /**\n * Test whether a `node` is valid against the schema.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'testNode',\n value: function testNode(node) {\n var error = this.validateNode(node);\n return !error;\n }\n\n /**\n * Assert that a `node` is valid against the schema.\n *\n * @param {Node} node\n * @throws\n */\n\n }, {\n key: 'assertNode',\n value: function assertNode(node) {\n var error = this.validateNode(node);\n if (error) throw error;\n }\n\n /**\n * Normalize a `node` with the schema, returning a function that will fix the\n * invalid node, or void if the node is valid.\n *\n * @param {Node} node\n * @return {Function|Void}\n */\n\n }, {\n key: 'normalizeNode',\n value: function normalizeNode(node) {\n var ret = this.stack.find('normalizeNode', node);\n if (ret) return ret;\n if (node.object == 'text') return;\n\n var error = this.validateNode(node);\n if (!error) return;\n\n return function (change) {\n debug$1('normalizing', { error: error });\n var rule = error.rule;\n var size = change.operations.size;\n\n // First run the user-provided `normalize` function if one exists...\n\n if (rule.normalize) {\n rule.normalize(change, error);\n }\n\n // If the `normalize` function did not add any operations to the change\n // object, it can't have normalized, so run the default one.\n if (change.operations.size === size) {\n defaultNormalize(change, error);\n }\n };\n }\n\n /**\n * Return a JSON representation of the schema.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n rules: this.rules\n };\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'schema';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Schema` with `attrs`.\n *\n * @param {Object|Schema} attrs\n * @return {Schema}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Schema.isSchema(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Schema.fromJSON(attrs);\n }\n\n throw new Error('`Schema.create` only accepts objects or schemas, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Schema` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Schema}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Schema.isSchema(object)) {\n return object;\n }\n\n var plugins = object.plugins ? object.plugins : [{ schema: object }];\n var rules = [].concat(CORE_RULES);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var plugin = _step.value;\n var _plugin$schema = plugin.schema,\n schema = _plugin$schema === undefined ? {} : _plugin$schema;\n var _schema$blocks = schema.blocks,\n blocks = _schema$blocks === undefined ? {} : _schema$blocks,\n _schema$inlines = schema.inlines,\n inlines = _schema$inlines === undefined ? {} : _schema$inlines;\n\n\n if (schema.rules) {\n rules = rules.concat(schema.rules);\n }\n\n if (schema.document) {\n rules.push(_extends({\n match: [{ object: 'document' }]\n }, schema.document));\n }\n\n for (var key in blocks) {\n rules.push(_extends({\n match: [{ object: 'block', type: key }]\n }, blocks[key]));\n }\n\n for (var _key in inlines) {\n rules.push(_extends({\n match: [{ object: 'inline', type: _key }]\n }, inlines[_key]));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var stack = Stack$1.create({ plugins: plugins });\n var ret = new Schema({ stack: stack, rules: rules });\n return ret;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isSchema',\n\n\n /**\n * Check if `any` is a `Schema`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n value: function isSchema(any) {\n return !!(any && any[MODEL_TYPES.SCHEMA]);\n }\n }]);\n return Schema;\n}(Record(DEFAULTS$10));\n\n/**\n * Normalize an invalid value with `error` with default remedies.\n *\n * @param {Change} change\n * @param {SlateError} error\n */\n\nSchema.fromJS = Schema.fromJSON;\nfunction defaultNormalize(change, error) {\n switch (error.code) {\n case CHILD_OBJECT_INVALID:\n case CHILD_TYPE_INVALID:\n case CHILD_UNKNOWN:\n case FIRST_CHILD_OBJECT_INVALID:\n case FIRST_CHILD_TYPE_INVALID:\n case LAST_CHILD_OBJECT_INVALID:\n case LAST_CHILD_TYPE_INVALID:\n {\n var child = error.child,\n node = error.node;\n\n return child.object == 'text' && node.object == 'block' && node.nodes.size == 1 ? change.removeNodeByKey(node.key) : change.removeNodeByKey(child.key);\n }\n\n case CHILD_REQUIRED:\n case NODE_TEXT_INVALID:\n case PARENT_OBJECT_INVALID:\n case PARENT_TYPE_INVALID:\n {\n var _node = error.node;\n\n return _node.object == 'document' ? _node.nodes.forEach(function (child) {\n return change.removeNodeByKey(child.key);\n }) : change.removeNodeByKey(_node.key);\n }\n\n case NODE_DATA_INVALID:\n {\n var _node2 = error.node,\n key = error.key;\n\n return _node2.data.get(key) === undefined && _node2.object != 'document' ? change.removeNodeByKey(_node2.key) : change.setNodeByKey(_node2.key, { data: _node2.data.delete(key) });\n }\n\n case NODE_IS_VOID_INVALID:\n {\n var _node3 = error.node;\n\n return change.setNodeByKey(_node3.key, { isVoid: !_node3.isVoid });\n }\n\n case NODE_MARK_INVALID:\n {\n var _node4 = error.node,\n mark = error.mark;\n\n return _node4.getTexts().forEach(function (t) {\n return change.removeMarkByKey(t.key, 0, t.text.length, mark);\n });\n }\n\n default:\n {\n var _node5 = error.node;\n\n return change.removeNodeByKey(_node5.key);\n }\n }\n}\n\n/**\n * Check that a `node` matches one of a set of `rules`.\n *\n * @param {Node} node\n * @param {Object|Array} rules\n * @return {Boolean}\n */\n\nfunction testRules(node, rules) {\n var error = validateRules(node, rules);\n return !error;\n}\n\n/**\n * Validate that a `node` matches a `rule` object or array.\n *\n * @param {Node} node\n * @param {Object|Array} rule\n * @param {Array|Void} rules\n * @return {Error|Void}\n */\n\nfunction validateRules(node, rule, rules) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$every = options.every,\n every = _options$every === undefined ? false : _options$every;\n\n\n if (Array.isArray(rule)) {\n var array = rule.length ? rule : [{}];\n var first = void 0;\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = array[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var r = _step2.value;\n\n var _error = validateRules(node, r, rules);\n first = first || _error;\n if (every && _error) return _error;\n if (!every && !_error) return;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return first;\n }\n\n var error = validateObject(node, rule) || validateType(node, rule) || validateIsVoid(node, rule) || validateData(node, rule) || validateMarks(node, rule) || validateText(node, rule) || validateFirst(node, rule) || validateLast(node, rule) || validateNodes(node, rule, rules);\n\n return error;\n}\n\nfunction validateObject(node, rule) {\n if (rule.objects) {\n logger.warn('The `objects` schema validation rule was changed. Please use the new `match` syntax with `object`.');\n }\n\n if (rule.object == null) return;\n if (rule.object === node.object) return;\n return fail(NODE_OBJECT_INVALID, { rule: rule, node: node });\n}\n\nfunction validateType(node, rule) {\n if (rule.types) {\n logger.warn('The `types` schema validation rule was changed. Please use the new `match` syntax with `type`.');\n }\n\n if (rule.type == null) return;\n if (rule.type === node.type) return;\n return fail(NODE_TYPE_INVALID, { rule: rule, node: node });\n}\n\nfunction validateIsVoid(node, rule) {\n if (rule.isVoid == null) return;\n if (rule.isVoid === node.isVoid) return;\n return fail(NODE_IS_VOID_INVALID, { rule: rule, node: node });\n}\n\nfunction validateData(node, rule) {\n if (rule.data == null) return;\n if (node.data == null) return;\n\n for (var key in rule.data) {\n var fn = rule.data[key];\n var value = node.data && node.data.get(key);\n var valid = typeof fn === 'function' ? fn(value) : fn === value;\n if (valid) continue;\n return fail(NODE_DATA_INVALID, { rule: rule, node: node, key: key, value: value });\n }\n}\n\nfunction validateMarks(node, rule) {\n if (rule.marks == null) return;\n var marks = node.getMarks().toArray();\n\n var _loop = function _loop(mark) {\n var valid = rule.marks.some(function (def) {\n return def.type === mark.type;\n });\n if (valid) return 'continue';\n return {\n v: fail(NODE_MARK_INVALID, { rule: rule, node: node, mark: mark })\n };\n };\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = marks[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var mark = _step3.value;\n\n var _ret = _loop(mark);\n\n switch (_ret) {\n case 'continue':\n continue;\n\n default:\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\nfunction validateText(node, rule) {\n if (rule.text == null) return;\n var text = node.text;\n\n var valid = rule.text.test(text);\n if (valid) return;\n return fail(NODE_TEXT_INVALID, { rule: rule, node: node, text: text });\n}\n\nfunction validateFirst(node, rule) {\n if (rule.first == null) return;\n var first = node.nodes.first();\n if (!first) return;\n var error = validateRules(first, rule.first);\n if (!error) return;\n error.rule = rule;\n error.node = node;\n error.child = first;\n error.code = error.code.replace('node_', 'first_child_');\n return error;\n}\n\nfunction validateLast(node, rule) {\n if (rule.last == null) return;\n var last = node.nodes.last();\n if (!last) return;\n var error = validateRules(last, rule.last);\n if (!error) return;\n error.rule = rule;\n error.node = node;\n error.child = last;\n error.code = error.code.replace('node_', 'last_child_');\n return error;\n}\n\nfunction validateNodes(node, rule) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n if (node.nodes == null) return;\n\n var children = node.nodes.toArray();\n var defs = rule.nodes != null ? rule.nodes.slice() : [];\n var offset = void 0;\n var min = void 0;\n var index = void 0;\n var def = void 0;\n var max = void 0;\n var child = void 0;\n var previous = void 0;\n var next = void 0;\n\n function nextDef() {\n offset = offset == null ? null : 0;\n def = defs.shift();\n min = def && def.min;\n max = def && def.max;\n return !!def;\n }\n\n function nextChild() {\n index = index == null ? 0 : index + 1;\n offset = offset == null ? 0 : offset + 1;\n previous = child;\n child = children[index];\n next = children[index + 1];\n if (max != null && offset == max) nextDef();\n return !!child;\n }\n\n function rewind() {\n offset -= 1;\n index -= 1;\n }\n\n if (rule.nodes != null) {\n nextDef();\n }\n\n while (nextChild()) {\n var err = validateParent(node, child, rules) || validatePrevious(node, child, previous, index, rules) || validateNext(node, child, next, index, rules);\n\n if (err) return err;\n\n if (rule.nodes != null) {\n if (!def) {\n return fail(CHILD_UNKNOWN, { rule: rule, node: node, child: child, index: index });\n }\n\n if (def) {\n if (def.objects) {\n logger.warn('The `objects` schema validation rule was changed. Please use the new `match` syntax with `object`.');\n }\n\n if (def.types) {\n logger.warn('The `types` schema validation rule was changed. Please use the new `match` syntax with `type`.');\n }\n }\n\n if (def.match) {\n var error = validateRules(child, def.match);\n\n if (error && offset >= min && nextDef()) {\n rewind();\n continue;\n }\n\n if (error) {\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.code = error.code.replace('node_', 'child_');\n return error;\n }\n }\n }\n }\n\n if (rule.nodes != null) {\n while (min != null) {\n if (offset < min) {\n return fail(CHILD_REQUIRED, { rule: rule, node: node, index: index });\n }\n\n nextDef();\n }\n }\n}\n\nfunction validateParent(node, child, rules) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var rule = _step4.value;\n\n if (rule.parent == null) continue;\n if (!testRules(child, rule.match)) continue;\n\n var error = validateRules(node, rule.parent);\n if (!error) continue;\n\n error.rule = rule;\n error.parent = node;\n error.node = child;\n error.code = error.code.replace('node_', 'parent_');\n return error;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n}\n\nfunction validatePrevious(node, child, previous, index, rules) {\n if (!previous) return;\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = rules[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var rule = _step5.value;\n\n if (rule.previous == null) continue;\n if (!testRules(child, rule.match)) continue;\n\n var error = validateRules(previous, rule.previous);\n if (!error) continue;\n\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.previous = previous;\n error.code = error.code.replace('node_', 'previous_sibling_');\n return error;\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n}\n\nfunction validateNext(node, child, next, index, rules) {\n if (!next) return;\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = rules[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var rule = _step6.value;\n\n if (rule.next == null) continue;\n if (!testRules(child, rule.match)) continue;\n\n var error = validateRules(next, rule.next);\n if (!error) continue;\n\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.next = next;\n error.code = error.code.replace('node_', 'next_sibling_');\n return error;\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n}\n\n/**\n * Create an interim failure object with `code` and `attrs`.\n *\n * @param {String} code\n * @param {Object} attrs\n * @return {Object}\n */\n\nfunction fail(code, attrs) {\n return _extends({ code: code }, attrs);\n}\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nSchema.prototype[MODEL_TYPES.SCHEMA] = true;\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$11 = {\n data: new Map$1(),\n decorations: null,\n document: Document.create(),\n history: History.create(),\n schema: Schema.create(),\n selection: Range.create()\n\n /**\n * Value.\n *\n * @type {Value}\n */\n\n};\nvar Value = function (_Record) {\n inherits(Value, _Record);\n\n function Value() {\n classCallCheck(this, Value);\n return possibleConstructorReturn(this, (Value.__proto__ || Object.getPrototypeOf(Value)).apply(this, arguments));\n }\n\n createClass(Value, [{\n key: 'change',\n\n\n /**\n * Create a new `Change` with the current value as a starting point.\n *\n * @param {Object} attrs\n * @return {Change}\n */\n\n value: function change() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return new Change(_extends({}, attrs, { value: this }));\n }\n\n /**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Value}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(path, offset, length, mark) {\n var value = this;\n var _value = value,\n document = _value.document;\n\n document = document.addMark(path, offset, length, mark);\n value = this.set('document', document);\n return value;\n }\n\n /**\n * Insert a `node`.\n *\n * @param {List|String} path\n * @param {Node} node\n * @return {Value}\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode(path, node) {\n var value = this;\n var _value2 = value,\n document = _value2.document;\n\n document = document.insertNode(path, node);\n value = value.set('document', document);\n\n value = value.mapRanges(function (range) {\n return range.merge({ anchorPath: null, focusPath: null });\n });\n\n return value;\n }\n\n /**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks\n * @return {Value}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(path, offset, text, marks) {\n var value = this;\n var _value3 = value,\n document = _value3.document;\n\n document = document.insertText(path, offset, text, marks);\n value = value.set('document', document);\n\n // Update any ranges that were affected.\n var node = document.assertNode(path);\n value = value.clearAtomicRanges(node.key, offset);\n\n value = value.mapRanges(function (range) {\n var anchorKey = range.anchorKey,\n anchorOffset = range.anchorOffset,\n isBackward = range.isBackward,\n isAtomic = range.isAtomic;\n\n\n if (anchorKey === node.key && (anchorOffset > offset || anchorOffset === offset && (!isAtomic || !isBackward))) {\n return range.moveAnchor(text.length);\n }\n\n return range;\n });\n\n value = value.mapRanges(function (range) {\n var focusKey = range.focusKey,\n focusOffset = range.focusOffset,\n isBackward = range.isBackward,\n isAtomic = range.isAtomic;\n\n\n if (focusKey === node.key && (focusOffset > offset || focusOffset == offset && (!isAtomic || isBackward))) {\n return range.moveFocus(text.length);\n }\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Merge a node backwards its previous sibling.\n *\n * @param {List|Key} path\n * @return {Value}\n */\n\n }, {\n key: 'mergeNode',\n value: function mergeNode(path) {\n var value = this;\n var _value4 = value,\n document = _value4.document;\n\n var newDocument = document.mergeNode(path);\n path = document.resolvePath(path);\n var withPath = PathUtils.decrement(path);\n var one = document.getNode(withPath);\n var two = document.getNode(path);\n value = value.set('document', newDocument);\n\n value = value.mapRanges(function (range) {\n if (two.object === 'text') {\n var max = one.text.length;\n\n if (range.anchorKey === two.key) {\n range = range.moveAnchorTo(one.key, max + range.anchorOffset);\n }\n\n if (range.focusKey === two.key) {\n range = range.moveFocusTo(one.key, max + range.focusOffset);\n }\n }\n\n range = range.merge({ anchorPath: null, focusPath: null });\n return range;\n });\n\n return value;\n }\n\n /**\n * Move a node by `path` to `newPath`.\n *\n * A `newIndex` can be provided when move nodes by `key`, to account for not\n * being able to have a key for a location in the tree that doesn't exist yet.\n *\n * @param {List|Key} path\n * @param {List|Key} newPath\n * @param {Number} newIndex\n * @return {Value}\n */\n\n }, {\n key: 'moveNode',\n value: function moveNode(path, newPath) {\n var newIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var value = this;\n var _value5 = value,\n document = _value5.document;\n\n document = document.moveNode(path, newPath, newIndex);\n value = value.set('document', document);\n\n value = value.mapRanges(function (range) {\n return range.merge({ anchorPath: null, focusPath: null });\n });\n\n return value;\n }\n\n /**\n * Remove mark from text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Value}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(path, offset, length, mark) {\n var value = this;\n var _value6 = value,\n document = _value6.document;\n\n document = document.removeMark(path, offset, length, mark);\n value = this.set('document', document);\n return value;\n }\n\n /**\n * Remove a node by `path`.\n *\n * @param {List|String} path\n * @return {Value}\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(path) {\n var value = this;\n var _value7 = value,\n document = _value7.document;\n\n var node = document.assertNode(path);\n var first = node.object == 'text' ? node : node.getFirstText() || node;\n var last = node.object == 'text' ? node : node.getLastText() || node;\n var prev = document.getPreviousText(first.key);\n var next = document.getNextText(last.key);\n\n document = document.removeNode(path);\n value = value.set('document', document);\n\n value = value.mapRanges(function (range) {\n var _range = range,\n startKey = _range.startKey,\n endKey = _range.endKey;\n\n\n if (node.hasNode(startKey)) {\n range = prev ? range.moveStartTo(prev.key, prev.text.length) : next ? range.moveStartTo(next.key, 0) : range.deselect();\n }\n\n if (node.hasNode(endKey)) {\n range = prev ? range.moveEndTo(prev.key, prev.text.length) : next ? range.moveEndTo(next.key, 0) : range.deselect();\n }\n\n range = range.merge({ anchorPath: null, focusPath: null });\n return range;\n });\n\n return value;\n }\n\n /**\n * Remove `text` at `offset` in node by `path`.\n *\n * @param {List|Key} path\n * @param {Number} offset\n * @param {String} text\n * @return {Value}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(path, offset, text) {\n var value = this;\n var _value8 = value,\n document = _value8.document;\n\n document = document.removeText(path, offset, text);\n value = value.set('document', document);\n\n var node = document.assertNode(path);\n var length = text.length;\n\n var rangeOffset = offset + length;\n value = value.clearAtomicRanges(node.key, offset, offset + length);\n\n value = value.mapRanges(function (range) {\n var anchorKey = range.anchorKey;\n\n\n if (anchorKey === node.key) {\n return range.anchorOffset >= rangeOffset ? range.moveAnchor(-length) : range.anchorOffset > offset ? range.moveAnchorTo(range.anchorKey, offset) : range;\n }\n\n return range;\n });\n\n value = value.mapRanges(function (range) {\n var focusKey = range.focusKey;\n\n\n if (focusKey === node.key) {\n return range.focusOffset >= rangeOffset ? range.moveFocus(-length) : range.focusOffset > offset ? range.moveFocusTo(range.focusKey, offset) : range;\n }\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Set `properties` on a node.\n *\n * @param {List|String} path\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setNode',\n value: function setNode(path, properties) {\n var value = this;\n var _value9 = value,\n document = _value9.document;\n\n document = document.setNode(path, properties);\n value = value.set('document', document);\n return value;\n }\n\n /**\n * Set `properties` on `mark` on text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setMark',\n value: function setMark(path, offset, length, mark, properties) {\n var value = this;\n var _value10 = value,\n document = _value10.document;\n\n document = document.setMark(path, offset, length, mark, properties);\n value = value.set('document', document);\n return value;\n }\n\n /**\n * Set `properties` on the selection.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n\n }, {\n key: 'setSelection',\n value: function setSelection(properties) {\n var value = this;\n var _value11 = value,\n document = _value11.document,\n selection = _value11.selection;\n\n selection = selection.merge(properties);\n selection = selection.normalize(document);\n value = value.set('selection', selection);\n return value;\n }\n\n /**\n * Split a node by `path` at `position` with optional `properties` to apply\n * to the newly split node.\n *\n * @param {List|String} path\n * @param {Number} position\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'splitNode',\n value: function splitNode(path, position, properties) {\n var value = this;\n var _value12 = value,\n document = _value12.document;\n\n var newDocument = document.splitNode(path, position, properties);\n var node = document.assertNode(path);\n value = value.set('document', newDocument);\n\n value = value.mapRanges(function (range) {\n var next = newDocument.getNextText(node.key);\n var _range2 = range,\n startKey = _range2.startKey,\n startOffset = _range2.startOffset,\n endKey = _range2.endKey,\n endOffset = _range2.endOffset;\n\n // If the start was after the split, move it to the next node.\n\n if (node.key === startKey && position <= startOffset) {\n range = range.moveStartTo(next.key, startOffset - position);\n }\n\n // If the end was after the split, move it to the next node.\n if (node.key === endKey && position <= endOffset) {\n range = range.moveEndTo(next.key, endOffset - position);\n }\n\n range = range.merge({ anchorPath: null, focusPath: null });\n return range;\n });\n\n return value;\n }\n\n /**\n * Map all range objects to apply adjustments with an `iterator`.\n *\n * @param {Function} iterator\n * @return {Value}\n */\n\n }, {\n key: 'mapRanges',\n value: function mapRanges(iterator) {\n var value = this;\n var _value13 = value,\n document = _value13.document,\n selection = _value13.selection,\n decorations = _value13.decorations;\n\n\n if (selection) {\n var next = selection.isSet ? iterator(selection) : selection;\n if (!next) next = selection.deselect();\n if (next !== selection) next = next.normalize(document);\n value = value.set('selection', next);\n }\n\n if (decorations) {\n var _next = decorations.map(function (decoration) {\n var n = decoration.isSet ? iterator(decoration) : decoration;\n if (n && n !== decoration) n = n.normalize(document);\n return n;\n });\n\n _next = _next.filter(function (decoration) {\n return !!decoration;\n });\n _next = _next.size ? _next : null;\n value = value.set('decorations', _next);\n }\n\n return value;\n }\n\n /**\n * Remove any atomic ranges inside a `key`, `offset` and `length`.\n *\n * @param {String} key\n * @param {Number} start\n * @param {Number?} end\n * @return {Value}\n */\n\n }, {\n key: 'clearAtomicRanges',\n value: function clearAtomicRanges(key, start) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n return this.mapRanges(function (range) {\n var isAtomic = range.isAtomic,\n startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n\n if (!isAtomic) return range;\n if (startKey !== key) return range;\n\n if (startOffset < start && (endKey !== key || endOffset > start)) {\n return null;\n }\n\n if (end != null && startOffset < end && (endKey !== key || endOffset > end)) {\n return null;\n }\n\n return range;\n });\n }\n\n /**\n * Return a JSON representation of the value.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n document: this.document.toJSON(options)\n };\n\n if (options.preserveData) {\n object.data = this.data.toJSON(options);\n }\n\n if (options.preserveDecorations) {\n object.decorations = this.decorations ? this.decorations.toArray().map(function (d) {\n return d.toJSON(options);\n }) : null;\n }\n\n if (options.preserveHistory) {\n object.history = this.history.toJSON(options);\n }\n\n if (options.preserveSelection) {\n object.selection = this.selection.toJSON(options);\n }\n\n if (options.preserveSchema) {\n object.schema = this.schema.toJSON(options);\n }\n\n return object;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'value';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n\n /**\n * Are there undoable events?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasUndos',\n get: function get$$1() {\n return this.history.undos.size > 0;\n }\n\n /**\n * Are there redoable events?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasRedos',\n get: function get$$1() {\n return this.history.redos.size > 0;\n }\n\n /**\n * Is the current selection blurred?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isBlurred',\n get: function get$$1() {\n return this.selection.isBlurred;\n }\n\n /**\n * Is the current selection focused?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isFocused',\n get: function get$$1() {\n return this.selection.isFocused;\n }\n\n /**\n * Is the current selection collapsed?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isCollapsed',\n get: function get$$1() {\n return this.selection.isCollapsed;\n }\n\n /**\n * Is the current selection expanded?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isExpanded',\n get: function get$$1() {\n return this.selection.isExpanded;\n }\n\n /**\n * Is the current selection backward?\n *\n * @return {Boolean} isBackward\n */\n\n }, {\n key: 'isBackward',\n get: function get$$1() {\n return this.selection.isBackward;\n }\n\n /**\n * Is the current selection forward?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isForward',\n get: function get$$1() {\n return this.selection.isForward;\n }\n\n /**\n * Get the current start key.\n *\n * @return {String}\n */\n\n }, {\n key: 'startKey',\n get: function get$$1() {\n return this.selection.startKey;\n }\n\n /**\n * Get the current end key.\n *\n * @return {String}\n */\n\n }, {\n key: 'endKey',\n get: function get$$1() {\n return this.selection.endKey;\n }\n\n /**\n * Get the current start path.\n *\n * @return {String}\n */\n\n }, {\n key: 'startPath',\n get: function get$$1() {\n return this.selection.startPath;\n }\n\n /**\n * Get the current end path.\n *\n * @return {String}\n */\n\n }, {\n key: 'endPath',\n get: function get$$1() {\n return this.selection.endPath;\n }\n\n /**\n * Get the current start offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'startOffset',\n get: function get$$1() {\n return this.selection.startOffset;\n }\n\n /**\n * Get the current end offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'endOffset',\n get: function get$$1() {\n return this.selection.endOffset;\n }\n\n /**\n * Get the current anchor key.\n *\n * @return {String}\n */\n\n }, {\n key: 'anchorKey',\n get: function get$$1() {\n return this.selection.anchorKey;\n }\n\n /**\n * Get the current focus key.\n *\n * @return {String}\n */\n\n }, {\n key: 'focusKey',\n get: function get$$1() {\n return this.selection.focusKey;\n }\n\n /**\n * Get the current anchor path.\n *\n * @return {String}\n */\n\n }, {\n key: 'anchorPath',\n get: function get$$1() {\n return this.selection.anchorPath;\n }\n\n /**\n * Get the current focus path.\n *\n * @return {String}\n */\n\n }, {\n key: 'focusPath',\n get: function get$$1() {\n return this.selection.focusPath;\n }\n\n /**\n * Get the current anchor offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'anchorOffset',\n get: function get$$1() {\n return this.selection.anchorOffset;\n }\n\n /**\n * Get the current focus offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'focusOffset',\n get: function get$$1() {\n return this.selection.focusOffset;\n }\n\n /**\n * Get the current start text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'startBlock',\n get: function get$$1() {\n return this.startKey && this.document.getClosestBlock(this.startKey);\n }\n\n /**\n * Get the current end text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'endBlock',\n get: function get$$1() {\n return this.endKey && this.document.getClosestBlock(this.endKey);\n }\n\n /**\n * Get the current anchor text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'anchorBlock',\n get: function get$$1() {\n return this.anchorKey && this.document.getClosestBlock(this.anchorKey);\n }\n\n /**\n * Get the current focus text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'focusBlock',\n get: function get$$1() {\n return this.focusKey && this.document.getClosestBlock(this.focusKey);\n }\n\n /**\n * Get the current start text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'startInline',\n get: function get$$1() {\n return this.startKey && this.document.getClosestInline(this.startKey);\n }\n\n /**\n * Get the current end text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'endInline',\n get: function get$$1() {\n return this.endKey && this.document.getClosestInline(this.endKey);\n }\n\n /**\n * Get the current anchor text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'anchorInline',\n get: function get$$1() {\n return this.anchorKey && this.document.getClosestInline(this.anchorKey);\n }\n\n /**\n * Get the current focus text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'focusInline',\n get: function get$$1() {\n return this.focusKey && this.document.getClosestInline(this.focusKey);\n }\n\n /**\n * Get the current start text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'startText',\n get: function get$$1() {\n return this.startKey && this.document.getDescendant(this.startKey);\n }\n\n /**\n * Get the current end node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'endText',\n get: function get$$1() {\n return this.endKey && this.document.getDescendant(this.endKey);\n }\n\n /**\n * Get the current anchor node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'anchorText',\n get: function get$$1() {\n return this.anchorKey && this.document.getDescendant(this.anchorKey);\n }\n\n /**\n * Get the current focus node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'focusText',\n get: function get$$1() {\n return this.focusKey && this.document.getDescendant(this.focusKey);\n }\n\n /**\n * Get the next block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'nextBlock',\n get: function get$$1() {\n return this.endKey && this.document.getNextBlock(this.endKey);\n }\n\n /**\n * Get the previous block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'previousBlock',\n get: function get$$1() {\n return this.startKey && this.document.getPreviousBlock(this.startKey);\n }\n\n /**\n * Get the next inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'nextInline',\n get: function get$$1() {\n return this.endKey && this.document.getNextInline(this.endKey);\n }\n\n /**\n * Get the previous inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'previousInline',\n get: function get$$1() {\n return this.startKey && this.document.getPreviousInline(this.startKey);\n }\n\n /**\n * Get the next text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'nextText',\n get: function get$$1() {\n return this.endKey && this.document.getNextText(this.endKey);\n }\n\n /**\n * Get the previous text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'previousText',\n get: function get$$1() {\n return this.startKey && this.document.getPreviousText(this.startKey);\n }\n\n /**\n * Get the characters in the current selection.\n *\n * @return {List<Character>}\n */\n\n }, {\n key: 'characters',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getCharactersAtRange(this.selection);\n }\n\n /**\n * Get the marks of the current selection.\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'marks',\n get: function get$$1() {\n return this.selection.isUnset ? new Set() : this.selection.marks || this.document.getMarksAtRange(this.selection);\n }\n\n /**\n * Get the active marks of the current selection.\n *\n * @return {Set<Mark>}\n */\n\n }, {\n key: 'activeMarks',\n get: function get$$1() {\n return this.selection.isUnset ? new Set() : this.selection.marks || this.document.getActiveMarksAtRange(this.selection);\n }\n\n /**\n * Get the block nodes in the current selection.\n *\n * @return {List<Block>}\n */\n\n }, {\n key: 'blocks',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getBlocksAtRange(this.selection);\n }\n\n /**\n * Get the fragment of the current selection.\n *\n * @return {Document}\n */\n\n }, {\n key: 'fragment',\n get: function get$$1() {\n return this.selection.isUnset ? Document.create() : this.document.getFragmentAtRange(this.selection);\n }\n\n /**\n * Get the inline nodes in the current selection.\n *\n * @return {List<Inline>}\n */\n\n }, {\n key: 'inlines',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getInlinesAtRange(this.selection);\n }\n\n /**\n * Get the text nodes in the current selection.\n *\n * @return {List<Text>}\n */\n\n }, {\n key: 'texts',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getTextsAtRange(this.selection);\n }\n\n /**\n * Check whether the selection is empty.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n if (this.isCollapsed) return true;\n if (this.endOffset != 0 && this.startOffset != 0) return false;\n return this.fragment.isEmpty;\n }\n\n /**\n * Check whether the selection is collapsed in a void node.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isInVoid',\n get: function get$$1() {\n if (this.isExpanded) return false;\n return this.document.hasVoidParent(this.startKey);\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Value` with `attrs`.\n *\n * @param {Object|Value} attrs\n * @param {Object} options\n * @return {Value}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (Value.isValue(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Value.fromJSON(attrs, options);\n }\n\n throw new Error('`Value.create` only accepts objects or values, but you passed it: ' + attrs);\n }\n\n /**\n * Create a dictionary of settable value properties from `attrs`.\n *\n * @param {Object|Value} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Value.isValue(a)) {\n return {\n data: a.data,\n decorations: a.decorations,\n schema: a.schema\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('data' in a) p.data = Data.create(a.data);\n if ('decorations' in a) p.decorations = Range.createList(a.decorations);\n if ('schema' in a) p.schema = Schema.create(a.schema);\n return p;\n }\n\n throw new Error('`Value.createProperties` only accepts objects or values, but you passed it: ' + a);\n }\n\n /**\n * Create a `Value` from a JSON `object`.\n *\n * @param {Object} object\n * @param {Object} options\n * @property {Boolean} normalize\n * @property {Array} plugins\n * @return {Value}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _object$document = object.document,\n document = _object$document === undefined ? {} : _object$document,\n _object$selection = object.selection,\n selection = _object$selection === undefined ? {} : _object$selection,\n _object$schema = object.schema,\n schema = _object$schema === undefined ? {} : _object$schema,\n _object$history = object.history,\n history = _object$history === undefined ? {} : _object$history;\n\n var data = new Map$1();\n document = Document.fromJSON(document);\n selection = Range.fromJSON(selection);\n schema = Schema.fromJSON(schema);\n history = History.fromJSON(history);\n\n // Allow plugins to set a default value for `data`.\n if (options.plugins) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = options.plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var plugin = _step.value;\n\n if (plugin.data) data = data.merge(plugin.data);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n // Then merge in the `data` provided.\n if ('data' in object) {\n data = data.merge(object.data);\n }\n\n if (selection.isUnset) {\n var text = document.getFirstText();\n if (text) selection = selection.collapseToStartOf(text);\n }\n\n selection = selection.normalize(document);\n\n var value = new Value({\n data: data,\n document: document,\n selection: selection,\n schema: schema,\n history: history\n });\n\n if (options.normalize !== false) {\n value = value.change({ save: false }).normalize().value;\n }\n\n return value;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isValue',\n\n\n /**\n * Check if a `value` is a `Value`.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n\n value: function isValue(value) {\n return !!(value && value[MODEL_TYPES.VALUE]);\n }\n }]);\n return Value;\n}(Record(DEFAULTS$11));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nValue.fromJS = Value.fromJSON;\nValue.prototype[MODEL_TYPES.VALUE] = true;\n\n/**\n * Operation attributes.\n *\n * @type {Array}\n */\n\nvar OPERATION_ATTRIBUTES = {\n add_mark: ['value', 'path', 'offset', 'length', 'mark'],\n insert_node: ['value', 'path', 'node'],\n insert_text: ['value', 'path', 'offset', 'text', 'marks'],\n merge_node: ['value', 'path', 'position', 'properties', 'target'],\n move_node: ['value', 'path', 'newPath'],\n remove_mark: ['value', 'path', 'offset', 'length', 'mark'],\n remove_node: ['value', 'path', 'node'],\n remove_text: ['value', 'path', 'offset', 'text', 'marks'],\n set_mark: ['value', 'path', 'offset', 'length', 'mark', 'properties'],\n set_node: ['value', 'path', 'node', 'properties'],\n set_selection: ['value', 'selection', 'properties'],\n set_value: ['value', 'properties'],\n split_node: ['value', 'path', 'position', 'properties', 'target']\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n};var DEFAULTS$12 = {\n length: undefined,\n mark: undefined,\n marks: undefined,\n newPath: undefined,\n node: undefined,\n offset: undefined,\n path: undefined,\n position: undefined,\n properties: undefined,\n selection: undefined,\n target: undefined,\n text: undefined,\n type: undefined,\n value: undefined\n\n /**\n * Operation.\n *\n * @type {Operation}\n */\n\n};\nvar Operation = function (_Record) {\n inherits(Operation, _Record);\n\n function Operation() {\n classCallCheck(this, Operation);\n return possibleConstructorReturn(this, (Operation.__proto__ || Object.getPrototypeOf(Operation)).apply(this, arguments));\n }\n\n createClass(Operation, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the operation.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var object = this.object,\n type = this.type;\n\n var json = { object: object, type: type };\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = ATTRIBUTES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n var value = this[key];\n\n // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n if (key == 'document') continue;\n if (key == 'selection') continue;\n if (key == 'value') continue;\n if (key == 'node' && type != 'insert_node') continue;\n\n if (key == 'mark' || key == 'marks' || key == 'node') {\n value = value.toJSON();\n }\n\n if (key == 'properties' && type == 'merge_node') {\n var v = {};\n if ('data' in value) v.data = value.data.toJS();\n if ('type' in value) v.type = value.type;\n value = v;\n }\n\n if (key == 'properties' && type == 'set_mark') {\n var _v = {};\n if ('data' in value) _v.data = value.data.toJS();\n if ('type' in value) _v.type = value.type;\n value = _v;\n }\n\n if (key == 'properties' && type == 'set_node') {\n var _v2 = {};\n if ('data' in value) _v2.data = value.data.toJS();\n if ('isVoid' in value) _v2.isVoid = value.isVoid;\n if ('type' in value) _v2.type = value.type;\n value = _v2;\n }\n\n if (key == 'properties' && type == 'set_selection') {\n var _v3 = {};\n if ('anchorOffset' in value) _v3.anchorOffset = value.anchorOffset;\n if ('anchorPath' in value) _v3.anchorPath = value.anchorPath && value.anchorPath.toJSON();\n if ('focusOffset' in value) _v3.focusOffset = value.focusOffset;\n if ('focusPath' in value) _v3.focusPath = value.focusPath && value.focusPath.toJSON();\n if ('isBackward' in value) _v3.isBackward = value.isBackward;\n if ('isFocused' in value) _v3.isFocused = value.isFocused;\n if ('marks' in value) _v3.marks = value.marks && value.marks.toJSON();\n value = _v3;\n }\n\n if (key == 'properties' && type == 'set_value') {\n var _v4 = {};\n if ('data' in value) _v4.data = value.data.toJS();\n if ('decorations' in value) _v4.decorations = value.decorations.toJS();\n if ('schema' in value) _v4.schema = value.schema.toJS();\n value = _v4;\n }\n\n if (key == 'properties' && type == 'split_node') {\n var _v5 = {};\n if ('data' in value) _v5.data = value.data.toJS();\n if ('type' in value) _v5.type = value.type;\n value = _v5;\n }\n\n json[key] = value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return json;\n }\n\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return 'operation';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Operation` with `attrs`.\n *\n * @param {Object|Array|List|String|Operation} attrs\n * @return {Operation}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Operation.isOperation(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Operation.fromJSON(attrs);\n }\n\n throw new Error('`Operation.create` only accepts objects or operations, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Operations` from `elements`.\n *\n * @param {Array<Operation|Object>|List<Operation|Object>} elements\n * @return {List<Operation>}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Operation.create));\n return list;\n }\n\n throw new Error('`Operation.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Operation` from a JSON `object`.\n *\n * @param {Object|Operation} object\n * @return {Operation}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Operation.isOperation(object)) {\n return object;\n }\n\n var type = object.type;\n\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n var attrs = { type: type };\n\n if (!ATTRIBUTES) {\n throw new Error('`Operation.fromJSON` was passed an unrecognized operation type: \"' + type + '\"');\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = ATTRIBUTES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n\n var v = object[key];\n\n if (v === undefined) {\n // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n if (key == 'document') continue;\n if (key == 'selection') continue;\n if (key == 'value') continue;\n if (key == 'node' && type != 'insert_node') continue;\n\n throw new Error('`Operation.fromJSON` was passed a \"' + type + '\" operation without the required \"' + key + '\" attribute.');\n }\n\n if (key === 'path' || key === 'newPath') {\n v = PathUtils.create(v);\n }\n\n if (key === 'mark') {\n v = Mark.create(v);\n }\n\n if (key === 'marks' && v != null) {\n v = Mark.createSet(v);\n }\n\n if (key === 'node') {\n v = Node.create(v);\n }\n\n if (key === 'selection') {\n v = Range.create(v);\n }\n\n if (key === 'value') {\n v = Value.create(v);\n }\n\n if (key === 'properties' && type === 'merge_node') {\n v = Node.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_mark') {\n v = Mark.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_node') {\n v = Node.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_selection') {\n v = Range.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_value') {\n v = Value.createProperties(v);\n }\n\n if (key === 'properties' && type === 'split_node') {\n v = Node.createProperties(v);\n }\n\n attrs[key] = v;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var node = new Operation(attrs);\n return node;\n }\n\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isOperation',\n\n\n /**\n * Check if `any` is a `Operation`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n value: function isOperation(any) {\n return !!(any && any[MODEL_TYPES.OPERATION]);\n }\n\n /**\n * Check if `any` is a list of operations.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isOperationList',\n value: function isOperationList(any) {\n return List.isList(any) && any.every(function (item) {\n return Operation.isOperation(item);\n });\n }\n }]);\n return Operation;\n}(Record(DEFAULTS$12));\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nOperation.fromJS = Operation.fromJSON;\nOperation.prototype[MODEL_TYPES.OPERATION] = true;\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$2 = Debug('slate:operation:invert');\n\n/**\n * Invert an `op`.\n *\n * @param {Object} op\n * @return {Object}\n */\n\nfunction invertOperation(op) {\n op = Operation.create(op);\n var _op = op,\n type = _op.type;\n\n debug$2(type, op);\n\n switch (type) {\n case 'insert_node':\n {\n var inverse = op.set('type', 'remove_node');\n return inverse;\n }\n\n case 'remove_node':\n {\n var _inverse = op.set('type', 'insert_node');\n return _inverse;\n }\n\n case 'move_node':\n {\n var _op2 = op,\n newPath = _op2.newPath,\n path = _op2.path;\n\n var inversePath = newPath;\n var inverseNewPath = path;\n\n var pathLast = path.size - 1;\n var newPathLast = newPath.size - 1;\n\n // If the node's old position was a left sibling of an ancestor of\n // its new position, we need to adjust part of the path by -1.\n if (path.size < inversePath.size && path.slice(0, pathLast).every(function (e, i) {\n return e == inversePath.get(i);\n }) && path.last() < inversePath.get(pathLast)) {\n inversePath = inversePath.slice(0, pathLast).concat(inversePath.get(pathLast) - 1).concat(inversePath.slice(pathLast + 1, inversePath.size));\n }\n\n // If the node's new position is an ancestor of the old position,\n // or a left sibling of an ancestor of its old position, we need\n // to adjust part of the path by 1.\n if (newPath.size < inverseNewPath.size && newPath.slice(0, newPathLast).every(function (e, i) {\n return e == inverseNewPath.get(i);\n }) && newPath.last() <= inverseNewPath.get(newPathLast)) {\n inverseNewPath = inverseNewPath.slice(0, newPathLast).concat(inverseNewPath.get(newPathLast) + 1).concat(inverseNewPath.slice(newPathLast + 1, inverseNewPath.size));\n }\n\n var _inverse2 = op.set('path', inversePath).set('newPath', inverseNewPath);\n return _inverse2;\n }\n\n case 'merge_node':\n {\n var _op3 = op,\n _path = _op3.path;\n\n var _inversePath = PathUtils.decrement(_path);\n var _inverse3 = op.set('type', 'split_node').set('path', _inversePath);\n return _inverse3;\n }\n\n case 'split_node':\n {\n var _op4 = op,\n _path2 = _op4.path;\n\n var _inversePath2 = PathUtils.increment(_path2);\n var _inverse4 = op.set('type', 'merge_node').set('path', _inversePath2);\n return _inverse4;\n }\n\n case 'set_node':\n {\n var _op5 = op,\n properties = _op5.properties,\n node = _op5.node;\n\n var inverseNode = node.merge(properties);\n var inverseProperties = pick(node, Object.keys(properties));\n var _inverse5 = op.set('node', inverseNode).set('properties', inverseProperties);\n return _inverse5;\n }\n\n case 'insert_text':\n {\n var _inverse6 = op.set('type', 'remove_text');\n return _inverse6;\n }\n\n case 'remove_text':\n {\n var _inverse7 = op.set('type', 'insert_text');\n return _inverse7;\n }\n\n case 'add_mark':\n {\n var _inverse8 = op.set('type', 'remove_mark');\n return _inverse8;\n }\n\n case 'remove_mark':\n {\n var _inverse9 = op.set('type', 'add_mark');\n return _inverse9;\n }\n\n case 'set_mark':\n {\n var _op6 = op,\n _properties = _op6.properties,\n mark = _op6.mark;\n\n var inverseMark = mark.merge(_properties);\n var _inverseProperties = pick(mark, Object.keys(_properties));\n var _inverse10 = op.set('mark', inverseMark).set('properties', _inverseProperties);\n return _inverse10;\n }\n\n case 'set_selection':\n {\n var _op7 = op,\n _properties2 = _op7.properties,\n selection = _op7.selection;\n\n var inverseSelection = selection.merge(_properties2);\n var inverseProps = pick(selection, Object.keys(_properties2));\n var _inverse11 = op.set('selection', inverseSelection).set('properties', inverseProps);\n return _inverse11;\n }\n\n case 'set_value':\n {\n var _op8 = op,\n _properties3 = _op8.properties,\n value = _op8.value;\n\n var inverseValue = value.merge(_properties3);\n var _inverseProperties2 = pick(value, Object.keys(_properties3));\n var _inverse12 = op.set('value', inverseValue).set('properties', _inverseProperties2);\n return _inverse12;\n }\n\n default:\n {\n throw new Error('Unknown operation type: \"' + type + '\".');\n }\n }\n}\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$3 = {};\n\n/**\n * Redo to the next value in the history.\n *\n * @param {Change} change\n */\n\nChanges$3.redo = function (change) {\n var value = change.value;\n var _value = value,\n history = _value.history;\n\n if (!history) return;\n\n var _history = history,\n undos = _history.undos,\n redos = _history.redos;\n\n var next = redos.peek();\n if (!next) return;\n\n // Shift the next value into the undo stack.\n redos = redos.pop();\n undos = undos.push(next);\n\n // Replay the next operations.\n next.forEach(function (op) {\n var _op = op,\n type = _op.type,\n properties = _op.properties;\n\n // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during redoing.\n\n if (type == 'set_selection') {\n op = op.set('properties', omit(properties, 'isFocused'));\n }\n\n change.applyOperation(op, { save: false });\n });\n\n // Update the history.\n value = change.value;\n history = history.set('undos', undos).set('redos', redos);\n value = value.set('history', history);\n change.value = value;\n};\n\n/**\n * Undo the previous operations in the history.\n *\n * @param {Change} change\n */\n\nChanges$3.undo = function (change) {\n var value = change.value;\n var _value2 = value,\n history = _value2.history;\n\n if (!history) return;\n\n var _history2 = history,\n undos = _history2.undos,\n redos = _history2.redos;\n\n var previous = undos.peek();\n if (!previous) return;\n\n // Shift the previous operations into the redo stack.\n undos = undos.pop();\n redos = redos.push(previous);\n\n // Replay the inverse of the previous operations.\n previous.slice().reverse().map(invertOperation).forEach(function (inverse) {\n var _inverse = inverse,\n type = _inverse.type,\n properties = _inverse.properties;\n\n // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during undoing.\n\n if (type == 'set_selection') {\n inverse = inverse.set('properties', omit(properties, 'isFocused'));\n }\n\n change.applyOperation(inverse, { save: false });\n });\n\n // Update the history.\n value = change.value;\n history = history.set('undos', undos).set('redos', redos);\n value = value.set('history', history);\n change.value = value;\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$4 = {};\n\n/**\n * Set `properties` on the selection.\n *\n * @param {Change} change\n * @param {Object} properties\n */\n\nChanges$4.select = function (change, properties) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n properties = Range.createProperties(properties);\n var _options$snapshot = options.snapshot,\n snapshot = _options$snapshot === undefined ? false : _options$snapshot;\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var props = {};\n var next = selection.merge(properties).normalize(document);\n\n // Re-compute the properties, to ensure that we get their normalized values.\n properties = pick(next, Object.keys(properties));\n\n // Remove any properties that are already equal to the current selection. And\n // create a dictionary of the previous values for all of the properties that\n // are being changed, for the inverse operation.\n for (var k in properties) {\n if (snapshot === true || !is(properties[k], selection[k])) {\n props[k] = properties[k];\n }\n }\n\n // If the selection moves, clear any marks, unless the new selection\n // properties change the marks in some way.\n if (selection.marks && !props.marks && (props.hasOwnProperty('anchorKey') || props.hasOwnProperty('anchorOffset') || props.hasOwnProperty('focusKey') || props.hasOwnProperty('focusOffset'))) {\n props.marks = null;\n }\n\n // If there are no new properties to set, abort to avoid extra operations.\n if (isEmpty(props)) {\n return;\n }\n\n change.applyOperation({\n type: 'set_selection',\n value: value,\n properties: props,\n selection: selection.toJSON()\n }, snapshot ? { skip: false, merge: false } : {});\n};\n\n/**\n * Select the whole document.\n *\n * @param {Change} change\n */\n\nChanges$4.selectAll = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var next = selection.moveToRangeOf(document);\n change.select(next);\n};\n\n/**\n * Snapshot the current selection.\n *\n * @param {Change} change\n */\n\nChanges$4.snapshotSelection = function (change) {\n var value = change.value;\n var selection = value.selection;\n\n change.select(selection, { snapshot: true });\n};\n\n/**\n * Move the anchor point backward, accounting for being at the start of a block.\n *\n * @param {Change} change\n */\n\nChanges$4.moveAnchorCharBackward = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n anchorText = value.anchorText,\n anchorBlock = value.anchorBlock;\n var anchorOffset = selection.anchorOffset;\n\n var previousText = document.getPreviousText(anchorText.key);\n var isInVoid = document.hasVoidParent(anchorText.key);\n var isPreviousInVoid = previousText && document.hasVoidParent(previousText.key);\n\n if (!isInVoid && anchorOffset > 0) {\n change.moveAnchor(-1);\n return;\n }\n\n if (!previousText) {\n return;\n }\n\n change.moveAnchorToEndOf(previousText);\n\n if (!isInVoid && !isPreviousInVoid && anchorBlock.hasNode(previousText.key)) {\n change.moveAnchor(-1);\n }\n};\n\n/**\n * Move the anchor point forward, accounting for being at the end of a block.\n *\n * @param {Change} change\n */\n\nChanges$4.moveAnchorCharForward = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n anchorText = value.anchorText,\n anchorBlock = value.anchorBlock;\n var anchorOffset = selection.anchorOffset;\n\n var nextText = document.getNextText(anchorText.key);\n var isInVoid = document.hasVoidParent(anchorText.key);\n var isNextInVoid = nextText && document.hasVoidParent(nextText.key);\n\n if (!isInVoid && anchorOffset < anchorText.text.length) {\n change.moveAnchor(1);\n return;\n }\n\n if (!nextText) {\n return;\n }\n\n change.moveAnchorToStartOf(nextText);\n\n if (!isInVoid && !isNextInVoid && anchorBlock.hasNode(nextText.key)) {\n change.moveAnchor(1);\n }\n};\n\n/**\n * Move the focus point backward, accounting for being at the start of a block.\n *\n * @param {Change} change\n */\n\nChanges$4.moveFocusCharBackward = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n focusText = value.focusText,\n focusBlock = value.focusBlock;\n var focusOffset = selection.focusOffset;\n\n var previousText = document.getPreviousText(focusText.key);\n var isInVoid = document.hasVoidParent(focusText.key);\n var isPreviousInVoid = previousText && document.hasVoidParent(previousText.key);\n\n if (!isInVoid && focusOffset > 0) {\n change.moveFocus(-1);\n return;\n }\n\n if (!previousText) {\n return;\n }\n\n change.moveFocusToEndOf(previousText);\n\n if (!isInVoid && !isPreviousInVoid && focusBlock.hasNode(previousText.key)) {\n change.moveFocus(-1);\n }\n};\n\n/**\n * Move the focus point forward, accounting for being at the end of a block.\n *\n * @param {Change} change\n */\n\nChanges$4.moveFocusCharForward = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n focusText = value.focusText,\n focusBlock = value.focusBlock;\n var focusOffset = selection.focusOffset;\n\n var nextText = document.getNextText(focusText.key);\n var isInVoid = document.hasVoidParent(focusText.key);\n var isNextInVoid = nextText && document.hasVoidParent(nextText.key);\n\n if (!isInVoid && focusOffset < focusText.text.length) {\n change.moveFocus(1);\n return;\n }\n\n if (!nextText) {\n return;\n }\n\n change.moveFocusToStartOf(nextText);\n\n if (!isInVoid && !isNextInVoid && focusBlock.hasNode(nextText.key)) {\n change.moveFocus(1);\n }\n};\n\n/**\n * Mix in move methods.\n */\n\nvar MOVE_DIRECTIONS = ['Forward', 'Backward'];\n\nMOVE_DIRECTIONS.forEach(function (direction$$1) {\n var anchor = 'moveAnchorChar' + direction$$1;\n var focus = 'moveFocusChar' + direction$$1;\n\n Changes$4['moveChar' + direction$$1] = function (change) {\n change[anchor]()[focus]();\n };\n\n Changes$4['moveStartChar' + direction$$1] = function (change) {\n if (change.value.isBackward) {\n change[focus]();\n } else {\n change[anchor]();\n }\n };\n\n Changes$4['moveEndChar' + direction$$1] = function (change) {\n if (change.value.isBackward) {\n change[anchor]();\n } else {\n change[focus]();\n }\n };\n\n Changes$4['extendChar' + direction$$1] = function (change) {\n change['moveFocusChar' + direction$$1]();\n };\n\n Changes$4['collapseChar' + direction$$1] = function (change) {\n var collapse = direction$$1 == 'Forward' ? 'collapseToEnd' : 'collapseToStart';\n change[collapse]()['moveChar' + direction$$1]();\n };\n});\n\n/**\n * Mix in alias methods.\n */\n\nvar ALIAS_METHODS$1 = [['collapseLineBackward', 'collapseToStartOfBlock'], ['collapseLineForward', 'collapseToEndOfBlock'], ['extendLineBackward', 'extendToStartOfBlock'], ['extendLineForward', 'extendToEndOfBlock']];\n\nALIAS_METHODS$1.forEach(function (_ref) {\n var _ref2 = slicedToArray(_ref, 2),\n alias = _ref2[0],\n method = _ref2[1];\n\n Changes$4[alias] = function (change) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n change[method].apply(change, [change].concat(args));\n };\n});\n\n/**\n * Mix in selection changes that are just a proxy for the selection method.\n */\n\nvar PROXY_TRANSFORMS$1 = ['blur', 'collapseTo', 'collapseToAnchor', 'collapseToEnd', 'collapseToEndOf', 'collapseToFocus', 'collapseToStart', 'collapseToStartOf', 'extend', 'extendTo', 'extendToEndOf', 'extendToStartOf', 'flip', 'focus', 'move', 'moveAnchor', 'moveAnchorOffsetTo', 'moveAnchorTo', 'moveAnchorToEndOf', 'moveAnchorToStartOf', 'moveEnd', 'moveEndOffsetTo', 'moveEndTo', 'moveFocus', 'moveFocusOffsetTo', 'moveFocusTo', 'moveFocusToEndOf', 'moveFocusToStartOf', 'moveOffsetsTo', 'moveStart', 'moveStartOffsetTo', 'moveStartTo', 'moveTo', 'moveToEnd', 'moveToEndOf', 'moveToRangeOf', 'moveToStart', 'moveToStartOf', 'deselect'];\n\nPROXY_TRANSFORMS$1.forEach(function (method) {\n Changes$4[method] = function (change) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var normalize = method != 'deselect';\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var next = selection[method].apply(selection, args);\n if (normalize) next = next.normalize(document);\n change.select(next);\n };\n});\n\n/**\n * Mix in node-related changes.\n */\n\nvar PREFIXES = ['moveTo', 'moveAnchorTo', 'moveFocusTo', 'moveStartTo', 'moveEndTo', 'collapseTo', 'extendTo'];\n\nvar DIRECTIONS = ['Next', 'Previous'];\n\nvar OBJECTS = ['Block', 'Inline', 'Text'];\n\nPREFIXES.forEach(function (prefix) {\n var edges = ['Start', 'End'];\n\n if (prefix == 'moveTo') {\n edges.push('Range');\n }\n\n edges.forEach(function (edge) {\n var method = '' + prefix + edge + 'Of';\n\n OBJECTS.forEach(function (object) {\n var getNode = object == 'Text' ? 'getNode' : 'getClosest' + object;\n\n Changes$4['' + method + object] = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var node = document[getNode](selection.startKey);\n if (!node) return;\n change[method](node);\n };\n\n DIRECTIONS.forEach(function (direction$$1) {\n var getDirectionNode = 'get' + direction$$1 + object;\n var directionKey = direction$$1 == 'Next' ? 'startKey' : 'endKey';\n\n Changes$4['' + method + direction$$1 + object] = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var node = document[getNode](selection[directionKey]);\n if (!node) return;\n var target = document[getDirectionNode](node.key);\n if (!target) return;\n change[method](target);\n };\n });\n });\n });\n});\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$5 = {};\n\n/**\n * Set `properties` on the value.\n *\n * @param {Change} change\n * @param {Object|Value} properties\n * @param {Object} options\n */\n\nChanges$5.setValue = function (change, properties) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n properties = Value.createProperties(properties);\n var value = change.value;\n\n\n change.applyOperation({\n type: 'set_value',\n properties: properties,\n value: value\n }, options);\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$6 = {};\n\n/**\n * Normalize the value with its schema.\n *\n * @param {Change} change\n */\n\nChanges$6.normalize = function (change, options) {\n change.normalizeDocument(options);\n};\n\n/**\n * Normalize the document with the value's schema.\n *\n * @param {Change} change\n */\n\nChanges$6.normalizeDocument = function (change, options) {\n var value = change.value;\n var document = value.document;\n\n change.normalizeNodeByKey(document.key, options);\n};\n\n/**\n * Normalize a `node` and its children with the value's schema.\n *\n * @param {Change} change\n * @param {Node|String} key\n */\n\nChanges$6.normalizeNodeByKey = function (change, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var normalize = change.getFlag('normalize', options);\n if (!normalize) return;\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var node = document.assertNode(key);\n\n normalizeNodeAndChildren(change, node, schema);\n\n change.normalizeAncestorsByKey(key);\n};\n\n/**\n * Normalize a node's ancestors by `key`.\n *\n * @param {Change} change\n * @param {String} key\n */\n\nChanges$6.normalizeAncestorsByKey = function (change, key) {\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var ancestors = document.getAncestors(key);\n if (!ancestors) return;\n\n ancestors.forEach(function (ancestor) {\n if (change.value.document.getDescendant(ancestor.key)) {\n normalizeNode(change, ancestor, schema);\n }\n });\n};\n\nChanges$6.normalizeParentByKey = function (change, key, options) {\n var value = change.value;\n var document = value.document;\n\n var parent = document.getParent(key);\n change.normalizeNodeByKey(parent.key, options);\n};\n\n/**\n * Normalize a `node` and its children with the value's schema.\n *\n * @param {Change} change\n * @param {Array} path\n */\n\nChanges$6.normalizeNodeByPath = function (change, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var normalize = change.getFlag('normalize', options);\n if (!normalize) return;\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var node = document.assertNode(path);\n\n normalizeNodeAndChildren(change, node, schema);\n\n document = change.value.document;\n var ancestors = document.getAncestors(path);\n if (!ancestors) return;\n\n ancestors.forEach(function (ancestor) {\n if (change.value.document.getDescendant(ancestor.key)) {\n normalizeNode(change, ancestor, schema);\n }\n });\n};\n\nChanges$6.normalizeParentByPath = function (change, path, options) {\n var p = PathUtils.lift(path);\n change.normalizeNodeByPath(p, options);\n};\n\n/**\n * Normalize a `node` and its children with a `schema`.\n *\n * @param {Change} change\n * @param {Node} node\n * @param {Schema} schema\n */\n\nfunction normalizeNodeAndChildren(change, node, schema) {\n if (node.object == 'text') {\n normalizeNode(change, node, schema);\n return;\n }\n\n var child = node.getFirstInvalidDescendant(schema);\n var path = change.value.document.getPath(node.key);\n\n while (node && child) {\n normalizeNodeAndChildren(change, child, schema);\n node = change.value.document.refindNode(path, node.key);\n\n if (!node) {\n path = [];\n child = null;\n } else {\n path = change.value.document.refindPath(path, node.key);\n child = node.getFirstInvalidDescendant(schema);\n }\n }\n\n // Normalize the node itself if it still exists.\n if (node) {\n normalizeNode(change, node, schema);\n }\n}\n\n/**\n * Normalize a `node` with a `schema`, but not its children.\n *\n * @param {Change} change\n * @param {Node} node\n * @param {Schema} schema\n */\n\nfunction normalizeNode(change, node, schema) {\n var max = schema.stack.plugins.length + schema.rules.length + 1;\n var iterations = 0;\n\n function iterate(c, n) {\n var normalize = n.normalize(schema);\n if (!normalize) return;\n\n // Run the `normalize` function to fix the node.\n var path = c.value.document.getPath(n.key);\n normalize(c);\n\n // Re-find the node reference, in case it was updated. If the node no longer\n // exists, we're done for this branch.\n n = c.value.document.refindNode(path, n.key);\n if (!n) return;\n\n path = c.value.document.refindPath(path, n.key);\n\n // Increment the iterations counter, and check to make sure that we haven't\n // exceeded the max. Without this check, it's easy for the `normalize`\n // function of a schema rule to be written incorrectly and for an infinite\n // invalid loop to occur.\n iterations++;\n\n if (iterations > max) {\n throw new Error('A schema rule could not be normalized after sufficient iterations. This is usually due to a `rule.normalize` or `plugin.normalizeNode` function of a schema being incorrectly written, causing an infinite loop.');\n }\n\n // Otherwise, iterate again.\n iterate(c, n);\n }\n\n iterate(change, node);\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar Changes$7 = _extends({}, Changes, Changes$1, Changes$2, Changes$3, Changes$4, Changes$5, Changes$6);\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$3 = Debug('slate:operation:apply');\n\n/**\n * Apply an `op` to a `value`.\n *\n * @param {Value} value\n * @param {Object|Operation} op\n * @return {Value} value\n */\n\nfunction applyOperation(value, op) {\n op = Operation.create(op);\n var _op = op,\n type = _op.type;\n\n debug$3(type, op);\n\n switch (type) {\n case 'add_mark':\n {\n var _op2 = op,\n path = _op2.path,\n offset = _op2.offset,\n length = _op2.length,\n mark = _op2.mark;\n\n var next = value.addMark(path, offset, length, mark);\n return next;\n }\n\n case 'insert_node':\n {\n var _op3 = op,\n _path = _op3.path,\n node = _op3.node;\n\n var _next = value.insertNode(_path, node);\n return _next;\n }\n\n case 'insert_text':\n {\n var _op4 = op,\n _path2 = _op4.path,\n _offset = _op4.offset,\n text = _op4.text,\n marks = _op4.marks;\n\n var _next2 = value.insertText(_path2, _offset, text, marks);\n return _next2;\n }\n\n case 'merge_node':\n {\n var _op5 = op,\n _path3 = _op5.path;\n\n var _next3 = value.mergeNode(_path3);\n return _next3;\n }\n\n case 'move_node':\n {\n var _op6 = op,\n _path4 = _op6.path,\n newPath = _op6.newPath;\n\n var _next4 = value.moveNode(_path4, newPath);\n return _next4;\n }\n\n case 'remove_mark':\n {\n var _op7 = op,\n _path5 = _op7.path,\n _offset2 = _op7.offset,\n _length = _op7.length,\n _mark = _op7.mark;\n\n var _next5 = value.removeMark(_path5, _offset2, _length, _mark);\n return _next5;\n }\n\n case 'remove_node':\n {\n var _op8 = op,\n _path6 = _op8.path;\n\n var _next6 = value.removeNode(_path6);\n return _next6;\n }\n\n case 'remove_text':\n {\n var _op9 = op,\n _path7 = _op9.path,\n _offset3 = _op9.offset,\n _text = _op9.text;\n\n var _next7 = value.removeText(_path7, _offset3, _text);\n return _next7;\n }\n\n case 'set_mark':\n {\n var _op10 = op,\n _path8 = _op10.path,\n _offset4 = _op10.offset,\n _length2 = _op10.length,\n _mark2 = _op10.mark,\n properties = _op10.properties;\n\n var _next8 = value.setMark(_path8, _offset4, _length2, _mark2, properties);\n return _next8;\n }\n\n case 'set_node':\n {\n var _op11 = op,\n _path9 = _op11.path,\n _properties = _op11.properties;\n\n var _next9 = value.setNode(_path9, _properties);\n return _next9;\n }\n\n case 'set_selection':\n {\n var _op12 = op,\n _properties2 = _op12.properties;\n\n var _next10 = value.setSelection(_properties2);\n return _next10;\n }\n\n case 'set_value':\n {\n var _op13 = op,\n _properties3 = _op13.properties;\n\n var _next11 = value.merge(_properties3);\n return _next11;\n }\n\n case 'split_node':\n {\n var _op14 = op,\n _path10 = _op14.path,\n position = _op14.position,\n _properties4 = _op14.properties;\n\n var _next12 = value.splitNode(_path10, position, _properties4);\n return _next12;\n }\n\n default:\n {\n throw new Error('Unknown operation type: \"' + type + '\".');\n }\n }\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$4 = Debug('slate:change');\n\n/**\n * Change.\n *\n * @type {Change}\n */\n\nvar Change = function () {\n\n /**\n * Create a new `Change` with `attrs`.\n *\n * @param {Object} attrs\n * @property {Value} value\n */\n\n function Change(attrs) {\n classCallCheck(this, Change);\n var value = attrs.value;\n\n this.value = value;\n this.operations = new List();\n\n this.flags = _extends({\n normalize: true\n }, pick(attrs, ['merge', 'save', 'normalize']));\n }\n\n /**\n * Object.\n *\n * @return {String}\n */\n\n /**\n * Check if `any` is a `Change`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n createClass(Change, [{\n key: 'applyOperation',\n\n\n /**\n * Apply an `operation` to the current value, saving the operation to the\n * history if needed.\n *\n * @param {Operation|Object} operation\n * @param {Object} options\n * @return {Change}\n */\n\n value: function applyOperation$$1(operation) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var operations = this.operations,\n flags = this.flags;\n var value = this.value;\n var _value = value,\n history = _value.history;\n\n // Add in the current `value` in case the operation was serialized.\n\n if (isPlainObject(operation)) {\n operation = _extends({}, operation, { value: value });\n }\n\n operation = Operation.create(operation);\n\n // Default options to the change-level flags, this allows for setting\n // specific options for all of the operations of a given change.\n options = _extends({}, flags, options);\n\n // Derive the default option values.\n var _options = options,\n _options$merge = _options.merge,\n merge = _options$merge === undefined ? operations.size == 0 ? null : true : _options$merge,\n _options$save = _options.save,\n save = _options$save === undefined ? true : _options$save,\n _options$skip = _options.skip,\n skip = _options$skip === undefined ? null : _options$skip;\n\n // Apply the operation to the value.\n\n debug$4('apply', { operation: operation, save: save, merge: merge });\n value = applyOperation(value, operation);\n\n // If needed, save the operation to the history.\n if (history && save) {\n history = history.save(operation, { merge: merge, skip: skip });\n value = value.set('history', history);\n }\n\n // Update the mutable change object.\n this.value = value;\n this.operations = operations.push(operation);\n return this;\n }\n\n /**\n * Apply a series of `operations` to the current value.\n *\n * @param {Array|List} operations\n * @param {Object} options\n * @return {Change}\n */\n\n }, {\n key: 'applyOperations',\n value: function applyOperations(operations, options) {\n var _this = this;\n\n operations.forEach(function (op) {\n return _this.applyOperation(op, options);\n });\n return this;\n }\n\n /**\n * Call a change `fn` with arguments.\n *\n * @param {Function} fn\n * @param {Mixed} ...args\n * @return {Change}\n */\n\n }, {\n key: 'call',\n value: function call(fn) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n fn.apply(undefined, [this].concat(args));\n return this;\n }\n\n /**\n * Applies a series of change mutations, deferring normalization to the end.\n *\n * @param {Function} fn\n * @return {Change}\n */\n\n }, {\n key: 'withoutNormalization',\n value: function withoutNormalization(fn) {\n var original = this.flags.normalize;\n this.setOperationFlag('normalize', false);\n fn(this);\n this.setOperationFlag('normalize', original);\n this.normalizeDocument();\n return this;\n }\n\n /**\n * Set an operation flag by `key` to `value`.\n *\n * @param {String} key\n * @param {Any} value\n * @return {Change}\n */\n\n }, {\n key: 'setOperationFlag',\n value: function setOperationFlag(key, value) {\n this.flags[key] = value;\n return this;\n }\n\n /**\n * Get the `value` of the specified flag by its `key`. Optionally accepts an `options`\n * object with override flags.\n *\n * @param {String} key\n * @param {Object} options\n * @return {Change}\n */\n\n }, {\n key: 'getFlag',\n value: function getFlag(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return options[key] !== undefined ? options[key] : this.flags[key];\n }\n\n /**\n * Unset an operation flag by `key`.\n *\n * @param {String} key\n * @return {Change}\n */\n\n }, {\n key: 'unsetOperationFlag',\n value: function unsetOperationFlag(key) {\n delete this.flags[key];\n return this;\n }\n }, {\n key: 'object',\n get: function get$$1() {\n return 'change';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n logger.deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }]);\n return Change;\n}();\n\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\nChange.isChange = isType.bind(null, 'CHANGE');\nChange.prototype[MODEL_TYPES.CHANGE] = true;\n\n/**\n * Add a change method for each of the changes.\n */\n\nObject.keys(Changes$7).forEach(function (type) {\n Change.prototype[type] = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n debug$4(type, { args: args });\n this.call.apply(this, [Changes$7[type]].concat(args));\n return this;\n };\n});\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar Operations = {\n apply: applyOperation,\n invert: invertOperation\n};\n\nfunction setKeyGenerator(fn) {\n logger.deprecate('0.35.0', 'The `setKeyGenerator()` util is deprecrated. Use the `KeyUtils.setGenerator()` helper instead.');\n\n return KeyUtils.setGenerator(fn);\n}\n\nfunction resetKeyGenerator() {\n logger.deprecate('0.35.0', 'The `resetKeyGenerator()` util is deprecrated. Use the `KeyUtils.resetGenerator()` helper instead.');\n\n return KeyUtils.resetGenerator();\n}\n\nvar index = {\n Block: Block,\n Changes: Changes$7,\n Character: Character,\n Data: Data,\n Document: Document,\n History: History,\n Inline: Inline,\n KeyUtils: KeyUtils,\n Leaf: Leaf,\n Mark: Mark,\n Node: Node,\n Operation: Operation,\n Operations: Operations,\n PathUtils: PathUtils,\n Range: Range,\n resetKeyGenerator: resetKeyGenerator,\n resetMemoization: resetMemoization,\n Schema: Schema,\n setKeyGenerator: setKeyGenerator,\n Stack: Stack$1,\n Text: Text,\n TextUtils: TextUtils,\n useMemoization: useMemoization,\n Value: Value\n};\n\nexport default index;\nexport { Block, Change, Changes$7 as Changes, Character, Data, Document, History, Inline, KeyUtils, Leaf, Mark, Node, Operation, Operations, PathUtils, Range, resetKeyGenerator, resetMemoization, Schema, setKeyGenerator, Stack$1 as Stack, Text, TextUtils, useMemoization, Value };\n//# sourceMappingURL=slate.es.js.map\n","import React from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport typeOf from 'type-of';\nimport { Node, Value } from 'slate';\nimport { Record } from 'immutable';\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * String.\n *\n * @type {String}\n */\n\nvar String = new Record({\n object: 'string',\n text: ''\n});\n\n/**\n * A rule to (de)serialize text nodes. This is automatically added to the HTML\n * serializer so that users don't have to worry about text-level serialization.\n *\n * @type {Object}\n */\n\nvar TEXT_RULE = {\n deserialize: function deserialize(el) {\n if (el.tagName && el.tagName.toLowerCase() === 'br') {\n return {\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: '\\n'\n }]\n };\n }\n\n if (el.nodeName == '#text') {\n if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;\n\n return {\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: el.nodeValue\n }]\n };\n }\n },\n serialize: function serialize(obj, children) {\n if (obj.object === 'string') {\n return children.split('\\n').reduce(function (array, text, i) {\n if (i != 0) array.push(React.createElement('br', { key: i }));\n array.push(text);\n return array;\n }, []);\n }\n }\n};\n\n/**\n * A default `parseHtml` function that returns the `<body>` using `DOMParser`.\n *\n * @param {String} html\n * @return {Object}\n */\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');\n }\n\n var parsed = new DOMParser().parseFromString(html, 'text/html');\n var body = parsed.body;\n // COMPAT: in IE 11 body is null if html is an empty string\n\n return body || window.document.createElement('body');\n}\n\n/**\n * HTML serializer.\n *\n * @type {Html}\n */\n\nvar Html =\n/**\n * Create a new serializer with `rules`.\n *\n * @param {Object} options\n * @property {Array} rules\n * @property {String|Object|Block} defaultBlock\n * @property {Function} parseHtml\n */\n\nfunction Html() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, Html);\n\n _initialiseProps.call(this);\n\n var _options$defaultBlock = options.defaultBlock,\n defaultBlock = _options$defaultBlock === undefined ? 'paragraph' : _options$defaultBlock,\n _options$parseHtml = options.parseHtml,\n parseHtml = _options$parseHtml === undefined ? defaultParseHtml : _options$parseHtml,\n _options$rules = options.rules,\n rules = _options$rules === undefined ? [] : _options$rules;\n\n\n defaultBlock = Node.createProperties(defaultBlock);\n\n this.rules = [].concat(toConsumableArray(rules), [TEXT_RULE]);\n this.defaultBlock = defaultBlock;\n this.parseHtml = parseHtml;\n};\n\n/**\n * Add a unique key to a React `element`.\n *\n * @param {Element} element\n * @return {Element}\n */\n\nvar _initialiseProps = function _initialiseProps() {\n var _this = this;\n\n this.deserialize = function (html) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$toJSON = options.toJSON,\n toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n var defaultBlock = _this.defaultBlock,\n parseHtml = _this.parseHtml;\n\n var fragment = parseHtml(html);\n var children = Array.from(fragment.childNodes);\n var nodes = _this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function (memo, node, i, original) {\n if (node.object == 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object != 'block') {\n var _block = memo[memo.length - 1];\n _block.nodes.push(node);\n return memo;\n }\n\n var block = _extends({\n object: 'block',\n data: {},\n isVoid: false\n }, defaultBlock, {\n nodes: [node]\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n // TODO: pretty sure this is no longer needed.\n if (nodes.length == 0) {\n nodes = [_extends({\n object: 'block',\n data: {},\n isVoid: false\n }, defaultBlock, {\n nodes: [{\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: '',\n marks: []\n }]\n }]\n })];\n }\n\n var json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes\n }\n };\n\n var ret = toJSON ? json : Value.fromJSON(json);\n return ret;\n };\n\n this.deserializeElements = function () {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var nodes = [];\n\n elements.filter(_this.cruftNewline).forEach(function (element) {\n var node = _this.deserializeElement(element);\n\n switch (typeOf(node)) {\n case 'array':\n nodes = nodes.concat(node);\n break;\n case 'object':\n nodes.push(node);\n break;\n }\n });\n\n return nodes;\n };\n\n this.deserializeElement = function (element) {\n var node = void 0;\n\n if (!element.tagName) {\n element.tagName = '';\n }\n\n var next = function next(elements) {\n if (Object.prototype.toString.call(elements) == '[object NodeList]') {\n elements = Array.from(elements);\n }\n\n switch (typeOf(elements)) {\n case 'array':\n return _this.deserializeElements(elements);\n case 'object':\n return _this.deserializeElement(elements);\n case 'null':\n case 'undefined':\n return;\n default:\n throw new Error('The `next` argument was called with invalid children: \"' + elements + '\".');\n }\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _this.rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (!rule.deserialize) continue;\n var ret = rule.deserialize(element, next);\n var type = typeOf(ret);\n\n if (type != 'array' && type != 'object' && type != 'null' && type != 'undefined') {\n throw new Error('A rule returned an invalid deserialized representation: \"' + node + '\".');\n }\n\n if (ret === undefined) {\n continue;\n } else if (ret === null) {\n return null;\n } else if (ret.object == 'mark') {\n node = _this.deserializeMark(ret);\n } else {\n node = ret;\n }\n\n break;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return node || next(element.childNodes);\n };\n\n this.deserializeMark = function (mark) {\n var type = mark.type,\n data = mark.data;\n\n\n var applyMark = function applyMark(node) {\n if (node.object == 'mark') {\n return _this.deserializeMark(node);\n } else if (node.object == 'text') {\n node.leaves = node.leaves.map(function (leaf) {\n leaf.marks = leaf.marks || [];\n leaf.marks.push({ type: type, data: data });\n return leaf;\n });\n } else if (node.nodes) {\n node.nodes = node.nodes.map(applyMark);\n }\n\n return node;\n };\n\n return mark.nodes.reduce(function (nodes, node) {\n var ret = applyMark(node);\n if (Array.isArray(ret)) return nodes.concat(ret);\n nodes.push(ret);\n return nodes;\n }, []);\n };\n\n this.serialize = function (value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var document = value.document;\n\n var elements = document.nodes.map(_this.serializeNode).filter(function (el) {\n return el;\n });\n if (options.render === false) return elements;\n\n var html = renderToStaticMarkup(React.createElement(\n 'body',\n null,\n elements\n ));\n var inner = html.slice(6, -7);\n return inner;\n };\n\n this.serializeNode = function (node) {\n if (node.object === 'text') {\n var leaves = node.getLeaves();\n return leaves.map(_this.serializeLeaf);\n }\n\n var children = node.nodes.map(_this.serializeNode);\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _this.rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var rule = _step2.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(node, children);\n if (ret === null) return;\n if (ret) return addKey(ret);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n throw new Error('No serializer defined for node of type \"' + node.type + '\".');\n };\n\n this.serializeLeaf = function (leaf) {\n var string = new String({ text: leaf.text });\n var text = _this.serializeString(string);\n\n return leaf.marks.reduce(function (children, mark) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = _this.rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var rule = _step3.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(mark, children);\n if (ret === null) return;\n if (ret) return addKey(ret);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n throw new Error('No serializer defined for mark of type \"' + mark.type + '\".');\n }, text);\n };\n\n this.serializeString = function (string) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = _this.rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var rule = _step4.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(string, string.text);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n };\n\n this.cruftNewline = function (element) {\n return !(element.nodeName === '#text' && element.nodeValue == '\\n');\n };\n};\n\nvar key = 0;\n\nfunction addKey(element) {\n return React.cloneElement(element, { key: key++ });\n}\n\nexport default Html;\n//# sourceMappingURL=slate-html-serializer.es.js.map\n","import Html from 'slate-html-serializer';\nimport { object as toStyleObject } from 'to-style';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:mask-markup:serialization');\n\nconst INLINE = ['span'];\nconst MARK = ['em', 'strong', 'u'];\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\n\nconst attr = (el) => {\n if (!el.attributes || el.attributes.length <= 0) {\n return undefined;\n }\n\n const out = {};\n let i;\n\n for (i = 0; i < el.attributes.length; i++) {\n const a = el.attributes[i];\n\n out[a.name] = a.value;\n }\n\n return out;\n};\n\nconst getObject = (type) => {\n if (INLINE.includes(type)) {\n return 'inline';\n } else if (MARK.includes(type)) {\n return 'mark';\n }\n return 'block';\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 handleStyles = (el, attribute) => {\n const styleString = el.getAttribute(attribute);\n\n return reactAttributes(parseStyleString(styleString));\n};\n\nconst handleClass = (el, acc, attribute) => {\n const classNames = el.getAttribute(attribute);\n\n delete acc.class;\n\n return classNames;\n};\n\nconst attributesToMap = (el) => (acc, attribute) => {\n if (!el.getAttribute) {\n return acc;\n }\n\n const value = el.getAttribute(attribute);\n\n if (value) {\n switch (attribute) {\n case 'style':\n acc.style = handleStyles(el, attribute);\n break;\n case 'class':\n acc.className = handleClass(el, acc, attribute);\n break;\n default:\n acc[attribute] = el.getAttribute(attribute);\n break;\n }\n }\n\n return acc;\n};\n\nconst attributes = ['border', 'class', 'style'];\n\n/**\n * Tags to marks.\n *\n * @type {Object}\n */\n\nexport const MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: 'strikethrough',\n code: 'code',\n strong: 'strong',\n};\n\nconst marks = {\n deserialize(el, next) {\n const mark = MARK_TAGS[el.tagName.toLowerCase()];\n if (!mark) return;\n log('[deserialize] mark: ', mark);\n return {\n object: 'mark',\n type: mark,\n nodes: next(el.childNodes),\n };\n },\n};\n\nconst rules = [\n marks,\n {\n /**\n * deserialize everything, we're not fussy about the dom structure for now.\n */\n deserialize: (el, next) => {\n if (el.nodeType === COMMENT_NODE) {\n return undefined;\n }\n\n if (el.nodeType === TEXT_NODE) {\n return {\n object: 'text',\n leaves: [{ text: el.textContent }],\n };\n }\n\n const type = el.tagName.toLowerCase();\n\n const normalAttrs = attr(el) || {};\n\n if (type == 'audio' && normalAttrs.controls == '') {\n normalAttrs.controls = true;\n }\n\n const allAttrs = attributes.reduce(attributesToMap(el), { ...normalAttrs });\n const object = getObject(type);\n\n if (el.tagName.toLowerCase() === 'math') {\n return {\n isMath: true,\n nodes: [el],\n };\n }\n\n return {\n object,\n type,\n data: { dataset: { ...el.dataset }, attributes: { ...allAttrs } },\n nodes: next(el.childNodes),\n };\n },\n },\n];\n\n/**\n * Create a new serializer instance with our `rules` from above.\n * Having a default div block will just put every div on it's own line, which is not ideal.\n */\nconst html = new Html({ rules, defaultBlock: 'span' });\n\nexport const deserialize = (s) => html.deserialize(s, { toJSON: true });\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport { withStyles } from '@material-ui/core/styles';\nimport { MARK_TAGS } from './serialization';\nimport cx from 'classnames';\n\nconst Paragraph = withStyles((theme) => ({\n para: {\n paddingTop: 2 * theme.spacing.unit,\n paddingBottom: 2 * theme.spacing.unit,\n },\n}))((props) => <div className={props.classes.para}>{props.children}</div>);\n\nconst Spacer = withStyles(() => ({\n spacer: {\n display: 'inline-block',\n width: '.75em',\n },\n}))((props) => <span className={props.classes.spacer} />);\n\nconst restrictWhitespaceTypes = ['tbody', 'tr'];\n\nconst addText = (parentNode, text) => {\n const isWhitespace = text.trim() === '';\n const parentType = parentNode && parentNode.type;\n\n if (isWhitespace && restrictWhitespaceTypes.includes(parentType)) {\n return undefined;\n } else {\n return text;\n }\n};\n\nconst getMark = (n) => {\n const mark = n.leaves.find((leave) => get(leave, 'marks', []).length);\n\n if (mark) {\n return mark.marks[0];\n }\n\n return null;\n};\n\nexport const renderChildren = (layout, value, onChange, rootRenderChildren, parentNode, elementType) => {\n if (!value) {\n return null;\n }\n\n const children = [];\n\n (layout.nodes || []).forEach((n, index) => {\n const key = n.type ? `${n.type}-${index}` : `${index}`;\n\n if (n.isMath) {\n children.push(\n <span\n dangerouslySetInnerHTML={{\n __html: `<math displaystyle=\"true\">${n.nodes[0].innerHTML}</math>`,\n }}\n />,\n );\n return children;\n }\n\n if (rootRenderChildren) {\n const c = rootRenderChildren(n, value, onChange);\n if (c) {\n children.push(c);\n if (parentNode?.type !== 'td' && elementType === 'drag-in-the-blank') {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n return;\n }\n }\n\n if (n.object === 'text') {\n const content = n.leaves.reduce((acc, l) => {\n const t = l.text;\n const extraText = addText(parentNode, t);\n return extraText ? acc + extraText : acc;\n }, '');\n const mark = getMark(n);\n\n if (mark) {\n let markKey;\n\n for (markKey in MARK_TAGS) {\n if (MARK_TAGS[markKey] === mark.type) {\n const Tag = markKey;\n\n children.push(<Tag key={key}>{content}</Tag>);\n break;\n }\n }\n } else if (content.length > 0) {\n children.push(content);\n if (parentNode?.type !== 'td' && elementType === 'drag-in-the-blank') {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n }\n } else {\n const subNodes = renderChildren(n, value, onChange, rootRenderChildren, n, elementType);\n if (n.type === 'p' || n.type === 'paragraph') {\n children.push(<Paragraph key={key}>{subNodes}</Paragraph>);\n } else {\n const Tag = n.type;\n if (n.nodes && n.nodes.length > 0) {\n children.push(\n <Tag key={key} {...n.data.attributes}>\n {subNodes}\n </Tag>,\n );\n } else {\n children.push(<Tag key={key} {...n.data.attributes} />);\n }\n }\n }\n });\n return children;\n};\n\nconst MaskContainer = withStyles(() => ({\n main: {\n display: 'initial',\n },\n tableStyle: {\n '&:not(.MathJax) table': {\n borderCollapse: 'collapse',\n },\n // align table content to left as per STAR requirement PD-3687\n '&:not(.MathJax) table td, &:not(.MathJax) table th': {\n padding: '8px 12px',\n textAlign: 'left',\n },\n },\n}))((props) => <div className={cx(props.classes.main, props.classes.tableStyle)}>{props.children}</div>);\n\n/**\n * Renders a layout that uses the slate.js Value model structure.\n */\nexport default class Mask extends React.Component {\n static propTypes = {\n renderChildren: PropTypes.func,\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n elementType: PropTypes.string,\n };\n\n handleChange = (id, value) => {\n const data = { ...this.props.value, [id]: value };\n this.props.onChange(data);\n };\n\n render() {\n const { value, layout, elementType } = this.props;\n const children = renderChildren(layout, value, this.handleChange, this.props.renderChildren, null, elementType);\n\n return <MaskContainer>{children}</MaskContainer>;\n }\n}\n","const REGEX = /\\{\\{(\\d+)\\}\\}/g;\n\nexport default (s, t) => {\n if (!s) {\n return { markup: '' };\n }\n\n const markup = s.replace(REGEX, (match, g) => {\n return `<span data-component=\"${t}\" data-id=\"${g}\"></span>`;\n });\n\n return { markup };\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport Mask from './mask';\nimport componentize from './componentize';\nimport { deserialize } from './serialization';\n\nexport const buildLayoutFromMarkup = (markup, type) => {\n const { markup: processed } = componentize(markup, type);\n const value = deserialize(processed);\n return value.document;\n};\n\nexport const withMask = (type, renderChildren) => {\n return class WithMask extends React.Component {\n static propTypes = {\n /**\n * At the start we'll probably work with markup\n */\n markup: PropTypes.string,\n /**\n * Once we start authoring, it may make sense for use to us layout, which will be a simple js object that maps to `slate.Value`.\n */\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n customMarkMarkupComponent: PropTypes.func,\n elementType: PropTypes.string,\n };\n\n componentDidUpdate(prevProps) {\n if (this.props.markup !== prevProps.markup) {\n // eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n // Query all elements that may contain outdated MathJax renderings\n const mathElements = domNode && domNode.querySelectorAll('[data-latex][data-math-handled=\"true\"]');\n\n // Clean up for fresh MathJax processing\n (mathElements || []).forEach((el) => {\n // Remove the MathJax container to allow for clean updates\n const mjxContainer = el.querySelector('mjx-container');\n\n if (mjxContainer) {\n el.removeChild(mjxContainer);\n }\n\n // Update the innerHTML to match the raw LaTeX data, ensuring it is reprocessed correctly\n const latexCode = el.getAttribute('data-raw');\n el.innerHTML = latexCode;\n\n // Remove the attribute to signal that MathJax should reprocess this element\n el.removeAttribute('data-math-handled');\n });\n }\n }\n\n render() {\n const { markup, layout, value, onChange, elementType } = this.props;\n\n const maskLayout = layout ? layout : buildLayoutFromMarkup(markup, type);\n return (\n <Mask\n elementType={elementType}\n layout={maskLayout}\n value={value}\n onChange={onChange}\n renderChildren={renderChildren(this.props)}\n />\n );\n }\n };\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\nimport classnames from 'classnames';\n\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { color } from '@pie-lib/render-ui';\nimport { DragSource } from '@pie-lib/drag';\n\nexport const DRAG_TYPE = 'MaskBlank';\n\nclass BlankContentComp extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n choice: PropTypes.object,\n classes: PropTypes.object,\n connectDragSource: PropTypes.func,\n };\n\n startDrag = () => {\n const { connectDragSource, disabled } = this.props;\n if (!disabled) {\n connectDragSource(this.dragContainerRef);\n }\n };\n\n // start drag after 500ms (touch and hold duration) for chromebooks and other touch devices PD-4888\n handleTouchStart = (e) => {\n e.preventDefault();\n this.longPressTimer = setTimeout(() => {\n this.startDrag(e);\n }, 500);\n };\n\n handleTouchEnd = () => {\n clearTimeout(this.longPressTimer);\n };\n\n handleTouchMove = () => {\n clearTimeout(this.longPressTimer);\n };\n\n componentDidMount() {\n if (this.dragContainerRef) {\n this.dragContainerRef.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n this.dragContainerRef.addEventListener('touchend', this.handleTouchEnd);\n this.dragContainerRef.addEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n componentWillUnmount() {\n if (this.dragContainerRef) {\n this.dragContainerRef.removeEventListener('touchstart', this.handleTouchStart);\n this.dragContainerRef.removeEventListener('touchend', this.handleTouchEnd);\n this.dragContainerRef.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n componentDidUpdate() {\n renderMath(this.rootRef);\n }\n\n render() {\n const { connectDragSource, choice, classes, disabled } = this.props;\n\n // TODO the Chip element is causing drag problems on touch devices. Avoid using Chip and consider refactoring the code. Keep in mind that Chip is a span with a button role, which interferes with seamless touch device dragging.\n\n return connectDragSource(\n <span\n className={classnames(classes.choice, disabled && classes.disabled)}\n ref={(ref) => {\n //eslint-disable-next-line\n this.dragContainerRef = ReactDOM.findDOMNode(ref);\n }}\n >\n <Chip\n clickable={false}\n disabled={true}\n ref={(ref) => {\n //eslint-disable-next-line\n this.rootRef = ReactDOM.findDOMNode(ref);\n }}\n className={classes.chip}\n label={\n <span\n className={classes.chipLabel}\n ref={(ref) => {\n if (ref) {\n ref.innerHTML = choice.value || ' ';\n }\n }}\n >\n {' '}\n </span>\n }\n variant={disabled ? 'outlined' : undefined}\n />\n </span>,\n {},\n );\n }\n}\n\nexport const BlankContent = withStyles((theme) => ({\n choice: {\n border: `solid 0px ${theme.palette.primary.main}`,\n borderRadius: theme.spacing.unit * 2,\n margin: theme.spacing.unit / 2,\n transform: 'translate(0, 0)',\n },\n chip: {\n backgroundColor: color.white(),\n border: `1px solid ${color.text()}`,\n color: color.text(),\n alignItems: 'center',\n display: 'inline-flex',\n height: 'initial',\n minHeight: '32px',\n fontSize: 'inherit',\n whiteSpace: 'pre-wrap',\n maxWidth: '374px',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n borderRadius: '3px',\n paddingTop: '12px',\n paddingBottom: '12px',\n },\n chipLabel: {\n whiteSpace: 'normal',\n '& img': {\n display: 'block',\n padding: '2px 0',\n },\n '& mjx-frac': {\n fontSize: '120% !important',\n },\n },\n disabled: {\n opacity: 0.6,\n },\n}))(BlankContentComp);\n\nconst tileSource = {\n canDrag(props) {\n return !props.disabled;\n },\n beginDrag(props) {\n return {\n choice: props.choice,\n instanceId: props.instanceId,\n };\n },\n};\n\nconst DragDropTile = DragSource(DRAG_TYPE, tileSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(BlankContent);\n\nexport default DragDropTile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport findKey from 'lodash/findKey';\nimport Choice from './choice';\nimport { DragDroppablePlaceholder } from '@pie-lib/drag';\n\nexport default class Choices extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choices: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n value: PropTypes.object,\n choicePosition: PropTypes.string.isRequired,\n };\n\n getStyleForWrapper = () => {\n const { choicePosition } = this.props;\n\n switch (choicePosition) {\n case 'above':\n return {\n margin: '0 0 40px 0',\n };\n\n case 'below':\n return {\n margin: '40px 0 0 0',\n };\n\n case 'right':\n return {\n margin: '0 0 0 40px',\n };\n\n default:\n return {\n margin: '0 40px 0 0',\n };\n }\n };\n\n render() {\n const { disabled, duplicates, choices, value } = this.props;\n const filteredChoices = choices.filter((c) => {\n if (duplicates === true) {\n return true;\n }\n const foundChoice = findKey(value, (v) => v === c.id);\n return foundChoice === undefined;\n });\n const elementStyle = { ...this.getStyleForWrapper(), minWidth: '100px' };\n\n return (\n <div style={elementStyle}>\n <DragDroppablePlaceholder disabled={disabled}>\n {filteredChoices.map((c, index) => (\n <Choice key={`${c.value}-${index}`} disabled={disabled} choice={c} />\n ))}\n </DragDroppablePlaceholder>\n </div>\n );\n }\n}\n","import grey from '@material-ui/core/colors/grey';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\nimport { DragSource, DropTarget } from '@pie-lib/drag';\nimport { withStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\nimport classnames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-lib:mask-markup:blank');\nexport const DRAG_TYPE = 'MaskBlank';\n\nconst useStyles = withStyles(() => ({\n content: {\n border: `solid 0px ${color.primary()}`,\n minWidth: '200px',\n touchAction: 'none',\n overflow: 'hidden',\n whiteSpace: 'nowrap', // Prevent line wrapping\n },\n chip: {\n backgroundColor: color.background(),\n border: `2px dashed ${color.text()}`,\n color: color.text(),\n fontSize: 'inherit',\n maxWidth: '374px',\n position: 'relative',\n borderRadius: '3px',\n },\n chipLabel: {\n whiteSpace: 'normal',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n '& img': {\n display: 'block',\n padding: '2px 0',\n },\n // Remove default <p> margins to ensure consistent spacing across all wrapped content (p, span, div, math)\n // Padding for top and bottom will instead be controlled by the container for consistent layout\n // Ensures consistent behavior with pie-api-browser, where marginTop is already removed by a Bootstrap stylesheet\n '& p': {\n marginTop: '0',\n marginBottom: '0',\n },\n '& mjx-frac': {\n fontSize: '120% !important',\n },\n },\n hidden: {\n color: 'transparent',\n opacity: 0,\n },\n dragged: {\n position: 'absolute',\n left: 16,\n maxWidth: '60px',\n },\n correct: {\n border: `solid 1px ${color.correct()}`,\n },\n incorrect: {\n border: `solid 1px ${color.incorrect()}`,\n },\n over: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n parentOver: {\n border: `1px solid ${grey[500]}`,\n backgroundColor: `${grey[300]}`,\n },\n}));\n\nexport class BlankContent extends React.Component {\n constructor() {\n super();\n this.state = {\n height: 0,\n width: 0,\n };\n }\n\n handleImageLoad = () => {\n this.updateDimensions();\n };\n\n handleElements() {\n const imageElement = this.spanRef?.querySelector('img');\n\n if (imageElement) {\n imageElement.onload = this.handleImageLoad;\n } else {\n setTimeout(() => {\n this.updateDimensions();\n }, 300);\n }\n }\n\n componentDidMount() {\n this.handleElements();\n if (this.rootRef) {\n this.rootRef.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n }\n }\n\n componentDidUpdate(prevProps) {\n renderMath(this.rootRef);\n const { choice: currentChoice } = this.props;\n const { choice: prevChoice } = prevProps;\n\n if (JSON.stringify(currentChoice) !== JSON.stringify(prevChoice)) {\n if (!currentChoice) {\n this.setState({\n height: 0,\n width: 0,\n });\n return;\n }\n this.handleElements();\n }\n }\n\n componentWillUnmount() {\n if (this.rootRef) {\n this.rootRef.removeEventListener('touchstart', this.handleTouchStart);\n }\n }\n\n handleTouchStart = (e) => {\n e.preventDefault();\n this.touchStartTimer = setTimeout(() => {\n this.startDrag();\n }, 300); // Start drag after 300ms (touch and hold duration)\n };\n\n startDrag = () => {\n const { connectDragSource, disabled } = this.props;\n if (!disabled) {\n connectDragSource(this.rootRef);\n }\n };\n\n updateDimensions() {\n if (this.spanRef && this.rootRef) {\n // Temporarily set rootRef width to 'auto' for natural measurement\n this.rootRef.style.width = 'auto';\n\n // Get the natural dimensions of the content\n const width = this.spanRef.offsetWidth || 0;\n const height = this.spanRef.offsetHeight || 0;\n\n const widthWithPadding = width + 24; // 12px padding on each side\n const heightWithPadding = height + 24; // 12px padding on top and bottom\n\n const responseAreaWidth = parseFloat(this.props.emptyResponseAreaWidth) || 0;\n const responseAreaHeight = parseFloat(this.props.emptyResponseAreaHeight) || 0;\n\n const adjustedWidth = widthWithPadding <= responseAreaWidth ? responseAreaWidth : widthWithPadding;\n const adjustedHeight = heightWithPadding <= responseAreaHeight ? responseAreaHeight : heightWithPadding;\n\n this.setState((prevState) => ({\n width: adjustedWidth > responseAreaWidth ? adjustedWidth : prevState.width,\n height: adjustedHeight > responseAreaHeight ? adjustedHeight : prevState.height,\n }));\n\n this.rootRef.style.width = `${adjustedWidth}px`;\n this.rootRef.style.height = `${adjustedHeight}px`;\n }\n }\n\n addDraggableFalseAttributes(parent) {\n parent.childNodes.forEach((elem) => {\n if (elem instanceof Element || elem instanceof HTMLDocument) {\n elem.setAttribute('draggable', false);\n }\n });\n }\n\n getRootDimensions() {\n // Handle potential non-numeric values\n const responseAreaWidth = !isNaN(parseFloat(this.props.emptyResponseAreaWidth))\n ? parseFloat(this.props.emptyResponseAreaWidth)\n : 0;\n const responseAreaHeight = !isNaN(parseFloat(this.props.emptyResponseAreaHeight))\n ? parseFloat(this.props.emptyResponseAreaHeight)\n : 0;\n\n const rootStyle = {\n height: this.state.height || responseAreaHeight,\n width: this.state.width || responseAreaWidth,\n };\n\n // add minWidth, minHeight if width and height are not defined\n // minWidth, minHeight will be also in model in the future\n return {\n ...rootStyle,\n ...(responseAreaWidth ? {} : { minWidth: 90 }),\n ...(responseAreaHeight ? {} : { minHeight: 32 }),\n };\n }\n\n render() {\n const { disabled, choice, classes, isOver, dragItem, correct } = this.props;\n const draggedLabel = dragItem && isOver && dragItem.choice.value;\n const label = choice && choice.value;\n\n return (\n // TODO the Chip element is causing drag problems on touch devices. Avoid using Chip and consider refactoring the code. Keep in mind that Chip is a span with a button role, which interferes with seamless touch device dragging.\n <Chip\n clickable={false}\n disabled={true}\n ref={(ref) => {\n //eslint-disable-next-line\n this.rootRef = ReactDOM.findDOMNode(ref);\n }}\n component=\"span\"\n label={\n <React.Fragment>\n <span\n className={classnames(classes.chipLabel, isOver && classes.over, {\n [classes.hidden]: draggedLabel,\n })}\n ref={(ref) => {\n if (ref) {\n //eslint-disable-next-line\n this.spanRef = ReactDOM.findDOMNode(ref);\n ref.innerHTML = label || '';\n this.addDraggableFalseAttributes(ref);\n }\n }}\n >\n {' '}\n </span>\n {draggedLabel && (\n <span\n className={classnames(classes.chipLabel, isOver && classes.over, classes.dragged)}\n ref={(ref) => {\n if (ref) {\n //eslint-disable-next-line\n this.spanRef = ReactDOM.findDOMNode(ref);\n ref.innerHTML = draggedLabel || '';\n this.addDraggableFalseAttributes(ref);\n }\n }}\n >\n {' '}\n </span>\n )}\n </React.Fragment>\n }\n className={classnames(classes.chip, isOver && classes.over, isOver && classes.parentOver, {\n [classes.correct]: correct !== undefined && correct,\n [classes.incorrect]: correct !== undefined && !correct,\n })}\n variant={disabled ? 'outlined' : undefined}\n style={{\n ...this.getRootDimensions(),\n }}\n />\n );\n }\n}\n\nBlankContent.defaultProps = {\n emptyResponseAreaWidth: 0,\n emptyResponseAreaHeight: 0,\n};\n\nBlankContent.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choice: PropTypes.object,\n classes: PropTypes.object,\n isOver: PropTypes.bool,\n dragItem: PropTypes.object,\n correct: PropTypes.bool,\n onChange: PropTypes.func,\n emptyResponseAreaWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n emptyResponseAreaHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nconst StyledBlankContent = useStyles(BlankContent);\n\nconst connectedBlankContent = useStyles(({ connectDragSource, connectDropTarget, ...props }) => {\n const { classes, isOver } = props;\n\n return connectDropTarget(\n connectDragSource(\n <span className={classnames(classes.content, isOver && classes.over)}>\n <StyledBlankContent {...props} />\n </span>,\n ),\n );\n});\n\nconst tileTarget = {\n drop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n log('props.instanceId', props.instanceId, 'draggedItem.instanceId:', draggedItem.instanceId);\n\n if (draggedItem.id !== props.id) {\n props.onChange(props.id, draggedItem.choice.id);\n }\n\n return {\n dropped: draggedItem.id !== props.id,\n };\n },\n canDrop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n return draggedItem.instanceId === props.instanceId;\n },\n};\n\nconst DropTile = DropTarget(DRAG_TYPE, tileTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n dragItem: monitor.getItem(),\n}))(connectedBlankContent);\n\nconst tileSource = {\n canDrag(props) {\n return !props.disabled && !!props.choice;\n },\n beginDrag(props) {\n return {\n id: props.id,\n choice: props.choice,\n instanceId: props.instanceId,\n fromChoice: true,\n };\n },\n endDrag(props, monitor) {\n // this will be null if it did not drop\n const dropResult = monitor.getDropResult();\n\n if (!dropResult || dropResult.dropped) {\n const draggedItem = monitor.getItem();\n\n if (draggedItem.fromChoice) {\n props.onChange(props.id, undefined);\n }\n }\n },\n};\n\nconst DragDropTile = DragSource(DRAG_TYPE, tileSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(DropTile);\n\nexport default DragDropTile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport Choices from './choices';\nimport Blank from './components/blank';\nimport { withMask } from './with-mask';\n\n// eslint-disable-next-line react/display-name\nconst Masked = withMask('blank', (props) => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n if (dataset.component === 'blank') {\n // eslint-disable-next-line react/prop-types\n const {\n disabled,\n duplicates,\n correctResponse,\n feedback,\n showCorrectAnswer,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n } = props;\n const choiceId = showCorrectAnswer ? correctResponse[dataset.id] : data[dataset.id];\n // eslint-disable-next-line react/prop-types\n const choice = choiceId && props.choices.find((c) => c.id === choiceId);\n\n return (\n <Blank\n key={`${node.type}-${dataset.id}`}\n correct={showCorrectAnswer || (feedback && feedback[dataset.id])}\n disabled={disabled}\n duplicates={duplicates}\n choice={choice}\n id={dataset.id}\n emptyResponseAreaWidth={emptyResponseAreaWidth}\n emptyResponseAreaHeight={emptyResponseAreaHeight}\n onChange={onChange}\n />\n );\n }\n});\n\nexport default class DragInTheBlank extends React.Component {\n static propTypes = {\n markup: PropTypes.string,\n layout: PropTypes.object,\n choicesPosition: PropTypes.string,\n choices: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n value: PropTypes.object,\n onChange: PropTypes.func,\n duplicates: PropTypes.bool,\n disabled: PropTypes.bool,\n feedback: PropTypes.object,\n correctResponse: PropTypes.object,\n showCorrectAnswer: PropTypes.bool,\n emptyResponseAreaWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n emptyResponseAreaHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n };\n\n UNSAFE_componentWillReceiveProps() {\n if (this.rootRef) {\n renderMath(this.rootRef);\n }\n }\n\n componentDidUpdate() {\n renderMath(this.rootRef);\n }\n\n getPositionDirection = (choicePosition) => {\n let flexDirection;\n let justifyContent;\n let alignItems;\n\n switch (choicePosition) {\n case 'left':\n flexDirection = 'row';\n alignItems = 'center';\n break;\n case 'right':\n flexDirection = 'row-reverse';\n justifyContent = 'flex-end';\n alignItems = 'center';\n break;\n case 'below':\n flexDirection = 'column-reverse';\n break;\n default:\n // above\n flexDirection = 'column';\n break;\n }\n\n return { flexDirection, justifyContent, alignItems };\n };\n\n render() {\n const {\n markup,\n duplicates,\n layout,\n value,\n onChange,\n choicesPosition,\n choices,\n correctResponse,\n disabled,\n feedback,\n showCorrectAnswer,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n } = this.props;\n\n const choicePosition = choicesPosition || 'below';\n const style = {\n display: 'flex',\n minWidth: '100px',\n ...this.getPositionDirection(choicePosition),\n };\n\n return (\n <div ref={(ref) => ref && (this.rootRef = ref)} style={style}>\n <Choices\n choicePosition={choicePosition}\n duplicates={duplicates}\n choices={choices}\n value={value}\n disabled={disabled}\n />\n <Masked\n elementType={'drag-in-the-blank'}\n markup={markup}\n layout={layout}\n value={value}\n choices={choices}\n onChange={onChange}\n disabled={disabled}\n duplicates={duplicates}\n feedback={feedback}\n correctResponse={correctResponse}\n showCorrectAnswer={showCorrectAnswer}\n emptyResponseAreaWidth={emptyResponseAreaWidth}\n emptyResponseAreaHeight={emptyResponseAreaHeight}\n />\n </div>\n );\n }\n}\n","import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport classnames from 'classnames';\n\nimport { color } from '@pie-lib/render-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { withMask } from './with-mask';\n\nconst styles = () => ({\n editableHtmlCustom: {\n display: 'inline-block',\n verticalAlign: 'middle',\n margin: '4px',\n borderRadius: '4px',\n border: `1px solid ${color.black()}`,\n },\n correct: {\n border: `1px solid ${color.correct()}`,\n },\n incorrect: {\n border: `1px solid ${color.incorrect()}`,\n },\n});\n\nconst MaskedInput = (props) => (node, data) => {\n const {\n adjustedLimit,\n disabled,\n feedback,\n showCorrectAnswer,\n maxLength,\n spellCheck,\n classes,\n pluginProps,\n onChange,\n } = props;\n const dataset = node.data?.dataset || {};\n\n if (dataset.component === 'input') {\n const correctAnswer = ((props.choices && dataset && props.choices[dataset.id]) || [])[0];\n const finalValue = showCorrectAnswer ? correctAnswer && correctAnswer.label : data[dataset.id] || '';\n const width = maxLength && maxLength[dataset.id];\n const feedbackStatus = feedback && feedback[dataset.id];\n const isCorrect = showCorrectAnswer || feedbackStatus === 'correct';\n const isIncorrect = !showCorrectAnswer && feedbackStatus === 'incorrect';\n\n const handleInputChange = (newValue) => {\n const updatedValue = {\n ...data,\n [dataset.id]: newValue,\n };\n onChange(updatedValue);\n };\n\n const handleKeyDown = (event) => {\n // the keyCode value for the Enter/Return key is 13\n if (event.key === 'Enter' || event.keyCode === 13) {\n return false;\n }\n };\n\n return (\n <EditableHtml\n id={dataset.id}\n key={`${node.type}-input-${dataset.id}`}\n disabled={showCorrectAnswer || disabled}\n disableUnderline\n onChange={handleInputChange}\n markup={finalValue || ''}\n charactersLimit={adjustedLimit ? width : 25}\n activePlugins={['languageCharacters']}\n pluginProps={pluginProps}\n languageCharactersProps={[{ language: 'spanish' }]}\n spellCheck={spellCheck}\n width={`calc(${width}em + 42px)`} // added 42px for left and right padding of editable-html\n onKeyDown={handleKeyDown}\n autoWidthToolbar\n toolbarOpts={{\n minWidth: 'auto',\n noBorder: true,\n isHidden: !!pluginProps?.characters?.disabled,\n }}\n className={classnames(classes.editableHtmlCustom, {\n [classes.correct]: isCorrect,\n [classes.incorrect]: isIncorrect,\n })}\n />\n );\n }\n};\n\nexport default withStyles(styles)(withMask('input', MaskedInput));\n","import React from 'react';\n// import Input from './components/input';\nimport { withMask } from './with-mask';\n\n// eslint-disable-next-line react/display-name\nexport default withMask('input', (props) => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n if (dataset.component === 'input') {\n // eslint-disable-next-line react/prop-types\n // const { adjustedLimit, disabled, feedback, showCorrectAnswer, maxLength, spellCheck } = props;\n\n // the first answer is the correct one\n // eslint-disable-next-line react/prop-types\n // const correctAnswer = ((props.choices && dataset && props.choices[dataset.id]) || [])[0];\n // const finalValue = showCorrectAnswer ? correctAnswer && correctAnswer.label : data[dataset.id] || '';\n // const width = maxLength && maxLength[dataset.id];\n\n return props.customMarkMarkupComponent(dataset.id);\n // return (\n // <Input\n // key={`${node.type}-input-${dataset.id}`}\n // correct={feedback && feedback[dataset.id] && feedback[dataset.id] === 'correct'}\n // disabled={showCorrectAnswer || disabled}\n // value={finalValue}\n // id={dataset.id}\n // onChange={onChange}\n // showCorrectAnswer={showCorrectAnswer}\n // width={width}\n // charactersLimit={adjustedLimit ? width : 25}\n // isConstructedResponse={true}\n // spellCheck={spellCheck}\n // />\n // );\n }\n});\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar setStatic = function setStatic(key, value) {\n return function (BaseComponent) {\n /* eslint-disable no-param-reassign */\n BaseComponent[key] = value;\n /* eslint-enable no-param-reassign */\n\n return BaseComponent;\n };\n};\n\nvar _default = setStatic;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _setStatic = _interopRequireDefault(require(\"./setStatic\"));\n\nvar setDisplayName = function setDisplayName(displayName) {\n return (0, _setStatic.default)('displayName', displayName);\n};\n\nvar _default = setDisplayName;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar getDisplayName = function getDisplayName(Component) {\n if (typeof Component === 'string') {\n return Component;\n }\n\n if (!Component) {\n return undefined;\n }\n\n return Component.displayName || Component.name || 'Component';\n};\n\nvar _default = getDisplayName;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _getDisplayName = _interopRequireDefault(require(\"./getDisplayName\"));\n\nvar wrapDisplayName = function wrapDisplayName(BaseComponent, hocName) {\n return hocName + \"(\" + (0, _getDisplayName.default)(BaseComponent) + \")\";\n};\n\nvar _default = wrapDisplayName;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _react = require(\"react\");\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar shouldUpdate = function shouldUpdate(test) {\n return function (BaseComponent) {\n var factory = (0, _react.createFactory)(BaseComponent);\n\n var ShouldUpdate =\n /*#__PURE__*/\n function (_Component) {\n (0, _inheritsLoose2.default)(ShouldUpdate, _Component);\n\n function ShouldUpdate() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = ShouldUpdate.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return test(this.props, nextProps);\n };\n\n _proto.render = function render() {\n return factory(this.props);\n };\n\n return ShouldUpdate;\n }(_react.Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'shouldUpdate'))(ShouldUpdate);\n }\n\n return ShouldUpdate;\n };\n};\n\nvar _default = shouldUpdate;\nexports.default = _default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _shallowEqual = _interopRequireDefault(require(\"fbjs/lib/shallowEqual\"));\n\nvar _default = _shallowEqual.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _shouldUpdate = _interopRequireDefault(require(\"./shouldUpdate\"));\n\nvar _shallowEqual = _interopRequireDefault(require(\"./shallowEqual\"));\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar pure = function pure(BaseComponent) {\n var hoc = (0, _shouldUpdate.default)(function (props, nextProps) {\n return !(0, _shallowEqual.default)(props, nextProps);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'pure'))(hoc(BaseComponent));\n }\n\n return hoc(BaseComponent);\n};\n\nvar _default = pure;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _pure = _interopRequireDefault(require(\"recompose/pure\"));\n\nvar _SvgIcon = _interopRequireDefault(require(\"@material-ui/core/SvgIcon\"));\n\nfunction createSvgIcon(path, displayName) {\n var Icon = function Icon(props) {\n return _react.default.createElement(_SvgIcon.default, props, path);\n };\n\n Icon.displayName = \"\".concat(displayName, \"Icon\");\n Icon = (0, _pure.default)(Icon);\n Icon.muiName = 'SvgIcon';\n return Icon;\n}\n\n;\nvar _default = createSvgIcon;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), _react.default.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n})), 'ArrowDropDown');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\n d: \"M7 14l5-5 5 5z\"\n}), _react.default.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n})), 'ArrowDropUp');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), _react.default.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n})), 'Close');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n}), _react.default.createElement(\"path\", {\n d: \"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n})), 'Check');\n\nexports.default = _default;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\nimport Close from '@material-ui/icons/Close';\nimport Check from '@material-ui/icons/Check';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nimport { color } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nclass Dropdown extends React.Component {\n static propTypes = {\n id: PropTypes.string,\n value: PropTypes.string,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n classes: PropTypes.object,\n correct: PropTypes.bool,\n choices: PropTypes.arrayOf(PropTypes.shape({ value: PropTypes.string, label: PropTypes.string })),\n showCorrectAnswer: PropTypes.bool,\n singleQuery: PropTypes.bool,\n correctValue: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n anchorEl: null,\n highlightedOptionId: null,\n menuWidth: null,\n previewValue: null,\n };\n this.hiddenRef = React.createRef();\n this.buttonRef = React.createRef();\n this.previewRef = React.createRef();\n this.elementRefs = [];\n }\n\n componentDidMount() {\n // measure hidden menu width once\n if (this.hiddenRef.current && this.state.menuWidth === null) {\n this.setState({ menuWidth: this.hiddenRef.current.clientWidth });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const hiddenEl = this.hiddenRef.current;\n\n const dropdownJustOpened = !prevState.anchorEl && this.state.anchorEl;\n if (dropdownJustOpened) {\n this.elementRefs.forEach((ref) => {\n if (!ref) return;\n\n const containsLatex = ref.querySelector('[data-latex], [data-raw]');\n const hasMathJax = ref.querySelector('mjx-container');\n const mathHandled = ref.querySelector('[data-math-handled=\"true\"]');\n\n if (containsLatex && (!mathHandled || !hasMathJax)) {\n renderMath(ref);\n }\n });\n }\n\n if (hiddenEl) {\n const newWidth = hiddenEl.clientWidth;\n if (newWidth !== this.state.menuWidth) {\n this.elementRefs.forEach((ref) => {\n if (ref) renderMath(ref);\n });\n\n renderMath(hiddenEl);\n this.setState({ menuWidth: newWidth });\n }\n }\n }\n\n handleClick = (event) => this.setState({ anchorEl: event.currentTarget });\n\n handleClose = () => {\n const { value } = this.props;\n this.setState({ anchorEl: null, previewValue: null, highlightedOptionId: null });\n // clear displayed preview if no selection\n if (!value && this.previewRef.current) {\n this.previewRef.current.innerHTML = '';\n }\n };\n\n handleHighlight = (index) => {\n const highlightedOptionId = `dropdown-option-${this.props.id}-${index}`;\n\n // preview on hover if nothing selected\n const stateUpdate = { highlightedOptionId };\n if (!this.props.value) {\n stateUpdate.previewValue = this.props.choices[index].value;\n }\n this.setState(stateUpdate);\n };\n\n handleSelect = (value, index) => {\n this.props.onChange(this.props.id, value);\n this.handleHighlight(index);\n this.handleClose();\n };\n\n handleHover = (index) => {\n const selectedValue = this.props.value;\n\n if (selectedValue) return;\n\n const highlightedOptionId = `dropdown-option-${this.props.id}-${index}`;\n const previewValue = this.state.previewValue;\n\n this.setState({ highlightedOptionId, previewValue }, () => {\n // On hover, preview the math-rendered content inside the button if no value is selected.\n const ref = this.elementRefs[index];\n const preview = this.previewRef.current;\n\n if (ref && preview) {\n preview.innerHTML = ref.innerHTML;\n }\n });\n };\n\n getLabel(choices, value) {\n const found = (choices || []).find((choice) => choice.value === value);\n\n return found ? found.label.trim() : undefined;\n }\n\n render() {\n const { classes, id, correct, disabled, value, choices, showCorrectAnswer, singleQuery, correctValue } = this.props;\n const { anchorEl } = this.state;\n const open = Boolean(anchorEl);\n const buttonId = `dropdown-button-${id}`;\n const menuId = `dropdown-menu-${id}`;\n const valueDisplayId = `dropdown-value-${id}`;\n\n // Determine the class for disabled state, view mode and evaluate mode\n let disabledClass;\n // Reset elementRefs before each render to avoid stale references\n this.elementRefs = [];\n\n if (disabled && correct !== undefined) {\n disabledClass = correct || showCorrectAnswer ? classes.disabledCorrect : classes.disabledIncorrect;\n }\n\n // Create distinct, visually hidden labels for each dropdown\n const incrementedId = parseInt(id, 10) + 1;\n const labelId = singleQuery ? 'Query-label' : `Query-label-${incrementedId}`;\n const labelText = singleQuery ? 'Query' : `Query ${incrementedId}`;\n\n // Changed from Select to Button for dropdown to enhance accessibility. This modification offers explicit control over aria attributes and focuses management, ensuring the dropdown is compliant with accessibility standards. The use of Button and Menu components allows for better handling of keyboard interactions and provides accessible labels and menus, aligning with WCAG guidelines and improving usability for assistive technology users.\n let correctnessIcon = null;\n if (disabled && correct !== undefined) {\n correctnessIcon =\n correct || showCorrectAnswer ? (\n <Check className={classNames(classes.correctnessIndicatorIcon, classes.correctIcon)} />\n ) : (\n <Close className={classNames(classes.correctnessIndicatorIcon, classes.incorrectIcon)} />\n );\n }\n\n return (\n <>\n <div\n ref={this.hiddenRef}\n style={{ position: 'absolute', visibility: 'hidden', top: 0, left: 0 }}\n tabIndex={-1}\n aria-hidden=\"true\"\n >\n {(choices || []).map((c, index) => (\n <MenuItem\n key={index}\n classes={{ root: classes.menuRoot, selected: classes.selected }}\n tabIndex={-1}\n aria-hidden=\"true\"\n >\n <span className={classes.label} dangerouslySetInnerHTML={{ __html: c.label }} />\n </MenuItem>\n ))}\n </div>\n <InputLabel className={classes.srOnly} id={labelId} tabIndex={-1} aria-hidden=\"true\">\n {labelText}\n </InputLabel>\n <Button\n ref={this.buttonRef}\n style={{\n ...(this.state.menuWidth && { minWidth: `calc(${this.state.menuWidth}px + 8px)` }),\n borderWidth: open ? '2px' : '1px',\n transition: 'border-width 0.2s ease-in-out',\n }}\n aria-controls={open ? menuId : undefined}\n aria-haspopup=\"listbox\"\n aria-expanded={open ? 'true' : undefined}\n aria-activedescendant={this.state.highlightedOptionId}\n onClick={this.handleClick}\n classes={{\n root: classes.root,\n disabled: disabledClass,\n }}\n disabled={disabled}\n id={buttonId}\n role=\"combobox\"\n aria-label={`Select an option for ${labelText}`}\n aria-labelledby={valueDisplayId}\n >\n {correctnessIcon}\n <span\n id={valueDisplayId}\n ref={this.previewRef}\n className={classes.label}\n dangerouslySetInnerHTML={{\n __html: correctValue\n ? correctValue\n : open && this.state.previewValue\n ? this.getLabel(choices, this.state.previewValue)\n : this.getLabel(choices, value) || '',\n }}\n />\n {open ? <ArrowDropUpIcon /> : <ArrowDropDownIcon />}\n </Button>\n <Menu\n id={menuId}\n anchorEl={anchorEl}\n className={classes.selectMenu}\n keepMounted\n open={open}\n onClose={this.handleClose}\n getContentAnchorEl={null}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n PaperProps={this.state.menuWidth ? { style: { minWidth: this.state.menuWidth, padding: '4px' } } : undefined}\n MenuListProps={{\n 'aria-labelledby': buttonId,\n role: 'listbox',\n disablePadding: true,\n }}\n >\n {(choices || []).map((c, index) => {\n const optionId = `dropdown-option-${id}-${index}`;\n\n return (\n <MenuItem\n id={optionId}\n classes={{ root: classes.menuRoot, selected: classes.selected }}\n key={`${c.label}-${index}`}\n value={c.value}\n onClick={() => this.handleSelect(c.value, index)}\n role=\"option\"\n aria-selected={this.state.highlightedOptionId === optionId ? 'true' : undefined}\n onMouseOver={() => this.handleHover(index)}\n >\n <span\n ref={(ref) => (this.elementRefs[index] = ref)}\n className={classes.label}\n dangerouslySetInnerHTML={{ __html: c.label }}\n />\n <span\n className={classes.selectedIndicator}\n dangerouslySetInnerHTML={{ __html: c.value === value ? ' ✓' : '' }}\n />\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n }\n}\n\nconst styles = () => ({\n root: {\n color: color.text(),\n border: `1px solid ${color.borderGray()}`,\n borderRadius: '4px',\n justifyContent: 'space-between',\n backgroundColor: color.background(),\n position: 'relative',\n height: '45px',\n width: 'fit-content',\n margin: '2px',\n textTransform: 'none',\n '& span': {\n paddingRight: '5px',\n },\n '& svg': {\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 12px)',\n pointerEvents: 'none',\n color: color.text(),\n marginLeft: '5px',\n },\n '&:focus, &:focus-visible': {\n outline: `3px solid ${color.tertiary()}`,\n outlineOffset: '2px',\n borderWidth: '3px',\n },\n },\n disabledCorrect: {\n borderWidth: '2px',\n borderColor: color.correct(),\n color: `${color.text()} !important`,\n },\n disabledIncorrect: {\n borderWidth: '2px',\n borderColor: color.incorrectWithIcon(),\n color: `${color.text()} !important`,\n },\n selectMenu: {\n backgroundColor: color.background(),\n border: `1px solid ${color.correct()} !important`,\n '&:hover': {\n border: `1px solid ${color.text()} `,\n borderColor: 'initial',\n },\n '&:focus': {\n border: `1px solid ${color.text()}`,\n borderColor: 'initial',\n },\n // remove default padding on the inner list\n '& .MuiList-root': {\n padding: 0,\n },\n },\n selected: {\n color: `${color.text()} !important`,\n backgroundColor: `${color.background()} !important`,\n '&:hover': {\n color: color.text(),\n backgroundColor: `${color.dropdownBackground()} !important`,\n },\n },\n menuRoot: {\n color: color.text(),\n backgroundColor: color.background(),\n '&:focus, &:focus-visible': {\n outline: `3px solid ${color.tertiary()}`,\n outlineOffset: '-1px', // keeps it inside the item\n },\n '&:focus': {\n color: color.text(),\n backgroundColor: color.background(),\n },\n '&:hover': {\n color: color.text(),\n backgroundColor: color.dropdownBackground(),\n },\n boxSizing: 'border-box',\n padding: '25px',\n borderRadius: '4px',\n },\n label: {\n fontSize: 'max(1rem, 14px)',\n },\n selectedIndicator: {\n fontSize: 'max(1rem, 14px)',\n position: 'absolute',\n right: '10px',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n correctnessIndicatorIcon: {\n color: `${color.white()} !important`,\n position: 'absolute',\n top: '-8px !important',\n left: '-8px',\n marginLeft: '0 !important',\n borderRadius: '50%',\n fontSize: '16px',\n padding: '2px',\n },\n correctIcon: {\n backgroundColor: color.correct(),\n },\n incorrectIcon: {\n backgroundColor: color.incorrectWithIcon(),\n },\n});\n\nexport default withStyles(styles)(Dropdown);\n","import React from 'react';\nimport Dropdown from './components/dropdown';\nimport { withMask } from './with-mask';\n\n// eslint-disable-next-line react/display-name\nexport default withMask('dropdown', (props) => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n if (dataset.component === 'dropdown') {\n // eslint-disable-next-line react/prop-types\n const { choices, disabled, feedback, showCorrectAnswer } = props;\n const correctAnswer = choices && choices[dataset.id] && choices[dataset.id].find((c) => c.correct);\n const finalChoice = showCorrectAnswer ? correctAnswer && correctAnswer.value : data[dataset.id];\n\n return (\n <Dropdown\n key={`${node.type}-dropdown-${dataset.id}`}\n correct={feedback && feedback[dataset.id] && feedback[dataset.id] === 'correct'}\n disabled={disabled || showCorrectAnswer}\n value={finalChoice}\n correctValue={showCorrectAnswer ? correctAnswer && correctAnswer.label : undefined}\n id={dataset.id}\n onChange={onChange}\n choices={choices[dataset.id]}\n showCorrectAnswer={showCorrectAnswer}\n singleQuery={Object.keys(choices).length == 1}\n />\n );\n }\n});\n"],"names":["typeOf","require$$0","isPlainObject","process","log","Map","setIn","Range","getIn","global","this","classCallCheck","_extends","toConsumableArray","logger","reverse","index","String","debug","INLINE","MARK","TEXT_NODE","COMMENT_NODE","attr","el","attributes","length","undefined","out","i","a","name","value","getObject","type","includes","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","toStyleObject","camelize","addUnits","handleStyles","attribute","styleString","getAttribute","handleClass","acc","classNames","class","attributesToMap","style","className","MARK_TAGS","b","em","u","code","strong","marks","deserialize","next","mark","tagName","toLowerCase","object","nodes","childNodes","rules","nodeType","leaves","text","textContent","normalAttrs","controls","allAttrs","reduce","isMath","data","dataset","html","Html","defaultBlock","toJSON","Paragraph","withStyles","theme","para","paddingTop","spacing","unit","paddingBottom","props","classes","children","Spacer","spacer","display","width","restrictWhitespaceTypes","addText","parentNode","isWhitespace","parentType","getMark","n","find","leave","get","renderChildren","layout","onChange","rootRenderChildren","elementType","forEach","key","push","__html","innerHTML","c","content","l","t","extraText","markKey","Tag","subNodes","MaskContainer","main","tableStyle","borderCollapse","padding","textAlign","cx","Mask","React","Component","handleChange","id","render","propTypes","PropTypes","func","string","REGEX","markup","replace","g","buildLayoutFromMarkup","processed","componentize","document","withMask","WithMask","componentDidUpdate","prevProps","domNode","ReactDOM","findDOMNode","mathElements","querySelectorAll","mjxContainer","querySelector","removeChild","latexCode","removeAttribute","maskLayout","customMarkMarkupComponent","DRAG_TYPE","BlankContentComp","startDrag","connectDragSource","disabled","dragContainerRef","handleTouchStart","e","preventDefault","longPressTimer","setTimeout","handleTouchEnd","clearTimeout","handleTouchMove","componentDidMount","addEventListener","passive","componentWillUnmount","removeEventListener","renderMath","rootRef","choice","classnames","ref","chip","chipLabel","bool","BlankContent","border","palette","primary","borderRadius","margin","transform","backgroundColor","color","white","alignItems","height","minHeight","fontSize","whiteSpace","maxWidth","pointerEvents","opacity","tileSource","canDrag","beginDrag","instanceId","DragDropTile","DragSource","connect","monitor","dragSource","isDragging","Choices","getStyleForWrapper","choicePosition","duplicates","choices","filteredChoices","filter","foundChoice","findKey","v","elementStyle","minWidth","map","Choice","arrayOf","shape","label","isRequired","useStyles","touchAction","overflow","background","position","marginTop","marginBottom","hidden","dragged","left","correct","incorrect","over","parentOver","grey","constructor","handleImageLoad","updateDimensions","touchStartTimer","state","handleElements","imageElement","spanRef","onload","currentChoice","prevChoice","JSON","stringify","setState","offsetWidth","offsetHeight","widthWithPadding","heightWithPadding","responseAreaWidth","parseFloat","emptyResponseAreaWidth","responseAreaHeight","emptyResponseAreaHeight","adjustedWidth","adjustedHeight","prevState","addDraggableFalseAttributes","parent","elem","Element","HTMLDocument","setAttribute","getRootDimensions","isNaN","rootStyle","isOver","dragItem","draggedLabel","defaultProps","oneOfType","number","StyledBlankContent","connectedBlankContent","connectDropTarget","tileTarget","drop","draggedItem","getItem","dropped","canDrop","DropTile","DropTarget","dropTarget","fromChoice","endDrag","dropResult","getDropResult","Masked","node","component","correctResponse","feedback","showCorrectAnswer","choiceId","Blank","DragInTheBlank","getPositionDirection","flexDirection","justifyContent","UNSAFE_componentWillReceiveProps","choicesPosition","styles","editableHtmlCustom","verticalAlign","black","MaskedInput","adjustedLimit","maxLength","spellCheck","pluginProps","correctAnswer","finalValue","feedbackStatus","isCorrect","isIncorrect","handleInputChange","newValue","updatedValue","handleKeyDown","event","keyCode","language","noBorder","isHidden","characters","setStatic_1","setStatic","setDisplayName_1","require$$1","setDisplayName","getDisplayName_1","getDisplayName","wrapDisplayName_1","wrapDisplayName","shouldUpdate_1","require$$2","require$$3","require$$4","shouldUpdate","pure_1","pure","createSvgIcon_1","createSvgIcon","Close","Check","Dropdown","handleClick","anchorEl","currentTarget","handleClose","previewValue","highlightedOptionId","previewRef","current","handleHighlight","stateUpdate","handleSelect","handleHover","selectedValue","elementRefs","preview","menuWidth","hiddenRef","createRef","buttonRef","clientWidth","hiddenEl","dropdownJustOpened","containsLatex","hasMathJax","mathHandled","newWidth","getLabel","found","singleQuery","correctValue","open","Boolean","buttonId","menuId","valueDisplayId","disabledClass","disabledCorrect","disabledIncorrect","incrementedId","parseInt","labelId","labelText","correctnessIcon","correctnessIndicatorIcon","correctIcon","incorrectIcon","visibility","top","root","menuRoot","selected","srOnly","borderWidth","transition","selectMenu","vertical","horizontal","role","disablePadding","optionId","selectedIndicator","borderGray","textTransform","paddingRight","right","marginLeft","outline","tertiary","outlineOffset","borderColor","incorrectWithIcon","dropdownBackground","boxSizing","finalChoice","Object","keys"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]}
|