Skip to content
This repository was archived by the owner on Nov 22, 2022. It is now read-only.

Commit 4891207

Browse files
Add logic for adding AOI objects to canvas screens
1 parent 3c4eb4f commit 4891207

File tree

3 files changed

+30
-3
lines changed

3 files changed

+30
-3
lines changed

packages/builder/src/components/ComponentOptions/components/Content/Canvas/components/fabric/index.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,21 @@ fabric.Image.fromObject = function(_object, callback) {
6868
})
6969
}
7070

71+
// Add AOI object type ---------------------------------------------------------
72+
73+
// (apparently fabric requires camelcased constructors)
74+
fabric.Aoi = fabric.util.createClass(fabric.Rect, {
75+
type: 'aoi',
76+
initialize: function(options={}) {
77+
options.fill = 'rgba(0, 0, 0, 0.2)'
78+
this.callSuper('initialize', options)
79+
},
80+
})
81+
82+
fabric.Aoi.fromObject = function(object, callback, forceAsync) {
83+
return fabric.Object._fromObject('Aoi', object, callback, forceAsync);
84+
}
85+
7186
// Canvas component ------------------------------------------------------------
7287

7388
const handlePadding = 6
@@ -354,6 +369,11 @@ export default class FabricCanvas extends Component {
354369
...defaults,
355370
...options,
356371
})
372+
case 'aoi':
373+
return new fabric.Aoi({
374+
width: 50, height: 50,
375+
...defaults,
376+
})
357377
default:
358378
return undefined
359379
}

packages/builder/src/components/ComponentOptions/components/Content/Canvas/components/form/AddDropDown.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,13 @@ const AddDropDown = (
8080
Image
8181
</DropdownItem>
8282
<DropdownItem divider />
83+
<DropdownItem header>Interaction</DropdownItem>
84+
<DropdownItem
85+
onClick={ () => addHandler('aoi') }
86+
>
87+
AOI
88+
</DropdownItem>
89+
<DropdownItem divider />
8390
<DropdownItem header>From selected</DropdownItem>
8491
<DropdownItem
8592
onClick={ cloneHandler }

packages/builder/src/components/ComponentOptions/components/Content/Canvas/components/form/Style.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default ({ selection, changeHandler }) =>
1717
model=".strokeWidth"
1818
component={ StrokeWidthDropdown }
1919
controlProps={{
20-
disabled: ['image', undefined].includes(selection.type),
20+
disabled: ['image', 'aoi', undefined].includes(selection.type),
2121
}}
2222
/>
2323
<Control
@@ -26,7 +26,7 @@ export default ({ selection, changeHandler }) =>
2626
controlProps={{
2727
icon: 'circle',
2828
iconFallbackWeight: 'r',
29-
disabled: ['image', undefined].includes(selection.type),
29+
disabled: ['image', 'aoi', undefined].includes(selection.type),
3030
}}
3131
/>
3232
<Control
@@ -35,7 +35,7 @@ export default ({ selection, changeHandler }) =>
3535
controlProps={{
3636
icon: 'circle',
3737
iconWeight: 's',
38-
disabled: ['line', 'image', undefined].includes(selection.type),
38+
disabled: ['line', 'image', 'aoi', undefined].includes(selection.type),
3939
}}
4040
/>
4141
</ButtonGroup>

0 commit comments

Comments
 (0)