@atlaskit/jql-editor 5.12.7 → 5.13.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 (50) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/analytics/util.js +1 -1
  3. package/dist/cjs/plugins/autocomplete/view.js +16 -1
  4. package/dist/cjs/plugins/rich-inline-nodes/nodes/base/index.compiled.css +3 -1
  5. package/dist/cjs/plugins/rich-inline-nodes/nodes/base/index.js +2 -2
  6. package/dist/cjs/plugins/rich-inline-nodes/nodes/index.js +3 -1
  7. package/dist/cjs/plugins/rich-inline-nodes/nodes/project/index.js +9 -65
  8. package/dist/cjs/plugins/rich-inline-nodes/nodes/project/{index.compiled.css → project-node.compiled.css} +2 -2
  9. package/dist/cjs/plugins/rich-inline-nodes/nodes/project/project-node.js +78 -0
  10. package/dist/cjs/plugins/rich-inline-nodes/util/replace-nodes-transaction.js +8 -1
  11. package/dist/cjs/state/index.js +40 -31
  12. package/dist/es2019/analytics/util.js +1 -1
  13. package/dist/es2019/plugins/autocomplete/view.js +16 -1
  14. package/dist/es2019/plugins/rich-inline-nodes/nodes/base/index.compiled.css +3 -1
  15. package/dist/es2019/plugins/rich-inline-nodes/nodes/base/index.js +2 -2
  16. package/dist/es2019/plugins/rich-inline-nodes/nodes/index.js +3 -1
  17. package/dist/es2019/plugins/rich-inline-nodes/nodes/project/index.js +8 -56
  18. package/dist/es2019/plugins/rich-inline-nodes/nodes/project/{index.compiled.css → project-node.compiled.css} +2 -2
  19. package/dist/es2019/plugins/rich-inline-nodes/nodes/project/project-node.js +63 -0
  20. package/dist/es2019/plugins/rich-inline-nodes/util/replace-nodes-transaction.js +9 -1
  21. package/dist/es2019/state/index.js +12 -2
  22. package/dist/esm/analytics/util.js +1 -1
  23. package/dist/esm/plugins/autocomplete/view.js +16 -1
  24. package/dist/esm/plugins/rich-inline-nodes/nodes/base/index.compiled.css +3 -1
  25. package/dist/esm/plugins/rich-inline-nodes/nodes/base/index.js +2 -2
  26. package/dist/esm/plugins/rich-inline-nodes/nodes/index.js +3 -1
  27. package/dist/esm/plugins/rich-inline-nodes/nodes/project/index.js +8 -59
  28. package/dist/esm/plugins/rich-inline-nodes/nodes/project/{index.compiled.css → project-node.compiled.css} +2 -2
  29. package/dist/esm/plugins/rich-inline-nodes/nodes/project/project-node.js +67 -0
  30. package/dist/esm/plugins/rich-inline-nodes/util/replace-nodes-transaction.js +8 -1
  31. package/dist/esm/state/index.js +39 -30
  32. package/dist/types/index.d.ts +1 -1
  33. package/dist/types/plugins/rich-inline-nodes/nodes/index.d.ts +1 -0
  34. package/dist/types/plugins/rich-inline-nodes/nodes/project/index.d.ts +3 -10
  35. package/dist/types/plugins/rich-inline-nodes/nodes/project/project-node.d.ts +10 -0
  36. package/dist/types/plugins/rich-inline-nodes/nodes/project/types.d.ts +6 -4
  37. package/dist/types/state/index.d.ts +36 -1
  38. package/dist/types/types.d.ts +1 -1
  39. package/dist/types/ui/jql-editor/types.d.ts +9 -2
  40. package/dist/types/ui/types.d.ts +1 -1
  41. package/dist/types-ts4.5/index.d.ts +1 -1
  42. package/dist/types-ts4.5/plugins/rich-inline-nodes/nodes/index.d.ts +1 -0
  43. package/dist/types-ts4.5/plugins/rich-inline-nodes/nodes/project/index.d.ts +3 -10
  44. package/dist/types-ts4.5/plugins/rich-inline-nodes/nodes/project/project-node.d.ts +10 -0
  45. package/dist/types-ts4.5/plugins/rich-inline-nodes/nodes/project/types.d.ts +6 -4
  46. package/dist/types-ts4.5/state/index.d.ts +36 -1
  47. package/dist/types-ts4.5/types.d.ts +1 -1
  48. package/dist/types-ts4.5/ui/jql-editor/types.d.ts +9 -2
  49. package/dist/types-ts4.5/ui/types.d.ts +1 -1
  50. package/package.json +8 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/jql-editor
2
2
 
3
+ ## 5.13.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`daf5c2659939b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/daf5c2659939b) -
8
+ [ux] Added Project (Atlas) node to the JQL Editor
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
14
+ ## 5.12.8
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies
19
+
3
20
  ## 5.12.7
4
21
 
5
22
  ### Patch Changes
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useJqlEditorAnalytics = void 0;
7
7
  var _jqlEditorCommon = require("@atlaskit/jql-editor-common");
8
8
  var useJqlEditorAnalytics = exports.useJqlEditorAnalytics = function useJqlEditorAnalytics(analyticsSource) {
9
- return (0, _jqlEditorCommon.useJqlPackageAnalytics)(analyticsSource, "@atlaskit/jql-editor", "0.0.0-development", _jqlEditorCommon.ANALYTICS_CHANNEL);
9
+ return (0, _jqlEditorCommon.useJqlPackageAnalytics)(analyticsSource, "@atlaskit/jql-editor", "5.12.8", _jqlEditorCommon.ANALYTICS_CHANNEL);
10
10
  };
@@ -62,7 +62,7 @@ var AutocompletePluginView = exports.default = /*#__PURE__*/function (_ReactPlug
62
62
  if (_this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'user') {
63
63
  transaction.setMeta('hydrate', true);
64
64
  }
65
- if (_this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'team' && (0, _platformFeatureFlags.fg)('jira_update_jql_teams')) {
65
+ if (_this.enableRichInlineNodes && option.type === 'value' && (option.valueType === 'team' && (0, _platformFeatureFlags.fg)('jira_update_jql_teams') || option.valueType === 'project' && (0, _platformFeatureFlags.fg)('projects_in_jira_eap_drop2'))) {
66
66
  transaction.setMeta('hydrate', true);
67
67
  }
68
68
  var documentFrom = (0, _getDocumentPosition.default)(transaction.doc, from);
@@ -117,6 +117,21 @@ var AutocompletePluginView = exports.default = /*#__PURE__*/function (_ReactPlug
117
117
  }
118
118
  break;
119
119
  }
120
+ case 'project':
121
+ {
122
+ if ((0, _platformFeatureFlags.fg)('projects_in_jira_eap_drop2')) {
123
+ var _attributes2 = {
124
+ type: 'project',
125
+ id: value,
126
+ name: nameOnRichInlineNode !== null && nameOnRichInlineNode !== void 0 ? nameOnRichInlineNode : name,
127
+ fieldName: context === null || context === void 0 ? void 0 : context.field
128
+ };
129
+ nodes.push(_this.view.state.schema.nodes.project.create(_attributes2, textContent));
130
+ } else {
131
+ nodes.push(textContent);
132
+ }
133
+ break;
134
+ }
120
135
  default:
121
136
  {
122
137
  nodes.push(textContent);
@@ -2,10 +2,11 @@
2
2
  ._2rko12b0{border-radius:var(--ds-radius-small,4px)}
3
3
  ._1h6dq98m{border-color:var(--ds-border-selected,#1868db)}
4
4
  ._1rjcidpf{padding-block:0}
5
+ ._1e0c116y{display:inline-flex}
5
6
  ._1e0c1txw{display:flex}
6
7
  ._1hms8stv{text-decoration-line:underline}
7
8
  ._1kegt94y{text-decoration-thickness:1px}
8
- ._1pfh1i6y{margin-block-start:var(--ds-space-negative-025,-2px)}
9
+ ._1wpz1q9y{align-self:baseline}
9
10
  ._4bfu1r31{text-decoration-color:currentColor}
10
11
  ._4bfu1tmw{text-decoration-color:var(--ds-text-danger,#ae2e24)}
11
12
  ._4cvr1h6o{align-items:center}
@@ -17,6 +18,7 @@
17
18
  ._bfhki8nm{background-color:var(--ds-background-neutral,#0515240f)}
18
19
  ._bozgv77o{padding-inline-start:var(--ds-space-025,2px)}
19
20
  ._ect4zzfg{font-family:var(--ds-font-family-code,"Atlassian Mono",ui-monospace,Menlo,"Segoe UI Mono","Ubuntu Mono",monospace)}
21
+ ._s7n4z0dk{vertical-align:text-top}
20
22
  ._tdi7glyw{-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}
21
23
  ._y4ti1b66{padding-inline-end:var(--ds-space-050,4px)}
22
24
  ._irr31yvi:hover{background-color:var(--ds-background-danger-hovered,#ffd5d2)}
@@ -13,12 +13,12 @@ var _css = require("@atlaskit/css");
13
13
  var _lockLocked = _interopRequireDefault(require("@atlaskit/icon/core/lock-locked"));
14
14
  var _compiled = require("@atlaskit/primitives/compiled");
15
15
  var styles = {
16
- nodeWrapper: "_19it145i _2rko12b0 _1rjcidpf _1e0c1txw _4cvr1h6o _bfhki8nm _4t3igktf _bozgv77o _y4ti1b66 _irr3plhp",
16
+ nodeWrapper: "_19it145i _2rko12b0 _1rjcidpf _1e0c116y _s7n4z0dk _4cvr1h6o _1wpz1q9y _bfhki8nm _4t3igktf _bozgv77o _y4ti1b66 _irr3plhp",
17
17
  nodeWrapperSelected: "_1h6dq98m _bfhk15s3 _irr3ufnl",
18
18
  nodeWrapperError: "_4bfu1r31 _1hms8stv _ajmm1khm _1kegt94y _tdi7glyw _4bfu1tmw",
19
19
  nodeWrapperErrorSelected: "_bfhk1gly _irr31yvi",
20
20
  textWrapper: "_ect4zzfg",
21
- iconBeforeWrapper: "_1e0c1txw _4t3i7vkz _4cvr1h6o _1pfh1i6y",
21
+ iconBeforeWrapper: "_1e0c1txw _4t3i7vkz _4cvr1h6o",
22
22
  iconAfterWrapper: ""
23
23
  };
24
24
 
@@ -4,9 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.richInlineNodes = void 0;
7
+ var _project = require("./project");
7
8
  var _team = require("./team");
8
9
  var _user = require("./user");
9
10
  var richInlineNodes = exports.richInlineNodes = {
10
11
  user: _user.user,
11
- team: _team.team
12
+ team: _team.team,
13
+ project: _project.project
12
14
  };
@@ -1,71 +1,15 @@
1
- /* index.tsx generated by @compiled/babel-plugin v0.38.1 */
2
1
  "use strict";
3
2
 
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
- exports.ProjectNode = void 0;
9
- require("./index.compiled.css");
10
- var _runtime = require("@compiled/react/runtime");
11
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
- var _react = _interopRequireDefault(require("react"));
16
- var _emoji = require("@atlaskit/emoji");
17
- var _project = _interopRequireDefault(require("@atlaskit/icon/core/project"));
18
- var _compiled = require("@atlaskit/primitives/compiled");
19
- var _state = require("../../../../state");
20
- var _base = require("../base");
21
- var _messages = require("./messages");
22
- var _excluded = ["emojiName", "isRestricted", "text"];
23
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != (0, _typeof2.default)(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
24
- var styles = {
25
- emojiWrapper: "_1e0c1txw _4t3i7vkz _4cvr1h6o _1pfh1i6y",
26
- projectIconWrapper: "_ca0qv77o _u5f3v77o _n3tdv77o _19bvv77o"
27
- };
28
- var getTownsquareEmojiProvider = function getTownsquareEmojiProvider() {
29
- // Dynamically import the emoji provider to prevent an unnecessary network call from being made on module import
30
- return Promise.resolve().then(function () {
31
- return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_@atlaskit/jql-editor/plugins/rich-inline-nodes/nodes/base" */'@atlaskit/townsquare-emoji-provider'));
32
- }).then(function (mod) {
33
- return mod.emojiProvider;
34
- });
35
- };
36
-
37
- /**
38
- * ProjectNode Component
39
- *
40
- * This component is a component for rendering a pill-like view for Project (Atlas) node type
41
- * in the JQL editor
42
- */
43
- var ProjectNode = exports.ProjectNode = function ProjectNode(props) {
44
- var emojiName = props.emojiName,
45
- isRestricted = props.isRestricted,
46
- text = props.text,
47
- rest = (0, _objectWithoutProperties2.default)(props, _excluded);
48
- var _useIntl = (0, _state.useIntl)(),
49
- _useIntl2 = (0, _slicedToArray2.default)(_useIntl, 1),
50
- formatMessage = _useIntl2[0].formatMessage;
51
- var townsquareEmojiProvider = getTownsquareEmojiProvider();
52
- return /*#__PURE__*/_react.default.createElement(_base.NodeBase, (0, _extends2.default)({
53
- iconBefore: emojiName ? /*#__PURE__*/_react.default.createElement(_compiled.Box, {
54
- xcss: styles.emojiWrapper
55
- }, /*#__PURE__*/_react.default.createElement(_emoji.ResourcedEmoji, {
56
- emojiProvider: townsquareEmojiProvider,
57
- emojiId: {
58
- shortName: emojiName
59
- },
60
- fitToHeight: 16
61
- })) : /*#__PURE__*/_react.default.createElement(_compiled.Box, {
62
- xcss: styles.projectIconWrapper
63
- }, /*#__PURE__*/_react.default.createElement(_project.default, {
64
- size: "small",
65
- label: ""
66
- })),
67
- text: isRestricted ? formatMessage(_messages.messages.restrictedProject) : text
68
- }, rest, {
69
- isLocked: isRestricted
70
- }));
6
+ exports.project = void 0;
7
+ var _projectNode = require("./project-node");
8
+ var project = exports.project = {
9
+ component: _projectNode.ProjectNode,
10
+ attrs: {
11
+ id: {},
12
+ name: {},
13
+ fieldName: {}
14
+ }
71
15
  };
@@ -1,8 +1,8 @@
1
+ ._154i1i6y{top:var(--ds-space-negative-025,-2px)}
1
2
  ._19bvv77o{padding-left:var(--ds-space-025,2px)}
2
3
  ._1e0c1txw{display:flex}
3
- ._1pfh1i6y{margin-block-start:var(--ds-space-negative-025,-2px)}
4
- ._4cvr1h6o{align-items:center}
5
4
  ._4t3i7vkz{height:1pc}
6
5
  ._ca0qv77o{padding-top:var(--ds-space-025,2px)}
6
+ ._kqswh2mm{position:relative}
7
7
  ._n3tdv77o{padding-bottom:var(--ds-space-025,2px)}
8
8
  ._u5f3v77o{padding-right:var(--ds-space-025,2px)}
@@ -0,0 +1,78 @@
1
+ /* project-node.tsx generated by @compiled/babel-plugin v0.38.1 */
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ProjectNode = void 0;
9
+ require("./project-node.compiled.css");
10
+ var _runtime = require("@compiled/react/runtime");
11
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
+ var _react = _interopRequireDefault(require("react"));
16
+ var _reactIntlNext = require("react-intl-next");
17
+ var _emoji = require("@atlaskit/emoji");
18
+ var _project = _interopRequireDefault(require("@atlaskit/icon/core/project"));
19
+ var _compiled = require("@atlaskit/primitives/compiled");
20
+ var _state = require("../../../../state");
21
+ var _base = require("../base");
22
+ var _messages = require("./messages");
23
+ var _excluded = ["id", "fieldName", "name", "privateProject"];
24
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != (0, _typeof2.default)(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
25
+ var styles = {
26
+ emojiWrapper: "_1e0c1txw _4t3i7vkz _kqswh2mm _154i1i6y",
27
+ projectIconWrapper: "_ca0qv77o _u5f3v77o _n3tdv77o _19bvv77o"
28
+ };
29
+ var getTownsquareEmojiProvider = function getTownsquareEmojiProvider() {
30
+ // Dynamically import the emoji provider to prevent an unnecessary network call from being made on module import
31
+ return Promise.resolve().then(function () {
32
+ return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_@atlaskit/jql-editor/plugins/rich-inline-nodes/nodes/base" */'@atlaskit/townsquare-emoji-provider'));
33
+ }).then(function (mod) {
34
+ return mod.emojiProvider;
35
+ });
36
+ };
37
+
38
+ /**
39
+ * ProjectNode Component
40
+ *
41
+ * This component is a component for rendering a pill-like view for Project (Atlas) node type
42
+ * in the JQL editor
43
+ */
44
+ var ProjectNode = exports.ProjectNode = function ProjectNode(props) {
45
+ var id = props.id,
46
+ fieldName = props.fieldName,
47
+ name = props.name,
48
+ privateProject = props.privateProject,
49
+ rest = (0, _objectWithoutProperties2.default)(props, _excluded);
50
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
51
+ formatMessage = _useIntl.formatMessage;
52
+ var _useHydratedProject = (0, _state.useHydratedProject)({
53
+ id: id,
54
+ fieldName: fieldName
55
+ }),
56
+ _useHydratedProject2 = (0, _slicedToArray2.default)(_useHydratedProject, 1),
57
+ project = _useHydratedProject2[0];
58
+ var townsquareEmojiProvider = getTownsquareEmojiProvider();
59
+ return /*#__PURE__*/_react.default.createElement(_base.NodeBase, (0, _extends2.default)({
60
+ iconBefore: project !== null && project !== void 0 && project.iconName ? /*#__PURE__*/_react.default.createElement(_compiled.Box, {
61
+ xcss: styles.emojiWrapper
62
+ }, /*#__PURE__*/_react.default.createElement(_emoji.ResourcedEmoji, {
63
+ emojiProvider: townsquareEmojiProvider,
64
+ emojiId: {
65
+ shortName: project.iconName
66
+ },
67
+ fitToHeight: 16
68
+ })) : /*#__PURE__*/_react.default.createElement(_compiled.Box, {
69
+ xcss: styles.projectIconWrapper
70
+ }, /*#__PURE__*/_react.default.createElement(_project.default, {
71
+ size: "small",
72
+ label: ""
73
+ })),
74
+ text: privateProject || project !== null && project !== void 0 && project.privateProject ? formatMessage(_messages.messages.restrictedProject) : name
75
+ }, rest, {
76
+ isLocked: project === null || project === void 0 ? void 0 : project.privateProject
77
+ }));
78
+ };
@@ -33,7 +33,7 @@ var replaceRichInlineNodes = exports.replaceRichInlineNodes = function replaceRi
33
33
  fieldName = _ref2[0],
34
34
  values = _ref2[1];
35
35
  values.forEach(function (value) {
36
- if (value.type === 'user' || value.type === 'team' && (0, _platformFeatureFlags.fg)('jira_update_jql_teams')) {
36
+ if (value.type === 'user' || value.type === 'team' && (0, _platformFeatureFlags.fg)('jira_update_jql_teams') || value.type === 'project' && (0, _platformFeatureFlags.fg)('projects_in_jira_eap_drop2')) {
37
37
  // First try to find as direct value operand (e.g., Team[Team] = uuid)
38
38
  var astNodes = getValueNodes(ast, fieldName, value.id);
39
39
 
@@ -75,6 +75,13 @@ var getRichInlineNode = function getRichInlineNode(fieldName, value, text) {
75
75
  fieldName: fieldName
76
76
  }), _textContent);
77
77
  }
78
+ case 'project':
79
+ {
80
+ var _textContent2 = _schema.JQLEditorSchema.text(text);
81
+ return _schema.JQLEditorSchema.nodes.project.create(_objectSpread(_objectSpread({}, value), {}, {
82
+ fieldName: fieldName
83
+ }), _textContent2);
84
+ }
78
85
  default:
79
86
  {
80
87
  throw new Error("Unsupported hydrated value type ".concat(value.type));
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useStoreActions = exports.useScopedId = exports.useRichInlineNodesEnabled = exports.useOnSyntaxHelp = exports.useLineNumbersVisible = exports.useJqlError = exports.useIsSearching = exports.useIntl = exports.useIdPrefix = exports.useHydratedValue = exports.useHydratedUser = exports.useHydratedTeam = exports.useHydratedDeprecations = exports.useExternalMessages = exports.useEditorViewHasFocus = exports.useEditorView = exports.useEditorStateHasJqlError = exports.useEditorState = exports.useCustomErrorComponent = exports.useAutocompleteProvider = exports.useAutocompletePosition = exports.useAutocompleteOptions = exports.useAutocompleteLoading = exports.useAutocompleteIsOpen = exports.useAutocomplete = exports.initialState = exports.actions = exports.EditorStateContainer = void 0;
7
+ exports.useStoreActions = exports.useScopedId = exports.useRichInlineNodesEnabled = exports.useOnSyntaxHelp = exports.useLineNumbersVisible = exports.useJqlError = exports.useIsSearching = exports.useIntl = exports.useIdPrefix = exports.useHydratedValue = exports.useHydratedUser = exports.useHydratedTeam = exports.useHydratedProject = exports.useHydratedDeprecations = exports.useExternalMessages = exports.useEditorViewHasFocus = exports.useEditorView = exports.useEditorStateHasJqlError = exports.useEditorState = exports.useCustomErrorComponent = exports.useAutocompleteProvider = exports.useAutocompletePosition = exports.useAutocompleteOptions = exports.useAutocompleteLoading = exports.useAutocompleteIsOpen = exports.useAutocomplete = exports.initialState = exports.actions = exports.EditorStateContainer = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -918,16 +918,25 @@ var useHydratedTeam = exports.useHydratedTeam = (0, _reactSweetState.createHook)
918
918
  return team && team.type === 'team' ? team : undefined;
919
919
  }
920
920
  });
921
+ var useHydratedProject = exports.useHydratedProject = (0, _reactSweetState.createHook)(Store, {
922
+ selector: function selector(state, _ref41) {
923
+ var _state$hydratedValues4;
924
+ var id = _ref41.id,
925
+ fieldName = _ref41.fieldName;
926
+ var project = (_state$hydratedValues4 = state.hydratedValues[fieldName]) === null || _state$hydratedValues4 === void 0 ? void 0 : _state$hydratedValues4.get(id);
927
+ return project && project.type === 'project' ? project : undefined;
928
+ }
929
+ });
921
930
  var useHydratedDeprecations = exports.useHydratedDeprecations = (0, _reactSweetState.createHook)(Store, {
922
931
  selector: function selector(state) {
923
932
  var ast = (0, _jqlAst2.getJastFromState)(state.editorState);
924
933
  var fieldsInQuery = (0, _util.getFieldNodes)(ast);
925
934
  var toReturn = [];
926
- Object.entries(state.hydratedValues).forEach(function (_ref41) {
927
- var _state$hydratedValues4;
928
- var _ref42 = (0, _slicedToArray2.default)(_ref41, 1),
929
- fieldName = _ref42[0];
930
- (_state$hydratedValues4 = state.hydratedValues[fieldName]) === null || _state$hydratedValues4 === void 0 || _state$hydratedValues4.forEach(function (value) {
935
+ Object.entries(state.hydratedValues).forEach(function (_ref42) {
936
+ var _state$hydratedValues5;
937
+ var _ref43 = (0, _slicedToArray2.default)(_ref42, 1),
938
+ fieldName = _ref43[0];
939
+ (_state$hydratedValues5 = state.hydratedValues[fieldName]) === null || _state$hydratedValues5 === void 0 || _state$hydratedValues5.forEach(function (value) {
931
940
  if (value.type === 'deprecated-field') {
932
941
  if (fieldsInQuery.has(value.id.toLowerCase())) {
933
942
  toReturn.push(value);
@@ -950,19 +959,19 @@ var useOnSyntaxHelp = exports.useOnSyntaxHelp = (0, _reactSweetState.createHook)
950
959
  });
951
960
  var EditorStateContainer = exports.EditorStateContainer = (0, _reactSweetState.createContainer)(Store, {
952
961
  onInit: function onInit() {
953
- return function (_ref43, _ref44) {
954
- var getState = _ref43.getState,
955
- setState = _ref43.setState,
956
- dispatch = _ref43.dispatch;
957
- var intlRef = _ref44.intlRef,
958
- query = _ref44.query,
959
- isSearching = _ref44.isSearching,
960
- autocompleteProvider = _ref44.autocompleteProvider,
961
- externalMessages = _ref44.externalMessages,
962
- enableRichInlineNodes = _ref44.enableRichInlineNodes,
963
- onDebugUnsafeMessage = _ref44.onDebugUnsafeMessage,
964
- onSyntaxHelp = _ref44.onSyntaxHelp,
965
- customComponents = _ref44.customComponents;
962
+ return function (_ref44, _ref45) {
963
+ var getState = _ref44.getState,
964
+ setState = _ref44.setState,
965
+ dispatch = _ref44.dispatch;
966
+ var intlRef = _ref45.intlRef,
967
+ query = _ref45.query,
968
+ isSearching = _ref45.isSearching,
969
+ autocompleteProvider = _ref45.autocompleteProvider,
970
+ externalMessages = _ref45.externalMessages,
971
+ enableRichInlineNodes = _ref45.enableRichInlineNodes,
972
+ onDebugUnsafeMessage = _ref45.onDebugUnsafeMessage,
973
+ onSyntaxHelp = _ref45.onSyntaxHelp,
974
+ customComponents = _ref45.customComponents;
966
975
  setState({
967
976
  controlledQuery: query,
968
977
  query: query,
@@ -991,18 +1000,18 @@ var EditorStateContainer = exports.EditorStateContainer = (0, _reactSweetState.c
991
1000
  };
992
1001
  },
993
1002
  onUpdate: function onUpdate() {
994
- return function (_ref45, _ref46) {
995
- var getState = _ref45.getState,
996
- setState = _ref45.setState,
997
- dispatch = _ref45.dispatch;
998
- var controlledQueryProp = _ref46.query,
999
- isSearching = _ref46.isSearching,
1000
- autocompleteProvider = _ref46.autocompleteProvider,
1001
- externalMessages = _ref46.externalMessages,
1002
- enableRichInlineNodes = _ref46.enableRichInlineNodes,
1003
- onDebugUnsafeMessage = _ref46.onDebugUnsafeMessage,
1004
- onSyntaxHelp = _ref46.onSyntaxHelp,
1005
- customComponents = _ref46.customComponents;
1003
+ return function (_ref46, _ref47) {
1004
+ var getState = _ref46.getState,
1005
+ setState = _ref46.setState,
1006
+ dispatch = _ref46.dispatch;
1007
+ var controlledQueryProp = _ref47.query,
1008
+ isSearching = _ref47.isSearching,
1009
+ autocompleteProvider = _ref47.autocompleteProvider,
1010
+ externalMessages = _ref47.externalMessages,
1011
+ enableRichInlineNodes = _ref47.enableRichInlineNodes,
1012
+ onDebugUnsafeMessage = _ref47.onDebugUnsafeMessage,
1013
+ onSyntaxHelp = _ref47.onSyntaxHelp,
1014
+ customComponents = _ref47.customComponents;
1006
1015
  var _getState12 = getState(),
1007
1016
  controlledQuery = _getState12.controlledQuery,
1008
1017
  query = _getState12.query;
@@ -1,4 +1,4 @@
1
1
  import { ANALYTICS_CHANNEL, useJqlPackageAnalytics } from '@atlaskit/jql-editor-common';
2
2
  export const useJqlEditorAnalytics = analyticsSource => {
3
- return useJqlPackageAnalytics(analyticsSource, "@atlaskit/jql-editor", "0.0.0-development", ANALYTICS_CHANNEL);
3
+ return useJqlPackageAnalytics(analyticsSource, "@atlaskit/jql-editor", "5.12.8", ANALYTICS_CHANNEL);
4
4
  };
@@ -45,7 +45,7 @@ export default class AutocompletePluginView extends ReactPluginView {
45
45
  if (this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'user') {
46
46
  transaction.setMeta('hydrate', true);
47
47
  }
48
- if (this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'team' && fg('jira_update_jql_teams')) {
48
+ if (this.enableRichInlineNodes && option.type === 'value' && (option.valueType === 'team' && fg('jira_update_jql_teams') || option.valueType === 'project' && fg('projects_in_jira_eap_drop2'))) {
49
49
  transaction.setMeta('hydrate', true);
50
50
  }
51
51
  const documentFrom = getDocumentPosition(transaction.doc, from);
@@ -102,6 +102,21 @@ export default class AutocompletePluginView extends ReactPluginView {
102
102
  }
103
103
  break;
104
104
  }
105
+ case 'project':
106
+ {
107
+ if (fg('projects_in_jira_eap_drop2')) {
108
+ const attributes = {
109
+ type: 'project',
110
+ id: value,
111
+ name: nameOnRichInlineNode !== null && nameOnRichInlineNode !== void 0 ? nameOnRichInlineNode : name,
112
+ fieldName: context === null || context === void 0 ? void 0 : context.field
113
+ };
114
+ nodes.push(this.view.state.schema.nodes.project.create(attributes, textContent));
115
+ } else {
116
+ nodes.push(textContent);
117
+ }
118
+ break;
119
+ }
105
120
  default:
106
121
  {
107
122
  nodes.push(textContent);
@@ -2,10 +2,11 @@
2
2
  ._2rko12b0{border-radius:var(--ds-radius-small,4px)}
3
3
  ._1h6dq98m{border-color:var(--ds-border-selected,#1868db)}
4
4
  ._1rjcidpf{padding-block:0}
5
+ ._1e0c116y{display:inline-flex}
5
6
  ._1e0c1txw{display:flex}
6
7
  ._1hms8stv{text-decoration-line:underline}
7
8
  ._1kegt94y{text-decoration-thickness:1px}
8
- ._1pfh1i6y{margin-block-start:var(--ds-space-negative-025,-2px)}
9
+ ._1wpz1q9y{align-self:baseline}
9
10
  ._4bfu1r31{text-decoration-color:currentColor}
10
11
  ._4bfu1tmw{text-decoration-color:var(--ds-text-danger,#ae2e24)}
11
12
  ._4cvr1h6o{align-items:center}
@@ -17,6 +18,7 @@
17
18
  ._bfhki8nm{background-color:var(--ds-background-neutral,#0515240f)}
18
19
  ._bozgv77o{padding-inline-start:var(--ds-space-025,2px)}
19
20
  ._ect4zzfg{font-family:var(--ds-font-family-code,"Atlassian Mono",ui-monospace,Menlo,"Segoe UI Mono","Ubuntu Mono",monospace)}
21
+ ._s7n4z0dk{vertical-align:text-top}
20
22
  ._tdi7glyw{-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}
21
23
  ._y4ti1b66{padding-inline-end:var(--ds-space-050,4px)}
22
24
  ._irr31yvi:hover{background-color:var(--ds-background-danger-hovered,#ffd5d2)}
@@ -6,12 +6,12 @@ import { cx } from '@atlaskit/css';
6
6
  import LockLockedIcon from '@atlaskit/icon/core/lock-locked';
7
7
  import { Box, Inline, Pressable } from '@atlaskit/primitives/compiled';
8
8
  const styles = {
9
- nodeWrapper: "_19it145i _2rko12b0 _1rjcidpf _1e0c1txw _4cvr1h6o _bfhki8nm _4t3igktf _bozgv77o _y4ti1b66 _irr3plhp",
9
+ nodeWrapper: "_19it145i _2rko12b0 _1rjcidpf _1e0c116y _s7n4z0dk _4cvr1h6o _1wpz1q9y _bfhki8nm _4t3igktf _bozgv77o _y4ti1b66 _irr3plhp",
10
10
  nodeWrapperSelected: "_1h6dq98m _bfhk15s3 _irr3ufnl",
11
11
  nodeWrapperError: "_4bfu1r31 _1hms8stv _ajmm1khm _1kegt94y _tdi7glyw _4bfu1tmw",
12
12
  nodeWrapperErrorSelected: "_bfhk1gly _irr31yvi",
13
13
  textWrapper: "_ect4zzfg",
14
- iconBeforeWrapper: "_1e0c1txw _4t3i7vkz _4cvr1h6o _1pfh1i6y",
14
+ iconBeforeWrapper: "_1e0c1txw _4t3i7vkz _4cvr1h6o",
15
15
  iconAfterWrapper: ""
16
16
  };
17
17
 
@@ -1,6 +1,8 @@
1
+ import { project } from './project';
1
2
  import { team } from './team';
2
3
  import { user } from './user';
3
4
  export const richInlineNodes = {
4
5
  user,
5
- team
6
+ team,
7
+ project
6
8
  };
@@ -1,57 +1,9 @@
1
- /* index.tsx generated by @compiled/babel-plugin v0.38.1 */
2
- import _extends from "@babel/runtime/helpers/extends";
3
- import "./index.compiled.css";
4
- import { ax, ix } from "@compiled/react/runtime";
5
- import React from 'react';
6
- import { ResourcedEmoji } from '@atlaskit/emoji';
7
- import ProjectIcon from '@atlaskit/icon/core/project';
8
- import { Box } from '@atlaskit/primitives/compiled';
9
- import { useIntl } from '../../../../state';
10
- import { NodeBase } from '../base';
11
- import { messages } from './messages';
12
- const styles = {
13
- emojiWrapper: "_1e0c1txw _4t3i7vkz _4cvr1h6o _1pfh1i6y",
14
- projectIconWrapper: "_ca0qv77o _u5f3v77o _n3tdv77o _19bvv77o"
15
- };
16
- const getTownsquareEmojiProvider = () => {
17
- // Dynamically import the emoji provider to prevent an unnecessary network call from being made on module import
18
- return import( /* webpackChunkName: "@atlaskit-internal_@atlaskit/jql-editor/plugins/rich-inline-nodes/nodes/base" */'@atlaskit/townsquare-emoji-provider').then(mod => mod.emojiProvider);
19
- };
20
-
21
- /**
22
- * ProjectNode Component
23
- *
24
- * This component is a component for rendering a pill-like view for Project (Atlas) node type
25
- * in the JQL editor
26
- */
27
- export const ProjectNode = props => {
28
- const {
29
- emojiName,
30
- isRestricted,
31
- text,
32
- ...rest
33
- } = props;
34
- const [{
35
- formatMessage
36
- }] = useIntl();
37
- const townsquareEmojiProvider = getTownsquareEmojiProvider();
38
- return /*#__PURE__*/React.createElement(NodeBase, _extends({
39
- iconBefore: emojiName ? /*#__PURE__*/React.createElement(Box, {
40
- xcss: styles.emojiWrapper
41
- }, /*#__PURE__*/React.createElement(ResourcedEmoji, {
42
- emojiProvider: townsquareEmojiProvider,
43
- emojiId: {
44
- shortName: emojiName
45
- },
46
- fitToHeight: 16
47
- })) : /*#__PURE__*/React.createElement(Box, {
48
- xcss: styles.projectIconWrapper
49
- }, /*#__PURE__*/React.createElement(ProjectIcon, {
50
- size: "small",
51
- label: ""
52
- })),
53
- text: isRestricted ? formatMessage(messages.restrictedProject) : text
54
- }, rest, {
55
- isLocked: isRestricted
56
- }));
1
+ import { ProjectNode } from './project-node';
2
+ export const project = {
3
+ component: ProjectNode,
4
+ attrs: {
5
+ id: {},
6
+ name: {},
7
+ fieldName: {}
8
+ }
57
9
  };
@@ -1,8 +1,8 @@
1
+ ._154i1i6y{top:var(--ds-space-negative-025,-2px)}
1
2
  ._19bvv77o{padding-left:var(--ds-space-025,2px)}
2
3
  ._1e0c1txw{display:flex}
3
- ._1pfh1i6y{margin-block-start:var(--ds-space-negative-025,-2px)}
4
- ._4cvr1h6o{align-items:center}
5
4
  ._4t3i7vkz{height:1pc}
6
5
  ._ca0qv77o{padding-top:var(--ds-space-025,2px)}
6
+ ._kqswh2mm{position:relative}
7
7
  ._n3tdv77o{padding-bottom:var(--ds-space-025,2px)}
8
8
  ._u5f3v77o{padding-right:var(--ds-space-025,2px)}
@@ -0,0 +1,63 @@
1
+ /* project-node.tsx generated by @compiled/babel-plugin v0.38.1 */
2
+ import _extends from "@babel/runtime/helpers/extends";
3
+ import "./project-node.compiled.css";
4
+ import { ax, ix } from "@compiled/react/runtime";
5
+ import React from 'react';
6
+ import { useIntl } from 'react-intl-next';
7
+ import { ResourcedEmoji } from '@atlaskit/emoji';
8
+ import ProjectIcon from '@atlaskit/icon/core/project';
9
+ import { Box } from '@atlaskit/primitives/compiled';
10
+ import { useHydratedProject } from '../../../../state';
11
+ import { NodeBase } from '../base';
12
+ import { messages } from './messages';
13
+ const styles = {
14
+ emojiWrapper: "_1e0c1txw _4t3i7vkz _kqswh2mm _154i1i6y",
15
+ projectIconWrapper: "_ca0qv77o _u5f3v77o _n3tdv77o _19bvv77o"
16
+ };
17
+ const getTownsquareEmojiProvider = () => {
18
+ // Dynamically import the emoji provider to prevent an unnecessary network call from being made on module import
19
+ return import( /* webpackChunkName: "@atlaskit-internal_@atlaskit/jql-editor/plugins/rich-inline-nodes/nodes/base" */'@atlaskit/townsquare-emoji-provider').then(mod => mod.emojiProvider);
20
+ };
21
+
22
+ /**
23
+ * ProjectNode Component
24
+ *
25
+ * This component is a component for rendering a pill-like view for Project (Atlas) node type
26
+ * in the JQL editor
27
+ */
28
+ export const ProjectNode = props => {
29
+ const {
30
+ id,
31
+ fieldName,
32
+ name,
33
+ privateProject,
34
+ ...rest
35
+ } = props;
36
+ const {
37
+ formatMessage
38
+ } = useIntl();
39
+ const [project] = useHydratedProject({
40
+ id,
41
+ fieldName
42
+ });
43
+ const townsquareEmojiProvider = getTownsquareEmojiProvider();
44
+ return /*#__PURE__*/React.createElement(NodeBase, _extends({
45
+ iconBefore: project !== null && project !== void 0 && project.iconName ? /*#__PURE__*/React.createElement(Box, {
46
+ xcss: styles.emojiWrapper
47
+ }, /*#__PURE__*/React.createElement(ResourcedEmoji, {
48
+ emojiProvider: townsquareEmojiProvider,
49
+ emojiId: {
50
+ shortName: project.iconName
51
+ },
52
+ fitToHeight: 16
53
+ })) : /*#__PURE__*/React.createElement(Box, {
54
+ xcss: styles.projectIconWrapper
55
+ }, /*#__PURE__*/React.createElement(ProjectIcon, {
56
+ size: "small",
57
+ label: ""
58
+ })),
59
+ text: privateProject || project !== null && project !== void 0 && project.privateProject ? formatMessage(messages.restrictedProject) : name
60
+ }, rest, {
61
+ isLocked: project === null || project === void 0 ? void 0 : project.privateProject
62
+ }));
63
+ };