@atlaskit/link-picker 1.10.3 → 1.10.4
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 +6 -0
- package/dist/cjs/common/analytics/experiences.js +62 -0
- package/dist/cjs/controllers/session-provider/index.js +61 -0
- package/dist/cjs/ui/error-boundary/error-boundary-base/index.js +76 -0
- package/dist/cjs/ui/{error-boundary-fallback → error-boundary/error-boundary-fallback}/index.js +2 -2
- package/dist/cjs/ui/error-boundary/index.js +33 -81
- package/dist/cjs/ui/index.js +6 -9
- package/dist/cjs/ui/link-picker/index.js +8 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/common/analytics/experiences.js +39 -0
- package/dist/es2019/controllers/session-provider/index.js +32 -0
- package/dist/es2019/ui/error-boundary/error-boundary-base/index.js +37 -0
- package/dist/es2019/ui/{error-boundary-fallback → error-boundary/error-boundary-fallback}/index.js +2 -2
- package/dist/es2019/ui/error-boundary/index.js +30 -59
- package/dist/es2019/ui/index.js +5 -8
- package/dist/es2019/ui/link-picker/index.js +6 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/common/analytics/experiences.js +40 -0
- package/dist/esm/controllers/session-provider/index.js +38 -0
- package/dist/esm/ui/error-boundary/error-boundary-base/index.js +56 -0
- package/dist/esm/ui/{error-boundary-fallback → error-boundary/error-boundary-fallback}/index.js +2 -2
- package/dist/esm/ui/error-boundary/index.js +30 -79
- package/dist/esm/ui/index.js +5 -8
- package/dist/esm/ui/link-picker/index.js +6 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/common/analytics/experiences.d.ts +11 -0
- package/dist/types/controllers/session-provider/index.d.ts +10 -0
- package/dist/types/ui/error-boundary/error-boundary-base/index.d.ts +18 -0
- package/dist/types/ui/{error-boundary-fallback → error-boundary/error-boundary-fallback}/index.d.ts +0 -0
- package/dist/types/ui/error-boundary/index.d.ts +4 -24
- package/dist/types-ts4.0/common/analytics/experiences.d.ts +11 -0
- package/dist/types-ts4.0/controllers/session-provider/index.d.ts +10 -0
- package/dist/types-ts4.0/ui/error-boundary/error-boundary-base/index.d.ts +18 -0
- package/dist/types-ts4.0/ui/{error-boundary-fallback → error-boundary/error-boundary-fallback}/index.d.ts +0 -0
- package/dist/types-ts4.0/ui/error-boundary/index.d.ts +4 -24
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ufoExperience = exports.succeedUfoExperience = exports.startUfoExperience = exports.failUfoExperience = exports.abortUfoExperience = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _ufo = require("@atlaskit/ufo");
|
|
13
|
+
|
|
14
|
+
var ufoExperience = {
|
|
15
|
+
mounted: 'component-mounted'
|
|
16
|
+
};
|
|
17
|
+
exports.ufoExperience = ufoExperience;
|
|
18
|
+
var ufoExperiences = (0, _defineProperty2.default)({}, ufoExperience.mounted, new _ufo.ConcurrentExperience(ufoExperience.mounted, {
|
|
19
|
+
type: _ufo.ExperienceTypes.Load,
|
|
20
|
+
performanceType: _ufo.ExperiencePerformanceTypes.PageSegmentLoad,
|
|
21
|
+
platform: {
|
|
22
|
+
component: 'link-picker'
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
|
|
26
|
+
var startUfoExperience = function startUfoExperience(experienceName, id, metadata) {
|
|
27
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
28
|
+
experience.start();
|
|
29
|
+
|
|
30
|
+
if (metadata) {
|
|
31
|
+
experience.addMetadata(metadata);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.startUfoExperience = startUfoExperience;
|
|
36
|
+
|
|
37
|
+
var succeedUfoExperience = function succeedUfoExperience(experienceName, id, metadata) {
|
|
38
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
39
|
+
experience.success({
|
|
40
|
+
metadata: metadata
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.succeedUfoExperience = succeedUfoExperience;
|
|
45
|
+
|
|
46
|
+
var failUfoExperience = function failUfoExperience(experienceName, id, metadata) {
|
|
47
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
48
|
+
experience.failure({
|
|
49
|
+
metadata: metadata
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
exports.failUfoExperience = failUfoExperience;
|
|
54
|
+
|
|
55
|
+
var abortUfoExperience = function abortUfoExperience(experienceName, id, metadata) {
|
|
56
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
57
|
+
experience.abort({
|
|
58
|
+
metadata: metadata
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
exports.abortUfoExperience = abortUfoExperience;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useLinkPickerSessionId = exports.SessionContext = exports.LinkPickerSessionProvider = exports.INIT_CONTEXT = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _uuid = require("uuid");
|
|
13
|
+
|
|
14
|
+
var _experiences = require("../../common/analytics/experiences");
|
|
15
|
+
|
|
16
|
+
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); }
|
|
17
|
+
|
|
18
|
+
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; }
|
|
19
|
+
|
|
20
|
+
var INIT_CONTEXT = 'SESSION_UNINITIALIZED';
|
|
21
|
+
exports.INIT_CONTEXT = INIT_CONTEXT;
|
|
22
|
+
var SessionContext = /*#__PURE__*/(0, _react.createContext)(INIT_CONTEXT);
|
|
23
|
+
exports.SessionContext = SessionContext;
|
|
24
|
+
|
|
25
|
+
var useConstructor = function useConstructor(callback) {
|
|
26
|
+
var hasBeenFired = (0, _react.useRef)(false);
|
|
27
|
+
|
|
28
|
+
if (!hasBeenFired.current) {
|
|
29
|
+
callback();
|
|
30
|
+
hasBeenFired.current = true;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return null;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var LinkPickerSessionProvider = function LinkPickerSessionProvider(_ref) {
|
|
37
|
+
var children = _ref.children;
|
|
38
|
+
|
|
39
|
+
var _useRef = (0, _react.useRef)((0, _uuid.v4)()),
|
|
40
|
+
sessionId = _useRef.current;
|
|
41
|
+
|
|
42
|
+
(0, _react.useEffect)(function () {
|
|
43
|
+
return function () {
|
|
44
|
+
return (0, _experiences.abortUfoExperience)(_experiences.ufoExperience.mounted, sessionId);
|
|
45
|
+
};
|
|
46
|
+
}, [sessionId]);
|
|
47
|
+
useConstructor(function () {
|
|
48
|
+
return (0, _experiences.startUfoExperience)(_experiences.ufoExperience.mounted, sessionId);
|
|
49
|
+
});
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(SessionContext.Provider, {
|
|
51
|
+
value: sessionId
|
|
52
|
+
}, children);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
exports.LinkPickerSessionProvider = LinkPickerSessionProvider;
|
|
56
|
+
|
|
57
|
+
var useLinkPickerSessionId = function useLinkPickerSessionId() {
|
|
58
|
+
return (0, _react.useContext)(SessionContext);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
exports.useLinkPickerSessionId = useLinkPickerSessionId;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.BaseErrorBoundary = void 0;
|
|
11
|
+
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
|
|
14
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
23
|
+
|
|
24
|
+
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); }
|
|
25
|
+
|
|
26
|
+
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; }
|
|
27
|
+
|
|
28
|
+
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); }; }
|
|
29
|
+
|
|
30
|
+
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; } }
|
|
31
|
+
|
|
32
|
+
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
33
|
+
var BaseErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
34
|
+
(0, _inherits2.default)(BaseErrorBoundary, _Component);
|
|
35
|
+
|
|
36
|
+
var _super = _createSuper(BaseErrorBoundary);
|
|
37
|
+
|
|
38
|
+
function BaseErrorBoundary(props) {
|
|
39
|
+
var _this;
|
|
40
|
+
|
|
41
|
+
(0, _classCallCheck2.default)(this, BaseErrorBoundary);
|
|
42
|
+
_this = _super.call(this, props);
|
|
43
|
+
_this.state = {
|
|
44
|
+
hasError: false
|
|
45
|
+
};
|
|
46
|
+
return _this;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
(0, _createClass2.default)(BaseErrorBoundary, [{
|
|
50
|
+
key: "componentDidCatch",
|
|
51
|
+
value: function componentDidCatch(error, info) {
|
|
52
|
+
var onError = this.props.onError;
|
|
53
|
+
onError && onError(error, info);
|
|
54
|
+
this.setState({
|
|
55
|
+
hasError: true
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}, {
|
|
59
|
+
key: "render",
|
|
60
|
+
value: function render() {
|
|
61
|
+
var _this$props = this.props,
|
|
62
|
+
children = _this$props.children,
|
|
63
|
+
ErrorComponent = _this$props.ErrorComponent;
|
|
64
|
+
var hasError = this.state.hasError;
|
|
65
|
+
|
|
66
|
+
if (hasError && ErrorComponent) {
|
|
67
|
+
return /*#__PURE__*/_react.default.createElement(ErrorComponent, null);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return children;
|
|
71
|
+
}
|
|
72
|
+
}]);
|
|
73
|
+
return BaseErrorBoundary;
|
|
74
|
+
}(_react.Component);
|
|
75
|
+
|
|
76
|
+
exports.BaseErrorBoundary = BaseErrorBoundary;
|
package/dist/cjs/ui/{error-boundary-fallback → error-boundary/error-boundary-fallback}/index.js
RENAMED
|
@@ -13,9 +13,9 @@ var _emptyState = _interopRequireDefault(require("@atlaskit/empty-state"));
|
|
|
13
13
|
|
|
14
14
|
var _reactIntlNext = require("react-intl-next");
|
|
15
15
|
|
|
16
|
-
var _genericErrorSvg = _interopRequireDefault(require("
|
|
16
|
+
var _genericErrorSvg = _interopRequireDefault(require("../../../common/generic-error-svg"));
|
|
17
17
|
|
|
18
|
-
var _styled = require("
|
|
18
|
+
var _styled = require("../../link-picker/styled");
|
|
19
19
|
|
|
20
20
|
/** @jsx jsx */
|
|
21
21
|
var messages = (0, _reactIntlNext.defineMessages)({
|
|
@@ -7,98 +7,50 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.default =
|
|
10
|
+
exports.default = void 0;
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _analytics = _interopRequireDefault(require("../../analytics.codegen"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _constants = require("../../common/constants");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _experiences = require("../../common/analytics/experiences");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _sessionProvider = require("../../controllers/session-provider");
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _errorBoundaryFallback = require("./error-boundary-fallback");
|
|
25
25
|
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
29
|
-
|
|
30
|
-
var _analytics = _interopRequireDefault(require("../../analytics.codegen"));
|
|
26
|
+
var _errorBoundaryBase = require("./error-boundary-base");
|
|
31
27
|
|
|
32
28
|
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); }
|
|
33
29
|
|
|
34
30
|
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; }
|
|
35
31
|
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
componentStack: (_analyticsErrorPayloa = (_analyticsErrorPayloa2 = analyticsErrorPayload.info) === null || _analyticsErrorPayloa2 === void 0 ? void 0 : _analyticsErrorPayloa2.componentStack) !== null && _analyticsErrorPayloa !== void 0 ? _analyticsErrorPayloa : ''
|
|
61
|
-
})).fire(channel);
|
|
62
|
-
});
|
|
63
|
-
_this.state = {
|
|
64
|
-
hasError: false
|
|
65
|
-
};
|
|
66
|
-
return _this;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
(0, _createClass2.default)(BaseErrorBoundary, [{
|
|
70
|
-
key: "componentDidCatch",
|
|
71
|
-
value: function componentDidCatch(error, info) {
|
|
72
|
-
var onError = this.props.onError;
|
|
73
|
-
var payload = {
|
|
74
|
-
error: error,
|
|
75
|
-
info: info
|
|
76
|
-
};
|
|
77
|
-
this.fireAnalytics(payload);
|
|
78
|
-
onError && onError(error, info);
|
|
79
|
-
this.setState({
|
|
80
|
-
hasError: true
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}, {
|
|
84
|
-
key: "render",
|
|
85
|
-
value: function render() {
|
|
86
|
-
var _this$props2 = this.props,
|
|
87
|
-
children = _this$props2.children,
|
|
88
|
-
ErrorComponent = _this$props2.ErrorComponent;
|
|
89
|
-
var hasError = this.state.hasError;
|
|
90
|
-
|
|
91
|
-
if (hasError && ErrorComponent) {
|
|
92
|
-
return /*#__PURE__*/_react.default.createElement(ErrorComponent, null);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return children;
|
|
96
|
-
}
|
|
97
|
-
}]);
|
|
98
|
-
return BaseErrorBoundary;
|
|
99
|
-
}(_react.Component);
|
|
100
|
-
|
|
101
|
-
exports.BaseErrorBoundary = BaseErrorBoundary;
|
|
102
|
-
var ErrorBoundary = (0, _analyticsNext.withAnalyticsEvents)()(BaseErrorBoundary);
|
|
103
|
-
var _default = ErrorBoundary;
|
|
32
|
+
function ErrorBoundary(_ref) {
|
|
33
|
+
var children = _ref.children,
|
|
34
|
+
createAnalyticsEvent = _ref.createAnalyticsEvent;
|
|
35
|
+
var linkPickerSessionId = (0, _sessionProvider.useLinkPickerSessionId)();
|
|
36
|
+
var handleError = (0, _react.useCallback)(function (error, info) {
|
|
37
|
+
var _window, _window$navigator, _info$componentStack;
|
|
38
|
+
|
|
39
|
+
// Fire Analytics event
|
|
40
|
+
createAnalyticsEvent((0, _analytics.default)('ui.linkPicker.unhandledErrorCaught', {
|
|
41
|
+
browserInfo: ((_window = window) === null || _window === void 0 ? void 0 : (_window$navigator = _window.navigator) === null || _window$navigator === void 0 ? void 0 : _window$navigator.userAgent) || 'unknown',
|
|
42
|
+
error: error.toString(),
|
|
43
|
+
componentStack: (_info$componentStack = info === null || info === void 0 ? void 0 : info.componentStack) !== null && _info$componentStack !== void 0 ? _info$componentStack : ''
|
|
44
|
+
})).fire(_constants.ANALYTICS_CHANNEL); // Fire UFO failed experience
|
|
45
|
+
|
|
46
|
+
(0, _experiences.failUfoExperience)(_experiences.ufoExperience.mounted, linkPickerSessionId);
|
|
47
|
+
}, [createAnalyticsEvent, linkPickerSessionId]);
|
|
48
|
+
return /*#__PURE__*/_react.default.createElement(_errorBoundaryBase.BaseErrorBoundary, {
|
|
49
|
+
onError: handleError,
|
|
50
|
+
ErrorComponent: _errorBoundaryFallback.ErrorBoundaryFallback
|
|
51
|
+
}, children);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
var _default = (0, _analyticsNext.withAnalyticsEvents)()(ErrorBoundary);
|
|
55
|
+
|
|
104
56
|
exports.default = _default;
|
package/dist/cjs/ui/index.js
CHANGED
|
@@ -9,22 +9,22 @@ exports.PACKAGE_DATA = exports.ComposedLinkPicker = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
11
|
|
|
12
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
13
|
+
|
|
12
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
15
|
|
|
14
16
|
var _reactLooselyLazy = require("react-loosely-lazy");
|
|
15
17
|
|
|
16
|
-
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
17
|
-
|
|
18
18
|
var _constants = require("../common/constants");
|
|
19
19
|
|
|
20
20
|
var _version = require("../version.json");
|
|
21
21
|
|
|
22
22
|
var _errorBoundary = _interopRequireDefault(require("./error-boundary"));
|
|
23
23
|
|
|
24
|
-
var _errorBoundaryFallback = require("./error-boundary-fallback");
|
|
25
|
-
|
|
26
24
|
var _loaderFallback = require("./loader-fallback");
|
|
27
25
|
|
|
26
|
+
var _sessionProvider = require("../controllers/session-provider");
|
|
27
|
+
|
|
28
28
|
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); }
|
|
29
29
|
|
|
30
30
|
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; }
|
|
@@ -44,11 +44,8 @@ var LazyLinkPicker = (0, _reactLooselyLazy.lazyForPaint)(function () {
|
|
|
44
44
|
var ComposedLinkPicker = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
45
45
|
return /*#__PURE__*/_react.default.createElement(_analyticsNext.AnalyticsContext, {
|
|
46
46
|
data: PACKAGE_DATA
|
|
47
|
-
}, /*#__PURE__*/_react.default.createElement(_errorBoundary.default, {
|
|
48
|
-
channel: _constants.ANALYTICS_CHANNEL,
|
|
49
|
-
ErrorComponent: _errorBoundaryFallback.ErrorBoundaryFallback
|
|
50
|
-
}, /*#__PURE__*/_react.default.createElement(_reactLooselyLazy.LazySuspense, {
|
|
47
|
+
}, /*#__PURE__*/_react.default.createElement(_sessionProvider.LinkPickerSessionProvider, null, /*#__PURE__*/_react.default.createElement(_errorBoundary.default, null, /*#__PURE__*/_react.default.createElement(_reactLooselyLazy.LazySuspense, {
|
|
51
48
|
fallback: _loaderFallback.LoaderFallback
|
|
52
|
-
}, /*#__PURE__*/_react.default.createElement(LazyLinkPicker, props))));
|
|
49
|
+
}, /*#__PURE__*/_react.default.createElement(LazyLinkPicker, props)))));
|
|
53
50
|
});
|
|
54
51
|
exports.ComposedLinkPicker = ComposedLinkPicker;
|
|
@@ -61,6 +61,10 @@ var _formFooter = _interopRequireWildcard(require("./form-footer"));
|
|
|
61
61
|
|
|
62
62
|
var _utils = require("./utils");
|
|
63
63
|
|
|
64
|
+
var _experiences = require("../../common/analytics/experiences");
|
|
65
|
+
|
|
66
|
+
var _sessionProvider = require("../../controllers/session-provider");
|
|
67
|
+
|
|
64
68
|
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); }
|
|
65
69
|
|
|
66
70
|
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; }
|
|
@@ -173,6 +177,10 @@ function LinkPicker(_ref) {
|
|
|
173
177
|
trackAttribute = _useLinkPickerAnalyti.trackAttribute,
|
|
174
178
|
getAttributes = _useLinkPickerAnalyti.getAttributes;
|
|
175
179
|
|
|
180
|
+
var linkPickerSessionId = (0, _sessionProvider.useLinkPickerSessionId)();
|
|
181
|
+
(0, _react.useLayoutEffect)(function () {
|
|
182
|
+
(0, _experiences.succeedUfoExperience)(_experiences.ufoExperience.mounted, linkPickerSessionId);
|
|
183
|
+
}, [linkPickerSessionId]);
|
|
176
184
|
(0, _react.useEffect)(function () {
|
|
177
185
|
// Anything in here is fired on component mount.
|
|
178
186
|
var event = createAnalyticsEvent((0, _analytics.default)('ui.inlineDialog.viewed.linkPicker', {}));
|
package/dist/cjs/version.json
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ConcurrentExperience, ExperiencePerformanceTypes, ExperienceTypes } from '@atlaskit/ufo';
|
|
2
|
+
export const ufoExperience = {
|
|
3
|
+
mounted: 'component-mounted'
|
|
4
|
+
};
|
|
5
|
+
const ufoExperiences = {
|
|
6
|
+
[ufoExperience.mounted]: new ConcurrentExperience(ufoExperience.mounted, {
|
|
7
|
+
type: ExperienceTypes.Load,
|
|
8
|
+
performanceType: ExperiencePerformanceTypes.PageSegmentLoad,
|
|
9
|
+
platform: {
|
|
10
|
+
component: 'link-picker'
|
|
11
|
+
}
|
|
12
|
+
})
|
|
13
|
+
};
|
|
14
|
+
export const startUfoExperience = (experienceName, id, metadata) => {
|
|
15
|
+
const experience = ufoExperiences[experienceName].getInstance(id);
|
|
16
|
+
experience.start();
|
|
17
|
+
|
|
18
|
+
if (metadata) {
|
|
19
|
+
experience.addMetadata(metadata);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export const succeedUfoExperience = (experienceName, id, metadata) => {
|
|
23
|
+
const experience = ufoExperiences[experienceName].getInstance(id);
|
|
24
|
+
experience.success({
|
|
25
|
+
metadata
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
export const failUfoExperience = (experienceName, id, metadata) => {
|
|
29
|
+
const experience = ufoExperiences[experienceName].getInstance(id);
|
|
30
|
+
experience.failure({
|
|
31
|
+
metadata
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
export const abortUfoExperience = (experienceName, id, metadata) => {
|
|
35
|
+
const experience = ufoExperiences[experienceName].getInstance(id);
|
|
36
|
+
experience.abort({
|
|
37
|
+
metadata
|
|
38
|
+
});
|
|
39
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React, { createContext, useContext, useEffect, useRef } from 'react';
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
3
|
+
import { abortUfoExperience, startUfoExperience, ufoExperience } from '../../common/analytics/experiences';
|
|
4
|
+
export const INIT_CONTEXT = 'SESSION_UNINITIALIZED';
|
|
5
|
+
export const SessionContext = /*#__PURE__*/createContext(INIT_CONTEXT);
|
|
6
|
+
|
|
7
|
+
const useConstructor = callback => {
|
|
8
|
+
const hasBeenFired = useRef(false);
|
|
9
|
+
|
|
10
|
+
if (!hasBeenFired.current) {
|
|
11
|
+
callback();
|
|
12
|
+
hasBeenFired.current = true;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const LinkPickerSessionProvider = ({
|
|
19
|
+
children
|
|
20
|
+
}) => {
|
|
21
|
+
const {
|
|
22
|
+
current: sessionId
|
|
23
|
+
} = useRef(uuidv4());
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
return () => abortUfoExperience(ufoExperience.mounted, sessionId);
|
|
26
|
+
}, [sessionId]);
|
|
27
|
+
useConstructor(() => startUfoExperience(ufoExperience.mounted, sessionId));
|
|
28
|
+
return /*#__PURE__*/React.createElement(SessionContext.Provider, {
|
|
29
|
+
value: sessionId
|
|
30
|
+
}, children);
|
|
31
|
+
};
|
|
32
|
+
export const useLinkPickerSessionId = () => useContext(SessionContext);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
3
|
+
export class BaseErrorBoundary extends Component {
|
|
4
|
+
constructor(props) {
|
|
5
|
+
super(props);
|
|
6
|
+
this.state = {
|
|
7
|
+
hasError: false
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
componentDidCatch(error, info) {
|
|
12
|
+
const {
|
|
13
|
+
onError
|
|
14
|
+
} = this.props;
|
|
15
|
+
onError && onError(error, info);
|
|
16
|
+
this.setState({
|
|
17
|
+
hasError: true
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
render() {
|
|
22
|
+
const {
|
|
23
|
+
children,
|
|
24
|
+
ErrorComponent
|
|
25
|
+
} = this.props;
|
|
26
|
+
const {
|
|
27
|
+
hasError
|
|
28
|
+
} = this.state;
|
|
29
|
+
|
|
30
|
+
if (hasError && ErrorComponent) {
|
|
31
|
+
return /*#__PURE__*/React.createElement(ErrorComponent, null);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return children;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
}
|
package/dist/es2019/ui/{error-boundary-fallback → error-boundary/error-boundary-fallback}/index.js
RENAMED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { jsx } from '@emotion/react';
|
|
3
3
|
import EmptyState from '@atlaskit/empty-state';
|
|
4
4
|
import { defineMessages, useIntl } from 'react-intl-next';
|
|
5
|
-
import GenericErrorSVG from '
|
|
6
|
-
import { rootContainerStyles } from '
|
|
5
|
+
import GenericErrorSVG from '../../../common/generic-error-svg';
|
|
6
|
+
import { rootContainerStyles } from '../../link-picker/styled';
|
|
7
7
|
const messages = defineMessages({
|
|
8
8
|
heading: {
|
|
9
9
|
defaultMessage: 'Something went wrong!',
|
|
@@ -1,62 +1,33 @@
|
|
|
1
|
-
import
|
|
2
|
-
import React, { Component } from 'react';
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
3
2
|
import { withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
4
3
|
import createEventPayload from '../../analytics.codegen';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
} = this.props;
|
|
33
|
-
const payload = {
|
|
34
|
-
error,
|
|
35
|
-
info
|
|
36
|
-
};
|
|
37
|
-
this.fireAnalytics(payload);
|
|
38
|
-
onError && onError(error, info);
|
|
39
|
-
this.setState({
|
|
40
|
-
hasError: true
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
render() {
|
|
45
|
-
const {
|
|
46
|
-
children,
|
|
47
|
-
ErrorComponent
|
|
48
|
-
} = this.props;
|
|
49
|
-
const {
|
|
50
|
-
hasError
|
|
51
|
-
} = this.state;
|
|
52
|
-
|
|
53
|
-
if (hasError && ErrorComponent) {
|
|
54
|
-
return /*#__PURE__*/React.createElement(ErrorComponent, null);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return children;
|
|
58
|
-
}
|
|
59
|
-
|
|
4
|
+
import { ANALYTICS_CHANNEL } from '../../common/constants';
|
|
5
|
+
import { failUfoExperience, ufoExperience } from '../../common/analytics/experiences';
|
|
6
|
+
import { useLinkPickerSessionId } from '../../controllers/session-provider';
|
|
7
|
+
import { ErrorBoundaryFallback } from './error-boundary-fallback';
|
|
8
|
+
import { BaseErrorBoundary } from './error-boundary-base';
|
|
9
|
+
|
|
10
|
+
function ErrorBoundary({
|
|
11
|
+
children,
|
|
12
|
+
createAnalyticsEvent
|
|
13
|
+
}) {
|
|
14
|
+
const linkPickerSessionId = useLinkPickerSessionId();
|
|
15
|
+
const handleError = useCallback((error, info) => {
|
|
16
|
+
var _window, _window$navigator, _info$componentStack;
|
|
17
|
+
|
|
18
|
+
// Fire Analytics event
|
|
19
|
+
createAnalyticsEvent(createEventPayload('ui.linkPicker.unhandledErrorCaught', {
|
|
20
|
+
browserInfo: ((_window = window) === null || _window === void 0 ? void 0 : (_window$navigator = _window.navigator) === null || _window$navigator === void 0 ? void 0 : _window$navigator.userAgent) || 'unknown',
|
|
21
|
+
error: error.toString(),
|
|
22
|
+
componentStack: (_info$componentStack = info === null || info === void 0 ? void 0 : info.componentStack) !== null && _info$componentStack !== void 0 ? _info$componentStack : ''
|
|
23
|
+
})).fire(ANALYTICS_CHANNEL); // Fire UFO failed experience
|
|
24
|
+
|
|
25
|
+
failUfoExperience(ufoExperience.mounted, linkPickerSessionId);
|
|
26
|
+
}, [createAnalyticsEvent, linkPickerSessionId]);
|
|
27
|
+
return /*#__PURE__*/React.createElement(BaseErrorBoundary, {
|
|
28
|
+
onError: handleError,
|
|
29
|
+
ErrorComponent: ErrorBoundaryFallback
|
|
30
|
+
}, children);
|
|
60
31
|
}
|
|
61
|
-
|
|
62
|
-
export default ErrorBoundary;
|
|
32
|
+
|
|
33
|
+
export default withAnalyticsEvents()(ErrorBoundary);
|
package/dist/es2019/ui/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { AnalyticsContext } from '@atlaskit/analytics-next';
|
|
1
2
|
import React, { memo } from 'react';
|
|
2
3
|
import { LazySuspense, lazyForPaint } from 'react-loosely-lazy';
|
|
3
|
-
import {
|
|
4
|
-
import { COMPONENT_NAME, ANALYTICS_CHANNEL } from '../common/constants';
|
|
4
|
+
import { COMPONENT_NAME } from '../common/constants';
|
|
5
5
|
import { name as packageName, version as packageVersion } from '../version.json';
|
|
6
6
|
import ErrorBoundary from './error-boundary';
|
|
7
|
-
import { ErrorBoundaryFallback } from './error-boundary-fallback';
|
|
8
7
|
import { LoaderFallback } from './loader-fallback';
|
|
8
|
+
import { LinkPickerSessionProvider } from '../controllers/session-provider';
|
|
9
9
|
export const PACKAGE_DATA = {
|
|
10
10
|
packageName,
|
|
11
11
|
packageVersion,
|
|
@@ -17,9 +17,6 @@ const LazyLinkPicker = lazyForPaint(() => import(
|
|
|
17
17
|
'./link-picker'));
|
|
18
18
|
export const ComposedLinkPicker = /*#__PURE__*/memo(props => /*#__PURE__*/React.createElement(AnalyticsContext, {
|
|
19
19
|
data: PACKAGE_DATA
|
|
20
|
-
}, /*#__PURE__*/React.createElement(ErrorBoundary, {
|
|
21
|
-
channel: ANALYTICS_CHANNEL,
|
|
22
|
-
ErrorComponent: ErrorBoundaryFallback
|
|
23
|
-
}, /*#__PURE__*/React.createElement(LazySuspense, {
|
|
20
|
+
}, /*#__PURE__*/React.createElement(LinkPickerSessionProvider, null, /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(LazySuspense, {
|
|
24
21
|
fallback: LoaderFallback
|
|
25
|
-
}, /*#__PURE__*/React.createElement(LazyLinkPicker, props)))));
|
|
22
|
+
}, /*#__PURE__*/React.createElement(LazyLinkPicker, props))))));
|
|
@@ -24,6 +24,8 @@ import LinkSearchList, { testIds as listTestIds } from './link-search-list';
|
|
|
24
24
|
import LinkSearchError, { testIds as searchErrorTestIds } from './link-search-error';
|
|
25
25
|
import FormFooter, { testIds as formFooterTestIds } from './form-footer';
|
|
26
26
|
import { getDataSource, getScreenReaderText } from './utils';
|
|
27
|
+
import { succeedUfoExperience, ufoExperience } from '../../common/analytics/experiences';
|
|
28
|
+
import { useLinkPickerSessionId } from '../../controllers/session-provider';
|
|
27
29
|
export const RECENT_SEARCH_LIST_SIZE = 5;
|
|
28
30
|
export const testIds = {
|
|
29
31
|
linkPicker: 'link-picker',
|
|
@@ -123,6 +125,10 @@ function LinkPicker({
|
|
|
123
125
|
trackAttribute,
|
|
124
126
|
getAttributes
|
|
125
127
|
} = useLinkPickerAnalytics();
|
|
128
|
+
const linkPickerSessionId = useLinkPickerSessionId();
|
|
129
|
+
useLayoutEffect(() => {
|
|
130
|
+
succeedUfoExperience(ufoExperience.mounted, linkPickerSessionId);
|
|
131
|
+
}, [linkPickerSessionId]);
|
|
126
132
|
useEffect(() => {
|
|
127
133
|
// Anything in here is fired on component mount.
|
|
128
134
|
const event = createAnalyticsEvent(createEventPayload('ui.inlineDialog.viewed.linkPicker', {}));
|
package/dist/es2019/version.json
CHANGED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import { ConcurrentExperience, ExperiencePerformanceTypes, ExperienceTypes } from '@atlaskit/ufo';
|
|
3
|
+
export var ufoExperience = {
|
|
4
|
+
mounted: 'component-mounted'
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
var ufoExperiences = _defineProperty({}, ufoExperience.mounted, new ConcurrentExperience(ufoExperience.mounted, {
|
|
8
|
+
type: ExperienceTypes.Load,
|
|
9
|
+
performanceType: ExperiencePerformanceTypes.PageSegmentLoad,
|
|
10
|
+
platform: {
|
|
11
|
+
component: 'link-picker'
|
|
12
|
+
}
|
|
13
|
+
}));
|
|
14
|
+
|
|
15
|
+
export var startUfoExperience = function startUfoExperience(experienceName, id, metadata) {
|
|
16
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
17
|
+
experience.start();
|
|
18
|
+
|
|
19
|
+
if (metadata) {
|
|
20
|
+
experience.addMetadata(metadata);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export var succeedUfoExperience = function succeedUfoExperience(experienceName, id, metadata) {
|
|
24
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
25
|
+
experience.success({
|
|
26
|
+
metadata: metadata
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
export var failUfoExperience = function failUfoExperience(experienceName, id, metadata) {
|
|
30
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
31
|
+
experience.failure({
|
|
32
|
+
metadata: metadata
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
export var abortUfoExperience = function abortUfoExperience(experienceName, id, metadata) {
|
|
36
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
37
|
+
experience.abort({
|
|
38
|
+
metadata: metadata
|
|
39
|
+
});
|
|
40
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React, { createContext, useContext, useEffect, useRef } from 'react';
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
3
|
+
import { abortUfoExperience, startUfoExperience, ufoExperience } from '../../common/analytics/experiences';
|
|
4
|
+
export var INIT_CONTEXT = 'SESSION_UNINITIALIZED';
|
|
5
|
+
export var SessionContext = /*#__PURE__*/createContext(INIT_CONTEXT);
|
|
6
|
+
|
|
7
|
+
var useConstructor = function useConstructor(callback) {
|
|
8
|
+
var hasBeenFired = useRef(false);
|
|
9
|
+
|
|
10
|
+
if (!hasBeenFired.current) {
|
|
11
|
+
callback();
|
|
12
|
+
hasBeenFired.current = true;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export var LinkPickerSessionProvider = function LinkPickerSessionProvider(_ref) {
|
|
19
|
+
var children = _ref.children;
|
|
20
|
+
|
|
21
|
+
var _useRef = useRef(uuidv4()),
|
|
22
|
+
sessionId = _useRef.current;
|
|
23
|
+
|
|
24
|
+
useEffect(function () {
|
|
25
|
+
return function () {
|
|
26
|
+
return abortUfoExperience(ufoExperience.mounted, sessionId);
|
|
27
|
+
};
|
|
28
|
+
}, [sessionId]);
|
|
29
|
+
useConstructor(function () {
|
|
30
|
+
return startUfoExperience(ufoExperience.mounted, sessionId);
|
|
31
|
+
});
|
|
32
|
+
return /*#__PURE__*/React.createElement(SessionContext.Provider, {
|
|
33
|
+
value: sessionId
|
|
34
|
+
}, children);
|
|
35
|
+
};
|
|
36
|
+
export var useLinkPickerSessionId = function useLinkPickerSessionId() {
|
|
37
|
+
return useContext(SessionContext);
|
|
38
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
|
+
import _inherits from "@babel/runtime/helpers/inherits";
|
|
4
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
5
|
+
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
6
|
+
|
|
7
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
8
|
+
|
|
9
|
+
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; } }
|
|
10
|
+
|
|
11
|
+
import React, { Component } from 'react';
|
|
12
|
+
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
13
|
+
export var BaseErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
14
|
+
_inherits(BaseErrorBoundary, _Component);
|
|
15
|
+
|
|
16
|
+
var _super = _createSuper(BaseErrorBoundary);
|
|
17
|
+
|
|
18
|
+
function BaseErrorBoundary(props) {
|
|
19
|
+
var _this;
|
|
20
|
+
|
|
21
|
+
_classCallCheck(this, BaseErrorBoundary);
|
|
22
|
+
|
|
23
|
+
_this = _super.call(this, props);
|
|
24
|
+
_this.state = {
|
|
25
|
+
hasError: false
|
|
26
|
+
};
|
|
27
|
+
return _this;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
_createClass(BaseErrorBoundary, [{
|
|
31
|
+
key: "componentDidCatch",
|
|
32
|
+
value: function componentDidCatch(error, info) {
|
|
33
|
+
var onError = this.props.onError;
|
|
34
|
+
onError && onError(error, info);
|
|
35
|
+
this.setState({
|
|
36
|
+
hasError: true
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}, {
|
|
40
|
+
key: "render",
|
|
41
|
+
value: function render() {
|
|
42
|
+
var _this$props = this.props,
|
|
43
|
+
children = _this$props.children,
|
|
44
|
+
ErrorComponent = _this$props.ErrorComponent;
|
|
45
|
+
var hasError = this.state.hasError;
|
|
46
|
+
|
|
47
|
+
if (hasError && ErrorComponent) {
|
|
48
|
+
return /*#__PURE__*/React.createElement(ErrorComponent, null);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return children;
|
|
52
|
+
}
|
|
53
|
+
}]);
|
|
54
|
+
|
|
55
|
+
return BaseErrorBoundary;
|
|
56
|
+
}(Component);
|
package/dist/esm/ui/{error-boundary-fallback → error-boundary/error-boundary-fallback}/index.js
RENAMED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { jsx } from '@emotion/react';
|
|
3
3
|
import EmptyState from '@atlaskit/empty-state';
|
|
4
4
|
import { defineMessages, useIntl } from 'react-intl-next';
|
|
5
|
-
import GenericErrorSVG from '
|
|
6
|
-
import { rootContainerStyles } from '
|
|
5
|
+
import GenericErrorSVG from '../../../common/generic-error-svg';
|
|
6
|
+
import { rootContainerStyles } from '../../link-picker/styled';
|
|
7
7
|
var messages = defineMessages({
|
|
8
8
|
heading: {
|
|
9
9
|
defaultMessage: 'Something went wrong!',
|
|
@@ -1,81 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
|
-
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
|
|
4
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
5
|
-
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
6
|
-
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
7
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
8
|
-
|
|
9
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
10
|
-
|
|
11
|
-
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; } }
|
|
12
|
-
|
|
13
|
-
import React, { Component } from 'react';
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
14
2
|
import { withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
15
3
|
import createEventPayload from '../../analytics.codegen';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return _this;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
_createClass(BaseErrorBoundary, [{
|
|
49
|
-
key: "componentDidCatch",
|
|
50
|
-
value: function componentDidCatch(error, info) {
|
|
51
|
-
var onError = this.props.onError;
|
|
52
|
-
var payload = {
|
|
53
|
-
error: error,
|
|
54
|
-
info: info
|
|
55
|
-
};
|
|
56
|
-
this.fireAnalytics(payload);
|
|
57
|
-
onError && onError(error, info);
|
|
58
|
-
this.setState({
|
|
59
|
-
hasError: true
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}, {
|
|
63
|
-
key: "render",
|
|
64
|
-
value: function render() {
|
|
65
|
-
var _this$props2 = this.props,
|
|
66
|
-
children = _this$props2.children,
|
|
67
|
-
ErrorComponent = _this$props2.ErrorComponent;
|
|
68
|
-
var hasError = this.state.hasError;
|
|
69
|
-
|
|
70
|
-
if (hasError && ErrorComponent) {
|
|
71
|
-
return /*#__PURE__*/React.createElement(ErrorComponent, null);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return children;
|
|
75
|
-
}
|
|
76
|
-
}]);
|
|
77
|
-
|
|
78
|
-
return BaseErrorBoundary;
|
|
79
|
-
}(Component);
|
|
80
|
-
var ErrorBoundary = withAnalyticsEvents()(BaseErrorBoundary);
|
|
81
|
-
export default ErrorBoundary;
|
|
4
|
+
import { ANALYTICS_CHANNEL } from '../../common/constants';
|
|
5
|
+
import { failUfoExperience, ufoExperience } from '../../common/analytics/experiences';
|
|
6
|
+
import { useLinkPickerSessionId } from '../../controllers/session-provider';
|
|
7
|
+
import { ErrorBoundaryFallback } from './error-boundary-fallback';
|
|
8
|
+
import { BaseErrorBoundary } from './error-boundary-base';
|
|
9
|
+
|
|
10
|
+
function ErrorBoundary(_ref) {
|
|
11
|
+
var children = _ref.children,
|
|
12
|
+
createAnalyticsEvent = _ref.createAnalyticsEvent;
|
|
13
|
+
var linkPickerSessionId = useLinkPickerSessionId();
|
|
14
|
+
var handleError = useCallback(function (error, info) {
|
|
15
|
+
var _window, _window$navigator, _info$componentStack;
|
|
16
|
+
|
|
17
|
+
// Fire Analytics event
|
|
18
|
+
createAnalyticsEvent(createEventPayload('ui.linkPicker.unhandledErrorCaught', {
|
|
19
|
+
browserInfo: ((_window = window) === null || _window === void 0 ? void 0 : (_window$navigator = _window.navigator) === null || _window$navigator === void 0 ? void 0 : _window$navigator.userAgent) || 'unknown',
|
|
20
|
+
error: error.toString(),
|
|
21
|
+
componentStack: (_info$componentStack = info === null || info === void 0 ? void 0 : info.componentStack) !== null && _info$componentStack !== void 0 ? _info$componentStack : ''
|
|
22
|
+
})).fire(ANALYTICS_CHANNEL); // Fire UFO failed experience
|
|
23
|
+
|
|
24
|
+
failUfoExperience(ufoExperience.mounted, linkPickerSessionId);
|
|
25
|
+
}, [createAnalyticsEvent, linkPickerSessionId]);
|
|
26
|
+
return /*#__PURE__*/React.createElement(BaseErrorBoundary, {
|
|
27
|
+
onError: handleError,
|
|
28
|
+
ErrorComponent: ErrorBoundaryFallback
|
|
29
|
+
}, children);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export default withAnalyticsEvents()(ErrorBoundary);
|
package/dist/esm/ui/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { AnalyticsContext } from '@atlaskit/analytics-next';
|
|
1
2
|
import React, { memo } from 'react';
|
|
2
3
|
import { LazySuspense, lazyForPaint } from 'react-loosely-lazy';
|
|
3
|
-
import {
|
|
4
|
-
import { COMPONENT_NAME, ANALYTICS_CHANNEL } from '../common/constants';
|
|
4
|
+
import { COMPONENT_NAME } from '../common/constants';
|
|
5
5
|
import { name as packageName, version as packageVersion } from '../version.json';
|
|
6
6
|
import ErrorBoundary from './error-boundary';
|
|
7
|
-
import { ErrorBoundaryFallback } from './error-boundary-fallback';
|
|
8
7
|
import { LoaderFallback } from './loader-fallback';
|
|
8
|
+
import { LinkPickerSessionProvider } from '../controllers/session-provider';
|
|
9
9
|
export var PACKAGE_DATA = {
|
|
10
10
|
packageName: packageName,
|
|
11
11
|
packageVersion: packageVersion,
|
|
@@ -20,10 +20,7 @@ var LazyLinkPicker = lazyForPaint(function () {
|
|
|
20
20
|
export var ComposedLinkPicker = /*#__PURE__*/memo(function (props) {
|
|
21
21
|
return /*#__PURE__*/React.createElement(AnalyticsContext, {
|
|
22
22
|
data: PACKAGE_DATA
|
|
23
|
-
}, /*#__PURE__*/React.createElement(ErrorBoundary, {
|
|
24
|
-
channel: ANALYTICS_CHANNEL,
|
|
25
|
-
ErrorComponent: ErrorBoundaryFallback
|
|
26
|
-
}, /*#__PURE__*/React.createElement(LazySuspense, {
|
|
23
|
+
}, /*#__PURE__*/React.createElement(LinkPickerSessionProvider, null, /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(LazySuspense, {
|
|
27
24
|
fallback: LoaderFallback
|
|
28
|
-
}, /*#__PURE__*/React.createElement(LazyLinkPicker, props))));
|
|
25
|
+
}, /*#__PURE__*/React.createElement(LazyLinkPicker, props)))));
|
|
29
26
|
});
|
|
@@ -30,6 +30,8 @@ import LinkSearchList, { testIds as listTestIds } from './link-search-list';
|
|
|
30
30
|
import LinkSearchError, { testIds as searchErrorTestIds } from './link-search-error';
|
|
31
31
|
import FormFooter, { testIds as formFooterTestIds } from './form-footer';
|
|
32
32
|
import { getDataSource, getScreenReaderText } from './utils';
|
|
33
|
+
import { succeedUfoExperience, ufoExperience } from '../../common/analytics/experiences';
|
|
34
|
+
import { useLinkPickerSessionId } from '../../controllers/session-provider';
|
|
33
35
|
export var RECENT_SEARCH_LIST_SIZE = 5;
|
|
34
36
|
export var testIds = _objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
35
37
|
linkPicker: 'link-picker',
|
|
@@ -130,6 +132,10 @@ function LinkPicker(_ref) {
|
|
|
130
132
|
trackAttribute = _useLinkPickerAnalyti.trackAttribute,
|
|
131
133
|
getAttributes = _useLinkPickerAnalyti.getAttributes;
|
|
132
134
|
|
|
135
|
+
var linkPickerSessionId = useLinkPickerSessionId();
|
|
136
|
+
useLayoutEffect(function () {
|
|
137
|
+
succeedUfoExperience(ufoExperience.mounted, linkPickerSessionId);
|
|
138
|
+
}, [linkPickerSessionId]);
|
|
133
139
|
useEffect(function () {
|
|
134
140
|
// Anything in here is fired on component mount.
|
|
135
141
|
var event = createAnalyticsEvent(createEventPayload('ui.inlineDialog.viewed.linkPicker', {}));
|
package/dist/esm/version.json
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CustomData } from '@atlaskit/ufo';
|
|
2
|
+
export declare const ufoExperience: {
|
|
3
|
+
readonly mounted: "component-mounted";
|
|
4
|
+
};
|
|
5
|
+
declare type ExperienceType = keyof typeof ufoExperience;
|
|
6
|
+
declare type ExperienceName = typeof ufoExperience[ExperienceType];
|
|
7
|
+
export declare const startUfoExperience: (experienceName: ExperienceName, id: string, metadata?: CustomData | undefined) => void;
|
|
8
|
+
export declare const succeedUfoExperience: (experienceName: ExperienceName, id: string, metadata?: CustomData | undefined) => void;
|
|
9
|
+
export declare const failUfoExperience: (experienceName: ExperienceName, id: string, metadata?: CustomData | undefined) => void;
|
|
10
|
+
export declare const abortUfoExperience: (experienceName: ExperienceName, id: string, metadata?: CustomData | undefined) => void;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
export declare type LinkPickerSessionId = string;
|
|
3
|
+
export declare const INIT_CONTEXT = "SESSION_UNINITIALIZED";
|
|
4
|
+
export declare const SessionContext: React.Context<string>;
|
|
5
|
+
interface SessionProviderProps {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare const LinkPickerSessionProvider: ({ children, }: SessionProviderProps) => JSX.Element;
|
|
9
|
+
export declare const useLinkPickerSessionId: () => string;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React, { Component, ReactNode } from 'react';
|
|
2
|
+
export declare type ErrorBoundaryErrorInfo = {
|
|
3
|
+
componentStack: string;
|
|
4
|
+
};
|
|
5
|
+
declare type BaseErrorBoundaryState = {
|
|
6
|
+
hasError: boolean;
|
|
7
|
+
};
|
|
8
|
+
interface BaseErrorBoundaryProps {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
ErrorComponent?: React.ComponentType;
|
|
11
|
+
onError?: (error: Error, info?: ErrorBoundaryErrorInfo) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare class BaseErrorBoundary extends Component<BaseErrorBoundaryProps, BaseErrorBoundaryState> {
|
|
14
|
+
constructor(props: BaseErrorBoundaryProps);
|
|
15
|
+
componentDidCatch(error: Error, info?: ErrorBoundaryErrorInfo): void;
|
|
16
|
+
render(): React.ReactNode;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
package/dist/types/ui/{error-boundary-fallback → error-boundary/error-boundary-fallback}/index.d.ts
RENAMED
|
File without changes
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
2
|
import { WithAnalyticsEventsProps } from '@atlaskit/analytics-next';
|
|
3
|
-
|
|
4
|
-
componentStack: string;
|
|
5
|
-
};
|
|
6
|
-
export interface ErrorBoundaryProps extends WithAnalyticsEventsProps {
|
|
3
|
+
interface ErrorBoundaryProps extends WithAnalyticsEventsProps {
|
|
7
4
|
children: ReactNode;
|
|
8
|
-
channel: string;
|
|
9
|
-
ErrorComponent?: React.ComponentType;
|
|
10
|
-
onError?: (error: Error, info?: ErrorBoundaryErrorInfo) => void;
|
|
11
5
|
}
|
|
12
|
-
declare
|
|
13
|
-
|
|
14
|
-
info?: ErrorBoundaryErrorInfo;
|
|
15
|
-
[key: string]: any;
|
|
16
|
-
};
|
|
17
|
-
declare type ErrorBoundaryState = {
|
|
18
|
-
hasError: boolean;
|
|
19
|
-
};
|
|
20
|
-
export declare class BaseErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
21
|
-
constructor(props: ErrorBoundaryProps);
|
|
22
|
-
fireAnalytics: (analyticsErrorPayload: ErrorBoundaryPayload) => void;
|
|
23
|
-
componentDidCatch(error: Error, info?: ErrorBoundaryErrorInfo): void;
|
|
24
|
-
render(): React.ReactNode;
|
|
25
|
-
}
|
|
26
|
-
declare const ErrorBoundary: React.ForwardRefExoticComponent<Omit<ErrorBoundaryProps, keyof WithAnalyticsEventsProps> & React.RefAttributes<any>>;
|
|
27
|
-
export default ErrorBoundary;
|
|
6
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<ErrorBoundaryProps, keyof WithAnalyticsEventsProps> & React.RefAttributes<any>>;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CustomData } from '@atlaskit/ufo';
|
|
2
|
+
export declare const ufoExperience: {
|
|
3
|
+
readonly mounted: "component-mounted";
|
|
4
|
+
};
|
|
5
|
+
declare type ExperienceType = keyof typeof ufoExperience;
|
|
6
|
+
declare type ExperienceName = typeof ufoExperience[ExperienceType];
|
|
7
|
+
export declare const startUfoExperience: (experienceName: ExperienceName, id: string, metadata?: CustomData | undefined) => void;
|
|
8
|
+
export declare const succeedUfoExperience: (experienceName: ExperienceName, id: string, metadata?: CustomData | undefined) => void;
|
|
9
|
+
export declare const failUfoExperience: (experienceName: ExperienceName, id: string, metadata?: CustomData | undefined) => void;
|
|
10
|
+
export declare const abortUfoExperience: (experienceName: ExperienceName, id: string, metadata?: CustomData | undefined) => void;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
export declare type LinkPickerSessionId = string;
|
|
3
|
+
export declare const INIT_CONTEXT = "SESSION_UNINITIALIZED";
|
|
4
|
+
export declare const SessionContext: React.Context<string>;
|
|
5
|
+
interface SessionProviderProps {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare const LinkPickerSessionProvider: ({ children, }: SessionProviderProps) => JSX.Element;
|
|
9
|
+
export declare const useLinkPickerSessionId: () => string;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React, { Component, ReactNode } from 'react';
|
|
2
|
+
export declare type ErrorBoundaryErrorInfo = {
|
|
3
|
+
componentStack: string;
|
|
4
|
+
};
|
|
5
|
+
declare type BaseErrorBoundaryState = {
|
|
6
|
+
hasError: boolean;
|
|
7
|
+
};
|
|
8
|
+
interface BaseErrorBoundaryProps {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
ErrorComponent?: React.ComponentType;
|
|
11
|
+
onError?: (error: Error, info?: ErrorBoundaryErrorInfo) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare class BaseErrorBoundary extends Component<BaseErrorBoundaryProps, BaseErrorBoundaryState> {
|
|
14
|
+
constructor(props: BaseErrorBoundaryProps);
|
|
15
|
+
componentDidCatch(error: Error, info?: ErrorBoundaryErrorInfo): void;
|
|
16
|
+
render(): React.ReactNode;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
File without changes
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
2
|
import { WithAnalyticsEventsProps } from '@atlaskit/analytics-next';
|
|
3
|
-
|
|
4
|
-
componentStack: string;
|
|
5
|
-
};
|
|
6
|
-
export interface ErrorBoundaryProps extends WithAnalyticsEventsProps {
|
|
3
|
+
interface ErrorBoundaryProps extends WithAnalyticsEventsProps {
|
|
7
4
|
children: ReactNode;
|
|
8
|
-
channel: string;
|
|
9
|
-
ErrorComponent?: React.ComponentType;
|
|
10
|
-
onError?: (error: Error, info?: ErrorBoundaryErrorInfo) => void;
|
|
11
5
|
}
|
|
12
|
-
declare
|
|
13
|
-
|
|
14
|
-
info?: ErrorBoundaryErrorInfo;
|
|
15
|
-
[key: string]: any;
|
|
16
|
-
};
|
|
17
|
-
declare type ErrorBoundaryState = {
|
|
18
|
-
hasError: boolean;
|
|
19
|
-
};
|
|
20
|
-
export declare class BaseErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
21
|
-
constructor(props: ErrorBoundaryProps);
|
|
22
|
-
fireAnalytics: (analyticsErrorPayload: ErrorBoundaryPayload) => void;
|
|
23
|
-
componentDidCatch(error: Error, info?: ErrorBoundaryErrorInfo): void;
|
|
24
|
-
render(): React.ReactNode;
|
|
25
|
-
}
|
|
26
|
-
declare const ErrorBoundary: React.ForwardRefExoticComponent<Omit<ErrorBoundaryProps, keyof WithAnalyticsEventsProps> & React.RefAttributes<any>>;
|
|
27
|
-
export default ErrorBoundary;
|
|
6
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<ErrorBoundaryProps, keyof WithAnalyticsEventsProps> & React.RefAttributes<any>>;
|
|
7
|
+
export default _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/link-picker",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.4",
|
|
4
4
|
"description": "Standalone link picker",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"publishConfig": {
|
|
@@ -49,12 +49,14 @@
|
|
|
49
49
|
"@atlaskit/theme": "^12.2.0",
|
|
50
50
|
"@atlaskit/tokens": "^0.10.0",
|
|
51
51
|
"@atlaskit/tooltip": "^17.5.0",
|
|
52
|
+
"@atlaskit/ufo": "^0.1.0",
|
|
52
53
|
"@atlaskit/visually-hidden": "^1.1.0",
|
|
53
54
|
"@babel/runtime": "^7.0.0",
|
|
54
55
|
"@emotion/react": "^11.7.1",
|
|
55
56
|
"date-fns": "^2.17.0",
|
|
56
57
|
"linkify-it": "^2.0.3",
|
|
57
|
-
"react-loosely-lazy": "^0.5.0"
|
|
58
|
+
"react-loosely-lazy": "^0.5.0",
|
|
59
|
+
"uuid": "^3.1.0"
|
|
58
60
|
},
|
|
59
61
|
"peerDependencies": {
|
|
60
62
|
"react": "^16.8.0",
|
|
@@ -84,6 +86,7 @@
|
|
|
84
86
|
"@types/js-yaml": "^3.12.5",
|
|
85
87
|
"enzyme": "^3.10.0",
|
|
86
88
|
"fetch-mock": "^8.0.0",
|
|
89
|
+
"jest-extended": "^0.11.2",
|
|
87
90
|
"js-yaml": "^3.13.1",
|
|
88
91
|
"lodash": "^4.17.21",
|
|
89
92
|
"mockdate": "^3.0.2",
|