Home | History | Annotate | Download | only in resources
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 var onResize = function() {
      6   var x = window.innerWidth;
      7   var y = window.innerHeight;
      8   var height =  (x > ASPECT_RATIO * y) ? y : Math.floor(x / ASPECT_RATIO);
      9   keyboard.style.height = height + 'px';
     10   keyboard.style.width = Math.floor(ASPECT_RATIO * height) + 'px';
     11   keyboard.style.fontSize = (height / FONT_SIZE_RATIO / ROW_LENGTH) + 'px';
     12 };
     13 
     14 /**
     15  * Recursively replace all kb-key-import elements with imported documents.
     16  * @param {!Document} content Document to process.
     17  */
     18 function importHTML(content) {
     19   var dom = content.querySelector('template').createInstance();
     20   var keyImports = dom.querySelectorAll('kb-key-import');
     21   if (keyImports.length != 0) {
     22     keyImports.forEach(function(element) {
     23       if (element.importDoc(content)) {
     24         var generatedDom = importHTML(element.importDoc(content));
     25         element.parentNode.replaceChild(generatedDom, element);
     26       }
     27     });
     28   }
     29   return dom;
     30 }
     31 
     32 /**
     33  * Replace all kb-key-sequence elements with generated kb-key elements.
     34  * @param {!DocumentFragment} importedContent The imported dom structure.
     35  */
     36 function expandHTML(importedContent) {
     37   var keySequences = importedContent.querySelectorAll('kb-key-sequence');
     38   if (keySequences.length != 0) {
     39     keySequences.forEach(function(element) {
     40       var generatedDom = element.generateDom();
     41       element.parentNode.replaceChild(generatedDom, element);
     42     });
     43   }
     44 }
     45 
     46 /**
     47   * Flatten the keysets which represents a keyboard layout. It has two steps:
     48   * 1) Replace all kb-key-import elements with imported document that associated
     49   *   with linkid.
     50   * 2) Replace all kb-key-sequence elements with generated DOM structures.
     51   * @param {!Document} content Document to process.
     52   */
     53 function flattenKeysets(content) {
     54   var importedContent = importHTML(content);
     55   expandHTML(importedContent);
     56   return importedContent;
     57 }
     58 
     59 addEventListener('resize', onResize);
     60 
     61 addEventListener('load', onResize);
     62