"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.findComponents = void 0;
var _package = require("../../package.json");
var _components = require("../components");
var _helpers = require("../components/helpers");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* eslint-disable no-console */
const COMPONENT_KEY = 'miraiComponent';
const NAMESPACE = '[data-mirai-component]';
const SINGLETON_FINDER = ['rates'];
const UNPROCESSED_KEYS = ['role'];
const findComponents = () => {
  const components = [];
  const hasChat = [...document.querySelectorAll(NAMESPACE)].some(el => Object.values(el.dataset).includes('chat'));
  if (!hasChat && !window.IS_PLAYWRIGHT && !_helpers.IS_JEST) {
    const div = document.createElement('div');
    div.setAttribute('data-mirai-component', 'chat');
    document.body.appendChild(div);
  }
  [...document.querySelectorAll(NAMESPACE)].forEach(el => {
    const properties = Object.keys(el.dataset).filter(key => !UNPROCESSED_KEYS.includes(key)).reduce((current, name) => {
      const key = name === COMPONENT_KEY ? 'component' : name;
      const value = el.dataset[name];
      return _objectSpread(_objectSpread({}, current), {}, {
        [key]: ['true', 'false'].includes(value) ? value === 'true' : value
      });
    }, {});
    const {
      component
    } = properties || {};
    const isComponent = Object.keys(_components.COMPONENTS).includes(component);
    if (isComponent) components.push(_objectSpread(_objectSpread({}, properties), {}, {
      el
    }));else if (properties !== null && properties !== void 0 && properties.component)
      // eslint-disable-next-line no-console
      console.error("Component <".concat(properties === null || properties === void 0 ? void 0 : properties.component, "> is not part of @mirai/core v").concat(_package.version));
  });
  const singletonFinder = !!components.find(_ref => {
    let {
      component
    } = _ref;
    return SINGLETON_FINDER.includes(component);
  });
  return singletonFinder ? components.filter(_ref2 => {
    let {
      component
    } = _ref2;
    return component !== 'finder';
  }) : components;
};
exports.findComponents = findComponents;
//# sourceMappingURL=findComponents.js.map