{"version":3,"sources":["attributes.ts"],"sourcesContent":["\n/**\n * HTML Element attribute definitions\n * https://www.w3schools.com/tags/\n */\n\nimport type { Time } from \"datex-core-legacy/types/time.ts\";\nimport type { primitive } from \"datex-core-legacy/types/abstract_types.ts\"\n\n// general html specific types\n\ntype numberString = `${number}`\ntype integerString = `${bigint}`\ntype htmlNumber = numberString|number|bigint\ntype htmlPixels = integerString|number|bigint\ntype svgLength = htmlNumber|`${number}%`\ntype htmlColor = \"\"\n\n// list of all event handler content attributes\n\nconst elementEventHandlerAttributesBase = [\n\t\"onabort\", \"onblur\", \"oncanplay\", \"oncanplaythrough\", \"onchange\", \"onclick\", \"oncontextmenu\", \"oncuechange\", \"ondblclick\", \"ondrag\", \"ondragend\", \"ondragenter\", \"ondragleave\", \"ondragover\", \"ondragstart\", \"ondrop\", \"ondurationchange\", \"onemptied\", \"onended\", \"onerror\", \"onfocus\", \"oninput\", \"oninvalid\", \"onkeydown\", \"onkeypress\", \"onkeyup\", \"onload\", \"onloadeddata\", \"onloadedmetadata\", \"onloadstart\", \"onmousedown\", \"onmousemove\", \"onmouseout\", \"onmouseover\", \"onmouseup\", \"onmousewheel\", \"onmouseenter\", \"onmouseleave\", \"onpause\", \"onplay\", \"onplaying\", \"onprogress\", \"onratechange\", \"onreadystatechange\", \"onreset\", \"onscroll\", \"onseeked\", \"onseeking\", \"onselect\", \"onshow\", \"onstalled\", \"onsubmit\", \"onsuspend\", \"ontimeupdate\", \"onvolumechange\", \"onwaiting\"\n] as const;\n\nexport const elementEventHandlerAttributes = [\n\t...elementEventHandlerAttributesBase,\n\t...elementEventHandlerAttributesBase.map(v => `${v}:frontend`)\n]\n\nexport type elementEventHandlerAttribute = typeof elementEventHandlerAttributesBase[number]|`${typeof elementEventHandlerAttributesBase[number]}:frontend`\n\n// list of all default element attributes\nexport const defaultElementAttributes = [\n\t\"accesskey\", \"class\", \"contenteditable\", \"contextmenu\", \"dir\", \"draggable\", \"dropzone\", \"hidden\", \"id\", \"lang\", \"spellcheck\", \"style\", \"tabindex\", \"title\", \"popover\",\n\t\"role\", \"name\", \"slot\",\n\t// uix specific\n\t\"uix-module\", \"uix-title\", \"stylesheet\",\n\t\"datex-pointer\", \"datex-update\",\n\t\"shadow-root\", \"display\", \"part\"\n] as const;\n\n// TODO: replace with uix:, datex:\n// custom attribute values for default attributes (default: string)\ntype customDefaultAttributeValues = {\n\t\"uix-module\": string|URL|null,\n\t\"uix-title\": string,\n\t\"stylesheet\": string|URL|null,\n\t\"shadow-root\": boolean|'open'|'closed',\n\t\"datex-pointer\": boolean,\n\t\"datex-update\": \"onchange\"|\"onsubmit\",\n\n\t// native non string attrs\n\t\"popover\": \"auto\" | \"manual\" | \"hint\" | boolean,\n}\n\nexport type validHTMLElementAttrs<El extends HTMLElement> = {\n\t[key in typeof defaultElementAttributes[number]]: (key extends keyof customDefaultAttributeValues ? customDefaultAttributeValues[key] : string)\n} & {\n\t[key in elementEventHandlerAttribute]: \n\t\tkey extends keyof GlobalEventHandlers ? \n\t\t\tGlobalEventHandlers[key] & ((this: El, ev: never) => any) : \n\t\tkey extends `${infer name}:frontend` ?\n\t\t\tname extends keyof GlobalEventHandlers ?\n\t\t\t\tGlobalEventHandlers[name] & ((this: El, ev: never) => any) :\n\t\t\t\tnever :\n\t\tnever\n} \n\n\nexport type validHTMLElementSpecificAttrs<TAG extends string> = TAG extends keyof typeof htmlElementAttributes ? {\n\t[key in (typeof htmlElementAttributes)[TAG][number]]: TAG extends keyof htmlElementAttributeValues ? (key extends keyof htmlElementAttributeValues[TAG] ? htmlElementAttributeValues[TAG][key] : string) : string\n} : unknown;\n\n// export type validHTMLElementSpecificAttrs<TAG extends string> = TAG extends keyof typeof htmlElementAttributes ? (\n// \t(TAG extends keyof htmlElementAttributeValues ? htmlElementAttributeValues[TAG] : unknown ) & {\n// \t\t[key in (typeof htmlElementAttributes)[TAG][number]]: TAG extends keyof htmlElementAttributeValues ? (key extends keyof htmlElementAttributeValues[TAG] ? unknown : string) : string\n// \t}\n// ) : Record<string,never>;\n\n\nexport type validSVGElementSpecificAttrs<TAG extends string> = TAG extends keyof typeof svgElementAttributes ? {\n\t[key in (typeof svgElementAttributes)[TAG][number]]: TAG extends keyof svgElementAttributeValues ? (key extends keyof svgElementAttributeValues[TAG] ? svgElementAttributeValues[TAG][key] : string) : string\n} : unknown;\n\n\ntype a = validHTMLElementSpecificAttrs<\"input\">;\n\n/** attribute definitions used by multiple elements */ \n\n// width, height\nconst widthAndHeight = [\"width\", \"height\"] as const;\ntype widthAndHeight = {\n\twidth: htmlPixels,\n\theight: htmlPixels\n}\n\n// src\nconst src = [\"src\", \"src:route\"] as const;\ntype src = {\n\tsrc: string|URL\n\t\"src:route\": string\n}\n\n// href\nconst href = [\"href\", \"href:route\"] as const;\ntype href = {\n\thref: string|URL\n\t\"href:route\": string\n}\n\n// alt\nconst alt = \"alt\" as const;\n\n// rel\ntype rel = {\n\trel: \"alternate\"|\"author\"|\"bookmark\"|\"canonical\"|\"dns-prefetch\"|\"external\"|\"help\"|\"icon\"|\"license\"|\"manifest\"|\"me\"|\"modulepreload\"|\"next\"|\"nofollow\"|\"noreferrer\"|\"opener\"|\"pingback\"|\"preconnect\"|\"prefetch\"|\"preload\"|\"prerender\"|\"prev\"|\"privacy-policy\"|\"search\"|\"stylesheet\"|\"tag\"|\"terms-of-service\"\n}\nconst input = [\"spellcheck\", \"wrap\", \"autocapitalize\", \"autocomplete\", \"autofocus\", \"maxlength\", \"minlength\", \"disabled\", \"placeholder\", \"readonly\", \"required\"] as const;\ntype input = {\n\tspellcheck: boolean | \"true\" | \"false\" | \"default\",\n\twrap: \"hard\" | \"soft\" | \"off\",\n\tautocapitalize: \"on\" | \"off\" | \"sentences\" | \"none\" | \"words\" | \"characters\",\n\tautocomplete: boolean | AutoFill,\n\tautofocus: boolean,\n\tmaxlength: htmlNumber|string,\n\tminlength: htmlNumber|string,\n\tdisabled: boolean,\n\tplaceholder: primitive,\n\treadonly: boolean,\n\trequired: boolean\n}\n\ntype MediaStream = any; // TODO:\n\n/** list of all allowed attributes for HTML elements */\nexport const htmlElementAttributes = {\n\n\ta: [...href, \"target\", \"download\", \"rel\"],\n\tlink: [...href, \"rel\"],\n\n\tscript: [...src, \"type\", \"async\", \"defer\", \"nomodule\", \"crossorigin\", \"integrity\", \"referrerpolicy\"],\n\n\tprogress: [\"value\", \"max\", \"min\"],\n\tinput: [\"popovertargetaction\", \"popovertarget\", ...input, alt, ...src, alt, ...widthAndHeight, \"min\", \"minlength\", \"accept\", \"autocomplete\", \"autofocus\", \"checked\", \"dirname\", \"disabled\", \"form\", \"formaction\", \"formenctype\", \"formmethod\", \"formnovalidate\", \"formtarget\", \"list\", \"max\", \"maxlength\", \"multiple\", \"name\", \"pattern\", \"placeholder\", \"readonly\", \"required\", \"size\", \"step\", \"type\", \"value\", \"value:out\", \"value:in\", \"value:selected\"],\n\tbutton: [\"popovertargetaction\", \"popovertarget\", \"type\", \"disabled\", \"form\"],\n\tform: [\"method\", \"enctype\", \"action\", \"rel\"],\n\timg: [alt, ...src, ...widthAndHeight, \"border\", \"crossorigin\", \"ismap\", \"loading\", \"longdesc\", \"referrerpolicy\", \"sizes\", \"srcset\", \"usemap\"],\n\ttemplate: [\"shadowrootmode\"],\n\tiframe: [...src, \"allowtransparency\", \"allow\"],\n\tdetails: [\"open\"],\n\tsource: [...src, \"type\"],\n\tlabel: [\"for\"],\n\tvideo: [...src, ...widthAndHeight, \"autoplay\", \"controls\", \"loop\", \"muted\", \"poster\", \"preload\", \"playsinline\"],\n\taudio: [...src, \"autoplay\", \"controls\", \"loop\", \"muted\", \"preload\"],\n\ttextarea: [...input, \"name\", \"value\", \"value:out\", \"value:in\", \"cols\", \"rows\"],\n\toption: [\"value\", \"selected\", \"disabled\"],\n\tselect: [\"value\", \"autocomplete\", \"required\", \"disabled\"],\n\tdialog: [\"open\"],\n\ttable: [\"cellspacing\", \"cellpadding\", \"align\", \"width\", \"border\"],\n\ttd: [\"colspan\", \"rowspan\", \"headers\", \"align\", \"valign\", \"width\", \"height\"],\n\tth: [\"colspan\", \"rowspan\", \"headers\", \"align\", \"valign\", \"width\", \"height\"],\n\ttr: [\"align\", \"valign\"],\n\tthead: [\"align\", \"valign\"],\n\ttbody: [\"align\", \"valign\"],\n\ttfoot: [\"align\", \"valign\"],\n\tmeta: [\"content\"],\n\toptgroup: [\"label\", \"disabled\"],\n\tfieldset: [\"disabled\", \"form\", \"name\"],\n} as const satisfies {[key in keyof HTMLElementTagNameMap]?: readonly string[]};\n\n\n/** custom values for specific element attributes (default: string) */\nexport type htmlElementAttributeValues = {\n\ta: href & rel & {\n\t\tdownload: string|boolean\n\t},\n\n\tlink: href & rel,\n\t\n\tinput: (widthAndHeight & src & input & {\n\t\tchecked: boolean \n\t\tdirname: `${string}.dir`\n\t\tdisabled: boolean\n\t\tformenctype: \"application/x-www-form-urlencoded\"|\"multipart/form-data\"|\"text/plain\"\n\t\tformmethod: \"get\"|\"post\"\n\t\tformnovalidate: boolean\n\t\tmax: htmlNumber|string\n\t\tmaxlength: htmlNumber\n\t\tmin: htmlNumber|string\n\t\tminlength: htmlNumber\n\t\tmultiple: boolean\n\t\treadonly: boolean\n\t\trequired: boolean\n\t\tsize: htmlNumber,\n\t\tstep: htmlNumber,\n\t\ttype: \"button\"|\"checkbox\"|\"color\"|\"date\"|\"datetime-local\"|\"email\"|\"file\"|\"hidden\"|\"image\"|\"month\"|\"number\"|\"password\"|\"radio\"|\"range\"|\"reset\"|\"search\"|\"submit\"|\"tel\"|\"text\"|\"time\"|\"url\"|\"week\",\n\n\t\tpopovertarget: string,\n\t\tpopovertargetaction: string,\n\t\tvalue: primitive|Time,\n\t\t\"value:out\": primitive|Time,\n\t\t\"value:in\": primitive|Time,\n\t\t\"value:selected\": string|number\n\t}) \n\t// TODO: conditional attributes\n\t// & (\n\t// \t{\n\t// \t\t\"type\": \"text\",\n\t// \t\tvalue: primitive\n\t// \t} |\n\t// \t{\n\t// \t\t\"type\": \"number\"|\"range\",\n\t// \t\tvalue: number\n\t// \t} |\n\t// \t{\n\t// \t\t\"type\": \"date\"|\"time\"|\"datetime-local\"|\"month\"|\"week\",\n\t// \t\tvalue: number|string|Time\n\t// \t} |\n\t// \t{\n\t// \t\t\"type\": \"color\",\n\t// \t\tvalue: string\n\t// \t} |\n\t// \t{\n\t// \t\t\"type\": \"file\",\n\t// \t\tvalue: File\n\t// \t} |\n\t// \t{\n\t// \t\t\"type\": \"checkbox\"|\"radio\",\n\t// \t\tvalue: boolean\n\t// \t}\n\t// )\n\n\tselect: {\n\t\trequired: boolean,\n\t\tdisabled: boolean,\n\t\tvalue: primitive,\n\t\tautocomplete: boolean | AutoFill,\n\t},\n\n\tprogress: {\n\t\tvalue: string | number,\n\t\tmax: string | number,\n\t\tmin: string | number\n\t},\n\n\tbutton: {\n\t\ttype: \"button\"|\"submit\"|\"reset\",\n\t\tdisabled: boolean,\n\t\tpopovertarget: string,\n\t\tpopovertargetaction: string\n\t},\n\n\tform: rel & {\n\t\tmethod: \"get\"|\"post\",\n\t\tenctype: \"application/x-www-form-urlencoded\"|\"multipart/form-data\"|\"text/plain\"\n\t\taction: string | URL | ((ctx: any) => any)  // TODO: |UIX.Entrypoint\n\t},\n\n\timg: widthAndHeight & src &  {\n\t\tcrossorigin: \"anonymous\"|\"use-credentials\"\n\t\tismap: boolean,\n\t\tloading: \"eager\"|\"lazy\",\n\t\treferrerpolicy: \"no-referrer\"|\"no-referrer-when-downgrade\"|\"origin\"|\"origin-when-cross-origin\"|\"unsafe-url\",\n\t\tusemap: `#${string}`\n\t},\n\ttemplate: {\n\t\tshadowrootmode: 'open'|'closed'\n\t},\n\n\tiframe: src & {\n\t\tallowtransparency: boolean | \"true\" | \"false\"\n\t},\n\n\tsource: src,\n\n\tvideo: widthAndHeight & (src | {src: MediaStream}) & {\n\t\tautoplay: boolean,\n\t\tcontrols: boolean,\n\t\tloop: boolean,\n\t\tmuted: boolean,\n\t\tposter: string|URL,\n\t\tpreload: \"auto\"|\"metadata\"|\"none\"\n\t},\n\taudio: (src | {src: MediaStream}) & {\n\t\tautoplay: boolean,\n\t\tcontrols: boolean,\n\t\tloop: boolean,\n\t\tmuted: boolean,\n\t\tpreload: \"auto\"|\"metadata\"|\"none\",\n\t},\n\n\ttextarea: widthAndHeight & input & {\n\t\trows: htmlNumber|string,\n\t\tcols: htmlNumber|string,\n\t\tvalue: string,\n\t\t\"value:out\": string,\n\t\t\"value:in\": string\n\t},\n\toption: {\n\t\tselected: boolean,\n\t\tdisabled: boolean,\n\t\trequired: boolean\n\t},\n\ttable: {\n\t\tcellspacing: string,\n\t\tcellpadding: string,\n\t\talign: string,\n\t\twidth: string, \n\t\tborder: string\n\t},\n\n\ttd: {\n\t\tcolspan: htmlNumber|string,\n\t\trowspan: htmlNumber|string,\n\t\theaders: string,\n\t\talign: string,\n\t\tvalign: string,\n\t\twidth: string,\n\t\theight: string\n\t},\n\tth: {\n\t\tcolspan: htmlNumber|string,\n\t\trowspan: htmlNumber|string,\n\t\theaders: string,\n\t\talign: string,\n\t\tvalign: string,\n\t\twidth: string,\n\t\theight: string\n\t},\n\ttr: {\n\t\talign: string,\n\t\tvalign: string\n\t},\n\tthead: {\n\t\talign: string,\n\t\tvalign: string\n\t},\n\ttbody: {\n\t\talign: string,\n\t\tvalign: string\n\t},\n\ttfoot: {\n\t\talign: string,\n\t\tvalign: string\n\t},\n\toptgroup: {\n\t\tlabel: string,\n\t\tdisabled: boolean\n\t},\n\tfieldset: {\n\t\tdisabled: boolean,\n\t\tform: string,\n\t\tname: string,\n\t}\n}\n\n\n\n// width, height\nconst cXY = [\"cx\", \"cy\"] as const;\ntype cXY = {\n\tcx: svgLength,\n\tcy: svgLength\n}\n\nconst xy = [\"x\", \"y\"] as const;\ntype xy = {\n\tx: svgLength,\n\ty: svgLength\n}\n\nexport const svgTags = new Set([\"animate\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDisplacementMap\", \"feDropShadow\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"foreignObject\", \"g\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\", \"set\", \"stop\",  \"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\"tspan\", \"use\", \"view\"] satisfies (keyof SVGElementTagNameMap)[])\n\n// TODO: name collisions: \"a\", \"script\", \"style\",  \"title\", \n\nconst genericSvgAttributes = [\n  // Global attributes\n  \"id\", \"class\", \"style\", \"tabindex\", \"role\", \"aria-label\",\n  \"xml:base\", \"xml:lang\", \"xml:space\", \"focusable\", \"visibility\", \"display\", \"cursor\", \"color\", \"opacity\",\n\n  // Position & size\n  ...cXY, ...xy, ...widthAndHeight, \"x1\",\"x2\",\"y1\",\"y2\",\"cx\",\"cy\",\"r\",\"rx\",\"ry\",\"points\",\"pathLength\",\n\n  // Core styling\n  \"fill\",\"fill-opacity\",\"fill-rule\",\"stroke\",\"stroke-width\",\"stroke-opacity\",\n  \"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-dasharray\",\"stroke-dashoffset\",\n  \"vector-effect\",\"overflow\",\"transform\",\n\n  // Gradients & patterns\n  \"gradientUnits\",\"gradientTransform\",\"spreadMethod\",\"patternUnits\",\"patternContentUnits\",\"patternTransform\",\n  \"xlink:href\",\"href\",\"mask\",\"maskUnits\",\"maskContentUnits\",\"clip-path\",\n\n  // Filter attributes\n  \"filter\",\"result\",\"in\",\"in2\",\"operator\",\"stdDeviation\",\"flood-color\",\"flood-opacity\",\n  \"lighting-color\",\"surfaceScale\",\"specularExponent\",\"kernelMatrix\",\"kernelUnitLength\",\n\n  // Markers\n  \"marker-start\",\"marker-mid\",\"marker-end\",\n\n  // Text & font\n  \"text-anchor\",\"dominant-baseline\",\"baseline-shift\",\"font-family\",\"font-size\",\"font-style\",\n  \"font-variant\",\"font-weight\",\"letter-spacing\",\"word-spacing\",\"writing-mode\",\"text-decoration\",\"dy\",\n\n  // Animation attributes\n  \"begin\",\"dur\",\"end\",\"repeatCount\",\"values\",\"calcMode\",\"keyTimes\",\"keySplines\",\"fill\",\n\n  // SVG document attributes\n  \"xmlns\",\"version\",\"xmlns:xlink\",\"viewBox\",\"preserveAspectRatio\",\"d\",\"type\"\n] as const;\n\n/** list of all allowed attributes for HTML elements */\nexport const svgElementAttributes = Object.fromEntries([...svgTags].map(tag => [tag, genericSvgAttributes])) satisfies {[key in keyof SVGElementTagNameMap]?: readonly string[]};\nexport const svgElementAttributesLowercase = Object.fromEntries([...svgTags].map(tag => [tag.toLowerCase(), genericSvgAttributes])) satisfies {[key in keyof SVGElementTagNameMap]?: readonly string[]};\n\n// {\n// \tcircle: [...genericSvgAttributes, \"r\"],\n// \tsvg: [...genericSvgAttributes, \"xmlns\", \"version\", \"xmlns:xlink\", \"viewBox\", \"preserveAspectRatio\"],\n// \tpath: [...genericSvgAttributes, \"d\"],\n// \ttspan: [...genericSvgAttributes, \"text-anchor\"],\n// \ttext: [...genericSvgAttributes],\n// \tg: [...genericSvgAttributes],\n// \tfeFlood: [...genericSvgAttributes],\n// \tfeColorMatrix: [...genericSvgAttributes],\n// \tfeOffset: [...genericSvgAttributes],\n// \tfeGaussianBlur: [...genericSvgAttributes],\n// \tfeBlend: [...genericSvgAttributes],\n// \tfeComposite: [...genericSvgAttributes],\n// \tfeDisplacementMap: [...genericSvgAttributes],\n// \tfeSpecularLighting: [...genericSvgAttributes],\n// \tfePointLight: [...genericSvgAttributes],\n// \tfeSpotLight: [...genericSvgAttributes],\n// \tfeDiffuseLighting: [...genericSvgAttributes],\n// \tfeConvolveMatrix: [...genericSvgAttributes],\n// \tfilter: [...genericSvgAttributes],\n// \tradialGradient: [...genericSvgAttributes],\n// \tstop: [...genericSvgAttributes],\n// } as const satisfies {[key in keyof SVGElementTagNameMap]?: readonly string[]};\n\n\n/** custom values for specific element attributes (default: string) */\nexport type svgElementAttributeValues = {\n\tcircle: cXY & {\n\t\tr: svgLength\n\t},\n\ttspan: xy,\n\ttext: xy,\n\tuse: href & rel\n}\n\n\nexport const mathMLTags = new Set([\"annotation\",\"annotation-xml\",\"maction\",\"math\",\"merror\",\"mfrac\",\"mi\",\"mmultiscripts\",\"mn\",\"mo\",\"mover\",\"mpadded\",\"mphantom\",\"mprescripts\",\"mroot\",\"mrow\",\"ms\",\"mspace\",\"msqrt\",\"mstyle\",\"msub\",\"msubsup\",\"msup\",\"mtable\",\"mtd\",\"mtext\",\"mtr\",\"munder\",\"munderover\",\"semantics\"] satisfies (keyof MathMLElementTagNameMap)[])\n"],"names":["elementEventHandlerAttributesBase","elementEventHandlerAttributes","map","v","defaultElementAttributes","widthAndHeight","src","href","input","htmlElementAttributes","a","link","script","progress","button","form","img","template","iframe","details","source","label","video","audio","textarea","option","select","dialog","table","td","th","tr","thead","tbody","tfoot","meta","optgroup","fieldset","svgTags","Set","genericSvgAttributes","svgElementAttributes","Object","fromEntries","tag","svgElementAttributesLowercase","toLowerCase","mathMLTags"],"mappings":"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","sourceRoot":"/lib/uix-0.4.39/src/uix-dom/","file":"attributes.ts"}