@atlaskit/link-picker 1.23.2 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/ui/index.js +3 -2
  3. package/dist/cjs/ui/messages-provider/index.js +18 -0
  4. package/dist/cjs/ui/messages-provider/lazy-messages-provider/index.js +21 -0
  5. package/dist/cjs/ui/messages-provider/lazy-messages-provider/utils/fetch-messages-for-locale.js +64 -0
  6. package/dist/cjs/ui/messages-provider/lazy-messages-provider/utils/types.js +5 -0
  7. package/dist/cjs/ui/messages-provider/lazy-messages-provider/utils/use-messages.js +42 -0
  8. package/dist/cjs/version.json +1 -1
  9. package/dist/es2019/ui/index.js +3 -2
  10. package/dist/es2019/ui/messages-provider/index.js +11 -0
  11. package/dist/es2019/ui/messages-provider/lazy-messages-provider/index.js +13 -0
  12. package/dist/es2019/ui/messages-provider/lazy-messages-provider/utils/fetch-messages-for-locale.js +21 -0
  13. package/dist/es2019/ui/messages-provider/lazy-messages-provider/utils/types.js +1 -0
  14. package/dist/es2019/ui/messages-provider/lazy-messages-provider/utils/use-messages.js +30 -0
  15. package/dist/es2019/version.json +1 -1
  16. package/dist/esm/ui/index.js +3 -2
  17. package/dist/esm/ui/messages-provider/index.js +10 -0
  18. package/dist/esm/ui/messages-provider/lazy-messages-provider/index.js +13 -0
  19. package/dist/esm/ui/messages-provider/lazy-messages-provider/utils/fetch-messages-for-locale.js +41 -0
  20. package/dist/esm/ui/messages-provider/lazy-messages-provider/utils/types.js +1 -0
  21. package/dist/esm/ui/messages-provider/lazy-messages-provider/utils/use-messages.js +34 -0
  22. package/dist/esm/version.json +1 -1
  23. package/dist/types/ui/messages-provider/index.d.ts +5 -0
  24. package/dist/types/ui/messages-provider/lazy-messages-provider/index.d.ts +6 -0
  25. package/dist/types/ui/messages-provider/lazy-messages-provider/utils/fetch-messages-for-locale.d.ts +2 -0
  26. package/dist/types/ui/messages-provider/lazy-messages-provider/utils/types.d.ts +2 -0
  27. package/dist/types/ui/messages-provider/lazy-messages-provider/utils/use-messages.d.ts +6 -0
  28. package/dist/types-ts4.5/ui/messages-provider/index.d.ts +5 -0
  29. package/dist/types-ts4.5/ui/messages-provider/lazy-messages-provider/index.d.ts +6 -0
  30. package/dist/types-ts4.5/ui/messages-provider/lazy-messages-provider/utils/fetch-messages-for-locale.d.ts +2 -0
  31. package/dist/types-ts4.5/ui/messages-provider/lazy-messages-provider/utils/types.d.ts +2 -0
  32. package/dist/types-ts4.5/ui/messages-provider/lazy-messages-provider/utils/use-messages.d.ts +6 -0
  33. package/package.json +4 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/link-picker
2
2
 
3
+ ## 1.24.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`5a810cbc8c7`](https://bitbucket.org/atlassian/atlassian-frontend/commits/5a810cbc8c7) - Adds internal MessagesProvider behind `platform.linking-platform.link-picker.lazy-intl-messages` feature flag which, when enabled, lazy loads and self-provides messages for the current locale (as defined by a parent `IntlProvider`).
8
+
3
9
  ## 1.23.2
4
10
 
5
11
  ### Patch Changes
@@ -15,6 +15,7 @@ var _version = require("../version.json");
15
15
  var _errorBoundary = _interopRequireDefault(require("./error-boundary"));
16
16
  var _loaderFallback = require("./loader-fallback");
17
17
  var _sessionProvider = require("../controllers/session-provider");
18
+ var _messagesProvider = require("./messages-provider");
18
19
  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); }
19
20
  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; }
20
21
  var testIds = {
@@ -45,13 +46,13 @@ var ComposedLinkPicker = /*#__PURE__*/(0, _react.memo)(function (props) {
45
46
  var RootComponent = component !== null && component !== void 0 ? component : DefaultRootComponent;
46
47
  return /*#__PURE__*/_react.default.createElement(_analyticsNext.AnalyticsContext, {
47
48
  data: PACKAGE_DATA
48
- }, /*#__PURE__*/_react.default.createElement(_sessionProvider.LinkPickerSessionProvider, null, /*#__PURE__*/_react.default.createElement(_errorBoundary.default, null, /*#__PURE__*/_react.default.createElement(_reactLooselyLazy.LazySuspense, {
49
+ }, /*#__PURE__*/_react.default.createElement(_sessionProvider.LinkPickerSessionProvider, null, /*#__PURE__*/_react.default.createElement(_messagesProvider.MessagesProvider, null, /*#__PURE__*/_react.default.createElement(_errorBoundary.default, null, /*#__PURE__*/_react.default.createElement(_reactLooselyLazy.LazySuspense, {
49
50
  fallback: /*#__PURE__*/_react.default.createElement(_loaderFallback.LoaderFallback, {
50
51
  hideDisplayText: props.hideDisplayText
51
52
  })
52
53
  }, /*#__PURE__*/_react.default.createElement(RootComponent, (0, _extends2.default)({}, props, {
53
54
  "data-testid": testIds.linkPickerRoot
54
- }), /*#__PURE__*/_react.default.createElement(LazyLinkPicker, props))))));
55
+ }), /*#__PURE__*/_react.default.createElement(LazyLinkPicker, props)))))));
55
56
  });
56
57
  exports.ComposedLinkPicker = ComposedLinkPicker;
57
58
  var _default = ComposedLinkPicker;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.MessagesProvider = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
10
+ var _lazyMessagesProvider = require("./lazy-messages-provider");
11
+ var MessagesProvider = function MessagesProvider(_ref) {
12
+ var children = _ref.children;
13
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.link-picker.lazy-intl-messages')) {
14
+ return /*#__PURE__*/_react.default.createElement(_lazyMessagesProvider.LazyMessagesProvider, null, children);
15
+ }
16
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
17
+ };
18
+ exports.MessagesProvider = MessagesProvider;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.LazyMessagesProvider = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _reactIntlNext = require("react-intl-next");
11
+ var _useMessages = require("./utils/use-messages");
12
+ var LazyMessagesProvider = function LazyMessagesProvider(props) {
13
+ var intl = (0, _reactIntlNext.useIntl)();
14
+ var messages = (0, _useMessages.useMessages)(intl.locale);
15
+ return /*#__PURE__*/_react.default.createElement(_reactIntlNext.IntlProvider, (0, _extends2.default)({}, props, {
16
+ defaultLocale: "en",
17
+ messages: messages,
18
+ locale: intl.locale
19
+ }));
20
+ };
21
+ exports.LazyMessagesProvider = LazyMessagesProvider;
@@ -0,0 +1,64 @@
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.fetchMessagesForLocale = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _en = _interopRequireDefault(require("../../../../i18n/en"));
12
+ 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); }
13
+ 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; }
14
+ var fetchMessagesForLocale = /*#__PURE__*/function () {
15
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(locale) {
16
+ var _messages, parentLocale, _messages2;
17
+ return _regenerator.default.wrap(function _callee$(_context) {
18
+ while (1) switch (_context.prev = _context.next) {
19
+ case 0:
20
+ _context.prev = 0;
21
+ _context.next = 3;
22
+ return function (specifier) {
23
+ return new Promise(function (r) {
24
+ return r(specifier);
25
+ }).then(function (s) {
26
+ return _interopRequireWildcard(require(s));
27
+ });
28
+ }( /* webpackChunkName: "@atlaskit-internal_link-picker-i18n-[request]" */"../../../../i18n/".concat(locale));
29
+ case 3:
30
+ _messages = _context.sent;
31
+ return _context.abrupt("return", _messages.default);
32
+ case 7:
33
+ _context.prev = 7;
34
+ _context.t0 = _context["catch"](0);
35
+ case 9:
36
+ _context.prev = 9;
37
+ parentLocale = locale.split(/[-_]/)[0];
38
+ _context.next = 13;
39
+ return function (specifier) {
40
+ return new Promise(function (r) {
41
+ return r(specifier);
42
+ }).then(function (s) {
43
+ return _interopRequireWildcard(require(s));
44
+ });
45
+ }( /* webpackChunkName: "@atlaskit-internal_link-picker-i18n-[request]" */"../../../../i18n/".concat(parentLocale));
46
+ case 13:
47
+ _messages2 = _context.sent;
48
+ return _context.abrupt("return", _messages2.default);
49
+ case 17:
50
+ _context.prev = 17;
51
+ _context.t1 = _context["catch"](9);
52
+ case 19:
53
+ return _context.abrupt("return", _en.default);
54
+ case 20:
55
+ case "end":
56
+ return _context.stop();
57
+ }
58
+ }, _callee, null, [[0, 7], [9, 17]]);
59
+ }));
60
+ return function fetchMessagesForLocale(_x) {
61
+ return _ref.apply(this, arguments);
62
+ };
63
+ }();
64
+ exports.fetchMessagesForLocale = fetchMessagesForLocale;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useMessages = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ var _en = _interopRequireDefault(require("../../../../i18n/en"));
11
+ var _fetchMessagesForLocale = require("./fetch-messages-for-locale");
12
+ /**
13
+ * Hook to load the messages for a given locale
14
+ * English is sync/pre-loaded
15
+ */
16
+ var useMessages = function useMessages(locale) {
17
+ var _useState = (0, _react.useState)({
18
+ locale: 'en',
19
+ messages: _en.default
20
+ }),
21
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
22
+ localeState = _useState2[0],
23
+ setLocaleState = _useState2[1];
24
+ (0, _react.useEffect)(function () {
25
+ if (locale !== localeState.locale) {
26
+ var current = true;
27
+ (0, _fetchMessagesForLocale.fetchMessagesForLocale)(locale).then(function (messages) {
28
+ if (current) {
29
+ setLocaleState({
30
+ messages: messages,
31
+ locale: locale
32
+ });
33
+ }
34
+ });
35
+ return function () {
36
+ current = false;
37
+ };
38
+ }
39
+ }, [localeState, locale]);
40
+ return localeState.messages;
41
+ };
42
+ exports.useMessages = useMessages;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-picker",
3
- "version": "1.23.2",
3
+ "version": "1.24.0",
4
4
  "sideEffects": false
5
5
  }
@@ -7,6 +7,7 @@ import { name as packageName, version as packageVersion } from '../version.json'
7
7
  import ErrorBoundary from './error-boundary';
8
8
  import { LoaderFallback } from './loader-fallback';
9
9
  import { LinkPickerSessionProvider } from '../controllers/session-provider';
10
+ import { MessagesProvider } from './messages-provider';
10
11
  export const testIds = {
11
12
  linkPickerRoot: 'link-picker-root'
12
13
  };
@@ -32,12 +33,12 @@ export const ComposedLinkPicker = /*#__PURE__*/memo(props => {
32
33
  const RootComponent = component !== null && component !== void 0 ? component : DefaultRootComponent;
33
34
  return /*#__PURE__*/React.createElement(AnalyticsContext, {
34
35
  data: PACKAGE_DATA
35
- }, /*#__PURE__*/React.createElement(LinkPickerSessionProvider, null, /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(LazySuspense, {
36
+ }, /*#__PURE__*/React.createElement(LinkPickerSessionProvider, null, /*#__PURE__*/React.createElement(MessagesProvider, null, /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(LazySuspense, {
36
37
  fallback: /*#__PURE__*/React.createElement(LoaderFallback, {
37
38
  hideDisplayText: props.hideDisplayText
38
39
  })
39
40
  }, /*#__PURE__*/React.createElement(RootComponent, _extends({}, props, {
40
41
  "data-testid": testIds.linkPickerRoot
41
- }), /*#__PURE__*/React.createElement(LazyLinkPicker, props))))));
42
+ }), /*#__PURE__*/React.createElement(LazyLinkPicker, props)))))));
42
43
  });
43
44
  export default ComposedLinkPicker;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
3
+ import { LazyMessagesProvider } from './lazy-messages-provider';
4
+ export const MessagesProvider = ({
5
+ children
6
+ }) => {
7
+ if (getBooleanFF('platform.linking-platform.link-picker.lazy-intl-messages')) {
8
+ return /*#__PURE__*/React.createElement(LazyMessagesProvider, null, children);
9
+ }
10
+ return /*#__PURE__*/React.createElement(React.Fragment, null, children);
11
+ };
@@ -0,0 +1,13 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React from 'react';
3
+ import { IntlProvider, useIntl } from 'react-intl-next';
4
+ import { useMessages } from './utils/use-messages';
5
+ export const LazyMessagesProvider = props => {
6
+ const intl = useIntl();
7
+ const messages = useMessages(intl.locale);
8
+ return /*#__PURE__*/React.createElement(IntlProvider, _extends({}, props, {
9
+ defaultLocale: "en",
10
+ messages: messages,
11
+ locale: intl.locale
12
+ }));
13
+ };
@@ -0,0 +1,21 @@
1
+ import messages from '../../../../i18n/en';
2
+ export const fetchMessagesForLocale = async locale => {
3
+ try {
4
+ const messages = await import( /* webpackChunkName: "@atlaskit-internal_link-picker-i18n-[request]" */`../../../../i18n/${locale}`);
5
+ return messages.default;
6
+ } catch (e) {
7
+ // ignore
8
+ }
9
+ try {
10
+ const parentLocale = locale.split(/[-_]/)[0];
11
+ const messages = await import( /* webpackChunkName: "@atlaskit-internal_link-picker-i18n-[request]" */`../../../../i18n/${parentLocale}`);
12
+ return messages.default;
13
+ } catch (e) {
14
+ // ignore
15
+ }
16
+
17
+ /**
18
+ * English bundled by default as this is the majority of users
19
+ */
20
+ return messages;
21
+ };
@@ -0,0 +1,30 @@
1
+ import { useEffect, useState } from 'react';
2
+ import messages from '../../../../i18n/en';
3
+ import { fetchMessagesForLocale } from './fetch-messages-for-locale';
4
+ /**
5
+ * Hook to load the messages for a given locale
6
+ * English is sync/pre-loaded
7
+ */
8
+ export const useMessages = locale => {
9
+ const [localeState, setLocaleState] = useState({
10
+ locale: 'en',
11
+ messages
12
+ });
13
+ useEffect(() => {
14
+ if (locale !== localeState.locale) {
15
+ let current = true;
16
+ fetchMessagesForLocale(locale).then(messages => {
17
+ if (current) {
18
+ setLocaleState({
19
+ messages,
20
+ locale
21
+ });
22
+ }
23
+ });
24
+ return () => {
25
+ current = false;
26
+ };
27
+ }
28
+ }, [localeState, locale]);
29
+ return localeState.messages;
30
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-picker",
3
- "version": "1.23.2",
3
+ "version": "1.24.0",
4
4
  "sideEffects": false
5
5
  }
@@ -7,6 +7,7 @@ import { name as packageName, version as packageVersion } from '../version.json'
7
7
  import ErrorBoundary from './error-boundary';
8
8
  import { LoaderFallback } from './loader-fallback';
9
9
  import { LinkPickerSessionProvider } from '../controllers/session-provider';
10
+ import { MessagesProvider } from './messages-provider';
10
11
  export var testIds = {
11
12
  linkPickerRoot: 'link-picker-root'
12
13
  };
@@ -31,12 +32,12 @@ export var ComposedLinkPicker = /*#__PURE__*/memo(function (props) {
31
32
  var RootComponent = component !== null && component !== void 0 ? component : DefaultRootComponent;
32
33
  return /*#__PURE__*/React.createElement(AnalyticsContext, {
33
34
  data: PACKAGE_DATA
34
- }, /*#__PURE__*/React.createElement(LinkPickerSessionProvider, null, /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(LazySuspense, {
35
+ }, /*#__PURE__*/React.createElement(LinkPickerSessionProvider, null, /*#__PURE__*/React.createElement(MessagesProvider, null, /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(LazySuspense, {
35
36
  fallback: /*#__PURE__*/React.createElement(LoaderFallback, {
36
37
  hideDisplayText: props.hideDisplayText
37
38
  })
38
39
  }, /*#__PURE__*/React.createElement(RootComponent, _extends({}, props, {
39
40
  "data-testid": testIds.linkPickerRoot
40
- }), /*#__PURE__*/React.createElement(LazyLinkPicker, props))))));
41
+ }), /*#__PURE__*/React.createElement(LazyLinkPicker, props)))))));
41
42
  });
42
43
  export default ComposedLinkPicker;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
3
+ import { LazyMessagesProvider } from './lazy-messages-provider';
4
+ export var MessagesProvider = function MessagesProvider(_ref) {
5
+ var children = _ref.children;
6
+ if (getBooleanFF('platform.linking-platform.link-picker.lazy-intl-messages')) {
7
+ return /*#__PURE__*/React.createElement(LazyMessagesProvider, null, children);
8
+ }
9
+ return /*#__PURE__*/React.createElement(React.Fragment, null, children);
10
+ };
@@ -0,0 +1,13 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React from 'react';
3
+ import { IntlProvider, useIntl } from 'react-intl-next';
4
+ import { useMessages } from './utils/use-messages';
5
+ export var LazyMessagesProvider = function LazyMessagesProvider(props) {
6
+ var intl = useIntl();
7
+ var messages = useMessages(intl.locale);
8
+ return /*#__PURE__*/React.createElement(IntlProvider, _extends({}, props, {
9
+ defaultLocale: "en",
10
+ messages: messages,
11
+ locale: intl.locale
12
+ }));
13
+ };
@@ -0,0 +1,41 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+ import messages from '../../../../i18n/en';
4
+ export var fetchMessagesForLocale = /*#__PURE__*/function () {
5
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(locale) {
6
+ var _messages, parentLocale, _messages2;
7
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
8
+ while (1) switch (_context.prev = _context.next) {
9
+ case 0:
10
+ _context.prev = 0;
11
+ _context.next = 3;
12
+ return import( /* webpackChunkName: "@atlaskit-internal_link-picker-i18n-[request]" */"../../../../i18n/".concat(locale));
13
+ case 3:
14
+ _messages = _context.sent;
15
+ return _context.abrupt("return", _messages.default);
16
+ case 7:
17
+ _context.prev = 7;
18
+ _context.t0 = _context["catch"](0);
19
+ case 9:
20
+ _context.prev = 9;
21
+ parentLocale = locale.split(/[-_]/)[0];
22
+ _context.next = 13;
23
+ return import( /* webpackChunkName: "@atlaskit-internal_link-picker-i18n-[request]" */"../../../../i18n/".concat(parentLocale));
24
+ case 13:
25
+ _messages2 = _context.sent;
26
+ return _context.abrupt("return", _messages2.default);
27
+ case 17:
28
+ _context.prev = 17;
29
+ _context.t1 = _context["catch"](9);
30
+ case 19:
31
+ return _context.abrupt("return", messages);
32
+ case 20:
33
+ case "end":
34
+ return _context.stop();
35
+ }
36
+ }, _callee, null, [[0, 7], [9, 17]]);
37
+ }));
38
+ return function fetchMessagesForLocale(_x) {
39
+ return _ref.apply(this, arguments);
40
+ };
41
+ }();
@@ -0,0 +1,34 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useEffect, useState } from 'react';
3
+ import messages from '../../../../i18n/en';
4
+ import { fetchMessagesForLocale } from './fetch-messages-for-locale';
5
+ /**
6
+ * Hook to load the messages for a given locale
7
+ * English is sync/pre-loaded
8
+ */
9
+ export var useMessages = function useMessages(locale) {
10
+ var _useState = useState({
11
+ locale: 'en',
12
+ messages: messages
13
+ }),
14
+ _useState2 = _slicedToArray(_useState, 2),
15
+ localeState = _useState2[0],
16
+ setLocaleState = _useState2[1];
17
+ useEffect(function () {
18
+ if (locale !== localeState.locale) {
19
+ var current = true;
20
+ fetchMessagesForLocale(locale).then(function (messages) {
21
+ if (current) {
22
+ setLocaleState({
23
+ messages: messages,
24
+ locale: locale
25
+ });
26
+ }
27
+ });
28
+ return function () {
29
+ current = false;
30
+ };
31
+ }
32
+ }, [localeState, locale]);
33
+ return localeState.messages;
34
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-picker",
3
- "version": "1.23.2",
3
+ "version": "1.24.0",
4
4
  "sideEffects": false
5
5
  }
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export type MessagesIntlProviderProps = {
3
+ children?: React.ReactNode;
4
+ };
5
+ export declare const MessagesProvider: ({ children }: MessagesIntlProviderProps) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ type LazyMessagesProviderProps = {
3
+ children?: React.ReactNode;
4
+ };
5
+ export declare const LazyMessagesProvider: (props: LazyMessagesProviderProps) => JSX.Element;
6
+ export {};
@@ -0,0 +1,2 @@
1
+ import { I18NMessages } from './types';
2
+ export declare const fetchMessagesForLocale: (locale: string) => Promise<I18NMessages | undefined>;
@@ -0,0 +1,2 @@
1
+ import { MessageFormatElement } from 'react-intl-next';
2
+ export type I18NMessages = Record<string, string> | Record<string, MessageFormatElement[]>;
@@ -0,0 +1,6 @@
1
+ import { I18NMessages } from './types';
2
+ /**
3
+ * Hook to load the messages for a given locale
4
+ * English is sync/pre-loaded
5
+ */
6
+ export declare const useMessages: (locale: string) => I18NMessages | undefined;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export type MessagesIntlProviderProps = {
3
+ children?: React.ReactNode;
4
+ };
5
+ export declare const MessagesProvider: ({ children }: MessagesIntlProviderProps) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ type LazyMessagesProviderProps = {
3
+ children?: React.ReactNode;
4
+ };
5
+ export declare const LazyMessagesProvider: (props: LazyMessagesProviderProps) => JSX.Element;
6
+ export {};
@@ -0,0 +1,2 @@
1
+ import { I18NMessages } from './types';
2
+ export declare const fetchMessagesForLocale: (locale: string) => Promise<I18NMessages | undefined>;
@@ -0,0 +1,2 @@
1
+ import { MessageFormatElement } from 'react-intl-next';
2
+ export type I18NMessages = Record<string, string> | Record<string, MessageFormatElement[]>;
@@ -0,0 +1,6 @@
1
+ import { I18NMessages } from './types';
2
+ /**
3
+ * Hook to load the messages for a given locale
4
+ * English is sync/pre-loaded
5
+ */
6
+ export declare const useMessages: (locale: string) => I18NMessages | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/link-picker",
3
- "version": "1.23.2",
3
+ "version": "1.24.0",
4
4
  "description": "Standalone link picker",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "publishConfig": {
@@ -36,6 +36,9 @@
36
36
  "platform-feature-flags": {
37
37
  "platform.linking-platform.link-picker.enable-empty-state": {
38
38
  "type": "boolean"
39
+ },
40
+ "platform.linking-platform.link-picker.lazy-intl-messages": {
41
+ "type": "boolean"
39
42
  }
40
43
  },
41
44
  "scripts": {