{"version":3,"file":"875.js","mappings":"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","sources":["webpack://giveeasy.cloud/./wwwroot/jsx/utils/root-utils.jsx"],"sourcesContent":["import React from 'react';\r\nimport ReactIs from 'react-is';\r\n\r\nfunction parseKey(key) {\r\n // react attribute names use camelcase with no hyphens.\r\n const parts = key.split('-');\r\n if (parts.length > 1) {\r\n const newKeyParts = parts.map((c, index) => {\r\n if (index > 0) {\r\n return c.charAt(0).toUpperCase() + c.slice(1);\r\n }\r\n return c;\r\n });\r\n\r\n return newKeyParts.join('');\r\n }\r\n\r\n return key;\r\n}\r\n\r\nfunction convertStyleAttr(attr) {\r\n // NB: This will break if urls or data-uris are passed through the style attribute.\r\n // e.g.content: \"data:image/svg+xml,data:text/plain;charset=utf-8,...\"\r\n const styles = attr.split(';');\r\n\r\n const styleObject = {};\r\n if (Array.isArray(styles)) {\r\n styles.forEach((s) => {\r\n if (s) {\r\n const kv = s.split(':');\r\n const key = parseKey(kv[0]);\r\n const value = kv[1];\r\n\r\n styleObject[key] = value;\r\n }\r\n });\r\n }\r\n\r\n return styleObject;\r\n}\r\n\r\nfunction attr2Props(attributes) {\r\n const props = attributes.reduce((o, kv) => {\r\n const x = o;\r\n let n = kv.name;\r\n let v = kv.value;\r\n if (n === 'style') {\r\n v = convertStyleAttr(v);\r\n }\r\n if (n === 'class') {\r\n n = 'className';\r\n }\r\n // See https://reactjs.org/docs/uncontrolled-components.html#default-values\r\n if (n === 'value' && x.type === 'checkbox') {\r\n n = 'defaultChecked';\r\n }\r\n if (n === 'value' && x.type !== 'submit') {\r\n n = 'defaultValue';\r\n }\r\n if (n === 'checked') {\r\n n = 'defaultChecked';\r\n }\r\n if (n === 'readonly') {\r\n n = 'readOnly';\r\n }\r\n if (v === 'true') {\r\n v = true;\r\n }\r\n if (v === 'false') {\r\n v = false;\r\n }\r\n // defaultChecked and checked are bool values.\r\n // The only way to get an unchecked checkbox is by omitting these properties\r\n // Allow only 'checked' value as the 'value' attribute doesn't seem to change\r\n if (!(n === 'defaultChecked' && kv.value !== 'checked')) {\r\n x[n] = v;\r\n }\r\n\r\n return x;\r\n }, {});\r\n return props;\r\n}\r\n\r\nconst HtmlToReact = require('html-to-react');\r\n\r\n// Resolves and loads module content\r\nexport function requireAll(requireContext) {\r\n return requireContext.keys().map(requireContext);\r\n}\r\n\r\n// Important! This allows us to nest JSX components and HTML components inside each other\r\n// Everything inside a element will be converted into React\r\nexport function setProcessingInstuctions(modules) {\r\n const processNodeDefinitions = new HtmlToReact.ProcessNodeDefinitions(React);\r\n\r\n const components = [];\r\n for (const m of modules) {\r\n if (m.default) { // default is the module export class\r\n const c = m.default;\r\n\r\n // https://www.npmjs.com/package/react-is\r\n if (ReactIs.isValidElementType(c)) {\r\n components.push(m.default);\r\n }\r\n }\r\n }\r\n\r\n // Order matters. Instructions are processed in\r\n // the order they're defined\r\n const processingInstructions = [];\r\n const doNotProcess = [];\r\n\r\n // Instruct the parser to replace JSX classes with their appropriate components\r\n for (const c of components) {\r\n const type = { component: c }; // This is needed to trick JSX into using the component type\r\n\r\n processingInstructions.push(\r\n {\r\n shouldProcessNode(node) {\r\n try {\r\n c.name.toLowerCase();\r\n } catch {\r\n return false;\r\n }\r\n return (node.tagName ?? '').toLowerCase() === c.name.toLowerCase() && !doNotProcess.includes(c.name.toLowerCase());\r\n },\r\n processNode(node, children, index) {\r\n const props = attr2Props(node?.attributes ?? []);\r\n\r\n // filter out any whitespace children\r\n const filteredChildren = React.Children\r\n .toArray(children)\r\n .filter((child) => {\r\n if (child.type || child.replace(/\\s/g, '').length > 0) {\r\n return child;\r\n }\r\n return undefined;\r\n });\r\n\r\n const r = (\r\n \r\n {filteredChildren}\r\n \r\n );\r\n return r;\r\n },\r\n // replaceChildren: true// NB: replaceChildren: true tells React to own the child nodes\r\n },\r\n );\r\n }\r\n\r\n // Add an uncontrolled state handler for pure elements\r\n // See https://reactjs.org/docs/uncontrolled-components.html\r\n processingInstructions.push({\r\n shouldProcessNode(node) {\r\n return (node.tagName ?? '').toLowerCase().includes('input') && !doNotProcess.includes((node.tagName ?? '').toLowerCase());\r\n },\r\n processNode(node, children, index) {\r\n // eslint-disable-next-line react/destructuring-assignment\r\n const reactProps = attr2Props(node.attributes);\r\n return (\r\n \r\n );\r\n },\r\n });\r\n\r\n // Add the default case handler for a plain HTML node\r\n processingInstructions.push({\r\n shouldProcessNode(node) {\r\n return !doNotProcess.includes((node.tagName ?? '').toLowerCase());\r\n },\r\n processNode: processNodeDefinitions.processDefaultNode,\r\n });\r\n\r\n return processingInstructions;\r\n}\r\n\r\nexport default { setProcessingInstuctions, requireAll };\r\n"],"names":["attr2Props","attributes","reduce","o","kv","x","n","name","v","value","convertStyleAttr","attr","styles","split","styleObject","Array","isArray","forEach","s","key","parseKey","parts","length","map","c","index","charAt","toUpperCase","slice","join","type","HtmlToReact","require","requireAll","requireContext","keys","setProcessingInstuctions","modules","processNodeDefinitions","ProcessNodeDefinitions","React","components","m","default","ReactIs","push","processingInstructions","doNotProcess","component","shouldProcessNode","node","toLowerCase","tagName","includes","processNode","children","props","filteredChildren","filter","child","replace","undefined","reactProps","processDefaultNode"],"sourceRoot":""}