@atlaskit/emoji 67.0.4 → 67.0.6

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 (279) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/admin.js +0 -2
  3. package/dist/cjs/api/EmojiLoader.js +1 -8
  4. package/dist/cjs/api/EmojiRepository.js +16 -80
  5. package/dist/cjs/api/EmojiRepositoryRegex.js +2 -0
  6. package/dist/cjs/api/EmojiResource.js +20 -170
  7. package/dist/cjs/api/EmojiUtils.js +27 -67
  8. package/dist/cjs/api/internal/Comparators.js +8 -62
  9. package/dist/cjs/api/internal/UsageFrequencyTracker.js +4 -34
  10. package/dist/cjs/api/media/MediaEmojiCache.js +8 -58
  11. package/dist/cjs/api/media/MediaImageLoader.js +4 -28
  12. package/dist/cjs/api/media/SiteEmojiResource.js +14 -55
  13. package/dist/cjs/api/media/TokenManager.js +4 -18
  14. package/dist/cjs/components/common/CachingEmoji.js +18 -52
  15. package/dist/cjs/components/common/DeleteButton.js +0 -10
  16. package/dist/cjs/components/common/Emoji.js +44 -102
  17. package/dist/cjs/components/common/EmojiActions.js +25 -61
  18. package/dist/cjs/components/common/EmojiButton.js +5 -18
  19. package/dist/cjs/components/common/EmojiDeletePreview.js +7 -38
  20. package/dist/cjs/components/common/EmojiErrorMessage.js +3 -9
  21. package/dist/cjs/components/common/EmojiPlaceholder.js +7 -16
  22. package/dist/cjs/components/common/EmojiPreviewComponent.js +1 -6
  23. package/dist/cjs/components/common/EmojiUploadPicker.js +31 -86
  24. package/dist/cjs/components/common/EmojiUploadPreview.js +7 -36
  25. package/dist/cjs/components/common/FileChooser.js +5 -18
  26. package/dist/cjs/components/common/LoadingEmojiComponent.js +5 -24
  27. package/dist/cjs/components/common/Popup.js +16 -44
  28. package/dist/cjs/components/common/RecordSelectionDefault.js +0 -7
  29. package/dist/cjs/components/common/ResourcedEmoji.js +0 -15
  30. package/dist/cjs/components/common/ResourcedEmojiComponent.js +29 -69
  31. package/dist/cjs/components/common/RetryableButton.js +4 -19
  32. package/dist/cjs/components/common/Scrollable.js +6 -36
  33. package/dist/cjs/components/common/ToneSelector.js +3 -24
  34. package/dist/cjs/components/common/UfoErrorBoundary.js +1 -19
  35. package/dist/cjs/components/common/UploadEmoji.js +2 -13
  36. package/dist/cjs/components/common/internal-types.js +0 -1
  37. package/dist/cjs/components/common/setSkinToneAriaLabelText.js +0 -6
  38. package/dist/cjs/components/common/styles.js +9 -17
  39. package/dist/cjs/components/hooks.js +0 -2
  40. package/dist/cjs/components/i18n.js +0 -2
  41. package/dist/cjs/components/picker/CategorySelector.js +4 -50
  42. package/dist/cjs/components/picker/CategoryTracker.js +3 -14
  43. package/dist/cjs/components/picker/EmojiPicker.js +3 -42
  44. package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +2 -10
  45. package/dist/cjs/components/picker/EmojiPickerComponent.js +59 -140
  46. package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +7 -14
  47. package/dist/cjs/components/picker/EmojiPickerFooter.js +1 -8
  48. package/dist/cjs/components/picker/EmojiPickerList.js +32 -83
  49. package/dist/cjs/components/picker/EmojiPickerListSearch.js +11 -48
  50. package/dist/cjs/components/picker/EmojiPickerSizes.js +1 -2
  51. package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +1 -38
  52. package/dist/cjs/components/picker/VirtualList.js +11 -41
  53. package/dist/cjs/components/picker/categories.js +0 -14
  54. package/dist/cjs/components/picker/styles.js +15 -20
  55. package/dist/cjs/components/picker/utils.js +0 -4
  56. package/dist/cjs/components/typeahead/EmojiTypeAhead.js +10 -45
  57. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +11 -74
  58. package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +7 -37
  59. package/dist/cjs/components/typeahead/EmojiTypeAheadList.js +10 -63
  60. package/dist/cjs/components/typeahead/styles.js +2 -4
  61. package/dist/cjs/components/uploader/EmojiUploadComponent.js +6 -42
  62. package/dist/cjs/components/uploader/EmojiUploader.js +3 -31
  63. package/dist/cjs/components/uploader/styles.js +3 -4
  64. package/dist/cjs/context/EmojiCommonProvider.js +0 -6
  65. package/dist/cjs/context/EmojiContext.js +0 -2
  66. package/dist/cjs/context/EmojiContextProvider.js +1 -17
  67. package/dist/cjs/element.js +0 -4
  68. package/dist/cjs/hooks/useEmoji.js +5 -20
  69. package/dist/cjs/hooks/useEmojiContext.js +0 -4
  70. package/dist/cjs/hooks/usePrevious.js +0 -2
  71. package/dist/cjs/i18n/cs.js +0 -1
  72. package/dist/cjs/i18n/da.js +0 -1
  73. package/dist/cjs/i18n/de.js +0 -1
  74. package/dist/cjs/i18n/en.js +0 -1
  75. package/dist/cjs/i18n/en_GB.js +0 -1
  76. package/dist/cjs/i18n/en_ZZ.js +0 -1
  77. package/dist/cjs/i18n/es.js +0 -1
  78. package/dist/cjs/i18n/et.js +0 -1
  79. package/dist/cjs/i18n/fi.js +0 -1
  80. package/dist/cjs/i18n/fr.js +0 -1
  81. package/dist/cjs/i18n/hu.js +0 -1
  82. package/dist/cjs/i18n/index.js +0 -30
  83. package/dist/cjs/i18n/it.js +0 -1
  84. package/dist/cjs/i18n/ja.js +0 -1
  85. package/dist/cjs/i18n/ko.js +0 -1
  86. package/dist/cjs/i18n/nb.js +0 -1
  87. package/dist/cjs/i18n/nl.js +0 -1
  88. package/dist/cjs/i18n/pl.js +0 -1
  89. package/dist/cjs/i18n/pt_BR.js +0 -1
  90. package/dist/cjs/i18n/pt_PT.js +0 -1
  91. package/dist/cjs/i18n/ru.js +0 -1
  92. package/dist/cjs/i18n/sk.js +0 -1
  93. package/dist/cjs/i18n/sv.js +0 -1
  94. package/dist/cjs/i18n/th.js +0 -1
  95. package/dist/cjs/i18n/tr.js +0 -1
  96. package/dist/cjs/i18n/uk.js +0 -1
  97. package/dist/cjs/i18n/vi.js +0 -1
  98. package/dist/cjs/i18n/zh.js +0 -1
  99. package/dist/cjs/i18n/zh_TW.js +0 -1
  100. package/dist/cjs/index.js +0 -24
  101. package/dist/cjs/picker.js +0 -2
  102. package/dist/cjs/resource.js +0 -5
  103. package/dist/cjs/typeahead.js +0 -3
  104. package/dist/cjs/types.js +0 -17
  105. package/dist/cjs/util/DuplicateLimitedQueue.js +13 -31
  106. package/dist/cjs/util/StoredDuplicateLimitedQueue.js +4 -26
  107. package/dist/cjs/util/analytics/analytics.js +14 -97
  108. package/dist/cjs/util/analytics/index.js +0 -4
  109. package/dist/cjs/util/analytics/samplingUfo.js +3 -59
  110. package/dist/cjs/util/analytics/ufoExperiences.js +0 -12
  111. package/dist/cjs/util/analytics/useSampledUFOComponentExperience.js +3 -10
  112. package/dist/cjs/util/constants.js +5 -5
  113. package/dist/cjs/util/filters.js +0 -4
  114. package/dist/cjs/util/image.js +3 -18
  115. package/dist/cjs/util/logger.js +0 -6
  116. package/dist/cjs/util/mouse.js +3 -6
  117. package/dist/cjs/util/shared-styles.js +0 -4
  118. package/dist/cjs/util/storage-available.js +10 -8
  119. package/dist/cjs/util/type-helpers.js +2 -57
  120. package/dist/cjs/util/useInView.js +0 -6
  121. package/dist/cjs/utils.js +0 -3
  122. package/dist/cjs/version.json +1 -1
  123. package/dist/es2019/api/EmojiLoader.js +2 -4
  124. package/dist/es2019/api/EmojiRepository.js +15 -82
  125. package/dist/es2019/api/EmojiRepositoryRegex.js +2 -0
  126. package/dist/es2019/api/EmojiResource.js +21 -114
  127. package/dist/es2019/api/EmojiUtils.js +11 -18
  128. package/dist/es2019/api/internal/Comparators.js +12 -48
  129. package/dist/es2019/api/internal/UsageFrequencyTracker.js +7 -24
  130. package/dist/es2019/api/media/MediaEmojiCache.js +9 -52
  131. package/dist/es2019/api/media/MediaImageLoader.js +2 -16
  132. package/dist/es2019/api/media/SiteEmojiResource.js +11 -31
  133. package/dist/es2019/api/media/TokenManager.js +4 -14
  134. package/dist/es2019/components/common/CachingEmoji.js +5 -12
  135. package/dist/es2019/components/common/DeleteButton.js +2 -3
  136. package/dist/es2019/components/common/Emoji.js +19 -47
  137. package/dist/es2019/components/common/EmojiActions.js +3 -16
  138. package/dist/es2019/components/common/EmojiButton.js +0 -5
  139. package/dist/es2019/components/common/EmojiDeletePreview.js +0 -11
  140. package/dist/es2019/components/common/EmojiErrorMessage.js +1 -2
  141. package/dist/es2019/components/common/EmojiPlaceholder.js +0 -5
  142. package/dist/es2019/components/common/EmojiPreviewComponent.js +1 -0
  143. package/dist/es2019/components/common/EmojiUploadPicker.js +2 -25
  144. package/dist/es2019/components/common/EmojiUploadPreview.js +0 -6
  145. package/dist/es2019/components/common/FileChooser.js +0 -6
  146. package/dist/es2019/components/common/LoadingEmojiComponent.js +2 -14
  147. package/dist/es2019/components/common/Popup.js +4 -22
  148. package/dist/es2019/components/common/RecordSelectionDefault.js +1 -1
  149. package/dist/es2019/components/common/ResourcedEmoji.js +1 -6
  150. package/dist/es2019/components/common/ResourcedEmojiComponent.js +2 -13
  151. package/dist/es2019/components/common/RetryableButton.js +1 -8
  152. package/dist/es2019/components/common/Scrollable.js +2 -12
  153. package/dist/es2019/components/common/ToneSelector.js +2 -8
  154. package/dist/es2019/components/common/UfoErrorBoundary.js +0 -2
  155. package/dist/es2019/components/common/UploadEmoji.js +2 -3
  156. package/dist/es2019/components/common/internal-types.js +0 -1
  157. package/dist/es2019/components/common/styles.js +12 -8
  158. package/dist/es2019/components/picker/CategorySelector.js +0 -22
  159. package/dist/es2019/components/picker/CategoryTracker.js +3 -13
  160. package/dist/es2019/components/picker/EmojiPicker.js +3 -17
  161. package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +2 -3
  162. package/dist/es2019/components/picker/EmojiPickerComponent.js +10 -43
  163. package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +0 -2
  164. package/dist/es2019/components/picker/EmojiPickerFooter.js +0 -2
  165. package/dist/es2019/components/picker/EmojiPickerList.js +10 -45
  166. package/dist/es2019/components/picker/EmojiPickerListSearch.js +2 -19
  167. package/dist/es2019/components/picker/EmojiPickerSizes.js +1 -0
  168. package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +1 -8
  169. package/dist/es2019/components/picker/VirtualList.js +3 -24
  170. package/dist/es2019/components/picker/styles.js +22 -10
  171. package/dist/es2019/components/picker/utils.js +0 -1
  172. package/dist/es2019/components/typeahead/EmojiTypeAhead.js +4 -21
  173. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +0 -42
  174. package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +0 -7
  175. package/dist/es2019/components/typeahead/EmojiTypeAheadList.js +4 -45
  176. package/dist/es2019/components/typeahead/styles.js +2 -1
  177. package/dist/es2019/components/uploader/EmojiUploadComponent.js +2 -15
  178. package/dist/es2019/components/uploader/EmojiUploader.js +2 -10
  179. package/dist/es2019/components/uploader/styles.js +5 -2
  180. package/dist/es2019/context/EmojiCommonProvider.js +0 -2
  181. package/dist/es2019/context/EmojiContextProvider.js +0 -1
  182. package/dist/es2019/hooks/useEmoji.js +2 -6
  183. package/dist/es2019/hooks/useEmojiContext.js +1 -1
  184. package/dist/es2019/index.js +12 -6
  185. package/dist/es2019/types.js +1 -11
  186. package/dist/es2019/util/DuplicateLimitedQueue.js +13 -35
  187. package/dist/es2019/util/StoredDuplicateLimitedQueue.js +5 -12
  188. package/dist/es2019/util/analytics/analytics.js +7 -23
  189. package/dist/es2019/util/analytics/samplingUfo.js +6 -32
  190. package/dist/es2019/util/analytics/ufoExperiences.js +0 -3
  191. package/dist/es2019/util/analytics/useSampledUFOComponentExperience.js +3 -7
  192. package/dist/es2019/util/constants.js +5 -4
  193. package/dist/es2019/util/filters.js +0 -3
  194. package/dist/es2019/util/image.js +3 -8
  195. package/dist/es2019/util/mouse.js +3 -3
  196. package/dist/es2019/util/storage-available.js +10 -7
  197. package/dist/es2019/util/type-helpers.js +6 -9
  198. package/dist/es2019/util/useInView.js +0 -2
  199. package/dist/es2019/version.json +1 -1
  200. package/dist/esm/api/EmojiLoader.js +2 -6
  201. package/dist/esm/api/EmojiRepository.js +16 -71
  202. package/dist/esm/api/EmojiRepositoryRegex.js +2 -0
  203. package/dist/esm/api/EmojiResource.js +20 -158
  204. package/dist/esm/api/EmojiUtils.js +27 -47
  205. package/dist/esm/api/internal/Comparators.js +12 -53
  206. package/dist/esm/api/internal/UsageFrequencyTracker.js +5 -29
  207. package/dist/esm/api/media/MediaEmojiCache.js +9 -55
  208. package/dist/esm/api/media/MediaImageLoader.js +4 -27
  209. package/dist/esm/api/media/SiteEmojiResource.js +14 -43
  210. package/dist/esm/api/media/TokenManager.js +6 -16
  211. package/dist/esm/components/common/CachingEmoji.js +18 -30
  212. package/dist/esm/components/common/DeleteButton.js +2 -3
  213. package/dist/esm/components/common/Emoji.js +44 -78
  214. package/dist/esm/components/common/EmojiActions.js +25 -40
  215. package/dist/esm/components/common/EmojiButton.js +4 -9
  216. package/dist/esm/components/common/EmojiDeletePreview.js +7 -24
  217. package/dist/esm/components/common/EmojiErrorMessage.js +3 -4
  218. package/dist/esm/components/common/EmojiPlaceholder.js +6 -11
  219. package/dist/esm/components/common/EmojiPreviewComponent.js +1 -0
  220. package/dist/esm/components/common/EmojiUploadPicker.js +30 -64
  221. package/dist/esm/components/common/EmojiUploadPreview.js +7 -19
  222. package/dist/esm/components/common/FileChooser.js +5 -11
  223. package/dist/esm/components/common/LoadingEmojiComponent.js +4 -20
  224. package/dist/esm/components/common/Popup.js +16 -36
  225. package/dist/esm/components/common/RecordSelectionDefault.js +1 -1
  226. package/dist/esm/components/common/ResourcedEmoji.js +1 -6
  227. package/dist/esm/components/common/ResourcedEmojiComponent.js +29 -51
  228. package/dist/esm/components/common/RetryableButton.js +4 -11
  229. package/dist/esm/components/common/Scrollable.js +6 -29
  230. package/dist/esm/components/common/ToneSelector.js +3 -13
  231. package/dist/esm/components/common/UfoErrorBoundary.js +1 -13
  232. package/dist/esm/components/common/UploadEmoji.js +2 -3
  233. package/dist/esm/components/common/internal-types.js +0 -1
  234. package/dist/esm/components/common/setSkinToneAriaLabelText.js +0 -2
  235. package/dist/esm/components/common/styles.js +12 -9
  236. package/dist/esm/components/picker/CategorySelector.js +4 -32
  237. package/dist/esm/components/picker/CategoryTracker.js +3 -13
  238. package/dist/esm/components/picker/EmojiPicker.js +5 -27
  239. package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +4 -5
  240. package/dist/esm/components/picker/EmojiPickerComponent.js +60 -114
  241. package/dist/esm/components/picker/EmojiPickerEmojiRow.js +6 -8
  242. package/dist/esm/components/picker/EmojiPickerFooter.js +0 -2
  243. package/dist/esm/components/picker/EmojiPickerList.js +32 -77
  244. package/dist/esm/components/picker/EmojiPickerListSearch.js +11 -35
  245. package/dist/esm/components/picker/EmojiPickerSizes.js +1 -0
  246. package/dist/esm/components/picker/EmojiPickerVirtualItems.js +2 -26
  247. package/dist/esm/components/picker/VirtualList.js +11 -28
  248. package/dist/esm/components/picker/styles.js +22 -11
  249. package/dist/esm/components/picker/utils.js +0 -1
  250. package/dist/esm/components/typeahead/EmojiTypeAhead.js +11 -39
  251. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +11 -65
  252. package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +7 -24
  253. package/dist/esm/components/typeahead/EmojiTypeAheadList.js +10 -53
  254. package/dist/esm/components/typeahead/styles.js +2 -1
  255. package/dist/esm/components/uploader/EmojiUploadComponent.js +5 -25
  256. package/dist/esm/components/uploader/EmojiUploader.js +4 -22
  257. package/dist/esm/components/uploader/styles.js +5 -2
  258. package/dist/esm/context/EmojiCommonProvider.js +0 -2
  259. package/dist/esm/context/EmojiContextProvider.js +1 -6
  260. package/dist/esm/hooks/useEmoji.js +5 -13
  261. package/dist/esm/hooks/useEmojiContext.js +1 -1
  262. package/dist/esm/index.js +12 -6
  263. package/dist/esm/types.js +1 -11
  264. package/dist/esm/util/DuplicateLimitedQueue.js +13 -29
  265. package/dist/esm/util/StoredDuplicateLimitedQueue.js +5 -22
  266. package/dist/esm/util/analytics/analytics.js +14 -50
  267. package/dist/esm/util/analytics/samplingUfo.js +3 -51
  268. package/dist/esm/util/analytics/ufoExperiences.js +0 -3
  269. package/dist/esm/util/analytics/useSampledUFOComponentExperience.js +3 -7
  270. package/dist/esm/util/constants.js +5 -4
  271. package/dist/esm/util/filters.js +0 -3
  272. package/dist/esm/util/image.js +3 -8
  273. package/dist/esm/util/logger.js +0 -2
  274. package/dist/esm/util/mouse.js +3 -3
  275. package/dist/esm/util/storage-available.js +10 -7
  276. package/dist/esm/util/type-helpers.js +2 -12
  277. package/dist/esm/util/useInView.js +0 -2
  278. package/dist/esm/version.json +1 -1
  279. package/package.json +6 -4
@@ -1,35 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.withSampling = exports.ufoExperiencesSampled = exports.isExperienceSampled = exports.clearSampled = void 0;
9
-
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
11
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
-
18
12
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
-
20
13
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
21
-
22
14
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
-
24
15
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
25
-
26
16
  var ufoExperiencesSampled = {};
27
17
  exports.ufoExperiencesSampled = ufoExperiencesSampled;
28
-
29
18
  var clearSampled = function clearSampled() {
30
19
  var _iterator = _createForOfIteratorHelper(Object.getOwnPropertyNames(ufoExperiencesSampled)),
31
- _step;
32
-
20
+ _step;
33
21
  try {
34
22
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
35
23
  var prop = _step.value;
@@ -41,6 +29,7 @@ var clearSampled = function clearSampled() {
41
29
  _iterator.f();
42
30
  }
43
31
  };
32
+
44
33
  /**
45
34
  * A random sampling function
46
35
  * sampling algorithm is from @atlassian/jira-coinflip at https://stash.atlassian.com/projects/JIRACLOUD/repos/jira-frontend/browse/src/packages/platform/app-framework/coinflip/src/index.tsx
@@ -49,36 +38,28 @@ var clearSampled = function clearSampled() {
49
38
  * @returns bool, if it passes or not
50
39
  */
51
40
  // default sampling function to determine which one to be sampled
52
-
53
-
54
41
  exports.clearSampled = clearSampled;
55
-
56
42
  var isExperienceSampled = function isExperienceSampled(rate) {
57
43
  if (rate === 1) {
58
44
  return true;
59
45
  }
60
-
61
46
  if (rate === 0) {
62
47
  return false;
63
48
  }
64
-
65
49
  return Math.random() * rate <= 1;
66
50
  };
67
-
68
51
  exports.isExperienceSampled = isExperienceSampled;
69
-
70
52
  var hasSampledFromStart = function hasSampledFromStart(experience) {
71
53
  if (!ufoExperiencesSampled[experience.id]) {
72
54
  return false;
73
55
  }
74
-
75
56
  if (experience.instanceId) {
76
57
  // if the instance of concurrent exp has been sampled from start, allow it.
77
58
  return ufoExperiencesSampled[experience.id].sampledInstance[experience.instanceId];
78
59
  }
79
-
80
60
  return ufoExperiencesSampled[experience.id].sampled;
81
61
  };
62
+
82
63
  /**
83
64
  * This function is a temp solution to reduce the event traffic, as UFO package does not support it.
84
65
  *
@@ -86,8 +67,6 @@ var hasSampledFromStart = function hasSampledFromStart(experience) {
86
67
  * @param ufoExperience
87
68
  * @returns
88
69
  */
89
-
90
-
91
70
  var withSampling = function withSampling(ufoExperience) {
92
71
  var init = function init() {
93
72
  if (!ufoExperiencesSampled[ufoExperience.id]) {
@@ -97,7 +76,6 @@ var withSampling = function withSampling(ufoExperience) {
97
76
  };
98
77
  }
99
78
  };
100
-
101
79
  var start = /*#__PURE__*/function () {
102
80
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) {
103
81
  var isSampled;
@@ -109,33 +87,25 @@ var withSampling = function withSampling(ufoExperience) {
109
87
  _context.next = 2;
110
88
  break;
111
89
  }
112
-
113
90
  return _context.abrupt("return");
114
-
115
91
  case 2:
116
92
  isSampled = options.samplingFunc || isExperienceSampled;
117
-
118
93
  if (isSampled(options.samplingRate)) {
119
94
  _context.next = 7;
120
95
  break;
121
96
  }
122
-
123
97
  if (ufoExperience.instanceId) {
124
98
  ufoExperiencesSampled[ufoExperience.id].sampledInstance[ufoExperience.instanceId] = false;
125
99
  }
126
-
127
100
  ufoExperiencesSampled[ufoExperience.id].sampled = false;
128
101
  return _context.abrupt("return");
129
-
130
102
  case 7:
131
103
  // update sampled records
132
104
  if (ufoExperience.instanceId) {
133
105
  ufoExperiencesSampled[ufoExperience.id].sampledInstance[ufoExperience.instanceId] = true;
134
106
  ufoExperiencesSampled[ufoExperience.id].sampled = true;
135
107
  }
136
-
137
108
  return _context.abrupt("return", ufoExperience.start(options.startTime));
138
-
139
109
  case 9:
140
110
  case "end":
141
111
  return _context.stop();
@@ -143,12 +113,10 @@ var withSampling = function withSampling(ufoExperience) {
143
113
  }
144
114
  }, _callee);
145
115
  }));
146
-
147
116
  return function start(_x) {
148
117
  return _ref.apply(this, arguments);
149
118
  };
150
119
  }();
151
-
152
120
  var success = /*#__PURE__*/function () {
153
121
  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(config) {
154
122
  return _regenerator.default.wrap(function _callee2$(_context2) {
@@ -159,12 +127,9 @@ var withSampling = function withSampling(ufoExperience) {
159
127
  _context2.next = 2;
160
128
  break;
161
129
  }
162
-
163
130
  return _context2.abrupt("return", null);
164
-
165
131
  case 2:
166
132
  return _context2.abrupt("return", ufoExperience.success(config));
167
-
168
133
  case 3:
169
134
  case "end":
170
135
  return _context2.stop();
@@ -172,12 +137,10 @@ var withSampling = function withSampling(ufoExperience) {
172
137
  }
173
138
  }, _callee2);
174
139
  }));
175
-
176
140
  return function success(_x2) {
177
141
  return _ref2.apply(this, arguments);
178
142
  };
179
143
  }();
180
-
181
144
  var failure = /*#__PURE__*/function () {
182
145
  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(config) {
183
146
  return _regenerator.default.wrap(function _callee3$(_context3) {
@@ -188,12 +151,9 @@ var withSampling = function withSampling(ufoExperience) {
188
151
  _context3.next = 2;
189
152
  break;
190
153
  }
191
-
192
154
  return _context3.abrupt("return", null);
193
-
194
155
  case 2:
195
156
  return _context3.abrupt("return", ufoExperience.failure(config));
196
-
197
157
  case 3:
198
158
  case "end":
199
159
  return _context3.stop();
@@ -201,12 +161,10 @@ var withSampling = function withSampling(ufoExperience) {
201
161
  }
202
162
  }, _callee3);
203
163
  }));
204
-
205
164
  return function failure(_x3) {
206
165
  return _ref3.apply(this, arguments);
207
166
  };
208
167
  }();
209
-
210
168
  var abort = /*#__PURE__*/function () {
211
169
  var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(config) {
212
170
  return _regenerator.default.wrap(function _callee4$(_context4) {
@@ -217,12 +175,9 @@ var withSampling = function withSampling(ufoExperience) {
217
175
  _context4.next = 2;
218
176
  break;
219
177
  }
220
-
221
178
  return _context4.abrupt("return", null);
222
-
223
179
  case 2:
224
180
  return _context4.abrupt("return", ufoExperience.abort(config));
225
-
226
181
  case 3:
227
182
  case "end":
228
183
  return _context4.stop();
@@ -230,44 +185,34 @@ var withSampling = function withSampling(ufoExperience) {
230
185
  }
231
186
  }, _callee4);
232
187
  }));
233
-
234
188
  return function abort(_x4) {
235
189
  return _ref4.apply(this, arguments);
236
190
  };
237
191
  }();
238
-
239
192
  var addMetadata = function addMetadata(data) {
240
193
  if (!hasSampledFromStart(ufoExperience)) {
241
194
  return;
242
195
  }
243
-
244
196
  return ufoExperience.addMetadata(data);
245
197
  };
246
-
247
198
  var mark = function mark(name, timestamp) {
248
199
  if (!hasSampledFromStart(ufoExperience)) {
249
200
  return;
250
201
  }
251
-
252
202
  return ufoExperience.mark(name, timestamp);
253
203
  };
254
-
255
204
  var markFMP = function markFMP(timestamp) {
256
205
  if (!hasSampledFromStart(ufoExperience)) {
257
206
  return;
258
207
  }
259
-
260
208
  return ufoExperience.markFMP(timestamp);
261
209
  };
262
-
263
210
  var markInlineResponse = function markInlineResponse(timestamp) {
264
211
  if (!hasSampledFromStart(ufoExperience)) {
265
212
  return;
266
213
  }
267
-
268
214
  return ufoExperience.markInlineResponse(timestamp);
269
215
  };
270
-
271
216
  init();
272
217
  return _objectSpread(_objectSpread({}, ufoExperience), {}, {
273
218
  start: start,
@@ -280,5 +225,4 @@ var withSampling = function withSampling(ufoExperience) {
280
225
  markInlineResponse: markInlineResponse
281
226
  });
282
227
  };
283
-
284
228
  exports.withSampling = withSampling;
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ufoExperiences = exports.sampledUfoRenderedEmoji = exports.sampledUfoEmojiResourceFetched = exports.hasUfoMarked = void 0;
7
-
8
7
  var _types = require("../../types");
9
-
10
8
  var _ufo = require("@atlaskit/ufo");
11
-
12
9
  var _samplingUfo = require("./samplingUfo");
13
-
14
10
  var createRenderExperience = function createRenderExperience(componentName) {
15
11
  return {
16
12
  platform: {
@@ -20,7 +16,6 @@ var createRenderExperience = function createRenderExperience(componentName) {
20
16
  performanceType: _ufo.ExperiencePerformanceTypes.PageSegmentLoad
21
17
  };
22
18
  };
23
-
24
19
  var createInlineExperience = function createInlineExperience(componentName) {
25
20
  return {
26
21
  platform: {
@@ -30,7 +25,6 @@ var createInlineExperience = function createInlineExperience(componentName) {
30
25
  performanceType: _ufo.ExperiencePerformanceTypes.InlineResult
31
26
  };
32
27
  };
33
-
34
28
  var customEmojiTimings = [{
35
29
  key: _types.UfoEmojiTimingsKeys.FMP,
36
30
  endMark: _types.UfoEmojiTimings.FMP_END
@@ -69,23 +63,17 @@ var ufoExperiences = {
69
63
  'emoji-searched': new _ufo.UFOExperience(_types.UfoExperienceName.EMOJI_SEARCHED, createInlineExperience(_types.UfoComponentName.EMOJI_PICKER))
70
64
  };
71
65
  exports.ufoExperiences = ufoExperiences;
72
-
73
66
  var sampledUfoRenderedEmoji = function sampledUfoRenderedEmoji(emojiId) {
74
67
  return (0, _samplingUfo.withSampling)(ufoExperiences['emoji-rendered'].getInstance(emojiId.id || emojiId.shortName));
75
68
  };
76
-
77
69
  exports.sampledUfoRenderedEmoji = sampledUfoRenderedEmoji;
78
-
79
70
  var hasUfoMarked = function hasUfoMarked(ufoExperience, name) {
80
71
  return ufoExperience.metrics.marks.some(function (mask) {
81
72
  return mask.name === name;
82
73
  });
83
74
  };
84
-
85
75
  exports.hasUfoMarked = hasUfoMarked;
86
-
87
76
  var sampledUfoEmojiResourceFetched = function sampledUfoEmojiResourceFetched(providerType) {
88
77
  return (0, _samplingUfo.withSampling)(ufoExperiences['emoji-resource-fetched'].getInstance(providerType));
89
78
  };
90
-
91
79
  exports.sampledUfoEmojiResourceFetched = sampledUfoEmojiResourceFetched;
@@ -4,34 +4,29 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useSampledUFOComponentExperience = void 0;
7
-
8
7
  var _react = require("react");
9
-
10
8
  var _samplingUfo = require("./samplingUfo");
11
-
12
9
  var useConstructor = function useConstructor(callback) {
13
10
  var hasBeenFired = (0, _react.useRef)(false);
14
-
15
11
  if (!hasBeenFired.current) {
16
12
  callback();
17
13
  hasBeenFired.current = true;
18
14
  }
19
-
20
15
  return null;
21
16
  };
17
+
22
18
  /**
23
19
  * A hook to start an experience and to auto abort the experience when the parent component is unmounted.
24
20
  * Use this instead of a direct call to `experience.start`. If you need to restart the experience
25
21
  * simply trigger an unmount and remount of the parent component.
26
22
  * @param experience the experience to start and abort
27
23
  */
28
-
29
-
30
24
  var useSampledUFOComponentExperience = function useSampledUFOComponentExperience(experience, samplingRate, metadata) {
31
25
  (0, _react.useEffect)(function () {
32
26
  return function () {
33
27
  (0, _samplingUfo.withSampling)(experience).abort();
34
- }; // we want this cleanup to only happen on unmount so this is a legit use of empty array
28
+ };
29
+ // we want this cleanup to only happen on unmount so this is a legit use of empty array
35
30
  // eslint-disable-next-line react-hooks/exhaustive-deps
36
31
  }, []);
37
32
  useConstructor(function () {
@@ -39,12 +34,10 @@ var useSampledUFOComponentExperience = function useSampledUFOComponentExperience
39
34
  samplingRate: samplingRate
40
35
  });
41
36
  var isMetadataEmpty = Object.keys(experience.metadata).length === 0;
42
-
43
37
  if (metadata && isMetadataEmpty) {
44
38
  experience.addMetadata(metadata);
45
39
  }
46
40
  });
47
41
  return null;
48
42
  };
49
-
50
43
  exports.useSampledUFOComponentExperience = useSampledUFOComponentExperience;
@@ -17,11 +17,11 @@ exports.userCustomTitle = userCustomTitle;
17
17
  var dataURLPrefix = 'data:';
18
18
  exports.dataURLPrefix = dataURLPrefix;
19
19
  var deleteEmojiLabel = 'delete-emoji';
20
+
20
21
  /**
21
22
  * A constant used in sorting/ordering to represent a number 'obviously much bigger than any item in the set being handled'.
22
23
  * This is used instead of Number.MAX_VALUE since subtraction of MAX_VALUE from itself occassionaly doesn't equal zero exactly :-(
23
24
  */
24
-
25
25
  exports.deleteEmojiLabel = deleteEmojiLabel;
26
26
  var MAX_ORDINAL = 100000;
27
27
  exports.MAX_ORDINAL = MAX_ORDINAL;
@@ -38,7 +38,6 @@ exports.emojiPickerMinHeight = emojiPickerMinHeight;
38
38
  var emojiPickerHeight = 295;
39
39
  exports.emojiPickerHeight = emojiPickerHeight;
40
40
  var emojiPickerListHeight = emojiPickerHeight - 58; // picker height - actions height
41
-
42
41
  exports.emojiPickerListHeight = emojiPickerListHeight;
43
42
  var emojiPickerPreviewHeight = 54;
44
43
  exports.emojiPickerPreviewHeight = emojiPickerPreviewHeight;
@@ -54,11 +53,12 @@ var defaultListLimit = 50;
54
53
  exports.defaultListLimit = defaultListLimit;
55
54
  var migrationUserId = 'hipchat_migration_emoticons';
56
55
  exports.migrationUserId = migrationUserId;
57
- var analyticsEmojiPrefix = 'atlassian.fabric.emoji.picker'; // This is the base sampling rate in Emoji
56
+ var analyticsEmojiPrefix = 'atlassian.fabric.emoji.picker';
58
57
 
58
+ // This is the base sampling rate in Emoji
59
59
  exports.analyticsEmojiPrefix = analyticsEmojiPrefix;
60
- var SAMPLING_RATE_EMOJI_RENDERED_EXP = 20; // This rate is used in fetching emoji resource
61
-
60
+ var SAMPLING_RATE_EMOJI_RENDERED_EXP = 20;
61
+ // This rate is used in fetching emoji resource
62
62
  exports.SAMPLING_RATE_EMOJI_RENDERED_EXP = SAMPLING_RATE_EMOJI_RENDERED_EXP;
63
63
  var SAMPLING_RATE_EMOJI_RESOURCE_FETCHED_EXP = 100;
64
64
  exports.SAMPLING_RATE_EMOJI_RESOURCE_FETCHED_EXP = SAMPLING_RATE_EMOJI_RESOURCE_FETCHED_EXP;
@@ -5,21 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getToneEmoji = exports.default = void 0;
7
7
  var toneEmojiShortName = ':raised_hand:';
8
-
9
8
  var byShortName = function byShortName(emojis, shortName) {
10
9
  return emojis.filter(function (emoji) {
11
10
  return emoji.shortName === shortName;
12
11
  })[0];
13
12
  };
14
-
15
13
  var toneEmoji = function toneEmoji(emojis) {
16
14
  return byShortName(emojis, toneEmojiShortName);
17
15
  };
18
-
19
16
  var getToneEmoji = function getToneEmoji(provider) {
20
17
  return provider.findByShortName(toneEmojiShortName);
21
18
  };
22
-
23
19
  exports.getToneEmoji = getToneEmoji;
24
20
  var _default = {
25
21
  byShortName: byShortName,
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.parseImage = exports.imageAcceptHeader = exports.hasFileExceededSize = exports.getNaturalImageSize = exports.checkWebpSupport = void 0;
7
7
  var maxEmojiSizeInBytes = 1048576;
8
-
9
8
  var getNaturalImageSize = function getNaturalImageSize(dataURL) {
10
9
  return new Promise(function (resolve, reject) {
11
10
  var img = new Image();
@@ -19,32 +18,27 @@ var getNaturalImageSize = function getNaturalImageSize(dataURL) {
19
18
  img.src = dataURL;
20
19
  });
21
20
  };
22
-
23
21
  exports.getNaturalImageSize = getNaturalImageSize;
24
-
25
22
  var parseImage = function parseImage(dataURL) {
26
23
  return new Promise(function (resolve, reject) {
27
24
  var img = new Image();
28
-
29
25
  img.onload = function () {
30
26
  return resolve({
31
27
  src: img.src
32
28
  });
33
29
  };
34
-
35
30
  img.onerror = function () {
36
31
  return reject();
37
32
  };
38
-
39
33
  img.src = dataURL;
40
34
  });
41
35
  };
42
-
43
36
  exports.parseImage = parseImage;
44
-
45
37
  var hasFileExceededSize = function hasFileExceededSize(file) {
46
38
  return file && file.size > maxEmojiSizeInBytes;
47
- }; // Duplicates https://bitbucket.org/atlassian/atlaskit/src/0e843df6df8bcd33fa7fc16cc63f11a0f6094957/packages/media-core/src/utils/checkWebpSupport.ts?at=master&fileviewer=file-view-default
39
+ };
40
+
41
+ // Duplicates https://bitbucket.org/atlassian/atlaskit/src/0e843df6df8bcd33fa7fc16cc63f11a0f6094957/packages/media-core/src/utils/checkWebpSupport.ts?at=master&fileviewer=file-view-default
48
42
  // Didn't want to depend on the whole of media-core just for this util
49
43
 
50
44
  /**
@@ -52,32 +46,24 @@ var hasFileExceededSize = function hasFileExceededSize(file) {
52
46
  * We know that creating a new image in memory and checking its height,
53
47
  * later on we cache this value forever.
54
48
  */
55
-
56
-
57
49
  exports.hasFileExceededSize = hasFileExceededSize;
58
50
  var isWebpSupported;
59
-
60
51
  var checkWebpSupport = function checkWebpSupport() {
61
52
  if (isWebpSupported !== undefined) {
62
53
  return Promise.resolve(isWebpSupported);
63
54
  }
64
-
65
55
  return new Promise(function (resolve) {
66
56
  var img = new Image();
67
-
68
57
  var checkSupport = function checkSupport() {
69
58
  isWebpSupported = img.height === 2;
70
59
  resolve(isWebpSupported);
71
60
  };
72
-
73
61
  img.addEventListener('load', checkSupport);
74
62
  img.addEventListener('error', checkSupport);
75
63
  img.src = 'data:image/webp;base64,UklGRi4AAABXRUJQVlA4TCEAAAAvAUAAEB8wAiMwAgSSNtse/cXjxyCCmrYNWPwmHRH9jwMA';
76
64
  });
77
65
  };
78
-
79
66
  exports.checkWebpSupport = checkWebpSupport;
80
-
81
67
  var imageAcceptHeader = function imageAcceptHeader() {
82
68
  return checkWebpSupport().then(function (isWebpSupported) {
83
69
  // q=0.8 stands for 'quality factor' => http://stackoverflow.com/a/10496722
@@ -86,5 +72,4 @@ var imageAcceptHeader = function imageAcceptHeader() {
86
72
  return isWebpSupported ? webpAcceptHeader : noWebpAcceptHeader;
87
73
  });
88
74
  };
89
-
90
75
  exports.imageAcceptHeader = imageAcceptHeader;
@@ -9,30 +9,24 @@ exports.enableStacktraces = enableStacktraces;
9
9
  exports.logStacktrace = logStacktrace;
10
10
  var debugEnabled = false;
11
11
  var stacktracesEnabled = false;
12
-
13
12
  function enableLogger(enable) {
14
13
  debugEnabled = enable;
15
14
  }
16
-
17
15
  function enableStacktraces(enable) {
18
16
  stacktracesEnabled = enable;
19
17
  }
20
-
21
18
  function logStacktrace() {
22
19
  if (stacktracesEnabled) {
23
20
  // eslint-disable-next-line no-console
24
21
  console.log(new Error().stack);
25
22
  }
26
23
  }
27
-
28
24
  function debug(msg) {
29
25
  if (debugEnabled) {
30
26
  var _console;
31
-
32
27
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
33
28
  args[_key - 1] = arguments[_key];
34
29
  }
35
-
36
30
  // eslint-disable-next-line no-console
37
31
  (_console = console).log.apply(_console, [msg].concat(args));
38
32
  }
@@ -6,24 +6,21 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.actualMouseMove = actualMouseMove;
7
7
  exports.leftClick = leftClick;
8
8
  exports.mouseLocation = mouseLocation;
9
-
10
9
  function mouseLocation(event) {
11
10
  return {
12
11
  x: event.clientX,
13
12
  y: event.clientY
14
13
  };
15
- } // Used to prevent invalid mouse move detection on scroll
16
- // lastPosition is object (x, y)
17
-
14
+ }
18
15
 
16
+ // Used to prevent invalid mouse move detection on scroll
17
+ // lastPosition is object (x, y)
19
18
  function actualMouseMove(oldPosition, newPosition) {
20
19
  if (!oldPosition || oldPosition.x !== newPosition.x || oldPosition.y !== newPosition.y) {
21
20
  return true;
22
21
  }
23
-
24
22
  return false;
25
23
  }
26
-
27
24
  function leftClick(reactEvent) {
28
25
  return reactEvent.button === 0 && !reactEvent.altKey && !reactEvent.ctrlKey && !reactEvent.metaKey && !reactEvent.shiftKey;
29
26
  }
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.noDialogContainerBoxShadow = exports.noDialogContainerBorderRadius = exports.noDialogContainerBorderColor = exports.emojiTypeAheadWidth = exports.emojiTypeAheadMaxHeight = exports.emojiPreviewSelectedColor = exports.emojiPickerListWidth = exports.emojiPickerListHeight = exports.emojiPickerBoxShadow = exports.emojiPickerBorderColor = exports.akEmojiSelectedBackgroundColor = void 0;
7
-
8
7
  var _constants = require("@atlaskit/theme/constants");
9
-
10
8
  var _colors = require("@atlaskit/theme/colors");
11
-
12
9
  var _constants2 = require("./constants");
13
-
14
10
  var emojiPickerListWidth = _constants2.emojiPickerWidth;
15
11
  exports.emojiPickerListWidth = emojiPickerListWidth;
16
12
  var emojiPickerListHeight = 205;
@@ -4,16 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = storageAvailable;
7
-
8
7
  // Copied from https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#feature-detecting_localstorage
9
8
  // a brief history of local storage - https://gist.github.com/paulirish/5558557
10
9
  function storageAvailable(type) {
11
10
  if (typeof window === 'undefined') {
12
11
  return false;
13
12
  }
14
-
15
13
  var storage;
16
-
17
14
  try {
18
15
  storage = window[type];
19
16
  var x = '__storage_test__';
@@ -21,12 +18,17 @@ function storageAvailable(type) {
21
18
  storage.removeItem(x);
22
19
  return true;
23
20
  } catch (e) {
24
- return e instanceof DOMException && ( // everything except Firefox
25
- e.code === 22 || // Firefox
26
- e.code === 1014 || // test name field too, because code might not be present
21
+ return e instanceof DOMException && (
22
+ // everything except Firefox
23
+ e.code === 22 ||
24
+ // Firefox
25
+ e.code === 1014 ||
26
+ // test name field too, because code might not be present
27
27
  // everything except Firefox
28
- e.name === 'QuotaExceededError' || // Firefox
29
- e.name === 'NS_ERROR_DOM_QUOTA_REACHED') && // acknowledge QuotaExceededError only if there's something already stored
28
+ e.name === 'QuotaExceededError' ||
29
+ // Firefox
30
+ e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
31
+ // acknowledge QuotaExceededError only if there's something already stored
30
32
  storage && storage.length !== 0;
31
33
  }
32
34
  }