UNPKG

@atlaskit/adf-schema

Version:

Shared package that contains the ADF-schema (json) and ProseMirror node/mark specs

78 lines (74 loc) 2.1 kB
import { layoutColumn as layoutColumnFactory } from '../../next-schema/generated/nodeTypes'; import { uuid } from '../../utils/uuid'; /** * @name layoutColumn_node */ export const layoutColumn = layoutColumnFactory({ parseDOM: [{ context: 'layoutColumn//', tag: 'div[data-layout-column]', skip: true }, { tag: 'div[data-layout-column]', getAttrs: domNode => { const dom = domNode; return { width: Number(dom.getAttribute('data-column-width')) || undefined }; } }], toDOM(node) { const attrs = { 'data-layout-column': 'true' }; const { width } = node.attrs; if (width) { attrs['style'] = `flex-basis: ${width}%`; attrs['data-column-width'] = `${width}`; } // We need to apply a attribute to the inner most child to help // ProseMirror identify its boundaries better. const contentAttrs = { 'data-layout-content': 'true' }; return ['div', attrs, ['div', contentAttrs, 0]]; } }); export const layoutColumnWithLocalId = layoutColumnFactory({ parseDOM: [{ context: 'layoutColumn//', tag: 'div[data-layout-column]', skip: true }, { tag: 'div[data-layout-column]', getAttrs: domNode => { const dom = domNode; return { width: Number(dom.getAttribute('data-column-width')) || undefined, localId: uuid.generate() }; } }], toDOM(node) { var _node$attrs; const attrs = { 'data-layout-column': 'true', 'data-local-id': (node === null || node === void 0 ? void 0 : (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.localId) || undefined }; const { width } = node.attrs; if (width) { attrs['style'] = `flex-basis: ${width}%`; attrs['data-column-width'] = `${width}`; } // We need to apply a attribute to the inner most child to help // ProseMirror identify its boundaries better. const contentAttrs = { 'data-layout-content': 'true' }; return ['div', attrs, ['div', contentAttrs, 0]]; } });