text: /* Copyright 2015 Mozilla Foundation
   *
   * 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.
   */
  /* globals PDFJS */
  
  'use strict';
  
  /**
   * Optimised CSS custom property getter/setter.
   * @class
   */
  const CustomStyle = (function CustomStyleClosure() {
    // As noted on: http://www.zachstronaut.com/posts/2009/02/17/
    //              animate-css-transforms-firefox-webkit.html
    // in some versions of IE9 it is critical that ms appear in this list
    // before Moz
    const prefixes = ['ms', 'Moz', 'Webkit', 'O'];
    const _cache = {};
  
    function CustomStyle() {}
  
    CustomStyle.getProp = function get(propName, element) {
      // check cache only when no element is given
      if (arguments.length === 1 && typeof _cache[propName] === 'string') {
        return _cache[propName];
      }
  
      element = element || document.documentElement;
      const style = element.style; let prefixed; let uPropName;
  
      // test standard property first
      if (typeof style[propName] === 'string') {
        return (_cache[propName] = propName);
      }
  
      // capitalize
      uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);
  
      // test vendor specific properties
      for (let i = 0, l = prefixes.length; i < l; i++) {
        prefixed = prefixes[i] + uPropName;
        if (typeof style[prefixed] === 'string') {
          return (_cache[propName] = prefixed);
        }
      }
  
      // if all fails then set to undefined
      return (_cache[propName] = 'undefined');
    };
  
    CustomStyle.setProp = function set(propName, element, str) {
      const prop = this.getProp(propName);
      if (prop !== 'undefined') {
        element.style[prop] = str;
      }
    };
  
    return CustomStyle;
  })();
  
  PDFJS.CustomStyle = CustomStyle;
  