code: function core(
      // Options for the plugin
      opts: OptionsFormat = {}
  ): Object {
      opts = new Options(opts);
  
      return {
          schema: schema(opts),
          validateNode: validateNode(opts),
  
          utils: {
              getCurrentItem: getCurrentItem.bind(null, opts),
              getCurrentList: getCurrentList.bind(null, opts),
              getItemDepth: getItemDepth.bind(null, opts),
              getItemsAtRange: getItemsAtRange.bind(null, opts),
              getPreviousItem: getPreviousItem.bind(null, opts),
              isList: isList.bind(null, opts),
              isSelectionInList: isSelectionInList.bind(null, opts)
          },
  
          changes: {
              decreaseItemDepth: bindAndScopeChange(opts, decreaseItemDepth),
              increaseItemDepth: bindAndScopeChange(opts, increaseItemDepth),
              splitListItem: bindAndScopeChange(opts, splitListItem),
              unwrapList: bindAndScopeChange(opts, unwrapList),
              wrapInList: wrapInList.bind(null, opts)
          }
      };
  }
docs: Returns the core of the plugin, limited to the validation and normalization
  part of `slate-edit-list`, and utils.
  
  Import this directly: `import EditListCore from '@gitbook/slate-edit-table/lib/core'`
  if you don't care about behavior/rendering.