// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library web_components.src.init;

import 'dart:async';
import 'package:initialize/initialize.dart' show InitializerFilter;
import 'package:web_components/web_components.dart';
import 'mirror_initializer.dart' as init;

/// Performs html import aware initialization by crawling all imported documents
/// and initializing any script tags which appear in them.
///
/// By default, this will run all [HtmlImport] initializers, followed in a 2nd
/// phase by all [CustomElement] and [CustomElementProxy] initializers. Then,
/// unless [initAll] is [false], it will run all remaining initializers.
///
/// If a [typeFilter] or [customFilter] are supplied, only one phase is ran
/// with the supplied filters.
Future initWebComponents({List<Type> typeFilter, InitializerFilter customFilter,
    bool initAll: true}) {
  if (typeFilter != null || customFilter != null) {
    return init.run(typeFilter: typeFilter, customFilter: customFilter);
  } else {
    return init.run(typeFilter: [HtmlImport])
      .then((_) => init.run(typeFilter: [CustomElement, CustomElementProxy]))
      .then((_) => initAll ? init.run() : null);
  }
}
