@atlaskit/media-viewer 48.2.15 → 48.3.2
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 +22 -0
- package/dist/cjs/analytics/events/screen/passwordPdf.js +14 -0
- package/dist/cjs/analytics/events/screen/pdfPasswordInput.js +14 -0
- package/dist/cjs/analytics/index.js +1 -1
- package/dist/cjs/analytics/ufoExperiences.js +1 -1
- package/dist/cjs/domain/outcome.js +5 -22
- package/dist/cjs/item-viewer.js +23 -17
- package/dist/cjs/media-viewer.js +2 -1
- package/dist/cjs/navigation.js +4 -2
- package/dist/cjs/v2/item-viewer-v2.js +10 -10
- package/dist/cjs/viewers/doc/index.js +50 -67
- package/dist/cjs/viewers/doc/pdfPasswordInput.js +100 -0
- package/dist/cjs/viewers/doc/pdfRenderer.js +114 -21
- package/dist/es2019/analytics/events/screen/passwordPdf.js +6 -0
- package/dist/es2019/analytics/events/screen/pdfPasswordInput.js +6 -0
- package/dist/es2019/analytics/index.js +1 -1
- package/dist/es2019/analytics/ufoExperiences.js +1 -1
- package/dist/es2019/domain/outcome.js +5 -18
- package/dist/es2019/item-viewer.js +14 -9
- package/dist/es2019/media-viewer.js +2 -1
- package/dist/es2019/navigation.js +4 -2
- package/dist/es2019/v2/item-viewer-v2.js +10 -10
- package/dist/es2019/viewers/doc/index.js +20 -17
- package/dist/es2019/viewers/doc/pdfPasswordInput.js +85 -0
- package/dist/es2019/viewers/doc/pdfRenderer.js +98 -75
- package/dist/esm/analytics/events/screen/passwordPdf.js +8 -0
- package/dist/esm/analytics/events/screen/pdfPasswordInput.js +8 -0
- package/dist/esm/analytics/index.js +1 -1
- package/dist/esm/analytics/ufoExperiences.js +1 -1
- package/dist/esm/domain/outcome.js +5 -22
- package/dist/esm/item-viewer.js +23 -17
- package/dist/esm/media-viewer.js +2 -1
- package/dist/esm/navigation.js +4 -2
- package/dist/esm/v2/item-viewer-v2.js +10 -10
- package/dist/esm/viewers/doc/index.js +50 -62
- package/dist/esm/viewers/doc/pdfPasswordInput.js +90 -0
- package/dist/esm/viewers/doc/pdfRenderer.js +115 -22
- package/dist/types/analytics/events/index.d.ts +3 -1
- package/dist/types/analytics/events/screen/passwordPdf.d.ts +3 -0
- package/dist/types/analytics/events/screen/pdfPasswordInput.d.ts +3 -0
- package/dist/types/domain/outcome.d.ts +5 -6
- package/dist/types/viewers/doc/index.d.ts +0 -3
- package/dist/types/viewers/doc/pdfPasswordInput.d.ts +11 -0
- package/dist/types/viewers/doc/pdfRenderer.d.ts +4 -3
- package/dist/types-ts4.5/analytics/events/index.d.ts +3 -1
- package/dist/types-ts4.5/analytics/events/screen/passwordPdf.d.ts +3 -0
- package/dist/types-ts4.5/analytics/events/screen/pdfPasswordInput.d.ts +3 -0
- package/dist/types-ts4.5/domain/outcome.d.ts +5 -6
- package/dist/types-ts4.5/viewers/doc/index.d.ts +0 -3
- package/dist/types-ts4.5/viewers/doc/pdfPasswordInput.d.ts +11 -0
- package/dist/types-ts4.5/viewers/doc/pdfRenderer.d.ts +4 -3
- package/package.json +14 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @atlaskit/media-viewer
|
|
2
2
|
|
|
3
|
+
## 48.3.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#78016](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/78016) [`dc83676a7490`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/dc83676a7490) - add integration test for password protected pdf
|
|
8
|
+
|
|
9
|
+
## 48.3.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies
|
|
14
|
+
|
|
15
|
+
## 48.3.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- [#77668](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/77668) [`c8a08df51a9f`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c8a08df51a9f) - Add password protected pdf support for media viewer
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Updated dependencies
|
|
24
|
+
|
|
3
25
|
## 48.2.15
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createPasswordPdfScreenEvent = void 0;
|
|
7
|
+
var createPasswordPdfScreenEvent = exports.createPasswordPdfScreenEvent = function createPasswordPdfScreenEvent() {
|
|
8
|
+
return {
|
|
9
|
+
eventType: 'screen',
|
|
10
|
+
action: 'viewed',
|
|
11
|
+
actionSubject: 'mediaViewerPasswordPdfScreen',
|
|
12
|
+
name: 'mediaViewerPasswordPdfScreen'
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createPdfPasswordInputScreenEvent = void 0;
|
|
7
|
+
var createPdfPasswordInputScreenEvent = exports.createPdfPasswordInputScreenEvent = function createPdfPasswordInputScreenEvent() {
|
|
8
|
+
return {
|
|
9
|
+
eventType: 'screen',
|
|
10
|
+
action: 'viewed',
|
|
11
|
+
actionSubject: 'mediaViewerPdfPasswordInputScreen',
|
|
12
|
+
name: 'mediaViewerPdfPasswordInputScreen'
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -10,7 +10,7 @@ exports.packageVersion = exports.packageName = void 0;
|
|
|
10
10
|
var _mediaCommon = require("@atlaskit/media-common");
|
|
11
11
|
var componentName = exports.component = exports.componentName = 'mediaViewer';
|
|
12
12
|
var packageName = exports.packageName = "@atlaskit/media-viewer";
|
|
13
|
-
var packageVersion = exports.packageVersion = "48.2
|
|
13
|
+
var packageVersion = exports.packageVersion = "48.3.2";
|
|
14
14
|
function getFileAttributes(fileState) {
|
|
15
15
|
if (!fileState) {
|
|
16
16
|
return {
|
|
@@ -12,7 +12,7 @@ var _mediaCommon = require("@atlaskit/media-common");
|
|
|
12
12
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
13
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
14
|
var packageName = "@atlaskit/media-viewer";
|
|
15
|
-
var packageVersion = "48.2
|
|
15
|
+
var packageVersion = "48.3.2";
|
|
16
16
|
var ufoExperience;
|
|
17
17
|
var getExperience = function getExperience() {
|
|
18
18
|
if (!ufoExperience) {
|
|
@@ -20,7 +20,7 @@ var Outcome = exports.Outcome = /*#__PURE__*/function () {
|
|
|
20
20
|
}, {
|
|
21
21
|
key: "data",
|
|
22
22
|
get: function get() {
|
|
23
|
-
if (this.state.status === 'SUCCESSFUL') {
|
|
23
|
+
if (this.state.status === 'SUCCESSFUL' || this.state.status === 'FAILED') {
|
|
24
24
|
return this.state.data;
|
|
25
25
|
} else {
|
|
26
26
|
return;
|
|
@@ -68,25 +68,7 @@ var Outcome = exports.Outcome = /*#__PURE__*/function () {
|
|
|
68
68
|
case 'PENDING':
|
|
69
69
|
return pending();
|
|
70
70
|
case 'FAILED':
|
|
71
|
-
return failed(this.state.err);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}, {
|
|
75
|
-
key: "mapSuccessful",
|
|
76
|
-
value: function mapSuccessful(map) {
|
|
77
|
-
if (this.state.status === 'SUCCESSFUL') {
|
|
78
|
-
return Outcome.successful(map(this.state.data));
|
|
79
|
-
} else {
|
|
80
|
-
return new Outcome(this.state);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}, {
|
|
84
|
-
key: "mapFailed",
|
|
85
|
-
value: function mapFailed(map) {
|
|
86
|
-
if (this.state.status === 'FAILED') {
|
|
87
|
-
return Outcome.failed(map(this.state.err));
|
|
88
|
-
} else {
|
|
89
|
-
return new Outcome(this.state);
|
|
71
|
+
return failed(this.state.err, this.state.data);
|
|
90
72
|
}
|
|
91
73
|
}
|
|
92
74
|
}], [{
|
|
@@ -106,10 +88,11 @@ var Outcome = exports.Outcome = /*#__PURE__*/function () {
|
|
|
106
88
|
}
|
|
107
89
|
}, {
|
|
108
90
|
key: "failed",
|
|
109
|
-
value: function failed(err) {
|
|
91
|
+
value: function failed(err, data) {
|
|
110
92
|
return new Outcome({
|
|
111
93
|
status: 'FAILED',
|
|
112
|
-
err: err
|
|
94
|
+
err: err,
|
|
95
|
+
data: data
|
|
113
96
|
});
|
|
114
97
|
}
|
|
115
98
|
}]);
|
package/dist/cjs/item-viewer.js
CHANGED
|
@@ -17,6 +17,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
17
17
|
var _react = _interopRequireDefault(require("react"));
|
|
18
18
|
var _reactLoadable = _interopRequireDefault(require("react-loadable"));
|
|
19
19
|
var _mediaClient = require("@atlaskit/media-client");
|
|
20
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
20
21
|
var _reactIntlNext = require("react-intl-next");
|
|
21
22
|
var _mediaUi = require("@atlaskit/media-ui");
|
|
22
23
|
var _codeViewer = require("@atlaskit/media-ui/codeViewer");
|
|
@@ -145,9 +146,9 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
|
|
|
145
146
|
}
|
|
146
147
|
});
|
|
147
148
|
});
|
|
148
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onLoadFail", function (mediaViewerError) {
|
|
149
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onLoadFail", function (mediaViewerError, data) {
|
|
149
150
|
_this.safeSetState({
|
|
150
|
-
item: _domain.Outcome.failed(mediaViewerError)
|
|
151
|
+
item: _domain.Outcome.failed(mediaViewerError, data)
|
|
151
152
|
});
|
|
152
153
|
});
|
|
153
154
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onExternalImgSuccess", function () {
|
|
@@ -198,6 +199,7 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
|
|
|
198
199
|
}, {
|
|
199
200
|
key: "renderItem",
|
|
200
201
|
value: function renderItem(fileState) {
|
|
202
|
+
var _this2 = this;
|
|
201
203
|
var _this$props = this.props,
|
|
202
204
|
mediaClient = _this$props.mediaClient,
|
|
203
205
|
identifier = _this$props.identifier,
|
|
@@ -247,7 +249,9 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
|
|
|
247
249
|
case 'doc':
|
|
248
250
|
return /*#__PURE__*/_react.default.createElement(DocViewer, (0, _extends2.default)({
|
|
249
251
|
onSuccess: this.onSuccess,
|
|
250
|
-
onError:
|
|
252
|
+
onError: function onError(err) {
|
|
253
|
+
_this2.onLoadFail(err, fileState);
|
|
254
|
+
}
|
|
251
255
|
}, viewerProps));
|
|
252
256
|
case 'archive':
|
|
253
257
|
return /*#__PURE__*/_react.default.createElement(_archiveViewerLoader.default, (0, _extends2.default)({
|
|
@@ -291,7 +295,7 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
|
|
|
291
295
|
}, {
|
|
292
296
|
key: "render",
|
|
293
297
|
value: function render() {
|
|
294
|
-
var
|
|
298
|
+
var _this3 = this;
|
|
295
299
|
var item = this.state.item;
|
|
296
300
|
var identifier = this.props.identifier;
|
|
297
301
|
return item.match({
|
|
@@ -302,29 +306,31 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
|
|
|
302
306
|
dataURI = _ref.dataURI;
|
|
303
307
|
return /*#__PURE__*/_react.default.createElement(_interactiveImg.InteractiveImg, {
|
|
304
308
|
src: dataURI,
|
|
305
|
-
onLoad:
|
|
306
|
-
onError:
|
|
309
|
+
onLoad: _this3.onExternalImgSuccess,
|
|
310
|
+
onError: _this3.onExternalImgError
|
|
307
311
|
});
|
|
308
312
|
} else {
|
|
309
313
|
// render a FileState fetched through media-client
|
|
310
|
-
|
|
311
|
-
switch (fileState.status) {
|
|
314
|
+
switch (fileItem.status) {
|
|
312
315
|
case 'processed':
|
|
313
316
|
case 'uploading':
|
|
314
317
|
case 'processing':
|
|
315
|
-
return
|
|
318
|
+
return _this3.renderItem(fileItem);
|
|
316
319
|
case 'failed-processing':
|
|
317
|
-
|
|
320
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.corex.password-protected-pdf_ht8re') && fileItem.mediaType === 'doc' && fileItem.mimeType === 'application/pdf') {
|
|
321
|
+
return _this3.renderItem(fileItem);
|
|
322
|
+
}
|
|
323
|
+
return _this3.renderError(new _errors.MediaViewerError('itemviewer-file-failed-processing-status'), fileItem);
|
|
318
324
|
case 'error':
|
|
319
|
-
return
|
|
325
|
+
return _this3.renderError(new _errors.MediaViewerError('itemviewer-file-error-status'), fileItem);
|
|
320
326
|
}
|
|
321
327
|
}
|
|
322
328
|
},
|
|
323
329
|
pending: function pending() {
|
|
324
330
|
return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
|
|
325
331
|
},
|
|
326
|
-
failed: function failed(error) {
|
|
327
|
-
return
|
|
332
|
+
failed: function failed(error, data) {
|
|
333
|
+
return _this3.renderError(error, data);
|
|
328
334
|
}
|
|
329
335
|
});
|
|
330
336
|
}
|
|
@@ -358,7 +364,7 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
|
|
|
358
364
|
}, {
|
|
359
365
|
key: "init",
|
|
360
366
|
value: function init(props) {
|
|
361
|
-
var
|
|
367
|
+
var _this4 = this;
|
|
362
368
|
var mediaClient = props.mediaClient,
|
|
363
369
|
identifier = props.identifier,
|
|
364
370
|
createAnalyticsEvent = props.createAnalyticsEvent;
|
|
@@ -378,13 +384,13 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
|
|
|
378
384
|
collectionName: identifier.collectionName
|
|
379
385
|
}).subscribe({
|
|
380
386
|
next: function next(file) {
|
|
381
|
-
|
|
382
|
-
|
|
387
|
+
_this4.updateFileStateFlag(file);
|
|
388
|
+
_this4.safeSetState({
|
|
383
389
|
item: _domain.Outcome.successful(file)
|
|
384
390
|
});
|
|
385
391
|
},
|
|
386
392
|
error: function error(_error) {
|
|
387
|
-
|
|
393
|
+
_this4.safeSetState({
|
|
388
394
|
item: _domain.Outcome.failed(new _errors.MediaViewerError('itemviewer-fetch-metadata', _error))
|
|
389
395
|
});
|
|
390
396
|
}
|
package/dist/cjs/media-viewer.js
CHANGED
|
@@ -123,7 +123,8 @@ var MediaViewerComponent = exports.MediaViewerComponent = /*#__PURE__*/function
|
|
|
123
123
|
className: _classnames.mediaViewerPopupClass
|
|
124
124
|
}, /*#__PURE__*/_react.default.createElement(_mediaUi.Shortcut, {
|
|
125
125
|
code: 'Escape',
|
|
126
|
-
handler: this.onShortcutClosed
|
|
126
|
+
handler: this.onShortcutClosed,
|
|
127
|
+
eventType: 'keyup'
|
|
127
128
|
}), /*#__PURE__*/_react.default.createElement(_content.Content, {
|
|
128
129
|
isSidebarVisible: isSidebarVisible,
|
|
129
130
|
onClose: this.onContentClose
|
package/dist/cjs/navigation.js
CHANGED
|
@@ -84,7 +84,8 @@ var NavigationBase = exports.NavigationBase = /*#__PURE__*/function (_Component)
|
|
|
84
84
|
className: _mediaUi.hideControlsClassName
|
|
85
85
|
}, /*#__PURE__*/_react.default.createElement(_mediaUi.Shortcut, {
|
|
86
86
|
code: 'ArrowLeft',
|
|
87
|
-
handler: prev('keyboard')
|
|
87
|
+
handler: prev('keyboard'),
|
|
88
|
+
eventType: 'keyup'
|
|
88
89
|
}), /*#__PURE__*/_react.default.createElement(_standardButton.default, {
|
|
89
90
|
testId: prevNavButtonId,
|
|
90
91
|
onClick: prev('mouse'),
|
|
@@ -102,7 +103,8 @@ var NavigationBase = exports.NavigationBase = /*#__PURE__*/function (_Component)
|
|
|
102
103
|
className: _mediaUi.hideControlsClassName
|
|
103
104
|
}, /*#__PURE__*/_react.default.createElement(_mediaUi.Shortcut, {
|
|
104
105
|
code: 'ArrowRight',
|
|
105
|
-
handler: next('keyboard')
|
|
106
|
+
handler: next('keyboard'),
|
|
107
|
+
eventType: 'keyup'
|
|
106
108
|
}), /*#__PURE__*/_react.default.createElement(_standardButton.default, {
|
|
107
109
|
testId: nextNavButtonId,
|
|
108
110
|
onClick: next('mouse'),
|
|
@@ -30,7 +30,7 @@ var _mediaCommon = require("@atlaskit/media-common");
|
|
|
30
30
|
var _ufoExperiences = require("../analytics/ufoExperiences");
|
|
31
31
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
32
32
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(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; }
|
|
33
|
-
var
|
|
33
|
+
var ImageViewerV2 = (0, _reactLoadable.default)({
|
|
34
34
|
loader: function loader() {
|
|
35
35
|
return Promise.resolve().then(function () {
|
|
36
36
|
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_imageViewer" */'../viewers/image'));
|
|
@@ -42,7 +42,7 @@ var ImageViewer = (0, _reactLoadable.default)({
|
|
|
42
42
|
return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
|
-
var
|
|
45
|
+
var VideoViewerV2 = (0, _reactLoadable.default)({
|
|
46
46
|
loader: function loader() {
|
|
47
47
|
return Promise.resolve().then(function () {
|
|
48
48
|
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_videoViewer" */'../viewers/video'));
|
|
@@ -54,7 +54,7 @@ var VideoViewer = (0, _reactLoadable.default)({
|
|
|
54
54
|
return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
|
-
var
|
|
57
|
+
var AudioViewerV2 = (0, _reactLoadable.default)({
|
|
58
58
|
loader: function loader() {
|
|
59
59
|
return Promise.resolve().then(function () {
|
|
60
60
|
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_audioViewer" */'../viewers/audio'));
|
|
@@ -66,7 +66,7 @@ var AudioViewer = (0, _reactLoadable.default)({
|
|
|
66
66
|
return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
|
|
67
67
|
}
|
|
68
68
|
});
|
|
69
|
-
var
|
|
69
|
+
var DocViewerV2 = (0, _reactLoadable.default)({
|
|
70
70
|
loader: function loader() {
|
|
71
71
|
return Promise.resolve().then(function () {
|
|
72
72
|
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_docViewer" */'../viewers/doc'));
|
|
@@ -78,7 +78,7 @@ var DocViewer = (0, _reactLoadable.default)({
|
|
|
78
78
|
return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
|
-
var
|
|
81
|
+
var CodeViewerV2 = (0, _reactLoadable.default)({
|
|
82
82
|
loader: function loader() {
|
|
83
83
|
return Promise.resolve().then(function () {
|
|
84
84
|
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_codeViewer" */'../viewers/codeViewer'));
|
|
@@ -259,7 +259,7 @@ var ItemViewerV2Base = exports.ItemViewerV2Base = function ItemViewerV2Base(_ref
|
|
|
259
259
|
if (fileItem.size > MAX_FILE_SIZE_SUPPORTED_BY_CODEVIEWER) {
|
|
260
260
|
return renderError(new _errors.MediaViewerError('codeviewer-file-size-exceeds'), fileItem);
|
|
261
261
|
}
|
|
262
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
262
|
+
return /*#__PURE__*/_react.default.createElement(CodeViewerV2, (0, _extends2.default)({
|
|
263
263
|
onSuccess: onSuccess,
|
|
264
264
|
onError: onLoadFail
|
|
265
265
|
}, viewerProps));
|
|
@@ -267,26 +267,26 @@ var ItemViewerV2Base = exports.ItemViewerV2Base = function ItemViewerV2Base(_ref
|
|
|
267
267
|
var mediaType = fileItem.mediaType;
|
|
268
268
|
switch (mediaType) {
|
|
269
269
|
case 'image':
|
|
270
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
270
|
+
return /*#__PURE__*/_react.default.createElement(ImageViewerV2, (0, _extends2.default)({
|
|
271
271
|
onLoad: onSuccess,
|
|
272
272
|
onError: onLoadFail,
|
|
273
273
|
contextId: contextId,
|
|
274
274
|
traceContext: traceContext.current
|
|
275
275
|
}, viewerProps));
|
|
276
276
|
case 'audio':
|
|
277
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
277
|
+
return /*#__PURE__*/_react.default.createElement(AudioViewerV2, (0, _extends2.default)({
|
|
278
278
|
showControls: showControls,
|
|
279
279
|
onCanPlay: onSuccess,
|
|
280
280
|
onError: onLoadFail
|
|
281
281
|
}, viewerProps));
|
|
282
282
|
case 'video':
|
|
283
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
283
|
+
return /*#__PURE__*/_react.default.createElement(VideoViewerV2, (0, _extends2.default)({
|
|
284
284
|
showControls: showControls,
|
|
285
285
|
onCanPlay: onSuccess,
|
|
286
286
|
onError: onLoadFail
|
|
287
287
|
}, viewerProps));
|
|
288
288
|
case 'doc':
|
|
289
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
289
|
+
return /*#__PURE__*/_react.default.createElement(DocViewerV2, (0, _extends2.default)({
|
|
290
290
|
onSuccess: onSuccess,
|
|
291
291
|
onError: onLoadFail
|
|
292
292
|
}, viewerProps));
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.DocViewer = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
-
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
10
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -17,23 +16,11 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
17
16
|
var _mediaClient = require("@atlaskit/media-client");
|
|
18
17
|
var _domain = require("../../domain");
|
|
19
18
|
var _errors = require("../../errors");
|
|
20
|
-
var
|
|
19
|
+
var _pdfRenderer = require("./pdfRenderer");
|
|
21
20
|
var _baseViewer = require("../base-viewer");
|
|
22
21
|
var _getObjectUrlFromFileState = require("../../utils/getObjectUrlFromFileState");
|
|
23
22
|
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); }; }
|
|
24
23
|
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; } }
|
|
25
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
26
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(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; }
|
|
27
|
-
var moduleLoader = function moduleLoader() {
|
|
28
|
-
return Promise.resolve().then(function () {
|
|
29
|
-
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_media-pdf-viewer" */'./pdfRenderer'));
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
var componentLoader = function componentLoader() {
|
|
33
|
-
return moduleLoader().then(function (module) {
|
|
34
|
-
return module.PDFRenderer;
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
24
|
var DocViewer = exports.DocViewer = /*#__PURE__*/function (_BaseViewer) {
|
|
38
25
|
(0, _inherits2.default)(DocViewer, _BaseViewer);
|
|
39
26
|
var _super = _createSuper(DocViewer);
|
|
@@ -52,59 +39,52 @@ var DocViewer = exports.DocViewer = /*#__PURE__*/function (_BaseViewer) {
|
|
|
52
39
|
key: "init",
|
|
53
40
|
value: function () {
|
|
54
41
|
var _init = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
55
|
-
var _this$props, item, mediaClient, collectionName, onError, src, _src, docError;
|
|
42
|
+
var _this$props, item, mediaClient, collectionName, onError, src, _src, docError, _src2, _docError;
|
|
56
43
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
57
44
|
while (1) switch (_context.prev = _context.next) {
|
|
58
45
|
case 0:
|
|
59
|
-
if (DocViewer.PDFComponent) {
|
|
60
|
-
_context.next = 3;
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
_context.next = 3;
|
|
64
|
-
return this.loadDocViewer();
|
|
65
|
-
case 3:
|
|
66
46
|
_this$props = this.props, item = _this$props.item, mediaClient = _this$props.mediaClient, collectionName = _this$props.collectionName, onError = _this$props.onError;
|
|
67
47
|
if (!(0, _mediaClient.isPreviewableFileState)(item)) {
|
|
68
|
-
_context.next =
|
|
48
|
+
_context.next = 11;
|
|
69
49
|
break;
|
|
70
50
|
}
|
|
71
|
-
_context.next =
|
|
51
|
+
_context.next = 4;
|
|
72
52
|
return (0, _getObjectUrlFromFileState.getObjectUrlFromFileState)(item);
|
|
73
|
-
case
|
|
53
|
+
case 4:
|
|
74
54
|
src = _context.sent;
|
|
75
55
|
if (src) {
|
|
76
|
-
_context.next =
|
|
56
|
+
_context.next = 8;
|
|
77
57
|
break;
|
|
78
58
|
}
|
|
79
59
|
this.setState({
|
|
80
60
|
content: _domain.Outcome.pending()
|
|
81
61
|
});
|
|
82
62
|
return _context.abrupt("return");
|
|
83
|
-
case
|
|
63
|
+
case 8:
|
|
84
64
|
this.setState({
|
|
85
65
|
content: _domain.Outcome.successful(src)
|
|
86
66
|
});
|
|
87
|
-
_context.next =
|
|
67
|
+
_context.next = 41;
|
|
88
68
|
break;
|
|
89
|
-
case
|
|
69
|
+
case 11:
|
|
90
70
|
if (!(item.status === 'processed')) {
|
|
91
|
-
_context.next =
|
|
71
|
+
_context.next = 27;
|
|
92
72
|
break;
|
|
93
73
|
}
|
|
94
|
-
_context.prev =
|
|
95
|
-
_context.next =
|
|
74
|
+
_context.prev = 12;
|
|
75
|
+
_context.next = 15;
|
|
96
76
|
return mediaClient.file.getArtifactURL(item.artifacts, 'document.pdf', collectionName);
|
|
97
|
-
case
|
|
77
|
+
case 15:
|
|
98
78
|
_src = _context.sent;
|
|
99
79
|
this.onMediaDisplayed();
|
|
100
80
|
this.setState({
|
|
101
81
|
content: _domain.Outcome.successful(_src)
|
|
102
82
|
});
|
|
103
|
-
_context.next =
|
|
83
|
+
_context.next = 25;
|
|
104
84
|
break;
|
|
105
|
-
case
|
|
106
|
-
_context.prev =
|
|
107
|
-
_context.t0 = _context["catch"](
|
|
85
|
+
case 20:
|
|
86
|
+
_context.prev = 20;
|
|
87
|
+
_context.t0 = _context["catch"](12);
|
|
108
88
|
docError = new _errors.MediaViewerError('docviewer-fetch-url', _context.t0 instanceof Error ? _context.t0 : undefined);
|
|
109
89
|
this.setState({
|
|
110
90
|
content: _domain.Outcome.failed(docError)
|
|
@@ -112,40 +92,47 @@ var DocViewer = exports.DocViewer = /*#__PURE__*/function (_BaseViewer) {
|
|
|
112
92
|
if (onError) {
|
|
113
93
|
onError(docError);
|
|
114
94
|
}
|
|
115
|
-
case
|
|
95
|
+
case 25:
|
|
96
|
+
_context.next = 41;
|
|
97
|
+
break;
|
|
98
|
+
case 27:
|
|
99
|
+
if (!(item.status === 'failed-processing')) {
|
|
100
|
+
_context.next = 41;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
_context.prev = 28;
|
|
104
|
+
_context.next = 31;
|
|
105
|
+
return mediaClient.file.getFileBinaryURL(item.id, collectionName, 2940 // 2940 seconds ~= 50 mins
|
|
106
|
+
);
|
|
107
|
+
case 31:
|
|
108
|
+
_src2 = _context.sent;
|
|
109
|
+
this.onMediaDisplayed();
|
|
110
|
+
this.setState({
|
|
111
|
+
content: _domain.Outcome.successful(_src2)
|
|
112
|
+
});
|
|
113
|
+
_context.next = 41;
|
|
114
|
+
break;
|
|
115
|
+
case 36:
|
|
116
|
+
_context.prev = 36;
|
|
117
|
+
_context.t1 = _context["catch"](28);
|
|
118
|
+
_docError = new _errors.MediaViewerError('docviewer-fetch-url', _context.t1 instanceof Error ? _context.t1 : undefined);
|
|
119
|
+
this.setState({
|
|
120
|
+
content: _domain.Outcome.failed(_docError)
|
|
121
|
+
});
|
|
122
|
+
if (onError) {
|
|
123
|
+
onError(_docError);
|
|
124
|
+
}
|
|
125
|
+
case 41:
|
|
116
126
|
case "end":
|
|
117
127
|
return _context.stop();
|
|
118
128
|
}
|
|
119
|
-
}, _callee, this, [[
|
|
129
|
+
}, _callee, this, [[12, 20], [28, 36]]);
|
|
120
130
|
}));
|
|
121
131
|
function init() {
|
|
122
132
|
return _init.apply(this, arguments);
|
|
123
133
|
}
|
|
124
134
|
return init;
|
|
125
135
|
}()
|
|
126
|
-
}, {
|
|
127
|
-
key: "loadDocViewer",
|
|
128
|
-
value: function () {
|
|
129
|
-
var _loadDocViewer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
130
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
131
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
132
|
-
case 0:
|
|
133
|
-
_context2.next = 2;
|
|
134
|
-
return componentLoader();
|
|
135
|
-
case 2:
|
|
136
|
-
DocViewer.PDFComponent = _context2.sent;
|
|
137
|
-
this.forceUpdate();
|
|
138
|
-
case 4:
|
|
139
|
-
case "end":
|
|
140
|
-
return _context2.stop();
|
|
141
|
-
}
|
|
142
|
-
}, _callee2, this);
|
|
143
|
-
}));
|
|
144
|
-
function loadDocViewer() {
|
|
145
|
-
return _loadDocViewer.apply(this, arguments);
|
|
146
|
-
}
|
|
147
|
-
return loadDocViewer;
|
|
148
|
-
}()
|
|
149
136
|
}, {
|
|
150
137
|
key: "release",
|
|
151
138
|
value: function release() {
|
|
@@ -163,11 +150,7 @@ var DocViewer = exports.DocViewer = /*#__PURE__*/function (_BaseViewer) {
|
|
|
163
150
|
onClose = _this$props2.onClose,
|
|
164
151
|
onSuccess = _this$props2.onSuccess,
|
|
165
152
|
onError = _this$props2.onError;
|
|
166
|
-
|
|
167
|
-
if (!PDFComponent) {
|
|
168
|
-
return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
|
|
169
|
-
}
|
|
170
|
-
return /*#__PURE__*/_react.default.createElement(PDFComponent, {
|
|
153
|
+
return /*#__PURE__*/_react.default.createElement(_pdfRenderer.PDFRenderer, {
|
|
171
154
|
item: item,
|
|
172
155
|
src: content,
|
|
173
156
|
onSuccess: onSuccess,
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.PDFPasswordInput = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _loadingButton = _interopRequireDefault(require("@atlaskit/button/loading-button"));
|
|
13
|
+
var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
|
|
14
|
+
var _lock = _interopRequireDefault(require("@atlaskit/icon/glyph/lock"));
|
|
15
|
+
var _form = _interopRequireWildcard(require("@atlaskit/form"));
|
|
16
|
+
var _reactIntlNext = require("react-intl-next");
|
|
17
|
+
var _mediaUi = require("@atlaskit/media-ui");
|
|
18
|
+
var _heading = _interopRequireDefault(require("@atlaskit/heading"));
|
|
19
|
+
var _primitives = require("@atlaskit/primitives");
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
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; }
|
|
22
|
+
var headerStyles = (0, _primitives.xcss)({
|
|
23
|
+
textAlign: 'center',
|
|
24
|
+
marginTop: 'space.300',
|
|
25
|
+
marginBottom: 'space.100'
|
|
26
|
+
});
|
|
27
|
+
var inputStyle = (0, _primitives.xcss)({
|
|
28
|
+
width: '330px'
|
|
29
|
+
});
|
|
30
|
+
var footerStyles = (0, _primitives.xcss)({
|
|
31
|
+
marginTop: 'space.200',
|
|
32
|
+
display: 'flex',
|
|
33
|
+
justifyContent: 'center'
|
|
34
|
+
});
|
|
35
|
+
var PDFPasswordInput = exports.PDFPasswordInput = function PDFPasswordInput(_ref) {
|
|
36
|
+
var onSubmit = _ref.onSubmit,
|
|
37
|
+
hasPasswordError = _ref.hasPasswordError,
|
|
38
|
+
onRender = _ref.onRender;
|
|
39
|
+
var passwordInputRef = (0, _react.useRef)(null);
|
|
40
|
+
var onRenderRef = (0, _react.useRef)(onRender);
|
|
41
|
+
var _useState = (0, _react.useState)(hasPasswordError),
|
|
42
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
43
|
+
formError = _useState2[0],
|
|
44
|
+
setFormError = _useState2[1];
|
|
45
|
+
var intl = (0, _reactIntlNext.useIntl)();
|
|
46
|
+
(0, _react.useEffect)(function () {
|
|
47
|
+
var _onRenderRef$current;
|
|
48
|
+
(_onRenderRef$current = onRenderRef.current) === null || _onRenderRef$current === void 0 || _onRenderRef$current.call(onRenderRef);
|
|
49
|
+
}, []);
|
|
50
|
+
(0, _react.useEffect)(function () {
|
|
51
|
+
if (hasPasswordError) {
|
|
52
|
+
var _passwordInputRef$cur;
|
|
53
|
+
setFormError(true);
|
|
54
|
+
(_passwordInputRef$cur = passwordInputRef.current) === null || _passwordInputRef$cur === void 0 || _passwordInputRef$cur.focus();
|
|
55
|
+
}
|
|
56
|
+
}, [hasPasswordError]);
|
|
57
|
+
return /*#__PURE__*/_react.default.createElement(_form.default, {
|
|
58
|
+
onSubmit: onSubmit
|
|
59
|
+
}, function (_ref2) {
|
|
60
|
+
var formProps = _ref2.formProps,
|
|
61
|
+
submitting = _ref2.submitting;
|
|
62
|
+
return /*#__PURE__*/_react.default.createElement("form", formProps, /*#__PURE__*/_react.default.createElement(_primitives.Flex, {
|
|
63
|
+
justifyContent: "center",
|
|
64
|
+
"aria-hidden": true
|
|
65
|
+
}, /*#__PURE__*/_react.default.createElement(_lock.default, {
|
|
66
|
+
label: "forbidden-lock-icon",
|
|
67
|
+
size: "xlarge",
|
|
68
|
+
primaryColor: "var(--ds-text, #c7d1db)"
|
|
69
|
+
})), /*#__PURE__*/_react.default.createElement(_primitives.Box, {
|
|
70
|
+
xcss: headerStyles
|
|
71
|
+
}, /*#__PURE__*/_react.default.createElement(_heading.default, {
|
|
72
|
+
as: "h1",
|
|
73
|
+
level: "h200"
|
|
74
|
+
}, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.password_protected_pdf))), /*#__PURE__*/_react.default.createElement(_form.Field, {
|
|
75
|
+
"aria-required": true,
|
|
76
|
+
name: "password",
|
|
77
|
+
label: "Password",
|
|
78
|
+
isRequired: true
|
|
79
|
+
}, function (_ref3) {
|
|
80
|
+
var fieldProps = _ref3.fieldProps;
|
|
81
|
+
return /*#__PURE__*/_react.default.createElement(_primitives.Box, {
|
|
82
|
+
xcss: inputStyle
|
|
83
|
+
}, /*#__PURE__*/_react.default.createElement(_textfield.default, (0, _extends2.default)({}, fieldProps, {
|
|
84
|
+
type: "password",
|
|
85
|
+
placeholder: intl.formatMessage(_mediaUi.messages.enter_password),
|
|
86
|
+
ref: passwordInputRef,
|
|
87
|
+
onChange: function onChange(value) {
|
|
88
|
+
fieldProps.onChange(value);
|
|
89
|
+
setFormError(false);
|
|
90
|
+
}
|
|
91
|
+
})), formError && /*#__PURE__*/_react.default.createElement(_form.ErrorMessage, null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.incorrect_password)));
|
|
92
|
+
}), /*#__PURE__*/_react.default.createElement(_primitives.Box, {
|
|
93
|
+
xcss: footerStyles
|
|
94
|
+
}, /*#__PURE__*/_react.default.createElement(_loadingButton.default, {
|
|
95
|
+
appearance: "primary",
|
|
96
|
+
type: "submit",
|
|
97
|
+
isLoading: submitting
|
|
98
|
+
}, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.submit))));
|
|
99
|
+
});
|
|
100
|
+
};
|