{"version":3,"file":"@selderee-e13b8226.js","sources":["../../node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.mjs"],"sourcesContent":["import { isTag } from 'domhandler';\nimport { Picker } from 'selderee';\n\nfunction hp2Builder(nodes) {\n return new Picker(handleArray(nodes));\n}\nfunction handleArray(nodes) {\n const matchers = nodes.map(handleNode);\n return (el, ...tail) => matchers.flatMap(m => m(el, ...tail));\n}\nfunction handleNode(node) {\n switch (node.type) {\n case 'terminal': {\n const result = [node.valueContainer];\n return (el, ...tail) => result;\n }\n case 'tagName':\n return handleTagName(node);\n case 'attrValue':\n return handleAttrValueName(node);\n case 'attrPresence':\n return handleAttrPresenceName(node);\n case 'pushElement':\n return handlePushElementNode(node);\n case 'popElement':\n return handlePopElementNode(node);\n }\n}\nfunction handleTagName(node) {\n const variants = {};\n for (const variant of node.variants) {\n variants[variant.value] = handleArray(variant.cont);\n }\n return (el, ...tail) => {\n const continuation = variants[el.name];\n return (continuation) ? continuation(el, ...tail) : [];\n };\n}\nfunction handleAttrPresenceName(node) {\n const attrName = node.name;\n const continuation = handleArray(node.cont);\n return (el, ...tail) => (Object.prototype.hasOwnProperty.call(el.attribs, attrName))\n ? continuation(el, ...tail)\n : [];\n}\nfunction handleAttrValueName(node) {\n const callbacks = [];\n for (const matcher of node.matchers) {\n const predicate = matcher.predicate;\n const continuation = handleArray(matcher.cont);\n callbacks.push((attr, el, ...tail) => (predicate(attr) ? continuation(el, ...tail) : []));\n }\n const attrName = node.name;\n return (el, ...tail) => {\n const attr = el.attribs[attrName];\n return (attr || attr === '')\n ? callbacks.flatMap(cb => cb(attr, el, ...tail))\n : [];\n };\n}\nfunction handlePushElementNode(node) {\n const continuation = handleArray(node.cont);\n const leftElementGetter = (node.combinator === '+')\n ? getPrecedingElement\n : getParentElement;\n return (el, ...tail) => {\n const next = leftElementGetter(el);\n if (next === null) {\n return [];\n }\n return continuation(next, el, ...tail);\n };\n}\nconst getPrecedingElement = (el) => {\n const prev = el.prev;\n if (prev === null) {\n return null;\n }\n return (isTag(prev)) ? prev : getPrecedingElement(prev);\n};\nconst getParentElement = (el) => {\n const parent = el.parent;\n return (parent && isTag(parent)) ? parent : null;\n};\nfunction handlePopElementNode(node) {\n const continuation = handleArray(node.cont);\n return (el, next, ...tail) => continuation(next, ...tail);\n}\n\nexport { hp2Builder };\n"],"names":["hp2Builder","nodes","Picker","handleArray","matchers","handleNode","el","tail","m","node","result","handleTagName","handleAttrValueName","handleAttrPresenceName","handlePushElementNode","handlePopElementNode","variants","variant","continuation","attrName","callbacks","matcher","predicate","attr","cb","leftElementGetter","getPrecedingElement","getParentElement","next","prev","isTag","parent"],"mappings":"wFAGA,SAASA,EAAWC,EAAO,CACvB,OAAO,IAAIC,EAAOC,EAAYF,CAAK,CAAC,CACxC,CACA,SAASE,EAAYF,EAAO,CACxB,MAAMG,EAAWH,EAAM,IAAII,CAAU,EACrC,MAAO,CAACC,KAAOC,IAASH,EAAS,QAAQI,GAAKA,EAAEF,EAAI,GAAGC,CAAI,CAAC,CAChE,CACA,SAASF,EAAWI,EAAM,CACtB,OAAQA,EAAK,KAAI,CACb,IAAK,WAAY,CACb,MAAMC,EAAS,CAACD,EAAK,cAAc,EACnC,MAAO,CAACH,KAAOC,IAASG,CAC3B,CACD,IAAK,UACD,OAAOC,EAAcF,CAAI,EAC7B,IAAK,YACD,OAAOG,EAAoBH,CAAI,EACnC,IAAK,eACD,OAAOI,EAAuBJ,CAAI,EACtC,IAAK,cACD,OAAOK,EAAsBL,CAAI,EACrC,IAAK,aACD,OAAOM,EAAqBN,CAAI,CACvC,CACL,CACA,SAASE,EAAcF,EAAM,CACzB,MAAMO,EAAW,CAAA,EACjB,UAAWC,KAAWR,EAAK,SACvBO,EAASC,EAAQ,KAAK,EAAId,EAAYc,EAAQ,IAAI,EAEtD,MAAO,CAACX,KAAOC,IAAS,CACpB,MAAMW,EAAeF,EAASV,EAAG,IAAI,EACrC,OAAQY,EAAgBA,EAAaZ,EAAI,GAAGC,CAAI,EAAI,EAC5D,CACA,CACA,SAASM,EAAuBJ,EAAM,CAClC,MAAMU,EAAWV,EAAK,KAChBS,EAAef,EAAYM,EAAK,IAAI,EAC1C,MAAO,CAACH,KAAOC,IAAU,OAAO,UAAU,eAAe,KAAKD,EAAG,QAASa,CAAQ,EAC5ED,EAAaZ,EAAI,GAAGC,CAAI,EACxB,EACV,CACA,SAASK,EAAoBH,EAAM,CAC/B,MAAMW,EAAY,CAAA,EAClB,UAAWC,KAAWZ,EAAK,SAAU,CACjC,MAAMa,EAAYD,EAAQ,UACpBH,EAAef,EAAYkB,EAAQ,IAAI,EAC7CD,EAAU,KAAK,CAACG,EAAMjB,KAAOC,IAAUe,EAAUC,CAAI,EAAIL,EAAaZ,EAAI,GAAGC,CAAI,EAAI,CAAA,CAAG,CAC3F,CACD,MAAMY,EAAWV,EAAK,KACtB,MAAO,CAACH,KAAOC,IAAS,CACpB,MAAMgB,EAAOjB,EAAG,QAAQa,CAAQ,EAChC,OAAQI,GAAQA,IAAS,GACnBH,EAAU,QAAQI,GAAMA,EAAGD,EAAMjB,EAAI,GAAGC,CAAI,CAAC,EAC7C,EACd,CACA,CACA,SAASO,EAAsBL,EAAM,CACjC,MAAMS,EAAef,EAAYM,EAAK,IAAI,EACpCgB,EAAqBhB,EAAK,aAAe,IACzCiB,EACAC,EACN,MAAO,CAACrB,KAAOC,IAAS,CACpB,MAAMqB,EAAOH,EAAkBnB,CAAE,EACjC,OAAIsB,IAAS,KACF,GAEJV,EAAaU,EAAMtB,EAAI,GAAGC,CAAI,CAC7C,CACA,CACA,MAAMmB,EAAuBpB,GAAO,CAChC,MAAMuB,EAAOvB,EAAG,KAChB,OAAIuB,IAAS,KACF,KAEHC,EAAMD,CAAI,EAAKA,EAAOH,EAAoBG,CAAI,CAC1D,EACMF,EAAoBrB,GAAO,CAC7B,MAAMyB,EAASzB,EAAG,OAClB,OAAQyB,GAAUD,EAAMC,CAAM,EAAKA,EAAS,IAChD,EACA,SAAShB,EAAqBN,EAAM,CAChC,MAAMS,EAAef,EAAYM,EAAK,IAAI,EAC1C,MAAO,CAACH,EAAIsB,KAASrB,IAASW,EAAaU,EAAM,GAAGrB,CAAI,CAC5D","x_google_ignoreList":[0]}