{"version":3,"sources":["webpack:///./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/qml.js"],"names":["module","exports","hljs","QML_IDENT_RE","ID_ID","className","begin","starts","end","returnEnd","QML_ATTRIBUTE","returnBegin","contains","excludeEnd","relevance","QML_OBJECT","inherit","TITLE_MODE","name","aliases","case_insensitive","keywords","keyword","literal","built_in","APOS_STRING_MODE","QUOTE_STRING_MODE","BACKSLASH_ESCAPE","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","variants","C_NUMBER_RE","RE_STARTERS_RE","REGEXP_MODE","subLanguage","beginKeywords","excludeBegin","illegal","IDENT_RE"],"mappings":"8EA6IAA,EAAOC,QApIP,SAAaC,GACX,IAKIC,EAAe,4BAyBfC,EAAQ,CACVC,UAAW,YACXC,MAAO,aACPC,OAAQ,CACNF,UAAW,SACXG,IAAKL,EACLM,WAAW,IAOXC,EAAgB,CAClBJ,MAAOH,EAAe,QACtBQ,aAAa,EACbC,SAAU,CAAC,CACTP,UAAW,YACXC,MAAOH,EACPK,IAAK,QACLK,YAAY,EACZC,UAAW,IAEbA,UAAW,GAITC,EAAa,CACfT,MAAOH,EAAe,QACtBK,IAAK,IACLG,aAAa,EACbG,UAAW,EACXF,SAAU,CAACV,EAAKc,QAAQd,EAAKe,WAAY,CACvCX,MAAOH,MAGX,MAAO,CACLe,KAAM,MACNC,QAAS,CAAC,MACVC,kBAAkB,EAClBC,SAtEa,CACbC,QAAS,uNACTC,QAAS,yCACTC,SAAU,+sBAoEVZ,SAAU,CAAC,CACTP,UAAW,OACXC,MAAO,gCACNJ,EAAKuB,iBAAkBvB,EAAKwB,kBAAmB,CAEhDrB,UAAW,SACXC,MAAO,IACPE,IAAK,IACLI,SAAU,CAACV,EAAKyB,iBAAkB,CAChCtB,UAAW,QACXC,MAAO,SACPE,IAAK,SAENN,EAAK0B,oBAAqB1B,EAAK2B,qBAAsB,CACtDxB,UAAW,SACXyB,SAAU,CAAC,CACTxB,MAAO,mBACN,CACDA,MAAO,oBACN,CACDA,MAAOJ,EAAK6B,cAEdjB,UAAW,GACV,CAEDR,MAAO,IAAMJ,EAAK8B,eAAiB,kCACnCX,SAAU,oBACVT,SAAU,CAACV,EAAK0B,oBAAqB1B,EAAK2B,qBAAsB3B,EAAK+B,YAAa,CAEhF3B,MAAO,IACPE,IAAK,aACLM,UAAW,EACXoB,YAAa,QAEfpB,UAAW,GAtFF,CACXT,UAAW,UACXC,MAAO,eACPC,OAAQ,CACNF,UAAW,SACXG,IAAK,0BACLC,WAAW,IAjBA,CACbJ,UAAW,UACXC,MAAO,iBACPC,OAAQ,CACNF,UAAW,SACXG,IAAK,sBACLC,WAAW,IA4FQ,CACnBJ,UAAW,WACX8B,cAAe,WACf3B,IAAK,KACLK,YAAY,EACZD,SAAU,CAACV,EAAKc,QAAQd,EAAKe,WAAY,CACvCX,MAAO,6BACL,CACFD,UAAW,SACXC,MAAO,KACPE,IAAK,KACL4B,cAAc,EACdvB,YAAY,EACZD,SAAU,CAACV,EAAK0B,oBAAqB1B,EAAK2B,wBAE5CQ,QAAS,QACR,CACD/B,MAAO,MAAQJ,EAAKoC,SACpBxB,UAAW,GAEVV,EAAOM,EAAeK,GACzBsB,QAAS","file":"react-syntax-highlighter_languages_highlight_qml-f756d46b53568328bae0.js","sourcesContent":["/*\nLanguage: QML\nRequires: javascript.js, xml.js\nAuthor: John Foster <jfoster@esri.com>\nDescription: Syntax highlighting for the Qt Quick QML scripting language, based mostly off\n             the JavaScript parser.\nWebsite: https://doc.qt.io/qt-5/qmlapplications.html\nCategory: scripting\n*/\nfunction qml(hljs) {\n  var KEYWORDS = {\n    keyword: 'in of on if for while finally var new function do return void else break catch ' + 'instanceof with throw case default try this switch continue typeof delete ' + 'let yield const export super debugger as async await import',\n    literal: 'true false null undefined NaN Infinity',\n    built_in: 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' + 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' + 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' + 'TypeError URIError Number Math Date String RegExp Array Float32Array ' + 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' + 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' + 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' + 'Behavior bool color coordinate date double enumeration font geocircle georectangle ' + 'geoshape int list matrix4x4 parent point quaternion real rect ' + 'size string url variant vector2d vector3d vector4d ' + 'Promise'\n  };\n  var QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\\\._]*'; // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line.\n  // Use property class.\n\n  var PROPERTY = {\n    className: 'keyword',\n    begin: '\\\\bproperty\\\\b',\n    starts: {\n      className: 'string',\n      end: '(:|=|;|,|//|/\\\\*|$)',\n      returnEnd: true\n    }\n  }; // Isolate signal statements. Ends at a ) a comment or end of line.\n  // Use property class.\n\n  var SIGNAL = {\n    className: 'keyword',\n    begin: '\\\\bsignal\\\\b',\n    starts: {\n      className: 'string',\n      end: '(\\\\(|:|=|;|,|//|/\\\\*|$)',\n      returnEnd: true\n    }\n  }; // id: is special in QML. When we see id: we want to mark the id: as attribute and\n  // emphasize the token following.\n\n  var ID_ID = {\n    className: 'attribute',\n    begin: '\\\\bid\\\\s*:',\n    starts: {\n      className: 'string',\n      end: QML_IDENT_RE,\n      returnEnd: false\n    }\n  }; // Find QML object attribute. An attribute is a QML identifier followed by :.\n  // Unfortunately it's hard to know where it ends, as it may contain scalars,\n  // objects, object definitions, or javascript. The true end is either when the parent\n  // ends or the next attribute is detected.\n\n  var QML_ATTRIBUTE = {\n    begin: QML_IDENT_RE + '\\\\s*:',\n    returnBegin: true,\n    contains: [{\n      className: 'attribute',\n      begin: QML_IDENT_RE,\n      end: '\\\\s*:',\n      excludeEnd: true,\n      relevance: 0\n    }],\n    relevance: 0\n  }; // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }.\n  // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {.\n\n  var QML_OBJECT = {\n    begin: QML_IDENT_RE + '\\\\s*{',\n    end: '{',\n    returnBegin: true,\n    relevance: 0,\n    contains: [hljs.inherit(hljs.TITLE_MODE, {\n      begin: QML_IDENT_RE\n    })]\n  };\n  return {\n    name: 'QML',\n    aliases: ['qt'],\n    case_insensitive: false,\n    keywords: KEYWORDS,\n    contains: [{\n      className: 'meta',\n      begin: /^\\s*['\"]use (strict|asm)['\"]/\n    }, hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, {\n      // template string\n      className: 'string',\n      begin: '`',\n      end: '`',\n      contains: [hljs.BACKSLASH_ESCAPE, {\n        className: 'subst',\n        begin: '\\\\$\\\\{',\n        end: '\\\\}'\n      }]\n    }, hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, {\n      className: 'number',\n      variants: [{\n        begin: '\\\\b(0[bB][01]+)'\n      }, {\n        begin: '\\\\b(0[oO][0-7]+)'\n      }, {\n        begin: hljs.C_NUMBER_RE\n      }],\n      relevance: 0\n    }, {\n      // \"value\" container\n      begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n      keywords: 'return throw case',\n      contains: [hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, hljs.REGEXP_MODE, {\n        // E4X / JSX\n        begin: /</,\n        end: />\\s*[);\\]]/,\n        relevance: 0,\n        subLanguage: 'xml'\n      }],\n      relevance: 0\n    }, SIGNAL, PROPERTY, {\n      className: 'function',\n      beginKeywords: 'function',\n      end: /\\{/,\n      excludeEnd: true,\n      contains: [hljs.inherit(hljs.TITLE_MODE, {\n        begin: /[A-Za-z$_][0-9A-Za-z$_]*/\n      }), {\n        className: 'params',\n        begin: /\\(/,\n        end: /\\)/,\n        excludeBegin: true,\n        excludeEnd: true,\n        contains: [hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE]\n      }],\n      illegal: /\\[|%/\n    }, {\n      begin: '\\\\.' + hljs.IDENT_RE,\n      relevance: 0 // hack: prevents detection of keywords after dots\n\n    }, ID_ID, QML_ATTRIBUTE, QML_OBJECT],\n    illegal: /#/\n  };\n}\n\nmodule.exports = qml;"],"sourceRoot":""}