@atlaskit/editor-plugin-find-replace 0.1.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.
- package/.eslintrc.js +26 -0
- package/CHANGELOG.md +11 -0
- package/LICENSE.md +13 -0
- package/README.md +30 -0
- package/dist/cjs/FindReplaceToolbarButtonWithState.js +166 -0
- package/dist/cjs/actions.js +19 -0
- package/dist/cjs/commands-with-analytics.js +101 -0
- package/dist/cjs/commands.js +255 -0
- package/dist/cjs/index.js +12 -0
- package/dist/cjs/plugin.js +93 -0
- package/dist/cjs/pm-plugins/keymap.js +24 -0
- package/dist/cjs/pm-plugins/main.js +39 -0
- package/dist/cjs/pm-plugins/plugin-factory.js +109 -0
- package/dist/cjs/pm-plugins/plugin-key.js +8 -0
- package/dist/cjs/reducer.js +61 -0
- package/dist/cjs/styles.js +17 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/ui/Find.js +309 -0
- package/dist/cjs/ui/FindReplace.js +104 -0
- package/dist/cjs/ui/FindReplaceToolbarButton.js +133 -0
- package/dist/cjs/ui/FindReplaceTooltipButton.js +77 -0
- package/dist/cjs/ui/Replace.js +176 -0
- package/dist/cjs/ui/styles.js +46 -0
- package/dist/cjs/utils/array.js +13 -0
- package/dist/cjs/utils/batch-decorations.js +310 -0
- package/dist/cjs/utils/commands.js +16 -0
- package/dist/cjs/utils/index.js +290 -0
- package/dist/es2019/FindReplaceToolbarButtonWithState.js +153 -0
- package/dist/es2019/actions.js +13 -0
- package/dist/es2019/commands-with-analytics.js +72 -0
- package/dist/es2019/commands.js +240 -0
- package/dist/es2019/index.js +1 -0
- package/dist/es2019/plugin.js +88 -0
- package/dist/es2019/pm-plugins/keymap.js +16 -0
- package/dist/es2019/pm-plugins/main.js +30 -0
- package/dist/es2019/pm-plugins/plugin-factory.js +91 -0
- package/dist/es2019/pm-plugins/plugin-key.js +2 -0
- package/dist/es2019/reducer.js +56 -0
- package/dist/es2019/styles.js +18 -0
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/ui/Find.js +286 -0
- package/dist/es2019/ui/FindReplace.js +81 -0
- package/dist/es2019/ui/FindReplaceToolbarButton.js +122 -0
- package/dist/es2019/ui/FindReplaceTooltipButton.js +51 -0
- package/dist/es2019/ui/Replace.js +155 -0
- package/dist/es2019/ui/styles.js +50 -0
- package/dist/es2019/utils/array.js +3 -0
- package/dist/es2019/utils/batch-decorations.js +189 -0
- package/dist/es2019/utils/commands.js +6 -0
- package/dist/es2019/utils/index.js +249 -0
- package/dist/esm/FindReplaceToolbarButtonWithState.js +157 -0
- package/dist/esm/actions.js +13 -0
- package/dist/esm/commands-with-analytics.js +95 -0
- package/dist/esm/commands.js +248 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/plugin.js +86 -0
- package/dist/esm/pm-plugins/keymap.js +18 -0
- package/dist/esm/pm-plugins/main.js +33 -0
- package/dist/esm/pm-plugins/plugin-factory.js +104 -0
- package/dist/esm/pm-plugins/plugin-key.js +2 -0
- package/dist/esm/reducer.js +54 -0
- package/dist/esm/styles.js +11 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/ui/Find.js +304 -0
- package/dist/esm/ui/FindReplace.js +100 -0
- package/dist/esm/ui/FindReplaceToolbarButton.js +126 -0
- package/dist/esm/ui/FindReplaceTooltipButton.js +70 -0
- package/dist/esm/ui/Replace.js +171 -0
- package/dist/esm/ui/styles.js +39 -0
- package/dist/esm/utils/array.js +7 -0
- package/dist/esm/utils/batch-decorations.js +304 -0
- package/dist/esm/utils/commands.js +10 -0
- package/dist/esm/utils/index.js +280 -0
- package/dist/types/FindReplaceToolbarButtonWithState.d.ts +4 -0
- package/dist/types/actions.d.ts +64 -0
- package/dist/types/commands-with-analytics.d.ts +27 -0
- package/dist/types/commands.d.ts +12 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/plugin.d.ts +2 -0
- package/dist/types/pm-plugins/keymap.d.ts +4 -0
- package/dist/types/pm-plugins/main.d.ts +5 -0
- package/dist/types/pm-plugins/plugin-factory.d.ts +2 -0
- package/dist/types/pm-plugins/plugin-key.d.ts +3 -0
- package/dist/types/reducer.d.ts +4 -0
- package/dist/types/styles.d.ts +3 -0
- package/dist/types/types.d.ts +76 -0
- package/dist/types/ui/Find.d.ts +71 -0
- package/dist/types/ui/FindReplace.d.ts +43 -0
- package/dist/types/ui/FindReplaceToolbarButton.d.ts +21 -0
- package/dist/types/ui/FindReplaceTooltipButton.d.ts +18 -0
- package/dist/types/ui/Replace.d.ts +27 -0
- package/dist/types/ui/styles.d.ts +6 -0
- package/dist/types/utils/array.d.ts +1 -0
- package/dist/types/utils/batch-decorations.d.ts +36 -0
- package/dist/types/utils/commands.d.ts +2 -0
- package/dist/types/utils/index.d.ts +49 -0
- package/dist/types-ts4.5/FindReplaceToolbarButtonWithState.d.ts +4 -0
- package/dist/types-ts4.5/actions.d.ts +64 -0
- package/dist/types-ts4.5/commands-with-analytics.d.ts +27 -0
- package/dist/types-ts4.5/commands.d.ts +12 -0
- package/dist/types-ts4.5/index.d.ts +2 -0
- package/dist/types-ts4.5/plugin.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/keymap.d.ts +4 -0
- package/dist/types-ts4.5/pm-plugins/main.d.ts +5 -0
- package/dist/types-ts4.5/pm-plugins/plugin-factory.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/plugin-key.d.ts +3 -0
- package/dist/types-ts4.5/reducer.d.ts +4 -0
- package/dist/types-ts4.5/styles.d.ts +3 -0
- package/dist/types-ts4.5/types.d.ts +76 -0
- package/dist/types-ts4.5/ui/Find.d.ts +71 -0
- package/dist/types-ts4.5/ui/FindReplace.d.ts +43 -0
- package/dist/types-ts4.5/ui/FindReplaceToolbarButton.d.ts +21 -0
- package/dist/types-ts4.5/ui/FindReplaceTooltipButton.d.ts +18 -0
- package/dist/types-ts4.5/ui/Replace.d.ts +27 -0
- package/dist/types-ts4.5/ui/styles.d.ts +6 -0
- package/dist/types-ts4.5/utils/array.d.ts +1 -0
- package/dist/types-ts4.5/utils/batch-decorations.d.ts +36 -0
- package/dist/types-ts4.5/utils/commands.d.ts +2 -0
- package/dist/types-ts4.5/utils/index.d.ts +49 -0
- package/package.json +117 -0
- package/styles/package.json +17 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
var _react = _interopRequireDefault(require("react"));
|
|
16
|
+
var _react2 = require("@emotion/react");
|
|
17
|
+
var _Find = _interopRequireDefault(require("./Find"));
|
|
18
|
+
var _Replace = _interopRequireDefault(require("./Replace"));
|
|
19
|
+
var _styles = require("./styles");
|
|
20
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
21
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /* eslint-disable @atlaskit/design-system/consistent-css-prop-usage */ /* eslint-disable @atlaskit/design-system/prefer-primitives */ /** @jsx jsx */
|
|
22
|
+
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
23
|
+
var FindReplace = /*#__PURE__*/function (_React$PureComponent) {
|
|
24
|
+
(0, _inherits2.default)(FindReplace, _React$PureComponent);
|
|
25
|
+
var _super = _createSuper(FindReplace);
|
|
26
|
+
function FindReplace() {
|
|
27
|
+
var _this;
|
|
28
|
+
(0, _classCallCheck2.default)(this, FindReplace);
|
|
29
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
30
|
+
args[_key] = arguments[_key];
|
|
31
|
+
}
|
|
32
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
33
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "findTextfield", null);
|
|
34
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "replaceTextfield", null);
|
|
35
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setFindTextfieldRef", function (findTextfieldRef) {
|
|
36
|
+
_this.findTextfield = findTextfieldRef.current;
|
|
37
|
+
});
|
|
38
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setReplaceTextfieldRef", function (replaceTextfieldRef) {
|
|
39
|
+
_this.replaceTextfield = replaceTextfieldRef.current;
|
|
40
|
+
});
|
|
41
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setFocusToFind", function () {
|
|
42
|
+
if (_this.findTextfield) {
|
|
43
|
+
_this.findTextfield.focus();
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setFocusToReplace", function () {
|
|
47
|
+
if (_this.replaceTextfield) {
|
|
48
|
+
_this.replaceTextfield.focus();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return _this;
|
|
52
|
+
}
|
|
53
|
+
(0, _createClass2.default)(FindReplace, [{
|
|
54
|
+
key: "render",
|
|
55
|
+
value: function render() {
|
|
56
|
+
var _this$props = this.props,
|
|
57
|
+
findText = _this$props.findText,
|
|
58
|
+
count = _this$props.count,
|
|
59
|
+
shouldFocus = _this$props.shouldFocus,
|
|
60
|
+
onFind = _this$props.onFind,
|
|
61
|
+
onFindBlur = _this$props.onFindBlur,
|
|
62
|
+
onFindNext = _this$props.onFindNext,
|
|
63
|
+
onFindPrev = _this$props.onFindPrev,
|
|
64
|
+
onCancel = _this$props.onCancel,
|
|
65
|
+
replaceText = _this$props.replaceText,
|
|
66
|
+
onReplace = _this$props.onReplace,
|
|
67
|
+
onReplaceAll = _this$props.onReplaceAll,
|
|
68
|
+
dispatchAnalyticsEvent = _this$props.dispatchAnalyticsEvent,
|
|
69
|
+
allowMatchCase = _this$props.allowMatchCase,
|
|
70
|
+
shouldMatchCase = _this$props.shouldMatchCase,
|
|
71
|
+
onToggleMatchCase = _this$props.onToggleMatchCase;
|
|
72
|
+
return (0, _react2.jsx)("div", {
|
|
73
|
+
css: _styles.wrapperStyles
|
|
74
|
+
}, (0, _react2.jsx)(_Find.default, {
|
|
75
|
+
allowMatchCase: allowMatchCase,
|
|
76
|
+
shouldMatchCase: shouldMatchCase,
|
|
77
|
+
onToggleMatchCase: onToggleMatchCase,
|
|
78
|
+
findText: findText,
|
|
79
|
+
count: count,
|
|
80
|
+
shouldFocus: shouldFocus,
|
|
81
|
+
onFind: onFind,
|
|
82
|
+
onFindBlur: onFindBlur,
|
|
83
|
+
onFindPrev: onFindPrev,
|
|
84
|
+
onFindNext: onFindNext,
|
|
85
|
+
onFindTextfieldRefSet: this.setFindTextfieldRef,
|
|
86
|
+
onCancel: onCancel,
|
|
87
|
+
onArrowDown: this.setFocusToReplace
|
|
88
|
+
}), (0, _react2.jsx)("hr", {
|
|
89
|
+
css: _styles.ruleStyles,
|
|
90
|
+
id: "replace-hr-element"
|
|
91
|
+
}), (0, _react2.jsx)(_Replace.default, {
|
|
92
|
+
canReplace: count.total > 0,
|
|
93
|
+
replaceText: replaceText,
|
|
94
|
+
onReplace: onReplace,
|
|
95
|
+
onReplaceAll: onReplaceAll,
|
|
96
|
+
onReplaceTextfieldRefSet: this.setReplaceTextfieldRef,
|
|
97
|
+
onArrowUp: this.setFocusToFind,
|
|
98
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
}]);
|
|
102
|
+
return FindReplace;
|
|
103
|
+
}(_react.default.PureComponent);
|
|
104
|
+
var _default = exports.default = FindReplace;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
17
|
+
var _react = _interopRequireDefault(require("react"));
|
|
18
|
+
var _react2 = require("@emotion/react");
|
|
19
|
+
var _reactIntlNext = require("react-intl-next");
|
|
20
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
21
|
+
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
22
|
+
var _uiMenu = require("@atlaskit/editor-common/ui-menu");
|
|
23
|
+
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
24
|
+
var _search = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/search"));
|
|
25
|
+
var _FindReplace = _interopRequireDefault(require("./FindReplace"));
|
|
26
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
27
|
+
/* eslint-disable @atlaskit/design-system/consistent-css-prop-usage */
|
|
28
|
+
/** @jsx jsx */
|
|
29
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
30
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
31
|
+
var toolbarButtonWrapper = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex: 1 1 auto;\n flex-grow: 0;\n justify-content: flex-end;\n align-items: center;\n padding: 0 ", ";\n @media (max-width: ", "px) {\n justify-content: center;\n padding: 0;\n }\n"])), "var(--ds-space-100, 8px)", _editorSharedStyles.akEditorMobileMaxWidth);
|
|
32
|
+
var toolbarButtonWrapperFullWith = (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n flex-grow: 1;\n"])));
|
|
33
|
+
var wrapper = (0, _react2.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: column;\n"])));
|
|
34
|
+
var messages = (0, _reactIntlNext.defineMessages)({
|
|
35
|
+
findReplaceToolbarButton: {
|
|
36
|
+
id: 'fabric.editor.findReplaceToolbarButton',
|
|
37
|
+
defaultMessage: 'Find and replace',
|
|
38
|
+
description: '"Find" highlights all instances of a word or phrase on the document, and "Replace" changes one or all of those instances to something else'
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
42
|
+
var FindReplaceToolbarButton = /*#__PURE__*/function (_React$PureComponent) {
|
|
43
|
+
(0, _inherits2.default)(FindReplaceToolbarButton, _React$PureComponent);
|
|
44
|
+
var _super = _createSuper(FindReplaceToolbarButton);
|
|
45
|
+
function FindReplaceToolbarButton() {
|
|
46
|
+
var _this;
|
|
47
|
+
(0, _classCallCheck2.default)(this, FindReplaceToolbarButton);
|
|
48
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
49
|
+
args[_key] = arguments[_key];
|
|
50
|
+
}
|
|
51
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
52
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "toggleOpen", function () {
|
|
53
|
+
if (_this.props.isActive) {
|
|
54
|
+
_this.props.onCancel({
|
|
55
|
+
triggerMethod: _analytics.TRIGGER_METHOD.TOOLBAR
|
|
56
|
+
});
|
|
57
|
+
} else {
|
|
58
|
+
_this.props.onActivate();
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return _this;
|
|
62
|
+
}
|
|
63
|
+
(0, _createClass2.default)(FindReplaceToolbarButton, [{
|
|
64
|
+
key: "render",
|
|
65
|
+
value: function render() {
|
|
66
|
+
var _this2 = this;
|
|
67
|
+
var _this$props = this.props,
|
|
68
|
+
popupsMountPoint = _this$props.popupsMountPoint,
|
|
69
|
+
popupsBoundariesElement = _this$props.popupsBoundariesElement,
|
|
70
|
+
popupsScrollableElement = _this$props.popupsScrollableElement,
|
|
71
|
+
isReducedSpacing = _this$props.isReducedSpacing,
|
|
72
|
+
findText = _this$props.findText,
|
|
73
|
+
replaceText = _this$props.replaceText,
|
|
74
|
+
isActive = _this$props.isActive,
|
|
75
|
+
index = _this$props.index,
|
|
76
|
+
numMatches = _this$props.numMatches,
|
|
77
|
+
formatMessage = _this$props.intl.formatMessage,
|
|
78
|
+
takeFullWidth = _this$props.takeFullWidth;
|
|
79
|
+
var title = formatMessage(messages.findReplaceToolbarButton);
|
|
80
|
+
var stackBelowOtherEditorFloatingPanels = _editorSharedStyles.akEditorFloatingPanelZIndex - 1;
|
|
81
|
+
var keymap = (0, _keymaps.findKeymapByDescription)('Find');
|
|
82
|
+
return (0, _react2.jsx)("div", {
|
|
83
|
+
css: [toolbarButtonWrapper, takeFullWidth && toolbarButtonWrapperFullWith]
|
|
84
|
+
}, (0, _react2.jsx)(_uiMenu.Dropdown, {
|
|
85
|
+
mountTo: popupsMountPoint,
|
|
86
|
+
boundariesElement: popupsBoundariesElement,
|
|
87
|
+
scrollableElement: popupsScrollableElement,
|
|
88
|
+
isOpen: isActive,
|
|
89
|
+
handleEscapeKeydown: function handleEscapeKeydown() {
|
|
90
|
+
if (isActive) {
|
|
91
|
+
_this2.props.onCancel({
|
|
92
|
+
triggerMethod: _analytics.TRIGGER_METHOD.KEYBOARD
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
fitWidth: 352,
|
|
97
|
+
zIndex: stackBelowOtherEditorFloatingPanels,
|
|
98
|
+
arrowKeyNavigationProviderOptions: {
|
|
99
|
+
type: _uiMenu.ArrowKeyNavigationType.MENU,
|
|
100
|
+
disableArrowKeyNavigation: true
|
|
101
|
+
},
|
|
102
|
+
trigger: (0, _react2.jsx)(_uiMenu.ToolbarButton, {
|
|
103
|
+
buttonId: _uiMenu.TOOLBAR_BUTTON.FIND_REPLACE,
|
|
104
|
+
spacing: isReducedSpacing ? 'none' : 'default',
|
|
105
|
+
selected: isActive,
|
|
106
|
+
title: (0, _react2.jsx)(_keymaps.ToolTipContent, {
|
|
107
|
+
description: title,
|
|
108
|
+
keymap: keymap
|
|
109
|
+
}),
|
|
110
|
+
iconBefore: (0, _react2.jsx)(_search.default, {
|
|
111
|
+
label: title
|
|
112
|
+
}),
|
|
113
|
+
onClick: this.toggleOpen,
|
|
114
|
+
"aria-expanded": isActive,
|
|
115
|
+
"aria-haspopup": true,
|
|
116
|
+
"aria-label": keymap ? (0, _keymaps.tooltip)(keymap, title) : title,
|
|
117
|
+
"aria-keyshortcuts": (0, _keymaps.getAriaKeyshortcuts)(keymap)
|
|
118
|
+
})
|
|
119
|
+
}, (0, _react2.jsx)("div", {
|
|
120
|
+
css: wrapper
|
|
121
|
+
}, (0, _react2.jsx)(_FindReplace.default, (0, _extends2.default)({
|
|
122
|
+
findText: findText,
|
|
123
|
+
replaceText: replaceText,
|
|
124
|
+
count: {
|
|
125
|
+
index: index,
|
|
126
|
+
total: numMatches
|
|
127
|
+
}
|
|
128
|
+
}, this.props)))));
|
|
129
|
+
}
|
|
130
|
+
}]);
|
|
131
|
+
return FindReplaceToolbarButton;
|
|
132
|
+
}(_react.default.PureComponent);
|
|
133
|
+
var _default = exports.default = (0, _reactIntlNext.injectIntl)(FindReplaceToolbarButton);
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.FindReplaceTooltipButton = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
|
17
|
+
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
18
|
+
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
19
|
+
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
20
|
+
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; }
|
|
21
|
+
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) { (0, _defineProperty2.default)(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; }
|
|
22
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
23
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
24
|
+
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
25
|
+
var FindReplaceTooltipButton = exports.FindReplaceTooltipButton = /*#__PURE__*/function (_React$PureComponent) {
|
|
26
|
+
(0, _inherits2.default)(FindReplaceTooltipButton, _React$PureComponent);
|
|
27
|
+
var _super = _createSuper(FindReplaceTooltipButton);
|
|
28
|
+
function FindReplaceTooltipButton() {
|
|
29
|
+
var _this;
|
|
30
|
+
(0, _classCallCheck2.default)(this, FindReplaceTooltipButton);
|
|
31
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
32
|
+
args[_key] = arguments[_key];
|
|
33
|
+
}
|
|
34
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
35
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "buttonRef", /*#__PURE__*/_react.default.createRef());
|
|
36
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleClick", function () {
|
|
37
|
+
_this.props.onClick(_this.buttonRef);
|
|
38
|
+
});
|
|
39
|
+
return _this;
|
|
40
|
+
}
|
|
41
|
+
(0, _createClass2.default)(FindReplaceTooltipButton, [{
|
|
42
|
+
key: "render",
|
|
43
|
+
value: function render() {
|
|
44
|
+
var _this$props = this.props,
|
|
45
|
+
title = _this$props.title,
|
|
46
|
+
icon = _this$props.icon,
|
|
47
|
+
keymapDescription = _this$props.keymapDescription,
|
|
48
|
+
disabled = _this$props.disabled,
|
|
49
|
+
isPressed = _this$props.isPressed;
|
|
50
|
+
var pressedProps = _objectSpread({}, typeof isPressed === 'boolean' && {
|
|
51
|
+
'aria-pressed': isPressed
|
|
52
|
+
});
|
|
53
|
+
return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
|
|
54
|
+
content: /*#__PURE__*/_react.default.createElement(_keymaps.ToolTipContent, {
|
|
55
|
+
description: title,
|
|
56
|
+
keymap: (0, _keymaps.findKeymapByDescription)(keymapDescription)
|
|
57
|
+
}),
|
|
58
|
+
hideTooltipOnClick: true,
|
|
59
|
+
position: 'top'
|
|
60
|
+
}, /*#__PURE__*/_react.default.createElement(_standardButton.default, (0, _extends2.default)({
|
|
61
|
+
label: title,
|
|
62
|
+
appearance: "subtle",
|
|
63
|
+
testId: title,
|
|
64
|
+
ref: this.buttonRef,
|
|
65
|
+
iconBefore: icon,
|
|
66
|
+
isDisabled: disabled,
|
|
67
|
+
onClick: this.handleClick,
|
|
68
|
+
isSelected: isPressed,
|
|
69
|
+
shouldFitContainer: true
|
|
70
|
+
}, pressedProps)));
|
|
71
|
+
}
|
|
72
|
+
}]);
|
|
73
|
+
return FindReplaceTooltipButton;
|
|
74
|
+
}(_react.default.PureComponent);
|
|
75
|
+
(0, _defineProperty2.default)(FindReplaceTooltipButton, "defaultProps", {
|
|
76
|
+
keymapDescription: 'no-keymap'
|
|
77
|
+
});
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
var _react = _interopRequireDefault(require("react"));
|
|
16
|
+
var _react2 = require("@emotion/react");
|
|
17
|
+
var _reactIntlNext = require("react-intl-next");
|
|
18
|
+
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
19
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
20
|
+
var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
|
|
21
|
+
var _styles = require("./styles");
|
|
22
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
23
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /* eslint-disable @atlaskit/design-system/consistent-css-prop-usage */ /** @jsx jsx */
|
|
24
|
+
var messages = (0, _reactIntlNext.defineMessages)({
|
|
25
|
+
replaceWith: {
|
|
26
|
+
id: 'fabric.editor.replaceWith',
|
|
27
|
+
defaultMessage: 'Replace with',
|
|
28
|
+
description: 'The value that will replace the word or phrase that was searched for'
|
|
29
|
+
},
|
|
30
|
+
replace: {
|
|
31
|
+
id: 'fabric.editor.replace',
|
|
32
|
+
defaultMessage: 'Replace',
|
|
33
|
+
description: 'Replace only the currently selected instance of the word or phrase'
|
|
34
|
+
},
|
|
35
|
+
replaceAll: {
|
|
36
|
+
id: 'fabric.editor.replaceAll',
|
|
37
|
+
defaultMessage: 'Replace all',
|
|
38
|
+
description: 'Replace all instances of the word or phrase throughout the entire document'
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
43
|
+
var Replace = /*#__PURE__*/function (_React$PureComponent) {
|
|
44
|
+
(0, _inherits2.default)(Replace, _React$PureComponent);
|
|
45
|
+
var _super = _createSuper(Replace);
|
|
46
|
+
function Replace(props) {
|
|
47
|
+
var _this;
|
|
48
|
+
(0, _classCallCheck2.default)(this, Replace);
|
|
49
|
+
_this = _super.call(this, props);
|
|
50
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "replaceTextfieldRef", /*#__PURE__*/_react.default.createRef());
|
|
51
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "skipWhileComposing", function (fn) {
|
|
52
|
+
if (_this.state.isComposing) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
fn();
|
|
56
|
+
});
|
|
57
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleReplaceClick", function () {
|
|
58
|
+
return _this.skipWhileComposing(function () {
|
|
59
|
+
_this.props.onReplace({
|
|
60
|
+
triggerMethod: _analytics.TRIGGER_METHOD.BUTTON,
|
|
61
|
+
replaceText: _this.state.replaceText
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleReplaceChange", function (event) {
|
|
66
|
+
return _this.skipWhileComposing(function () {
|
|
67
|
+
_this.updateReplaceValue(event.target.value);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateReplaceValue", function (replaceText) {
|
|
71
|
+
var dispatchAnalyticsEvent = _this.props.dispatchAnalyticsEvent;
|
|
72
|
+
if (dispatchAnalyticsEvent) {
|
|
73
|
+
dispatchAnalyticsEvent({
|
|
74
|
+
eventType: _analytics.EVENT_TYPE.TRACK,
|
|
75
|
+
action: _analytics.ACTION.CHANGED_REPLACEMENT_TEXT,
|
|
76
|
+
actionSubject: _analytics.ACTION_SUBJECT.FIND_REPLACE_DIALOG
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
_this.setState({
|
|
80
|
+
replaceText: replaceText
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleReplaceKeyDown", function (event) {
|
|
84
|
+
return _this.skipWhileComposing(function () {
|
|
85
|
+
if (event.key === 'Enter') {
|
|
86
|
+
_this.props.onReplace({
|
|
87
|
+
triggerMethod: _analytics.TRIGGER_METHOD.KEYBOARD,
|
|
88
|
+
replaceText: _this.state.replaceText
|
|
89
|
+
});
|
|
90
|
+
} else if (event.key === 'ArrowUp') {
|
|
91
|
+
// we want to move focus between find & replace texfields when user hits up/down arrows
|
|
92
|
+
_this.props.onArrowUp();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleReplaceAllClick", function () {
|
|
97
|
+
return _this.skipWhileComposing(function () {
|
|
98
|
+
_this.props.onReplaceAll({
|
|
99
|
+
replaceText: _this.state.replaceText
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleCompositionStart", function () {
|
|
104
|
+
_this.setState({
|
|
105
|
+
isComposing: true
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleCompositionEnd", function (event) {
|
|
109
|
+
_this.setState({
|
|
110
|
+
isComposing: false
|
|
111
|
+
});
|
|
112
|
+
// type for React.CompositionEvent doesn't set type for target correctly
|
|
113
|
+
_this.updateReplaceValue(event.target.value);
|
|
114
|
+
});
|
|
115
|
+
var _replaceText = props.replaceText,
|
|
116
|
+
formatMessage = props.intl.formatMessage;
|
|
117
|
+
_this.state = {
|
|
118
|
+
replaceText: _replaceText || '',
|
|
119
|
+
isComposing: false
|
|
120
|
+
};
|
|
121
|
+
_this.replaceWith = formatMessage(messages.replaceWith);
|
|
122
|
+
_this.replace = formatMessage(messages.replace);
|
|
123
|
+
_this.replaceAll = formatMessage(messages.replaceAll);
|
|
124
|
+
return _this;
|
|
125
|
+
}
|
|
126
|
+
(0, _createClass2.default)(Replace, [{
|
|
127
|
+
key: "componentDidMount",
|
|
128
|
+
value: function componentDidMount() {
|
|
129
|
+
this.props.onReplaceTextfieldRefSet(this.replaceTextfieldRef);
|
|
130
|
+
}
|
|
131
|
+
}, {
|
|
132
|
+
key: "componentDidUpdate",
|
|
133
|
+
value: function componentDidUpdate(_ref) {
|
|
134
|
+
var prevReplaceText = _ref.replaceText;
|
|
135
|
+
var replaceText = this.props.replaceText;
|
|
136
|
+
if (replaceText && replaceText !== prevReplaceText) {
|
|
137
|
+
this.setState({
|
|
138
|
+
replaceText: replaceText,
|
|
139
|
+
isComposing: false
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}, {
|
|
144
|
+
key: "render",
|
|
145
|
+
value: function render() {
|
|
146
|
+
var replaceText = this.state.replaceText;
|
|
147
|
+
var canReplace = this.props.canReplace;
|
|
148
|
+
return (0, _react2.jsx)("div", {
|
|
149
|
+
css: _styles.sectionWrapperStyles
|
|
150
|
+
}, (0, _react2.jsx)(_textfield.default, {
|
|
151
|
+
name: "replace",
|
|
152
|
+
appearance: "none",
|
|
153
|
+
placeholder: this.replaceWith,
|
|
154
|
+
defaultValue: replaceText,
|
|
155
|
+
ref: this.replaceTextfieldRef,
|
|
156
|
+
autoComplete: "off",
|
|
157
|
+
onChange: this.handleReplaceChange,
|
|
158
|
+
onKeyDown: this.handleReplaceKeyDown,
|
|
159
|
+
onCompositionStart: this.handleCompositionStart,
|
|
160
|
+
onCompositionEnd: this.handleCompositionEnd
|
|
161
|
+
}), (0, _react2.jsx)(_standardButton.default, {
|
|
162
|
+
css: _styles.replaceSectionButtonStyles,
|
|
163
|
+
testId: this.replace,
|
|
164
|
+
onClick: this.handleReplaceClick,
|
|
165
|
+
isDisabled: !canReplace
|
|
166
|
+
}, this.replace), (0, _react2.jsx)(_standardButton.default, {
|
|
167
|
+
css: _styles.replaceSectionButtonStyles,
|
|
168
|
+
testId: this.replaceAll,
|
|
169
|
+
onClick: this.handleReplaceAllClick,
|
|
170
|
+
isDisabled: !canReplace
|
|
171
|
+
}, this.replaceAll));
|
|
172
|
+
}
|
|
173
|
+
}]);
|
|
174
|
+
return Replace;
|
|
175
|
+
}(_react.default.PureComponent);
|
|
176
|
+
var _default = exports.default = (0, _reactIntlNext.injectIntl)(Replace);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.wrapperStyles = exports.sectionWrapperStyles = exports.ruleStyles = exports.replaceSectionButtonStyles = exports.countWrapperStyles = exports.countStyles = void 0;
|
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
+
var _react = require("@emotion/react");
|
|
10
|
+
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
11
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
12
|
+
var _templateObject;
|
|
13
|
+
/* eslint-disable @atlaskit/design-system/no-nested-styles */
|
|
14
|
+
/* eslint-disable @repo/internal/styles/no-exported-styles */
|
|
15
|
+
/** @jsx jsx */
|
|
16
|
+
var replaceSectionButtonStyles = exports.replaceSectionButtonStyles = (0, _react.css)({
|
|
17
|
+
marginLeft: "var(--ds-space-050, 4px)"
|
|
18
|
+
});
|
|
19
|
+
var ruleStyles = exports.ruleStyles = (0, _react.css)({
|
|
20
|
+
width: '100%',
|
|
21
|
+
border: 'none',
|
|
22
|
+
backgroundColor: "".concat("var(--ds-border, ".concat(_colors.N30A, ")")),
|
|
23
|
+
margin: "var(--ds-space-050, 4px)".concat(" 0px"),
|
|
24
|
+
height: '1px',
|
|
25
|
+
borderRadius: '1px'
|
|
26
|
+
});
|
|
27
|
+
var wrapperStyles = exports.wrapperStyles = (0, _react.css)({
|
|
28
|
+
display: 'flex',
|
|
29
|
+
flexDirection: 'column',
|
|
30
|
+
'> *:not(#replace-hr-element)': {
|
|
31
|
+
margin: "0px ".concat("var(--ds-space-050, 4px)")
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
var sectionWrapperStyles = exports.sectionWrapperStyles = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n\n & > * {\n display: inline-flex;\n height: 32px;\n flex: 0 0 auto;\n }\n\n & > [data-ds--text-field--container] {\n display: flex;\n flex: 1 1 auto;\n }\n"])));
|
|
35
|
+
var countStyles = exports.countStyles = (0, _react.css)({
|
|
36
|
+
color: "".concat("var(--ds-text-subtlest, ".concat(_colors.N60, ")")),
|
|
37
|
+
fontSize: "".concat((0, _editorSharedStyles.relativeFontSizeToBase16)(12)),
|
|
38
|
+
flex: '0 0 auto',
|
|
39
|
+
justifyContent: 'center',
|
|
40
|
+
alignItems: 'center',
|
|
41
|
+
marginLeft: "var(--ds-space-050, 4px)",
|
|
42
|
+
marginRight: "var(--ds-space-100, 8px)"
|
|
43
|
+
});
|
|
44
|
+
var countWrapperStyles = exports.countWrapperStyles = (0, _react.css)({
|
|
45
|
+
alignItems: 'center'
|
|
46
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.findUniqueItemsIn = findUniqueItemsIn;
|
|
7
|
+
function findUniqueItemsIn(findIn, checkWith, comparator) {
|
|
8
|
+
return findIn.filter(function (firstItem) {
|
|
9
|
+
return checkWith.findIndex(function (secondItem) {
|
|
10
|
+
return comparator ? comparator(firstItem, secondItem) : firstItem === secondItem;
|
|
11
|
+
}) === -1;
|
|
12
|
+
});
|
|
13
|
+
}
|