@atlaskit/editor-plugin-rule
Version:
Rule plugin for @atlaskit/editor-core
219 lines (218 loc) • 9.66 kB
JavaScript
/* DividerOptions.tsx generated by @compiled/babel-plugin v3.0.2 */
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DividerOptions = void 0;
require("./DividerOptions.compiled.css");
var _runtime = require("@compiled/react/runtime");
var _react = _interopRequireWildcard(require("react"));
var _reactIntl = require("react-intl");
var _button = _interopRequireDefault(require("@atlaskit/button/icon/button"));
var _rule = require("@atlaskit/editor-common/messages/rule");
var _ReactEditorViewContext = _interopRequireDefault(require("@atlaskit/editor-common/ui-react/ReactEditorViewContext"));
var _strokeWeightLarge = _interopRequireDefault(require("@atlaskit/icon/core/stroke-weight-large"));
var _strokeWeightMedium = _interopRequireDefault(require("@atlaskit/icon/core/stroke-weight-medium"));
var _strokeWeightSmall = _interopRequireDefault(require("@atlaskit/icon/core/stroke-weight-small"));
var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
var _box = require("@atlaskit/primitives/compiled/box");
var _text = require("@atlaskit/primitives/compiled/text");
var _constants = require("./constants");
var _DashedStrokeIcon = require("./icons/DashedStrokeIcon");
var _DottedStrokeIcon = require("./icons/DottedStrokeIcon");
var _FadeStrokeIcon = require("./icons/FadeStrokeIcon");
var _SketchStrokeIcon = require("./icons/SketchStrokeIcon");
var _SolidStrokeIcon = require("./icons/SolidStrokeIcon");
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" != _typeof(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); }
var styles = {
container: "_18zrutpp _4t3i5jys",
section: "_1rjc1b66",
dividerOptionsContainer: "_zulpu2gc _1e0c1txw _1bsb1osq",
dividerOptionsButtonContainer: "_1rjc1b66"
};
var dividerOptionsButtonStyles = null;
var dividerOptionsButtonStylesOld = null;
var SmallWeightIcon = function SmallWeightIcon(iconProps) {
return /*#__PURE__*/_react.default.createElement(_strokeWeightSmall.default, {
color: "var(--ds-icon-subtle, #505258)",
label: iconProps.label
});
};
var MediumWeightIcon = function MediumWeightIcon(iconProps) {
return /*#__PURE__*/_react.default.createElement(_strokeWeightMedium.default, {
color: "var(--ds-icon-subtle, #505258)",
label: iconProps.label
});
};
var LargeWeightIcon = function LargeWeightIcon(iconProps) {
return /*#__PURE__*/_react.default.createElement(_strokeWeightLarge.default, {
color: "var(--ds-icon-subtle, #505258)",
label: iconProps.label
});
};
var weightOptions = [{
icon: SmallWeightIcon,
label: _rule.ruleMessages.smallDivider,
value: 1
}, {
icon: MediumWeightIcon,
label: _rule.ruleMessages.mediumDivider,
value: 2
}, {
icon: LargeWeightIcon,
label: _rule.ruleMessages.largeDivider,
value: 3
}];
var styleOptionRows = [
// row 1
[{
icon: _SolidStrokeIcon.SolidStrokeIcon,
label: _rule.ruleMessages.solidDivider,
value: 'solid'
}, {
icon: _DashedStrokeIcon.DashedStrokeIcon,
label: _rule.ruleMessages.dashedDivider,
value: 'dashed'
}, {
icon: _DottedStrokeIcon.DottedStrokeIcon,
label: _rule.ruleMessages.dottedDivider,
value: 'dotted'
}],
// row 2
[{
icon: _SketchStrokeIcon.SketchStrokeIcon,
label: _rule.ruleMessages.sketchDivider,
value: 'sketch'
}, {
icon: _FadeStrokeIcon.FadeStrokeIcon,
label: _rule.ruleMessages.fadeDivider,
value: 'fade'
}]];
var DividerOptionButton = function DividerOptionButton(_ref) {
var autoFocus = _ref.autoFocus,
icon = _ref.icon,
isSelected = _ref.isSelected,
label = _ref.label,
onKeyDownCapture = _ref.onKeyDownCapture,
onSelect = _ref.onSelect,
value = _ref.value;
var handleClick = (0, _react.useCallback)(function () {
return onSelect === null || onSelect === void 0 ? void 0 : onSelect(value);
}, [onSelect, value]);
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _runtime.ax)(["_2rko1mok _16jlkb7n _1vy41mok _ug5l1h6o _r55q1osq", !(0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_lovability_dividers_patch_1') && "_1reo15vq _18m915vq"])
}, /*#__PURE__*/_react.default.createElement(_button.default, {
autoFocus: autoFocus,
icon: icon,
isSelected: isSelected,
label: label,
onClick: handleClick,
onKeyDownCapture: onKeyDownCapture
}));
};
var DividerOptions = exports.DividerOptions = function DividerOptions(_ref2) {
var onStyleChange = _ref2.onStyleChange,
onWeightChange = _ref2.onWeightChange,
style = _ref2.style,
weight = _ref2.weight;
var _useIntl = (0, _reactIntl.useIntl)(),
formatMessage = _useIntl.formatMessage;
var _useContext = (0, _react.useContext)(_ReactEditorViewContext.default),
popupsMountPoint = _useContext.popupsMountPoint;
var containerRef = (0, _react.useRef)(null);
var handleKeyDown = (0, _react.useCallback)(function (event) {
var _containerRef$current, _containerRef$current2, _buttons$nextIndex;
var buttons = Array.from((_containerRef$current = (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.querySelectorAll('button')) !== null && _containerRef$current !== void 0 ? _containerRef$current : []);
var index = buttons.indexOf(event.currentTarget);
if (index === -1) {
return;
}
var columns = weightOptions.length;
var row = Math.floor(index / columns);
var column = index % columns;
var rows = [weightOptions].concat(styleOptionRows);
var nextIndex;
switch (event.key) {
case 'ArrowDown':
case 'ArrowUp':
{
var nextRow = (row + (event.key === 'ArrowDown' ? 1 : -1) + rows.length) % rows.length;
nextIndex = nextRow * columns + Math.min(column, rows[nextRow].length - 1);
break;
}
case 'ArrowRight':
nextIndex = (index + 1) % buttons.length;
break;
case 'ArrowLeft':
nextIndex = (index - 1 + buttons.length) % buttons.length;
break;
default:
return;
}
event.preventDefault();
event.stopPropagation();
(_buttons$nextIndex = buttons[nextIndex]) === null || _buttons$nextIndex === void 0 || _buttons$nextIndex.focus();
}, []);
var selectedStyle = style !== null && style !== void 0 ? style : _constants.DEFAULT_DIVIDER_STYLE;
var selectedWeight = weight !== null && weight !== void 0 ? weight : _constants.DEFAULT_DIVIDER_WEIGHT;
var isPatchEnabled = (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_lovability_dividers_patch_1');
return /*#__PURE__*/_react.default.createElement(_box.Box, {
xcss: styles.container,
ref: isPatchEnabled ? containerRef : undefined,
role: isPatchEnabled ? 'group' : undefined,
"aria-label": isPatchEnabled ? formatMessage(_rule.ruleMessages.dividerOptions) : undefined
}, /*#__PURE__*/_react.default.createElement(_box.Box, {
xcss: styles.section
}, /*#__PURE__*/_react.default.createElement(_text.Text, {
weight: "bold",
color: "color.text.subtle"
}, formatMessage(_rule.ruleMessages.weight)), /*#__PURE__*/_react.default.createElement(_box.Box, {
xcss: styles.dividerOptionsButtonContainer
}, /*#__PURE__*/_react.default.createElement(_box.Box, {
xcss: styles.dividerOptionsContainer
}, weightOptions.map(function (_ref3) {
var icon = _ref3.icon,
label = _ref3.label,
value = _ref3.value;
return /*#__PURE__*/_react.default.createElement(DividerOptionButton, {
key: value,
autoFocus:
// when there is no custom mount point, Dropdown sends ArrowDown
// on keyboard open so autofocusing is not required.
isPatchEnabled && Boolean(popupsMountPoint) && value === weightOptions[0].value,
icon: icon,
isSelected: selectedWeight === value,
label: formatMessage(label),
onKeyDownCapture: isPatchEnabled ? handleKeyDown : undefined,
onSelect: onWeightChange,
value: value
});
})))), /*#__PURE__*/_react.default.createElement(_box.Box, {
xcss: styles.section
}, /*#__PURE__*/_react.default.createElement(_text.Text, {
weight: "bold",
color: "color.text.subtle"
}, formatMessage(_rule.ruleMessages.style)), styleOptionRows.map(function (options) {
return /*#__PURE__*/_react.default.createElement(_box.Box, {
key: options[0].value,
xcss: styles.dividerOptionsButtonContainer
}, /*#__PURE__*/_react.default.createElement(_box.Box, {
xcss: styles.dividerOptionsContainer
}, options.map(function (_ref4) {
var icon = _ref4.icon,
label = _ref4.label,
value = _ref4.value;
return /*#__PURE__*/_react.default.createElement(DividerOptionButton, {
key: value,
icon: icon,
isSelected: selectedStyle === value,
label: formatMessage(label),
onKeyDownCapture: isPatchEnabled ? handleKeyDown : undefined,
onSelect: onStyleChange,
value: value
});
})));
})));
};