registerQuery()

in projects/libs/flex-layout/core/match-media/match-media.ts [101:126]


  registerQuery(mediaQuery: string | string[]) {
    const list = Array.isArray(mediaQuery) ? mediaQuery : [mediaQuery];
    const matches: MediaChange[] = [];

    buildQueryCss(list, this._document);

    list.forEach((query: string) => {
      const onMQLEvent = (e: MediaQueryListEvent) => {
        this._zone.run(() => this.source.next(new MediaChange(e.matches, query)));
      };

      let mql = this.registry.get(query);
      if (!mql) {
        mql = this.buildMQL(query);
        mql.addListener(onMQLEvent);
        this.pendingRemoveListenerFns.push(() => mql!.removeListener(onMQLEvent));
        this.registry.set(query, mql);
      }

      if (mql.matches) {
        matches.push(new MediaChange(true, query));
      }
    });

    return matches;
  }