[go: nahoru, domu]

blob: d1966ebe399e8638b79f4d3f9a6d4335f72c7f75 [file] [log] [blame]
// Copyright 2022 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* All the specs relevant for generating the DOM pinned properties dataset.
* These strings represent file names. A list of all file names can be found at
* https://github.com/w3c/webref/tree/main/tr/idl or via the @webref/idl API.
*
* These spec names are included in the generated dataset. To keep it small,
* the values are bitwise or'd.
*/
export const SPECS = {
'html': 1,
'dom': 2,
'uievents': 4,
'pointerevents': 8,
'cssom': 16,
'wai-aria': 32
};
/**
* All the "global" attributes as defined in the DOM specification.
* Used to annotate the extracted properties from the WebIDL types.
*/
export const GLOBAL_ATTRIBUTES = new Set([
// https://html.spec.whatwg.org/multipage/dom.html#global-attributes
'accesskey', 'autocapitalize', 'autofocus', 'contenteditable', 'dir', 'draggable', 'enterkeyhint',
'hidden', 'inputmode', 'is', 'itemid', 'itemprop', 'itemref', 'itemscope',
'itemtype', 'lang', 'nonce', 'spellcheck', 'style', 'tabindex', 'title',
'translate',
]);
/**
* The "applicable" members for certain "states" that WebIDL types can be in.
* In other words, some members are "valid" only valid in certain situations:
* for example, with the HTML input element, the set of valid members are
* determined by the "type" property.
*/
export const APPLICABLE_MEMBERS = {
// https://html.spec.whatwg.org/multipage/input.html#input-type-attr-summary
HTMLInputElement: [
{
rule: {when: 'type', is: 'hidden'},
members: new Set([
'autocomplete',
'value',
])
},
{
rule: {when: 'type', is: 'text'},
members: new Set([
'autocomplete',
'dirname',
'list',
'maxlength',
'minlength',
'pattern',
'placeholder',
'readonly',
'required',
'size',
'value',
'list',
'selectionstart',
'selectionend',
'selectiondirection',
])
},
{
rule: {when: 'type', is: 'search'},
members: new Set([
'autocomplete',
'dirname',
'list',
'maxlength',
'minlength',
'pattern',
'placeholder',
'readonly',
'required',
'size',
'value',
'list',
'selectionstart',
'selectionend',
'selectiondirection',
])
},
{
rule: {when: 'type', is: 'url'},
members: new Set([
'autocomplete',
'list',
'maxlength',
'minlength',
'pattern',
'placeholder',
'readonly',
'required',
'size',
'value',
'list',
'selectionstart',
'selectionend',
'selectiondirection',
])
},
{
rule: {when: 'type', is: 'tel'},
members: new Set([
'autocomplete',
'list',
'maxlength',
'minlength',
'pattern',
'placeholder',
'readonly',
'required',
'size',
'value',
'list',
'selectionstart',
'selectionend',
'selectiondirection',
])
},
{
rule: {when: 'type', is: 'email'},
members: new Set([
'autocomplete',
'list',
'maxlength',
'minlength',
'multiple',
'pattern',
'placeholder',
'readonly',
'required',
'size',
'value',
'list',
])
},
{
rule: {when: 'type', is: 'password'},
members: new Set([
'autocomplete',
'maxlength',
'minlength',
'pattern',
'placeholder',
'readonly',
'required',
'size',
'value',
'selectionstart',
'selectionend',
'selectiondirection',
])
},
{
rule: {when: 'type', is: 'date'},
members: new Set([
'autocomplete',
'list',
'max',
'min',
'readonly',
'required',
'step',
'value',
'valueasdate',
'valueasnumber',
'list',
])
},
{
rule: {when: 'type', is: 'month'},
members: new Set([
'autocomplete',
'list',
'max',
'min',
'readonly',
'required',
'step',
'value',
'valueasdate',
'valueasnumber',
'list',
])
},
{
rule: {when: 'type', is: 'week'},
members: new Set([
'autocomplete',
'list',
'max',
'min',
'readonly',
'required',
'step',
'value',
'valueasdate',
'valueasnumber',
'list',
])
},
{
rule: {when: 'type', is: 'time'},
members: new Set([
'autocomplete',
'list',
'max',
'min',
'readonly',
'required',
'step',
'value',
'valueasdate',
'valueasnumber',
'list',
])
},
{
rule: {when: 'type', is: 'datetime-local'},
members: new Set([
'autocomplete',
'list',
'max',
'min',
'readonly',
'required',
'step',
'value',
'valueasnumber',
'list',
])
},
{
rule: {when: 'type', is: 'number'},
members: new Set([
'autocomplete',
'list',
'max',
'min',
'placeholder',
'readonly',
'required',
'step',
'value',
'valueasnumber',
'list',
])
},
{
rule: {when: 'type', is: 'range'},
members: new Set([
'autocomplete',
'list',
'max',
'min',
'step',
'value',
'valueasnumber',
'list',
])
},
{
rule: {when: 'type', is: 'color'},
members: new Set([
'autocomplete',
'list',
'value',
])
},
{
rule: {when: 'type', is: 'checkbox'},
members: new Set([
'checked',
'required',
'checked',
'value',
])
},
{
rule: {when: 'type', is: 'radio'},
members: new Set([
'checked',
'required',
'checked',
'value',
])
},
{
rule: {when: 'type', is: 'file'},
members: new Set([
'accept',
'multiple',
'required',
'files',
'value',
])
},
{
rule: {when: 'type', is: 'submit'},
members: new Set([
'formaction',
'formenctype',
'formmethod',
'formnovalidate',
'formtarget',
'value',
])
},
{
rule: {when: 'type', is: 'image'},
members: new Set([
'alt',
'formaction',
'formenctype',
'formmethod',
'formnovalidate',
'formtarget',
'height',
'src',
'width',
'value',
])
},
{
rule: {when: 'type', is: 'reset'},
members: new Set([
'value',
])
},
{
rule: {when: 'type', is: 'button'},
members: new Set([
'value',
])
},
],
};