@pie-element/hotspot 9.3.4-next.3 → 10.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configure/lib/DeleteWidget.js +30 -43
- package/configure/lib/DeleteWidget.js.map +1 -1
- package/configure/lib/button.js +26 -45
- package/configure/lib/button.js.map +1 -1
- package/configure/lib/buttons/circle.js +20 -27
- package/configure/lib/buttons/circle.js.map +1 -1
- package/configure/lib/buttons/polygon.js +26 -33
- package/configure/lib/buttons/polygon.js.map +1 -1
- package/configure/lib/buttons/rectangle.js +26 -33
- package/configure/lib/buttons/rectangle.js.map +1 -1
- package/configure/lib/defaults.js +2 -3
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/hotspot-circle.js +132 -198
- package/configure/lib/hotspot-circle.js.map +1 -1
- package/configure/lib/hotspot-container.js +250 -355
- package/configure/lib/hotspot-container.js.map +1 -1
- package/configure/lib/hotspot-drawable.js +360 -472
- package/configure/lib/hotspot-drawable.js.map +1 -1
- package/configure/lib/hotspot-palette.js +92 -139
- package/configure/lib/hotspot-palette.js.map +1 -1
- package/configure/lib/hotspot-polygon.js +212 -317
- package/configure/lib/hotspot-polygon.js.map +1 -1
- package/configure/lib/hotspot-rectangle.js +128 -192
- package/configure/lib/hotspot-rectangle.js.map +1 -1
- package/configure/lib/icons.js.map +1 -1
- package/configure/lib/image-konva.js +46 -86
- package/configure/lib/image-konva.js.map +1 -1
- package/configure/lib/index.js +162 -222
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/root.js +301 -393
- package/configure/lib/root.js.map +1 -1
- package/configure/lib/shapes/circle.js +69 -101
- package/configure/lib/shapes/circle.js.map +1 -1
- package/configure/lib/shapes/index.js +4 -12
- package/configure/lib/shapes/index.js.map +1 -1
- package/configure/lib/shapes/polygon.js +64 -96
- package/configure/lib/shapes/polygon.js.map +1 -1
- package/configure/lib/shapes/rectagle.js +69 -101
- package/configure/lib/shapes/rectagle.js.map +1 -1
- package/configure/lib/shapes/utils.js +2 -8
- package/configure/lib/shapes/utils.js.map +1 -1
- package/configure/lib/upload-control.js +25 -52
- package/configure/lib/upload-control.js.map +1 -1
- package/configure/lib/utils.js +84 -137
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +11 -10
- package/configure/src/__tests__/hotspot-container.test.js +50 -19
- package/configure/src/__tests__/hotspot-drawable.test.js +55 -34
- package/configure/src/__tests__/index.test.js +167 -5
- package/configure/src/__tests__/root.test.js +89 -63
- package/configure/src/button.jsx +12 -20
- package/configure/src/hotspot-circle.jsx +5 -18
- package/configure/src/hotspot-container.jsx +82 -98
- package/configure/src/hotspot-drawable.jsx +43 -45
- package/configure/src/hotspot-palette.jsx +45 -37
- package/configure/src/hotspot-polygon.jsx +4 -20
- package/configure/src/hotspot-rectangle.jsx +4 -17
- package/configure/src/index.js +12 -2
- package/configure/src/root.jsx +85 -79
- package/configure/src/upload-control.jsx +6 -16
- package/controller/lib/defaults.js +2 -3
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +151 -205
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +14 -34
- package/controller/lib/utils.js.map +1 -1
- package/controller/package.json +2 -2
- package/lib/hotspot/circle.js +110 -169
- package/lib/hotspot/circle.js.map +1 -1
- package/lib/hotspot/container.js +174 -260
- package/lib/hotspot/container.js.map +1 -1
- package/lib/hotspot/icons.js.map +1 -1
- package/lib/hotspot/image-konva-tooltip.js +65 -112
- package/lib/hotspot/image-konva-tooltip.js.map +1 -1
- package/lib/hotspot/index.js +135 -198
- package/lib/hotspot/index.js.map +1 -1
- package/lib/hotspot/polygon.js +150 -214
- package/lib/hotspot/polygon.js.map +1 -1
- package/lib/hotspot/rectangle.js +128 -185
- package/lib/hotspot/rectangle.js.map +1 -1
- package/lib/index.js +187 -256
- package/lib/index.js.map +1 -1
- package/lib/session-updater.js +12 -18
- package/lib/session-updater.js.map +1 -1
- package/package.json +14 -11
- package/src/__tests__/container.test.jsx +27 -175
- package/src/__tests__/index.test.js +70 -30
- package/src/hotspot/circle.jsx +2 -13
- package/src/hotspot/container.jsx +35 -50
- package/src/hotspot/index.jsx +16 -28
- package/src/hotspot/polygon.jsx +4 -13
- package/src/hotspot/rectangle.jsx +5 -15
- package/src/index.js +21 -12
- package/configure/src/__tests__/DeleteWidget.test.js +0 -64
- package/configure/src/__tests__/__snapshots__/hotspot-container.test.js.snap +0 -192
- package/configure/src/__tests__/__snapshots__/hotspot-drawable.test.js.snap +0 -562
- package/configure/src/__tests__/__snapshots__/root.test.js.snap +0 -469
- package/src/__tests__/__snapshots__/container.test.jsx.snap +0 -264
- package/src/__tests__/__snapshots__/index.test.js.snap +0 -81
- package/src/__tests__/__snapshots__/polygon.test.jsx.snap +0 -192
- package/src/__tests__/__snapshots__/rectangle.test.jsx.snap +0 -127
- package/src/__tests__/polygon.test.jsx +0 -230
- package/src/__tests__/rectangle.test.jsx +0 -232
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","dropdown","Root","fieldType","color","onColorChanged","props","cType","value","resizeType","model","dimensions","shapes","configuration","preserveAspectRatio","onUpdateImageDimension","onUpdateShapes","nextImageDimensions","updatedDimensions","enabled","shapesArray","updatedShapes","classes","imageSupport","uploadSoundSupport","onConfigurationChanged","onImageUpload","onModelChangedByConfig","onPromptChanged","onRationaleChanged","onTeacherInstructionsChanged","baseInputConfiguration","contentDimensions","maxImageWidth","maxImageHeight","multipleCorrect","partialScoring","prompt","rationale","settingsPanelDisabled","spellCheck","teacherInstructions","withRubric","mathMlOptions","language","languageChoices","errors","extraCSSRules","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","shapesError","selectionsError","selections","teacherInstructionsError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","options","panelProperties","rubricEnabled","getPluginProps","Settings","Properties","promptContainer","inputConfiguration","errorText","flexContainer","subheading","tooltip","hotspotColor","hotspotList","outlineColor","outlineList","handleColorChange","imageUrl","selectedHotspotColor","hoverOutlineColor","strokeWidth","add","width","e","handleOnUpdateImageDimensions","field","height","React","Component","styles","theme","display","marginBottom","spacing","unit","flex","paddingTop","marginRight","alignItems","fontSize","typography","whiteSpace","maxWidth","palette","error","main","propTypes","PropTypes","object","isRequired","shape","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer, NumberTextField } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport HotspotPalette from './hotspot-palette';\nimport HotspotContainer from './hotspot-container';\nimport { updateImageDimensions, generateValidationMessage, getUpdatedShapes, getAllShapes, groupShapes } from './utils';\n\nconst { Panel, toggle, dropdown } = settings;\n\nexport class Root extends React.Component {\n handleColorChange = (fieldType, color) => {\n const { onColorChanged } = this.props;\n const cType = `${fieldType}Color`;\n\n onColorChanged(cType, color);\n };\n\n handleOnUpdateImageDimensions = (value, resizeType) => {\n const {\n model: { dimensions, shapes },\n configuration: { preserveAspectRatio = {} },\n onUpdateImageDimension,\n onUpdateShapes,\n } = this.props;\n\n const nextImageDimensions = { ...dimensions, [resizeType]: value };\n\n // if preserveAspectRatio.enabled, updateImageDimensions function makes sure aspect ratio is kept\n const updatedDimensions = updateImageDimensions(\n dimensions,\n nextImageDimensions,\n preserveAspectRatio.enabled,\n resizeType,\n );\n // transform shapes map into shapes array\n const shapesArray = getAllShapes(shapes);\n // transform all the shapes to fit the re-sized image\n const updatedShapes = getUpdatedShapes(dimensions, updatedDimensions, shapesArray);\n // transform shapes array back into shapes map\n\n onUpdateShapes(groupShapes(updatedShapes));\n onUpdateImageDimension(updatedDimensions);\n };\n\n render() {\n const {\n classes,\n configuration,\n model,\n imageSupport,\n uploadSoundSupport,\n onConfigurationChanged,\n onImageUpload,\n onModelChangedByConfig,\n onPromptChanged,\n onRationaleChanged,\n onUpdateImageDimension,\n onTeacherInstructionsChanged,\n onUpdateShapes,\n } = this.props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n multipleCorrect = {},\n partialScoring = {},\n preserveAspectRatio = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n shapes: shapesError,\n selections: selectionsError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n multipleCorrect: multipleCorrect.settings && toggle(multipleCorrect.label),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onModelChangedByConfig}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptContainer}>\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptContainer}>\n <EditableHtml\n markup={model.prompt || ''}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.subheading} variant=\"subheading\">\n Define Hotspot\n </Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'left'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ float: 'right' }} />\n </Tooltip>\n </div>\n\n <HotspotPalette\n hotspotColor={model.hotspotColor}\n hotspotList={model.hotspotList}\n outlineColor={model.outlineColor}\n outlineList={model.outlineList}\n onHotspotColorChange={(color) => this.handleColorChange('hotspot', color)}\n onOutlineColorChange={(color) => this.handleColorChange('outline', color)}\n />\n\n <HotspotContainer\n dimensions={model.dimensions}\n imageUrl={model.imageUrl}\n multipleCorrect={model.multipleCorrect}\n hasErrors={!!shapesError || !!selectionsError}\n hotspotColor={model.hotspotColor}\n outlineColor={model.outlineColor}\n selectedHotspotColor={model.selectedHotspotColor}\n hoverOutlineColor={model.hoverOutlineColor}\n onUpdateImageDimension={onUpdateImageDimension}\n onUpdateShapes={onUpdateShapes}\n onImageUpload={onImageUpload}\n shapes={model.shapes}\n strokeWidth={model.strokeWidth}\n preserveAspectRatioEnabled={preserveAspectRatio.enabled}\n insertImage={imageSupport && imageSupport.add}\n />\n {shapesError && <div className={classes.errorText}>{shapesError}</div>}\n {selectionsError && <div className={classes.errorText}>{selectionsError}</div>}\n\n {model.imageUrl && (\n <React.Fragment>\n <Typography variant=\"subheading\">Image Dimensions</Typography>\n\n <div className={classes.dimensions}>\n <NumberTextField\n key=\"hotspot-manual-width\"\n label=\"Width\"\n value={model.dimensions.width}\n min={0}\n onChange={(e, value) => this.handleOnUpdateImageDimensions(value, 'width')}\n showErrorWhenOutsideRange\n className={classes.field}\n />\n\n <NumberTextField\n key=\"hotspot-manual-height\"\n label=\"Height\"\n value={model.dimensions.height}\n min={0}\n onChange={(e, value) => this.handleOnUpdateImageDimensions(value, 'height')}\n showErrorWhenOutsideRange\n className={classes.field}\n />\n </div>\n </React.Fragment>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptContainer}>\n <EditableHtml\n markup={model.rationale || ''}\n onChange={onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n dimensions: {\n display: 'flex',\n marginBottom: theme.spacing.unit * 1.5,\n },\n field: {\n flex: 1,\n width: '90%',\n },\n promptContainer: {\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n width: '100%',\n },\n subheading: {\n marginRight: theme.spacing.unit,\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nRoot.propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n onImageUpload: PropTypes.func.isRequired,\n onColorChanged: PropTypes.func.isRequired,\n onPromptChanged: PropTypes.func.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n onUpdateShapes: PropTypes.func.isRequired,\n onModelChangedByConfig: PropTypes.func.isRequired,\n onRationaleChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n onTeacherInstructionsChanged: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
|
|
1
|
+
{"version":3,"file":"root.js","names":["_react","_interopRequireDefault","require","_configUi","_propTypes","_editableHtml","_styles","_Typography","_Info","_Tooltip","_hotspotPalette","_hotspotContainer","_utils","Panel","toggle","dropdown","settings","DimensionsContainer","styled","theme","display","marginBottom","spacing","FieldContainer","flex","width","PromptContainer","InputContainer","paddingTop","marginTop","SubHeading","Typography","marginRight","FlexContainer","alignItems","StyledTooltip","Tooltip","fontSize","typography","whiteSpace","maxWidth","ErrorText","color","palette","error","main","Root","React","Component","constructor","args","_defineProperty2","default","fieldType","onColorChanged","props","cType","value","resizeType","model","dimensions","shapes","configuration","preserveAspectRatio","onUpdateImageDimension","onUpdateShapes","nextImageDimensions","updatedDimensions","updateImageDimensions","enabled","shapesArray","getAllShapes","updatedShapes","getUpdatedShapes","groupShapes","render","imageSupport","uploadSoundSupport","onConfigurationChanged","onImageUpload","onModelChangedByConfig","onPromptChanged","onRationaleChanged","onTeacherInstructionsChanged","baseInputConfiguration","contentDimensions","maxImageWidth","maxImageHeight","multipleCorrect","partialScoring","prompt","rationale","settingsPanelDisabled","spellCheck","teacherInstructions","withRubric","mathMlOptions","language","languageChoices","errors","extraCSSRules","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","shapesError","selections","selectionsError","teacherInstructionsError","validationMessage","generateValidationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","options","panelProperties","rubricEnabled","getPluginProps","createElement","layout","ConfigLayout","hideSettings","onChangeModel","onChangeConfiguration","groups","Settings","Properties","markup","onChange","nonEmpty","pluginProps","inputConfiguration","languageCharactersProps","variant","disableFocusListener","disableTouchListener","placement","title","style","float","hotspotColor","hotspotList","outlineColor","outlineList","onHotspotColorChange","handleColorChange","onOutlineColorChange","imageUrl","hasErrors","selectedHotspotColor","hoverOutlineColor","strokeWidth","preserveAspectRatioEnabled","insertImage","add","Fragment","NumberTextField","key","min","e","handleOnUpdateImageDimensions","showErrorWhenOutsideRange","height","exports","propTypes","PropTypes","object","isRequired","shape","func","delete","_default"],"sources":["../src/root.jsx"],"sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer, NumberTextField } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\nimport Info from '@mui/icons-material/Info';\nimport Tooltip from '@mui/material/Tooltip';\nimport HotspotPalette from './hotspot-palette';\nimport HotspotContainer from './hotspot-container';\nimport { updateImageDimensions, generateValidationMessage, getUpdatedShapes, getAllShapes, groupShapes } from './utils';\n\nconst { Panel, toggle, dropdown } = settings;\n\nconst DimensionsContainer = styled('div')(({ theme }) => ({\n display: 'flex',\n marginBottom: theme.spacing(1.5),\n}));\n\nconst FieldContainer = styled('div')({\n flex: 1,\n width: '90%',\n});\n\nconst PromptContainer = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n width: '100%',\n}));\n\nconst SubHeading = styled(Typography)(({ theme }) => ({\n marginRight: theme.spacing(1),\n}));\n\nconst FlexContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n});\n\nconst StyledTooltip = styled(Tooltip)(({ theme }) => ({\n '& .MuiTooltip-tooltip': {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nexport class Root extends React.Component {\n handleColorChange = (fieldType, color) => {\n const { onColorChanged } = this.props;\n const cType = `${fieldType}Color`;\n\n onColorChanged(cType, color);\n };\n\n handleOnUpdateImageDimensions = (value, resizeType) => {\n const {\n model: { dimensions, shapes },\n configuration: { preserveAspectRatio = {} },\n onUpdateImageDimension,\n onUpdateShapes,\n } = this.props;\n\n const nextImageDimensions = { ...dimensions, [resizeType]: value };\n\n // if preserveAspectRatio.enabled, updateImageDimensions function makes sure aspect ratio is kept\n const updatedDimensions = updateImageDimensions(\n dimensions,\n nextImageDimensions,\n preserveAspectRatio.enabled,\n resizeType,\n );\n // transform shapes map into shapes array\n const shapesArray = getAllShapes(shapes);\n // transform all the shapes to fit the re-sized image\n const updatedShapes = getUpdatedShapes(dimensions, updatedDimensions, shapesArray);\n // transform shapes array back into shapes map\n\n onUpdateShapes(groupShapes(updatedShapes));\n onUpdateImageDimension(updatedDimensions);\n };\n\n render() {\n const {\n configuration,\n model,\n imageSupport,\n uploadSoundSupport,\n onConfigurationChanged,\n onImageUpload,\n onModelChangedByConfig,\n onPromptChanged,\n onRationaleChanged,\n onUpdateImageDimension,\n onTeacherInstructionsChanged,\n onUpdateShapes,\n } = this.props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n multipleCorrect = {},\n partialScoring = {},\n preserveAspectRatio = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n shapes: shapesError,\n selections: selectionsError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n multipleCorrect: multipleCorrect.settings && toggle(multipleCorrect.label),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onModelChangedByConfig}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <PromptContainer label={teacherInstructions.label}>\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <ErrorText>{teacherInstructionsError}</ErrorText>}\n </PromptContainer>\n )}\n\n {promptEnabled && (\n <PromptContainer label={prompt.label}>\n <EditableHtml\n markup={model.prompt || ''}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <ErrorText>{promptError}</ErrorText>}\n </PromptContainer>\n )}\n\n <FlexContainer>\n <SubHeading variant=\"h6\">\n Define Hotspot\n </SubHeading>\n <StyledTooltip\n disableFocusListener\n disableTouchListener\n placement={'left'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ float: 'right' }} />\n </StyledTooltip>\n </FlexContainer>\n\n <HotspotPalette\n hotspotColor={model.hotspotColor}\n hotspotList={model.hotspotList}\n outlineColor={model.outlineColor}\n outlineList={model.outlineList}\n onHotspotColorChange={(color) => this.handleColorChange('hotspot', color)}\n onOutlineColorChange={(color) => this.handleColorChange('outline', color)}\n />\n\n <HotspotContainer\n dimensions={model.dimensions}\n imageUrl={model.imageUrl}\n multipleCorrect={model.multipleCorrect}\n hasErrors={!!shapesError || !!selectionsError}\n hotspotColor={model.hotspotColor}\n outlineColor={model.outlineColor}\n selectedHotspotColor={model.selectedHotspotColor}\n hoverOutlineColor={model.hoverOutlineColor}\n onUpdateImageDimension={onUpdateImageDimension}\n onUpdateShapes={onUpdateShapes}\n onImageUpload={onImageUpload}\n shapes={model.shapes}\n strokeWidth={model.strokeWidth}\n preserveAspectRatioEnabled={preserveAspectRatio.enabled}\n insertImage={imageSupport && imageSupport.add}\n />\n {shapesError && <ErrorText>{shapesError}</ErrorText>}\n {selectionsError && <ErrorText>{selectionsError}</ErrorText>}\n\n {model.imageUrl && (\n <React.Fragment>\n <Typography variant=\"h6\">Image Dimensions</Typography>\n\n <DimensionsContainer>\n <FieldContainer>\n <NumberTextField\n key=\"hotspot-manual-width\"\n label=\"Width\"\n value={model.dimensions.width}\n min={0}\n onChange={(e, value) => this.handleOnUpdateImageDimensions(value, 'width')}\n showErrorWhenOutsideRange\n />\n </FieldContainer>\n\n <FieldContainer>\n <NumberTextField\n key=\"hotspot-manual-height\"\n label=\"Height\"\n value={model.dimensions.height}\n min={0}\n onChange={(e, value) => this.handleOnUpdateImageDimensions(value, 'height')}\n showErrorWhenOutsideRange\n />\n </FieldContainer>\n </DimensionsContainer>\n </React.Fragment>\n )}\n\n {rationaleEnabled && (\n <PromptContainer label={rationale.label}>\n <EditableHtml\n markup={model.rationale || ''}\n onChange={onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <ErrorText>{rationaleError}</ErrorText>}\n </PromptContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nRoot.propTypes = {\n configuration: PropTypes.object,\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n onImageUpload: PropTypes.func.isRequired,\n onColorChanged: PropTypes.func.isRequired,\n onPromptChanged: PropTypes.func.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n onUpdateShapes: PropTypes.func.isRequired,\n onModelChangedByConfig: PropTypes.func.isRequired,\n onRationaleChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n onTeacherInstructionsChanged: PropTypes.func.isRequired,\n};\n\nexport default Root;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,116 +1,84 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.CircleShape = void 0;
|
|
9
|
-
|
|
10
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
9
|
+
class CircleShape {
|
|
10
|
+
static create(shapes, e) {
|
|
11
|
+
const newShapes = [...shapes];
|
|
12
|
+
const highestId = Math.max(...newShapes.map(shape => parseInt(shape.id)), 0);
|
|
13
|
+
const newCircle = {
|
|
14
|
+
id: `${highestId + 1}`,
|
|
15
|
+
radius: 0,
|
|
16
|
+
x: e.evt.layerX,
|
|
17
|
+
y: e.evt.layerY,
|
|
18
|
+
group: 'circles',
|
|
19
|
+
index: newShapes.length
|
|
20
|
+
};
|
|
21
|
+
newShapes.push(newCircle);
|
|
22
|
+
return {
|
|
23
|
+
shapes: newShapes,
|
|
24
|
+
isDrawing: true,
|
|
25
|
+
isDrawingShapeId: newCircle.id
|
|
26
|
+
};
|
|
25
27
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
}, {
|
|
50
|
-
key: "finalizeCreation",
|
|
51
|
-
value: function finalizeCreation(state, props) {
|
|
52
|
-
var currentShapeIndex = state.shapes.findIndex(function (shape) {
|
|
53
|
-
return shape.id === state.isDrawingShapeId;
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
if (currentShapeIndex !== -1) {
|
|
57
|
-
var currentShape = state.shapes[currentShapeIndex]; // Check if the shape is a valid circle (has more than 0 radius) before finalizing
|
|
58
|
-
|
|
59
|
-
if (currentShape.radius > 0) {
|
|
60
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
61
|
-
isDrawing: false,
|
|
62
|
-
stateShapes: false,
|
|
63
|
-
isDrawingShapeId: undefined
|
|
64
|
-
});
|
|
65
|
-
} else {
|
|
66
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
67
|
-
isDrawing: false,
|
|
68
|
-
stateShapes: false,
|
|
69
|
-
isDrawingShapeId: undefined,
|
|
70
|
-
shapes: state.shapes.filter(function (shape) {
|
|
71
|
-
return shape.id !== state.isDrawingShapeId;
|
|
72
|
-
})
|
|
73
|
-
});
|
|
74
|
-
}
|
|
28
|
+
static finalizeCreation(state, props) {
|
|
29
|
+
const currentShapeIndex = state.shapes.findIndex(shape => shape.id === state.isDrawingShapeId);
|
|
30
|
+
if (currentShapeIndex !== -1) {
|
|
31
|
+
const currentShape = state.shapes[currentShapeIndex];
|
|
32
|
+
|
|
33
|
+
// Check if the shape is a valid circle (has more than 0 radius) before finalizing
|
|
34
|
+
if (currentShape.radius > 0) {
|
|
35
|
+
return {
|
|
36
|
+
...state,
|
|
37
|
+
isDrawing: false,
|
|
38
|
+
stateShapes: false,
|
|
39
|
+
isDrawingShapeId: undefined
|
|
40
|
+
};
|
|
41
|
+
} else {
|
|
42
|
+
return {
|
|
43
|
+
...state,
|
|
44
|
+
isDrawing: false,
|
|
45
|
+
stateShapes: false,
|
|
46
|
+
isDrawingShapeId: undefined,
|
|
47
|
+
shapes: state.shapes.filter(shape => shape.id !== state.isDrawingShapeId)
|
|
48
|
+
};
|
|
75
49
|
}
|
|
76
|
-
|
|
77
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
78
|
-
isDrawing: false,
|
|
79
|
-
stateShapes: false,
|
|
80
|
-
isDrawingShapeId: undefined
|
|
81
|
-
});
|
|
82
50
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
51
|
+
return {
|
|
52
|
+
...state,
|
|
53
|
+
isDrawing: false,
|
|
54
|
+
stateShapes: false,
|
|
55
|
+
isDrawingShapeId: undefined
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
static handleMouseMove(state, e) {
|
|
59
|
+
const {
|
|
60
|
+
isDrawing,
|
|
61
|
+
isDrawingShapeId,
|
|
62
|
+
shapes
|
|
63
|
+
} = state;
|
|
64
|
+
if (isDrawing) {
|
|
65
|
+
const tempShapes = [...shapes];
|
|
66
|
+
const resizingShapeIndex = tempShapes.findIndex(shape => shape.id === isDrawingShapeId);
|
|
67
|
+
if (resizingShapeIndex !== -1) {
|
|
68
|
+
const resizingShape = tempShapes[resizingShapeIndex];
|
|
69
|
+
|
|
70
|
+
// Calculate radius based on mouse position
|
|
71
|
+
const dx = e.evt.layerX - resizingShape.x;
|
|
72
|
+
const dy = e.evt.layerY - resizingShape.y;
|
|
73
|
+
resizingShape.radius = Math.sqrt(dx * dx + dy * dy);
|
|
74
|
+
return {
|
|
75
|
+
shapes: tempShapes
|
|
76
|
+
};
|
|
106
77
|
}
|
|
107
|
-
|
|
108
|
-
return state;
|
|
109
78
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
79
|
+
return state;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
114
82
|
exports.CircleShape = CircleShape;
|
|
115
|
-
(0, _defineProperty2
|
|
83
|
+
(0, _defineProperty2.default)(CircleShape, "name", 'circle');
|
|
116
84
|
//# sourceMappingURL=circle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"circle.js","names":["CircleShape","create","shapes","e","newShapes","highestId","Math","max","map","shape","parseInt","id","newCircle","radius","x","evt","layerX","y","layerY","group","index","length","push","isDrawing","isDrawingShapeId","finalizeCreation","state","props","currentShapeIndex","findIndex","currentShape","stateShapes","undefined","filter","handleMouseMove","tempShapes","resizingShapeIndex","resizingShape","dx","dy","sqrt","exports","_defineProperty2","default"],"sources":["../../src/shapes/circle.js"],"sourcesContent":["export class CircleShape {\n static name = 'circle'\n\n static create(shapes, e) {\n const newShapes = [...shapes];\n const highestId = Math.max(...newShapes.map((shape) => parseInt(shape.id)), 0);\n const newCircle = {\n id: `${highestId + 1}`,\n radius: 0,\n x: e.evt.layerX,\n y: e.evt.layerY,\n group: 'circles',\n index: newShapes.length,\n };\n\n newShapes.push(newCircle);\n\n return {\n shapes: newShapes,\n isDrawing: true,\n isDrawingShapeId: newCircle.id,\n };\n }\n\n static finalizeCreation(state, props) {\n const currentShapeIndex = state.shapes.findIndex((shape) => shape.id === state.isDrawingShapeId);\n\n if (currentShapeIndex !== -1) {\n const currentShape = state.shapes[currentShapeIndex];\n\n // Check if the shape is a valid circle (has more than 0 radius) before finalizing\n if (currentShape.radius > 0) {\n return {\n ...state,\n isDrawing: false,\n stateShapes: false,\n isDrawingShapeId: undefined,\n };\n } else {\n return {\n ...state,\n isDrawing: false,\n stateShapes: false,\n isDrawingShapeId: undefined,\n shapes: state.shapes.filter((shape) => shape.id !== state.isDrawingShapeId),\n };\n }\n }\n\n return {\n ...state,\n isDrawing: false,\n stateShapes: false,\n isDrawingShapeId: undefined,\n };\n }\n\n static handleMouseMove(state, e) {\n const { isDrawing, isDrawingShapeId, shapes } = state;\n\n if (isDrawing) {\n const tempShapes = [...shapes];\n const resizingShapeIndex = tempShapes.findIndex((shape) => shape.id === isDrawingShapeId);\n\n if (resizingShapeIndex !== -1) {\n const resizingShape = tempShapes[resizingShapeIndex];\n\n // Calculate radius based on mouse position\n const dx = e.evt.layerX - resizingShape.x;\n const dy = e.evt.layerY - resizingShape.y;\n resizingShape.radius = Math.sqrt(dx * dx + dy * dy);\n\n return {\n shapes: tempShapes,\n };\n }\n }\n\n return state;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,54 +3,46 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
6
|
var _circle = require("./circle");
|
|
8
|
-
|
|
9
7
|
Object.keys(_circle).forEach(function (key) {
|
|
10
8
|
if (key === "default" || key === "__esModule") return;
|
|
11
9
|
if (key in exports && exports[key] === _circle[key]) return;
|
|
12
10
|
Object.defineProperty(exports, key, {
|
|
13
11
|
enumerable: true,
|
|
14
|
-
get: function
|
|
12
|
+
get: function () {
|
|
15
13
|
return _circle[key];
|
|
16
14
|
}
|
|
17
15
|
});
|
|
18
16
|
});
|
|
19
|
-
|
|
20
17
|
var _rectagle = require("./rectagle");
|
|
21
|
-
|
|
22
18
|
Object.keys(_rectagle).forEach(function (key) {
|
|
23
19
|
if (key === "default" || key === "__esModule") return;
|
|
24
20
|
if (key in exports && exports[key] === _rectagle[key]) return;
|
|
25
21
|
Object.defineProperty(exports, key, {
|
|
26
22
|
enumerable: true,
|
|
27
|
-
get: function
|
|
23
|
+
get: function () {
|
|
28
24
|
return _rectagle[key];
|
|
29
25
|
}
|
|
30
26
|
});
|
|
31
27
|
});
|
|
32
|
-
|
|
33
28
|
var _polygon = require("./polygon");
|
|
34
|
-
|
|
35
29
|
Object.keys(_polygon).forEach(function (key) {
|
|
36
30
|
if (key === "default" || key === "__esModule") return;
|
|
37
31
|
if (key in exports && exports[key] === _polygon[key]) return;
|
|
38
32
|
Object.defineProperty(exports, key, {
|
|
39
33
|
enumerable: true,
|
|
40
|
-
get: function
|
|
34
|
+
get: function () {
|
|
41
35
|
return _polygon[key];
|
|
42
36
|
}
|
|
43
37
|
});
|
|
44
38
|
});
|
|
45
|
-
|
|
46
39
|
var _utils = require("./utils");
|
|
47
|
-
|
|
48
40
|
Object.keys(_utils).forEach(function (key) {
|
|
49
41
|
if (key === "default" || key === "__esModule") return;
|
|
50
42
|
if (key in exports && exports[key] === _utils[key]) return;
|
|
51
43
|
Object.defineProperty(exports, key, {
|
|
52
44
|
enumerable: true,
|
|
53
|
-
get: function
|
|
45
|
+
get: function () {
|
|
54
46
|
return _utils[key];
|
|
55
47
|
}
|
|
56
48
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_circle","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_rectagle","_polygon","_utils"],"sources":["../../src/shapes/index.js"],"sourcesContent":["export * from './circle';\nexport * from './rectagle';\nexport * from './polygon';\nexport * from './utils';\n"],"mappings":";;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,SAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,SAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,SAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,SAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,QAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,QAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,QAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,QAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,MAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,MAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,MAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,MAAA,CAAAP,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
|
@@ -1,114 +1,82 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.PolygonShape = void 0;
|
|
9
|
-
|
|
10
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
class PolygonShape {
|
|
10
|
+
static create(shapes, e) {
|
|
11
|
+
const newShapes = [...shapes];
|
|
12
|
+
const newPolygon = {
|
|
13
|
+
id: 'newPolygon',
|
|
14
|
+
points: [{
|
|
15
|
+
x: e.evt.layerX,
|
|
16
|
+
y: e.evt.layerY
|
|
17
|
+
}],
|
|
18
|
+
group: 'polygons',
|
|
19
|
+
index: newShapes.length
|
|
20
|
+
};
|
|
21
|
+
newShapes.push(newPolygon);
|
|
22
|
+
return {
|
|
23
|
+
shapes: newShapes,
|
|
24
|
+
isDrawing: true,
|
|
25
|
+
isDrawingShapeId: newPolygon.id
|
|
26
|
+
};
|
|
21
27
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
static addPoint(state, e, onPolygonComplete) {
|
|
29
|
+
// Number of pixels allowed to determine if the first point was clicked
|
|
30
|
+
const clickDelta = 5;
|
|
31
|
+
const shapesCopy = JSON.parse(JSON.stringify(state.shapes));
|
|
32
|
+
const currentShapeIndex = shapesCopy.findIndex(shape => shape.id === state.isDrawingShapeId);
|
|
33
|
+
if (currentShapeIndex !== -1) {
|
|
34
|
+
const currentShape = shapesCopy[currentShapeIndex];
|
|
35
|
+
if (currentShape.points && Array.isArray(currentShape.points)) {
|
|
36
|
+
const firstPoint = currentShape.points[0];
|
|
37
|
+
|
|
38
|
+
// If click is close enough to the first point (within clickDelta pixels), close the polygon
|
|
39
|
+
if (Math.abs(firstPoint.x - e.evt.layerX) <= clickDelta && Math.abs(firstPoint.y - e.evt.layerY) <= clickDelta) {
|
|
40
|
+
return PolygonShape.finalizeCreation(state, onPolygonComplete);
|
|
41
|
+
}
|
|
42
|
+
currentShape.points.push({
|
|
30
43
|
x: e.evt.layerX,
|
|
31
44
|
y: e.evt.layerY
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
index: newShapes.length
|
|
35
|
-
};
|
|
36
|
-
newShapes.push(newPolygon);
|
|
37
|
-
return {
|
|
38
|
-
shapes: newShapes,
|
|
39
|
-
isDrawing: true,
|
|
40
|
-
isDrawingShapeId: newPolygon.id
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
}, {
|
|
44
|
-
key: "addPoint",
|
|
45
|
-
value: function addPoint(state, e, onPolygonComplete) {
|
|
46
|
-
// Number of pixels allowed to determine if the first point was clicked
|
|
47
|
-
var clickDelta = 5;
|
|
48
|
-
var shapesCopy = JSON.parse(JSON.stringify(state.shapes));
|
|
49
|
-
var currentShapeIndex = shapesCopy.findIndex(function (shape) {
|
|
50
|
-
return shape.id === state.isDrawingShapeId;
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
if (currentShapeIndex !== -1) {
|
|
54
|
-
var currentShape = shapesCopy[currentShapeIndex];
|
|
55
|
-
|
|
56
|
-
if (currentShape.points && Array.isArray(currentShape.points)) {
|
|
57
|
-
var firstPoint = currentShape.points[0]; // If click is close enough to the first point (within clickDelta pixels), close the polygon
|
|
58
|
-
|
|
59
|
-
if (Math.abs(firstPoint.x - e.evt.layerX) <= clickDelta && Math.abs(firstPoint.y - e.evt.layerY) <= clickDelta) {
|
|
60
|
-
return PolygonShape.finalizeCreation(state, onPolygonComplete);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
currentShape.points.push({
|
|
64
|
-
x: e.evt.layerX,
|
|
65
|
-
y: e.evt.layerY
|
|
66
|
-
});
|
|
67
|
-
shapesCopy[currentShapeIndex] = currentShape;
|
|
68
|
-
return {
|
|
69
|
-
shapes: shapesCopy
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return state;
|
|
75
|
-
}
|
|
76
|
-
}, {
|
|
77
|
-
key: "finalizeCreation",
|
|
78
|
-
value: function finalizeCreation(state, onPolygonComplete) {
|
|
79
|
-
var shapes = state.shapes;
|
|
80
|
-
var tempShapes = (0, _toConsumableArray2["default"])(shapes);
|
|
81
|
-
var highestId = Math.max.apply(Math, (0, _toConsumableArray2["default"])(state.shapes.map(function (shape) {
|
|
82
|
-
return parseInt(shape.id) || 0;
|
|
83
|
-
})).concat([0]));
|
|
84
|
-
var polygonIndex = tempShapes.findIndex(function (shape) {
|
|
85
|
-
return shape.id === state.isDrawingShapeId;
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
if (polygonIndex !== -1 && tempShapes[polygonIndex].points.length > 2) {
|
|
89
|
-
var completedPolygon = tempShapes[polygonIndex];
|
|
90
|
-
completedPolygon.id = "".concat(highestId + 1);
|
|
91
|
-
onPolygonComplete(tempShapes);
|
|
45
|
+
});
|
|
46
|
+
shapesCopy[currentShapeIndex] = currentShape;
|
|
92
47
|
return {
|
|
93
|
-
|
|
94
|
-
shapes: tempShapes,
|
|
95
|
-
isDrawingShapeId: undefined
|
|
48
|
+
shapes: shapesCopy
|
|
96
49
|
};
|
|
97
50
|
}
|
|
98
|
-
|
|
99
|
-
return state;
|
|
100
|
-
} // No need to update anything on mouse move,
|
|
101
|
-
// but it's here if we need to add any logic later.
|
|
102
|
-
|
|
103
|
-
}, {
|
|
104
|
-
key: "handleMouseMove",
|
|
105
|
-
value: function handleMouseMove(state, e) {
|
|
106
|
-
return state;
|
|
107
51
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
52
|
+
return state;
|
|
53
|
+
}
|
|
54
|
+
static finalizeCreation(state, onPolygonComplete) {
|
|
55
|
+
const {
|
|
56
|
+
shapes
|
|
57
|
+
} = state;
|
|
58
|
+
const tempShapes = [...shapes];
|
|
59
|
+
const highestId = Math.max(...state.shapes.map(shape => parseInt(shape.id) || 0), 0);
|
|
60
|
+
const polygonIndex = tempShapes.findIndex(shape => shape.id === state.isDrawingShapeId);
|
|
61
|
+
if (polygonIndex !== -1 && tempShapes[polygonIndex].points.length > 2) {
|
|
62
|
+
const completedPolygon = tempShapes[polygonIndex];
|
|
63
|
+
completedPolygon.id = `${highestId + 1}`;
|
|
64
|
+
onPolygonComplete(tempShapes);
|
|
65
|
+
return {
|
|
66
|
+
isDrawing: false,
|
|
67
|
+
shapes: tempShapes,
|
|
68
|
+
isDrawingShapeId: undefined
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return state;
|
|
72
|
+
}
|
|
111
73
|
|
|
74
|
+
// No need to update anything on mouse move,
|
|
75
|
+
// but it's here if we need to add any logic later.
|
|
76
|
+
static handleMouseMove(state, e) {
|
|
77
|
+
return state;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
112
80
|
exports.PolygonShape = PolygonShape;
|
|
113
|
-
(0, _defineProperty2
|
|
81
|
+
(0, _defineProperty2.default)(PolygonShape, "name", 'polygon');
|
|
114
82
|
//# sourceMappingURL=polygon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"polygon.js","names":["PolygonShape","create","shapes","e","newShapes","newPolygon","id","points","x","evt","layerX","y","layerY","group","index","length","push","isDrawing","isDrawingShapeId","addPoint","state","onPolygonComplete","clickDelta","shapesCopy","JSON","parse","stringify","currentShapeIndex","findIndex","shape","currentShape","Array","isArray","firstPoint","Math","abs","finalizeCreation","tempShapes","highestId","max","map","parseInt","polygonIndex","completedPolygon","undefined","handleMouseMove","exports","_defineProperty2","default"],"sources":["../../src/shapes/polygon.js"],"sourcesContent":["export class PolygonShape {\n static name = 'polygon'\n\n static create(shapes, e) {\n const newShapes = [...shapes];\n const newPolygon = {\n id: 'newPolygon',\n points: [{ x: e.evt.layerX, y: e.evt.layerY }],\n group: 'polygons',\n index: newShapes.length,\n };\n\n newShapes.push(newPolygon);\n\n return {\n shapes: newShapes,\n isDrawing: true,\n isDrawingShapeId: newPolygon.id,\n };\n }\n\n static addPoint(state, e, onPolygonComplete) {\n // Number of pixels allowed to determine if the first point was clicked\n const clickDelta = 5;\n\n const shapesCopy = JSON.parse(JSON.stringify(state.shapes));\n const currentShapeIndex = shapesCopy.findIndex((shape) => shape.id === state.isDrawingShapeId);\n\n if (currentShapeIndex !== -1) {\n const currentShape = shapesCopy[currentShapeIndex];\n if (currentShape.points && Array.isArray(currentShape.points)) {\n const firstPoint = currentShape.points[0];\n\n // If click is close enough to the first point (within clickDelta pixels), close the polygon\n if (\n Math.abs(firstPoint.x - e.evt.layerX) <= clickDelta &&\n Math.abs(firstPoint.y - e.evt.layerY) <= clickDelta\n ) {\n return PolygonShape.finalizeCreation(state, onPolygonComplete);\n }\n\n currentShape.points.push({ x: e.evt.layerX, y: e.evt.layerY });\n shapesCopy[currentShapeIndex] = currentShape;\n\n return {\n shapes: shapesCopy,\n };\n }\n }\n return state;\n }\n\n static finalizeCreation(state, onPolygonComplete) {\n const { shapes } = state;\n const tempShapes = [...shapes];\n const highestId = Math.max(...state.shapes.map((shape) => parseInt(shape.id) || 0), 0);\n\n const polygonIndex = tempShapes.findIndex((shape) => shape.id === state.isDrawingShapeId);\n\n if (polygonIndex !== -1 && tempShapes[polygonIndex].points.length > 2) {\n const completedPolygon = tempShapes[polygonIndex];\n\n completedPolygon.id = `${highestId + 1}`;\n onPolygonComplete(tempShapes);\n\n return {\n isDrawing: false,\n shapes: tempShapes,\n isDrawingShapeId: undefined,\n };\n }\n\n return state;\n }\n\n // No need to update anything on mouse move,\n // but it's here if we need to add any logic later.\n static handleMouseMove(state, e) {\n return state;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|