Skip to content
Snippets Groups Projects
TrackCommentOptions.js 1.05 KiB
Newer Older
chris's avatar
chris committed
/* eslint-disable no-underscore-dangle */
import React, { useMemo } from 'react';
import { injectable, inject } from 'inversify';
import { isEmpty } from 'lodash';
import { v4 as uuidv4 } from 'uuid';
chris's avatar
chris committed
import { ToolGroup } from 'wax-prosemirror-core';
chris's avatar
chris committed
import TrackChangeOptionsTool from '../../CommentsService/components/ui/trackChanges/TrackChangeOptionsTool';

@injectable()
class TrackCommentOptions extends ToolGroup {
  tools = [];
  toolGroups = [];

chris's avatar
chris committed
  constructor(@inject('TrackOptions') trackOptions) {
    super();
    this.toolGroups = [
      {
chris's avatar
chris committed
        groups: [trackOptions],
      },
    ];
  }

  renderTools(view) {
    if (isEmpty(view)) return null;
chris's avatar
chris committed

    const MemorizedComponent = useMemo(
      () => (
        <TrackChangeOptionsTool
          key={uuidv4()}
          view={view}
          groups={this._toolGroups[0].groups.map(group => ({
            //   groupName: group.title.props.title,
            items: group._tools,
          }))}
        />
      ),
      [],
chris's avatar
chris committed
    );
chris's avatar
chris committed
    return MemorizedComponent;
  }
}

export default TrackCommentOptions;