@atlaskit/renderer
Version:
Renderer component
63 lines (59 loc) • 2.71 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ADFEncoder = void 0;
exports.findInTree = findInTree;
exports.getText = exports.getEventHandler = void 0;
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _schemaDefault = require("@atlaskit/adf-schema/schema-default");
var _editorJsonTransformer = require("@atlaskit/editor-json-transformer");
/* eslint-disable @atlaskit/editor/no-re-export */
// Entry file in package.json
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function createEncoder(parser, encoder) {
return function (value) {
return encoder.encode(parser.parse(value));
};
}
var ADFEncoder = exports.ADFEncoder = /*#__PURE__*/(0, _createClass2.default)(
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function ADFEncoder(createTransformerWithSchema) {
(0, _classCallCheck2.default)(this, ADFEncoder);
var transformer = createTransformerWithSchema(_schemaDefault.defaultSchema);
this.encode = createEncoder(transformer, new _editorJsonTransformer.JSONTransformer());
});
var getText = exports.getText = function getText(node) {
return node.text || node.attrs && (node.attrs.text || node.attrs.shortName) || "[".concat(typeof node.type === 'string' ? node.type : node.type.name, "]");
};
var getEventHandler = exports.getEventHandler = function getEventHandler(eventHandlers, type) {
var eventName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'onClick';
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return eventHandlers && type && eventHandlers[type] && eventHandlers[type][eventName];
};
/**
* Traverse through parent elements of element. Return element for which evaluate(element) returns
* true. If topElement is reached before evaluate returns true, return false. Does not run evaluate
* on topElement.
* @param element Starting HTMLElement
* @param topElement HTMLElement to end search at. evaluate is not called on this element
* @param evaluate Function which returns true or false based on the given element. eg: Checks if
* element has desired classname.
*/
function findInTree(element, topElement, evaluate) {
if (element === topElement) {
return false;
}
if (evaluate(element)) {
return true;
}
if (!element.parentElement) {
return false;
}
return findInTree(element.parentElement, topElement, evaluate);
}