@pie-lib/mask-markup 3.1.4 → 3.1.6-beta.1
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/CHANGELOG.md +0 -101
- package/lib/choices/choice.js +6 -24
- package/lib/choices/choice.js.map +1 -1
- package/lib/choices/index.js +9 -32
- package/lib/choices/index.js.map +1 -1
- package/lib/components/blank.js +29 -106
- package/lib/components/blank.js.map +1 -1
- package/lib/components/dropdown.js +9 -6
- package/lib/components/dropdown.js.map +1 -1
- package/lib/drag-in-the-blank.js +30 -139
- package/lib/drag-in-the-blank.js.map +1 -1
- package/lib/keyboard-coordinates.js +1 -1
- package/lib/mask.js +15 -20
- package/lib/mask.js.map +1 -1
- package/package.json +6 -6
- package/src/choices/choice.jsx +3 -16
- package/src/choices/index.jsx +3 -27
- package/src/components/blank.jsx +35 -108
- package/src/components/dropdown.jsx +9 -7
- package/src/drag-in-the-blank.jsx +22 -132
- package/src/mask.jsx +11 -13
- package/LICENSE.md +0 -5
- package/lib/keyboard-coordinates.js.map +0 -1
- package/src/__tests__/drag-in-the-blank.test.js +0 -256
- package/src/__tests__/index.test.js +0 -38
- package/src/__tests__/keyboard-coordinates.test.js +0 -202
- package/src/__tests__/mask.test.js +0 -479
- package/src/__tests__/serialization.test.js +0 -54
- package/src/__tests__/utils.js +0 -1
- package/src/__tests__/with-mask.test.js +0 -76
- package/src/choices/__tests__/index.test.js +0 -212
- package/src/components/__tests__/blank.test.js +0 -413
- package/src/components/__tests__/correct-input.test.js +0 -90
- package/src/components/__tests__/dropdown.test.js +0 -129
- package/src/components/__tests__/input.test.js +0 -102
- package/src/keyboard-coordinates.js +0 -147
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drag-in-the-blank.js","names":["_react","_interopRequireDefault","require","_propTypes","_drag","_core","_choices","_choice","_blank","_withMask","_keyboardCoordinates","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","CLICK_AFTER_DRAG_GUARD_MS","Masked","withMask","props","node","data","onChange","_node$data","dataset","component","disabled","duplicates","correctResponse","feedback","showCorrectAnswer","emptyResponseAreaWidth","emptyResponseAreaHeight","instanceId","isDragging","selectedItem","onSelectClick","onPlacementClick","choiceId","id","choice","choices","find","c","createElement","key","concat","type","correct","newData","undefined","DragInTheBlank","exports","_React$Component","_this","_classCallCheck2","event","_active$data","active","current","setState","activeDragItem","dropAnimation","state","draggedItem","targetId","_this$props","value","fromChoice","newValue","_active$data2","_over$data","_dropData$accepts","over","draggedData","dropData","isValidDrop","accepts","includes","cancelSelection","lastDragEndAt","Date","now","toChoiceBoard","commitPlacement","a","b","isSameItem","document","dispatchEvent","KeyboardEvent","code","bubbles","cancelable","endAnyLiveKeyboardDrag","isClickSoonAfterDragEnd","toggleItemSelection","placeSelectedItem","choicePosition","flexDirection","justifyContent","alignItems","_inherits2","_createClass2","render","_this2","_this$props2","markup","choicesPosition","layout","style","display","minWidth","getPositionDirection","DragProvider","onDragStart","handleDragStart","onDragEnd","handleDragEnd","onDragCancel","collisionDetection","rectIntersection","keyboardCoordinateGetter","closestDroppableKeyboardCoordinates","keyboardCodes","start","cancel","end","ref","rootRef","onItemClick","elementType","DragOverlay","pointerEvents","renderDragOverlay","React","Component","PropTypes","string","object","array","func","bool","oneOfType","number"],"sources":["../src/drag-in-the-blank.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DragProvider } from '@pie-lib/drag';\nimport { DragOverlay, rectIntersection } from '@dnd-kit/core';\nimport Choices from './choices';\nimport Choice from './choices/choice';\nimport Blank from './components/blank';\nimport { withMask } from './with-mask';\nimport { closestDroppableKeyboardCoordinates } from './keyboard-coordinates';\n\n// A click that lands right after a real drag gesture ends (pointer drag-and-drop, or\n// the browser's own synthetic click for a keyboard Space/Enter) must be ignored by the\n// click-to-select/click-to-place handlers below, or it would immediately reopen or\n// re-trigger a selection for a drag that just completed.\nconst CLICK_AFTER_DRAG_GUARD_MS = 250;\n\nconst Masked = withMask('blank', (props) => (node, data, onChange) => {\n const dataset = 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 instanceId,\n isDragging,\n selectedItem,\n onSelectClick,\n onPlacementClick,\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={(id, choiceId) => {\n const newData = { ...data };\n if (choiceId === undefined) {\n delete newData[id];\n } else {\n newData[id] = choiceId;\n }\n onChange(newData);\n }}\n instanceId={instanceId}\n isDragging={isDragging}\n selectedItem={selectedItem}\n onSelectClick={onSelectClick}\n onPlacementClick={onPlacementClick}\n />\n );\n }\n});\n\nexport default class DragInTheBlank extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n activeDragItem: null,\n dropAnimation: undefined,\n selectedItem: null,\n };\n this.lastDragEndAt = 0;\n }\n\n static propTypes = {\n markup: PropTypes.string,\n layout: PropTypes.object,\n choicesPosition: PropTypes.string,\n choices: PropTypes.array,\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 instanceId: PropTypes.string,\n };\n\n static defaultProps = {\n instanceId: 'drag-in-the-blank',\n };\n\n handleDragStart = (event) => {\n const { active } = event;\n\n if (active?.data?.current) {\n this.setState({\n activeDragItem: active.data.current,\n dropAnimation: undefined, // default during drag\n selectedItem: active.data.current,\n });\n }\n };\n\n renderDragOverlay = () => {\n const { activeDragItem } = this.state;\n if (!activeDragItem) return null;\n\n if (activeDragItem.type === 'MaskBlank') {\n return (\n <Choice\n disabled={activeDragItem.disabled}\n choice={activeDragItem.choice}\n instanceId={activeDragItem.instanceId}\n />\n );\n }\n\n return null;\n };\n\n // Shared placement logic for both the drag-end path and the click-to-place path, so\n // neither reimplements the other's mutation rules.\n //\n // `targetId === undefined` means \"the choice board\" — placing there removes the item\n // from wherever it currently is (mirroring image-cloze-association's\n // `containerIndex === undefined` convention for its own choices pool).\n commitPlacement = (draggedItem, targetId) => {\n const { onChange, value } = this.props;\n\n if (!onChange) return;\n\n if (targetId === undefined) {\n if (!draggedItem.fromChoice && draggedItem.id) {\n const newValue = { ...value };\n delete newValue[draggedItem.id];\n onChange(newValue);\n }\n return;\n }\n\n if (draggedItem.fromChoice === true) {\n const newValue = { ...value };\n newValue[targetId] = draggedItem.choice.id;\n onChange(newValue);\n } else if (draggedItem.id && draggedItem.id !== targetId) {\n const newValue = { ...value };\n newValue[targetId] = draggedItem.choice.id;\n delete newValue[draggedItem.id];\n onChange(newValue);\n }\n };\n\n handleDragEnd = (event) => {\n const { active, over } = event;\n\n const draggedData = active?.data?.current;\n const dropData = over?.data?.current;\n\n const isValidDrop =\n !!active && !!over && draggedData?.type === 'MaskBlank' && dropData?.accepts?.includes('MaskBlank');\n\n // Only animate back when drop is invalid\n this.setState({\n activeDragItem: null,\n dropAnimation: isValidDrop ? null : undefined,\n });\n\n this.cancelSelection();\n this.lastDragEndAt = Date.now();\n\n if (!isValidDrop) return;\n\n const targetId = dropData.toChoiceBoard === true ? undefined : dropData.id;\n\n this.commitPlacement(draggedData, targetId);\n };\n\n onDragCancel = () => {\n this.setState({ activeDragItem: null, dropAnimation: undefined });\n this.cancelSelection();\n this.lastDragEndAt = Date.now();\n };\n\n isSameItem = (a, b) => {\n if (!a || !b || a.fromChoice !== b.fromChoice) return false;\n return a.fromChoice ? a.choice.id === b.choice.id : a.id === b.id;\n };\n\n // Click-to-select semantics: selecting the currently-selected item again clears the\n // selection instead of re-selecting it.\n toggleItemSelection = (data) => {\n this.setState((state) => ({\n selectedItem: this.isSameItem(state.selectedItem, data) ? null : data,\n }));\n };\n\n cancelSelection = () => {\n this.setState({ selectedItem: null });\n };\n\n // If a real dnd-kit drag (started via keyboard Space/Enter) is still live when a\n // click completes the placement below, it needs to be cleanly ended — otherwise\n // dnd-kit would still think a drag is in progress. Escape is already configured as\n // this sensor's cancel key (see the keyboardCodes passed to DragProvider below), and\n // dispatching it as a real DOM KeyboardEvent is how dnd-kit's own document-level\n // listener is reached from outside its sensor.\n //\n // Only dispatch when a drag is actually live — this is a synthetic Escape keydown on\n // `document`, so an unconditional dispatch would also be observed by any other\n // document-level Escape listener (host player modals/dialogs, or another mounted\n // instance of this same component) even when nothing here actually needed cancelling.\n endAnyLiveKeyboardDrag = () => {\n if (!this.state.activeDragItem) return;\n\n document.dispatchEvent(new KeyboardEvent('keydown', { code: 'Escape', bubbles: true, cancelable: true }));\n };\n\n placeSelectedItem = (targetId) => {\n const { selectedItem } = this.state;\n\n if (!selectedItem) return;\n\n this.commitPlacement(selectedItem, targetId);\n this.cancelSelection();\n this.endAnyLiveKeyboardDrag();\n };\n\n isClickSoonAfterDragEnd = () => Date.now() - this.lastDragEndAt < CLICK_AFTER_DRAG_GUARD_MS;\n\n onItemClick = (data) => {\n if (this.isClickSoonAfterDragEnd()) return;\n\n // End any still-live keyboard drag BEFORE toggling the new selection: ending it\n // also cancels the current selection as a side effect (see onDragCancel above), so\n // doing it before — not after — lets this click's own selection be the one that\n // sticks.\n this.endAnyLiveKeyboardDrag();\n this.toggleItemSelection(data);\n };\n\n onPlacementClick = (targetId) => {\n if (this.isClickSoonAfterDragEnd()) return;\n\n this.placeSelectedItem(targetId);\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 value,\n onChange,\n choicesPosition,\n choices,\n correctResponse,\n disabled,\n feedback,\n showCorrectAnswer,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n layout,\n instanceId,\n } = this.props;\n\n const choicePosition = choicesPosition || 'below';\n const style = { display: 'flex', minWidth: '100px', ...this.getPositionDirection(choicePosition) };\n\n return (\n <DragProvider\n onDragStart={this.handleDragStart}\n onDragEnd={this.handleDragEnd}\n onDragCancel={this.onDragCancel}\n collisionDetection={rectIntersection}\n keyboardCoordinateGetter={closestDroppableKeyboardCoordinates}\n keyboardCodes={{ start: ['Space', 'Enter'], cancel: ['Escape'], end: ['Space', 'Enter'] }}\n >\n <div ref={(ref) => (this.rootRef = ref)} style={style}>\n <Choices\n choicePosition={choicePosition}\n choices={choices}\n value={value}\n duplicates={duplicates}\n disabled={disabled}\n instanceId={instanceId}\n selectedItem={this.state.selectedItem}\n onSelectClick={this.onItemClick}\n onPlacementClick={this.onPlacementClick}\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 instanceId={instanceId}\n isDragging={!!this.state.activeDragItem}\n selectedItem={this.state.selectedItem}\n onSelectClick={this.onItemClick}\n onPlacementClick={this.onPlacementClick}\n />\n <DragOverlay style={{ pointerEvents: 'none' }} dropAnimation={this.state.dropAnimation}>\n {this.renderDragOverlay()}\n </DragOverlay>\n </div>\n </DragProvider>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"drag-in-the-blank.js","names":["_react","_interopRequireDefault","require","_propTypes","_drag","_core","_choices","_choice","_blank","_withMask","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","Masked","withMask","props","node","data","onChange","_node$data","dataset","component","disabled","duplicates","correctResponse","feedback","showCorrectAnswer","emptyResponseAreaWidth","emptyResponseAreaHeight","instanceId","isDragging","choiceId","id","choice","choices","find","c","createElement","key","concat","type","correct","newData","undefined","DragInTheBlank","exports","_React$Component","_this","_classCallCheck2","event","_active$data","active","current","setState","activeDragItem","dropAnimation","state","_active$data2","_over$data","_dropData$accepts","over","_this$props","value","draggedData","dropData","isValidDrop","accepts","includes","draggedItem","targetId","toChoiceBoard","fromChoice","newValue","choicePosition","flexDirection","justifyContent","alignItems","_inherits2","_createClass2","render","_this2","_this$props2","markup","choicesPosition","layout","style","display","minWidth","getPositionDirection","DragProvider","onDragStart","handleDragStart","onDragEnd","handleDragEnd","collisionDetection","rectIntersection","ref","rootRef","elementType","DragOverlay","pointerEvents","renderDragOverlay","React","Component","PropTypes","string","object","array","func","bool","oneOfType","number"],"sources":["../src/drag-in-the-blank.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DragProvider } from '@pie-lib/drag';\nimport { DragOverlay, rectIntersection } from '@dnd-kit/core';\nimport Choices from './choices';\nimport Choice from './choices/choice';\nimport Blank from './components/blank';\nimport { withMask } from './with-mask';\n\nconst Masked = withMask('blank', (props) => (node, data, onChange) => {\n const dataset = 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 instanceId,\n isDragging,\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={(id, choiceId) => {\n const newData = { ...data };\n if (choiceId === undefined) {\n delete newData[id];\n } else {\n newData[id] = choiceId;\n }\n onChange(newData);\n }}\n instanceId={instanceId}\n isDragging={isDragging}\n />\n );\n }\n});\n\nexport default class DragInTheBlank extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n activeDragItem: null,\n dropAnimation: undefined,\n };\n }\n\n static propTypes = {\n markup: PropTypes.string,\n layout: PropTypes.object,\n choicesPosition: PropTypes.string,\n choices: PropTypes.array,\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 instanceId: PropTypes.string,\n };\n\n static defaultProps = {\n instanceId: 'drag-in-the-blank',\n };\n\n handleDragStart = (event) => {\n const { active } = event;\n\n if (active?.data?.current) {\n this.setState({\n activeDragItem: active.data.current,\n dropAnimation: undefined, // default during drag\n });\n }\n };\n\n renderDragOverlay = () => {\n const { activeDragItem } = this.state;\n if (!activeDragItem) return null;\n\n if (activeDragItem.type === 'MaskBlank') {\n return (\n <Choice\n disabled={activeDragItem.disabled}\n choice={activeDragItem.choice}\n instanceId={activeDragItem.instanceId}\n />\n );\n }\n\n return null;\n };\n\n handleDragEnd = (event) => {\n const { active, over } = event;\n const { onChange, value } = this.props;\n\n const draggedData = active?.data?.current;\n const dropData = over?.data?.current;\n\n const isValidDrop =\n !!active && !!over && draggedData?.type === 'MaskBlank' && dropData?.accepts?.includes('MaskBlank');\n\n // Only animate back when drop is invalid\n this.setState({\n activeDragItem: null,\n dropAnimation: isValidDrop ? null : undefined,\n });\n\n if (!isValidDrop || !onChange) return;\n\n const draggedItem = draggedData;\n const targetId = dropData.id;\n\n if (dropData.toChoiceBoard === true) {\n if (!draggedItem.fromChoice && draggedItem.id) {\n const newValue = { ...value };\n delete newValue[draggedItem.id];\n onChange(newValue);\n }\n } else if (draggedItem.fromChoice === true) {\n if (targetId && targetId !== 'drag-in-the-blank-droppable') {\n const newValue = { ...value };\n newValue[targetId] = draggedItem.choice.id;\n onChange(newValue);\n }\n } else if (draggedItem.id && draggedItem.id !== targetId) {\n const newValue = { ...value };\n newValue[targetId] = draggedItem.choice.id;\n delete newValue[draggedItem.id];\n onChange(newValue);\n }\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 value,\n onChange,\n choicesPosition,\n choices,\n correctResponse,\n disabled,\n feedback,\n showCorrectAnswer,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n layout,\n instanceId,\n } = this.props;\n\n const choicePosition = choicesPosition || 'below';\n const style = { display: 'flex', minWidth: '100px', ...this.getPositionDirection(choicePosition) };\n\n return (\n <DragProvider\n onDragStart={this.handleDragStart}\n onDragEnd={this.handleDragEnd}\n collisionDetection={rectIntersection}\n >\n <div ref={(ref) => (this.rootRef = ref)} style={style}>\n <Choices\n choicePosition={choicePosition}\n choices={choices}\n value={value}\n duplicates={duplicates}\n disabled={disabled}\n instanceId={instanceId}\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 instanceId={instanceId}\n isDragging={!!this.state.activeDragItem}\n />\n <DragOverlay style={{ pointerEvents: 'none' }} dropAnimation={this.state.dropAnimation}>\n {this.renderDragOverlay()}\n </DragOverlay>\n </div>\n </DragProvider>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -153,4 +153,4 @@ var closestDroppableKeyboardCoordinates = exports.closestDroppableKeyboardCoordi
|
|
|
153
153
|
var distance = function distance(a, b) {
|
|
154
154
|
return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));
|
|
155
155
|
};
|
|
156
|
-
//# sourceMappingURL=keyboard-coordinates.js.map
|
|
156
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIkNIT0lDRV9CT0FSRF9JRCIsImNsb3Nlc3REcm9wcGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwiZXhwb3J0cyIsImV2ZW50IiwiX3JlZiIsIl9hY3RpdmUkZGF0YSIsImFjdGl2ZSIsImNvbnRleHQiLCJjdXJyZW50Q29vcmRpbmF0ZXMiLCJjb2RlIiwiaXNUYWIiLCJLZXlib2FyZENvZGUiLCJUYWIiLCJpc0Fycm93IiwiRG93biIsIlVwIiwiTGVmdCIsIlJpZ2h0IiwidW5kZWZpbmVkIiwiZGVmYXVsdEtleWJvYXJkQ29vcmRpbmF0ZUdldHRlciIsInByZXZlbnREZWZhdWx0IiwiZHJvcHBhYmxlUmVjdHMiLCJkcm9wcGFibGVDb250YWluZXJzIiwiY29sbGlzaW9uUmVjdCIsInNpemUiLCJkcmFnZ2VkRGF0YSIsImRhdGEiLCJjdXJyZW50Iiwib3duRHJvcElkIiwiZnJvbUNob2ljZSIsImlkIiwiY29uY2F0IiwidGFyZ2V0cyIsImJvYXJkVGFyZ2V0IiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfc3RlcCR2YWx1ZSIsIl9zbGljZWRUb0FycmF5MiIsImNvbnRhaW5lciIsImRpc2FibGVkIiwicmVjdCIsImdldCIsImNlbnRlciIsIngiLCJsZWZ0Iiwid2lkdGgiLCJ5IiwidG9wIiwiaGVpZ2h0IiwiZHJvcFBvc2l0aW9uIiwidGFyZ2V0IiwicHVzaCIsImVyciIsInJldmVyc2UiLCJzaGlmdEtleSIsInNvcnQiLCJiIiwiTWF0aCIsImFicyIsImRyYWdnZWRDZW50ZXIiLCJjdXJyZW50SW5kZXgiLCJmaW5kSW5kZXgiLCJyaWdodCIsImJvdHRvbSIsIm1pbkRpc3QiLCJJbmZpbml0eSIsImkiLCJkaXN0IiwiZGlzdGFuY2UiLCJuZXh0SW5kZXgiLCJzcXJ0IiwicG93Il0sInNvdXJjZXMiOlsiLi4vc3JjL2tleWJvYXJkLWNvb3JkaW5hdGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmF1bHRLZXlib2FyZENvb3JkaW5hdGVHZXR0ZXIsIEtleWJvYXJkQ29kZSB9IGZyb20gJ0BkbmQta2l0L2NvcmUnO1xuXG4vLyBNYXRjaGVzIHRoZSBpZCBgZHJhZy1pbi10aGUtYmxhbmstZHAuanN4YCByZWdpc3RlcnMgZm9yIHRoZSBjaG9pY2UgYm9hcmQncyBkcm9wcGFibGUuXG5jb25zdCBDSE9JQ0VfQk9BUkRfSUQgPSAnZHJhZy1pbi10aGUtYmxhbmstZHJvcHBhYmxlJztcblxuLyoqXG4gKiBDdXN0b20ga2V5Ym9hcmQgY29vcmRpbmF0ZSBnZXR0ZXIgZm9yIGRyYWctaW4tdGhlLWJsYW5rJ3MgVGFiLWJhc2VkIHBsYWNlbWVudC5cbiAqXG4gKiBUYWIvU2hpZnQrVGFiIGN5Y2xlIHRoZSBkcmFnZ2VkIGl0ZW0gZGlyZWN0bHkgb250byB0aGUgbmV4dC9wcmV2aW91cyBlbmFibGVkXG4gKiBkcm9wcGFibGUg4oCUIGEgYmxhbmsgKGBtYXNrLWJsYW5rLWRyb3Ate2lkfWApLCBzb3J0ZWQgYnkgb24tc2NyZWVuIHBvc2l0aW9uXG4gKiAodG9wLXRvLWJvdHRvbSwgdGhlbiBsZWZ0LXRvLXJpZ2h0LCBzaW5jZSBibGFua3Mgc2l0IGlubGluZSBpbiBmbG93aW5nIHRleHQgcmF0aGVyXG4gKiB0aGFuIGEgc2ltcGxlIGxpc3QpIOKAlCBmb2xsb3dlZCBieSB0aGUgY2hvaWNlIGJvYXJkIGFzIGEgZml4ZWQgbGFzdCBzdG9wIChzZWUgYmVsb3dcbiAqIGZvciB3aHkgdGhlIGJvYXJkIGlzbid0IHNvcnRlZCBhbG9uZ3NpZGUgdGhlIGJsYW5rcykuXG4gKlxuICogQXJyb3cga2V5cyBhcmUgZGVsZWdhdGVkIHRvIGRuZC1raXQncyBvd24gYGRlZmF1bHRLZXlib2FyZENvb3JkaW5hdGVHZXR0ZXJgLCBsZWF2aW5nXG4gKiB0aGUgZXhpc3RpbmcgZnJlZS1mb3JtIGFycm93LWtleSBkcmFnZ2luZyBiZWhhdmlvciBjb21wbGV0ZWx5IHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsb3Nlc3REcm9wcGFibGVLZXlib2FyZENvb3JkaW5hdGVzID0gKGV2ZW50LCB7IGFjdGl2ZSwgY29udGV4dCwgY3VycmVudENvb3JkaW5hdGVzIH0pID0+IHtcbiAgY29uc3QgeyBjb2RlIH0gPSBldmVudDtcbiAgY29uc3QgaXNUYWIgPSBjb2RlID09PSBLZXlib2FyZENvZGUuVGFiO1xuICBjb25zdCBpc0Fycm93ID1cbiAgICBjb2RlID09PSBLZXlib2FyZENvZGUuRG93biB8fCBjb2RlID09PSBLZXlib2FyZENvZGUuVXAgfHwgY29kZSA9PT0gS2V5Ym9hcmRDb2RlLkxlZnQgfHwgY29kZSA9PT0gS2V5Ym9hcmRDb2RlLlJpZ2h0O1xuXG4gIGlmICghaXNUYWIgJiYgIWlzQXJyb3cpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGlzQXJyb3cpIHtcbiAgICByZXR1cm4gZGVmYXVsdEtleWJvYXJkQ29vcmRpbmF0ZUdldHRlcihldmVudCwgeyBjb250ZXh0LCBjdXJyZW50Q29vcmRpbmF0ZXMgfSk7XG4gIH1cblxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gIGNvbnN0IHsgZHJvcHBhYmxlUmVjdHMsIGRyb3BwYWJsZUNvbnRhaW5lcnMsIGNvbGxpc2lvblJlY3QgfSA9IGNvbnRleHQ7XG5cbiAgaWYgKCFkcm9wcGFibGVSZWN0cyB8fCBkcm9wcGFibGVSZWN0cy5zaXplID09PSAwKSB7XG4gICAgcmV0dXJuIGN1cnJlbnRDb29yZGluYXRlcztcbiAgfVxuXG4gIC8vIEEgYmxhbmsgaXMgaXRzZWxmIGEgZHJvcHBhYmxlIGZvciBpdHMgb3duIHNsb3QgKFwibWFzay1ibGFuay1kcm9wLXtpZH1cIiksIGFuZFxuICAvLyBzaW11bHRhbmVvdXNseSBkcmFnZ2FibGUgZnJvbSB0aGF0IHNhbWUgc2xvdCDigJQgdGhlIHNhbWUgc2hhcGUgYXMgbWF0Y2gtbGlzdCdzXG4gIC8vIHBsYWNlZCBcInRhcmdldFwiIHRpbGVzLiBUaGF0IHNlbGYgZHJvcC16b25lIG11c3QgbmV2ZXIgYmUgdHJlYXRlZCBhcyBhIG5hdmlnYWJsZVxuICAvLyB0YXJnZXQ6IGV4Y2x1ZGUgaXQgb3V0cmlnaHQgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBhIGRpc3RhbmNlIHRocmVzaG9sZC5cbiAgY29uc3QgZHJhZ2dlZERhdGEgPSBhY3RpdmU/LmRhdGE/LmN1cnJlbnQ7XG4gIGNvbnN0IG93bkRyb3BJZCA9XG4gICAgZHJhZ2dlZERhdGEgJiYgZHJhZ2dlZERhdGEuZnJvbUNob2ljZSA9PT0gZmFsc2UgJiYgZHJhZ2dlZERhdGEuaWQgIT0gbnVsbFxuICAgICAgPyBgbWFzay1ibGFuay1kcm9wLSR7ZHJhZ2dlZERhdGEuaWR9YFxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgdGFyZ2V0cyA9IFtdO1xuICBsZXQgYm9hcmRUYXJnZXQ7XG5cbiAgZm9yIChjb25zdCBbaWQsIGNvbnRhaW5lcl0gb2YgZHJvcHBhYmxlQ29udGFpbmVycykge1xuICAgIGlmIChjb250YWluZXI/LmRpc2FibGVkKSBjb250aW51ZTtcbiAgICBpZiAoaWQgPT09IG93bkRyb3BJZCkgY29udGludWU7XG5cbiAgICBjb25zdCByZWN0ID0gZHJvcHBhYmxlUmVjdHMuZ2V0KGlkKTtcbiAgICBpZiAoIXJlY3QpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgY2VudGVyID0ge1xuICAgICAgeDogcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsXG4gICAgICB5OiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMixcbiAgICB9O1xuICAgIC8vIExhbmQgdGhlIGRyYWdnZWQgaXRlbSdzIG93biB0b3AtbGVmdCBjb3JuZXIgYXQgdGhlIHRhcmdldCdzIGNlbnRlci1sZWZ0IHBvaW50LFxuICAgIC8vIHJhdGhlciB0aGFuIGF0IHRoZSB0YXJnZXQncyBvd24gdG9wLWxlZnQgY29ybmVyIChhdm9pZHMgb3ZlcnNob290aW5nIGludG8gYVxuICAgIC8vIG5laWdoYm9yaW5nIGRyb3BwYWJsZSB3aGVuIHRoZSB0YXJnZXQgaXMgbXVjaCB3aWRlciB0aGFuIHRoZSBkcmFnZ2VkIGl0ZW0pLlxuICAgIGNvbnN0IGRyb3BQb3NpdGlvbiA9IHtcbiAgICAgIHg6IHJlY3QubGVmdCxcbiAgICAgIHk6IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyLFxuICAgIH07XG5cbiAgICBjb25zdCB0YXJnZXQgPSB7IGlkLCByZWN0LCBkcm9wUG9zaXRpb24sIGNlbnRlciB9O1xuXG4gICAgaWYgKGlkID09PSBDSE9JQ0VfQk9BUkRfSUQpIHtcbiAgICAgIGJvYXJkVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRzLnB1c2godGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBpZiAodGFyZ2V0cy5sZW5ndGggPT09IDAgJiYgIWJvYXJkVGFyZ2V0KSB7XG4gICAgcmV0dXJuIGN1cnJlbnRDb29yZGluYXRlcztcbiAgfVxuXG4gIGNvbnN0IHJldmVyc2UgPSBldmVudC5zaGlmdEtleTtcblxuICB0YXJnZXRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICBpZiAoTWF0aC5hYnMoYS5jZW50ZXIueSAtIGIuY2VudGVyLnkpID4gMTApIHJldHVybiBhLmNlbnRlci55IC0gYi5jZW50ZXIueTtcbiAgICByZXR1cm4gYS5jZW50ZXIueCAtIGIuY2VudGVyLng7XG4gIH0pO1xuXG4gIC8vIFRoZSBjaG9pY2UgYm9hcmQgY2FuIGJlIGFuIGFyYml0cmFyaWx5IGxhcmdlIGNvbnRhaW5lciDigJQgZS5nLiBzZXZlcmFsIGNob2ljZXNcbiAgLy8gc3RhY2tlZCBiZXNpZGUgdGhlIG1hcmt1cCAoYGNob2ljZVBvc2l0aW9uOiAncmlnaHQnYC9gJ2xlZnQnYCkg4oCUIHNvIGl0cyBvd24gY2VudGVyXG4gIC8vIGNhbiBsYW5kIGFueXdoZXJlIHJlbGF0aXZlIHRvIHRoZSBibGFua3MgaXQgc2l0cyBiZXNpZGUsIGluY2x1ZGluZyBudW1lcmljYWxseVxuICAvLyBiZXR3ZWVuIHR3byBvZiB0aGVtLiBTb3J0aW5nIGl0IGJ5IHBvc2l0aW9uIHRoZSBzYW1lIHdheSBhcyBhIGJsYW5rIHdvdWxkIHRoZW5cbiAgLy8gaW50ZXJsZWF2ZSBpdCBpbnRvIHRoZSBtaWRkbGUgb2YgdGhlIGN5Y2xlLCBtYWtpbmcgYSBzaW5nbGUgVGFiIHByZXNzIGp1bXAgb3ZlclxuICAvLyBtb3JlIHRoYW4gb25lIGJsYW5rIChjb25maXJtZWQgbGl2ZTogd2l0aCAzIHN0YWNrZWQgY2hvaWNlcyBiZXNpZGUgd3JhcHBlZCB0ZXh0LFxuICAvLyB0aGUgYm9hcmQncyBjZW50ZXIgZmVsbCBiZXR3ZWVuIGJsYW5rIDIgYW5kIGJsYW5rIDMsIHNvIHRoZSB2ZXJ5IGZpcnN0IFRhYiBwcmVzc1xuICAvLyBmcm9tIHRoZSBwb29sIGxhbmRlZCBvbiBibGFuayAzLCBza2lwcGluZyBibGFua3MgMSBhbmQgMiBlbnRpcmVseSkuIEFuY2hvciBpdCBhcyBhXG4gIC8vIGZpeGVkIHN0b3AgYWZ0ZXIgZXZlcnkgYmxhbmssIGluIGV2ZXJ5IGxheW91dCwgaW5zdGVhZCBvZiB0cnVzdGluZyBpdHMgb3duIGJvdW5kcy5cbiAgaWYgKGJvYXJkVGFyZ2V0KSB7XG4gICAgdGFyZ2V0cy5wdXNoKGJvYXJkVGFyZ2V0KTtcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIGN1cnJlbnQgdGFyZ2V0OiB3aGljaGV2ZXIgdGFyZ2V0J3MgcmVjdCBhY3R1YWxseSBjb250YWlucyB0aGUgZHJhZ2dlZFxuICAvLyBpdGVtJ3Mgb3duIGNlbnRlci4gVGhpcyBob2xkcyByZWdhcmRsZXNzIG9mIGhvdyB0aGUgZHJhZ2dlZCBpdGVtJ3Mgc2l6ZSBjb21wYXJlc1xuICAvLyB0byB0aGUgdGFyZ2V0J3Mg4oCUIGEgY29tcGFjdCBjaGlwIGxhbmRlZCAocGVyIGBkcm9wUG9zaXRpb25gIGFib3ZlKSBhdCBhIG11Y2ggd2lkZXJcbiAgLy8gdGFyZ2V0J3MgbGVmdCBlZGdlIGlzIHN0aWxsIGNvbnRhaW5lZCB3aXRoaW4gdGhhdCB0YXJnZXQncyByZWN0LiBDb21wYXJpbmdcbiAgLy8gZGlzdGFuY2VzIGJldHdlZW4gcmVjb25zdHJ1Y3RlZCBjZW50ZXJzIGluc3RlYWQgYnJlYWtzIGRvd24gZm9yIGV4YWN0bHkgdGhhdCBzaGFwZVxuICAvLyAoYSBzbWFsbCBpdGVtIGluIGEgbXVjaCB3aWRlciB0YXJnZXQpOiB0aGUgcmVjb25zdHJ1Y3RlZCBjZW50ZXIgY2FuIGVuZCB1cCBjbG9zZXJcbiAgLy8gdG8gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcm9wcGFibGUgdGhhbiB0byB0aGUgb25lIHRoZSBpdGVtIGlzIGFjdHVhbGx5IHNpdHRpbmdcbiAgLy8gb24sIHNvIHRoZSAqbmV4dCogcHJlc3MgcmUtbWF0Y2hlcyB0aGUgd3JvbmcgdGFyZ2V0IGFuZCBsb29rcyBsaWtlIGl0IGRvZXMgbm90aGluZy5cbiAgY29uc3QgZHJhZ2dlZENlbnRlciA9IGNvbGxpc2lvblJlY3RcbiAgICA/IHsgeDogY29sbGlzaW9uUmVjdC5sZWZ0ICsgY29sbGlzaW9uUmVjdC53aWR0aCAvIDIsIHk6IGNvbGxpc2lvblJlY3QudG9wICsgY29sbGlzaW9uUmVjdC5oZWlnaHQgLyAyIH1cbiAgICA6IGN1cnJlbnRDb29yZGluYXRlcztcblxuICBsZXQgY3VycmVudEluZGV4ID0gdGFyZ2V0cy5maW5kSW5kZXgoXG4gICAgKHQpID0+XG4gICAgICBkcmFnZ2VkQ2VudGVyLnggPj0gdC5yZWN0LmxlZnQgJiZcbiAgICAgIGRyYWdnZWRDZW50ZXIueCA8PSB0LnJlY3QucmlnaHQgJiZcbiAgICAgIGRyYWdnZWRDZW50ZXIueSA+PSB0LnJlY3QudG9wICYmXG4gICAgICBkcmFnZ2VkQ2VudGVyLnkgPD0gdC5yZWN0LmJvdHRvbSxcbiAgKTtcblxuICAvLyBGYWxsIGJhY2sgdG8gbmVhcmVzdC1ieS1kcm9wUG9zaXRpb24gaWYgdGhlIGRyYWdnZWQgaXRlbSdzIGNlbnRlciBpc24ndCBzdHJpY3RseVxuICAvLyBpbnNpZGUgYW55IHRhcmdldCAoZS5nLiBtaWQtZmxpZ2h0IGFmdGVyIGEgZnJlZSBhcnJvdy1rZXkgbW92ZSkuXG4gIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgbGV0IG1pbkRpc3QgPSBJbmZpbml0eTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKGN1cnJlbnRDb29yZGluYXRlcywgdGFyZ2V0c1tpXS5kcm9wUG9zaXRpb24pO1xuXG4gICAgICBpZiAoZGlzdCA8IG1pbkRpc3QpIHtcbiAgICAgICAgbWluRGlzdCA9IGRpc3Q7XG4gICAgICAgIGN1cnJlbnRJbmRleCA9IGk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmV4dEluZGV4ID0gcmV2ZXJzZVxuICAgID8gKGN1cnJlbnRJbmRleCAtIDEgKyB0YXJnZXRzLmxlbmd0aCkgJSB0YXJnZXRzLmxlbmd0aFxuICAgIDogKGN1cnJlbnRJbmRleCArIDEpICUgdGFyZ2V0cy5sZW5ndGg7XG5cbiAgcmV0dXJuIHRhcmdldHNbbmV4dEluZGV4XS5kcm9wUG9zaXRpb247XG59O1xuXG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiBNYXRoLnNxcnQoKGEueCAtIGIueCkgKiogMiArIChhLnkgLSBiLnkpICoqIDIpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUE4RSxTQUFBQywyQkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEseUJBQUFDLE1B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
|
package/lib/mask.js
CHANGED
|
@@ -50,7 +50,7 @@ var getMark = function getMark(n) {
|
|
|
50
50
|
return (0, _lodashEs.get)(leave, 'marks', []).length;
|
|
51
51
|
});
|
|
52
52
|
if (mark) {
|
|
53
|
-
return mark.marks;
|
|
53
|
+
return mark.marks[0];
|
|
54
54
|
}
|
|
55
55
|
return null;
|
|
56
56
|
};
|
|
@@ -94,22 +94,17 @@ var _renderChildren = exports.renderChildren = function renderChildren(layout, v
|
|
|
94
94
|
var extraText = addText(parentNode, t);
|
|
95
95
|
return extraText ? acc + extraText : acc;
|
|
96
96
|
}, '');
|
|
97
|
-
var
|
|
98
|
-
if (
|
|
99
|
-
var
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
key: "".concat(key, "-").concat(Tag, "-").concat(tagIndex)
|
|
109
|
-
}, acc);
|
|
110
|
-
}, content));
|
|
111
|
-
} else {
|
|
112
|
-
children.push(content);
|
|
97
|
+
var mark = getMark(n);
|
|
98
|
+
if (mark) {
|
|
99
|
+
var markKey;
|
|
100
|
+
for (markKey in _serialization.MARK_TAGS) {
|
|
101
|
+
if (_serialization.MARK_TAGS[markKey] === mark.type) {
|
|
102
|
+
var Tag = markKey;
|
|
103
|
+
children.push(/*#__PURE__*/_react["default"].createElement(Tag, {
|
|
104
|
+
key: key
|
|
105
|
+
}, content));
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
113
108
|
}
|
|
114
109
|
} else if (content.length > 0) {
|
|
115
110
|
children.push(content);
|
|
@@ -121,13 +116,13 @@ var _renderChildren = exports.renderChildren = function renderChildren(layout, v
|
|
|
121
116
|
key: key
|
|
122
117
|
}, subNodes));
|
|
123
118
|
} else {
|
|
124
|
-
var
|
|
119
|
+
var _Tag = n.type;
|
|
125
120
|
if (n.nodes && n.nodes.length > 0) {
|
|
126
|
-
children.push(/*#__PURE__*/_react["default"].createElement(
|
|
121
|
+
children.push(/*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
|
|
127
122
|
key: key
|
|
128
123
|
}, n.data.attributes), subNodes));
|
|
129
124
|
} else {
|
|
130
|
-
children.push(/*#__PURE__*/_react["default"].createElement(
|
|
125
|
+
children.push(/*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
|
|
131
126
|
key: key
|
|
132
127
|
}, n.data.attributes)));
|
|
133
128
|
}
|
package/lib/mask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mask.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_styles","_mathRendering","_serialization","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Paragraph","styled","_ref","theme","paddingTop","spacing","paddingBottom","Spacer","display","width","restrictWhitespaceTypes","addText","parentNode","text","isWhitespace","trim","parentType","type","includes","undefined","getMark","n","mark","leaves","find","leave","get","marks","renderChildren","exports","layout","value","onChange","rootRenderChildren","elementType","children","nodes","index","key","concat","isMath","createElement","dangerouslySetInnerHTML","__html","innerHTML","c","_n$data","isDndComponent","data","dataset","component","object","content","reduce","acc","l","extraText","tagsToWrap","map","MARK_TAGS","markKey","reduceRight","Tag","tagIndex","subNodes","_extends2","attributes","MaskContainer","borderCollapse","padding","textAlign","Mask","_React$Component","props","_this","_classCallCheck2","id","internalContainerRef","React","createRef","_inherits2","_createClass2","componentDidMount","containerRef","current","renderMath","render","_this$props","handleChange","ref","Component","PropTypes","func","string","oneOfType","shape","instanceOf","Element"],"sources":["../src/mask.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { get } from 'lodash-es';\nimport { styled } from '@mui/material/styles';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { MARK_TAGS } from './serialization';\n\nconst Paragraph = styled('div')(({ theme }) => ({\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n}));\n\nconst Spacer = styled('span')(() => ({\n display: 'inline-block',\n width: '.75em',\n}));\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;\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 const isDndComponent = n.data?.dataset?.component === 'blank';\n\n if (isDndComponent) {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n\n children.push(c);\n\n if (isDndComponent) {\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 marks = getMark(n);\n\n if (marks?.length > 0) {\n const tagsToWrap = marks\n .map((mark) => Object.keys(MARK_TAGS).find((markKey) => MARK_TAGS[markKey] === mark.type))\n .filter(Boolean);\n\n if (tagsToWrap.length > 0) {\n // nest from the inside out so the first mark ends up as the outermost tag: <b><em>content</em></b>\n children.push(\n tagsToWrap.reduceRight((acc, Tag, tagIndex) => <Tag key={`${key}-${Tag}-${tagIndex}`}>{acc}</Tag>, content),\n );\n } else {\n children.push(content);\n }\n } else if (content.length > 0) {\n children.push(content);\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 = styled('div')(() => ({\n display: 'initial',\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\n/**\n * Renders a layout that uses the slate.js Value model structure.\n */\nexport default class Mask extends React.Component {\n constructor(props) {\n super(props);\n this.internalContainerRef = React.createRef();\n }\n\n static propTypes = {\n renderChildren: PropTypes.func,\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n elementType: PropTypes.string,\n containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.instanceOf(Element) })]),\n };\n\n componentDidMount() {\n const containerRef = this.props.containerRef || this.internalContainerRef;\n if (containerRef.current && typeof renderMath === 'function') {\n renderMath(containerRef.current);\n }\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, containerRef } = this.props;\n const children = renderChildren(layout, value, this.handleChange, this.props.renderChildren, null, elementType);\n const ref = containerRef || this.internalContainerRef;\n\n return <MaskContainer ref={ref}>{children}</MaskContainer>;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"mask.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_styles","_mathRendering","_serialization","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Paragraph","styled","_ref","theme","paddingTop","spacing","paddingBottom","Spacer","display","width","restrictWhitespaceTypes","addText","parentNode","text","isWhitespace","trim","parentType","type","includes","undefined","getMark","n","mark","leaves","find","leave","get","marks","renderChildren","exports","layout","value","onChange","rootRenderChildren","elementType","children","nodes","index","key","concat","isMath","createElement","dangerouslySetInnerHTML","__html","innerHTML","c","_n$data","isDndComponent","data","dataset","component","object","content","reduce","acc","l","extraText","markKey","MARK_TAGS","Tag","subNodes","_Tag","_extends2","attributes","MaskContainer","borderCollapse","padding","textAlign","Mask","_React$Component","props","_this","_classCallCheck2","id","internalContainerRef","React","createRef","_inherits2","_createClass2","componentDidMount","containerRef","current","renderMath","render","_this$props","handleChange","ref","Component","PropTypes","func","string","oneOfType","shape","instanceOf","Element"],"sources":["../src/mask.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { get } from 'lodash-es';\nimport { styled } from '@mui/material/styles';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { MARK_TAGS } from './serialization';\n\nconst Paragraph = styled('div')(({ theme }) => ({\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n}));\n\nconst Spacer = styled('span')(() => ({\n display: 'inline-block',\n width: '.75em',\n}));\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 const isDndComponent = n.data?.dataset?.component === 'blank';\n\n if (isDndComponent) {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n\n children.push(c);\n\n if (isDndComponent) {\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 }\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 = styled('div')(() => ({\n display: 'initial',\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\n/**\n * Renders a layout that uses the slate.js Value model structure.\n */\nexport default class Mask extends React.Component {\n constructor(props) {\n super(props);\n this.internalContainerRef = React.createRef();\n }\n\n static propTypes = {\n renderChildren: PropTypes.func,\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n elementType: PropTypes.string,\n containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.instanceOf(Element) })]),\n };\n\n componentDidMount() {\n const containerRef = this.props.containerRef || this.internalContainerRef;\n if (containerRef.current && typeof renderMath === 'function') {\n renderMath(containerRef.current);\n }\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, containerRef } = this.props;\n const children = renderChildren(layout, value, this.handleChange, this.props.renderChildren, null, elementType);\n const ref = containerRef || this.internalContainerRef;\n\n return <MaskContainer ref={ref}>{children}</MaskContainer>;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-lib/mask-markup",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.6-beta.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"@emotion/styled": "^11.14.1",
|
|
14
14
|
"@mui/icons-material": "^7.3.4",
|
|
15
15
|
"@mui/material": "^7.3.4",
|
|
16
|
-
"@pie-lib/drag": "^4.
|
|
17
|
-
"@pie-lib/editable-html-tip-tap": "^2.1.
|
|
18
|
-
"@pie-lib/math-rendering": "^5.
|
|
19
|
-
"@pie-lib/render-ui": "^
|
|
16
|
+
"@pie-lib/drag": "^4.0.2",
|
|
17
|
+
"@pie-lib/editable-html-tip-tap": "^2.1.20-beta.1",
|
|
18
|
+
"@pie-lib/math-rendering": "^5.0.2",
|
|
19
|
+
"@pie-lib/render-ui": "^6.1.0",
|
|
20
20
|
"classnames": "^2.2.6",
|
|
21
21
|
"debug": "^4.1.1",
|
|
22
22
|
"lodash-es": "^4.17.23",
|
|
@@ -28,5 +28,5 @@
|
|
|
28
28
|
"keywords": [],
|
|
29
29
|
"author": "",
|
|
30
30
|
"license": "ISC",
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "433bcb776c2975739e7417f133d31cd996164116"
|
|
32
32
|
}
|
package/src/choices/choice.jsx
CHANGED
|
@@ -8,12 +8,12 @@ import { color } from '@pie-lib/render-ui';
|
|
|
8
8
|
|
|
9
9
|
export const DRAG_TYPE = 'MaskBlank';
|
|
10
10
|
|
|
11
|
-
const StyledChoice = styled('span')(({ theme, disabled
|
|
11
|
+
const StyledChoice = styled('span')(({ theme, disabled }) => ({
|
|
12
12
|
border: `solid 0px ${theme.palette.primary.main}`,
|
|
13
|
+
borderRadius: theme.spacing(2),
|
|
13
14
|
margin: theme.spacing(0.5),
|
|
14
15
|
transform: 'translate(0, 0)',
|
|
15
16
|
display: 'inline-flex',
|
|
16
|
-
opacity: selected ? 0.7 : 1,
|
|
17
17
|
...(disabled && {}),
|
|
18
18
|
}));
|
|
19
19
|
|
|
@@ -55,7 +55,7 @@ const StyledChipLabel = styled('span')(() => ({
|
|
|
55
55
|
},
|
|
56
56
|
}));
|
|
57
57
|
|
|
58
|
-
export default function Choice({ choice, disabled, instanceId
|
|
58
|
+
export default function Choice({ choice, disabled, instanceId }) {
|
|
59
59
|
const rootRef = useRef(null);
|
|
60
60
|
|
|
61
61
|
const { attributes, listeners, setNodeRef, isDragging } = useDraggable({
|
|
@@ -68,15 +68,6 @@ export default function Choice({ choice, disabled, instanceId, selectedItem, onS
|
|
|
68
68
|
renderMath(rootRef.current);
|
|
69
69
|
}, [choice.value]);
|
|
70
70
|
|
|
71
|
-
const isSelected = !!selectedItem && selectedItem.fromChoice === true && selectedItem.choice.id === choice.id;
|
|
72
|
-
|
|
73
|
-
const handleClick = (e) => {
|
|
74
|
-
if (disabled) return;
|
|
75
|
-
|
|
76
|
-
e.stopPropagation();
|
|
77
|
-
onSelectClick?.({ choice, instanceId, fromChoice: true, type: DRAG_TYPE });
|
|
78
|
-
};
|
|
79
|
-
|
|
80
71
|
return (
|
|
81
72
|
<StyledChoice
|
|
82
73
|
ref={setNodeRef}
|
|
@@ -89,8 +80,6 @@ export default function Choice({ choice, disabled, instanceId, selectedItem, onS
|
|
|
89
80
|
: {}
|
|
90
81
|
}
|
|
91
82
|
disabled={disabled}
|
|
92
|
-
selected={isSelected}
|
|
93
|
-
onClick={handleClick}
|
|
94
83
|
{...listeners}
|
|
95
84
|
{...attributes}
|
|
96
85
|
>
|
|
@@ -108,6 +97,4 @@ Choice.propTypes = {
|
|
|
108
97
|
choice: PropTypes.object.isRequired,
|
|
109
98
|
disabled: PropTypes.bool,
|
|
110
99
|
instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
111
|
-
selectedItem: PropTypes.object,
|
|
112
|
-
onSelectClick: PropTypes.func,
|
|
113
100
|
};
|
package/src/choices/index.jsx
CHANGED
|
@@ -12,9 +12,6 @@ export default class Choices extends React.Component {
|
|
|
12
12
|
value: PropTypes.object,
|
|
13
13
|
choicePosition: PropTypes.string.isRequired,
|
|
14
14
|
instanceId: PropTypes.string, // Added for drag isolation
|
|
15
|
-
selectedItem: PropTypes.object,
|
|
16
|
-
onSelectClick: PropTypes.func,
|
|
17
|
-
onPlacementClick: PropTypes.func,
|
|
18
15
|
};
|
|
19
16
|
|
|
20
17
|
getStyleForWrapper = () => {
|
|
@@ -43,22 +40,8 @@ export default class Choices extends React.Component {
|
|
|
43
40
|
}
|
|
44
41
|
};
|
|
45
42
|
|
|
46
|
-
handlePoolClick = () => {
|
|
47
|
-
const { disabled, selectedItem, onPlacementClick } = this.props;
|
|
48
|
-
|
|
49
|
-
if (disabled) return;
|
|
50
|
-
|
|
51
|
-
if (selectedItem) {
|
|
52
|
-
// `undefined` targetId means "the choice board" — drag-in-the-blank.jsx's
|
|
53
|
-
// commitPlacement routes it to removing the item from wherever it currently is.
|
|
54
|
-
onPlacementClick?.(undefined);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Pool background clicked with nothing selected: nothing to place.
|
|
58
|
-
};
|
|
59
|
-
|
|
60
43
|
render() {
|
|
61
|
-
const { disabled, duplicates, choices, value, instanceId
|
|
44
|
+
const { disabled, duplicates, choices, value, instanceId } = this.props;
|
|
62
45
|
const filteredChoices = choices.filter((c) => {
|
|
63
46
|
if (duplicates === true) {
|
|
64
47
|
return true;
|
|
@@ -69,17 +52,10 @@ export default class Choices extends React.Component {
|
|
|
69
52
|
const elementStyle = { ...this.getStyleForWrapper(), minWidth: '100px' };
|
|
70
53
|
|
|
71
54
|
return (
|
|
72
|
-
<div style={elementStyle}
|
|
55
|
+
<div style={elementStyle}>
|
|
73
56
|
<DragDroppablePlaceholder disabled={disabled} instanceId={instanceId}>
|
|
74
57
|
{filteredChoices.map((c, index) => (
|
|
75
|
-
<Choice
|
|
76
|
-
key={`${c.value}-${index}`}
|
|
77
|
-
disabled={disabled}
|
|
78
|
-
choice={c}
|
|
79
|
-
instanceId={instanceId}
|
|
80
|
-
selectedItem={selectedItem}
|
|
81
|
-
onSelectClick={onSelectClick}
|
|
82
|
-
/>
|
|
58
|
+
<Choice key={`${c.value}-${index}`} disabled={disabled} choice={c} instanceId={instanceId} />
|
|
83
59
|
))}
|
|
84
60
|
</DragDroppablePlaceholder>
|
|
85
61
|
</div>
|