@pie-element/drawing-response 3.9.14 → 3.9.15-touch
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 +8 -0
- package/configure/CHANGELOG.md +8 -0
- package/configure/lib/__tests__/image-container.test.js +187 -0
- package/configure/lib/__tests__/index.test.js +62 -0
- package/configure/lib/__tests__/root.test.js +98 -0
- package/configure/lib/defaults.js +3 -2
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/image-container.js +17 -21
- package/configure/lib/image-container.js.map +1 -1
- package/configure/lib/index.js +2 -2
- package/configure/lib/root.js +2 -2
- package/configure/package.json +3 -3
- package/configure/src/__tests__/__snapshots__/image-container.test.jsx.snap +2 -2
- package/configure/src/__tests__/__snapshots__/root.test.jsx.snap +2 -2
- package/configure/src/defaults.js +3 -2
- package/configure/src/image-container.jsx +11 -14
- package/controller/lib/__tests__/index.test.js +338 -0
- package/controller/lib/index.js +7 -4
- package/controller/lib/index.js.map +1 -1
- package/docs/demo/pie.manifest.json +11 -0
- package/docs/pie-schema.json +1 -1
- package/docs/pie-schema.json.md +1 -1
- package/lib/__tests__/drawing-index-test.js +45 -0
- package/lib/drawing-response/__tests__/container.test.js +86 -0
- package/lib/drawing-response/__tests__/drawable-helper.test.js +50 -0
- package/lib/drawing-response/__tests__/drawing-main.test.js +704 -0
- package/lib/drawing-response/__tests__/factory.test.js +19 -0
- package/lib/drawing-response/container.js +1 -1
- package/lib/drawing-response/container.js.map +1 -1
- package/lib/drawing-response/drawable-image.js +1 -1
- package/lib/drawing-response/drawable-image.js.map +1 -1
- package/lib/drawing-response/drawable-main.js +12 -5
- package/lib/drawing-response/drawable-main.js.map +1 -1
- package/lib/drawing-response/drawable-text.js +14 -4
- package/lib/drawing-response/drawable-text.js.map +1 -1
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/package.json +4 -4
- package/src/drawing-response/__tests__/__snapshots__/container.test.jsx.snap +4 -4
- package/src/drawing-response/__tests__/__snapshots__/drawing-main.test.jsx.snap +14 -0
- package/src/drawing-response/container.jsx +1 -1
- package/src/drawing-response/drawable-image.jsx +1 -1
- package/src/drawing-response/drawable-main.jsx +18 -8
- package/src/drawing-response/drawable-text.jsx +6 -0
- package/src/index.js +5 -0
- package/yarn-error.log +15267 -0
- package/LICENSE.md +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.9.15](https://github.com/pie-framework/pie-elements/compare/@pie-element/drawing-response@3.9.14...@pie-element/drawing-response@3.9.15) (2022-03-28)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/drawing-response
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## [3.9.14](https://github.com/pie-framework/pie-elements/compare/@pie-element/drawing-response@3.9.13...@pie-element/drawing-response@3.9.14) (2022-03-22)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @pie-element/drawing-response
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.2.19](https://github.com/pie-framework/pie-elements/compare/@pie-element/drawing-response-configure@3.2.18...@pie-element/drawing-response-configure@3.2.19) (2022-03-28)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/drawing-response-configure
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## [3.2.18](https://github.com/pie-framework/pie-elements/compare/@pie-element/drawing-response-configure@3.2.17...@pie-element/drawing-response-configure@3.2.18) (2022-03-22)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @pie-element/drawing-response-configure
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _enzyme = require("enzyme");
|
|
6
|
+
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
|
|
9
|
+
var _imageContainer = require("../image-container");
|
|
10
|
+
|
|
11
|
+
jest.mock('@pie-lib/config-ui', function () {
|
|
12
|
+
return {
|
|
13
|
+
settings: {
|
|
14
|
+
Panel: function Panel(props) {
|
|
15
|
+
return /*#__PURE__*/_react["default"].createElement("div", props);
|
|
16
|
+
},
|
|
17
|
+
toggle: jest.fn(),
|
|
18
|
+
radio: jest.fn(),
|
|
19
|
+
dropdown: jest.fn()
|
|
20
|
+
},
|
|
21
|
+
layout: {
|
|
22
|
+
ConfigLayout: function ConfigLayout(props) {
|
|
23
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, props.children);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
describe('ImageContainer', function () {
|
|
29
|
+
var onUpdateImageDimension = jest.fn();
|
|
30
|
+
var onImageUpload = jest.fn();
|
|
31
|
+
var wrapper;
|
|
32
|
+
beforeEach(function () {
|
|
33
|
+
var props = {
|
|
34
|
+
classes: {},
|
|
35
|
+
imageUrl: 'url',
|
|
36
|
+
onUpdateImageDimension: onUpdateImageDimension,
|
|
37
|
+
onImageUpload: onImageUpload
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
wrapper = function wrapper() {
|
|
41
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_imageContainer.ImageContainer, props));
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
describe('snapshot', function () {
|
|
45
|
+
it('renders', function () {
|
|
46
|
+
expect(wrapper()).toMatchSnapshot();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe('logic', function () {
|
|
50
|
+
var w;
|
|
51
|
+
var oldFileReader;
|
|
52
|
+
beforeAll(function () {
|
|
53
|
+
var dummyFileReader = {};
|
|
54
|
+
w = wrapper();
|
|
55
|
+
w.instance().resize = {
|
|
56
|
+
addEventListener: jest.fn()
|
|
57
|
+
};
|
|
58
|
+
oldFileReader = window.FileReader;
|
|
59
|
+
|
|
60
|
+
dummyFileReader.readAsDataURL = function (result) {
|
|
61
|
+
dummyFileReader.result = result;
|
|
62
|
+
dummyFileReader.onloadend();
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
window.FileReader = jest.fn(function () {
|
|
66
|
+
return dummyFileReader;
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
it('handleFileRead calls onImageUpload', function () {
|
|
70
|
+
w.instance().handleFileRead('file');
|
|
71
|
+
expect(onImageUpload).toBeCalled();
|
|
72
|
+
expect(onImageUpload).toHaveBeenCalledTimes(1);
|
|
73
|
+
});
|
|
74
|
+
it('handleUploadImage calls handleFileRead which calls onImageUpload', function () {
|
|
75
|
+
w.instance().handleUploadImage({
|
|
76
|
+
target: {
|
|
77
|
+
files: ['file']
|
|
78
|
+
},
|
|
79
|
+
preventDefault: jest.fn()
|
|
80
|
+
});
|
|
81
|
+
expect(onImageUpload).toBeCalled();
|
|
82
|
+
expect(onImageUpload).toHaveBeenCalledTimes(2);
|
|
83
|
+
});
|
|
84
|
+
it('handleOnDrop calls handleFileRead which calls onImageUpload if item is file and image', function () {
|
|
85
|
+
w.instance().handleOnDrop({
|
|
86
|
+
preventDefault: jest.fn(),
|
|
87
|
+
dataTransfer: {
|
|
88
|
+
items: [{
|
|
89
|
+
kind: 'file',
|
|
90
|
+
getAsFile: jest.fn().mockReturnValue({
|
|
91
|
+
type: 'image',
|
|
92
|
+
key: 'item'
|
|
93
|
+
})
|
|
94
|
+
}],
|
|
95
|
+
files: []
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
expect(onImageUpload).toBeCalledWith({
|
|
99
|
+
type: 'image',
|
|
100
|
+
key: 'item'
|
|
101
|
+
});
|
|
102
|
+
expect(onImageUpload).toHaveBeenCalledTimes(3);
|
|
103
|
+
});
|
|
104
|
+
it('handleOnDrop calls handleFileRead which doesn\'t call onImageUpload if item is file but not image', function () {
|
|
105
|
+
w.instance().handleOnDrop({
|
|
106
|
+
preventDefault: jest.fn(),
|
|
107
|
+
dataTransfer: {
|
|
108
|
+
items: [{
|
|
109
|
+
kind: 'file',
|
|
110
|
+
getAsFile: jest.fn().mockReturnValue({
|
|
111
|
+
type: 'jpg'
|
|
112
|
+
})
|
|
113
|
+
}],
|
|
114
|
+
files: []
|
|
115
|
+
}
|
|
116
|
+
}); // same times number as in previous test, meaning that is was not called again
|
|
117
|
+
|
|
118
|
+
expect(onImageUpload).toHaveBeenCalledTimes(3);
|
|
119
|
+
});
|
|
120
|
+
it('handleOnDrop calls handleFileRead which calls onImageUpload if item is not file, but file is image', function () {
|
|
121
|
+
w.instance().handleOnDrop({
|
|
122
|
+
preventDefault: jest.fn(),
|
|
123
|
+
dataTransfer: {
|
|
124
|
+
items: [{
|
|
125
|
+
kind: 'something else',
|
|
126
|
+
getAsFile: jest.fn().mockReturnValue({
|
|
127
|
+
type: 'image'
|
|
128
|
+
})
|
|
129
|
+
}],
|
|
130
|
+
files: [{
|
|
131
|
+
type: 'image',
|
|
132
|
+
key: 'file'
|
|
133
|
+
}]
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
expect(onImageUpload).toBeCalledWith({
|
|
137
|
+
type: 'image',
|
|
138
|
+
key: 'file'
|
|
139
|
+
});
|
|
140
|
+
expect(onImageUpload).toHaveBeenCalledTimes(4);
|
|
141
|
+
});
|
|
142
|
+
it('handleOnDrop calls handleFileRead which doesn\'t call onImageUpload if item is not file and file is not image', function () {
|
|
143
|
+
w.instance().handleOnDrop({
|
|
144
|
+
preventDefault: jest.fn(),
|
|
145
|
+
dataTransfer: {
|
|
146
|
+
items: [{
|
|
147
|
+
kind: 'something else',
|
|
148
|
+
getAsFile: jest.fn().mockReturnValue({
|
|
149
|
+
type: 'image'
|
|
150
|
+
})
|
|
151
|
+
}],
|
|
152
|
+
files: [{
|
|
153
|
+
type: 'something else',
|
|
154
|
+
key: 'file'
|
|
155
|
+
}]
|
|
156
|
+
}
|
|
157
|
+
}); // same times number as in previous test, meaning that is was not called again
|
|
158
|
+
|
|
159
|
+
expect(onImageUpload).toHaveBeenCalledTimes(4);
|
|
160
|
+
});
|
|
161
|
+
it('handleOnImageLoad calls onUpdateImageDimension', function () {
|
|
162
|
+
w.instance().handleOnImageLoad({
|
|
163
|
+
target: {
|
|
164
|
+
offsetHeight: 50,
|
|
165
|
+
offsetWidth: 50
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
expect(onUpdateImageDimension).toHaveBeenCalledWith({
|
|
169
|
+
height: 50,
|
|
170
|
+
width: 50
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
it('stopResizing calls onUpdateImageDimension', function () {
|
|
174
|
+
w.instance().handleOnImageLoad({
|
|
175
|
+
target: {
|
|
176
|
+
offsetHeight: 50,
|
|
177
|
+
offsetWidth: 50
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
expect(onUpdateImageDimension).toHaveBeenCalledWith(w.instance().state.dimensions);
|
|
181
|
+
});
|
|
182
|
+
afterAll(function () {
|
|
183
|
+
window.FileReader = oldFileReader;
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW1hZ2UtY29udGFpbmVyLnRlc3QuanN4Il0sIm5hbWVzIjpbImplc3QiLCJtb2NrIiwic2V0dGluZ3MiLCJQYW5lbCIsInByb3BzIiwidG9nZ2xlIiwiZm4iLCJyYWRpbyIsImRyb3Bkb3duIiwibGF5b3V0IiwiQ29uZmlnTGF5b3V0IiwiY2hpbGRyZW4iLCJkZXNjcmliZSIsIm9uVXBkYXRlSW1hZ2VEaW1lbnNpb24iLCJvbkltYWdlVXBsb2FkIiwid3JhcHBlciIsImJlZm9yZUVhY2giLCJjbGFzc2VzIiwiaW1hZ2VVcmwiLCJpdCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCIsInciLCJvbGRGaWxlUmVhZGVyIiwiYmVmb3JlQWxsIiwiZHVtbXlGaWxlUmVhZGVyIiwiaW5zdGFuY2UiLCJyZXNpemUiLCJhZGRFdmVudExpc3RlbmVyIiwid2luZG93IiwiRmlsZVJlYWRlciIsInJlYWRBc0RhdGFVUkwiLCJyZXN1bHQiLCJvbmxvYWRlbmQiLCJoYW5kbGVGaWxlUmVhZCIsInRvQmVDYWxsZWQiLCJ0b0hhdmVCZWVuQ2FsbGVkVGltZXMiLCJoYW5kbGVVcGxvYWRJbWFnZSIsInRhcmdldCIsImZpbGVzIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVPbkRyb3AiLCJkYXRhVHJhbnNmZXIiLCJpdGVtcyIsImtpbmQiLCJnZXRBc0ZpbGUiLCJtb2NrUmV0dXJuVmFsdWUiLCJ0eXBlIiwia2V5IiwidG9CZUNhbGxlZFdpdGgiLCJoYW5kbGVPbkltYWdlTG9hZCIsIm9mZnNldEhlaWdodCIsIm9mZnNldFdpZHRoIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJoZWlnaHQiLCJ3aWR0aCIsInN0YXRlIiwiZGltZW5zaW9ucyIsImFmdGVyQWxsIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBRUFBLElBQUksQ0FBQ0MsSUFBTCxDQUFVLG9CQUFWLEVBQWdDO0FBQUEsU0FBTztBQUNyQ0MsSUFBQUEsUUFB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Q0FBQ0ksUUFBRixHQUFhd0IsaUJBQWIsQ0FBK0I7QUFBRVosUUFBQUEsTUFBTSxFQUFFO0FBQUVhLFVBQUFBLFlBQVksRUFBRSxFQUFoQjtBQUFvQkMsVUFBQUEsV0FBVyxFQUFFO0FBQWpDO0FBQVYsT0FBL0I7QUFFQWhDLE1BQUFBLE1BQU0sQ0FBQ1Asc0JBQUQsQ0FBTixDQUErQndDLG9CQUEvQixDQUFvRC9CLENBQUMsQ0FBQ0ksUUFBRixHQUFhOEIsS0FBYixDQUFtQkMsVUFBdkU7QUFDRCxLQUpDLENBQUY7QUFNQUMsSUFBQUEsUUFBUSxDQUFDLFlBQU07QUFDYjdCLE1BQUFBLE1BQU0sQ0FBQ0MsVUFBUCxHQUFvQlAsYUFBcEI7QUFDRCxLQUZPLENBQVI7QUFHRCxHQXZITyxDQUFSO0FBd0hELENBN0lPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IEltYWdlQ29udGFpbmVyIH0gZnJvbSAnLi4vaW1hZ2UtY29udGFpbmVyJztcblxuamVzdC5tb2NrKCdAcGllLWxpYi9jb25maWctdWknLCAoKSA9PiAoe1xuICBzZXR0aW5nczoge1xuICAgIFBhbmVsOiBwcm9wcyA9PiA8ZGl2IHsuLi5wcm9wc30gLz4sXG4gICAgdG9nZ2xlOiBqZXN0LmZuKCksXG4gICAgcmFkaW86IGplc3QuZm4oKSxcbiAgICBkcm9wZG93bjogamVzdC5mbigpXG4gIH0sXG4gIGxheW91dDoge1xuICAgIENvbmZpZ0xheW91dDogcHJvcHMgPT4gPGRpdj57cHJvcHMuY2hpbGRyZW59PC9kaXY+XG4gIH1cbn0pKTtcblxuZGVzY3JpYmUoJ0ltYWdlQ29udGFpbmVyJywgKCkgPT4ge1xuICBjb25zdCBvblVwZGF0ZUltYWdlRGltZW5zaW9uID0gamVzdC5mbigpO1xuICBjb25zdCBvbkltYWdlVXBsb2FkID0gamVzdC5mbigpO1xuICBsZXQgd3JhcHBlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgaW1hZ2VVcmw6ICd1cmwnLFxuICAgICAgb25VcGRhdGVJbWFnZURpbWVuc2lvbixcbiAgICAgIG9uSW1hZ2VVcGxvYWRcbiAgICB9O1xuICAgIHdyYXBwZXIgPSAoKSA9PiBzaGFsbG93KDxJbWFnZUNvbnRhaW5lciB7Li4ucHJvcHN9IC8+KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBsZXQgdztcbiAgICBsZXQgb2xkRmlsZVJlYWRlcjtcblxuICAgIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgICBjb25zdCBkdW1teUZpbGVSZWFkZXIgPSB7fTtcblxuICAgICAgdyA9IHdyYXBwZXIoKTtcbiAgICAgIHcuaW5zdGFuY2UoKS5yZXNpemUgPSB7IGFkZEV2ZW50TGlzdGVuZXI6IGplc3QuZm4oKSB9O1xuXG4gICAgICBvbGRGaWxlUmVhZGVyID0gd2luZG93LkZpbGVSZWFkZXI7XG5cbiAgICAgIGR1bW15RmlsZVJlYWRlci5yZWFkQXNEYXRhVVJMID0gKHJlc3VsdCkgPT4ge1xuICAgICAgICBkdW1teUZpbGVSZWFkZXIucmVzdWx0ID0gcmVzdWx0O1xuICAgICAgICBkdW1teUZpbGVSZWFkZXIub25sb2FkZW5kKCk7XG4gICAgICB9O1xuICAgICAgd2luZG93LkZpbGVSZWFkZXIgPSBqZXN0LmZuKCgpID0+IGR1bW15RmlsZVJlYWRlcik7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlRmlsZVJlYWQgY2FsbHMgb25JbWFnZVVwbG9hZCcsICgpID0+IHtcbiAgICAgIHcuaW5zdGFuY2UoKS5oYW5kbGVGaWxlUmVhZCgnZmlsZScpO1xuXG4gICAgICBleHBlY3Qob25JbWFnZVVwbG9hZCkudG9CZUNhbGxlZCgpO1xuICAgICAgZXhwZWN0KG9uSW1hZ2VVcGxvYWQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVVcGxvYWRJbWFnZSBjYWxscyBoYW5kbGVGaWxlUmVhZCB3aGljaCBjYWxscyBvbkltYWdlVXBsb2FkJywgKCkgPT4ge1xuICAgICAgdy5pbnN0YW5jZSgpLmhhbmRsZVVwbG9hZEltYWdlKHsgdGFyZ2V0OiB7IGZpbGVzOiBbJ2ZpbGUnXSB9LCBwcmV2ZW50RGVmYXVsdDogamVzdC5mbigpIH0pO1xuXG4gICAgICBleHBlY3Qob25JbWFnZVVwbG9hZCkudG9CZUNhbGxlZCgpO1xuICAgICAgZXhwZWN0KG9uSW1hZ2VVcGxvYWQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVPbkRyb3AgY2FsbHMgaGFuZGxlRmlsZVJlYWQgd2hpY2ggY2FsbHMgb25JbWFnZVVwbG9hZCBpZiBpdGVtIGlzIGZpbGUgYW5kIGltYWdlJywgKCkgPT4ge1xuICAgICAgdy5pbnN0YW5jZSgpLmhhbmRsZU9uRHJvcCh7XG4gICAgICAgIHByZXZlbnREZWZhdWx0OiBqZXN0LmZuKCksXG4gICAgICAgIGRhdGFUcmFuc2Zlcjoge1xuICAgICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAga2luZDogJ2ZpbGUnLFxuICAgICAgICAgICAgZ2V0QXNGaWxlOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHsgdHlwZTogJ2ltYWdlJywga2V5OiAnaXRlbScgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBmaWxlczogW11cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChvbkltYWdlVXBsb2FkKS50b0JlQ2FsbGVkV2l0aCh7IHR5cGU6ICdpbWFnZScsIGtleTogJ2l0ZW0nIH0pO1xuICAgICAgZXhwZWN0KG9uSW1hZ2VVcGxvYWQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygzKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVPbkRyb3AgY2FsbHMgaGFuZGxlRmlsZVJlYWQgd2hpY2ggZG9lc25cXCd0IGNhbGwgb25JbWFnZVVwbG9hZCBpZiBpdGVtIGlzIGZpbGUgYnV0IG5vdCBpbWFnZScsICgpID0+IHtcbiAgICAgIHcuaW5zdGFuY2UoKS5oYW5kbGVPbkRyb3Aoe1xuICAgICAgICBwcmV2ZW50RGVmYXVsdDogamVzdC5mbigpLFxuICAgICAgICBkYXRhVHJhbnNmZXI6IHtcbiAgICAgICAgICBpdGVtczogW3tcbiAgICAgICAgICAgIGtpbmQ6ICdmaWxlJyxcbiAgICAgICAgICAgIGdldEFzRmlsZTogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7IHR5cGU6ICdqcGcnIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZmlsZXM6IFtdXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBzYW1lIHRpbWVzIG51bWJlciBhcyBpbiBwcmV2aW91cyB0ZXN0LCBtZWFuaW5nIHRoYXQgaXMgd2FzIG5vdCBjYWxsZWQgYWdhaW5cbiAgICAgIGV4cGVjdChvbkltYWdlVXBsb2FkKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlT25Ecm9wIGNhbGxzIGhhbmRsZUZpbGVSZWFkIHdoaWNoIGNhbGxzIG9uSW1hZ2VVcGxvYWQgaWYgaXRlbSBpcyBub3QgZmlsZSwgYnV0IGZpbGUgaXMgaW1hZ2UnLCAoKSA9PiB7XG4gICAgICB3Lmluc3RhbmNlKCkuaGFuZGxlT25Ecm9wKHtcbiAgICAgICAgcHJldmVudERlZmF1bHQ6IGplc3QuZm4oKSxcbiAgICAgICAgZGF0YVRyYW5zZmVyOiB7XG4gICAgICAgICAgaXRlbXM6IFt7XG4gICAgICAgICAgICBraW5kOiAnc29tZXRoaW5nIGVsc2UnLFxuICAgICAgICAgICAgZ2V0QXNGaWxlOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHsgdHlwZTogJ2ltYWdlJyB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIGZpbGVzOiBbeyB0eXBlOiAnaW1hZ2UnLCBrZXk6ICdmaWxlJyB9XVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG9uSW1hZ2VVcGxvYWQpLnRvQmVDYWxsZWRXaXRoKHsgdHlwZTogJ2ltYWdlJywga2V5OiAnZmlsZScgfSk7XG4gICAgICBleHBlY3Qob25JbWFnZVVwbG9hZCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZU9uRHJvcCBjYWxscyBoYW5kbGVGaWxlUmVhZCB3aGljaCBkb2VzblxcJ3QgY2FsbCBvbkltYWdlVXBsb2FkIGlmIGl0ZW0gaXMgbm90IGZpbGUgYW5kIGZpbGUgaXMgbm90IGltYWdlJywgKCkgPT4ge1xuICAgICAgdy5pbnN0YW5jZSgpLmhhbmRsZU9uRHJvcCh7XG4gICAgICAgIHByZXZlbnREZWZhdWx0OiBqZXN0LmZuKCksXG4gICAgICAgIGRhdGFUcmFuc2Zlcjoge1xuICAgICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAga2luZDogJ3NvbWV0aGluZyBlbHNlJyxcbiAgICAgICAgICAgIGdldEFzRmlsZTogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7IHR5cGU6ICdpbWFnZScgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBmaWxlczogW3sgdHlwZTogJ3NvbWV0aGluZyBlbHNlJywga2V5OiAnZmlsZScgfV1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIHNhbWUgdGltZXMgbnVtYmVyIGFzIGluIHByZXZpb3VzIHRlc3QsIG1lYW5pbmcgdGhhdCBpcyB3YXMgbm90IGNhbGxlZCBhZ2FpblxuICAgICAgZXhwZWN0KG9uSW1hZ2VVcGxvYWQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcyg0KTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVPbkltYWdlTG9hZCBjYWxscyBvblVwZGF0ZUltYWdlRGltZW5zaW9uJywgKCkgPT4ge1xuICAgICAgdy5pbnN0YW5jZSgpLmhhbmRsZU9uSW1hZ2VMb2FkKHsgdGFyZ2V0OiB7IG9mZnNldEhlaWdodDogNTAsIG9mZnNldFdpZHRoOiA1MCB9fSk7XG5cbiAgICAgIGV4cGVjdChvblVwZGF0ZUltYWdlRGltZW5zaW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgIGhlaWdodDogNTAsXG4gICAgICAgIHdpZHRoOiA1MFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc3RvcFJlc2l6aW5nIGNhbGxzIG9uVXBkYXRlSW1hZ2VEaW1lbnNpb24nLCAoKSA9PiB7XG4gICAgICB3Lmluc3RhbmNlKCkuaGFuZGxlT25JbWFnZUxvYWQoeyB0YXJnZXQ6IHsgb2Zmc2V0SGVpZ2h0OiA1MCwgb2Zmc2V0V2lkdGg6IDUwIH19KTtcblxuICAgICAgZXhwZWN0KG9uVXBkYXRlSW1hZ2VEaW1lbnNpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHcuaW5zdGFuY2UoKS5zdGF0ZS5kaW1lbnNpb25zKTtcbiAgICB9KTtcblxuICAgIGFmdGVyQWxsKCgpID0+IHtcbiAgICAgIHdpbmRvdy5GaWxlUmVhZGVyID0gb2xkRmlsZVJlYWRlcjtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuIl19
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
8
|
+
|
|
9
|
+
var _enzyme = require("enzyme");
|
|
10
|
+
|
|
11
|
+
jest.mock('@pie-lib/config-ui', function () {
|
|
12
|
+
return {
|
|
13
|
+
choiceUtils: {
|
|
14
|
+
firstAvailableIndex: jest.fn()
|
|
15
|
+
},
|
|
16
|
+
settings: {
|
|
17
|
+
Panel: function Panel(props) {
|
|
18
|
+
return /*#__PURE__*/_react["default"].createElement("div", props);
|
|
19
|
+
},
|
|
20
|
+
toggle: jest.fn(),
|
|
21
|
+
radio: jest.fn()
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
var model = function model() {
|
|
27
|
+
return {
|
|
28
|
+
promptEnabled: true,
|
|
29
|
+
prompt: 'This is the question prompt',
|
|
30
|
+
imageUrl: '',
|
|
31
|
+
imageDimensions: {
|
|
32
|
+
height: 0,
|
|
33
|
+
width: 0
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
jest.mock('react-dom', function () {
|
|
39
|
+
return {
|
|
40
|
+
render: jest.fn()
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
describe('index', function () {
|
|
44
|
+
var Def;
|
|
45
|
+
var el;
|
|
46
|
+
var onModelChanged = jest.fn();
|
|
47
|
+
var initialModel = model();
|
|
48
|
+
beforeAll(function () {
|
|
49
|
+
Def = require('../index')["default"];
|
|
50
|
+
});
|
|
51
|
+
beforeEach(function () {
|
|
52
|
+
el = new Def();
|
|
53
|
+
el.model = initialModel;
|
|
54
|
+
el.onModelChanged = onModelChanged;
|
|
55
|
+
});
|
|
56
|
+
describe('set model', function () {
|
|
57
|
+
it('calls ReactDOM.render', function () {
|
|
58
|
+
expect(_reactDom["default"].render).toHaveBeenCalled();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5kZXgudGVzdC5qcyJdLCJuYW1lcyI6WyJqZXN0IiwibW9jayIsImNob2ljZVV0aWxzIiwiZmlyc3RBdmFpbGFibGVJbmRleCIsImZuIiwic2V0dGluZ3MiLCJQYW5lbCIsInByb3BzIiwidG9nZ2xlIiwicmFkaW8iLCJtb2RlbCIsInByb21wdEVuYWJsZWQiLCJwcm9tcHQiLCJpbWFnZVVybCIsImltYWdlRGltZW5zaW9ucyIsImhlaWdodCIsIndpZHRoIiwicmVuZGVyIiwiZGVzY3JpYmUiLCJEZWYiLCJlbCIsIm9uTW9kZWxDaGFuZ2VkIiwiaW5pdGlhbE1vZGVsIiwiYmVmb3JlQWxsIiwicmVxdWlyZSIsImJlZm9yZUVhY2giLCJpdCIsImV4cGVjdCIsIlJlYWN0RE9NIiwidG9IYXZlQmVlbkNhbGxlZCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSxvQkFBVixFQUFnQztBQUFBLFNBQU87QUFDckNDLElBQUFBLFdBQVcsRUFBRTtBQUNYQyxNQUFBQSxtQkFBbUIsRUFBRUgsSUFBSSxDQUFDSSxFQUFMO0FBRFYsS0FEd0I7QUFJckNDLElBQUFBLFFBQVEsRUFBRTtBQUNSQyxNQUFBQSxLQUFLLEVBQUUsZUFBQUMsS0FBSztBQUFBLDRCQUFJLHVDQUFTQSxLQUFULENBQUo7QUFBQSxPQURKO0FBRVJDLE1BQUFBLE1BQU0sRUFBRVIsSUFBSSxDQUFDSSxFQUFMLEVBRkE7QUFHUkssTUFBQUEsS0FBSyxFQUFFVCxJQUFJLENBQUNJLEVBQUw7QUFIQztBQUoyQixHQUFQO0FBQUEsQ0FBaEM7O0FBV0EsSUFBTU0sS0FBSyxHQUFHLFNBQVJBLEtBQVE7QUFBQSxTQUFPO0FBQ25CQyxJQUFBQSxhQUFhLEVBQUUsSUFESTtBQUVuQkMsSUFBQUEsTUFBTSxFQUFFLDZCQUZXO0FBR25CQyxJQUFBQSxRQUFRLEVBQUUsRUFIUztBQUluQkMsSUFBQUEsZUFBZSxFQUFFO0FBQ2ZDLE1BQUFBLE1BQU0sRUFBRSxDQURPO0FBRWZDLE1BQUFBLEtBQUssRUFBRTtBQUZRO0FBSkUsR0FBUDtBQUFBLENBQWQ7O0FBVUFoQixJQUFJLENBQUNDLElBQUwsQ0FBVSxXQUFWLEVBQXVCO0FBQUEsU0FBTztBQUM1QmdCLElBQUFBLE1BQU0sRUFBRWpCLElBQUksQ0FBQ0ksRUFBTDtBQURvQixHQUFQO0FBQUEsQ0FBdkI7QUFJQWMsUUFBUSxDQUFDLE9BQUQsRUFBVSxZQUFNO0FBQ3RCLE1BQUlDLEdBQUo7QUFDQSxNQUFJQyxFQUFKO0FBQ0EsTUFBSUMsY0FBYyxHQUFHckIsSUFBSSxDQUFDSSxFQUFMLEVBQXJCO0FBQ0EsTUFBSWtCLFlBQVksR0FBR1osS0FBSyxFQUF4QjtBQUVBYSxFQUFBQSxTQUFTLENBQUMsWUFBTTtBQUNkSixJQUFBQSxHQUFHLEdBQUdLLE9BQU8sQ0FBQyxVQUFELENBQVAsV0FBTjtBQUNELEdBRlEsQ0FBVDtBQUlBQyxFQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmTCxJQUFBQSxFQUFFLEdBQUcsSUFBSUQsR0FBSixFQUFMO0FBQ0FDLElBQUFBLEVBQUUsQ0FBQ1YsS0FBSCxHQUFXWSxZQUFYO0FBQ0FGLElBQUFBLEVBQUUsQ0FBQ0MsY0FBSCxHQUFvQkEsY0FBcEI7QUFDRCxHQUpTLENBQVY7QUFNQUgsRUFBQUEsUUFBUSxDQUFDLFdBQUQsRUFBYyxZQUFNO0FBQzFCUSxJQUFBQSxFQUFFLENBQUMsdUJBQUQsRUFBMEIsWUFBTTtBQUNoQ0MsTUFBQUEsTUFBTSxDQUFDQyxxQkFBU1gsTUFBVixDQUFOLENBQXdCWSxnQkFBeEI7QUFDRCxLQUZDLENBQUY7QUFHRCxHQUpPLENBQVI7QUFLRCxDQXJCTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5cbmplc3QubW9jaygnQHBpZS1saWIvY29uZmlnLXVpJywgKCkgPT4gKHtcbiAgY2hvaWNlVXRpbHM6IHtcbiAgICBmaXJzdEF2YWlsYWJsZUluZGV4OiBqZXN0LmZuKClcbiAgfSxcbiAgc2V0dGluZ3M6IHtcbiAgICBQYW5lbDogcHJvcHMgPT4gPGRpdiB7Li4ucHJvcHN9IC8+LFxuICAgIHRvZ2dsZTogamVzdC5mbigpLFxuICAgIHJhZGlvOiBqZXN0LmZuKClcbiAgfVxufSkpO1xuXG5jb25zdCBtb2RlbCA9ICgpID0+ICh7XG4gIHByb21wdEVuYWJsZWQ6IHRydWUsXG4gIHByb21wdDogJ1RoaXMgaXMgdGhlIHF1ZXN0aW9uIHByb21wdCcsXG4gIGltYWdlVXJsOiAnJyxcbiAgaW1hZ2VEaW1lbnNpb25zOiB7XG4gICAgaGVpZ2h0OiAwLFxuICAgIHdpZHRoOiAwXG4gIH1cbn0pO1xuXG5qZXN0Lm1vY2soJ3JlYWN0LWRvbScsICgpID0+ICh7XG4gIHJlbmRlcjogamVzdC5mbigpXG59KSk7XG5cbmRlc2NyaWJlKCdpbmRleCcsICgpID0+IHtcbiAgbGV0IERlZjtcbiAgbGV0IGVsO1xuICBsZXQgb25Nb2RlbENoYW5nZWQgPSBqZXN0LmZuKCk7XG4gIGxldCBpbml0aWFsTW9kZWwgPSBtb2RlbCgpO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgRGVmID0gcmVxdWlyZSgnLi4vaW5kZXgnKS5kZWZhdWx0O1xuICB9KTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBlbCA9IG5ldyBEZWYoKTtcbiAgICBlbC5tb2RlbCA9IGluaXRpYWxNb2RlbDtcbiAgICBlbC5vbk1vZGVsQ2hhbmdlZCA9IG9uTW9kZWxDaGFuZ2VkO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2V0IG1vZGVsJywgKCkgPT4ge1xuICAgIGl0KCdjYWxscyBSZWFjdERPTS5yZW5kZXInLCAoKSA9PiB7XG4gICAgICBleHBlY3QoUmVhY3RET00ucmVuZGVyKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _enzyme = require("enzyme");
|
|
6
|
+
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
|
|
9
|
+
var _root = require("../root");
|
|
10
|
+
|
|
11
|
+
var _defaults = _interopRequireDefault(require("../defaults"));
|
|
12
|
+
|
|
13
|
+
jest.mock('@pie-lib/config-ui', function () {
|
|
14
|
+
return {
|
|
15
|
+
settings: {
|
|
16
|
+
Panel: function Panel(props) {
|
|
17
|
+
return /*#__PURE__*/_react["default"].createElement("div", props);
|
|
18
|
+
},
|
|
19
|
+
toggle: jest.fn(),
|
|
20
|
+
radio: jest.fn(),
|
|
21
|
+
dropdown: jest.fn()
|
|
22
|
+
},
|
|
23
|
+
layout: {
|
|
24
|
+
ConfigLayout: function ConfigLayout(props) {
|
|
25
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, props.children);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
var model = {
|
|
31
|
+
prompt: 'Test Prompt',
|
|
32
|
+
promptEnabled: true,
|
|
33
|
+
imageUrl: '',
|
|
34
|
+
imageDimensions: {
|
|
35
|
+
height: 100,
|
|
36
|
+
width: 100
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
describe('Root', function () {
|
|
40
|
+
var onConfigurationChanged = jest.fn();
|
|
41
|
+
var onModelChanged = jest.fn();
|
|
42
|
+
var wrapper;
|
|
43
|
+
beforeEach(function () {
|
|
44
|
+
var props = {
|
|
45
|
+
classes: {},
|
|
46
|
+
model: model,
|
|
47
|
+
configuration: _defaults["default"].configuration,
|
|
48
|
+
onConfigurationChanged: onConfigurationChanged,
|
|
49
|
+
onModelChanged: onModelChanged
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
wrapper = function wrapper() {
|
|
53
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_root.Root, props));
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
describe('snapshot', function () {
|
|
57
|
+
it('renders', function () {
|
|
58
|
+
expect(wrapper()).toMatchSnapshot();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('logic', function () {
|
|
62
|
+
var w;
|
|
63
|
+
beforeAll(function () {
|
|
64
|
+
w = wrapper();
|
|
65
|
+
});
|
|
66
|
+
it('onPromptChanged calls onModelChanged', function () {
|
|
67
|
+
w.instance().onPromptChanged('New Prompt');
|
|
68
|
+
expect(onModelChanged).toHaveBeenCalledWith(expect.objectContaining({
|
|
69
|
+
prompt: 'New Prompt'
|
|
70
|
+
}));
|
|
71
|
+
});
|
|
72
|
+
it('onTeacherInstructionsChanged calls onModelChanged', function () {
|
|
73
|
+
w.instance().onTeacherInstructionsChanged('New Teacher Instructions');
|
|
74
|
+
expect(onModelChanged).toHaveBeenCalledWith(expect.objectContaining({
|
|
75
|
+
teacherInstructions: 'New Teacher Instructions'
|
|
76
|
+
}));
|
|
77
|
+
});
|
|
78
|
+
it('onUpdateImageDimension calls onModelChanged', function () {
|
|
79
|
+
w.instance().onUpdateImageDimension({
|
|
80
|
+
height: 200,
|
|
81
|
+
width: 200
|
|
82
|
+
});
|
|
83
|
+
expect(onModelChanged).toHaveBeenCalledWith(expect.objectContaining({
|
|
84
|
+
imageDimensions: {
|
|
85
|
+
height: 200,
|
|
86
|
+
width: 200
|
|
87
|
+
}
|
|
88
|
+
}));
|
|
89
|
+
});
|
|
90
|
+
it('onImageUpload calls onModelChanged', function () {
|
|
91
|
+
w.instance().onImageUpload('url');
|
|
92
|
+
expect(onModelChanged).toHaveBeenCalledWith(expect.objectContaining({
|
|
93
|
+
imageUrl: 'url'
|
|
94
|
+
}));
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcm9vdC50ZXN0LmpzeCJdLCJuYW1lcyI6WyJqZXN0IiwibW9jayIsInNldHRpbmdzIiwiUGFuZWwiLCJwcm9wcyIsInRvZ2dsZSIsImZuIiwicmFkaW8iLCJkcm9wZG93biIsImxheW91dCIsIkNvbmZpZ0xheW91dCIsImNoaWxkcmVuIiwibW9kZWwiLCJwcm9tcHQiLCJwcm9tcHRFbmFibGVkIiwiaW1hZ2VVcmwiLCJpbWFnZURpbWVuc2lvbnMiLCJoZWlnaHQiLCJ3aWR0aCIsImRlc2NyaWJlIiwib25Db25maWd1cmF0aW9uQ2hhbmdlZCIsIm9uTW9kZWxDaGFuZ2VkIiwid3JhcHBlciIsImJlZm9yZUVhY2giLCJjbGFzc2VzIiwiY29uZmlndXJhdGlvbiIsImRlZmF1bHRzIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJ3IiwiYmVmb3JlQWxsIiwiaW5zdGFuY2UiLCJvblByb21wdENoYW5nZWQiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsIm9iamVjdENvbnRhaW5pbmciLCJvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkIiwidGVhY2hlckluc3RydWN0aW9ucyIsIm9uVXBkYXRlSW1hZ2VEaW1lbnNpb24iLCJvbkltYWdlVXBsb2FkIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUFBLElBQUksQ0FBQ0MsSUFBTCxDQUFVLG9CQUFWLEVBQWdDO0FBQUEsU0FBTztBQUNyQ0MsSUFBQUEsUUFBUSxFQUFFO0FBQ1JDLE1BQUFBLEtBQUssRUFBRSxlQUFBQyxLQUFLO0FBQUEsNEJBQUksdUNBQVNBLEtBQVQsQ0FBSjtBQUFBLE9BREo7QUFFUkMsTUFBQUEsTUFBTSxFQUFFTCxJQUFJLENBQUNNLEVBQUwsRUFGQTtBQUdSQyxNQUFBQSxLQUFLLEVBQUVQLElBQUksQ0FBQ00sRUFBTCxFQUhDO0FBSVJFLE1BQUFBLFFBQVEsRUFBRVIsSUFBSSxDQUFDTSxFQUFMO0FBSkYs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QUZnQztBQUFuQixPQUF4QixDQURKO0FBTUQsS0FaQyxDQUFGO0FBY0FTLElBQUFBLEVBQUUsQ0FBQyxvQ0FBRCxFQUF1QyxZQUFNO0FBQzdDRyxNQUFBQSxDQUFDLENBQUNFLFFBQUYsR0FBYU8sYUFBYixDQUEyQixLQUEzQjtBQUVBWCxNQUFBQSxNQUFNLENBQUNQLGNBQUQsQ0FBTixDQUF1QmEsb0JBQXZCLENBQ0lOLE1BQU0sQ0FBQ08sZ0JBQVAsQ0FBd0I7QUFBRXBCLFFBQUFBLFFBQVEsRUFBRTtBQUFaLE9BQXhCLENBREo7QUFFRCxLQUxDLENBQUY7QUFNRCxHQXpDTyxDQUFSO0FBMENELENBaEVPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IFJvb3QgfSBmcm9tICcuLi9yb290JztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuLi9kZWZhdWx0cyc7XG5cbmplc3QubW9jaygnQHBpZS1saWIvY29uZmlnLXVpJywgKCkgPT4gKHtcbiAgc2V0dGluZ3M6IHtcbiAgICBQYW5lbDogcHJvcHMgPT4gPGRpdiB7Li4ucHJvcHN9IC8+LFxuICAgIHRvZ2dsZTogamVzdC5mbigpLFxuICAgIHJhZGlvOiBqZXN0LmZuKCksXG4gICAgZHJvcGRvd246IGplc3QuZm4oKVxuICB9LFxuICBsYXlvdXQ6IHtcbiAgICBDb25maWdMYXlvdXQ6IHByb3BzID0+IDxkaXY+e3Byb3BzLmNoaWxkcmVufTwvZGl2PlxuICB9XG59KSk7XG5cbmNvbnN0IG1vZGVsID0ge1xuICBwcm9tcHQ6ICdUZXN0IFByb21wdCcsXG4gIHByb21wdEVuYWJsZWQ6IHRydWUsXG4gIGltYWdlVXJsOiAnJyxcbiAgaW1hZ2VEaW1lbnNpb25zOiB7XG4gICAgaGVpZ2h0OiAxMDAsXG4gICAgd2lkdGg6IDEwMFxuICB9XG59O1xuXG5kZXNjcmliZSgnUm9vdCcsICgpID0+IHtcbiAgY29uc3Qgb25Db25maWd1cmF0aW9uQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgY29uc3Qgb25Nb2RlbENoYW5nZWQgPSBqZXN0LmZuKCk7XG4gIGxldCB3cmFwcGVyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgY2xhc3Nlczoge30sXG4gICAgICBtb2RlbCxcbiAgICAgIGNvbmZpZ3VyYXRpb246IGRlZmF1bHRzLmNvbmZpZ3VyYXRpb24sXG4gICAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkLFxuICAgICAgb25Nb2RlbENoYW5nZWQsXG4gICAgfTtcbiAgICB3cmFwcGVyID0gKCkgPT4gc2hhbGxvdyg8Um9vdCB7Li4ucHJvcHN9IC8+KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBsZXQgdztcblxuICAgIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgIH0pO1xuXG4gICAgaXQoJ29uUHJvbXB0Q2hhbmdlZCBjYWxscyBvbk1vZGVsQ2hhbmdlZCcsICgpID0+IHtcbiAgICAgIHcuaW5zdGFuY2UoKS5vblByb21wdENoYW5nZWQoJ05ldyBQcm9tcHQnKTtcblxuICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7IHByb21wdDogJ05ldyBQcm9tcHQnIH0pKVxuICAgIH0pO1xuXG4gICAgaXQoJ29uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWQgY2FsbHMgb25Nb2RlbENoYW5nZWQnLCAoKSA9PiB7XG4gICAgICB3Lmluc3RhbmNlKCkub25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCgnTmV3IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyk7XG5cbiAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoeyB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiAnTmV3IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyB9KSlcbiAgICB9KTtcblxuICAgIGl0KCdvblVwZGF0ZUltYWdlRGltZW5zaW9uIGNhbGxzIG9uTW9kZWxDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgdy5pbnN0YW5jZSgpLm9uVXBkYXRlSW1hZ2VEaW1lbnNpb24oe1xuICAgICAgICBoZWlnaHQ6IDIwMCxcbiAgICAgICAgd2lkdGg6IDIwMFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoeyBpbWFnZURpbWVuc2lvbnM6IHtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAyMDAsXG4gICAgICAgICAgICAgIHdpZHRoOiAyMDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSlcbiAgICB9KTtcblxuICAgIGl0KCdvbkltYWdlVXBsb2FkIGNhbGxzIG9uTW9kZWxDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgdy5pbnN0YW5jZSgpLm9uSW1hZ2VVcGxvYWQoJ3VybCcpO1xuXG4gICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHsgaW1hZ2VVcmw6ICd1cmwnIH0pKVxuICAgIH0pO1xuICB9KTtcbn0pO1xuXG4iXX0=
|
|
@@ -16,12 +16,13 @@ var _default = {
|
|
|
16
16
|
teacherInstructionsEnabled: true,
|
|
17
17
|
studentInstructionsEnabled: true,
|
|
18
18
|
backgroundImageEnabled: true,
|
|
19
|
+
spellCheckEnabled: true,
|
|
19
20
|
toolbarEditorPosition: 'bottom'
|
|
20
21
|
},
|
|
21
22
|
configuration: {
|
|
22
23
|
spellCheck: {
|
|
23
|
-
label:
|
|
24
|
-
settings:
|
|
24
|
+
label: 'Spellcheck',
|
|
25
|
+
settings: false,
|
|
25
26
|
enabled: true
|
|
26
27
|
},
|
|
27
28
|
backgroundImage: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","prompt","imageUrl","imageDimensions","height","width","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","backgroundImageEnabled","toolbarEditorPosition","configuration","spellCheck","label","settings","enabled","backgroundImage","teacherInstructions"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE,6BADH;AAELC,IAAAA,QAAQ,EAAE,EAFL;AAGLC,IAAAA,eAAe,EAAE;AACfC,MAAAA,MAAM,EAAE,CADO;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KAHZ;AAOLC,IAAAA,aAAa,EAAE,IAPV;AAQLC,IAAAA,0BAA0B,EAAE,IARvB;AASLC,IAAAA,0BAA0B,EAAE,IATvB;AAULC,IAAAA,sBAAsB,EAAE,IAVnB;AAWLC,IAAAA,qBAAqB,EAAE;
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","prompt","imageUrl","imageDimensions","height","width","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","backgroundImageEnabled","spellCheckEnabled","toolbarEditorPosition","configuration","spellCheck","label","settings","enabled","backgroundImage","teacherInstructions"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE,6BADH;AAELC,IAAAA,QAAQ,EAAE,EAFL;AAGLC,IAAAA,eAAe,EAAE;AACfC,MAAAA,MAAM,EAAE,CADO;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KAHZ;AAOLC,IAAAA,aAAa,EAAE,IAPV;AAQLC,IAAAA,0BAA0B,EAAE,IARvB;AASLC,IAAAA,0BAA0B,EAAE,IATvB;AAULC,IAAAA,sBAAsB,EAAE,IAVnB;AAWLC,IAAAA,iBAAiB,EAAC,IAXb;AAYLC,IAAAA,qBAAqB,EAAE;AAZlB,GADM;AAebC,EAAAA,aAAa,EAAE;AACbC,IAAAA,UAAU,EAAE;AACVC,MAAAA,KAAK,EAAE,YADG;AAEVC,MAAAA,QAAQ,EAAC,KAFC;AAGVC,MAAAA,OAAO,EAAC;AAHE,KADC;AAMbC,IAAAA,eAAe,EAAE;AACfF,MAAAA,QAAQ,EAAE,IADK;AAEfD,MAAAA,KAAK,EAAE;AAFQ,KANJ;AAUbb,IAAAA,MAAM,EAAE;AACNc,MAAAA,QAAQ,EAAE,IADJ;AAEND,MAAAA,KAAK,EAAE;AAFD,KAVK;AAcbI,IAAAA,mBAAmB,EAAE;AACnBH,MAAAA,QAAQ,EAAE,IADS;AAEnBD,MAAAA,KAAK,EAAE;AAFY;AAdR;AAfF,C","sourcesContent":["export default {\n model: {\n prompt: 'This is the question prompt',\n imageUrl: '',\n imageDimensions: {\n height: 0,\n width: 0\n },\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n backgroundImageEnabled: true,\n spellCheckEnabled:true,\n toolbarEditorPosition: 'bottom',\n },\n configuration: {\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n backgroundImage: {\n settings: true,\n label: 'Background Image'\n },\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n }\n }\n};\n"],"file":"defaults.js"}
|
|
@@ -37,10 +37,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
37
37
|
|
|
38
38
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
39
39
|
|
|
40
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
41
|
-
|
|
42
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
43
|
-
|
|
44
40
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
45
41
|
|
|
46
42
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -164,23 +160,24 @@ var ImageContainer = /*#__PURE__*/function (_Component) {
|
|
|
164
160
|
});
|
|
165
161
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "startResizing", function (e) {
|
|
166
162
|
var box = _this.image;
|
|
167
|
-
var
|
|
163
|
+
var _this$state = _this.state,
|
|
164
|
+
maxImageWidth = _this$state.maxImageWidth,
|
|
165
|
+
dimensions = _this$state.dimensions;
|
|
168
166
|
var bounds = e.target.getBoundingClientRect();
|
|
169
167
|
var x = e.clientX - bounds.left;
|
|
170
168
|
var y = e.clientY - bounds.top;
|
|
169
|
+
var imageAspectRatio = dimensions.width / dimensions.height;
|
|
171
170
|
var fitsContainer = x <= maxImageWidth + 5;
|
|
172
171
|
var hasMinimumWidth = x > 150 && y > 150;
|
|
173
|
-
var keepAspectRatioWidth = x > y ? x : 'auto';
|
|
174
|
-
var keepAspectRatioHeight = x > y ? 'auto' : y;
|
|
175
172
|
|
|
176
173
|
if (fitsContainer && hasMinimumWidth) {
|
|
177
|
-
box.style.width = "".concat(
|
|
178
|
-
box.style.height = "".concat(
|
|
174
|
+
box.style.width = "".concat(x, "px");
|
|
175
|
+
box.style.height = "".concat(x / imageAspectRatio, "px");
|
|
179
176
|
|
|
180
177
|
_this.setState({
|
|
181
178
|
dimensions: {
|
|
182
|
-
height:
|
|
183
|
-
width:
|
|
179
|
+
height: x / imageAspectRatio,
|
|
180
|
+
width: x
|
|
184
181
|
}
|
|
185
182
|
});
|
|
186
183
|
}
|
|
@@ -188,8 +185,8 @@ var ImageContainer = /*#__PURE__*/function (_Component) {
|
|
|
188
185
|
_this.handleDisableDrag();
|
|
189
186
|
});
|
|
190
187
|
_this.state = {
|
|
191
|
-
maxImageWidth:
|
|
192
|
-
maxImageHeight:
|
|
188
|
+
maxImageWidth: "100%",
|
|
189
|
+
maxImageHeight: "auto",
|
|
193
190
|
dragEnabled: true,
|
|
194
191
|
dropzoneActive: false
|
|
195
192
|
};
|
|
@@ -236,12 +233,11 @@ var ImageContainer = /*#__PURE__*/function (_Component) {
|
|
|
236
233
|
var _this$props = this.props,
|
|
237
234
|
classes = _this$props.classes,
|
|
238
235
|
imageUrl = _this$props.imageUrl;
|
|
239
|
-
var _this$
|
|
240
|
-
dropzoneActive = _this$
|
|
241
|
-
dragEnabled = _this$
|
|
242
|
-
maxImageHeight = _this$
|
|
243
|
-
maxImageWidth = _this$
|
|
244
|
-
dimensions = _this$state.dimensions;
|
|
236
|
+
var _this$state2 = this.state,
|
|
237
|
+
dropzoneActive = _this$state2.dropzoneActive,
|
|
238
|
+
dragEnabled = _this$state2.dragEnabled,
|
|
239
|
+
maxImageHeight = _this$state2.maxImageHeight,
|
|
240
|
+
maxImageWidth = _this$state2.maxImageWidth;
|
|
245
241
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
246
242
|
className: classes.base
|
|
247
243
|
}, /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
|
|
@@ -268,10 +264,10 @@ var ImageContainer = /*#__PURE__*/function (_Component) {
|
|
|
268
264
|
_this3.image = _ref3;
|
|
269
265
|
},
|
|
270
266
|
src: imageUrl,
|
|
271
|
-
style:
|
|
267
|
+
style: {
|
|
272
268
|
maxWidth: maxImageWidth,
|
|
273
269
|
maxHeight: maxImageHeight
|
|
274
|
-
},
|
|
270
|
+
},
|
|
275
271
|
alt: ""
|
|
276
272
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
277
273
|
ref: function ref(_ref4) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/image-container.jsx"],"names":["isImage","file","imageType","type","match","ImageContainer","props","onImageUpload","reader","FileReader","onloadend","result","readAsDataURL","e","preventDefault","target","files","handleFileRead","setState","dropzoneActive","dataTransfer","items","kind","getAsFile","makeDropzoneInactive","state","makeDropzoneActive","dragEnabled","input","click","offsetHeight","offsetWidth","onUpdateImageDimension","resizeHandle","resize","dimensions","height","width","addEventListener","initialiseResize","window","startResizing","stopResizing","handleEnableDrag","removeEventListener","box","image","maxImageWidth","bounds","getBoundingClientRect","x","clientX","left","y","clientY","top","fitsContainer","hasMinimumWidth","keepAspectRatioWidth","keepAspectRatioHeight","style","handleDisableDrag","maxImageHeight","imageSection","positionInfo","label","classes","handleInputClick","handleUploadImage","ref","imageUrl","base","boxActive","onDragExit","handleOnDragExit","onDragLeave","onDragOver","handleOnDragOver","onDrop","handleOnDrop","toolbar","renderUploadControl","drawableHeight","imageContainer","handleOnImageLoad","maxWidth","maxHeight","centered","Component","styles","theme","marginTop","spacing","unit","border","borderRadius","alignItems","display","flexDirection","justifyContent","minHeight","position","borderBottom","borderRight","bottom","cursor","right","backgroundColor","borderTopLeftRadius","borderTopRightRadius","padding","propTypes","PropTypes","object","isRequired","string","func"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Button from './button';\n\nconst isImage = (file) => {\n const imageType = /image.*/;\n return file.type.match(imageType);\n};\n\nexport class ImageContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n maxImageWidth: 0,\n maxImageHeight: 0,\n dragEnabled: true,\n dropzoneActive: false,\n };\n }\n\n componentDidMount() {\n if (this.imageSection) {\n const positionInfo = this.imageSection.getBoundingClientRect();\n const { height, width } = positionInfo;\n this.setState({\n maxImageWidth: width,\n maxImageHeight: height,\n });\n }\n }\n\n handleFileRead = (file) => {\n const { onImageUpload } = this.props;\n const reader = new FileReader();\n reader.onloadend = () => {\n onImageUpload(reader.result);\n };\n reader.readAsDataURL(file);\n };\n\n handleUploadImage = (e) => {\n e.preventDefault();\n const file = e.target.files[0];\n this.handleFileRead(file);\n };\n\n makeDropzoneActive = () => this.setState({ dropzoneActive: true });\n\n makeDropzoneInactive = () => this.setState({ dropzoneActive: false });\n\n handleOnDrop = (e) => {\n e.preventDefault();\n const { items, files } = e.dataTransfer;\n\n if (items && items[0].kind === 'file') {\n const file = items[0].getAsFile();\n if (isImage(file)) {\n this.handleFileRead(file);\n }\n } else if (isImage(files[0])) {\n this.handleFileRead(files[0]);\n }\n\n this.makeDropzoneInactive();\n };\n\n handleOnDragOver = (e) => {\n e.preventDefault();\n const { dropzoneActive } = this.state;\n\n if (!dropzoneActive) {\n this.makeDropzoneActive();\n }\n };\n\n handleOnDragExit = (e) => {\n e.preventDefault();\n this.makeDropzoneInactive();\n };\n\n handleEnableDrag = () => this.setState({ dragEnabled: true });\n handleDisableDrag = () => this.setState({ dragEnabled: false });\n handleInputClick = () => this.input.click();\n\n handleOnImageLoad = ({ target: { offsetHeight, offsetWidth } }) => {\n const { onUpdateImageDimension } = this.props;\n const resizeHandle = this.resize;\n\n const dimensions = {\n height: offsetHeight,\n width: offsetWidth,\n };\n\n this.setState({ dimensions });\n onUpdateImageDimension(dimensions);\n\n resizeHandle.addEventListener('mousedown', this.initialiseResize, false);\n };\n\n initialiseResize = () => {\n window.addEventListener('mousemove', this.startResizing, false);\n window.addEventListener('mouseup', this.stopResizing, false);\n };\n\n stopResizing = () => {\n const { onUpdateImageDimension } = this.props;\n const { dimensions } = this.state;\n\n this.handleEnableDrag();\n onUpdateImageDimension(dimensions);\n\n window.removeEventListener('mousemove', this.startResizing, false);\n window.removeEventListener('mouseup', this.stopResizing, false);\n };\n\n startResizing = (e) => {\n const box = this.image;\n const { maxImageWidth } = this.state;\n\n const bounds = e.target.getBoundingClientRect();\n const x = e.clientX - bounds.left;\n const y = e.clientY - bounds.top;\n\n const fitsContainer = x <= maxImageWidth + 5;\n const hasMinimumWidth = x > 150 && y > 150;\n\n const keepAspectRatioWidth = x > y ? x : 'auto';\n const keepAspectRatioHeight = x > y ? 'auto' : y;\n\n if (fitsContainer && hasMinimumWidth) {\n box.style.width = `${keepAspectRatioWidth}px`;\n box.style.height = `${keepAspectRatioHeight}px`;\n\n this.setState({\n dimensions: {\n height: keepAspectRatioHeight,\n width: keepAspectRatioWidth,\n },\n });\n }\n\n this.handleDisableDrag();\n };\n\n renderUploadControl(label) {\n const { classes } = this.props;\n\n return (\n <div>\n <Button label={label} onClick={this.handleInputClick} />\n <input\n accept=\"image/*\"\n className={classes.input}\n onChange={this.handleUploadImage}\n ref={(ref) => {\n this.input = ref;\n }}\n type=\"file\"\n />\n </div>\n );\n }\n\n render() {\n const { classes, imageUrl } = this.props;\n const {\n dropzoneActive,\n dragEnabled,\n maxImageHeight,\n maxImageWidth,\n dimensions,\n } = this.state;\n\n return (\n <div className={classes.base}>\n <div\n className={`${classes.box} ${\n dropzoneActive ? classes.boxActive : ''\n }`}\n {...(dragEnabled\n ? {\n onDragExit: this.handleOnDragExit,\n onDragLeave: this.handleOnDragExit,\n onDragOver: this.handleOnDragOver,\n onDrop: this.handleOnDrop,\n }\n : {})}\n >\n <div className={classes.toolbar}>\n {this.renderUploadControl(\n imageUrl ? 'Replace Image' : 'Upload Image'\n )}\n </div>\n\n <div\n ref={(ref) => {\n this.imageSection = ref;\n }}\n className={classes.drawableHeight}\n >\n {imageUrl ? (\n <div className={classes.imageContainer}>\n <img\n className={classes.image}\n height=\"auto\"\n onLoad={this.handleOnImageLoad}\n ref={(ref) => {\n this.image = ref;\n }}\n src={imageUrl}\n style={{\n maxWidth: maxImageWidth,\n maxHeight: maxImageHeight,\n ...dimensions,\n }}\n alt=\"\"\n />\n <div\n ref={(ref) => {\n this.resize = ref;\n }}\n className={classes.resize}\n />\n </div>\n ) : (\n <div className={`${classes.drawableHeight} ${classes.centered}`}>\n <label>Drag and drop or upload image from computer</label>\n <br />\n {this.renderUploadControl('Upload Image')}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n base: {\n marginTop: theme.spacing.unit * 2,\n },\n box: {\n border: '1px solid #E0E1E6',\n borderRadius: '5px',\n },\n boxActive: {\n border: '1px solid #0032C2',\n },\n centered: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n drawableHeight: {\n minHeight: 350,\n },\n image: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content',\n },\n resize: {\n borderBottom: '1px solid #727272',\n borderRight: '1px solid #727272',\n bottom: '-10px',\n cursor: 'se-resize',\n height: '10px',\n position: 'absolute',\n right: '-10px',\n width: '10px',\n },\n input: {\n display: 'none',\n },\n toolbar: {\n backgroundColor: '#ECEDF1',\n borderBottom: '1px solid #E0E1E6',\n borderTopLeftRadius: '5px',\n borderTopRightRadius: '5px',\n display: 'flex',\n padding: '12px 8px',\n },\n});\n\nImageContainer.propTypes = {\n classes: PropTypes.object.isRequired,\n imageUrl: PropTypes.string.isRequired,\n onImageUpload: PropTypes.func.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(ImageContainer);\n"],"file":"image-container.js"}
|
|
1
|
+
{"version":3,"sources":["../src/image-container.jsx"],"names":["isImage","file","imageType","type","match","ImageContainer","props","onImageUpload","reader","FileReader","onloadend","result","readAsDataURL","e","preventDefault","target","files","handleFileRead","setState","dropzoneActive","dataTransfer","items","kind","getAsFile","makeDropzoneInactive","state","makeDropzoneActive","dragEnabled","input","click","offsetHeight","offsetWidth","onUpdateImageDimension","resizeHandle","resize","dimensions","height","width","addEventListener","initialiseResize","window","startResizing","stopResizing","handleEnableDrag","removeEventListener","box","image","maxImageWidth","bounds","getBoundingClientRect","x","clientX","left","y","clientY","top","imageAspectRatio","fitsContainer","hasMinimumWidth","style","handleDisableDrag","maxImageHeight","imageSection","positionInfo","label","classes","handleInputClick","handleUploadImage","ref","imageUrl","base","boxActive","onDragExit","handleOnDragExit","onDragLeave","onDragOver","handleOnDragOver","onDrop","handleOnDrop","toolbar","renderUploadControl","drawableHeight","imageContainer","handleOnImageLoad","maxWidth","maxHeight","centered","Component","styles","theme","marginTop","spacing","unit","border","borderRadius","alignItems","display","flexDirection","justifyContent","minHeight","position","borderBottom","borderRight","bottom","cursor","right","backgroundColor","borderTopLeftRadius","borderTopRightRadius","padding","propTypes","PropTypes","object","isRequired","string","func"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Button from './button';\n\nconst isImage = (file) => {\n const imageType = /image.*/;\n return file.type.match(imageType);\n};\n\nexport class ImageContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n maxImageWidth: \"100%\",\n maxImageHeight: \"auto\",\n dragEnabled: true,\n dropzoneActive: false,\n };\n }\n\n componentDidMount() {\n if (this.imageSection) {\n const positionInfo = this.imageSection.getBoundingClientRect();\n const { height, width } = positionInfo;\n this.setState({\n maxImageWidth: width,\n maxImageHeight: height,\n });\n }\n }\n\n handleFileRead = (file) => {\n const { onImageUpload } = this.props;\n const reader = new FileReader();\n reader.onloadend = () => {\n onImageUpload(reader.result);\n };\n reader.readAsDataURL(file);\n };\n\n handleUploadImage = (e) => {\n e.preventDefault();\n const file = e.target.files[0];\n this.handleFileRead(file);\n };\n\n makeDropzoneActive = () => this.setState({ dropzoneActive: true });\n\n makeDropzoneInactive = () => this.setState({ dropzoneActive: false });\n\n handleOnDrop = (e) => {\n e.preventDefault();\n const { items, files } = e.dataTransfer;\n\n if (items && items[0].kind === 'file') {\n const file = items[0].getAsFile();\n if (isImage(file)) {\n this.handleFileRead(file);\n }\n } else if (isImage(files[0])) {\n this.handleFileRead(files[0]);\n }\n\n this.makeDropzoneInactive();\n };\n\n handleOnDragOver = (e) => {\n e.preventDefault();\n const { dropzoneActive } = this.state;\n\n if (!dropzoneActive) {\n this.makeDropzoneActive();\n }\n };\n\n handleOnDragExit = (e) => {\n e.preventDefault();\n this.makeDropzoneInactive();\n };\n\n handleEnableDrag = () => this.setState({ dragEnabled: true });\n handleDisableDrag = () => this.setState({ dragEnabled: false });\n handleInputClick = () => this.input.click();\n\n handleOnImageLoad = ({ target: { offsetHeight, offsetWidth } }) => {\n const { onUpdateImageDimension } = this.props;\n const resizeHandle = this.resize;\n\n const dimensions = {\n height: offsetHeight,\n width: offsetWidth,\n };\n\n this.setState({ dimensions });\n onUpdateImageDimension(dimensions);\n\n resizeHandle.addEventListener('mousedown', this.initialiseResize, false);\n };\n\n initialiseResize = () => {\n window.addEventListener('mousemove', this.startResizing, false);\n window.addEventListener('mouseup', this.stopResizing, false);\n };\n\n stopResizing = () => {\n const { onUpdateImageDimension } = this.props;\n const { dimensions } = this.state;\n\n this.handleEnableDrag();\n onUpdateImageDimension(dimensions);\n\n window.removeEventListener('mousemove', this.startResizing, false);\n window.removeEventListener('mouseup', this.stopResizing, false);\n };\n\n startResizing = (e) => {\n const box = this.image;\n const { maxImageWidth, dimensions } = this.state;\n\n const bounds = e.target.getBoundingClientRect();\n const x = e.clientX - bounds.left;\n const y = e.clientY - bounds.top;\n\n const imageAspectRatio = dimensions.width / dimensions.height;\n\n const fitsContainer = x <= maxImageWidth + 5;\n const hasMinimumWidth = x > 150 && y > 150;\n\n if (fitsContainer && hasMinimumWidth) {\n box.style.width = `${x}px`;\n box.style.height = `${x/imageAspectRatio}px`;\n\n this.setState({\n dimensions: {\n height:x/imageAspectRatio,\n width:x,\n },\n });\n }\n\n this.handleDisableDrag();\n };\n\n renderUploadControl(label) {\n const { classes } = this.props;\n\n return (\n <div>\n <Button label={label} onClick={this.handleInputClick} />\n <input\n accept=\"image/*\"\n className={classes.input}\n onChange={this.handleUploadImage}\n ref={(ref) => {\n this.input = ref;\n }}\n type=\"file\"\n />\n </div>\n );\n }\n\n render() {\n const { classes, imageUrl } = this.props;\n const {\n dropzoneActive,\n dragEnabled,\n maxImageHeight,\n maxImageWidth\n } = this.state;\n\n return (\n <div className={classes.base}>\n <div\n className={`${classes.box} ${\n dropzoneActive ? classes.boxActive : ''\n }`}\n {...(dragEnabled\n ? {\n onDragExit: this.handleOnDragExit,\n onDragLeave: this.handleOnDragExit,\n onDragOver: this.handleOnDragOver,\n onDrop: this.handleOnDrop,\n }\n : {})}\n >\n <div className={classes.toolbar}>\n {this.renderUploadControl(\n imageUrl ? 'Replace Image' : 'Upload Image'\n )}\n </div>\n\n <div\n ref={(ref) => {\n this.imageSection = ref;\n }}\n className={classes.drawableHeight}\n >\n {imageUrl ? (\n <div className={classes.imageContainer}>\n <img\n className={classes.image}\n height=\"auto\"\n onLoad={this.handleOnImageLoad}\n ref={(ref) => {\n this.image = ref;\n }}\n src={imageUrl}\n style={{\n maxWidth: maxImageWidth,\n maxHeight: maxImageHeight\n }}\n alt=\"\"\n />\n <div\n ref={(ref) => {\n this.resize = ref;\n }}\n className={classes.resize}\n />\n </div>\n ) : (\n <div className={`${classes.drawableHeight} ${classes.centered}`}>\n <label>Drag and drop or upload image from computer</label>\n <br />\n {this.renderUploadControl('Upload Image')}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n base: {\n marginTop: theme.spacing.unit * 2,\n },\n box: {\n border: '1px solid #E0E1E6',\n borderRadius: '5px',\n },\n boxActive: {\n border: '1px solid #0032C2',\n },\n centered: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n drawableHeight: {\n minHeight: 350,\n },\n image: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content',\n },\n resize: {\n borderBottom: '1px solid #727272',\n borderRight: '1px solid #727272',\n bottom: '-10px',\n cursor: 'se-resize',\n height: '10px',\n position: 'absolute',\n right: '-10px',\n width: '10px',\n },\n input: {\n display: 'none',\n },\n toolbar: {\n backgroundColor: '#ECEDF1',\n borderBottom: '1px solid #E0E1E6',\n borderTopLeftRadius: '5px',\n borderTopRightRadius: '5px',\n display: 'flex',\n padding: '12px 8px',\n },\n});\n\nImageContainer.propTypes = {\n classes: PropTypes.object.isRequired,\n imageUrl: PropTypes.string.isRequired,\n onImageUpload: PropTypes.func.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(ImageContainer);\n"],"file":"image-container.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -35,9 +35,9 @@ var _root = _interopRequireDefault(require("./root"));
|
|
|
35
35
|
|
|
36
36
|
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
37
37
|
|
|
38
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
38
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
39
39
|
|
|
40
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
40
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
41
41
|
|
|
42
42
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
43
43
|
|