@gechiui/block-editor
Version:
56 lines (53 loc) • 1.6 kB
JavaScript
import { createElement } from "@gechiui/element";
/**
* External dependencies
*/
import { noop } from 'lodash';
/**
* GeChiUI dependencies
*/
import { forwardRef, useRef, useImperativeHandle, memo, useCallback } from '@gechiui/element';
import { Picker } from '@gechiui/components';
import { __ } from '@gechiui/i18n';
const DEFAULT_PICKER_OPTIONS = [{
id: 'createEmbed',
label: __('Create embed'),
value: 'createEmbed',
onSelect: noop
}, {
id: 'createLink',
label: __('Create link'),
value: 'createLink',
onSelect: noop
}];
const EmbedHandlerPicker = forwardRef((_ref, ref) => {
let {} = _ref;
const pickerRef = useRef();
const pickerOptions = useRef(DEFAULT_PICKER_OPTIONS).current;
const onPickerSelect = useCallback(value => {
const selectedItem = pickerOptions.find(item => item.value === value);
selectedItem.onSelect();
}, [pickerOptions]);
useImperativeHandle(ref, () => ({
presentPicker: _ref2 => {
var _pickerRef$current;
let {
createEmbed,
createLink
} = _ref2;
pickerOptions[0].onSelect = createEmbed;
pickerOptions[1].onSelect = createLink;
(_pickerRef$current = pickerRef.current) === null || _pickerRef$current === void 0 ? void 0 : _pickerRef$current.presentPicker();
}
}));
return createElement(Picker, {
ref: pickerRef,
options: pickerOptions,
onChange: onPickerSelect,
testID: "embed-handler-picker",
hideCancelButton: true,
leftAlign: true
});
});
export default memo(EmbedHandlerPicker);
//# sourceMappingURL=embed-handler-picker.native.js.map