/**
 *
 * @ai-apps/angular v2.152.1-next.0 | import-once.scss
 *
 * Copyright 2014, 2023 IBM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0

 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


//
// Copyright IBM Corp. 2018, 2018
//
// This source code is licensed under the Apache-2.0 license found in the
// LICENSE file in the root directory of this source tree.
//

/// Used by `exports` mixin to track which modules have been imported
/// @type Map
/// @access public
/// @group @carbon/import-once
$imported-modules: () !default;

/// Module export mixin that helps making sure a module is imported once and only once
/// @access public
/// @param {String} $name - Name of exported module
/// @param {Bool} $warn [false] - Warn when a module has been already imported
/// @content Declaration blocks to be imported
/// @group @carbon/import-once
@mixin exports($name, $warn: false) {
  @if (index($imported-modules, $name) == null) {
    $imported-modules: append($imported-modules, $name) !global;
    @content;
  } @else if $warn == true {
    @warn 'Module `#{$name}` has already been imported.';
  }
}
