/**
 * @license
 * Copyright 2020 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

// This file adds some simple checks to match internal Google rules.
// Internally at Google it has different a implementation.

import {BrandType} from '../types/common';

export type SafeStyleSheet = BrandType<string, '_safeHtml'>;

export function safeStyleSheet(
  templateObj: TemplateStringsArray
): SafeStyleSheet {
  const styleSheet = templateObj[0];
  if (/[<>]/.test(styleSheet)) {
    throw new Error('Forbidden characters in styleSheet string: ' + styleSheet);
  }
  return styleSheet as SafeStyleSheet;
}

export const safeStyleEl = {
  setTextContent: (elem: HTMLStyleElement, safeStyleSheet: SafeStyleSheet) => {
    elem.textContent = safeStyleSheet;
  },
};
