function parseBinding()

in src/directives/outside/outside.js [87:118]


function parseBinding({ arg, value, modifiers }) {
  const modifiersList = Object.keys(modifiers);

  if (process.env.NODE_ENV !== 'production') {
    if (typeof value !== 'function') {
      throw new Error(`[GlOutsideDirective] Value must be a function; got ${typeof value}!`);
    }

    if (typeof arg !== 'undefined') {
      throw new Error(
        `[GlOutsideDirective] Arguments are not supported. Consider using modifiers instead.`
      );
    }

    const unsupportedModifiers = modifiersList.filter(
      (modifier) => !supportedEventTypes.includes(modifier)
    );

    if (unsupportedModifiers.length > 0) {
      throw new Error(
        `[GlOutsideDirective] Cannot bind ${unsupportedModifiers.join(', ')} events; supported event types are: ${supportedEventTypes.join(
          ', '
        )}`
      );
    }
  }

  return {
    callback: value,
    eventTypes: modifiersList.length > 0 ? modifiersList : [defaultEventType],
  };
}