decap-cms-core 3.8.1 → 3.10.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 (37) hide show
  1. package/dist/decap-cms-core.js +23 -23
  2. package/dist/decap-cms-core.js.LICENSE.txt +10 -0
  3. package/dist/decap-cms-core.js.map +1 -1
  4. package/dist/esm/actions/config.js +19 -0
  5. package/dist/esm/actions/entries.js +10 -1
  6. package/dist/esm/bootstrap.js +2 -2
  7. package/dist/esm/components/App/StatusBar.js +41 -0
  8. package/dist/esm/components/Collection/Entries/Pagination.js +132 -0
  9. package/dist/esm/components/Editor/EditorNotesPane/AddNoteForm.js +111 -0
  10. package/dist/esm/components/Editor/EditorNotesPane/EditorNotesPane.js +138 -0
  11. package/dist/esm/components/Editor/EditorNotesPane/NoteItem.js +247 -0
  12. package/dist/esm/components/Editor/EditorNotesPane/NotesList.js +54 -0
  13. package/dist/esm/components/UI/ErrorBoundary.js +6 -9
  14. package/dist/esm/constants/configSchema.js +41 -23
  15. package/dist/esm/lib/entryCache.js +145 -0
  16. package/dist/esm/lib/entryHelpers.js +102 -0
  17. package/dist/esm/lib/formatters.js +2 -1
  18. package/dist/esm/lib/immutableHelpers.js +21 -0
  19. package/dist/esm/lib/indexFileHelper.js +36 -0
  20. package/dist/esm/lib/pagination.js +68 -0
  21. package/dist/esm/reducers/collections.js +54 -5
  22. package/dist/esm/reducers/entries.js +9 -4
  23. package/index.d.ts +10 -2
  24. package/package.json +2 -3
  25. package/src/actions/__tests__/config.spec.js +4 -4
  26. package/src/actions/config.ts +22 -0
  27. package/src/actions/entries.ts +11 -1
  28. package/src/components/UI/ErrorBoundary.js +1 -2
  29. package/src/constants/__tests__/configSchema.spec.js +84 -0
  30. package/src/constants/configSchema.js +34 -1
  31. package/src/lib/__tests__/formatters.spec.js +30 -2
  32. package/src/lib/formatters.ts +6 -1
  33. package/src/reducers/__tests__/collections.spec.js +39 -0
  34. package/src/reducers/__tests__/entries.spec.js +3 -3
  35. package/src/reducers/collections.ts +52 -5
  36. package/src/reducers/entries.ts +13 -5
  37. package/src/types/redux.ts +11 -3
@@ -0,0 +1,54 @@
1
+ import _styled from "@emotion/styled/base";
2
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
3
+ import PropTypes from 'prop-types';
4
+ import React from 'react';
5
+ import ImmutablePropTypes from 'react-immutable-proptypes';
6
+ import NoteItem from './NoteItem';
7
+ import { jsx as ___EmotionJSX } from "@emotion/react";
8
+ const ListContainer = /*#__PURE__*/_styled("div", {
9
+ target: "etcnkr60",
10
+ label: "ListContainer"
11
+ })(process.env.NODE_ENV === "production" ? {
12
+ name: "1cs7bse",
13
+ styles: "flex:1;overflow-y:auto;padding:8px"
14
+ } : {
15
+ name: "1cs7bse",
16
+ styles: "flex:1;overflow-y:auto;padding:8px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0VkaXRvci9FZGl0b3JOb3Rlc1BhbmUvTm90ZXNMaXN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9nQyIsImZpbGUiOiIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9FZGl0b3IvRWRpdG9yTm90ZXNQYW5lL05vdGVzTGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEltbXV0YWJsZVByb3BUeXBlcyBmcm9tICdyZWFjdC1pbW11dGFibGUtcHJvcHR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IE5vdGVJdGVtIGZyb20gJy4vTm90ZUl0ZW0nO1xuXG5jb25zdCBMaXN0Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogOHB4O1xuYDtcblxuZnVuY3Rpb24gTm90ZXNMaXN0KHsgbm90ZXMsIG9uVXBkYXRlLCBvbkRlbGV0ZSwgb25Ub2dnbGVSZXNvbHV0aW9uLCB1c2VyLCB0IH0pIHtcbiAgLy8gU29ydCBub3RlczogdW5yZXNvbHZlZCBmaXJzdCwgdGhlbiBieSBuZXdlc3RcbiAgY29uc3Qgc29ydGVkTm90ZXMgPSBub3Rlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgLy8gRmlyc3Qgc29ydCBieSByZXNvbHZlZCBzdGF0dXMgKHVucmVzb2x2ZWQgZmlyc3QpXG4gICAgaWYgKGEuZ2V0KCdyZXNvbHZlZCcpICE9PSBiLmdldCgncmVzb2x2ZWQnKSkge1xuICAgICAgcmV0dXJuIGEuZ2V0KCdyZXNvbHZlZCcpID8gMSA6IC0xO1xuICAgIH1cbiAgICAvLyBUaGVuIHNvcnQgYnkgdGltZXN0YW1wIChuZXdlc3QgZmlyc3QpXG4gICAgcmV0dXJuIG5ldyBEYXRlKGIuZ2V0KCd0aW1lc3RhbXAnKSkgLSBuZXcgRGF0ZShhLmdldCgndGltZXN0YW1wJykpO1xuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxMaXN0Q29udGFpbmVyPlxuICAgICAge3NvcnRlZE5vdGVzLm1hcChub3RlID0+IChcbiAgICAgICAgPE5vdGVJdGVtXG4gICAgICAgICAga2V5PXtub3RlLmdldCgnaWQnKX1cbiAgICAgICAgICBub3RlPXtub3RlfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgb25Ub2dnbGVSZXNvbHV0aW9uPXtvblRvZ2dsZVJlc29sdXRpb259XG4gICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICB0PXt0fVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC9MaXN0Q29udGFpbmVyPlxuICApO1xufVxuXG5Ob3Rlc0xpc3QucHJvcFR5cGVzID0ge1xuICBub3RlczogSW1tdXRhYmxlUHJvcFR5cGVzLmxpc3QuaXNSZXF1aXJlZCxcbiAgb25VcGRhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVsZXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvblRvZ2dsZVJlc29sdXRpb246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBOb3Rlc0xpc3Q7XG4iXX0= */",
17
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
18
+ });
19
+ function NotesList({
20
+ notes,
21
+ onUpdate,
22
+ onDelete,
23
+ onToggleResolution,
24
+ user,
25
+ t
26
+ }) {
27
+ // Sort notes: unresolved first, then by newest
28
+ const sortedNotes = notes.sort((a, b) => {
29
+ // First sort by resolved status (unresolved first)
30
+ if (a.get('resolved') !== b.get('resolved')) {
31
+ return a.get('resolved') ? 1 : -1;
32
+ }
33
+ // Then sort by timestamp (newest first)
34
+ return new Date(b.get('timestamp')) - new Date(a.get('timestamp'));
35
+ });
36
+ return ___EmotionJSX(ListContainer, null, sortedNotes.map(note => ___EmotionJSX(NoteItem, {
37
+ key: note.get('id'),
38
+ note: note,
39
+ onUpdate: onUpdate,
40
+ onDelete: onDelete,
41
+ onToggleResolution: onToggleResolution,
42
+ user: user,
43
+ t: t
44
+ })));
45
+ }
46
+ NotesList.propTypes = {
47
+ notes: ImmutablePropTypes.list.isRequired,
48
+ onUpdate: PropTypes.func.isRequired,
49
+ onDelete: PropTypes.func.isRequired,
50
+ onToggleResolution: PropTypes.func.isRequired,
51
+ user: PropTypes.object,
52
+ t: PropTypes.func.isRequired
53
+ };
54
+ export default NotesList;
@@ -7,7 +7,6 @@ import truncate from 'lodash/truncate';
7
7
  import copyToClipboard from 'copy-text-to-clipboard';
8
8
  import { localForage } from 'decap-cms-lib-util';
9
9
  import { buttons, colors } from 'decap-cms-ui-default';
10
- import cleanStack from 'clean-stack';
11
10
  import { jsx as ___EmotionJSX } from "@emotion/react";
12
11
  const ISSUE_URL = 'https://github.com/decaporg/decap-cms/issues/new?';
13
12
  function getIssueTemplate({
@@ -44,8 +43,8 @@ function buildIssueTemplate({
44
43
  let version = '';
45
44
  if (typeof DECAP_CMS_VERSION === 'string') {
46
45
  version = `decap-cms@${DECAP_CMS_VERSION}`;
47
- } else if (typeof "3.8.3" === 'string') {
48
- version = `decap-cms-app@${"3.8.3"}`;
46
+ } else if (typeof "3.10.0" === 'string') {
47
+ version = `decap-cms-app@${"3.10.0"}`;
49
48
  }
50
49
  const template = getIssueTemplate({
51
50
  version,
@@ -81,15 +80,15 @@ function buildIssueUrl({
81
80
  const ErrorBoundaryContainer = /*#__PURE__*/_styled("div", {
82
81
  target: "emw4gx72",
83
82
  label: "ErrorBoundaryContainer"
84
- })("padding:40px;h1{font-size:28px;color:", colors.text, ";}h2{font-size:20px;}strong{color:", colors.textLead, ";font-weight:500;}hr{width:200px;margin:30px 0;border:0;height:1px;background-color:", colors.text, ";}a{color:", colors.active, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL0Vycm9yQm91bmRhcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0V5QyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9FcnJvckJvdW5kYXJ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB0cnVuY2F0ZSBmcm9tICdsb2Rhc2gvdHJ1bmNhdGUnO1xuaW1wb3J0IGNvcHlUb0NsaXBib2FyZCBmcm9tICdjb3B5LXRleHQtdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7IGxvY2FsRm9yYWdlIH0gZnJvbSAnZGVjYXAtY21zLWxpYi11dGlsJztcbmltcG9ydCB7IGJ1dHRvbnMsIGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcbmltcG9ydCBjbGVhblN0YWNrIGZyb20gJ2NsZWFuLXN0YWNrJztcblxuY29uc3QgSVNTVUVfVVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9kZWNhcG9yZy9kZWNhcC1jbXMvaXNzdWVzL25ldz8nO1xuXG5mdW5jdGlvbiBnZXRJc3N1ZVRlbXBsYXRlKHsgdmVyc2lvbiwgcHJvdmlkZXIsIGJyb3dzZXIsIGNvbmZpZyB9KSB7XG4gIHJldHVybiBgXG4qKkRlc2NyaWJlIHRoZSBidWcqKlxuXG4qKlRvIFJlcHJvZHVjZSoqXG5cbioqRXhwZWN0ZWQgYmVoYXZpb3IqKlxuXG4qKlNjcmVlbnNob3RzKipcblxuKipBcHBsaWNhYmxlIFZlcnNpb25zOioqXG4gLSBEZWNhcCBDTVMgdmVyc2lvbjogXFxgJHt2ZXJzaW9ufVxcYFxuIC0gR2l0IHByb3ZpZGVyOiBcXGAke3Byb3ZpZGVyfVxcYFxuIC0gQnJvd3NlciB2ZXJzaW9uOiBcXGAke2Jyb3dzZXJ9XFxgXG5cbioqQ01TIGNvbmZpZ3VyYXRpb24qKlxuXFxgXFxgXFxgXG4ke2NvbmZpZ31cblxcYFxcYFxcYFxuXG4qKkFkZGl0aW9uYWwgY29udGV4dCoqXG5gO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVGVtcGxhdGUoeyBjb25maWcgfSkge1xuICBsZXQgdmVyc2lvbiA9ICcnO1xuICBpZiAodHlwZW9mIERFQ0FQX0NNU19WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zQCR7REVDQVBfQ01TX1ZFUlNJT059YDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgREVDQVBfQ01TX0FQUF9WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zLWFwcEAke0RFQ0FQX0NNU19BUFBfVkVSU0lPTn1gO1xuICB9XG4gIGNvbnN0IHRlbXBsYXRlID0gZ2V0SXNzdWVUZW1wbGF0ZSh7XG4gICAgdmVyc2lvbixcbiAgICBwcm92aWRlcjogY29uZmlnLmJhY2tlbmQubmFtZSxcbiAgICBicm93c2VyOiBuYXZpZ2F0b3IudXNlckFnZW50LFxuICAgIGNvbmZpZzogeWFtbC5zdHJpbmdpZnkoY29uZmlnKSxcbiAgfSk7XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVXJsKHsgdGl0bGUsIGNvbmZpZyB9KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYm9keSA9IGJ1aWxkSXNzdWVUZW1wbGF0ZSh7IGNvbmZpZyB9KTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuYXBwZW5kKCd0aXRsZScsIHRydW5jYXRlKHRpdGxlLCB7IGxlbmd0aDogMTAwIH0pKTtcbiAgICBwYXJhbXMuYXBwZW5kKCdib2R5JywgdHJ1bmNhdGUoYm9keSwgeyBsZW5ndGg6IDQwMDAsIG9taXNzaW9uOiAnXFxuLi4uJyB9KSk7XG4gICAgcGFyYW1zLmFwcGVuZCgnbGFiZWxzJywgJ3R5cGU6IGJ1ZycpO1xuXG4gICAgcmV0dXJuIGAke0lTU1VFX1VSTH0ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICByZXR1cm4gYCR7SVNTVUVfVVJMfXRlbXBsYXRlPWJ1Z19yZXBvcnQubWRgO1xuICB9XG59XG5cbmNvbnN0IEVycm9yQm91bmRhcnlDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA0MHB4O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHRMZWFkfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgaHIge1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBtYXJnaW46IDMwcHggMDtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMudGV4dH07XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJHtjb2xvcnMuYWN0aXZlfTtcbiAgfVxuYDtcblxuY29uc3QgUHJpdmFjeVdhcm5pbmcgPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuYDtcblxuY29uc3QgQ29weUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke2J1dHRvbnMuZGVmYXVsdH07XG4gICR7YnV0dG9ucy5ncmF5fTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMTJweCAwO1xuYDtcblxuZnVuY3Rpb24gUmVjb3ZlcmVkRW50cnkoeyBlbnRyeSwgdCB9KSB7XG4gIGNvbnNvbGUubG9nKGVudHJ5KTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGhyIC8+XG4gICAgICA8aDI+e3QoJ3VpLmVycm9yQm91bmRhcnkucmVjb3ZlcmVkRW50cnkuaGVhZGluZycpfTwvaDI+XG4gICAgICA8c3Ryb25nPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlY292ZXJlZEVudHJ5Lndhcm5pbmcnKX08L3N0cm9uZz5cbiAgICAgIDxDb3B5QnV0dG9uIG9uQ2xpY2s9eygpID0+IGNvcHlUb0NsaXBib2FyZChlbnRyeSl9PlxuICAgICAgICB7dCgndWkuZXJyb3JCb3VuZGFyeS5yZWNvdmVyZWRFbnRyeS5jb3B5QnV0dG9uTGFiZWwnKX1cbiAgICAgIDwvQ29weUJ1dHRvbj5cbiAgICAgIDxwcmU+XG4gICAgICAgIDxjb2RlPntlbnRyeX08L2NvZGU+XG4gICAgICA8L3ByZT5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yQm91bmRhcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNvbmZpZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGhhc0Vycm9yOiBmYWxzZSxcbiAgICBlcnJvck1lc3NhZ2U6ICcnLFxuICAgIGVycm9yVGl0bGU6ICcnLFxuICAgIGJhY2t1cDogJycsXG4gIH07XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNFcnJvcjogdHJ1ZSxcbiAgICAgIGVycm9yTWVzc2FnZTogY2xlYW5TdGFjayhlcnJvci5zdGFjaywgeyBiYXNlUGF0aDogd2luZG93LmxvY2F0aW9uLm9yaWdpbiB8fCAnJyB9KSxcbiAgICAgIGVycm9yVGl0bGU6IGVycm9yLnRvU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIE1hbnVhbGx5IHZhbGlkYXRlIFByb3BUeXBlcyAtIFJlYWN0IDE5IGJyZWFraW5nIGNoYW5nZVxuICAgIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyhFcnJvckJvdW5kYXJ5LnByb3BUeXBlcywgdGhpcy5wcm9wcywgJ3Byb3AnLCAnRXJyb3JCb3VuZGFyeScpO1xuICB9XG5cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0JhY2t1cCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5zdGF0ZS5lcnJvck1lc3NhZ2UgIT09IG5leHRTdGF0ZS5lcnJvck1lc3NhZ2UgfHwgdGhpcy5zdGF0ZS5iYWNrdXAgIT09IG5leHRTdGF0ZS5iYWNrdXBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dCYWNrdXApIHtcbiAgICAgIGNvbnN0IGJhY2t1cCA9IGF3YWl0IGxvY2FsRm9yYWdlLmdldEl0ZW0oJ2JhY2t1cCcpO1xuICAgICAgYmFja3VwICYmIGNvbnNvbGUubG9nKGJhY2t1cCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgYmFja3VwIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGhhc0Vycm9yLCBlcnJvck1lc3NhZ2UsIGJhY2t1cCwgZXJyb3JUaXRsZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IHNob3dCYWNrdXAsIHQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFoYXNFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8RXJyb3JCb3VuZGFyeUNvbnRhaW5lcj5cbiAgICAgICAgPGgxPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnRpdGxlJyl9PC9oMT5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4+e3QoJ3VpLmVycm9yQm91bmRhcnkuZGV0YWlscycpfTwvc3Bhbj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17YnVpbGRJc3N1ZVVybCh7IHRpdGxlOiBlcnJvclRpdGxlLCBjb25maWc6IHRoaXMucHJvcHMuY29uZmlnIH0pfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJpc3N1ZS11cmxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlcG9ydEl0Jyl9XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnByaXZhY3lXYXJuaW5nJylcbiAgICAgICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFByaXZhY3lXYXJuaW5nIGtleT17aW5kZXh9PntpdGVtfTwvUHJpdmFjeVdhcm5pbmc+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGhyIC8+XG4gICAgICAgIDxoMj57dCgndWkuZXJyb3JCb3VuZGFyeS5kZXRhaWxzSGVhZGluZycpfTwvaDI+XG4gICAgICAgIDxwPntlcnJvck1lc3NhZ2V9PC9wPlxuICAgICAgICB7YmFja3VwICYmIHNob3dCYWNrdXAgJiYgPFJlY292ZXJlZEVudHJ5IGVudHJ5PXtiYWNrdXB9IHQ9e3R9IC8+fVxuICAgICAgPC9FcnJvckJvdW5kYXJ5Q29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoRXJyb3JCb3VuZGFyeSk7XG4iXX0= */"));
83
+ })("padding:40px;h1{font-size:28px;color:", colors.text, ";}h2{font-size:20px;}strong{color:", colors.textLead, ";font-weight:500;}hr{width:200px;margin:30px 0;border:0;height:1px;background-color:", colors.text, ";}a{color:", colors.active, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL0Vycm9yQm91bmRhcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUV5QyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9FcnJvckJvdW5kYXJ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB0cnVuY2F0ZSBmcm9tICdsb2Rhc2gvdHJ1bmNhdGUnO1xuaW1wb3J0IGNvcHlUb0NsaXBib2FyZCBmcm9tICdjb3B5LXRleHQtdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7IGxvY2FsRm9yYWdlIH0gZnJvbSAnZGVjYXAtY21zLWxpYi11dGlsJztcbmltcG9ydCB7IGJ1dHRvbnMsIGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgSVNTVUVfVVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9kZWNhcG9yZy9kZWNhcC1jbXMvaXNzdWVzL25ldz8nO1xuXG5mdW5jdGlvbiBnZXRJc3N1ZVRlbXBsYXRlKHsgdmVyc2lvbiwgcHJvdmlkZXIsIGJyb3dzZXIsIGNvbmZpZyB9KSB7XG4gIHJldHVybiBgXG4qKkRlc2NyaWJlIHRoZSBidWcqKlxuXG4qKlRvIFJlcHJvZHVjZSoqXG5cbioqRXhwZWN0ZWQgYmVoYXZpb3IqKlxuXG4qKlNjcmVlbnNob3RzKipcblxuKipBcHBsaWNhYmxlIFZlcnNpb25zOioqXG4gLSBEZWNhcCBDTVMgdmVyc2lvbjogXFxgJHt2ZXJzaW9ufVxcYFxuIC0gR2l0IHByb3ZpZGVyOiBcXGAke3Byb3ZpZGVyfVxcYFxuIC0gQnJvd3NlciB2ZXJzaW9uOiBcXGAke2Jyb3dzZXJ9XFxgXG5cbioqQ01TIGNvbmZpZ3VyYXRpb24qKlxuXFxgXFxgXFxgXG4ke2NvbmZpZ31cblxcYFxcYFxcYFxuXG4qKkFkZGl0aW9uYWwgY29udGV4dCoqXG5gO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVGVtcGxhdGUoeyBjb25maWcgfSkge1xuICBsZXQgdmVyc2lvbiA9ICcnO1xuICBpZiAodHlwZW9mIERFQ0FQX0NNU19WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zQCR7REVDQVBfQ01TX1ZFUlNJT059YDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgREVDQVBfQ01TX0FQUF9WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zLWFwcEAke0RFQ0FQX0NNU19BUFBfVkVSU0lPTn1gO1xuICB9XG4gIGNvbnN0IHRlbXBsYXRlID0gZ2V0SXNzdWVUZW1wbGF0ZSh7XG4gICAgdmVyc2lvbixcbiAgICBwcm92aWRlcjogY29uZmlnLmJhY2tlbmQubmFtZSxcbiAgICBicm93c2VyOiBuYXZpZ2F0b3IudXNlckFnZW50LFxuICAgIGNvbmZpZzogeWFtbC5zdHJpbmdpZnkoY29uZmlnKSxcbiAgfSk7XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVXJsKHsgdGl0bGUsIGNvbmZpZyB9KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYm9keSA9IGJ1aWxkSXNzdWVUZW1wbGF0ZSh7IGNvbmZpZyB9KTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuYXBwZW5kKCd0aXRsZScsIHRydW5jYXRlKHRpdGxlLCB7IGxlbmd0aDogMTAwIH0pKTtcbiAgICBwYXJhbXMuYXBwZW5kKCdib2R5JywgdHJ1bmNhdGUoYm9keSwgeyBsZW5ndGg6IDQwMDAsIG9taXNzaW9uOiAnXFxuLi4uJyB9KSk7XG4gICAgcGFyYW1zLmFwcGVuZCgnbGFiZWxzJywgJ3R5cGU6IGJ1ZycpO1xuXG4gICAgcmV0dXJuIGAke0lTU1VFX1VSTH0ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICByZXR1cm4gYCR7SVNTVUVfVVJMfXRlbXBsYXRlPWJ1Z19yZXBvcnQubWRgO1xuICB9XG59XG5cbmNvbnN0IEVycm9yQm91bmRhcnlDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA0MHB4O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHRMZWFkfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgaHIge1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBtYXJnaW46IDMwcHggMDtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMudGV4dH07XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJHtjb2xvcnMuYWN0aXZlfTtcbiAgfVxuYDtcblxuY29uc3QgUHJpdmFjeVdhcm5pbmcgPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuYDtcblxuY29uc3QgQ29weUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke2J1dHRvbnMuZGVmYXVsdH07XG4gICR7YnV0dG9ucy5ncmF5fTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMTJweCAwO1xuYDtcblxuZnVuY3Rpb24gUmVjb3ZlcmVkRW50cnkoeyBlbnRyeSwgdCB9KSB7XG4gIGNvbnNvbGUubG9nKGVudHJ5KTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGhyIC8+XG4gICAgICA8aDI+e3QoJ3VpLmVycm9yQm91bmRhcnkucmVjb3ZlcmVkRW50cnkuaGVhZGluZycpfTwvaDI+XG4gICAgICA8c3Ryb25nPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlY292ZXJlZEVudHJ5Lndhcm5pbmcnKX08L3N0cm9uZz5cbiAgICAgIDxDb3B5QnV0dG9uIG9uQ2xpY2s9eygpID0+IGNvcHlUb0NsaXBib2FyZChlbnRyeSl9PlxuICAgICAgICB7dCgndWkuZXJyb3JCb3VuZGFyeS5yZWNvdmVyZWRFbnRyeS5jb3B5QnV0dG9uTGFiZWwnKX1cbiAgICAgIDwvQ29weUJ1dHRvbj5cbiAgICAgIDxwcmU+XG4gICAgICAgIDxjb2RlPntlbnRyeX08L2NvZGU+XG4gICAgICA8L3ByZT5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yQm91bmRhcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNvbmZpZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGhhc0Vycm9yOiBmYWxzZSxcbiAgICBlcnJvck1lc3NhZ2U6ICcnLFxuICAgIGVycm9yVGl0bGU6ICcnLFxuICAgIGJhY2t1cDogJycsXG4gIH07XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNFcnJvcjogdHJ1ZSxcbiAgICAgIGVycm9yTWVzc2FnZTogZXJyb3Iuc3RhY2sgfHwgZXJyb3IudG9TdHJpbmcoKSxcbiAgICAgIGVycm9yVGl0bGU6IGVycm9yLnRvU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIE1hbnVhbGx5IHZhbGlkYXRlIFByb3BUeXBlcyAtIFJlYWN0IDE5IGJyZWFraW5nIGNoYW5nZVxuICAgIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyhFcnJvckJvdW5kYXJ5LnByb3BUeXBlcywgdGhpcy5wcm9wcywgJ3Byb3AnLCAnRXJyb3JCb3VuZGFyeScpO1xuICB9XG5cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0JhY2t1cCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5zdGF0ZS5lcnJvck1lc3NhZ2UgIT09IG5leHRTdGF0ZS5lcnJvck1lc3NhZ2UgfHwgdGhpcy5zdGF0ZS5iYWNrdXAgIT09IG5leHRTdGF0ZS5iYWNrdXBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dCYWNrdXApIHtcbiAgICAgIGNvbnN0IGJhY2t1cCA9IGF3YWl0IGxvY2FsRm9yYWdlLmdldEl0ZW0oJ2JhY2t1cCcpO1xuICAgICAgYmFja3VwICYmIGNvbnNvbGUubG9nKGJhY2t1cCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgYmFja3VwIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGhhc0Vycm9yLCBlcnJvck1lc3NhZ2UsIGJhY2t1cCwgZXJyb3JUaXRsZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IHNob3dCYWNrdXAsIHQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFoYXNFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8RXJyb3JCb3VuZGFyeUNvbnRhaW5lcj5cbiAgICAgICAgPGgxPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnRpdGxlJyl9PC9oMT5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4+e3QoJ3VpLmVycm9yQm91bmRhcnkuZGV0YWlscycpfTwvc3Bhbj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17YnVpbGRJc3N1ZVVybCh7IHRpdGxlOiBlcnJvclRpdGxlLCBjb25maWc6IHRoaXMucHJvcHMuY29uZmlnIH0pfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJpc3N1ZS11cmxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlcG9ydEl0Jyl9XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnByaXZhY3lXYXJuaW5nJylcbiAgICAgICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFByaXZhY3lXYXJuaW5nIGtleT17aW5kZXh9PntpdGVtfTwvUHJpdmFjeVdhcm5pbmc+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGhyIC8+XG4gICAgICAgIDxoMj57dCgndWkuZXJyb3JCb3VuZGFyeS5kZXRhaWxzSGVhZGluZycpfTwvaDI+XG4gICAgICAgIDxwPntlcnJvck1lc3NhZ2V9PC9wPlxuICAgICAgICB7YmFja3VwICYmIHNob3dCYWNrdXAgJiYgPFJlY292ZXJlZEVudHJ5IGVudHJ5PXtiYWNrdXB9IHQ9e3R9IC8+fVxuICAgICAgPC9FcnJvckJvdW5kYXJ5Q29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoRXJyb3JCb3VuZGFyeSk7XG4iXX0= */"));
85
84
  const PrivacyWarning = /*#__PURE__*/_styled("span", {
86
85
  target: "emw4gx71",
87
86
  label: "PrivacyWarning"
88
- })("color:", colors.text, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL0Vycm9yQm91bmRhcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0drQyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9FcnJvckJvdW5kYXJ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB0cnVuY2F0ZSBmcm9tICdsb2Rhc2gvdHJ1bmNhdGUnO1xuaW1wb3J0IGNvcHlUb0NsaXBib2FyZCBmcm9tICdjb3B5LXRleHQtdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7IGxvY2FsRm9yYWdlIH0gZnJvbSAnZGVjYXAtY21zLWxpYi11dGlsJztcbmltcG9ydCB7IGJ1dHRvbnMsIGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcbmltcG9ydCBjbGVhblN0YWNrIGZyb20gJ2NsZWFuLXN0YWNrJztcblxuY29uc3QgSVNTVUVfVVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9kZWNhcG9yZy9kZWNhcC1jbXMvaXNzdWVzL25ldz8nO1xuXG5mdW5jdGlvbiBnZXRJc3N1ZVRlbXBsYXRlKHsgdmVyc2lvbiwgcHJvdmlkZXIsIGJyb3dzZXIsIGNvbmZpZyB9KSB7XG4gIHJldHVybiBgXG4qKkRlc2NyaWJlIHRoZSBidWcqKlxuXG4qKlRvIFJlcHJvZHVjZSoqXG5cbioqRXhwZWN0ZWQgYmVoYXZpb3IqKlxuXG4qKlNjcmVlbnNob3RzKipcblxuKipBcHBsaWNhYmxlIFZlcnNpb25zOioqXG4gLSBEZWNhcCBDTVMgdmVyc2lvbjogXFxgJHt2ZXJzaW9ufVxcYFxuIC0gR2l0IHByb3ZpZGVyOiBcXGAke3Byb3ZpZGVyfVxcYFxuIC0gQnJvd3NlciB2ZXJzaW9uOiBcXGAke2Jyb3dzZXJ9XFxgXG5cbioqQ01TIGNvbmZpZ3VyYXRpb24qKlxuXFxgXFxgXFxgXG4ke2NvbmZpZ31cblxcYFxcYFxcYFxuXG4qKkFkZGl0aW9uYWwgY29udGV4dCoqXG5gO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVGVtcGxhdGUoeyBjb25maWcgfSkge1xuICBsZXQgdmVyc2lvbiA9ICcnO1xuICBpZiAodHlwZW9mIERFQ0FQX0NNU19WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zQCR7REVDQVBfQ01TX1ZFUlNJT059YDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgREVDQVBfQ01TX0FQUF9WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zLWFwcEAke0RFQ0FQX0NNU19BUFBfVkVSU0lPTn1gO1xuICB9XG4gIGNvbnN0IHRlbXBsYXRlID0gZ2V0SXNzdWVUZW1wbGF0ZSh7XG4gICAgdmVyc2lvbixcbiAgICBwcm92aWRlcjogY29uZmlnLmJhY2tlbmQubmFtZSxcbiAgICBicm93c2VyOiBuYXZpZ2F0b3IudXNlckFnZW50LFxuICAgIGNvbmZpZzogeWFtbC5zdHJpbmdpZnkoY29uZmlnKSxcbiAgfSk7XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVXJsKHsgdGl0bGUsIGNvbmZpZyB9KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYm9keSA9IGJ1aWxkSXNzdWVUZW1wbGF0ZSh7IGNvbmZpZyB9KTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuYXBwZW5kKCd0aXRsZScsIHRydW5jYXRlKHRpdGxlLCB7IGxlbmd0aDogMTAwIH0pKTtcbiAgICBwYXJhbXMuYXBwZW5kKCdib2R5JywgdHJ1bmNhdGUoYm9keSwgeyBsZW5ndGg6IDQwMDAsIG9taXNzaW9uOiAnXFxuLi4uJyB9KSk7XG4gICAgcGFyYW1zLmFwcGVuZCgnbGFiZWxzJywgJ3R5cGU6IGJ1ZycpO1xuXG4gICAgcmV0dXJuIGAke0lTU1VFX1VSTH0ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICByZXR1cm4gYCR7SVNTVUVfVVJMfXRlbXBsYXRlPWJ1Z19yZXBvcnQubWRgO1xuICB9XG59XG5cbmNvbnN0IEVycm9yQm91bmRhcnlDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA0MHB4O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHRMZWFkfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgaHIge1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBtYXJnaW46IDMwcHggMDtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMudGV4dH07XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJHtjb2xvcnMuYWN0aXZlfTtcbiAgfVxuYDtcblxuY29uc3QgUHJpdmFjeVdhcm5pbmcgPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuYDtcblxuY29uc3QgQ29weUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke2J1dHRvbnMuZGVmYXVsdH07XG4gICR7YnV0dG9ucy5ncmF5fTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMTJweCAwO1xuYDtcblxuZnVuY3Rpb24gUmVjb3ZlcmVkRW50cnkoeyBlbnRyeSwgdCB9KSB7XG4gIGNvbnNvbGUubG9nKGVudHJ5KTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGhyIC8+XG4gICAgICA8aDI+e3QoJ3VpLmVycm9yQm91bmRhcnkucmVjb3ZlcmVkRW50cnkuaGVhZGluZycpfTwvaDI+XG4gICAgICA8c3Ryb25nPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlY292ZXJlZEVudHJ5Lndhcm5pbmcnKX08L3N0cm9uZz5cbiAgICAgIDxDb3B5QnV0dG9uIG9uQ2xpY2s9eygpID0+IGNvcHlUb0NsaXBib2FyZChlbnRyeSl9PlxuICAgICAgICB7dCgndWkuZXJyb3JCb3VuZGFyeS5yZWNvdmVyZWRFbnRyeS5jb3B5QnV0dG9uTGFiZWwnKX1cbiAgICAgIDwvQ29weUJ1dHRvbj5cbiAgICAgIDxwcmU+XG4gICAgICAgIDxjb2RlPntlbnRyeX08L2NvZGU+XG4gICAgICA8L3ByZT5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yQm91bmRhcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNvbmZpZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGhhc0Vycm9yOiBmYWxzZSxcbiAgICBlcnJvck1lc3NhZ2U6ICcnLFxuICAgIGVycm9yVGl0bGU6ICcnLFxuICAgIGJhY2t1cDogJycsXG4gIH07XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNFcnJvcjogdHJ1ZSxcbiAgICAgIGVycm9yTWVzc2FnZTogY2xlYW5TdGFjayhlcnJvci5zdGFjaywgeyBiYXNlUGF0aDogd2luZG93LmxvY2F0aW9uLm9yaWdpbiB8fCAnJyB9KSxcbiAgICAgIGVycm9yVGl0bGU6IGVycm9yLnRvU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIE1hbnVhbGx5IHZhbGlkYXRlIFByb3BUeXBlcyAtIFJlYWN0IDE5IGJyZWFraW5nIGNoYW5nZVxuICAgIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyhFcnJvckJvdW5kYXJ5LnByb3BUeXBlcywgdGhpcy5wcm9wcywgJ3Byb3AnLCAnRXJyb3JCb3VuZGFyeScpO1xuICB9XG5cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0JhY2t1cCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5zdGF0ZS5lcnJvck1lc3NhZ2UgIT09IG5leHRTdGF0ZS5lcnJvck1lc3NhZ2UgfHwgdGhpcy5zdGF0ZS5iYWNrdXAgIT09IG5leHRTdGF0ZS5iYWNrdXBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dCYWNrdXApIHtcbiAgICAgIGNvbnN0IGJhY2t1cCA9IGF3YWl0IGxvY2FsRm9yYWdlLmdldEl0ZW0oJ2JhY2t1cCcpO1xuICAgICAgYmFja3VwICYmIGNvbnNvbGUubG9nKGJhY2t1cCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgYmFja3VwIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGhhc0Vycm9yLCBlcnJvck1lc3NhZ2UsIGJhY2t1cCwgZXJyb3JUaXRsZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IHNob3dCYWNrdXAsIHQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFoYXNFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8RXJyb3JCb3VuZGFyeUNvbnRhaW5lcj5cbiAgICAgICAgPGgxPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnRpdGxlJyl9PC9oMT5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4+e3QoJ3VpLmVycm9yQm91bmRhcnkuZGV0YWlscycpfTwvc3Bhbj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17YnVpbGRJc3N1ZVVybCh7IHRpdGxlOiBlcnJvclRpdGxlLCBjb25maWc6IHRoaXMucHJvcHMuY29uZmlnIH0pfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJpc3N1ZS11cmxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlcG9ydEl0Jyl9XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnByaXZhY3lXYXJuaW5nJylcbiAgICAgICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFByaXZhY3lXYXJuaW5nIGtleT17aW5kZXh9PntpdGVtfTwvUHJpdmFjeVdhcm5pbmc+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGhyIC8+XG4gICAgICAgIDxoMj57dCgndWkuZXJyb3JCb3VuZGFyeS5kZXRhaWxzSGVhZGluZycpfTwvaDI+XG4gICAgICAgIDxwPntlcnJvck1lc3NhZ2V9PC9wPlxuICAgICAgICB7YmFja3VwICYmIHNob3dCYWNrdXAgJiYgPFJlY292ZXJlZEVudHJ5IGVudHJ5PXtiYWNrdXB9IHQ9e3R9IC8+fVxuICAgICAgPC9FcnJvckJvdW5kYXJ5Q29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoRXJyb3JCb3VuZGFyeSk7XG4iXX0= */"));
87
+ })("color:", colors.text, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL0Vycm9yQm91bmRhcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUdrQyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9FcnJvckJvdW5kYXJ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB0cnVuY2F0ZSBmcm9tICdsb2Rhc2gvdHJ1bmNhdGUnO1xuaW1wb3J0IGNvcHlUb0NsaXBib2FyZCBmcm9tICdjb3B5LXRleHQtdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7IGxvY2FsRm9yYWdlIH0gZnJvbSAnZGVjYXAtY21zLWxpYi11dGlsJztcbmltcG9ydCB7IGJ1dHRvbnMsIGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgSVNTVUVfVVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9kZWNhcG9yZy9kZWNhcC1jbXMvaXNzdWVzL25ldz8nO1xuXG5mdW5jdGlvbiBnZXRJc3N1ZVRlbXBsYXRlKHsgdmVyc2lvbiwgcHJvdmlkZXIsIGJyb3dzZXIsIGNvbmZpZyB9KSB7XG4gIHJldHVybiBgXG4qKkRlc2NyaWJlIHRoZSBidWcqKlxuXG4qKlRvIFJlcHJvZHVjZSoqXG5cbioqRXhwZWN0ZWQgYmVoYXZpb3IqKlxuXG4qKlNjcmVlbnNob3RzKipcblxuKipBcHBsaWNhYmxlIFZlcnNpb25zOioqXG4gLSBEZWNhcCBDTVMgdmVyc2lvbjogXFxgJHt2ZXJzaW9ufVxcYFxuIC0gR2l0IHByb3ZpZGVyOiBcXGAke3Byb3ZpZGVyfVxcYFxuIC0gQnJvd3NlciB2ZXJzaW9uOiBcXGAke2Jyb3dzZXJ9XFxgXG5cbioqQ01TIGNvbmZpZ3VyYXRpb24qKlxuXFxgXFxgXFxgXG4ke2NvbmZpZ31cblxcYFxcYFxcYFxuXG4qKkFkZGl0aW9uYWwgY29udGV4dCoqXG5gO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVGVtcGxhdGUoeyBjb25maWcgfSkge1xuICBsZXQgdmVyc2lvbiA9ICcnO1xuICBpZiAodHlwZW9mIERFQ0FQX0NNU19WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zQCR7REVDQVBfQ01TX1ZFUlNJT059YDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgREVDQVBfQ01TX0FQUF9WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zLWFwcEAke0RFQ0FQX0NNU19BUFBfVkVSU0lPTn1gO1xuICB9XG4gIGNvbnN0IHRlbXBsYXRlID0gZ2V0SXNzdWVUZW1wbGF0ZSh7XG4gICAgdmVyc2lvbixcbiAgICBwcm92aWRlcjogY29uZmlnLmJhY2tlbmQubmFtZSxcbiAgICBicm93c2VyOiBuYXZpZ2F0b3IudXNlckFnZW50LFxuICAgIGNvbmZpZzogeWFtbC5zdHJpbmdpZnkoY29uZmlnKSxcbiAgfSk7XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVXJsKHsgdGl0bGUsIGNvbmZpZyB9KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYm9keSA9IGJ1aWxkSXNzdWVUZW1wbGF0ZSh7IGNvbmZpZyB9KTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuYXBwZW5kKCd0aXRsZScsIHRydW5jYXRlKHRpdGxlLCB7IGxlbmd0aDogMTAwIH0pKTtcbiAgICBwYXJhbXMuYXBwZW5kKCdib2R5JywgdHJ1bmNhdGUoYm9keSwgeyBsZW5ndGg6IDQwMDAsIG9taXNzaW9uOiAnXFxuLi4uJyB9KSk7XG4gICAgcGFyYW1zLmFwcGVuZCgnbGFiZWxzJywgJ3R5cGU6IGJ1ZycpO1xuXG4gICAgcmV0dXJuIGAke0lTU1VFX1VSTH0ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICByZXR1cm4gYCR7SVNTVUVfVVJMfXRlbXBsYXRlPWJ1Z19yZXBvcnQubWRgO1xuICB9XG59XG5cbmNvbnN0IEVycm9yQm91bmRhcnlDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA0MHB4O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHRMZWFkfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgaHIge1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBtYXJnaW46IDMwcHggMDtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMudGV4dH07XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJHtjb2xvcnMuYWN0aXZlfTtcbiAgfVxuYDtcblxuY29uc3QgUHJpdmFjeVdhcm5pbmcgPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuYDtcblxuY29uc3QgQ29weUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke2J1dHRvbnMuZGVmYXVsdH07XG4gICR7YnV0dG9ucy5ncmF5fTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMTJweCAwO1xuYDtcblxuZnVuY3Rpb24gUmVjb3ZlcmVkRW50cnkoeyBlbnRyeSwgdCB9KSB7XG4gIGNvbnNvbGUubG9nKGVudHJ5KTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGhyIC8+XG4gICAgICA8aDI+e3QoJ3VpLmVycm9yQm91bmRhcnkucmVjb3ZlcmVkRW50cnkuaGVhZGluZycpfTwvaDI+XG4gICAgICA8c3Ryb25nPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlY292ZXJlZEVudHJ5Lndhcm5pbmcnKX08L3N0cm9uZz5cbiAgICAgIDxDb3B5QnV0dG9uIG9uQ2xpY2s9eygpID0+IGNvcHlUb0NsaXBib2FyZChlbnRyeSl9PlxuICAgICAgICB7dCgndWkuZXJyb3JCb3VuZGFyeS5yZWNvdmVyZWRFbnRyeS5jb3B5QnV0dG9uTGFiZWwnKX1cbiAgICAgIDwvQ29weUJ1dHRvbj5cbiAgICAgIDxwcmU+XG4gICAgICAgIDxjb2RlPntlbnRyeX08L2NvZGU+XG4gICAgICA8L3ByZT5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yQm91bmRhcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNvbmZpZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGhhc0Vycm9yOiBmYWxzZSxcbiAgICBlcnJvck1lc3NhZ2U6ICcnLFxuICAgIGVycm9yVGl0bGU6ICcnLFxuICAgIGJhY2t1cDogJycsXG4gIH07XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNFcnJvcjogdHJ1ZSxcbiAgICAgIGVycm9yTWVzc2FnZTogZXJyb3Iuc3RhY2sgfHwgZXJyb3IudG9TdHJpbmcoKSxcbiAgICAgIGVycm9yVGl0bGU6IGVycm9yLnRvU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIE1hbnVhbGx5IHZhbGlkYXRlIFByb3BUeXBlcyAtIFJlYWN0IDE5IGJyZWFraW5nIGNoYW5nZVxuICAgIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyhFcnJvckJvdW5kYXJ5LnByb3BUeXBlcywgdGhpcy5wcm9wcywgJ3Byb3AnLCAnRXJyb3JCb3VuZGFyeScpO1xuICB9XG5cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0JhY2t1cCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5zdGF0ZS5lcnJvck1lc3NhZ2UgIT09IG5leHRTdGF0ZS5lcnJvck1lc3NhZ2UgfHwgdGhpcy5zdGF0ZS5iYWNrdXAgIT09IG5leHRTdGF0ZS5iYWNrdXBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dCYWNrdXApIHtcbiAgICAgIGNvbnN0IGJhY2t1cCA9IGF3YWl0IGxvY2FsRm9yYWdlLmdldEl0ZW0oJ2JhY2t1cCcpO1xuICAgICAgYmFja3VwICYmIGNvbnNvbGUubG9nKGJhY2t1cCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgYmFja3VwIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGhhc0Vycm9yLCBlcnJvck1lc3NhZ2UsIGJhY2t1cCwgZXJyb3JUaXRsZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IHNob3dCYWNrdXAsIHQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFoYXNFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8RXJyb3JCb3VuZGFyeUNvbnRhaW5lcj5cbiAgICAgICAgPGgxPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnRpdGxlJyl9PC9oMT5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4+e3QoJ3VpLmVycm9yQm91bmRhcnkuZGV0YWlscycpfTwvc3Bhbj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17YnVpbGRJc3N1ZVVybCh7IHRpdGxlOiBlcnJvclRpdGxlLCBjb25maWc6IHRoaXMucHJvcHMuY29uZmlnIH0pfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJpc3N1ZS11cmxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlcG9ydEl0Jyl9XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnByaXZhY3lXYXJuaW5nJylcbiAgICAgICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFByaXZhY3lXYXJuaW5nIGtleT17aW5kZXh9PntpdGVtfTwvUHJpdmFjeVdhcm5pbmc+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGhyIC8+XG4gICAgICAgIDxoMj57dCgndWkuZXJyb3JCb3VuZGFyeS5kZXRhaWxzSGVhZGluZycpfTwvaDI+XG4gICAgICAgIDxwPntlcnJvck1lc3NhZ2V9PC9wPlxuICAgICAgICB7YmFja3VwICYmIHNob3dCYWNrdXAgJiYgPFJlY292ZXJlZEVudHJ5IGVudHJ5PXtiYWNrdXB9IHQ9e3R9IC8+fVxuICAgICAgPC9FcnJvckJvdW5kYXJ5Q29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoRXJyb3JCb3VuZGFyeSk7XG4iXX0= */"));
89
88
  const CopyButton = /*#__PURE__*/_styled("button", {
90
89
  target: "emw4gx70",
91
90
  label: "CopyButton"
92
- })(buttons.button, ";", buttons.default, ";", buttons.gray, ";display:block;margin:12px 0;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL0Vycm9yQm91bmRhcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0dnQyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9FcnJvckJvdW5kYXJ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB0cnVuY2F0ZSBmcm9tICdsb2Rhc2gvdHJ1bmNhdGUnO1xuaW1wb3J0IGNvcHlUb0NsaXBib2FyZCBmcm9tICdjb3B5LXRleHQtdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7IGxvY2FsRm9yYWdlIH0gZnJvbSAnZGVjYXAtY21zLWxpYi11dGlsJztcbmltcG9ydCB7IGJ1dHRvbnMsIGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcbmltcG9ydCBjbGVhblN0YWNrIGZyb20gJ2NsZWFuLXN0YWNrJztcblxuY29uc3QgSVNTVUVfVVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9kZWNhcG9yZy9kZWNhcC1jbXMvaXNzdWVzL25ldz8nO1xuXG5mdW5jdGlvbiBnZXRJc3N1ZVRlbXBsYXRlKHsgdmVyc2lvbiwgcHJvdmlkZXIsIGJyb3dzZXIsIGNvbmZpZyB9KSB7XG4gIHJldHVybiBgXG4qKkRlc2NyaWJlIHRoZSBidWcqKlxuXG4qKlRvIFJlcHJvZHVjZSoqXG5cbioqRXhwZWN0ZWQgYmVoYXZpb3IqKlxuXG4qKlNjcmVlbnNob3RzKipcblxuKipBcHBsaWNhYmxlIFZlcnNpb25zOioqXG4gLSBEZWNhcCBDTVMgdmVyc2lvbjogXFxgJHt2ZXJzaW9ufVxcYFxuIC0gR2l0IHByb3ZpZGVyOiBcXGAke3Byb3ZpZGVyfVxcYFxuIC0gQnJvd3NlciB2ZXJzaW9uOiBcXGAke2Jyb3dzZXJ9XFxgXG5cbioqQ01TIGNvbmZpZ3VyYXRpb24qKlxuXFxgXFxgXFxgXG4ke2NvbmZpZ31cblxcYFxcYFxcYFxuXG4qKkFkZGl0aW9uYWwgY29udGV4dCoqXG5gO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVGVtcGxhdGUoeyBjb25maWcgfSkge1xuICBsZXQgdmVyc2lvbiA9ICcnO1xuICBpZiAodHlwZW9mIERFQ0FQX0NNU19WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zQCR7REVDQVBfQ01TX1ZFUlNJT059YDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgREVDQVBfQ01TX0FQUF9WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zLWFwcEAke0RFQ0FQX0NNU19BUFBfVkVSU0lPTn1gO1xuICB9XG4gIGNvbnN0IHRlbXBsYXRlID0gZ2V0SXNzdWVUZW1wbGF0ZSh7XG4gICAgdmVyc2lvbixcbiAgICBwcm92aWRlcjogY29uZmlnLmJhY2tlbmQubmFtZSxcbiAgICBicm93c2VyOiBuYXZpZ2F0b3IudXNlckFnZW50LFxuICAgIGNvbmZpZzogeWFtbC5zdHJpbmdpZnkoY29uZmlnKSxcbiAgfSk7XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVXJsKHsgdGl0bGUsIGNvbmZpZyB9KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYm9keSA9IGJ1aWxkSXNzdWVUZW1wbGF0ZSh7IGNvbmZpZyB9KTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuYXBwZW5kKCd0aXRsZScsIHRydW5jYXRlKHRpdGxlLCB7IGxlbmd0aDogMTAwIH0pKTtcbiAgICBwYXJhbXMuYXBwZW5kKCdib2R5JywgdHJ1bmNhdGUoYm9keSwgeyBsZW5ndGg6IDQwMDAsIG9taXNzaW9uOiAnXFxuLi4uJyB9KSk7XG4gICAgcGFyYW1zLmFwcGVuZCgnbGFiZWxzJywgJ3R5cGU6IGJ1ZycpO1xuXG4gICAgcmV0dXJuIGAke0lTU1VFX1VSTH0ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICByZXR1cm4gYCR7SVNTVUVfVVJMfXRlbXBsYXRlPWJ1Z19yZXBvcnQubWRgO1xuICB9XG59XG5cbmNvbnN0IEVycm9yQm91bmRhcnlDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA0MHB4O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHRMZWFkfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgaHIge1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBtYXJnaW46IDMwcHggMDtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMudGV4dH07XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJHtjb2xvcnMuYWN0aXZlfTtcbiAgfVxuYDtcblxuY29uc3QgUHJpdmFjeVdhcm5pbmcgPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuYDtcblxuY29uc3QgQ29weUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke2J1dHRvbnMuZGVmYXVsdH07XG4gICR7YnV0dG9ucy5ncmF5fTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMTJweCAwO1xuYDtcblxuZnVuY3Rpb24gUmVjb3ZlcmVkRW50cnkoeyBlbnRyeSwgdCB9KSB7XG4gIGNvbnNvbGUubG9nKGVudHJ5KTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGhyIC8+XG4gICAgICA8aDI+e3QoJ3VpLmVycm9yQm91bmRhcnkucmVjb3ZlcmVkRW50cnkuaGVhZGluZycpfTwvaDI+XG4gICAgICA8c3Ryb25nPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlY292ZXJlZEVudHJ5Lndhcm5pbmcnKX08L3N0cm9uZz5cbiAgICAgIDxDb3B5QnV0dG9uIG9uQ2xpY2s9eygpID0+IGNvcHlUb0NsaXBib2FyZChlbnRyeSl9PlxuICAgICAgICB7dCgndWkuZXJyb3JCb3VuZGFyeS5yZWNvdmVyZWRFbnRyeS5jb3B5QnV0dG9uTGFiZWwnKX1cbiAgICAgIDwvQ29weUJ1dHRvbj5cbiAgICAgIDxwcmU+XG4gICAgICAgIDxjb2RlPntlbnRyeX08L2NvZGU+XG4gICAgICA8L3ByZT5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yQm91bmRhcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNvbmZpZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGhhc0Vycm9yOiBmYWxzZSxcbiAgICBlcnJvck1lc3NhZ2U6ICcnLFxuICAgIGVycm9yVGl0bGU6ICcnLFxuICAgIGJhY2t1cDogJycsXG4gIH07XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNFcnJvcjogdHJ1ZSxcbiAgICAgIGVycm9yTWVzc2FnZTogY2xlYW5TdGFjayhlcnJvci5zdGFjaywgeyBiYXNlUGF0aDogd2luZG93LmxvY2F0aW9uLm9yaWdpbiB8fCAnJyB9KSxcbiAgICAgIGVycm9yVGl0bGU6IGVycm9yLnRvU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIE1hbnVhbGx5IHZhbGlkYXRlIFByb3BUeXBlcyAtIFJlYWN0IDE5IGJyZWFraW5nIGNoYW5nZVxuICAgIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyhFcnJvckJvdW5kYXJ5LnByb3BUeXBlcywgdGhpcy5wcm9wcywgJ3Byb3AnLCAnRXJyb3JCb3VuZGFyeScpO1xuICB9XG5cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0JhY2t1cCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5zdGF0ZS5lcnJvck1lc3NhZ2UgIT09IG5leHRTdGF0ZS5lcnJvck1lc3NhZ2UgfHwgdGhpcy5zdGF0ZS5iYWNrdXAgIT09IG5leHRTdGF0ZS5iYWNrdXBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dCYWNrdXApIHtcbiAgICAgIGNvbnN0IGJhY2t1cCA9IGF3YWl0IGxvY2FsRm9yYWdlLmdldEl0ZW0oJ2JhY2t1cCcpO1xuICAgICAgYmFja3VwICYmIGNvbnNvbGUubG9nKGJhY2t1cCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgYmFja3VwIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGhhc0Vycm9yLCBlcnJvck1lc3NhZ2UsIGJhY2t1cCwgZXJyb3JUaXRsZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IHNob3dCYWNrdXAsIHQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFoYXNFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8RXJyb3JCb3VuZGFyeUNvbnRhaW5lcj5cbiAgICAgICAgPGgxPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnRpdGxlJyl9PC9oMT5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4+e3QoJ3VpLmVycm9yQm91bmRhcnkuZGV0YWlscycpfTwvc3Bhbj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17YnVpbGRJc3N1ZVVybCh7IHRpdGxlOiBlcnJvclRpdGxlLCBjb25maWc6IHRoaXMucHJvcHMuY29uZmlnIH0pfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJpc3N1ZS11cmxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlcG9ydEl0Jyl9XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnByaXZhY3lXYXJuaW5nJylcbiAgICAgICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFByaXZhY3lXYXJuaW5nIGtleT17aW5kZXh9PntpdGVtfTwvUHJpdmFjeVdhcm5pbmc+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGhyIC8+XG4gICAgICAgIDxoMj57dCgndWkuZXJyb3JCb3VuZGFyeS5kZXRhaWxzSGVhZGluZycpfTwvaDI+XG4gICAgICAgIDxwPntlcnJvck1lc3NhZ2V9PC9wPlxuICAgICAgICB7YmFja3VwICYmIHNob3dCYWNrdXAgJiYgPFJlY292ZXJlZEVudHJ5IGVudHJ5PXtiYWNrdXB9IHQ9e3R9IC8+fVxuICAgICAgPC9FcnJvckJvdW5kYXJ5Q29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoRXJyb3JCb3VuZGFyeSk7XG4iXX0= */"));
91
+ })(buttons.button, ";", buttons.default, ";", buttons.gray, ";display:block;margin:12px 0;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL0Vycm9yQm91bmRhcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUdnQyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9FcnJvckJvdW5kYXJ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB0cnVuY2F0ZSBmcm9tICdsb2Rhc2gvdHJ1bmNhdGUnO1xuaW1wb3J0IGNvcHlUb0NsaXBib2FyZCBmcm9tICdjb3B5LXRleHQtdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7IGxvY2FsRm9yYWdlIH0gZnJvbSAnZGVjYXAtY21zLWxpYi11dGlsJztcbmltcG9ydCB7IGJ1dHRvbnMsIGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgSVNTVUVfVVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9kZWNhcG9yZy9kZWNhcC1jbXMvaXNzdWVzL25ldz8nO1xuXG5mdW5jdGlvbiBnZXRJc3N1ZVRlbXBsYXRlKHsgdmVyc2lvbiwgcHJvdmlkZXIsIGJyb3dzZXIsIGNvbmZpZyB9KSB7XG4gIHJldHVybiBgXG4qKkRlc2NyaWJlIHRoZSBidWcqKlxuXG4qKlRvIFJlcHJvZHVjZSoqXG5cbioqRXhwZWN0ZWQgYmVoYXZpb3IqKlxuXG4qKlNjcmVlbnNob3RzKipcblxuKipBcHBsaWNhYmxlIFZlcnNpb25zOioqXG4gLSBEZWNhcCBDTVMgdmVyc2lvbjogXFxgJHt2ZXJzaW9ufVxcYFxuIC0gR2l0IHByb3ZpZGVyOiBcXGAke3Byb3ZpZGVyfVxcYFxuIC0gQnJvd3NlciB2ZXJzaW9uOiBcXGAke2Jyb3dzZXJ9XFxgXG5cbioqQ01TIGNvbmZpZ3VyYXRpb24qKlxuXFxgXFxgXFxgXG4ke2NvbmZpZ31cblxcYFxcYFxcYFxuXG4qKkFkZGl0aW9uYWwgY29udGV4dCoqXG5gO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVGVtcGxhdGUoeyBjb25maWcgfSkge1xuICBsZXQgdmVyc2lvbiA9ICcnO1xuICBpZiAodHlwZW9mIERFQ0FQX0NNU19WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zQCR7REVDQVBfQ01TX1ZFUlNJT059YDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgREVDQVBfQ01TX0FQUF9WRVJTSU9OID09PSAnc3RyaW5nJykge1xuICAgIHZlcnNpb24gPSBgZGVjYXAtY21zLWFwcEAke0RFQ0FQX0NNU19BUFBfVkVSU0lPTn1gO1xuICB9XG4gIGNvbnN0IHRlbXBsYXRlID0gZ2V0SXNzdWVUZW1wbGF0ZSh7XG4gICAgdmVyc2lvbixcbiAgICBwcm92aWRlcjogY29uZmlnLmJhY2tlbmQubmFtZSxcbiAgICBicm93c2VyOiBuYXZpZ2F0b3IudXNlckFnZW50LFxuICAgIGNvbmZpZzogeWFtbC5zdHJpbmdpZnkoY29uZmlnKSxcbiAgfSk7XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBidWlsZElzc3VlVXJsKHsgdGl0bGUsIGNvbmZpZyB9KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYm9keSA9IGJ1aWxkSXNzdWVUZW1wbGF0ZSh7IGNvbmZpZyB9KTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuYXBwZW5kKCd0aXRsZScsIHRydW5jYXRlKHRpdGxlLCB7IGxlbmd0aDogMTAwIH0pKTtcbiAgICBwYXJhbXMuYXBwZW5kKCdib2R5JywgdHJ1bmNhdGUoYm9keSwgeyBsZW5ndGg6IDQwMDAsIG9taXNzaW9uOiAnXFxuLi4uJyB9KSk7XG4gICAgcGFyYW1zLmFwcGVuZCgnbGFiZWxzJywgJ3R5cGU6IGJ1ZycpO1xuXG4gICAgcmV0dXJuIGAke0lTU1VFX1VSTH0ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICByZXR1cm4gYCR7SVNTVUVfVVJMfXRlbXBsYXRlPWJ1Z19yZXBvcnQubWRgO1xuICB9XG59XG5cbmNvbnN0IEVycm9yQm91bmRhcnlDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA0MHB4O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgY29sb3I6ICR7Y29sb3JzLnRleHRMZWFkfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgaHIge1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBtYXJnaW46IDMwcHggMDtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMudGV4dH07XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJHtjb2xvcnMuYWN0aXZlfTtcbiAgfVxuYDtcblxuY29uc3QgUHJpdmFjeVdhcm5pbmcgPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuYDtcblxuY29uc3QgQ29weUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke2J1dHRvbnMuZGVmYXVsdH07XG4gICR7YnV0dG9ucy5ncmF5fTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMTJweCAwO1xuYDtcblxuZnVuY3Rpb24gUmVjb3ZlcmVkRW50cnkoeyBlbnRyeSwgdCB9KSB7XG4gIGNvbnNvbGUubG9nKGVudHJ5KTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGhyIC8+XG4gICAgICA8aDI+e3QoJ3VpLmVycm9yQm91bmRhcnkucmVjb3ZlcmVkRW50cnkuaGVhZGluZycpfTwvaDI+XG4gICAgICA8c3Ryb25nPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlY292ZXJlZEVudHJ5Lndhcm5pbmcnKX08L3N0cm9uZz5cbiAgICAgIDxDb3B5QnV0dG9uIG9uQ2xpY2s9eygpID0+IGNvcHlUb0NsaXBib2FyZChlbnRyeSl9PlxuICAgICAgICB7dCgndWkuZXJyb3JCb3VuZGFyeS5yZWNvdmVyZWRFbnRyeS5jb3B5QnV0dG9uTGFiZWwnKX1cbiAgICAgIDwvQ29weUJ1dHRvbj5cbiAgICAgIDxwcmU+XG4gICAgICAgIDxjb2RlPntlbnRyeX08L2NvZGU+XG4gICAgICA8L3ByZT5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yQm91bmRhcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNvbmZpZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGhhc0Vycm9yOiBmYWxzZSxcbiAgICBlcnJvck1lc3NhZ2U6ICcnLFxuICAgIGVycm9yVGl0bGU6ICcnLFxuICAgIGJhY2t1cDogJycsXG4gIH07XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNFcnJvcjogdHJ1ZSxcbiAgICAgIGVycm9yTWVzc2FnZTogZXJyb3Iuc3RhY2sgfHwgZXJyb3IudG9TdHJpbmcoKSxcbiAgICAgIGVycm9yVGl0bGU6IGVycm9yLnRvU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIE1hbnVhbGx5IHZhbGlkYXRlIFByb3BUeXBlcyAtIFJlYWN0IDE5IGJyZWFraW5nIGNoYW5nZVxuICAgIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyhFcnJvckJvdW5kYXJ5LnByb3BUeXBlcywgdGhpcy5wcm9wcywgJ3Byb3AnLCAnRXJyb3JCb3VuZGFyeScpO1xuICB9XG5cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0JhY2t1cCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5zdGF0ZS5lcnJvck1lc3NhZ2UgIT09IG5leHRTdGF0ZS5lcnJvck1lc3NhZ2UgfHwgdGhpcy5zdGF0ZS5iYWNrdXAgIT09IG5leHRTdGF0ZS5iYWNrdXBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dCYWNrdXApIHtcbiAgICAgIGNvbnN0IGJhY2t1cCA9IGF3YWl0IGxvY2FsRm9yYWdlLmdldEl0ZW0oJ2JhY2t1cCcpO1xuICAgICAgYmFja3VwICYmIGNvbnNvbGUubG9nKGJhY2t1cCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgYmFja3VwIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGhhc0Vycm9yLCBlcnJvck1lc3NhZ2UsIGJhY2t1cCwgZXJyb3JUaXRsZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IHNob3dCYWNrdXAsIHQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFoYXNFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8RXJyb3JCb3VuZGFyeUNvbnRhaW5lcj5cbiAgICAgICAgPGgxPnt0KCd1aS5lcnJvckJvdW5kYXJ5LnRpdGxlJyl9PC9oMT5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4+e3QoJ3VpLmVycm9yQm91bmRhcnkuZGV0YWlscycpfTwvc3Bhbj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17YnVpbGRJc3N1ZVVybCh7IHRpdGxlOiBlcnJvclRpdGxlLCBjb25maWc6IHRoaXMucHJvcHMuY29uZmlnIH0pfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJpc3N1ZS11cmxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnJlcG9ydEl0Jyl9XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt0KCd1aS5lcnJvckJvdW5kYXJ5LnByaXZhY3lXYXJuaW5nJylcbiAgICAgICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFByaXZhY3lXYXJuaW5nIGtleT17aW5kZXh9PntpdGVtfTwvUHJpdmFjeVdhcm5pbmc+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGhyIC8+XG4gICAgICAgIDxoMj57dCgndWkuZXJyb3JCb3VuZGFyeS5kZXRhaWxzSGVhZGluZycpfTwvaDI+XG4gICAgICAgIDxwPntlcnJvck1lc3NhZ2V9PC9wPlxuICAgICAgICB7YmFja3VwICYmIHNob3dCYWNrdXAgJiYgPFJlY292ZXJlZEVudHJ5IGVudHJ5PXtiYWNrdXB9IHQ9e3R9IC8+fVxuICAgICAgPC9FcnJvckJvdW5kYXJ5Q29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoRXJyb3JCb3VuZGFyeSk7XG4iXX0= */"));
93
92
  function RecoveredEntry({
94
93
  entry,
95
94
  t
@@ -115,9 +114,7 @@ export class ErrorBoundary extends React.Component {
115
114
  console.error(error);
116
115
  return {
117
116
  hasError: true,
118
- errorMessage: cleanStack(error.stack, {
119
- basePath: window.location.origin || ''
120
- }),
117
+ errorMessage: error.stack || error.toString(),
121
118
  errorTitle: error.toString()
122
119
  };
123
120
  }
@@ -1,24 +1,3 @@
1
- function _extendableBuiltin(cls) {
2
- function ExtendableBuiltin() {
3
- var instance = Reflect.construct(cls, Array.from(arguments));
4
- Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
5
- return instance;
6
- }
7
- ExtendableBuiltin.prototype = Object.create(cls.prototype, {
8
- constructor: {
9
- value: cls,
10
- enumerable: false,
11
- writable: true,
12
- configurable: true
13
- }
14
- });
15
- if (Object.setPrototypeOf) {
16
- Object.setPrototypeOf(ExtendableBuiltin, cls);
17
- } else {
18
- ExtendableBuiltin.__proto__ = cls;
19
- }
20
- return ExtendableBuiltin;
21
- }
22
1
  import AJV from 'ajv';
23
2
  import { select, uniqueItemProperties, instanceof as instanceOf, prohibited } from 'ajv-keywords/dist/keywords';
24
3
  import ajvErrors from 'ajv-errors';
@@ -410,7 +389,29 @@ function getConfigSchema() {
410
389
  sortable_fields: {
411
390
  type: 'array',
412
391
  items: {
413
- type: 'string'
392
+ oneOf: [{
393
+ type: 'string'
394
+ }, {
395
+ type: 'object',
396
+ properties: {
397
+ field: {
398
+ type: 'string'
399
+ },
400
+ label: {
401
+ type: 'string'
402
+ },
403
+ default_sort: {
404
+ oneOf: [{
405
+ type: 'boolean'
406
+ }, {
407
+ type: 'string',
408
+ enum: ['asc', 'desc']
409
+ }]
410
+ }
411
+ },
412
+ required: ['field'],
413
+ additionalProperties: false
414
+ }]
414
415
  }
415
416
  },
416
417
  sortableFields: {
@@ -523,7 +524,7 @@ function getWidgetSchemas() {
523
524
  }));
524
525
  return Object.assign(...schemas);
525
526
  }
526
- class ConfigError extends _extendableBuiltin(Error) {
527
+ class ConfigError extends Error {
527
528
  constructor(errors, ...args) {
528
529
  const message = errors.map(({
529
530
  message,
@@ -602,4 +603,21 @@ export function validateConfig(config) {
602
603
  console.error('Config Errors', errors);
603
604
  throw new ConfigError(errors);
604
605
  }
606
+
607
+ // Custom validation: only one sortable field can have default_sort property
608
+ if (config.collections) {
609
+ config.collections.forEach((collection, index) => {
610
+ if (collection.sortable_fields) {
611
+ const defaultFields = collection.sortable_fields.filter(field => typeof field === 'object' && field.default_sort !== undefined);
612
+ if (defaultFields.length > 1) {
613
+ const error = {
614
+ instancePath: `/collections/${index}/sortable_fields`,
615
+ message: 'only one sortable field can have the default_sort property'
616
+ };
617
+ console.error('Config Errors', [error]);
618
+ throw new ConfigError([error]);
619
+ }
620
+ }
621
+ });
622
+ }
605
623
  }
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Entry Cache Module
3
+ *
4
+ * Provides localStorage-based caching for collection entries to improve performance
5
+ * when navigating between pages, sorting, or filtering.
6
+ *
7
+ * Cache Strategy:
8
+ * - Store fetched entries with timestamps
9
+ * - Invalidate on entry changes (persist, delete)
10
+ * - Time-based expiration (default: 5 minutes)
11
+ * - Collection-specific cache keys
12
+ */
13
+
14
+ import localForage from 'decap-cms-lib-util/src/localForage';
15
+ const CACHE_PREFIX = 'decap_entry_cache_';
16
+ const CACHE_EXPIRATION_MS = 5 * 60 * 1000; // 5 minutes
17
+
18
+ /**
19
+ * Generate cache key for a collection
20
+ */
21
+ function getCacheKey(collectionName) {
22
+ return `${CACHE_PREFIX}${collectionName}`;
23
+ }
24
+
25
+ /**
26
+ * Check if cached data is still valid
27
+ */
28
+ function isCacheValid(cacheEntry) {
29
+ if (!cacheEntry) {
30
+ return false;
31
+ }
32
+ const now = Date.now();
33
+ const age = now - cacheEntry.timestamp;
34
+ return age < CACHE_EXPIRATION_MS;
35
+ }
36
+
37
+ /**
38
+ * Get cached entries for a collection
39
+ *
40
+ * @param collectionName - Name of the collection
41
+ * @returns Cached entries or null if cache miss/expired
42
+ */
43
+ export async function getCachedEntries(collectionName) {
44
+ try {
45
+ const cacheKey = getCacheKey(collectionName);
46
+ const cached = await localForage.getItem(cacheKey);
47
+ if (cached && isCacheValid(cached)) {
48
+ console.log(`[EntryCache] Cache HIT for collection: ${collectionName}`);
49
+ return cached.entries;
50
+ }
51
+ console.log(`[EntryCache] Cache MISS for collection: ${collectionName}`);
52
+ return null;
53
+ } catch (error) {
54
+ console.warn('[EntryCache] Error reading cache:', error);
55
+ return null;
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Store entries in cache
61
+ *
62
+ * @param collectionName - Name of the collection
63
+ * @param entries - Entries to cache
64
+ */
65
+ export async function setCachedEntries(collectionName, entries) {
66
+ try {
67
+ const cacheKey = getCacheKey(collectionName);
68
+ const cacheEntry = {
69
+ entries,
70
+ timestamp: Date.now(),
71
+ collectionName,
72
+ version: 1
73
+ };
74
+ await localForage.setItem(cacheKey, cacheEntry);
75
+ console.log(`[EntryCache] Cached ${entries.length} entries for collection: ${collectionName}`);
76
+ } catch (error) {
77
+ console.warn('[EntryCache] Error writing cache:', error);
78
+ }
79
+ }
80
+
81
+ /**
82
+ * Invalidate cache for a specific collection
83
+ *
84
+ * Should be called when:
85
+ * - Entry is created
86
+ * - Entry is updated
87
+ * - Entry is deleted
88
+ *
89
+ * @param collectionName - Name of the collection to invalidate
90
+ */
91
+ export async function invalidateCollectionCache(collectionName) {
92
+ try {
93
+ const cacheKey = getCacheKey(collectionName);
94
+ await localForage.removeItem(cacheKey);
95
+ console.log(`[EntryCache] Invalidated cache for collection: ${collectionName}`);
96
+ } catch (error) {
97
+ console.warn('[EntryCache] Error invalidating cache:', error);
98
+ }
99
+ }
100
+
101
+ /**
102
+ * Clear all entry caches
103
+ *
104
+ * Useful for logout or manual cache clearing
105
+ */
106
+ export async function clearAllEntryCaches() {
107
+ try {
108
+ const keys = await localForage.keys();
109
+ const cacheKeys = keys.filter(key => key.startsWith(CACHE_PREFIX));
110
+ await Promise.all(cacheKeys.map(key => localForage.removeItem(key)));
111
+ console.log(`[EntryCache] Cleared ${cacheKeys.length} collection caches`);
112
+ } catch (error) {
113
+ console.warn('[EntryCache] Error clearing all caches:', error);
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Get cache statistics for debugging
119
+ */
120
+ export async function getCacheStats() {
121
+ try {
122
+ const keys = await localForage.keys();
123
+ const cacheKeys = keys.filter(key => key.startsWith(CACHE_PREFIX));
124
+ const cacheEntries = await Promise.all(cacheKeys.map(async key => {
125
+ const entry = await localForage.getItem(key);
126
+ return entry;
127
+ }));
128
+ const validCaches = cacheEntries.filter(entry => entry !== null);
129
+ const timestamps = validCaches.map(c => c.timestamp);
130
+ return {
131
+ collections: validCaches.map(c => c.collectionName),
132
+ totalEntries: validCaches.reduce((sum, c) => sum + c.entries.length, 0),
133
+ oldestCache: timestamps.length > 0 ? Math.min(...timestamps) : null,
134
+ newestCache: timestamps.length > 0 ? Math.max(...timestamps) : null
135
+ };
136
+ } catch (error) {
137
+ console.warn('[EntryCache] Error getting cache stats:', error);
138
+ return {
139
+ collections: [],
140
+ totalEntries: 0,
141
+ oldestCache: null,
142
+ newestCache: null
143
+ };
144
+ }
145
+ }
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Utility functions for working with entries, filters, sorts, and groups
3
+ */
4
+
5
+ /**
6
+ * Check if any filters are active in the Redux state
7
+ */
8
+ export function hasActiveFilters(activeFilters) {
9
+ if (!activeFilters) return false;
10
+
11
+ // Check if it's an Immutable collection with a 'some' method
12
+ if (typeof activeFilters === 'object' &&
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ typeof activeFilters.some === 'function') {
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ return activeFilters.some(f => f.get('active') === true);
17
+ }
18
+ return false;
19
+ }
20
+
21
+ /**
22
+ * Check if any groups are active in the Redux state
23
+ */
24
+ export function hasActiveGroups(activeGroups) {
25
+ if (!activeGroups) return false;
26
+
27
+ // Check if it's an Immutable collection with a 'some' method
28
+ if (typeof activeGroups === 'object' &&
29
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
+ typeof activeGroups.some === 'function') {
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ return activeGroups.some(g => g.get('active') === true);
33
+ }
34
+ return false;
35
+ }
36
+
37
+ /**
38
+ * Check if any sorts are active in the Redux state
39
+ */
40
+ export function hasActiveSorts(activeSorts) {
41
+ if (!activeSorts) return false;
42
+
43
+ // Check if it's an Immutable collection with a 'size' property
44
+ if (typeof activeSorts === 'object' &&
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ typeof activeSorts.size === 'number') {
47
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
+ return activeSorts.size > 0;
49
+ }
50
+ return false;
51
+ }
52
+
53
+ /**
54
+ * Get value from a nested field path (e.g., "data.title" or "data.nested.field")
55
+ */
56
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+ export function getFieldValue(obj, fieldPath) {
58
+ const pathParts = fieldPath.split('.');
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ let value = obj;
61
+ for (const part of pathParts) {
62
+ value = value?.[part];
63
+ }
64
+ return value;
65
+ }
66
+
67
+ /**
68
+ * Extract active filters from Immutable collection into plain array
69
+ */
70
+
71
+ export function extractActiveFilters(activeFilters) {
72
+ const filters = [];
73
+ if (!activeFilters) return filters;
74
+
75
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
76
+ if (typeof activeFilters.forEach === 'function') {
77
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
+ activeFilters.forEach(f => {
79
+ if (f.get('active') === true) {
80
+ filters.push({
81
+ pattern: f.get('pattern'),
82
+ field: f.get('field')
83
+ });
84
+ }
85
+ });
86
+ }
87
+ return filters;
88
+ }
89
+
90
+ /**
91
+ * Apply filters to an entry
92
+ */
93
+ export function matchesFilters(entry, filters) {
94
+ return filters.every(({
95
+ pattern,
96
+ field
97
+ }) => {
98
+ const data = ('data' in entry ? entry.data : entry) || {};
99
+ const value = getFieldValue(data, field);
100
+ return value !== undefined && new RegExp(String(pattern)).test(String(value));
101
+ });
102
+ }
@@ -11,6 +11,7 @@ import { COMMIT_AUTHOR, COMMIT_DATE } from '../constants/commitProps';
11
11
  const {
12
12
  compileStringTemplate,
13
13
  parseDateFromEntry,
14
+ parseDateFromEntryData,
14
15
  SLUG_MISSING_REQUIRED_DATE,
15
16
  keyToPathArray,
16
17
  addFileTemplateFields
@@ -91,7 +92,7 @@ export function slugFormatter(collection, entryData, slugConfig) {
91
92
  throw new Error('Collection must have a field name that is a valid entry identifier, or must have `identifier_field` set');
92
93
  }
93
94
  const processSegment = getProcessSegment(slugConfig);
94
- const date = new Date();
95
+ const date = parseDateFromEntryData(entryData, selectInferredField(collection, 'date')) || new Date(Date.now());
95
96
  const slug = compileStringTemplate(slugTemplate, date, identifier, entryData, processSegment);
96
97
  if (!collection.has('path')) {
97
98
  return slug;
@@ -0,0 +1,21 @@
1
+ import { Map } from 'immutable';
2
+ /**
3
+ * Type guard to check if an object is an Immutable.js Map
4
+ */
5
+ export function isImmutableMap(obj) {
6
+ return Map.isMap(obj);
7
+ }
8
+
9
+ /**
10
+ * Helper to safely get a value from either an Immutable Map or plain object
11
+ */
12
+ export function getValue(obj, key) {
13
+ if (!obj) return undefined;
14
+ if (isImmutableMap(obj)) {
15
+ return obj.get(key);
16
+ }
17
+ if (typeof obj === 'object' && obj !== null) {
18
+ return obj[key];
19
+ }
20
+ return undefined;
21
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Determines if a file slug matches the index file pattern for a collection.
3
+ * @param filePath - The file slug or path to check
4
+ * @param pattern - The regex pattern from the collection's index_file config
5
+ * @param nested - Whether the collection is nested (affects how the slug is extracted)
6
+ * @returns True if the file matches the index file pattern
7
+ */
8
+ export function isIndexFile(filePath, pattern, nested) {
9
+ const fileSlug = nested ? filePath?.split('/').pop() : filePath;
10
+ return !!(fileSlug && new RegExp(pattern).test(fileSlug));
11
+ }
12
+
13
+ /**
14
+ * Determines if an entry is an index file entry.
15
+ * Checks both the meta.path_type field (set by the backend) and the slug pattern.
16
+ * @param entry - The entry to check
17
+ * @param collection - The collection configuration containing index_file pattern
18
+ * @returns True if the entry is an index file
19
+ */
20
+ export function isIndexFileEntry(entry, collection) {
21
+ if (!entry) {
22
+ return false;
23
+ }
24
+ const pathType = entry.getIn(['meta', 'path_type']);
25
+ if (pathType === 'index') {
26
+ return true;
27
+ }
28
+ const indexFileConfig = collection.get('index_file');
29
+ if (!indexFileConfig) {
30
+ return false;
31
+ }
32
+ const slug = entry.get('slug');
33
+ const pattern = indexFileConfig.get('pattern');
34
+ const nested = !!collection.get('nested');
35
+ return isIndexFile(slug, pattern, nested);
36
+ }