decap-cms-core 3.5.0 → 3.6.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 (137) hide show
  1. package/dist/decap-cms-core.js +9 -9
  2. package/dist/decap-cms-core.js.map +1 -1
  3. package/dist/esm/actions/auth.js +22 -37
  4. package/dist/esm/actions/collections.js +9 -17
  5. package/dist/esm/actions/config.js +58 -74
  6. package/dist/esm/actions/deploys.js +10 -17
  7. package/dist/esm/actions/editorialWorkflow.js +87 -101
  8. package/dist/esm/actions/entries.js +161 -211
  9. package/dist/esm/actions/media.js +31 -46
  10. package/dist/esm/actions/mediaLibrary.js +94 -126
  11. package/dist/esm/actions/notifications.js +5 -13
  12. package/dist/esm/actions/search.js +30 -47
  13. package/dist/esm/actions/status.js +13 -23
  14. package/dist/esm/actions/waitUntil.js +4 -11
  15. package/dist/esm/backend.js +132 -148
  16. package/dist/esm/bootstrap.js +37 -44
  17. package/dist/esm/components/App/App.js +82 -89
  18. package/dist/esm/components/App/Header.js +46 -52
  19. package/dist/esm/components/App/NotFoundPage.js +11 -18
  20. package/dist/esm/components/Collection/Collection.js +55 -63
  21. package/dist/esm/components/Collection/CollectionControls.js +15 -22
  22. package/dist/esm/components/Collection/CollectionSearch.js +35 -42
  23. package/dist/esm/components/Collection/CollectionTop.js +23 -30
  24. package/dist/esm/components/Collection/ControlButton.js +10 -16
  25. package/dist/esm/components/Collection/Entries/Entries.js +24 -31
  26. package/dist/esm/components/Collection/Entries/EntriesCollection.js +52 -62
  27. package/dist/esm/components/Collection/Entries/EntriesSearch.js +26 -33
  28. package/dist/esm/components/Collection/Entries/EntryCard.js +38 -45
  29. package/dist/esm/components/Collection/Entries/EntryListing.js +24 -32
  30. package/dist/esm/components/Collection/FilterControl.js +9 -16
  31. package/dist/esm/components/Collection/GroupControl.js +9 -16
  32. package/dist/esm/components/Collection/NestedCollection.js +54 -65
  33. package/dist/esm/components/Collection/Sidebar.js +36 -43
  34. package/dist/esm/components/Collection/SortControl.js +19 -26
  35. package/dist/esm/components/Collection/ViewStyleControl.js +17 -24
  36. package/dist/esm/components/Editor/Editor.js +100 -108
  37. package/dist/esm/components/Editor/EditorControlPane/EditorControl.js +105 -112
  38. package/dist/esm/components/Editor/EditorControlPane/EditorControlPane.js +68 -62
  39. package/dist/esm/components/Editor/EditorControlPane/Widget.js +87 -73
  40. package/dist/esm/components/Editor/EditorInterface.js +95 -98
  41. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreview.js +13 -21
  42. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewContent.js +64 -23
  43. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewPane.js +94 -78
  44. package/dist/esm/components/Editor/EditorPreviewPane/PreviewHOC.js +9 -16
  45. package/dist/esm/components/Editor/EditorToolbar.js +133 -140
  46. package/dist/esm/components/Editor/withWorkflow.js +15 -22
  47. package/dist/esm/components/EditorWidgets/Unknown/UnknownControl.js +9 -16
  48. package/dist/esm/components/EditorWidgets/Unknown/UnknownPreview.js +9 -16
  49. package/dist/esm/components/EditorWidgets/index.js +4 -7
  50. package/dist/esm/components/MediaLibrary/EmptyMessage.js +12 -19
  51. package/dist/esm/components/MediaLibrary/MediaLibrary.js +55 -62
  52. package/dist/esm/components/MediaLibrary/MediaLibraryButtons.js +28 -35
  53. package/dist/esm/components/MediaLibrary/MediaLibraryCard.js +36 -43
  54. package/dist/esm/components/MediaLibrary/MediaLibraryCardGrid.js +50 -57
  55. package/dist/esm/components/MediaLibrary/MediaLibraryHeader.js +16 -23
  56. package/dist/esm/components/MediaLibrary/MediaLibraryModal.js +59 -64
  57. package/dist/esm/components/MediaLibrary/MediaLibrarySearch.js +18 -25
  58. package/dist/esm/components/MediaLibrary/MediaLibraryTop.js +39 -46
  59. package/dist/esm/components/UI/DragDrop.js +21 -30
  60. package/dist/esm/components/UI/ErrorBoundary.js +35 -43
  61. package/dist/esm/components/UI/FileUploadButton.js +11 -18
  62. package/dist/esm/components/UI/Modal.js +19 -26
  63. package/dist/esm/components/UI/Notifications.js +21 -28
  64. package/dist/esm/components/UI/SettingsDropdown.js +28 -34
  65. package/dist/esm/components/UI/index.js +6 -60
  66. package/dist/esm/components/Workflow/Workflow.js +52 -61
  67. package/dist/esm/components/Workflow/WorkflowCard.js +45 -51
  68. package/dist/esm/components/Workflow/WorkflowList.js +43 -49
  69. package/dist/esm/constants/collectionTypes.js +2 -8
  70. package/dist/esm/constants/collectionViews.js +2 -8
  71. package/dist/esm/constants/commitProps.js +2 -8
  72. package/dist/esm/constants/configSchema.js +20 -27
  73. package/dist/esm/constants/fieldInference.js +8 -15
  74. package/dist/esm/constants/publishModes.js +6 -11
  75. package/dist/esm/constants/validationErrorTypes.js +1 -7
  76. package/dist/esm/formats/formats.js +32 -41
  77. package/dist/esm/formats/frontmatter.js +18 -30
  78. package/dist/esm/formats/helpers.js +1 -7
  79. package/dist/esm/formats/json.js +1 -7
  80. package/dist/esm/formats/toml.js +11 -18
  81. package/dist/esm/formats/yaml.js +7 -14
  82. package/dist/esm/index.js +5 -12
  83. package/dist/esm/integrations/index.js +8 -16
  84. package/dist/esm/integrations/providers/algolia/implementation.js +14 -22
  85. package/dist/esm/integrations/providers/assetStore/implementation.js +10 -18
  86. package/dist/esm/lib/consoleError.js +1 -7
  87. package/dist/esm/lib/formatters.js +34 -47
  88. package/dist/esm/lib/i18n.js +37 -66
  89. package/dist/esm/lib/phrases.js +4 -11
  90. package/dist/esm/lib/registry.js +40 -75
  91. package/dist/esm/lib/serializeEntryValues.js +11 -18
  92. package/dist/esm/lib/textHelper.js +1 -7
  93. package/dist/esm/lib/urlHelper.js +28 -43
  94. package/dist/esm/mediaLibrary.js +12 -16
  95. package/dist/esm/reducers/auth.js +10 -16
  96. package/dist/esm/reducers/collections.js +70 -102
  97. package/dist/esm/reducers/combinedReducer.js +4 -11
  98. package/dist/esm/reducers/config.js +11 -19
  99. package/dist/esm/reducers/cursors.js +12 -18
  100. package/dist/esm/reducers/deploys.js +8 -15
  101. package/dist/esm/reducers/editorialWorkflow.js +37 -47
  102. package/dist/esm/reducers/entries.js +107 -132
  103. package/dist/esm/reducers/entryDraft.js +64 -72
  104. package/dist/esm/reducers/globalUI.js +5 -11
  105. package/dist/esm/reducers/index.js +43 -64
  106. package/dist/esm/reducers/integrations.js +8 -16
  107. package/dist/esm/reducers/mediaLibrary.js +43 -52
  108. package/dist/esm/reducers/medias.js +11 -18
  109. package/dist/esm/reducers/notifications.js +9 -15
  110. package/dist/esm/reducers/search.js +12 -18
  111. package/dist/esm/reducers/status.js +7 -13
  112. package/dist/esm/redux/index.js +7 -13
  113. package/dist/esm/redux/middleware/waitUntilAction.js +3 -10
  114. package/dist/esm/routing/history.js +7 -15
  115. package/dist/esm/types/diacritics.d.js +0 -1
  116. package/dist/esm/types/global.d.js +1 -5
  117. package/dist/esm/types/immutable.js +1 -5
  118. package/dist/esm/types/redux.js +7 -8
  119. package/dist/esm/types/tomlify-j0.4.d.js +0 -1
  120. package/dist/esm/valueObjects/AssetProxy.js +2 -10
  121. package/dist/esm/valueObjects/EditorComponent.js +5 -12
  122. package/dist/esm/valueObjects/Entry.js +3 -10
  123. package/package.json +3 -2
  124. package/src/components/Collection/Entries/EntriesCollection.js +7 -8
  125. package/src/components/Collection/Entries/__tests__/EntriesCollection.spec.js +3 -5
  126. package/src/components/Collection/Entries/__tests__/__snapshots__/EntriesCollection.spec.js.snap +8 -8
  127. package/src/components/Collection/NestedCollection.js +2 -2
  128. package/src/components/Collection/__tests__/__snapshots__/NestedCollection.spec.js.snap +68 -0
  129. package/src/components/Editor/EditorControlPane/EditorControl.js +0 -3
  130. package/src/components/Editor/EditorControlPane/EditorControlPane.js +21 -8
  131. package/src/components/Editor/EditorControlPane/Widget.js +22 -1
  132. package/src/components/Editor/EditorInterface.js +6 -1
  133. package/src/components/Editor/EditorPreviewPane/EditorPreviewContent.js +51 -11
  134. package/src/components/Editor/EditorPreviewPane/EditorPreviewPane.js +33 -1
  135. package/dist/esm/actions/editorControl.js +0 -14
  136. package/dist/esm/reducers/editorComponent.js +0 -1
  137. package/dist/esm/reducers/editorControl.js +0 -17
@@ -1,20 +1,13 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _base = _interopRequireDefault(require("@emotion/styled/base"));
8
- var _react = _interopRequireDefault(require("react"));
9
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
11
- var _react2 = require("@emotion/react");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1
+ import _styled from "@emotion/styled/base";
13
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 React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import ImmutablePropTypes from 'react-immutable-proptypes';
6
+ import { jsx as ___EmotionJSX } from "@emotion/react";
14
7
  function isVisible(field) {
15
8
  return field.get('widget') !== 'hidden';
16
9
  }
17
- const PreviewContainer = /*#__PURE__*/(0, _base.default)("div", {
10
+ const PreviewContainer = /*#__PURE__*/_styled("div", {
18
11
  target: "e1iji6y40",
19
12
  label: "PreviewContainer"
20
13
  })(process.env.NODE_ENV === "production" ? {
@@ -31,7 +24,7 @@ const PreviewContainer = /*#__PURE__*/(0, _base.default)("div", {
31
24
  * Use a stateful component so that child components can effectively utilize
32
25
  * `shouldComponentUpdate`.
33
26
  */
34
- class Preview extends _react.default.Component {
27
+ export default class Preview extends React.Component {
35
28
  render() {
36
29
  const {
37
30
  collection,
@@ -41,16 +34,15 @@ class Preview extends _react.default.Component {
41
34
  if (!collection || !fields) {
42
35
  return null;
43
36
  }
44
- return (0, _react2.jsx)(PreviewContainer, null, fields.filter(isVisible).map(field => (0, _react2.jsx)("div", {
37
+ return ___EmotionJSX(PreviewContainer, null, fields.filter(isVisible).map(field => ___EmotionJSX("div", {
45
38
  key: field.get('name')
46
39
  }, widgetFor(field.get('name')))));
47
40
  }
48
41
  }
49
- exports.default = Preview;
50
42
  Preview.propTypes = {
51
- collection: _reactImmutableProptypes.default.map.isRequired,
52
- entry: _reactImmutableProptypes.default.map.isRequired,
53
- fields: _reactImmutableProptypes.default.list.isRequired,
54
- getAsset: _propTypes.default.func.isRequired,
55
- widgetFor: _propTypes.default.func.isRequired
43
+ collection: ImmutablePropTypes.map.isRequired,
44
+ entry: ImmutablePropTypes.map.isRequired,
45
+ fields: ImmutablePropTypes.list.isRequired,
46
+ getAsset: PropTypes.func.isRequired,
47
+ widgetFor: PropTypes.func.isRequired
56
48
  };
@@ -1,33 +1,74 @@
1
- "use strict";
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
+ import PropTypes from 'prop-types';
5
+ import React from 'react';
6
+ import { isElement } from 'react-is';
7
+ import { ScrollSyncPane } from 'react-scroll-sync';
8
+ import { FrameContextConsumer } from 'react-frame-component';
9
+ import { vercelStegaDecode } from '@vercel/stega';
2
10
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _propTypes = _interopRequireDefault(require("prop-types"));
8
- var _react = _interopRequireDefault(require("react"));
9
- var _reactIs = require("react-is");
10
- var _reactScrollSync = require("react-scroll-sync");
11
- var _reactFrameComponent = require("react-frame-component");
12
- var _react2 = require("@emotion/react");
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
11
  /**
15
- * We need to create a lightweight component here so that we can access the
16
- * context within the Frame. This allows us to attach the ScrollSyncPane to the
17
- * body.
18
- */class PreviewContent extends _react.default.Component {
19
- render() {
12
+ * PreviewContent renders the preview component and optionally handles visual editing interactions.
13
+ * By default it uses scroll sync, but can be configured to use visual editing instead.
14
+ */
15
+ import { jsx as ___EmotionJSX } from "@emotion/react";
16
+ class PreviewContent extends React.Component {
17
+ constructor(...args) {
18
+ super(...args);
19
+ _defineProperty(this, "handleClick", e => {
20
+ var _previewProps$collect;
21
+ const {
22
+ previewProps,
23
+ onFieldClick
24
+ } = this.props;
25
+ const visualEditing = previewProps === null || previewProps === void 0 ? void 0 : (_previewProps$collect = previewProps.collection) === null || _previewProps$collect === void 0 ? void 0 : _previewProps$collect.getIn(['editor', 'visualEditing'], false);
26
+ if (!visualEditing) {
27
+ return;
28
+ }
29
+ try {
30
+ const text = e.target.textContent;
31
+ const decoded = vercelStegaDecode(text);
32
+ if (decoded !== null && decoded !== void 0 && decoded.decap) {
33
+ if (onFieldClick) {
34
+ onFieldClick(decoded.decap);
35
+ }
36
+ }
37
+ } catch (err) {
38
+ console.log('Visual editing error:', err);
39
+ }
40
+ });
41
+ }
42
+ renderPreview() {
20
43
  const {
21
44
  previewComponent,
22
45
  previewProps
23
46
  } = this.props;
24
- return (0, _react2.jsx)(_reactFrameComponent.FrameContextConsumer, null, context => (0, _react2.jsx)(_reactScrollSync.ScrollSyncPane, {
25
- attachTo: context.document.scrollingElement
26
- }, (0, _reactIs.isElement)(previewComponent) ? /*#__PURE__*/_react.default.cloneElement(previewComponent, previewProps) : /*#__PURE__*/_react.default.createElement(previewComponent, previewProps)));
47
+ return ___EmotionJSX("div", {
48
+ onClick: this.handleClick
49
+ }, isElement(previewComponent) ? /*#__PURE__*/React.cloneElement(previewComponent, previewProps) : /*#__PURE__*/React.createElement(previewComponent, previewProps));
50
+ }
51
+ render() {
52
+ var _previewProps$collect2;
53
+ const {
54
+ previewProps
55
+ } = this.props;
56
+ const visualEditing = previewProps === null || previewProps === void 0 ? void 0 : (_previewProps$collect2 = previewProps.collection) === null || _previewProps$collect2 === void 0 ? void 0 : _previewProps$collect2.getIn(['editor', 'visualEditing'], false);
57
+ const showScrollSync = !visualEditing;
58
+ return ___EmotionJSX(FrameContextConsumer, null, context => {
59
+ const preview = this.renderPreview();
60
+ if (showScrollSync) {
61
+ return ___EmotionJSX(ScrollSyncPane, {
62
+ attachTo: context.document.scrollingElement
63
+ }, preview);
64
+ }
65
+ return preview;
66
+ });
27
67
  }
28
68
  }
29
69
  PreviewContent.propTypes = {
30
- previewComponent: _propTypes.default.func.isRequired,
31
- previewProps: _propTypes.default.object
70
+ previewComponent: PropTypes.func.isRequired,
71
+ previewProps: PropTypes.object,
72
+ onFieldClick: PropTypes.func
32
73
  };
33
- var _default = exports.default = PreviewContent;
74
+ export default PreviewContent;
@@ -1,41 +1,33 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = exports.PreviewPane = void 0;
7
- var _base = _interopRequireDefault(require("@emotion/styled/base"));
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _immutable = require("immutable");
11
- var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
12
- var _reactFrameComponent = _interopRequireWildcard(require("react-frame-component"));
13
- var _decapCmsUiDefault = require("decap-cms-ui-default");
14
- var _reactRedux = require("react-redux");
15
- var _registry = require("../../../lib/registry");
16
- var _entries = require("../../../actions/entries");
17
- var _UI = require("../../UI");
18
- var _collections = require("../../../reducers/collections");
19
- var _media = require("../../../actions/media");
20
- var _medias = require("../../../reducers/medias");
21
- var _fieldInference = require("../../../constants/fieldInference");
22
- var _EditorPreviewContent = _interopRequireDefault(require("./EditorPreviewContent.js"));
23
- var _PreviewHOC = _interopRequireDefault(require("./PreviewHOC"));
24
- var _EditorPreview = _interopRequireDefault(require("./EditorPreview"));
25
- var _react2 = require("@emotion/react");
26
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
27
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
28
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1
+ import _styled from "@emotion/styled/base";
29
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
30
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
31
4
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
32
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
33
6
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
34
- const PreviewPaneFrame = /*#__PURE__*/(0, _base.default)(_reactFrameComponent.default, {
7
+ import PropTypes from 'prop-types';
8
+ import React from 'react';
9
+ import { List, Map } from 'immutable';
10
+ import ImmutablePropTypes from 'react-immutable-proptypes';
11
+ import Frame, { FrameContextConsumer } from 'react-frame-component';
12
+ import { lengths } from 'decap-cms-ui-default';
13
+ import { connect } from 'react-redux';
14
+ import { encodeEntry } from 'decap-cms-lib-util/src/stega';
15
+ import { resolveWidget, getPreviewTemplate, getPreviewStyles, getRemarkPlugins } from '../../../lib/registry';
16
+ import { getAllEntries, tryLoadEntry } from '../../../actions/entries';
17
+ import { ErrorBoundary } from '../../UI';
18
+ import { selectTemplateName, selectInferredField, selectField } from '../../../reducers/collections';
19
+ import { boundGetAsset } from '../../../actions/media';
20
+ import { selectIsLoadingAsset } from '../../../reducers/medias';
21
+ import { INFERABLE_FIELDS } from '../../../constants/fieldInference';
22
+ import EditorPreviewContent from './EditorPreviewContent.js';
23
+ import PreviewHOC from './PreviewHOC';
24
+ import EditorPreview from './EditorPreview';
25
+ import { jsx as ___EmotionJSX } from "@emotion/react";
26
+ const PreviewPaneFrame = /*#__PURE__*/_styled(Frame, {
35
27
  target: "enus48h0",
36
28
  label: "PreviewPaneFrame"
37
- })("width:100%;height:100%;border:none;background:#fff;border-radius:", _decapCmsUiDefault.lengths.borderRadius, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0VkaXRvci9FZGl0b3JQcmV2aWV3UGFuZS9FZGl0b3JQcmV2aWV3UGFuZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2QnNDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0VkaXRvci9FZGl0b3JQcmV2aWV3UGFuZS9FZGl0b3JQcmV2aWV3UGFuZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgTGlzdCwgTWFwIH0gZnJvbSAnaW1tdXRhYmxlJztcbmltcG9ydCBJbW11dGFibGVQcm9wVHlwZXMgZnJvbSAncmVhY3QtaW1tdXRhYmxlLXByb3B0eXBlcyc7XG5pbXBvcnQgRnJhbWUsIHsgRnJhbWVDb250ZXh0Q29uc3VtZXIgfSBmcm9tICdyZWFjdC1mcmFtZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgbGVuZ3RocyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCB7XG4gIHJlc29sdmVXaWRnZXQsXG4gIGdldFByZXZpZXdUZW1wbGF0ZSxcbiAgZ2V0UHJldmlld1N0eWxlcyxcbiAgZ2V0UmVtYXJrUGx1Z2lucyxcbn0gZnJvbSAnLi4vLi4vLi4vbGliL3JlZ2lzdHJ5JztcbmltcG9ydCB7IGdldEFsbEVudHJpZXMsIHRyeUxvYWRFbnRyeSB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvZW50cmllcyc7XG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSAnLi4vLi4vVUknO1xuaW1wb3J0IHtcbiAgc2VsZWN0VGVtcGxhdGVOYW1lLFxuICBzZWxlY3RJbmZlcnJlZEZpZWxkLFxuICBzZWxlY3RGaWVsZCxcbn0gZnJvbSAnLi4vLi4vLi4vcmVkdWNlcnMvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgYm91bmRHZXRBc3NldCB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvbWVkaWEnO1xuaW1wb3J0IHsgc2VsZWN0SXNMb2FkaW5nQXNzZXQgfSBmcm9tICcuLi8uLi8uLi9yZWR1Y2Vycy9tZWRpYXMnO1xuaW1wb3J0IHsgSU5GRVJBQkxFX0ZJRUxEUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9maWVsZEluZmVyZW5jZSc7XG5pbXBvcnQgRWRpdG9yUHJldmlld0NvbnRlbnQgZnJvbSAnLi9FZGl0b3JQcmV2aWV3Q29udGVudC5qcyc7XG5pbXBvcnQgUHJldmlld0hPQyBmcm9tICcuL1ByZXZpZXdIT0MnO1xuaW1wb3J0IEVkaXRvclByZXZpZXcgZnJvbSAnLi9FZGl0b3JQcmV2aWV3JztcblxuY29uc3QgUHJldmlld1BhbmVGcmFtZSA9IHN0eWxlZChGcmFtZSlgXG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogJHtsZW5ndGhzLmJvcmRlclJhZGl1c307XG5gO1xuXG5leHBvcnQgY2xhc3MgUHJldmlld1BhbmUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRXaWRnZXQgPSAoZmllbGQsIHZhbHVlLCBtZXRhZGF0YSwgcHJvcHMsIGlkeCA9IG51bGwpID0+IHtcbiAgICBjb25zdCB7IGdldEFzc2V0LCBlbnRyeSB9ID0gcHJvcHM7XG4gICAgY29uc3Qgd2lkZ2V0ID0gcmVzb2x2ZVdpZGdldChmaWVsZC5nZXQoJ3dpZGdldCcpKTtcbiAgICBjb25zdCBrZXkgPSBpZHggPyBmaWVsZC5nZXQoJ25hbWUnKSArICdfJyArIGlkeCA6IGZpZWxkLmdldCgnbmFtZScpO1xuICAgIGNvbnN0IHZhbHVlSXNJbk1hcCA9IHZhbHVlICYmICF3aWRnZXQuYWxsb3dNYXBWYWx1ZSAmJiBNYXAuaXNNYXAodmFsdWUpO1xuXG4gICAgLyoqXG4gICAgICogVXNlIGFuIEhPQyB0byBwcm92aWRlIGNvbmRpdGlvbmFsIHVwZGF0ZXMgZm9yIGFsbCBwcmV2aWV3cy5cbiAgICAgKi9cbiAgICByZXR1cm4gIXdpZGdldC5wcmV2aWV3ID8gbnVsbCA6IChcbiAgICAgIDxQcmV2aWV3SE9DXG4gICAgICAgIHByZXZpZXdDb21wb25lbnQ9e3dpZGdldC5wcmV2aWV3fVxuICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgZmllbGQ9e2ZpZWxkfVxuICAgICAgICBnZXRBc3NldD17Z2V0QXNzZXR9XG4gICAgICAgIHZhbHVlPXt2YWx1ZUlzSW5NYXAgPyB2YWx1ZS5nZXQoZmllbGQuZ2V0KCduYW1lJykpIDogdmFsdWV9XG4gICAgICAgIGVudHJ5PXtlbnRyeX1cbiAgICAgICAgZmllbGRzTWV0YURhdGE9e21ldGFkYXRhfVxuICAgICAgICByZXNvbHZlV2lkZ2V0PXtyZXNvbHZlV2lkZ2V0fVxuICAgICAgICBnZXRSZW1hcmtQbHVnaW5zPXtnZXRSZW1hcmtQbHVnaW5zfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIGluZmVycmVkRmllbGRzID0ge307XG5cbiAgaW5mZXJGaWVsZHMoKSB7XG4gICAgY29uc3QgdGl0bGVGaWVsZCA9IHNlbGVjdEluZmVycmVkRmllbGQodGhpcy5wcm9wcy5jb2xsZWN0aW9uLCAndGl0bGUnKTtcbiAgICBjb25zdCBzaG9ydFRpdGxlRmllbGQgPSBzZWxlY3RJbmZlcnJlZEZpZWxkKHRoaXMucHJvcHMuY29sbGVjdGlvbiwgJ3Nob3J0VGl0bGUnKTtcbiAgICBjb25zdCBhdXRob3JGaWVsZCA9IHNlbGVjdEluZmVycmVkRmllbGQodGhpcy5wcm9wcy5jb2xsZWN0aW9uLCAnYXV0aG9yJyk7XG5cbiAgICB0aGlzLmluZmVycmVkRmllbGRzID0ge307XG4gICAgaWYgKHRpdGxlRmllbGQpIHRoaXMuaW5mZXJyZWRGaWVsZHNbdGl0bGVGaWVsZF0gPSBJTkZFUkFCTEVfRklFTERTLnRpdGxlO1xuICAgIGlmIChzaG9ydFRpdGxlRmllbGQpIHRoaXMuaW5mZXJyZWRGaWVsZHNbc2hvcnRUaXRsZUZpZWxkXSA9IElORkVSQUJMRV9GSUVMRFMuc2hvcnRUaXRsZTtcbiAgICBpZiAoYXV0aG9yRmllbGQpIHRoaXMuaW5mZXJyZWRGaWVsZHNbYXV0aG9yRmllbGRdID0gSU5GRVJBQkxFX0ZJRUxEUy5hdXRob3I7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgd2lkZ2V0IGNvbXBvbmVudCBmb3IgYSBuYW1lZCBmaWVsZCwgYW5kIG1ha2VzIHJlY3Vyc2l2ZSBjYWxsc1xuICAgKiB0byByZXRyaWV2ZSBjb21wb25lbnRzIGZvciBuZXN0ZWQgYW5kIGRlZXBseSBuZXN0ZWQgZmllbGRzLCB3aGljaCBvY2N1ciBpblxuICAgKiBvYmplY3QgYW5kIGxpc3QgdHlwZSBmaWVsZHMuIFVzZWQgaW50ZXJuYWxseSB0byByZXRyaWV2ZSB3aWRnZXRzLCBhbmQgYWxzb1xuICAgKiBleHBvc2VkIGZvciB1c2UgaW4gY3VzdG9tIHByZXZpZXcgdGVtcGxhdGVzLlxuICAgKi9cbiAgd2lkZ2V0Rm9yID0gKFxuICAgIG5hbWUsXG4gICAgZmllbGRzID0gdGhpcy5wcm9wcy5maWVsZHMsXG4gICAgdmFsdWVzID0gdGhpcy5wcm9wcy5lbnRyeS5nZXQoJ2RhdGEnKSxcbiAgICBmaWVsZHNNZXRhRGF0YSA9IHRoaXMucHJvcHMuZmllbGRzTWV0YURhdGEsXG4gICkgPT4ge1xuICAgIC8vIFdlIHJldHJpZXZlIHRoZSBmaWVsZCBieSBuYW1lIHNvIHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBiZSB1c2VkIGluXG4gICAgLy8gY3VzdG9tIHByZXZpZXcgdGVtcGxhdGVzLCB3aGVyZSB0aGUgZmllbGQgb2JqZWN0IGNhbid0IGJlIHBhc3NlZCBpbi5cbiAgICBsZXQgZmllbGQgPSBmaWVsZHMgJiYgZmllbGRzLmZpbmQoZiA9PiBmLmdldCgnbmFtZScpID09PSBuYW1lKTtcbiAgICBsZXQgdmFsdWUgPSBNYXAuaXNNYXAodmFsdWVzKSAmJiB2YWx1ZXMuZ2V0KGZpZWxkLmdldCgnbmFtZScpKTtcbiAgICBpZiAoZmllbGQuZ2V0KCdtZXRhJykpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5wcm9wcy5lbnRyeS5nZXRJbihbJ21ldGEnLCBmaWVsZC5nZXQoJ25hbWUnKV0pO1xuICAgIH1cbiAgICBjb25zdCBuZXN0ZWRGaWVsZHMgPSBmaWVsZC5nZXQoJ2ZpZWxkcycpO1xuICAgIGNvbnN0IHNpbmdsZUZpZWxkID0gZmllbGQuZ2V0KCdmaWVsZCcpO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gZmllbGRzTWV0YURhdGEgJiYgZmllbGRzTWV0YURhdGEuZ2V0KGZpZWxkLmdldCgnbmFtZScpLCBNYXAoKSk7XG5cbiAgICBpZiAobmVzdGVkRmllbGRzKSB7XG4gICAgICBmaWVsZCA9IGZpZWxkLnNldCgnZmllbGRzJywgdGhpcy5nZXROZXN0ZWRXaWRnZXRzKG5lc3RlZEZpZWxkcywgdmFsdWUsIG1ldGFkYXRhKSk7XG4gICAgfVxuXG4gICAgaWYgKHNpbmdsZUZpZWxkKSB7XG4gICAgICBmaWVsZCA9IGZpZWxkLnNldCgnZmllbGQnLCB0aGlzLmdldFNpbmdsZU5lc3RlZChzaW5nbGVGaWVsZCwgdmFsdWUsIG1ldGFkYXRhKSk7XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWxsZWRXaWRnZXRzID0gWydzdHJpbmcnLCAndGV4dCcsICdudW1iZXInXTtcbiAgICBjb25zdCBpbmZlcnJlZEZpZWxkID0gT2JqZWN0LmVudHJpZXModGhpcy5pbmZlcnJlZEZpZWxkcylcbiAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkVG9NYXRjaCA9IHNlbGVjdEZpZWxkKHRoaXMucHJvcHMuY29sbGVjdGlvbiwga2V5KTtcbiAgICAgICAgcmV0dXJuIGZpZWxkVG9NYXRjaCA9PT0gZmllbGQ7XG4gICAgICB9KVxuICAgICAgLm1hcCgoWywgdmFsdWVdKSA9PiB2YWx1ZSlbMF07XG5cbiAgICBpZiAoaW5mZXJyZWRGaWVsZCkge1xuICAgICAgdmFsdWUgPSBpbmZlcnJlZEZpZWxkLmRlZmF1bHRQcmV2aWV3KHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdmFsdWUgJiZcbiAgICAgIGxhYmVsbGVkV2lkZ2V0cy5pbmRleE9mKGZpZWxkLmdldCgnd2lkZ2V0JykpICE9PSAtMSAmJlxuICAgICAgdmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPCA1MFxuICAgICkge1xuICAgICAgdmFsdWUgPSAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHN0cm9uZz57ZmllbGQuZ2V0KCdsYWJlbCcsIGZpZWxkLmdldCgnbmFtZScpKX06PC9zdHJvbmc+IHt2YWx1ZX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuZ2V0V2lkZ2V0KGZpZWxkLCB2YWx1ZSwgbWV0YWRhdGEsIHRoaXMucHJvcHMpIDogbnVsbDtcbiAgfTtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHdpZGdldHMgZm9yIG5lc3RlZCBmaWVsZHMgKGNoaWxkcmVuIG9mIG9iamVjdC9saXN0IGZpZWxkcylcbiAgICovXG4gIGdldE5lc3RlZFdpZGdldHMgPSAoZmllbGRzLCB2YWx1ZXMsIGZpZWxkc01ldGFEYXRhKSA9PiB7XG4gICAgLy8gRmllbGRzIG5lc3RlZCB3aXRoaW4gYSBsaXN0IGZpZWxkIHdpbGwgYmUgcGFpcmVkIHdpdGggYSBMaXN0IG9mIHZhbHVlIE1hcHMuXG4gICAgaWYgKExpc3QuaXNMaXN0KHZhbHVlcykpIHtcbiAgICAgIHJldHVybiB2YWx1ZXMubWFwKHZhbHVlID0+IHRoaXMud2lkZ2V0c0Zvck5lc3RlZEZpZWxkcyhmaWVsZHMsIHZhbHVlLCBmaWVsZHNNZXRhRGF0YSkpO1xuICAgIH1cbiAgICAvLyBGaWVsZHMgbmVzdGVkIHdpdGhpbiBhbiBvYmplY3QgZmllbGQgd2lsbCBiZSBwYWlyZWQgd2l0aCBhIHNpbmdsZSBNYXAgb2YgdmFsdWVzLlxuICAgIHJldHVybiB0aGlzLndpZGdldHNGb3JOZXN0ZWRGaWVsZHMoZmllbGRzLCB2YWx1ZXMsIGZpZWxkc01ldGFEYXRhKTtcbiAgfTtcblxuICBnZXRTaW5nbGVOZXN0ZWQgPSAoZmllbGQsIHZhbHVlcywgZmllbGRzTWV0YURhdGEpID0+IHtcbiAgICBpZiAoTGlzdC5pc0xpc3QodmFsdWVzKSkge1xuICAgICAgcmV0dXJuIHZhbHVlcy5tYXAoKHZhbHVlLCBpZHgpID0+XG4gICAgICAgIHRoaXMuZ2V0V2lkZ2V0KGZpZWxkLCB2YWx1ZSwgZmllbGRzTWV0YURhdGEuZ2V0KGZpZWxkLmdldCgnbmFtZScpKSwgdGhpcy5wcm9wcywgaWR4KSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFdpZGdldChmaWVsZCwgdmFsdWVzLCBmaWVsZHNNZXRhRGF0YS5nZXQoZmllbGQuZ2V0KCduYW1lJykpLCB0aGlzLnByb3BzKTtcbiAgfTtcblxuICAvKipcbiAgICogVXNlIHdpZGdldEZvciBhcyBhIG1hcHBpbmcgZnVuY3Rpb24gZm9yIHJlY3Vyc2l2ZSB3aWRnZXQgcmV0cmlldmFsXG4gICAqL1xuICB3aWRnZXRzRm9yTmVzdGVkRmllbGRzID0gKGZpZWxkcywgdmFsdWVzLCBmaWVsZHNNZXRhRGF0YSkgPT4ge1xuICAgIHJldHVybiBmaWVsZHMubWFwKGZpZWxkID0+IHRoaXMud2lkZ2V0Rm9yKGZpZWxkLmdldCgnbmFtZScpLCBmaWVsZHMsIHZhbHVlcywgZmllbGRzTWV0YURhdGEpKTtcbiAgfTtcblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBleGlzdHMgZW50aXJlbHkgdG8gZXhwb3NlIG5lc3RlZCB3aWRnZXRzIGZvciBvYmplY3QgYW5kIGxpc3RcbiAgICogZmllbGRzIHRvIGN1c3RvbSBwcmV2aWV3IHRlbXBsYXRlcy5cbiAgICpcbiAgICogVE9ETzogc2VlIGlmIHdpZGdldEZvciBjYW4gbm93IHByb3ZpZGUgdGhpcyBmdW5jdGlvbmFsaXR5IGZvciBwcmV2aWV3IHRlbXBsYXRlc1xuICAgKi9cbiAgd2lkZ2V0c0ZvciA9IG5hbWUgPT4ge1xuICAgIGNvbnN0IHsgZmllbGRzLCBlbnRyeSwgZmllbGRzTWV0YURhdGEgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZChmID0+IGYuZ2V0KCduYW1lJykgPT09IG5hbWUpO1xuICAgIGNvbnN0IG5lc3RlZEZpZWxkcyA9IGZpZWxkICYmIGZpZWxkLmdldCgnZmllbGRzJyk7XG4gICAgY29uc3QgdmFsdWUgPSBlbnRyeS5nZXRJbihbJ2RhdGEnLCBmaWVsZC5nZXQoJ25hbWUnKV0pO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gZmllbGRzTWV0YURhdGEuZ2V0KGZpZWxkLmdldCgnbmFtZScpLCBNYXAoKSk7XG5cbiAgICBpZiAoTGlzdC5pc0xpc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKHZhbCA9PiB7XG4gICAgICAgIGNvbnN0IHdpZGdldHMgPVxuICAgICAgICAgIG5lc3RlZEZpZWxkcyAmJlxuICAgICAgICAgIE1hcChcbiAgICAgICAgICAgIG5lc3RlZEZpZWxkcy5tYXAoKGYsIGkpID0+IFtcbiAgICAgICAgICAgICAgZi5nZXQoJ25hbWUnKSxcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2l9Pnt0aGlzLmdldFdpZGdldChmLCB2YWwsIG1ldGFkYXRhLmdldChmLmdldCgnbmFtZScpKSwgdGhpcy5wcm9wcyl9PC9kaXY+LFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIE1hcCh7IGRhdGE6IHZhbCwgd2lkZ2V0cyB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBNYXAoe1xuICAgICAgZGF0YTogdmFsdWUsXG4gICAgICB3aWRnZXRzOlxuICAgICAgICBuZXN0ZWRGaWVsZHMgJiZcbiAgICAgICAgTWFwKFxuICAgICAgICAgIG5lc3RlZEZpZWxkcy5tYXAoZiA9PiBbXG4gICAgICAgICAgICBmLmdldCgnbmFtZScpLFxuICAgICAgICAgICAgdGhpcy5nZXRXaWRnZXQoZiwgdmFsdWUsIG1ldGFkYXRhLmdldChmLmdldCgnbmFtZScpKSwgdGhpcy5wcm9wcyksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGVudGlyZWx5IHRvIGV4cG9zZSBjb2xsZWN0aW9ucyBmcm9tIG91dHNpZGUgb2YgdGhpcyBlbnRyeVxuICAgKlxuICAgKi9cbiAgZ2V0Q29sbGVjdGlvbiA9IGFzeW5jIChjb2xsZWN0aW9uTmFtZSwgc2x1ZykgPT4ge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgc2VsZWN0ZWRDb2xsZWN0aW9uID0gc3RhdGUuY29sbGVjdGlvbnMuZ2V0KGNvbGxlY3Rpb25OYW1lKTtcblxuICAgIGlmICh0eXBlb2Ygc2x1ZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBnZXRBbGxFbnRyaWVzKHN0YXRlLCBzZWxlY3RlZENvbGxlY3Rpb24pO1xuICAgICAgcmV0dXJuIGVudHJpZXMubWFwKGVudHJ5ID0+IE1hcCgpLnNldCgnZGF0YScsIGVudHJ5LmRhdGEpKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IHRyeUxvYWRFbnRyeShzdGF0ZSwgc2VsZWN0ZWRDb2xsZWN0aW9uLCBzbHVnKTtcbiAgICByZXR1cm4gTWFwKCkuc2V0KCdkYXRhJywgZW50cnkuZGF0YSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZW50cnksIGNvbGxlY3Rpb24sIGNvbmZpZyB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICghZW50cnkgfHwgIWVudHJ5LmdldCgnZGF0YScpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aWV3Q29tcG9uZW50ID1cbiAgICAgIGdldFByZXZpZXdUZW1wbGF0ZShzZWxlY3RUZW1wbGF0ZU5hbWUoY29sbGVjdGlvbiwgZW50cnkuZ2V0KCdzbHVnJykpKSB8fCBFZGl0b3JQcmV2aWV3O1xuXG4gICAgdGhpcy5pbmZlckZpZWxkcygpO1xuXG4gICAgY29uc3QgcHJldmlld1Byb3BzID0ge1xuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgIHdpZGdldEZvcjogdGhpcy53aWRnZXRGb3IsXG4gICAgICB3aWRnZXRzRm9yOiB0aGlzLndpZGdldHNGb3IsXG4gICAgICBnZXRDb2xsZWN0aW9uOiB0aGlzLmdldENvbGxlY3Rpb24sXG4gICAgfTtcblxuICAgIGNvbnN0IHN0eWxlRWxzID0gZ2V0UHJldmlld1N0eWxlcygpLm1hcCgoc3R5bGUsIGkpID0+IHtcbiAgICAgIGlmIChzdHlsZS5yYXcpIHtcbiAgICAgICAgcmV0dXJuIDxzdHlsZSBrZXk9e2l9PntzdHlsZS52YWx1ZX08L3N0eWxlPjtcbiAgICAgIH1cbiAgICAgIHJldHVybiA8bGluayBrZXk9e2l9IGhyZWY9e3N0eWxlLnZhbHVlfSB0eXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgLz47XG4gICAgfSk7XG5cbiAgICBpZiAoIWNvbGxlY3Rpb24pIHtcbiAgICAgIDxQcmV2aWV3UGFuZUZyYW1lIGlkPVwicHJldmlldy1wYW5lXCIgaGVhZD17c3R5bGVFbHN9IC8+O1xuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYWxDb250ZW50ID0gYFxuPCFET0NUWVBFIGh0bWw+XG48aHRtbD5cbiAgPGhlYWQ+PGJhc2UgdGFyZ2V0PVwiX2JsYW5rXCIvPjwvaGVhZD5cbiAgPGJvZHk+PGRpdj48L2Rpdj48L2JvZHk+XG48L2h0bWw+XG5gO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFcnJvckJvdW5kYXJ5IGNvbmZpZz17Y29uZmlnfT5cbiAgICAgICAgPFByZXZpZXdQYW5lRnJhbWUgaWQ9XCJwcmV2aWV3LXBhbmVcIiBoZWFkPXtzdHlsZUVsc30gaW5pdGlhbENvbnRlbnQ9e2luaXRpYWxDb250ZW50fT5cbiAgICAgICAgICA8RnJhbWVDb250ZXh0Q29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgZG9jdW1lbnQsIHdpbmRvdyB9KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEVkaXRvclByZXZpZXdDb250ZW50XG4gICAgICAgICAgICAgICAgICB7Li4ueyBwcmV2aWV3Q29tcG9uZW50LCBwcmV2aWV3UHJvcHM6IHsgLi4ucHJldmlld1Byb3BzLCBkb2N1bWVudCwgd2luZG93IH0gfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L0ZyYW1lQ29udGV4dENvbnN1bWVyPlxuICAgICAgICA8L1ByZXZpZXdQYW5lRnJhbWU+XG4gICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgKTtcbiAgfVxufVxuXG5QcmV2aWV3UGFuZS5wcm9wVHlwZXMgPSB7XG4gIGNvbGxlY3Rpb246IEltbXV0YWJsZVByb3BUeXBlcy5tYXAuaXNSZXF1aXJlZCxcbiAgZmllbGRzOiBJbW11dGFibGVQcm9wVHlwZXMubGlzdC5pc1JlcXVpcmVkLFxuICBlbnRyeTogSW1tdXRhYmxlUHJvcFR5cGVzLm1hcC5pc1JlcXVpcmVkLFxuICBmaWVsZHNNZXRhRGF0YTogSW1tdXRhYmxlUHJvcFR5cGVzLm1hcC5pc1JlcXVpcmVkLFxuICBnZXRBc3NldDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSkge1xuICBjb25zdCBpc0xvYWRpbmdBc3NldCA9IHNlbGVjdElzTG9hZGluZ0Fzc2V0KHN0YXRlLm1lZGlhcyk7XG4gIHJldHVybiB7IGlzTG9hZGluZ0Fzc2V0LCBjb25maWc6IHN0YXRlLmNvbmZpZywgc3RhdGUgfTtcbn1cblxuZnVuY3Rpb24gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoKSB7XG4gIHJldHVybiB7XG4gICAgYm91bmRHZXRBc3NldDogKGNvbGxlY3Rpb24sIGVudHJ5KSA9PiBib3VuZEdldEFzc2V0KGRpc3BhdGNoLCBjb2xsZWN0aW9uLCBlbnRyeSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZVByb3BzLFxuICAgIC4uLmRpc3BhdGNoUHJvcHMsXG4gICAgLi4ub3duUHJvcHMsXG4gICAgZ2V0QXNzZXQ6IGRpc3BhdGNoUHJvcHMuYm91bmRHZXRBc3NldChvd25Qcm9wcy5jb2xsZWN0aW9uLCBvd25Qcm9wcy5lbnRyeSksXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMpKFByZXZpZXdQYW5lKTtcbiJdfQ== */"));
38
- class PreviewPane extends _react.default.Component {
29
+ })("width:100%;height:100%;border:none;background:#fff;border-radius:", lengths.borderRadius, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0VkaXRvci9FZGl0b3JQcmV2aWV3UGFuZS9FZGl0b3JQcmV2aWV3UGFuZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4QnNDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0VkaXRvci9FZGl0b3JQcmV2aWV3UGFuZS9FZGl0b3JQcmV2aWV3UGFuZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgTGlzdCwgTWFwIH0gZnJvbSAnaW1tdXRhYmxlJztcbmltcG9ydCBJbW11dGFibGVQcm9wVHlwZXMgZnJvbSAncmVhY3QtaW1tdXRhYmxlLXByb3B0eXBlcyc7XG5pbXBvcnQgRnJhbWUsIHsgRnJhbWVDb250ZXh0Q29uc3VtZXIgfSBmcm9tICdyZWFjdC1mcmFtZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgbGVuZ3RocyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBlbmNvZGVFbnRyeSB9IGZyb20gJ2RlY2FwLWNtcy1saWItdXRpbC9zcmMvc3RlZ2EnO1xuXG5pbXBvcnQge1xuICByZXNvbHZlV2lkZ2V0LFxuICBnZXRQcmV2aWV3VGVtcGxhdGUsXG4gIGdldFByZXZpZXdTdHlsZXMsXG4gIGdldFJlbWFya1BsdWdpbnMsXG59IGZyb20gJy4uLy4uLy4uL2xpYi9yZWdpc3RyeSc7XG5pbXBvcnQgeyBnZXRBbGxFbnRyaWVzLCB0cnlMb2FkRW50cnkgfSBmcm9tICcuLi8uLi8uLi9hY3Rpb25zL2VudHJpZXMnO1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJy4uLy4uL1VJJztcbmltcG9ydCB7XG4gIHNlbGVjdFRlbXBsYXRlTmFtZSxcbiAgc2VsZWN0SW5mZXJyZWRGaWVsZCxcbiAgc2VsZWN0RmllbGQsXG59IGZyb20gJy4uLy4uLy4uL3JlZHVjZXJzL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IGJvdW5kR2V0QXNzZXQgfSBmcm9tICcuLi8uLi8uLi9hY3Rpb25zL21lZGlhJztcbmltcG9ydCB7IHNlbGVjdElzTG9hZGluZ0Fzc2V0IH0gZnJvbSAnLi4vLi4vLi4vcmVkdWNlcnMvbWVkaWFzJztcbmltcG9ydCB7IElORkVSQUJMRV9GSUVMRFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvZmllbGRJbmZlcmVuY2UnO1xuaW1wb3J0IEVkaXRvclByZXZpZXdDb250ZW50IGZyb20gJy4vRWRpdG9yUHJldmlld0NvbnRlbnQuanMnO1xuaW1wb3J0IFByZXZpZXdIT0MgZnJvbSAnLi9QcmV2aWV3SE9DJztcbmltcG9ydCBFZGl0b3JQcmV2aWV3IGZyb20gJy4vRWRpdG9yUHJldmlldyc7XG5cbmNvbnN0IFByZXZpZXdQYW5lRnJhbWUgPSBzdHlsZWQoRnJhbWUpYFxuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6ICR7bGVuZ3Rocy5ib3JkZXJSYWRpdXN9O1xuYDtcblxuZXhwb3J0IGNsYXNzIFByZXZpZXdQYW5lIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0V2lkZ2V0ID0gKGZpZWxkLCB2YWx1ZSwgbWV0YWRhdGEsIHByb3BzLCBpZHggPSBudWxsKSA9PiB7XG4gICAgY29uc3QgeyBnZXRBc3NldCwgZW50cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IHdpZGdldCA9IHJlc29sdmVXaWRnZXQoZmllbGQuZ2V0KCd3aWRnZXQnKSk7XG4gICAgY29uc3Qga2V5ID0gaWR4ID8gZmllbGQuZ2V0KCduYW1lJykgKyAnXycgKyBpZHggOiBmaWVsZC5nZXQoJ25hbWUnKTtcbiAgICBjb25zdCB2YWx1ZUlzSW5NYXAgPSB2YWx1ZSAmJiAhd2lkZ2V0LmFsbG93TWFwVmFsdWUgJiYgTWFwLmlzTWFwKHZhbHVlKTtcblxuICAgIC8qKlxuICAgICAqIFVzZSBhbiBIT0MgdG8gcHJvdmlkZSBjb25kaXRpb25hbCB1cGRhdGVzIGZvciBhbGwgcHJldmlld3MuXG4gICAgICovXG4gICAgcmV0dXJuICF3aWRnZXQucHJldmlldyA/IG51bGwgOiAoXG4gICAgICA8UHJldmlld0hPQ1xuICAgICAgICBwcmV2aWV3Q29tcG9uZW50PXt3aWRnZXQucHJldmlld31cbiAgICAgICAga2V5PXtrZXl9XG4gICAgICAgIGZpZWxkPXtmaWVsZH1cbiAgICAgICAgZ2V0QXNzZXQ9e2dldEFzc2V0fVxuICAgICAgICB2YWx1ZT17dmFsdWVJc0luTWFwID8gdmFsdWUuZ2V0KGZpZWxkLmdldCgnbmFtZScpKSA6IHZhbHVlfVxuICAgICAgICBlbnRyeT17ZW50cnl9XG4gICAgICAgIGZpZWxkc01ldGFEYXRhPXttZXRhZGF0YX1cbiAgICAgICAgcmVzb2x2ZVdpZGdldD17cmVzb2x2ZVdpZGdldH1cbiAgICAgICAgZ2V0UmVtYXJrUGx1Z2lucz17Z2V0UmVtYXJrUGx1Z2luc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBpbmZlcnJlZEZpZWxkcyA9IHt9O1xuXG4gIGluZmVyRmllbGRzKCkge1xuICAgIGNvbnN0IHRpdGxlRmllbGQgPSBzZWxlY3RJbmZlcnJlZEZpZWxkKHRoaXMucHJvcHMuY29sbGVjdGlvbiwgJ3RpdGxlJyk7XG4gICAgY29uc3Qgc2hvcnRUaXRsZUZpZWxkID0gc2VsZWN0SW5mZXJyZWRGaWVsZCh0aGlzLnByb3BzLmNvbGxlY3Rpb24sICdzaG9ydFRpdGxlJyk7XG4gICAgY29uc3QgYXV0aG9yRmllbGQgPSBzZWxlY3RJbmZlcnJlZEZpZWxkKHRoaXMucHJvcHMuY29sbGVjdGlvbiwgJ2F1dGhvcicpO1xuXG4gICAgdGhpcy5pbmZlcnJlZEZpZWxkcyA9IHt9O1xuICAgIGlmICh0aXRsZUZpZWxkKSB0aGlzLmluZmVycmVkRmllbGRzW3RpdGxlRmllbGRdID0gSU5GRVJBQkxFX0ZJRUxEUy50aXRsZTtcbiAgICBpZiAoc2hvcnRUaXRsZUZpZWxkKSB0aGlzLmluZmVycmVkRmllbGRzW3Nob3J0VGl0bGVGaWVsZF0gPSBJTkZFUkFCTEVfRklFTERTLnNob3J0VGl0bGU7XG4gICAgaWYgKGF1dGhvckZpZWxkKSB0aGlzLmluZmVycmVkRmllbGRzW2F1dGhvckZpZWxkXSA9IElORkVSQUJMRV9GSUVMRFMuYXV0aG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHdpZGdldCBjb21wb25lbnQgZm9yIGEgbmFtZWQgZmllbGQsIGFuZCBtYWtlcyByZWN1cnNpdmUgY2FsbHNcbiAgICogdG8gcmV0cmlldmUgY29tcG9uZW50cyBmb3IgbmVzdGVkIGFuZCBkZWVwbHkgbmVzdGVkIGZpZWxkcywgd2hpY2ggb2NjdXIgaW5cbiAgICogb2JqZWN0IGFuZCBsaXN0IHR5cGUgZmllbGRzLiBVc2VkIGludGVybmFsbHkgdG8gcmV0cmlldmUgd2lkZ2V0cywgYW5kIGFsc29cbiAgICogZXhwb3NlZCBmb3IgdXNlIGluIGN1c3RvbSBwcmV2aWV3IHRlbXBsYXRlcy5cbiAgICovXG4gIHdpZGdldEZvciA9IChcbiAgICBuYW1lLFxuICAgIGZpZWxkcyA9IHRoaXMucHJvcHMuZmllbGRzLFxuICAgIHZhbHVlcyA9IHRoaXMucHJvcHMuZW50cnkuZ2V0KCdkYXRhJyksXG4gICAgZmllbGRzTWV0YURhdGEgPSB0aGlzLnByb3BzLmZpZWxkc01ldGFEYXRhLFxuICApID0+IHtcbiAgICAvLyBXZSByZXRyaWV2ZSB0aGUgZmllbGQgYnkgbmFtZSBzbyB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGFsc28gYmUgdXNlZCBpblxuICAgIC8vIGN1c3RvbSBwcmV2aWV3IHRlbXBsYXRlcywgd2hlcmUgdGhlIGZpZWxkIG9iamVjdCBjYW4ndCBiZSBwYXNzZWQgaW4uXG4gICAgbGV0IGZpZWxkID0gZmllbGRzICYmIGZpZWxkcy5maW5kKGYgPT4gZi5nZXQoJ25hbWUnKSA9PT0gbmFtZSk7XG4gICAgbGV0IHZhbHVlID0gTWFwLmlzTWFwKHZhbHVlcykgJiYgdmFsdWVzLmdldChmaWVsZC5nZXQoJ25hbWUnKSk7XG4gICAgaWYgKGZpZWxkLmdldCgnbWV0YScpKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucHJvcHMuZW50cnkuZ2V0SW4oWydtZXRhJywgZmllbGQuZ2V0KCduYW1lJyldKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXN0ZWRGaWVsZHMgPSBmaWVsZC5nZXQoJ2ZpZWxkcycpO1xuICAgIGNvbnN0IHNpbmdsZUZpZWxkID0gZmllbGQuZ2V0KCdmaWVsZCcpO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gZmllbGRzTWV0YURhdGEgJiYgZmllbGRzTWV0YURhdGEuZ2V0KGZpZWxkLmdldCgnbmFtZScpLCBNYXAoKSk7XG5cbiAgICBpZiAobmVzdGVkRmllbGRzKSB7XG4gICAgICBmaWVsZCA9IGZpZWxkLnNldCgnZmllbGRzJywgdGhpcy5nZXROZXN0ZWRXaWRnZXRzKG5lc3RlZEZpZWxkcywgdmFsdWUsIG1ldGFkYXRhKSk7XG4gICAgfVxuXG4gICAgaWYgKHNpbmdsZUZpZWxkKSB7XG4gICAgICBmaWVsZCA9IGZpZWxkLnNldCgnZmllbGQnLCB0aGlzLmdldFNpbmdsZU5lc3RlZChzaW5nbGVGaWVsZCwgdmFsdWUsIG1ldGFkYXRhKSk7XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWxsZWRXaWRnZXRzID0gWydzdHJpbmcnLCAndGV4dCcsICdudW1iZXInXTtcbiAgICBjb25zdCBpbmZlcnJlZEZpZWxkID0gT2JqZWN0LmVudHJpZXModGhpcy5pbmZlcnJlZEZpZWxkcylcbiAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkVG9NYXRjaCA9IHNlbGVjdEZpZWxkKHRoaXMucHJvcHMuY29sbGVjdGlvbiwga2V5KTtcbiAgICAgICAgcmV0dXJuIGZpZWxkVG9NYXRjaCA9PT0gZmllbGQ7XG4gICAgICB9KVxuICAgICAgLm1hcCgoWywgdmFsdWVdKSA9PiB2YWx1ZSlbMF07XG5cbiAgICBpZiAoaW5mZXJyZWRGaWVsZCkge1xuICAgICAgdmFsdWUgPSBpbmZlcnJlZEZpZWxkLmRlZmF1bHRQcmV2aWV3KHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdmFsdWUgJiZcbiAgICAgIGxhYmVsbGVkV2lkZ2V0cy5pbmRleE9mKGZpZWxkLmdldCgnd2lkZ2V0JykpICE9PSAtMSAmJlxuICAgICAgdmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPCA1MFxuICAgICkge1xuICAgICAgdmFsdWUgPSAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHN0cm9uZz57ZmllbGQuZ2V0KCdsYWJlbCcsIGZpZWxkLmdldCgnbmFtZScpKX06PC9zdHJvbmc+IHt2YWx1ZX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuZ2V0V2lkZ2V0KGZpZWxkLCB2YWx1ZSwgbWV0YWRhdGEsIHRoaXMucHJvcHMpIDogbnVsbDtcbiAgfTtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHdpZGdldHMgZm9yIG5lc3RlZCBmaWVsZHMgKGNoaWxkcmVuIG9mIG9iamVjdC9saXN0IGZpZWxkcylcbiAgICovXG4gIGdldE5lc3RlZFdpZGdldHMgPSAoZmllbGRzLCB2YWx1ZXMsIGZpZWxkc01ldGFEYXRhKSA9PiB7XG4gICAgLy8gRmllbGRzIG5lc3RlZCB3aXRoaW4gYSBsaXN0IGZpZWxkIHdpbGwgYmUgcGFpcmVkIHdpdGggYSBMaXN0IG9mIHZhbHVlIE1hcHMuXG4gICAgaWYgKExpc3QuaXNMaXN0KHZhbHVlcykpIHtcbiAgICAgIHJldHVybiB2YWx1ZXMubWFwKHZhbHVlID0+IHRoaXMud2lkZ2V0c0Zvck5lc3RlZEZpZWxkcyhmaWVsZHMsIHZhbHVlLCBmaWVsZHNNZXRhRGF0YSkpO1xuICAgIH1cbiAgICAvLyBGaWVsZHMgbmVzdGVkIHdpdGhpbiBhbiBvYmplY3QgZmllbGQgd2lsbCBiZSBwYWlyZWQgd2l0aCBhIHNpbmdsZSBNYXAgb2YgdmFsdWVzLlxuICAgIHJldHVybiB0aGlzLndpZGdldHNGb3JOZXN0ZWRGaWVsZHMoZmllbGRzLCB2YWx1ZXMsIGZpZWxkc01ldGFEYXRhKTtcbiAgfTtcblxuICBnZXRTaW5nbGVOZXN0ZWQgPSAoZmllbGQsIHZhbHVlcywgZmllbGRzTWV0YURhdGEpID0+IHtcbiAgICBpZiAoTGlzdC5pc0xpc3QodmFsdWVzKSkge1xuICAgICAgcmV0dXJuIHZhbHVlcy5tYXAoKHZhbHVlLCBpZHgpID0+XG4gICAgICAgIHRoaXMuZ2V0V2lkZ2V0KGZpZWxkLCB2YWx1ZSwgZmllbGRzTWV0YURhdGEuZ2V0KGZpZWxkLmdldCgnbmFtZScpKSwgdGhpcy5wcm9wcywgaWR4KSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFdpZGdldChmaWVsZCwgdmFsdWVzLCBmaWVsZHNNZXRhRGF0YS5nZXQoZmllbGQuZ2V0KCduYW1lJykpLCB0aGlzLnByb3BzKTtcbiAgfTtcblxuICAvKipcbiAgICogVXNlIHdpZGdldEZvciBhcyBhIG1hcHBpbmcgZnVuY3Rpb24gZm9yIHJlY3Vyc2l2ZSB3aWRnZXQgcmV0cmlldmFsXG4gICAqL1xuICB3aWRnZXRzRm9yTmVzdGVkRmllbGRzID0gKGZpZWxkcywgdmFsdWVzLCBmaWVsZHNNZXRhRGF0YSkgPT4ge1xuICAgIHJldHVybiBmaWVsZHMubWFwKGZpZWxkID0+IHRoaXMud2lkZ2V0Rm9yKGZpZWxkLmdldCgnbmFtZScpLCBmaWVsZHMsIHZhbHVlcywgZmllbGRzTWV0YURhdGEpKTtcbiAgfTtcblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBleGlzdHMgZW50aXJlbHkgdG8gZXhwb3NlIG5lc3RlZCB3aWRnZXRzIGZvciBvYmplY3QgYW5kIGxpc3RcbiAgICogZmllbGRzIHRvIGN1c3RvbSBwcmV2aWV3IHRlbXBsYXRlcy5cbiAgICpcbiAgICogVE9ETzogc2VlIGlmIHdpZGdldEZvciBjYW4gbm93IHByb3ZpZGUgdGhpcyBmdW5jdGlvbmFsaXR5IGZvciBwcmV2aWV3IHRlbXBsYXRlc1xuICAgKi9cbiAgd2lkZ2V0c0ZvciA9IG5hbWUgPT4ge1xuICAgIGNvbnN0IHsgZmllbGRzLCBlbnRyeSwgZmllbGRzTWV0YURhdGEgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZChmID0+IGYuZ2V0KCduYW1lJykgPT09IG5hbWUpO1xuICAgIGNvbnN0IG5lc3RlZEZpZWxkcyA9IGZpZWxkICYmIGZpZWxkLmdldCgnZmllbGRzJyk7XG4gICAgY29uc3QgdmFyaWFibGVUeXBlcyA9IGZpZWxkICYmIGZpZWxkLmdldCgndHlwZXMnKTtcbiAgICBjb25zdCB2YWx1ZSA9IGVudHJ5LmdldEluKFsnZGF0YScsIGZpZWxkLmdldCgnbmFtZScpXSk7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBmaWVsZHNNZXRhRGF0YS5nZXQoZmllbGQuZ2V0KCduYW1lJyksIE1hcCgpKTtcblxuICAgIC8vIFZhcmlhYmxlIFR5cGUgbGlzdHNcbiAgICBpZiAoTGlzdC5pc0xpc3QodmFsdWUpICYmIHZhcmlhYmxlVHlwZXMpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5tYXAodmFsID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdmFyaWFibGVUeXBlcy5maW5kKHQgPT4gdC5nZXQoJ25hbWUnKSA9PT0gdmFsLmdldCgndHlwZScpKTtcbiAgICAgICAgY29uc3QgdHlwZUZpZWxkcyA9IHZhbHVlVHlwZSAmJiB2YWx1ZVR5cGUuZ2V0KCdmaWVsZHMnKTtcbiAgICAgICAgY29uc3Qgd2lkZ2V0cyA9XG4gICAgICAgICAgdHlwZUZpZWxkcyAmJlxuICAgICAgICAgIE1hcChcbiAgICAgICAgICAgIHR5cGVGaWVsZHMubWFwKChmLCBpKSA9PiBbXG4gICAgICAgICAgICAgIGYuZ2V0KCduYW1lJyksXG4gICAgICAgICAgICAgIDxkaXYga2V5PXtpfT57dGhpcy5nZXRXaWRnZXQoZiwgdmFsLCBtZXRhZGF0YS5nZXQoZi5nZXQoJ25hbWUnKSksIHRoaXMucHJvcHMpfTwvZGl2PixcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiBNYXAoeyBkYXRhOiB2YWwsIHdpZGdldHMgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBMaXN0IHdpZGdldHNcbiAgICBpZiAoTGlzdC5pc0xpc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKHZhbCA9PiB7XG4gICAgICAgIGNvbnN0IHdpZGdldHMgPVxuICAgICAgICAgIG5lc3RlZEZpZWxkcyAmJlxuICAgICAgICAgIE1hcChcbiAgICAgICAgICAgIG5lc3RlZEZpZWxkcy5tYXAoKGYsIGkpID0+IFtcbiAgICAgICAgICAgICAgZi5nZXQoJ25hbWUnKSxcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2l9Pnt0aGlzLmdldFdpZGdldChmLCB2YWwsIG1ldGFkYXRhLmdldChmLmdldCgnbmFtZScpKSwgdGhpcy5wcm9wcyl9PC9kaXY+LFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIE1hcCh7IGRhdGE6IHZhbCwgd2lkZ2V0cyB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBNYXAoe1xuICAgICAgZGF0YTogdmFsdWUsXG4gICAgICB3aWRnZXRzOlxuICAgICAgICBuZXN0ZWRGaWVsZHMgJiZcbiAgICAgICAgTWFwKFxuICAgICAgICAgIG5lc3RlZEZpZWxkcy5tYXAoZiA9PiBbXG4gICAgICAgICAgICBmLmdldCgnbmFtZScpLFxuICAgICAgICAgICAgdGhpcy5nZXRXaWRnZXQoZiwgdmFsdWUsIG1ldGFkYXRhLmdldChmLmdldCgnbmFtZScpKSwgdGhpcy5wcm9wcyksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGVudGlyZWx5IHRvIGV4cG9zZSBjb2xsZWN0aW9ucyBmcm9tIG91dHNpZGUgb2YgdGhpcyBlbnRyeVxuICAgKlxuICAgKi9cbiAgZ2V0Q29sbGVjdGlvbiA9IGFzeW5jIChjb2xsZWN0aW9uTmFtZSwgc2x1ZykgPT4ge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgc2VsZWN0ZWRDb2xsZWN0aW9uID0gc3RhdGUuY29sbGVjdGlvbnMuZ2V0KGNvbGxlY3Rpb25OYW1lKTtcblxuICAgIGlmICh0eXBlb2Ygc2x1ZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBnZXRBbGxFbnRyaWVzKHN0YXRlLCBzZWxlY3RlZENvbGxlY3Rpb24pO1xuICAgICAgcmV0dXJuIGVudHJpZXMubWFwKGVudHJ5ID0+IE1hcCgpLnNldCgnZGF0YScsIGVudHJ5LmRhdGEpKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IHRyeUxvYWRFbnRyeShzdGF0ZSwgc2VsZWN0ZWRDb2xsZWN0aW9uLCBzbHVnKTtcbiAgICByZXR1cm4gTWFwKCkuc2V0KCdkYXRhJywgZW50cnkuZGF0YSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZW50cnksIGNvbGxlY3Rpb24sIGNvbmZpZyB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICghZW50cnkgfHwgIWVudHJ5LmdldCgnZGF0YScpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aWV3Q29tcG9uZW50ID1cbiAgICAgIGdldFByZXZpZXdUZW1wbGF0ZShzZWxlY3RUZW1wbGF0ZU5hbWUoY29sbGVjdGlvbiwgZW50cnkuZ2V0KCdzbHVnJykpKSB8fCBFZGl0b3JQcmV2aWV3O1xuXG4gICAgdGhpcy5pbmZlckZpZWxkcygpO1xuXG4gICAgY29uc3QgdmlzdWFsRWRpdGluZyA9IGNvbGxlY3Rpb24uZ2V0SW4oWydlZGl0b3InLCAndmlzdWFsRWRpdGluZyddLCBmYWxzZSk7XG5cbiAgICAvLyBPbmx5IGVuY29kZSBlbnRyeSBkYXRhIGlmIHZpc3VhbCBlZGl0aW5nIGlzIGVuYWJsZWRcbiAgICBjb25zdCBwcmV2aWV3RW50cnkgPSB2aXN1YWxFZGl0aW5nXG4gICAgICA/IGVudHJ5LnNldCgnZGF0YScsIGVuY29kZUVudHJ5KGVudHJ5LmdldCgnZGF0YScpLCB0aGlzLnByb3BzLmZpZWxkcykpXG4gICAgICA6IGVudHJ5O1xuXG4gICAgY29uc3QgcHJldmlld1Byb3BzID0ge1xuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgIGVudHJ5OiBwcmV2aWV3RW50cnksXG4gICAgICB3aWRnZXRGb3I6IChuYW1lLCBmaWVsZHMsIHZhbHVlcyA9IHByZXZpZXdFbnRyeS5nZXQoJ2RhdGEnKSwgZmllbGRzTWV0YURhdGEpID0+XG4gICAgICAgIHRoaXMud2lkZ2V0Rm9yKG5hbWUsIGZpZWxkcywgdmFsdWVzLCBmaWVsZHNNZXRhRGF0YSksXG4gICAgICB3aWRnZXRzRm9yOiB0aGlzLndpZGdldHNGb3IsXG4gICAgICBnZXRDb2xsZWN0aW9uOiB0aGlzLmdldENvbGxlY3Rpb24sXG4gICAgfTtcblxuICAgIGNvbnN0IHN0eWxlRWxzID0gZ2V0UHJldmlld1N0eWxlcygpLm1hcCgoc3R5bGUsIGkpID0+IHtcbiAgICAgIGlmIChzdHlsZS5yYXcpIHtcbiAgICAgICAgcmV0dXJuIDxzdHlsZSBrZXk9e2l9PntzdHlsZS52YWx1ZX08L3N0eWxlPjtcbiAgICAgIH1cbiAgICAgIHJldHVybiA8bGluayBrZXk9e2l9IGhyZWY9e3N0eWxlLnZhbHVlfSB0eXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgLz47XG4gICAgfSk7XG5cbiAgICBpZiAoIWNvbGxlY3Rpb24pIHtcbiAgICAgIDxQcmV2aWV3UGFuZUZyYW1lIGlkPVwicHJldmlldy1wYW5lXCIgaGVhZD17c3R5bGVFbHN9IC8+O1xuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYWxDb250ZW50ID0gYFxuPCFET0NUWVBFIGh0bWw+XG48aHRtbD5cbiAgPGhlYWQ+PGJhc2UgdGFyZ2V0PVwiX2JsYW5rXCIvPjwvaGVhZD5cbiAgPGJvZHk+PGRpdj48L2Rpdj48L2JvZHk+XG48L2h0bWw+XG5gO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFcnJvckJvdW5kYXJ5IGNvbmZpZz17Y29uZmlnfT5cbiAgICAgICAgPFByZXZpZXdQYW5lRnJhbWUgaWQ9XCJwcmV2aWV3LXBhbmVcIiBoZWFkPXtzdHlsZUVsc30gaW5pdGlhbENvbnRlbnQ9e2luaXRpYWxDb250ZW50fT5cbiAgICAgICAgICA8RnJhbWVDb250ZXh0Q29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgZG9jdW1lbnQsIHdpbmRvdyB9KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEVkaXRvclByZXZpZXdDb250ZW50XG4gICAgICAgICAgICAgICAgICB7Li4ueyBwcmV2aWV3Q29tcG9uZW50LCBwcmV2aWV3UHJvcHM6IHsgLi4ucHJldmlld1Byb3BzLCBkb2N1bWVudCwgd2luZG93IH0gfX1cbiAgICAgICAgICAgICAgICAgIG9uRmllbGRDbGljaz17dGhpcy5wcm9wcy5vbkZpZWxkQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9GcmFtZUNvbnRleHRDb25zdW1lcj5cbiAgICAgICAgPC9QcmV2aWV3UGFuZUZyYW1lPlxuICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICk7XG4gIH1cbn1cblxuUHJldmlld1BhbmUucHJvcFR5cGVzID0ge1xuICBjb2xsZWN0aW9uOiBJbW11dGFibGVQcm9wVHlwZXMubWFwLmlzUmVxdWlyZWQsXG4gIGZpZWxkczogSW1tdXRhYmxlUHJvcFR5cGVzLmxpc3QuaXNSZXF1aXJlZCxcbiAgZW50cnk6IEltbXV0YWJsZVByb3BUeXBlcy5tYXAuaXNSZXF1aXJlZCxcbiAgZmllbGRzTWV0YURhdGE6IEltbXV0YWJsZVByb3BUeXBlcy5tYXAuaXNSZXF1aXJlZCxcbiAgZ2V0QXNzZXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRmllbGRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5mdW5jdGlvbiBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUpIHtcbiAgY29uc3QgaXNMb2FkaW5nQXNzZXQgPSBzZWxlY3RJc0xvYWRpbmdBc3NldChzdGF0ZS5tZWRpYXMpO1xuICByZXR1cm4geyBpc0xvYWRpbmdBc3NldCwgY29uZmlnOiBzdGF0ZS5jb25maWcsIHN0YXRlIH07XG59XG5cbmZ1bmN0aW9uIG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCkge1xuICByZXR1cm4ge1xuICAgIGJvdW5kR2V0QXNzZXQ6IChjb2xsZWN0aW9uLCBlbnRyeSkgPT4gYm91bmRHZXRBc3NldChkaXNwYXRjaCwgY29sbGVjdGlvbiwgZW50cnkpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKSB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGVQcm9wcyxcbiAgICAuLi5kaXNwYXRjaFByb3BzLFxuICAgIC4uLm93blByb3BzLFxuICAgIGdldEFzc2V0OiBkaXNwYXRjaFByb3BzLmJvdW5kR2V0QXNzZXQob3duUHJvcHMuY29sbGVjdGlvbiwgb3duUHJvcHMuZW50cnkpLFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzKShQcmV2aWV3UGFuZSk7XG4iXX0= */"));
30
+ export class PreviewPane extends React.Component {
39
31
  constructor(...args) {
40
32
  super(...args);
41
33
  _defineProperty(this, "getWidget", (field, value, metadata, props, idx = null) => {
@@ -43,14 +35,14 @@ class PreviewPane extends _react.default.Component {
43
35
  getAsset,
44
36
  entry
45
37
  } = props;
46
- const widget = (0, _registry.resolveWidget)(field.get('widget'));
38
+ const widget = resolveWidget(field.get('widget'));
47
39
  const key = idx ? field.get('name') + '_' + idx : field.get('name');
48
- const valueIsInMap = value && !widget.allowMapValue && _immutable.Map.isMap(value);
40
+ const valueIsInMap = value && !widget.allowMapValue && Map.isMap(value);
49
41
 
50
42
  /**
51
43
  * Use an HOC to provide conditional updates for all previews.
52
44
  */
53
- return !widget.preview ? null : (0, _react2.jsx)(_PreviewHOC.default, {
45
+ return !widget.preview ? null : ___EmotionJSX(PreviewHOC, {
54
46
  previewComponent: widget.preview,
55
47
  key: key,
56
48
  field: field,
@@ -58,8 +50,8 @@ class PreviewPane extends _react.default.Component {
58
50
  value: valueIsInMap ? value.get(field.get('name')) : value,
59
51
  entry: entry,
60
52
  fieldsMetaData: metadata,
61
- resolveWidget: _registry.resolveWidget,
62
- getRemarkPlugins: _registry.getRemarkPlugins
53
+ resolveWidget: resolveWidget,
54
+ getRemarkPlugins: getRemarkPlugins
63
55
  });
64
56
  });
65
57
  _defineProperty(this, "inferredFields", {});
@@ -73,13 +65,13 @@ class PreviewPane extends _react.default.Component {
73
65
  // We retrieve the field by name so that this function can also be used in
74
66
  // custom preview templates, where the field object can't be passed in.
75
67
  let field = fields && fields.find(f => f.get('name') === name);
76
- let value = _immutable.Map.isMap(values) && values.get(field.get('name'));
68
+ let value = Map.isMap(values) && values.get(field.get('name'));
77
69
  if (field.get('meta')) {
78
70
  value = this.props.entry.getIn(['meta', field.get('name')]);
79
71
  }
80
72
  const nestedFields = field.get('fields');
81
73
  const singleField = field.get('field');
82
- const metadata = fieldsMetaData && fieldsMetaData.get(field.get('name'), (0, _immutable.Map)());
74
+ const metadata = fieldsMetaData && fieldsMetaData.get(field.get('name'), Map());
83
75
  if (nestedFields) {
84
76
  field = field.set('fields', this.getNestedWidgets(nestedFields, value, metadata));
85
77
  }
@@ -88,13 +80,13 @@ class PreviewPane extends _react.default.Component {
88
80
  }
89
81
  const labelledWidgets = ['string', 'text', 'number'];
90
82
  const inferredField = Object.entries(this.inferredFields).filter(([key]) => {
91
- const fieldToMatch = (0, _collections.selectField)(this.props.collection, key);
83
+ const fieldToMatch = selectField(this.props.collection, key);
92
84
  return fieldToMatch === field;
93
85
  }).map(([, value]) => value)[0];
94
86
  if (inferredField) {
95
87
  value = inferredField.defaultPreview(value);
96
88
  } else if (value && labelledWidgets.indexOf(field.get('widget')) !== -1 && value.toString().length < 50) {
97
- value = (0, _react2.jsx)("div", null, (0, _react2.jsx)("strong", null, field.get('label', field.get('name')), ":"), " ", value);
89
+ value = ___EmotionJSX("div", null, ___EmotionJSX("strong", null, field.get('label', field.get('name')), ":"), " ", value);
98
90
  }
99
91
  return value ? this.getWidget(field, value, metadata, this.props) : null;
100
92
  });
@@ -103,14 +95,14 @@ class PreviewPane extends _react.default.Component {
103
95
  */
104
96
  _defineProperty(this, "getNestedWidgets", (fields, values, fieldsMetaData) => {
105
97
  // Fields nested within a list field will be paired with a List of value Maps.
106
- if (_immutable.List.isList(values)) {
98
+ if (List.isList(values)) {
107
99
  return values.map(value => this.widgetsForNestedFields(fields, value, fieldsMetaData));
108
100
  }
109
101
  // Fields nested within an object field will be paired with a single Map of values.
110
102
  return this.widgetsForNestedFields(fields, values, fieldsMetaData);
111
103
  });
112
104
  _defineProperty(this, "getSingleNested", (field, values, fieldsMetaData) => {
113
- if (_immutable.List.isList(values)) {
105
+ if (List.isList(values)) {
114
106
  return values.map((value, idx) => this.getWidget(field, value, fieldsMetaData.get(field.get('name')), this.props, idx));
115
107
  }
116
108
  return this.getWidget(field, values, fieldsMetaData.get(field.get('name')), this.props);
@@ -135,22 +127,40 @@ class PreviewPane extends _react.default.Component {
135
127
  } = this.props;
136
128
  const field = fields.find(f => f.get('name') === name);
137
129
  const nestedFields = field && field.get('fields');
130
+ const variableTypes = field && field.get('types');
138
131
  const value = entry.getIn(['data', field.get('name')]);
139
- const metadata = fieldsMetaData.get(field.get('name'), (0, _immutable.Map)());
140
- if (_immutable.List.isList(value)) {
132
+ const metadata = fieldsMetaData.get(field.get('name'), Map());
133
+
134
+ // Variable Type lists
135
+ if (List.isList(value) && variableTypes) {
136
+ return value.map(val => {
137
+ const valueType = variableTypes.find(t => t.get('name') === val.get('type'));
138
+ const typeFields = valueType && valueType.get('fields');
139
+ const widgets = typeFields && Map(typeFields.map((f, i) => [f.get('name'), ___EmotionJSX("div", {
140
+ key: i
141
+ }, this.getWidget(f, val, metadata.get(f.get('name')), this.props))]));
142
+ return Map({
143
+ data: val,
144
+ widgets
145
+ });
146
+ });
147
+ }
148
+
149
+ // List widgets
150
+ if (List.isList(value)) {
141
151
  return value.map(val => {
142
- const widgets = nestedFields && (0, _immutable.Map)(nestedFields.map((f, i) => [f.get('name'), (0, _react2.jsx)("div", {
152
+ const widgets = nestedFields && Map(nestedFields.map((f, i) => [f.get('name'), ___EmotionJSX("div", {
143
153
  key: i
144
154
  }, this.getWidget(f, val, metadata.get(f.get('name')), this.props))]));
145
- return (0, _immutable.Map)({
155
+ return Map({
146
156
  data: val,
147
157
  widgets
148
158
  });
149
159
  });
150
160
  }
151
- return (0, _immutable.Map)({
161
+ return Map({
152
162
  data: value,
153
- widgets: nestedFields && (0, _immutable.Map)(nestedFields.map(f => [f.get('name'), this.getWidget(f, value, metadata.get(f.get('name')), this.props)]))
163
+ widgets: nestedFields && Map(nestedFields.map(f => [f.get('name'), this.getWidget(f, value, metadata.get(f.get('name')), this.props)]))
154
164
  });
155
165
  });
156
166
  /**
@@ -163,21 +173,21 @@ class PreviewPane extends _react.default.Component {
163
173
  } = this.props;
164
174
  const selectedCollection = state.collections.get(collectionName);
165
175
  if (typeof slug === 'undefined') {
166
- const entries = await (0, _entries.getAllEntries)(state, selectedCollection);
167
- return entries.map(entry => (0, _immutable.Map)().set('data', entry.data));
176
+ const entries = await getAllEntries(state, selectedCollection);
177
+ return entries.map(entry => Map().set('data', entry.data));
168
178
  }
169
- const entry = await (0, _entries.tryLoadEntry)(state, selectedCollection, slug);
170
- return (0, _immutable.Map)().set('data', entry.data);
179
+ const entry = await tryLoadEntry(state, selectedCollection, slug);
180
+ return Map().set('data', entry.data);
171
181
  });
172
182
  }
173
183
  inferFields() {
174
- const titleField = (0, _collections.selectInferredField)(this.props.collection, 'title');
175
- const shortTitleField = (0, _collections.selectInferredField)(this.props.collection, 'shortTitle');
176
- const authorField = (0, _collections.selectInferredField)(this.props.collection, 'author');
184
+ const titleField = selectInferredField(this.props.collection, 'title');
185
+ const shortTitleField = selectInferredField(this.props.collection, 'shortTitle');
186
+ const authorField = selectInferredField(this.props.collection, 'author');
177
187
  this.inferredFields = {};
178
- if (titleField) this.inferredFields[titleField] = _fieldInference.INFERABLE_FIELDS.title;
179
- if (shortTitleField) this.inferredFields[shortTitleField] = _fieldInference.INFERABLE_FIELDS.shortTitle;
180
- if (authorField) this.inferredFields[authorField] = _fieldInference.INFERABLE_FIELDS.author;
188
+ if (titleField) this.inferredFields[titleField] = INFERABLE_FIELDS.title;
189
+ if (shortTitleField) this.inferredFields[shortTitleField] = INFERABLE_FIELDS.shortTitle;
190
+ if (authorField) this.inferredFields[authorField] = INFERABLE_FIELDS.author;
181
191
  }
182
192
  render() {
183
193
  const {
@@ -188,20 +198,25 @@ class PreviewPane extends _react.default.Component {
188
198
  if (!entry || !entry.get('data')) {
189
199
  return null;
190
200
  }
191
- const previewComponent = (0, _registry.getPreviewTemplate)((0, _collections.selectTemplateName)(collection, entry.get('slug'))) || _EditorPreview.default;
201
+ const previewComponent = getPreviewTemplate(selectTemplateName(collection, entry.get('slug'))) || EditorPreview;
192
202
  this.inferFields();
203
+ const visualEditing = collection.getIn(['editor', 'visualEditing'], false);
204
+
205
+ // Only encode entry data if visual editing is enabled
206
+ const previewEntry = visualEditing ? entry.set('data', encodeEntry(entry.get('data'), this.props.fields)) : entry;
193
207
  const previewProps = _objectSpread(_objectSpread({}, this.props), {}, {
194
- widgetFor: this.widgetFor,
208
+ entry: previewEntry,
209
+ widgetFor: (name, fields, values = previewEntry.get('data'), fieldsMetaData) => this.widgetFor(name, fields, values, fieldsMetaData),
195
210
  widgetsFor: this.widgetsFor,
196
211
  getCollection: this.getCollection
197
212
  });
198
- const styleEls = (0, _registry.getPreviewStyles)().map((style, i) => {
213
+ const styleEls = getPreviewStyles().map((style, i) => {
199
214
  if (style.raw) {
200
- return (0, _react2.jsx)("style", {
215
+ return ___EmotionJSX("style", {
201
216
  key: i
202
217
  }, style.value);
203
218
  }
204
- return (0, _react2.jsx)("link", {
219
+ return ___EmotionJSX("link", {
205
220
  key: i,
206
221
  href: style.value,
207
222
  type: "text/css",
@@ -209,7 +224,7 @@ class PreviewPane extends _react.default.Component {
209
224
  });
210
225
  });
211
226
  if (!collection) {
212
- (0, _react2.jsx)(PreviewPaneFrame, {
227
+ ___EmotionJSX(PreviewPaneFrame, {
213
228
  id: "preview-pane",
214
229
  head: styleEls
215
230
  });
@@ -221,36 +236,37 @@ class PreviewPane extends _react.default.Component {
221
236
  <body><div></div></body>
222
237
  </html>
223
238
  `;
224
- return (0, _react2.jsx)(_UI.ErrorBoundary, {
239
+ return ___EmotionJSX(ErrorBoundary, {
225
240
  config: config
226
- }, (0, _react2.jsx)(PreviewPaneFrame, {
241
+ }, ___EmotionJSX(PreviewPaneFrame, {
227
242
  id: "preview-pane",
228
243
  head: styleEls,
229
244
  initialContent: initialContent
230
- }, (0, _react2.jsx)(_reactFrameComponent.FrameContextConsumer, null, ({
245
+ }, ___EmotionJSX(FrameContextConsumer, null, ({
231
246
  document,
232
247
  window
233
248
  }) => {
234
- return (0, _react2.jsx)(_EditorPreviewContent.default, {
249
+ return ___EmotionJSX(EditorPreviewContent, {
235
250
  previewComponent,
236
251
  previewProps: _objectSpread(_objectSpread({}, previewProps), {}, {
237
252
  document,
238
253
  window
239
- })
254
+ }),
255
+ onFieldClick: this.props.onFieldClick
240
256
  });
241
257
  })));
242
258
  }
243
259
  }
244
- exports.PreviewPane = PreviewPane;
245
260
  PreviewPane.propTypes = {
246
- collection: _reactImmutableProptypes.default.map.isRequired,
247
- fields: _reactImmutableProptypes.default.list.isRequired,
248
- entry: _reactImmutableProptypes.default.map.isRequired,
249
- fieldsMetaData: _reactImmutableProptypes.default.map.isRequired,
250
- getAsset: _propTypes.default.func.isRequired
261
+ collection: ImmutablePropTypes.map.isRequired,
262
+ fields: ImmutablePropTypes.list.isRequired,
263
+ entry: ImmutablePropTypes.map.isRequired,
264
+ fieldsMetaData: ImmutablePropTypes.map.isRequired,
265
+ getAsset: PropTypes.func.isRequired,
266
+ onFieldClick: PropTypes.func
251
267
  };
252
268
  function mapStateToProps(state) {
253
- const isLoadingAsset = (0, _medias.selectIsLoadingAsset)(state.medias);
269
+ const isLoadingAsset = selectIsLoadingAsset(state.medias);
254
270
  return {
255
271
  isLoadingAsset,
256
272
  config: state.config,
@@ -259,7 +275,7 @@ function mapStateToProps(state) {
259
275
  }
260
276
  function mapDispatchToProps(dispatch) {
261
277
  return {
262
- boundGetAsset: (collection, entry) => (0, _media.boundGetAsset)(dispatch, collection, entry)
278
+ boundGetAsset: (collection, entry) => boundGetAsset(dispatch, collection, entry)
263
279
  };
264
280
  }
265
281
  function mergeProps(stateProps, dispatchProps, ownProps) {
@@ -267,4 +283,4 @@ function mergeProps(stateProps, dispatchProps, ownProps) {
267
283
  getAsset: dispatchProps.boundGetAsset(ownProps.collection, ownProps.entry)
268
284
  });
269
285
  }
270
- var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps, mergeProps)(PreviewPane);
286
+ export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(PreviewPane);
@@ -1,17 +1,10 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
10
1
  const _excluded = ["previewComponent"];
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
2
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
13
3
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
14
- class PreviewHOC extends _react.default.Component {
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import ImmutablePropTypes from 'react-immutable-proptypes';
7
+ class PreviewHOC extends React.Component {
15
8
  /**
16
9
  * Only re-render on value change, but always re-render objects and lists.
17
10
  * Their child widgets will each also be wrapped with this component, and
@@ -27,12 +20,12 @@ class PreviewHOC extends _react.default.Component {
27
20
  previewComponent
28
21
  } = _this$props,
29
22
  props = _objectWithoutProperties(_this$props, _excluded);
30
- return /*#__PURE__*/_react.default.createElement(previewComponent, props);
23
+ return /*#__PURE__*/React.createElement(previewComponent, props);
31
24
  }
32
25
  }
33
26
  PreviewHOC.propTypes = {
34
- previewComponent: _propTypes.default.func.isRequired,
35
- field: _reactImmutableProptypes.default.map.isRequired,
36
- value: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.object, _propTypes.default.string, _propTypes.default.bool])
27
+ previewComponent: PropTypes.func.isRequired,
28
+ field: ImmutablePropTypes.map.isRequired,
29
+ value: PropTypes.oneOfType([PropTypes.node, PropTypes.object, PropTypes.string, PropTypes.bool])
37
30
  };
38
- var _default = exports.default = PreviewHOC;
31
+ export default PreviewHOC;