@atlaskit/editor-plugin-block-menu
Version:
BlockMenu plugin for @atlaskit/editor-core
48 lines • 1.6 kB
JavaScript
import { logException } from '@atlaskit/editor-common/monitoring';
export var createBlockMenuTransformSourceRegistry = function createBlockMenuTransformSourceRegistry() {
var transforms = new Map();
return {
register: function register(registeredTransforms) {
var registered = [];
registeredTransforms.forEach(function (transform) {
if (transforms.has(transform.key)) {
void logException(new Error("Duplicate Block Menu transform key: ".concat(transform.key)), {
location: 'editor-plugin-block-menu'
});
return;
}
transforms.set(transform.key, transform);
registered.push(transform);
});
if (registered.length === 0) {
return function () {};
}
return function () {
registered.forEach(function (transform) {
if (transforms.get(transform.key) === transform) {
transforms.delete(transform.key);
}
});
};
},
resolve: function resolve(context) {
var transform = Array.from(transforms.values()).find(function (_ref) {
var isSupported = _ref.isSupported;
try {
return isSupported(context);
} catch (error) {
void logException(error instanceof Error ? error : new Error('Block Menu transform support check failed'), {
location: 'editor-plugin-block-menu'
});
return false;
}
});
return transform ? {
status: 'supported',
transform: transform
} : {
status: 'unsupported'
};
}
};
};