<?php

namespace MicroweberPackages\Security\HtmlSanitizer;

class MwHtmlSanitizerReference
{
    public const MW_ELEMENTS = [
        'module' => true,
        'div' => true,
        'section' => true,

    ];
    public const MW_ATTRIBUTES = [
        'id' => true,
         'class' => true,
        'style' => true,
        'data-rel' => true,
        'data-rel-id' => true,
        'field' => true,
        'data-field' => true,
        'rel' => true,
        'rel-id' => true,
        'for-id' => true,
        'parent-module-id' => true,
        'parent-module' => true,
        'parent-field' => true,
        'parent-field-id' => true,
        'template' => true,

        'subtype' => true,

        'field' => true,
        'field-name' => true,
        'field-value' => true,
        'data-id' => true,
        'data-module-id' => true,
        'data-type' => true,
        'data-module' => true,
        'data-parent-module' => true,
        'data-mwplaceholder' => true,
        'mwplaceholder' => true,
        'data-parent-module-id' => true,
        'data-subtype' => true,

        'data-background-image' => true,
        'data-background-position' => true,
        'data-background-color' => true,
        'data-background-video-url' => true,
        'data-background-video' => true,

        'data-limit' => true,
        'data-hide-paging' => true,

        'data-current_page' => true,
        'data-category-id' => true,
        'data-content-id' => true,
        'description' => true,
        'data-description' => true,
        'data-description-length' => true,
        'data-title' => true,
        'data-title-length' => true,
        'data-show' => true,

        'abbr' => true,
        'accept' => true,
        'accept-charset' => true,
        'accesskey' => true,
        'action' => true,
        'align' => true,
        'alink' => true,
        'allow' => true,
        'allowfullscreen' => true,
        'allowpaymentrequest' => false,
        'alt' => true,
        'anchor' => true,
        'archive' => true,
        'as' => true,
        'async' => false,
        'autocapitalize' => false,
        'autocomplete' => false,
        'autocorrect' => false,
        'autofocus' => false,
        'autopictureinpicture' => false,
        'autoplay' => false,
        'axis' => true,
        'background' => false,
        'behavior' => true,
        'bgcolor' => false,
        'border' => false,
        'bordercolor' => false,
        'capture' => true,
        'cellpadding' => true,
        'cellspacing' => true,
        'challenge' => true,
        'char' => true,
        'charoff' => true,
        'charset' => true,
        'checked' => false,
        'cite' => true,

        'classid' => false,
        'clear' => true,
        'code' => true,
        'codebase' => true,
        'codetype' => true,
        'color' => false,
        'cols' => true,
        'colspan' => true,
        'compact' => true,
        'content' => true,
        'contenteditable' => false,
        'controls' => true,
        'controlslist' => true,
        'conversiondestination' => true,
        'coords' => true,
        'crossorigin' => true,
        'csp' => true,
        'data' => true,
        'datetime' => true,
        'declare' => true,
        'decoding' => true,
        'default' => true,
        'defer' => true,
        'dir' => true,
        'direction' => true,
        'dirname' => true,
        'disabled' => true,
        'disablepictureinpicture' => true,
        'disableremoteplayback' => true,
        'disallowdocumentaccess' => true,
        'download' => true,
        'draggable' => true,
        'elementtiming' => true,
        'enctype' => true,
        'end' => true,
        'enterkeyhint' => true,
        'event' => true,
        'exportparts' => true,
        'face' => true,
        'for' => true,
        'form' => false,
        'formaction' => false,
        'formenctype' => false,
        'formmethod' => false,
        'formnovalidate' => false,
        'formtarget' => false,
        'frame' => false,
        'frameborder' => false,
        'headers' => true,
        'height' => true,
        'hidden' => false,
        'high' => true,
        'href' => true,
        'hreflang' => true,
        'hreftranslate' => true,
        'hspace' => true,


        'imagesizes' => true,
        'imagesrcset' => true,
        'importance' => true,
        'impressiondata' => true,
        'impressionexpiry' => true,
        'incremental' => true,
        'inert' => true,
        'inputmode' => true,
        'integrity' => true,
        'invisible' => true,
        'is' => true,
        'ismap' => true,
        'keytype' => true,
        'kind' => true,
        'label' => true,
        'lang' => true,
        'language' => true,
        'latencyhint' => true,
        'leftmargin' => true,
        'link' => true,
        'list' => true,
        'loading' => true,
        'longdesc' => true,
        'loop' => true,
        'low' => true,
        'lowsrc' => true,
        'manifest' => true,
        'marginheight' => true,
        'marginwidth' => true,
        'max' => true,
        'maxlength' => true,
        'mayscript' => true,
        'media' => true,
        'method' => true,
        'min' => true,
        'minlength' => true,
        'multiple' => true,
        'muted' => true,
        'name' => true,
        'nohref' => true,
        'nomodule' => true,
        'nonce' => true,
        'noresize' => true,
        'noshade' => true,
        'novalidate' => true,
        'nowrap' => true,
        'object' => true,
        'open' => true,
        'optimum' => true,
        'part' => true,
        'pattern' => true,
        'ping' => false,
        'placeholder' => true,
        'playsinline' => true,
        'policy' => true,
        'poster' => true,
        'preload' => true,
        'pseudo' => true,
        'readonly' => true,
        'referrerpolicy' => true,

        'reportingorigin' => true,
        'required' => true,
        'resources' => true,
        'rev' => true,
        'reversed' => true,
        'role' => true,
        'rows' => true,
        'rowspan' => true,
        'rules' => true,
        'sandbox' => true,
        'scheme' => true,
        'scope' => true,
        'scopes' => true,
        'scrollamount' => true,
        'scrolldelay' => true,
        'scrolling' => true,
        'select' => false,
        'selected' => false,

        'shape' => true,
        'size' => true,
        'sizes' => true,
        'slot' => true,
        'span' => true,
        'spellcheck' => true,
        'src' => true,
        'srcdoc' => true,
        'srclang' => true,
        'srcset' => true,
        'standby' => true,
        'start' => true,
        'step' => true,

        'summary' => true,
        'tabindex' => true,
        'target' => true,
        'text' => true,
        'title' => true,
        'topmargin' => true,
        'translate' => true,
        'truespeed' => true,
        'trusttoken' => true,
        'type' => true,
        'usemap' => true,
        'valign' => true,
        'value' => false,
        'valuetype' => true,
        'version' => true,
        'virtualkeyboardpolicy' => true,
        'vlink' => false,
        'vspace' => true,
        'webkitdirectory' => true,
        'width' => true,
        'wrap' => true,
    ];

    public const MW_NOT_ALLOWED_ATTRIBUTES = [

        'onabort',
        'onactivate',
        'onafterprint',
        'onafterscriptexecute',
        'onanimationcancel',
        'onanimationend',
        'onanimationiteration',
        'onanimationstart',
        'onbeforeactivate',
        'onbeforecopy',
        'onbeforecut',
        'onbeforeeditfocus',
        'onbeforepaste',
        'onbeforeprint',
        'onbeforeunload',
        'onbegin',
        'onblur',
        'onbounce',
        'oncanplay',
        'oncanplaythrough',
        'oncellchange',
        'onchange',
        'onclick',
        'onclose',
        'oncompositionend',
        'oncompositionstart',
        'oncompositionupdate',
        'oncontextmenu',
        'oncontrolselect',
        'oncopy',
        'oncuechange',
        'oncut',
        'ondataavailable',
        'ondatasetchanged',
        'ondatasetcomplete',
        'ondrag',
        'ondragend',
        'ondragenter',
        'ondragexit',
        'ondragleave',
        'ondragover',
        'ondragstart',
        'ondrop',
        'ondurationchange',
        'onemptied',
        'onended',
        'onerror',
        'onfinish',
        'onfocus',
        'onfocusin',
        'onfocusout',
        'onfullscreenchange',
        'onfullscreenerror',
        'ongotpointercapture',
        'onhashchange',
        'oninput',
        'oninvalid',
        'onkeydown',
        'onkeypress',
        'onkeyup',
        'onlanguagechange',
        'onload',
        'onloadend',
        'onloadstart',
        'onlosecapture',
        'onmousedown',
        'onmouseenter',
        'onmouseleave',
        'onmousemove',
        'onmouseout',
        'onmouseover',
        'onmouseup',
        'onmousewheel',
        'onmozfullscreenchange',
        'onpageshow',
        'onpause',
        'onplay',
        'onplaying',
        'onpointerdown',
        'onpointerenter',
        'onpointerleave',
        'onpointermove',
        'onpointerout',
        'onpointerover',
        'onpointerup',
        'onpointerrawupdate',
        'onpopstate',
        'onprogress',
        'onratechange',
        'onreadystatechange',
        'onrepeat',
        'onreset',
        'onresize',
        'onresizeend',
        'onresizestart',
        'onscroll',
        'onsearch',
        'onseeked',
        'onseeking',
        'onselect',
        'onselectstart',
        'onshow',
        'onsort',
        'onstalled',
        'onstorage',
        'onsubmit',
        'onsuspend',
        'ontimeupdate',
        'ontoggle',
        'ontransitioncancel',
        'ontransitionend',
        'ontransitionrun',
        'ontransitionstart',
        'onunhandledrejection',
        'onunload',
        'onvolumechange',
        'onwaiting',
        'onwheel',
        'onwebkitanimationend',
        'onwebkitanimationiteration',
        'onwebkitanimationstart',
        'onwebkittransitionend',
        'onwheel',


        '@click',
        '@click.capture',
        '@click.once',
        '@click.prevent',
        '@click.stop',
        '@click.self',
        '@click.away',
        '@click.outside',
        '@click.native',
        '@click.native.stop',
        '@click.native.prevent',
        '@click.native.self',
        '@click.native.once',
        '@click.native.away',
        '@click.native.outside',
        '@click.native.capture',
        '@click.native.stop.prevent',
        '@click.native.stop.prevent.self',
        '@click.native.stop.prevent.once',
        '@click.native.stop.prevent.away',
        '@click.native.stop.prevent.outside',
        '@click.native.stop.prevent.capture',
        '@click.native.stop.self',
        '@click.native.stop.self.once',
        '@click.native.stop.self.away',
        '@click.native.stop.self.outside',
        '@click.native.stop.self.capture',
        '@click.native.stop.once',
        '@click.native.stop.once.away',
        '@click.native.stop.once.outside',
        '@click.native.stop.once.capture',
        '@click.native.stop.away',
        '@click.native.stop.away.capture',
        '@click.native.stop.outside',
        '@click.native.stop.outside.capture',
        '@click.native.self.prevent',
        '@click.native.self.prevent.once',
        '@click.native.self.prevent.away',
        '@click.native.self.prevent.outside',
        '@click.native.self.prevent.capture',
        '@click.native.self.once',
        '@click.native.self.once.away',
        '@click.native.self.once.outside',
        '@click.native.self.once.capture',
        '@click.native.self.away',
        '@click.native.self.away.capture',
        '@click.native.self.outside',
        '@click.native.self.outside.capture',
        '@keydown',
        '@keyup',
        '@submit.prevent',
        '@scroll.window.throttle',
        '@scroll.window.passive',
        '@scroll.window.capture',
        '@scroll.window.once',
        '@scroll.window.stop',
        '@scroll.window.self',
        '@scroll.window.away',

        '@submit',
        'x-on',
        'x-bind',
        'x-bind:click',
        'x-bind:keydown',
        'x-bind:keyup',
        'x-bind:submit.prevent',
        'x-bind:submit',
        'x-bind:input',
        'x-bind:change',
        'x-bind:blur',
        'x-bind:focus',
        'x-bind:load',
        'x-bind:unload',
        'x-bind:scroll',
        'x-bind:resize',
        'x-bind:select',
        'x-bind:selectstart',
        'x-bind:selectend',
        'x-bind:copy',
        'x-bind:cut',
        'x-bind:paste',
        'x-bind:drag',
        'x-bind:dragstart',
        'x-bind:dragend',
        'x-bind:dragenter',
        'x-bind:dragleave',
        'x-bind:dragover',
        'x-bind:drop',
        'x-bind:contextmenu',
        'x-bind:dblclick',
        'x-bind:mouseenter',
        'x-bind:mouseleave',
        'x-bind:mousemove',
        'x-bind:mouseout',
        'x-bind:mouseover',
        'x-bind:mouseup',
        'x-bind:mousedown',
        'x-bind:keydown',
        'x-bind:keypress',
        'x-bind:keyup',
        'x-bind:abort',
        'x-data',
    ];


}
