{"version":3,"sources":["webpack://CoveoForSitecore/./src/ui/scopes/CoveoForSitecoreSyntax.ts"],"names":["element","options","bindings","CoveoForSitecoreSyntax","ID","fieldHandler","Context","fields","ComponentOptions","initComponentOptions","root","dataset","IS_COVEO_FOR_SITECORE_SYNTAX_EVENT_REGISTERED","bind","onRootElement","QueryEvents","doneBuildingQuery","onDoneBuildingQuery","setFieldHandler","this","buildingQueryArgs","replaceSitecoreFieldExpressionsByCoveoFieldExpressions","queryBuilder","expression","expressionBuilder","getParts","forEach","originalExpression","replaceSitecoreFieldNamesByCoveoFieldNames","remove","add","sitecoreFieldNamesMatched","extractSitecoreFieldNames","sitecoreFieldName","coveoFieldName","convertUnaryFieldExpressionToCoveoUnaryFieldExpression","replace","match","SITECORE_FIELD_NAME_REGEX","unaryFieldExpression","isCoveoFieldName","toCoveo","Component","Initialization","registerAutoCreateComponent"],"mappings":"yqBAAA,WAYA,OAIA,uCAWI,WACWA,EACAC,EACAC,GAHX,MAKI,YAAMF,EAASG,EAAuBC,GAAIF,IAAS,K,OAJ5C,EAAAF,UACA,EAAAC,UACA,EAAAC,WAIP,EAAKG,aAAe,EAAAC,QAAQC,OAE5B,EAAKN,QAAU,EAAAO,iBAAiBC,qBAAqBT,EAASG,EAAwBF,GAEjF,EAAKS,KAAKC,QAAQR,EAAuBS,iDAC1C,EAAKF,KAAKC,QAAQR,EAAuBS,+CAAiD,OAC1F,EAAKC,KAAKC,cAAc,EAAAC,YAAYC,kBAAmB,EAAKC,sB,EA8CxE,OAtE4C,OA4BjC,YAAAC,gBAAP,SAAuBb,GACnBc,KAAKd,aAAeA,GAGhB,YAAAY,oBAAR,SAA4BG,GACxBD,KAAKE,uDAAuDD,EAAkBE,aAAaC,aAGvF,YAAAF,uDAAR,SAA+DG,GAA/D,WAC4BA,EAAkBC,WAC1BC,SAAQ,SAACH,GACrB,IAAMI,EAAqBJ,EAE3BA,EAAa,EAAKK,2CAA2CL,GAE7DC,EAAkBK,OAAOF,GACzBH,EAAkBM,IAAIP,OAItB,YAAAK,2CAAR,SAAmDL,GAAnD,WACUQ,EAA4BZ,KAAKa,0BAA0BT,GAOjE,OANIQ,GACAA,EAA0BL,SAAQ,SAACO,GAC/B,IAAMC,EAAiB,EAAKC,uDAAuDF,GACnFV,EAAaA,EAAWa,QAAQH,EAAmBC,MAGpDX,GAGH,YAAAS,0BAAR,SAAkCT,GAC9B,OAAOA,EAAWc,MAAMlC,EAAuBmC,4BAG3C,YAAAH,uDAAR,SAA+DI,GAC3D,OAAKpB,KAAKd,aAAamC,iBAAiBD,GAG7BA,EAFApB,KAAKd,aAAaoC,QAAQF,IAhElC,EAAAnC,GAAK,oBAEL,EAAAH,QAA0C,GAEzB,EAAAW,8CAAgD,wCAEhD,EAAA0B,0BAA4B,kCA+DxD,EAtEA,CAA4C,EAAAI,WAwE5C,EAAAC,eAAeC,4BAA4BzC","file":"CoveoForSitecoreSyntax.min.js","sourcesContent":["import {\r\n    Component,\r\n    ComponentOptions,\r\n    IComponentBindings,\r\n    Initialization,\r\n    IBuildingQueryEventArgs,\r\n    QueryEvents,\r\n    ExpressionBuilder,\r\n} from 'coveo-search-ui';\r\n\r\nimport { ICoveoFieldHandler } from '../../handlers/CoveoFieldsHandler';\r\n\r\nimport { Context } from '../../base/Context';\r\n\r\nexport interface ICoveoForSitecoreSyntaxOptions {}\r\n\r\nexport class CoveoForSitecoreSyntax extends Component {\r\n    static ID = 'ForSitecoreSyntax';\r\n\r\n    static options: ICoveoForSitecoreSyntaxOptions = {};\r\n\r\n    private static readonly IS_COVEO_FOR_SITECORE_SYNTAX_EVENT_REGISTERED = 'coveoForSitecoreSyntaxEventRegistered';\r\n\r\n    private static readonly SITECORE_FIELD_NAME_REGEX = /@[\\w\\_]*(?=\\=|\\=\\=|\\<\\>|\\s|$)/gi;\r\n\r\n    private fieldHandler: ICoveoFieldHandler;\r\n\r\n    constructor(\r\n        public element: HTMLElement,\r\n        public options: ICoveoForSitecoreSyntaxOptions,\r\n        public bindings: IComponentBindings\r\n    ) {\r\n        super(element, CoveoForSitecoreSyntax.ID, bindings);\r\n\r\n        this.fieldHandler = Context.fields;\r\n\r\n        this.options = ComponentOptions.initComponentOptions(element, CoveoForSitecoreSyntax, options);\r\n\r\n        if (!this.root.dataset[CoveoForSitecoreSyntax.IS_COVEO_FOR_SITECORE_SYNTAX_EVENT_REGISTERED]) {\r\n            this.root.dataset[CoveoForSitecoreSyntax.IS_COVEO_FOR_SITECORE_SYNTAX_EVENT_REGISTERED] = 'true';\r\n            this.bind.onRootElement(QueryEvents.doneBuildingQuery, this.onDoneBuildingQuery);\r\n        }\r\n    }\r\n\r\n    public setFieldHandler(fieldHandler: ICoveoFieldHandler): void {\r\n        this.fieldHandler = fieldHandler;\r\n    }\r\n\r\n    private onDoneBuildingQuery(buildingQueryArgs: IBuildingQueryEventArgs): void {\r\n        this.replaceSitecoreFieldExpressionsByCoveoFieldExpressions(buildingQueryArgs.queryBuilder.expression);\r\n    }\r\n\r\n    private replaceSitecoreFieldExpressionsByCoveoFieldExpressions(expressionBuilder: ExpressionBuilder): void {\r\n        const expressionParts = expressionBuilder.getParts();\r\n        expressionParts.forEach((expression) => {\r\n            const originalExpression = expression;\r\n\r\n            expression = this.replaceSitecoreFieldNamesByCoveoFieldNames(expression);\r\n\r\n            expressionBuilder.remove(originalExpression);\r\n            expressionBuilder.add(expression);\r\n        });\r\n    }\r\n\r\n    private replaceSitecoreFieldNamesByCoveoFieldNames(expression: string): string {\r\n        const sitecoreFieldNamesMatched = this.extractSitecoreFieldNames(expression);\r\n        if (sitecoreFieldNamesMatched) {\r\n            sitecoreFieldNamesMatched.forEach((sitecoreFieldName) => {\r\n                const coveoFieldName = this.convertUnaryFieldExpressionToCoveoUnaryFieldExpression(sitecoreFieldName);\r\n                expression = expression.replace(sitecoreFieldName, coveoFieldName);\r\n            });\r\n        }\r\n        return expression;\r\n    }\r\n\r\n    private extractSitecoreFieldNames(expression: string): string[] {\r\n        return expression.match(CoveoForSitecoreSyntax.SITECORE_FIELD_NAME_REGEX);\r\n    }\r\n\r\n    private convertUnaryFieldExpressionToCoveoUnaryFieldExpression(unaryFieldExpression: string): string {\r\n        if (!this.fieldHandler.isCoveoFieldName(unaryFieldExpression)) {\r\n            return this.fieldHandler.toCoveo(unaryFieldExpression);\r\n        } else {\r\n            return unaryFieldExpression;\r\n        }\r\n    }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(CoveoForSitecoreSyntax);\r\n"],"sourceRoot":""}