{"version":3,"file":"hatool.mjs","sources":["../../../projects/hatool/src/lib/content-manager.ts","../../../projects/hatool/src/lib/content.service.ts","../../../projects/hatool/src/lib/script-runner-impl.ts","../../../projects/hatool/src/lib/script-runner.service.ts","../../../projects/hatool/src/lib/message-from/message-from.component.ts","../../../projects/hatool/src/lib/message-from/message-from.component.html","../../../projects/hatool/src/lib/message-to/message-to.component.ts","../../../projects/hatool/src/lib/message-to/message-to.component.html","../../../projects/hatool/src/lib/message-typing/message-typing.component.ts","../../../projects/hatool/src/lib/message-typing/message-typing.component.html","../../../projects/hatool/src/lib/message-options/message-options.component.ts","../../../projects/hatool/src/lib/message-options/message-options.component.html","../../../projects/hatool/src/lib/message-uploader/message-uploader.component.ts","../../../projects/hatool/src/lib/message-uploader/message-uploader.component.html","../../../projects/hatool/src/lib/message-multi-options/message-multi-options.component.ts","../../../projects/hatool/src/lib/message-multi-options/message-multi-options.component.html","../../../projects/hatool/src/lib/message-custom-component-aux.directive.ts","../../../projects/hatool/src/lib/message-custom-component/message-custom-component.component.ts","../../../projects/hatool/src/lib/message-custom-component/message-custom-component.component.html","../../../projects/hatool/src/lib/message-switch/message-switch.component.ts","../../../projects/hatool/src/lib/message-switch/message-switch.component.html","../../../projects/hatool/src/lib/messages/messages.component.ts","../../../projects/hatool/src/lib/messages/messages.component.html","../../../projects/hatool/src/lib/input/input.component.ts","../../../projects/hatool/src/lib/input/input.component.html","../../../projects/hatool/src/lib/chatbox/chatbox.component.ts","../../../projects/hatool/src/lib/chatbox/chatbox.component.html","../../../projects/hatool/src/lib/hatool.component.ts","../../../projects/hatool/src/lib/hatool.module.ts","../../../projects/hatool/src/public-api.ts","../../../projects/hatool/src/hatool.ts"],"sourcesContent":["import { Subject } from 'rxjs';\nimport { first as first_, tap, timestamp } from 'rxjs/operators';\nimport { Waitable } from './interfaces';\n\nexport class ContentManager {\n\n  public messages: any[] = [];\n  public revision = 0;\n  public visibleRevision = 0;\n\n  public inputs = new Subject<any>();\n  public updated = new Subject<any>();\n  public inputEnabled = false;\n  public textArea = false;\n  public inputKind = 'text';\n  public inputMin;\n  public inputMax;\n  public inputStep;\n  public inputSuggestions;\n  public inputRequired;\n  public placeholder = '';\n  public validator = null;\n  public fastScroll = false;\n  public scrollLock = false;\n  public fixme: () => void = null;\n  public debug = false;\n\n  public sendButtonText = 'Send';\n  public inputPlaceholder = 'Type something...';\n  public uploadFileText = 'Upload File...';\n  public uploadedFileText = 'Uploaded Successfully';\n  public notUploadedFileText = 'Failed to upload file';\n  public fixmeMessage = 'Fix';\n  public timeout = 1000;\n\n  toQueue = [];\n\n  constructor() { }\n\n  clear() {\n    this.messages = [];\n    this.toQueue = [];\n  }\n\n  reportValue(value) {\n    this.inputs.next(value);\n  }\n\n  reportUpdated(value) {\n    if (this.debug) {\n      console.log('CONTENT UPDATED', this.timeout);\n    }\n    if (this.timeout) {\n      window.setTimeout(() => {\n        this.updated.next(value);\n      }, this.timeout);\n    }\n  }\n\n  add(kind, params) {\n    const first = (\n      this.messages.length === 0 ||\n      kind !== this.messages[this.messages.length - 1].kind\n    );\n    const revision = this.revision;\n    this.messages.push({kind, params, first, revision});\n  }\n\n  queue(kind, params) {\n    this.toQueue.push({kind, params});\n    if (this.toQueue.length === 1) {\n      this.typing();\n    }\n  }\n\n  queueFunction(callable) {\n    return new Promise((resolve) => {\n      this.queue('function', {callable, resolve});\n    });\n  }\n\n  typing() {\n    if (this.debug) {\n      console.log('TYPING, queue len=' + this.toQueue.length);\n    }\n    if (this.toQueue.length > 0) {\n      const item = this.toQueue[0];\n      if (this.debug) {\n        console.log('item=', item);\n      }\n      if (item.kind === 'function') {\n        if (this.debug) {\n          console.log('RUNNING FUNCTION', item);\n        }\n        this.toQueue.shift();\n        const future = item.params.callable();\n        future.then((result) => {\n          if (this.debug) {\n            console.log('FUNCTION RESOLVED to', result, item);\n          }\n          item.params.resolve(result);\n          this.typing();\n        });\n      } else {\n        this.add('typing', null);\n        const callback = () => {\n          this.toQueue.shift();\n          if (this.debug) {\n            console.log('handling item=', item);\n          }\n          this.replace(item.kind, item.params);\n          this.typing();\n        };\n        let timeout = this.timeout;\n        if (this.toQueue.length > 0) {\n          let stepTimeout = this.toQueue[0].params.timeout;\n          if (stepTimeout || stepTimeout === 0) {\n            timeout = stepTimeout;\n          }\n        }\n        if (timeout === 0) {\n          callback();\n        } else {\n          window.setTimeout(() => {\n            callback();\n            this.reportUpdated(item);\n          }, timeout);\n        }\n      }\n    } else {\n      window.setTimeout(async () => {\n        this.reportUpdated(null);\n      }, this.timeout);\n    }\n  }\n\n  replace(kind, params) {\n    const first = (this.messages.length < 2 || kind !== this.messages[this.messages.length - 2].kind);\n    this.messages[this.messages.length - 1] = {kind, params, first};\n  }\n\n  addFrom(message: string) {\n    this.add('from', {message, fixme: this.fixme, fixmeMessage: this.fixmeMessage});\n  }\n\n  reportInput(value: string) {\n    this.reportValue(value);\n    this.reportUpdated(value);\n    this.textArea = false;\n    this.placeholder = '';\n    this.validator = null;\n  }\n\n  queueFrom(message: string, timeout?) {\n    this.queue('from', {message, fixme: this.fixme, fixmeMessage: this.fixmeMessage, timeout});\n  }\n\n  addTo(message: string, timeout?) {\n    this.queue('to', {message, timeout});\n  }\n\n  addOptions(message, options: any[], selected?: any, multi?: boolean) {\n    if (message) {\n      this.queue('to', {message});\n    }\n    this.queue('options', {options, selected, multi, fixme: this.fixme, fixmeMessage: this.fixmeMessage});\n  }\n\n  addUploader(message, options?: any) {\n    if (message) {\n      this.queue('to', {message});\n    }\n    this.queue('uploader', options);\n  }\n\n  addCustomComponent(step, wait, timeout?) {\n    return new Promise<void>((componentCreatedCallback) => {\n      this.queue('component', {\n        step,\n        timeout,\n        componentCreatedCallback: () => {\n          if (this.debug) {\n            console.log('CUSTOM COMPONENT CREATED', step);\n          }\n          return componentCreatedCallback();\n        }\n      });\n    }).then(() => {\n      if (wait) {\n        return this.queueFunction(() => {\n          return (step.__instance as Waitable).wait();\n        });\n      } else {\n        return;\n      }\n    });\n  }\n\n  setTextArea() {\n    this.textArea = true;\n  }\n\n  setInputKind(kind, required?, min?, max?, step?) {\n    this.inputKind = kind || 'text';\n    this.inputRequired = !!required,\n    this.inputMin = min === undefined ? null : min;\n    this.inputMax = max === undefined ? null : max;\n    this.inputStep = step === undefined ? null : step;\n  }\n\n  setInputSuggestions(suggestions: string[]) {\n    this.inputSuggestions = suggestions;\n  }\n\n  setPlaceholder(placeholder) {\n    this.placeholder = placeholder;\n  }\n\n  setValidator(validator) {\n    this.validator = validator;\n  }\n\n  setFixme(fixme: () => void) {\n    this.fixme = fixme;\n  }\n\n  setFastScroll(value: boolean) {\n    this.fastScroll = value;\n  }\n\n  setScrollLock(value: boolean) {\n    if (this.scrollLock !== value) {\n      this.scrollLock = value;\n      if (value) {\n        this.revision += 1;\n      } else {\n        this.visibleRevision = this.revision;\n        if (this.debug) {\n          console.log('SETTING VISIBLE REVISION', this.visibleRevision, 'LAST MESSAGE', this.messages[this.messages.length - 1]);\n        }\n      }\n    }\n  }\n\n  async waitForInput(enableTextInput?) {\n    enableTextInput = (enableTextInput !== false);\n    let activeElement: HTMLElement | null = null;\n    if (enableTextInput) {\n      await this.queueFunction(async () => {\n        if (this.debug) {\n          console.log('ENABLING INPUT');\n        }\n        activeElement = document.activeElement as HTMLElement;\n        this.inputEnabled = true;\n      });\n    }\n    return this.inputs.pipe(\n        first_(),\n        tap((value) => {\n          if (this.debug) {\n            console.log('DISABLING INPUT, value=', value);\n          }\n          this.inputEnabled = false;\n          console.log('FOCUSING', activeElement);\n          activeElement?.focus();\n        })\n      ).toPromise();\n  }\n\n  setQueueTimeout(timeout) {\n    let report = false;\n    if (this.timeout === 0 && timeout !== 0) {\n      report = true;\n    }\n    this.timeout = timeout;\n    if (report) {\n      this.reportUpdated(null);\n    }\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { first as first_ } from 'rxjs/operators';\nimport { ContentManager } from './content-manager';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ContentService {\n\n  public M = new ContentManager();\n\n}\n","import { CBType } from './script-runner-types';\nimport { HttpClient } from '@angular/common/http';\nimport { ContentManager } from './content-manager';\nimport { ScriptRunner } from './script-runner';\nimport { Observable, of } from 'rxjs';\nimport { switchMap, map } from 'rxjs/operators';\n\nexport class ScriptRunnerImpl implements ScriptRunner {\n    record = {};\n    context = {};\n    snippets: any = {};\n    setCallback: CBType;\n    runFastInternal = false;\n    lastMessage = '';\n    public debug = false;\n    public fixme: () => void = null;\n\n    // return from call and continue\n    public RETURN = 0;\n    // script has completed\n    public COMPLETE = -1;\n    // script requested to break and save state\n    public BREAK = -2;\n\n    public state = {};\n\n    public TIMEOUT = 1000;\n\n\n    constructor(private http: HttpClient,\n                private content: ContentManager,\n                private locale: string,\n                private customComponents: any[]= null) {\n        console.log('Running with locale', this.locale);\n    }\n\n    set timeout(value) {\n        this.TIMEOUT = value;\n    }\n\n    set runFast(value) {\n        this.runFastInternal = value;\n        this.content.setScrollLock(value);\n        window.setTimeout(() => {\n            this.content.setFastScroll(value);\n            if (!value) {\n                this.content.queueFunction(async () => {\n                    this.content.reportUpdated(null);\n                });\n            }\n        }, 0);\n    }\n\n    get runFast() {\n        return this.runFastInternal;\n    }\n\n    registerCustomComponents(customComponents: any[]) {\n        this.customComponents = customComponents;\n    }\n\n    i18n(obj) {\n        if (obj && obj['.tx']) {\n            if (this.locale && obj['.tx'][this.locale]) {\n                return obj['.tx'][this.locale];\n            } else {\n                return obj['.tx']._;\n            }\n        }\n        return obj;\n    }\n\n    get(obj: any, field) {\n        const parts = field.split('.');\n        for (const part of parts) {\n            obj = obj[part] || {};\n        }\n        if (obj.constructor !== Object || Object.entries(obj).length > 0) {\n            return obj;\n        }\n        return null;\n    }\n\n    getDefault(f) {\n        const ret = this.get(this.record, f);\n        if (ret) {\n            return ret + '';\n        } else {\n            return f;\n        }\n    }\n\n    fillIn(message: string) {\n        return message.trim().replace(\n            RegExp('(\\\\{\\\\{((\\\\p{L}|\\\\p{N}|_|\\\\.)+)\\\\}\\\\})', 'gum'),\n            (match, p1, p2) => {\n                return this.getDefault(p2);\n            }\n        );\n    }\n\n    run(urlOrScript: any,\n        index: any,\n        context: any,\n        setCallback?: CBType,\n        record?: any): Observable<any> {\n        this.context = context;\n        this.setCallback = setCallback || ((k, v) => null);\n        this.record = record || this.record;\n        this.runFast = this.state && Object.keys(this.state).length > 0;\n        if (this.runFast) {\n            this.content.setQueueTimeout(0);\n        } else {\n            this.content.setQueueTimeout(this.TIMEOUT);\n        }\n        if (this.debug) {\n            console.log('STATE:', this.state, Object.keys(this.state));\n            console.log('RUN FAST enabled:', this.runFast);\n        }\n        let fetcher = null;\n        if (urlOrScript.hasOwnProperty('s')) {\n            fetcher = of(urlOrScript);\n        } else {\n            fetcher = this.http.get(urlOrScript);\n        }\n        return fetcher.pipe(\n                switchMap((s: any) => {\n                    s = s.s[index];\n                    for (const snippet of s.snippets) {\n                        this.snippets[snippet.name] = snippet;\n                    }\n                    return this.runSnippet(this.snippets.default);\n                }),\n            );\n    }\n\n    check_res(res, snippet) {\n        if (this.debug) {\n            console.log('RETURN VALUE:', res);\n            console.log('CURRENT SNIPPET:', snippet);\n        }\n        if (('' + res).indexOf('pop:') === 0) {\n            if (!snippet.hasOwnProperty('name') || res.slice(4) !== snippet.name) {\n                return res;\n            }\n        } else if (res < 0) {\n            return res;\n        } else if (res > 0) {\n            if (snippet.name) {\n                return res - 1;\n            } else {\n                return res;\n            }\n        }\n        return 0;\n    }\n\n    isInState(key) {\n        return key && this.state.hasOwnProperty(key);\n    }\n\n    clearState(key) {\n        if (this.isInState(key)) {\n            delete this.state[key];\n        }\n    }\n\n    getState(key) {\n        return this.state[key];\n    }\n\n    setState(key, value) {\n        if (key) {\n            this.state[key] = value;\n        }\n    }\n\n    isCustomStep(step) {\n        if (step.__component) {\n            return true;\n        }\n        if (this.customComponents) {\n            for (const comp of this.customComponents) {\n                if (step.hasOwnProperty(comp.keyword)) {\n                    step.__component = comp;\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n\n    async doCommand(stepDo, uid?) {\n        let callable = this.context[stepDo.cmd];\n        const args = [];\n        if (stepDo.params) {\n            for (const param of stepDo.params) {\n                if (param === 'record') {\n                    args.push(this.record);\n                } else if (param === 'context') {\n                    args.push(this.context);\n                } else if (param === 'uploader') {\n                    this.content.addUploader(null);\n                    if (this.isInState(uid)) {\n                        callable = null;\n                        this.content.queueFrom('...');\n                        break;\n                    } else {\n                        args.push(await this.content.waitForInput(false));\n                        this.setState(uid, true);\n                    }\n                } else {\n                    args.push(this.i18n(param));\n                }\n            }\n        }\n        if (callable) {\n            const ret = await this.content.queueFunction(async () => {\n                const ret2 = await callable(...args);\n                return ret2;\n            });\n            if (this.debug) {\n                console.log('CALLABLE', stepDo.cmd, 'RETURNED', ret);\n            }\n            if (stepDo.variable) {\n                this.record[stepDo.variable] = ret;\n                await this.setCallback(stepDo.variable, ret, this.record);\n            }\n            return ret;\n        } else {\n            console.log(`ERROR: function ${stepDo.cmd} is not defined`);\n        }\n        return null;\n    }\n\n    async runSnippet(snippet) {\n        if (this.debug) {\n            console.log('RUN SNIPPET', snippet);\n        }\n        for (const step of snippet.steps) {\n            const uid = this.lastMessage + '-' + step.uid;\n            if (this.debug) {\n                console.log('STEP:', step);\n            }\n            if (step.hasOwnProperty('say')) {\n                const message = this.fillIn(this.i18n(step.say));\n                this.lastMessage = message;\n                this.content.addTo(message);\n            } else if (step.hasOwnProperty('wait')) {\n                let ret = null;\n                if (uid && this.fixme) {\n                    this.content.setFixme(() => {\n                        this.clearState(uid);\n                        this.fixme();\n                    });\n                }\n                if (step.wait.optionsFrom) {\n                    step.wait.options = this.record[step.wait.optionsFrom];\n                }\n                if (step.wait.options) {\n                    const options = [];\n                    for (const option of step.wait.options) {\n                        option.value = option.hasOwnProperty('value') ? option.value : option.show;\n                        option.value = option.value.hasOwnProperty('.tx') ? option.value['.tx']._ : option.value;\n                        const cOption = {\n                            display: this.i18n(option.show),\n                            value: option.value,\n                            field: option.field,\n                            class: option.class,\n                            echo: option.echo !== false,\n                            func: option.do ? (async () => await this.doCommand(option.do)) : null,\n                        };\n                        if (option.unless && this.record[option.unless]) {\n                            cOption.class = 'unless ' + (cOption.class || '');\n                        }\n                        options.push(cOption);\n                    }\n                    const multi = !!step.wait.multi;\n                    if (this.isInState(uid) && this.runFast) {\n                        ret = this.getState(uid);\n                        this.content.addOptions(null, options, ret, multi);\n                    } else {\n                        if (this.runFast) {\n                            if (this.debug) {\n                                console.log('RUN FAST TURNED OFF');\n                            }\n                            await this.content.queueFunction(async () => {\n                                this.content.setQueueTimeout(this.TIMEOUT);\n                                this.runFast = false;\n                            });\n                        }\n                        this.content.addOptions(null, options, null, multi);\n                        ret = await this.content.waitForInput(false);\n                        this.setState(uid, ret);\n                    }\n                    if (step.wait.variable) {\n                        this.record[step.wait.variable] = ret;\n                        await this.setCallback(step.wait.variable, ret, this.record);\n                    }\n                    for (const option of step.wait.options) {\n                        if (ret === option.value) {\n                            if (this.runFast && option.do) {\n                                await this.doCommand(option.do);\n                            }\n                            if (option.steps) {\n                                let res = await this.runSnippet(option);\n                                res = this.check_res(res, snippet);\n                                if (res !== 0) {\n                                    return res;\n                                }\n                            }\n                            break;\n                        }\n                    }\n                } else {\n                    if (!!step.wait.long) {\n                        this.content.setTextArea();\n                    }\n                    this.content.setInputKind(step.wait['input-kind'] || 'text',\n                        step.wait.required !== false,\n                        step.wait['input-min'], step.wait['input-max'], step.wait['input-step']);\n                    if (step.wait.suggestionsFrom) {\n                        step.wait.suggestions = this.record[step.wait.suggestionsFrom];\n                    }\n                    this.content.setInputSuggestions(step.wait.suggestions);\n                    if (!!step.wait.placeholder) {\n                        this.content.setPlaceholder(this.i18n(step.wait.placeholder));\n                    }\n                    if (!!step.wait.validation) {\n                        const vre = new RegExp('^' + step.wait.validation + '$');\n                        this.content.setValidator((x) => {\n                            return vre.test(x);\n                        });\n                    } else {\n                        this.content.setValidator((x) => true);\n                    }\n                    if (this.isInState(uid) && this.runFast) {\n                        ret = this.getState(uid);\n                    } else {\n                        if (this.runFast) {\n                            if (this.debug) {\n                                console.log('RUN FAST TURNED OFF');\n                            }\n                            await this.content.queueFunction(async () => {\n                                this.content.setQueueTimeout(this.TIMEOUT);\n                                this.runFast = false;\n                            });\n                        }\n                        this.content.queueFunction(async () => {\n                            this.content.reportUpdated(null);\n                        });\n                        ret = await this.content.waitForInput(true);\n                        this.setState(uid, ret);\n                    }\n                    this.record[step.wait.variable] = ret;\n                    let response = ret + '';\n                    if (step.wait.response && step.wait.response.length) {\n                        response = this.fillIn(step.wait.response);\n                    }\n                    if (this.debug) {\n                        console.log(`FORMATTED ${JSON.stringify(ret)} to \"${response}\" (using ${step.wait.response})`);\n                    }\n                    if (response.length) {\n                        this.content.queueFrom(response);\n                    }\n                    await this.setCallback(step.wait.variable, ret, this.record);\n                }\n                this.content.setFixme(null);\n            } else if (step.hasOwnProperty('do')) {\n                await this.doCommand(step.do, uid);\n            } else if (step.hasOwnProperty('switch')) {\n                const arg = step.switch.arg;\n                const value = this.get(this.record, arg);\n                if (this.debug) {\n                    console.log('SWITCH on value', value, '(', arg, ',', this.record, ')');\n                }\n                let selected = null;\n                let defaultCase = null;\n                for (const theCase of step.switch.cases) {\n                    if (this.debug) {\n                        console.log('CASE', theCase);\n                    }\n                    if (theCase.default) {\n                        if (this.debug) {\n                            console.log('CASE DEFAULT');\n                        }\n                        defaultCase = theCase;\n                    }\n                    if (theCase.hasOwnProperty('match') && theCase.match === value) {\n                        selected = theCase;\n                    } else if (theCase.hasOwnProperty('pattern') && RegExp(theCase.pattern).test(value)) {\n                        selected = theCase;\n                    } else if (theCase.hasOwnProperty('undefined') && theCase.undefined && (value === null || value === undefined)) {\n                        selected = theCase;\n                    }\n                }\n                if (this.debug) {\n                    console.log('CASE SELECTED', selected);\n                }\n                selected = selected || defaultCase;\n                if (selected) {\n                    if (selected.steps) {\n                        let res = await this.runSnippet(selected);\n                        res = this.check_res(res, snippet);\n                        if (res !== 0) {\n                            return res;\n                        }\n                    }\n                } else {\n                    console.log(`ERROR: no viable option for ${value} (${step.switch.arg}) in switch`);\n                }\n            } else if (step.hasOwnProperty('goto')) {\n                if (step.goto === 'complete') {\n                    return this.COMPLETE;\n                }\n                if (step.goto === 'break') {\n                    return this.BREAK;\n                }\n                if (step.goto === 'return') {\n                    return this.RETURN + 2;\n                }\n                const gotoSnippet = this.snippets[step.goto];\n                if (gotoSnippet) {\n                    let res = await this.runSnippet(gotoSnippet);\n                    res = this.check_res(res, snippet);\n                    if (res !== 0) {\n                        return res;\n                    }\n                } else {\n                    console.log(`ERROR: unknown snippet requested ${step.goto}`);\n                }\n            } else if (step.hasOwnProperty('pop')) {\n                return 'pop:' + step.pop;\n            } else if (this.isCustomStep(step)) {\n                step.__runner = this;\n                step.__runFast = this.runFast;\n                let ret = null;\n                if (this.isInState(uid) && this.runFast) {\n                    await this.content.addCustomComponent(step, false);\n                    ret = this.getState(uid);\n                } else {\n                    ret = await this.content.addCustomComponent(step, true, step.__component.timeout);\n                    this.setState(uid, ret);\n                }\n                if (ret) {\n                    this.content.queueFrom(ret, 0);\n                }\n            } else {\n                throw new Error(`Bad step ${JSON.stringify(step)}`);\n            }\n        }\n        return this.RETURN;\n    }\n}\n","import { Injectable, LOCALE_ID, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ContentService } from './content.service';\nimport { Observable } from 'rxjs';\nimport { CBType, EventCBType } from './script-runner-types';\nimport { ScriptRunnerImpl } from './script-runner-impl';\nimport { ScriptRunner } from './script-runner';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ScriptRunnerService implements ScriptRunner {\n\n  R: ScriptRunner;\n\n  constructor(private http: HttpClient,\n              private content: ContentService,\n              @Inject(LOCALE_ID) private locale) {\n    this.R = new ScriptRunnerImpl(http, content.M, this.locale);\n  }\n\n  public run(url, index, context, setCallback?: CBType, record?: any,\n             eventCallback?: EventCBType): Observable<void> {\n    return this.R.run(\n      url, index, context, setCallback, record,\n      eventCallback\n    );\n  }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ContentManager } from '../content-manager';\n\n@Component({\n  selector: 'htl-message-from',\n  templateUrl: './message-from.component.html',\n  styleUrls: ['./message-from.component.less']\n})\nexport class MessageFromComponent implements OnInit {\n\n  @Input() params: any;\n  @Input() first: boolean;\n  @Input() content: ContentManager;\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","<div [class.message-from-wrapper]='true' [class.first]='first'>\n  <p class='speech-bubble'>\n    <span>{{ params.message }}</span>\n  </p>\n  <a class='fixme' *ngIf='params.fixme' (click)='params.fixme()' [innerHTML]='params.fixmeMessage'></a>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ContentManager } from '../content-manager';\n\n@Component({\n  selector: 'htl-message-to',\n  templateUrl: './message-to.component.html',\n  styleUrls: ['./message-to.component.less']\n})\nexport class MessageToComponent implements OnInit {\n\n  @Input() params: any;\n  @Input() first: boolean;\n  @Input() content: ContentManager;\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","<div class='message-to-wrapper' [class.first]='first'>\n  <p class='speech-bubble'>\n    <span [innerHtml]='params.message'></span>\n  </p>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ContentManager } from '../content-manager';\n\n@Component({\n  selector: 'htl-message-typing',\n  templateUrl: './message-typing.component.html',\n  styleUrls: ['./message-typing.component.less']\n})\nexport class MessageTypingComponent implements OnInit {\n\n  @Input() content: ContentManager;\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","<div class=\"typing is-typing-init is-typing-active\">\n    <span class=\"typing__bullet\"></span>\n    <span class=\"typing__bullet\"></span>\n    <span class=\"typing__bullet\"></span>\n</div>\n","import { Component, OnInit, Input, AfterViewInit, Output, EventEmitter, ElementRef } from '@angular/core';\nimport { ContentService } from '../content.service';\nimport { ContentManager } from '../content-manager';\nimport { defer, from, Observable } from 'rxjs';\n\n@Component({\n  selector: 'htl-message-options',\n  templateUrl: './message-options.component.html',\n  styleUrls: ['./message-options.component.less']\n})\nexport class MessageOptionsComponent implements OnInit, AfterViewInit {\n\n  @Input() params: any;\n  @Input() content: ContentManager;\n\n  active = false;\n  enabled = true;\n  selected = null;\n  isSelected = false;\n  echoSelected = false;\n  private selectedJson: string;\n\n  constructor(private el: ElementRef) { }\n\n  ngOnInit() {\n    if (this.params.selected !== null && this.params.selected !== undefined) {\n      this.selected = this.params.selected;\n      this.isSelected = true;\n    }\n    this.selectedJson = JSON.stringify(this.selected);\n  }\n\n  get multi() {\n    return !!this.params.multi;\n  }\n\n  equalsSelected(value) {\n    return JSON.stringify(value) === this.selectedJson;\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      this.active = true;\n      if (!this.isSelected) {\n        // console.log('FOCUSING OPTIONS', this.el.nativeElement.querySelector('button'));\n        // this.el.nativeElement.querySelector('button').focus();\n      }\n    }, 0);\n  }\n\n  onSubmit(selected) {\n    const value = selected.value;\n    let obs: Observable<any> = null;\n    if (selected.func) {\n      obs = defer(selected.func);\n    } else {\n      obs = from([value]);\n    }\n    obs.subscribe((retVal) => {\n      if (retVal !== null) {\n        this.enabled = false;\n        this.selected = retVal;\n        this.isSelected = true;\n        this.echoSelected  = selected.echo;\n        this.selectedJson = JSON.stringify(this.selected);\n        this.content.reportValue(this.selected);\n      }\n    });\n  }\n}\n","<span class='options' [class.selected]='isSelected' role='group'>\n  <ng-container *ngFor='let option of params.options'>\n    <button (click)='onSubmit(option)' \n            (animationend)='content.reportUpdated(null)'\n            [disabled]='!enabled' \n            [class]='option.class || \"\"'\n            [class.active]='active'\n            [class.selected]='isSelected && equalsSelected(option.value)'\n            [class.echo]='option.echo'\n            [class.not-selected]='isSelected && !equalsSelected(option.value)'\n    ><span [innerHtml]='option.display'></span></button>\n  </ng-container>\n  <a class='fixme' *ngIf='params.fixme && echoSelected' (click)='params.fixme()' [innerHTML]='params.fixmeMessage'></a>\n</span>","import { Component, OnInit, ViewChild, ElementRef, Input } from '@angular/core';\nimport { ContentService } from '../content.service';\nimport { FileUploader } from '../interfaces';\nimport { ContentManager } from '../content-manager';\n\n@Component({\n  selector: 'htl-message-uploader',\n  templateUrl: './message-uploader.component.html',\n  styleUrls: ['./message-uploader.component.less']\n})\nexport class MessageUploaderComponent implements OnInit, FileUploader {\n\n  @Input() params: any;\n  @Input() content: ContentManager;\n  @ViewChild('file', { static: true }) file: ElementRef;\n\n  progressInternal = 0;\n  activeInternal = false;\n  successInternal = false;\n  selectedInternal = false;\n\n  selectedFile: File = null;\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n  addFiles() {\n    this.file.nativeElement.click();\n  }\n\n  onFilesAdded() {\n    const files: { [key: string]: File } = this.file.nativeElement.files;\n    for (const key in files) {\n      if (!isNaN(parseInt(key, 10))) {\n        this.selectedFile = files[key];\n        this.selectedInternal = true;\n        this.content.reportValue(this);\n        break;\n      }\n    }\n  }\n\n  set progress(progress) {\n    if (this.selectedInternal && this.activeInternal) {\n      this.progressInternal = progress;\n    }\n  }\n\n  set active(active) {\n    if (this.selectedInternal) {\n      this.activeInternal = active;\n    }\n  }\n\n  set success(success) {\n    if (this.activeInternal) {\n      this.successInternal = success;\n      this.activeInternal = false;\n      this.progressInternal = 100;\n    }\n  }\n}\n","<input type=\"file\" #file (change)=\"onFilesAdded()\" />\n<div class='button' (click)='addFiles()' \n     [class.selected]='selectedInternal'\n     [class.active]='activeInternal'\n     [class.success]='successInternal'\n     >\n    <div *ngIf='!activeInternal && !selectedInternal' class='message'>{{ content.uploadFileText }}</div>\n    <div *ngIf='activeInternal' class='message'>{{ selectedFile.name }}</div>\n    <div *ngIf='!activeInternal && selectedInternal && successInternal' class='message'>{{ content.uploadedFileText }}</div>\n    <div *ngIf='!activeInternal && selectedInternal && !successInternal' class='message'>{{ content.notUploadedFileText }}</div>\n    <div *ngIf='activeInternal' class='progress'>\n        <div class='bar' [style.left]='(progressInternal-100) + \"%\"'>\n        </div>\n    </div>\n</div>\n","import { Component, OnInit, Input, AfterViewInit, Output, EventEmitter } from '@angular/core';\nimport { ContentService } from '../content.service';\nimport { ContentManager } from '../content-manager';\n\n@Component({\n  selector: 'htl-message-multi-options',\n  templateUrl: './message-multi-options.component.html',\n  styleUrls: ['./message-multi-options.component.less']\n})\nexport class MessageMultiOptionsComponent implements OnInit, AfterViewInit {\n\n  @Input() params: any;\n  @Input() content: ContentManager;\n\n  active = false;\n  enabled = true;\n  selected = false;\n  checked = false;\n  value = null;\n\n  constructor() { }\n\n  ngOnInit() {\n    this.value = this.params.selected || {};\n    this.selected = !!this.params.selected;\n    this.checkChecked();\n  }\n\n  get multi() {\n    return !!this.params.multi;\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      this.active = true;\n      this.content.reportUpdated(null);\n    }, 0);\n  }\n\n  toggle(field) {\n    this.value[field] = !this.value[field];\n    this.checkChecked();\n  }\n\n  onSubmit() {\n    this.enabled = false;\n    this.selected = true;\n    this.content.reportValue(this.value);\n  }\n\n  checkChecked() {\n    this.checked = Object.values(this.value).indexOf(true) >= 0;\n  }\n}\n","<span class='options' [class.selected]='selected' [class.checked]='checked'>\n  <ng-container *ngFor='let option of params.options'>\n    <button (click)='option.field ? toggle(option.field) : onSubmit()' \n            (animationend)='content.reportUpdated(null)'\n            [disabled]='!enabled' \n            [class]='option.class || \"\"'\n            [class.active]='active'\n            [class.selected]='!!value[option.field]'\n            [class.echo]='option.echo'\n            [class.not-selected]='selected && !value[option.field]'\n    ><span [innerHtml]='option.display'></span></button>\n  </ng-container>\n  <a class='fixme' *ngIf='params.fixme' (click)='params.fixme()' [innerHTML]='params.fixmeMessage'></a>\n</span>","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[htlMessageCustomComponentAux]'\n})\nexport class MessageCustomComponentAuxDirective {\n\n  constructor(public viewContainerRef: ViewContainerRef) { }\n\n}\n","import { Component, ComponentFactoryResolver, Input, OnInit, ViewChild } from '@angular/core';\nimport { ContentManager } from '../content-manager';\nimport { MessageCustomComponentAuxDirective } from '../message-custom-component-aux.directive';\n\n@Component({\n  selector: 'htl-message-custom-component',\n  templateUrl: './message-custom-component.component.html',\n  styleUrls: ['./message-custom-component.component.less']\n})\nexport class MessageCustomComponentComponent implements OnInit {\n\n  @Input() content: ContentManager;\n  @Input() params: any;\n\n  @ViewChild(MessageCustomComponentAuxDirective, { static: true }) inner: MessageCustomComponentAuxDirective;\n\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) { }\n\n  ngOnInit(): void {\n    const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.params.step.__component.cls);\n\n    const viewContainerRef = this.inner.viewContainerRef;\n    viewContainerRef.clear();\n\n    const componentRef = viewContainerRef.createComponent<any>(componentFactory);\n    componentRef.instance.content = this.content;\n    componentRef.instance.params = this.params.step;\n    this.params.step.__instance = componentRef.instance;\n    this.params.componentCreatedCallback();\n  }\n\n}\n","<ng-template htlMessageCustomComponentAux></ng-template>","import { Component, Input, OnInit } from '@angular/core';\nimport { ContentManager } from '../content-manager';\n\n@Component({\n  selector: 'htl-message-switch',\n  templateUrl: './message-switch.component.html',\n  styleUrls: ['./message-switch.component.less']\n})\nexport class MessageSwitchComponent implements OnInit {\n\n  @Input() content: ContentManager;\n  @Input() item: any;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<htl-message-from [content]='content' *ngIf='item.kind==\"from\"' [params]='item.params' [first]='item.first'></htl-message-from>\n<htl-message-to [content]='content' *ngIf='item.kind==\"to\"' [params]='item.params' [first]='item.first'></htl-message-to>\n<htl-message-typing [content]='content' *ngIf='item.kind==\"typing\"'></htl-message-typing>\n<htl-message-options [content]='content' *ngIf='item.kind==\"options\" && !item.params.multi'\n                     [params]='item.params'></htl-message-options>\n<htl-message-multi-options [content]='content' *ngIf='item.kind==\"options\" && !!item.params.multi'\n                           [params]='item.params'></htl-message-multi-options>\n<htl-message-uploader [content]='content' *ngIf='item.kind==\"uploader\"' [params]='item.params'></htl-message-uploader>\n<htl-message-custom-component [content]='content' *ngIf='item.kind==\"component\"' [params]='item.params'></htl-message-custom-component>\n","import { Component, OnInit, OnChanges, ViewChild, ElementRef, Input, HostListener } from '@angular/core';\nimport { ContentService } from '../content.service';\nimport { ContentManager } from '../content-manager';\nimport { Subscription } from 'rxjs';\n\n@Component({\n  selector: 'htl-messages',\n  templateUrl: './messages.component.html',\n  styleUrls: ['./messages.component.less']\n})\nexport class MessagesComponent implements OnInit, OnChanges {\n\n  @ViewChild('container', { static: true }) container: ElementRef;\n  @Input() content: ContentManager;\n\n  updatedSub: Subscription;\n\n  constructor() {\n  }\n\n  @HostListener('window:resize', ['$event'])\n  resize(e) {\n    this.updateScroll();\n  }\n\n  updateScroll() {\n    setTimeout(() => {\n      const el: HTMLElement = this.container.nativeElement;\n      if (this.content.debug) {\n        console.log('SCROLLING TO BOTTOM');\n      }\n      el.scrollTo({left: 0, top: el.scrollHeight, behavior: this.content.fastScroll ? 'auto' : 'smooth' });\n    }, 0);\n  }\n\n  ngOnInit() {\n  }\n\n  ngOnChanges() {\n    if (this.updatedSub) {\n      this.updatedSub.unsubscribe();\n    }\n    this.updatedSub = this.content.updated.subscribe(() => {\n      this.updateScroll();\n    });\n  }\n}\n","<div class='container' [class.fast-scroll]='content.fastScroll' [class.scroll-lock]='content.scrollLock' #container>\n  <ng-container *ngFor='let item of content.messages'>\n    <htl-message-switch [content]='content' [item]='item'\n                        [style.display]='content.visibleRevision < item.revision ? \"none\" : \"block\"'>\n    ></htl-message-switch>\n  </ng-container>\n</div>","import { Component, OnInit, Input, ViewChild, ElementRef, OnChanges } from '@angular/core';\nimport { ContentService } from '../content.service';\nimport { ContentManager } from '../content-manager';\n\n@Component({\n  selector: 'htl-input',\n  templateUrl: './input.component.html',\n  styleUrls: ['./input.component.less']\n})\nexport class InputComponent implements OnInit, OnChanges {\n\n  @Input() content: ContentManager;\n  @Input() inputEnabled: boolean;\n  @Input() textArea: boolean;\n  @Input() inputKind: string;\n  @Input() inputMin;\n  @Input() inputMax;\n  @Input() inputStep;\n  @Input() placeholder: string;\n  @Input() inputRequired = true;\n  @Input() suggestions: string[] = null;\n  @Input() validator: (arg: any) => boolean;\n  @ViewChild('input') input: ElementRef;\n\n  visibleSuggestions: string[][] = null;\n  comparer: (x: string, y: string) => number;\n\n  value = null;\n  valid = true;\n\n  constructor() {\n    try {\n      const collator = new Intl.Collator(['he', 'en', 'ru', 'ar', 'fr', 'es'], {sensitivity: 'base'});\n      this.comparer = collator.compare;\n    } catch (e) {\n      this.comparer = (x: string, y: string) => x.toUpperCase() === y.toUpperCase() ? 0 : 1;\n    }\n  }\n\n  ngOnInit() {\n    setTimeout(() => {\n      this.validate();\n    }, 0);\n  }\n\n  ngOnChanges() {\n    window.setTimeout(() => {\n      if (this.input) {\n        const el: HTMLElement = this.input.nativeElement;\n        if (el) {\n          el.focus();\n        }\n      }\n    }, 0);\n  }\n\n  onSubmit() {\n    const el = this.input.nativeElement;\n    this.value = el.value;\n    this.visibleSuggestions = null;\n    el.value = '';\n    this.content.reportInput(this.value);\n  }\n\n  updateSuggestions(value) {\n    if (this.suggestions && this.suggestions.length && value.length > 1) {\n      this.visibleSuggestions = [];\n      const prefixLength = value.length;\n      for (const suggestion of this.suggestions) {\n        const prefix = suggestion.slice(0, prefixLength);\n        if (this.comparer(value, prefix) === 0) {\n          this.visibleSuggestions.push([prefix, suggestion.slice(prefixLength)]);\n        }\n      }\n    } else {\n      this.visibleSuggestions = null;\n    }\n  }\n\n  selectSuggestion(value, event?) {\n    value = value[0] + value[1];\n    if (this.input) {\n      this.input.nativeElement.value = value;\n      this.validate();\n      if (this.valid) {\n        this.onSubmit();\n        this.visibleSuggestions = null;\n      }\n    }\n    if (event) {\n      event.preventDefault();\n    }\n  }\n\n  validate() {\n    if (this.input) {\n      const value = this.input.nativeElement.value;\n      this.updateSuggestions(value);\n      this.valid = !this.inputRequired || !!value;\n      if (!this.valid) {\n        console.log('invalid as inputRequired=' + this.inputRequired + ', value=' + value);\n        return false;\n      }\n      this.valid = (!this.input.nativeElement.validity || this.input.nativeElement.validity.valid);\n      if (!this.valid) {\n        console.log('invalid as nativeElement.validity=' + this.input.nativeElement.validity +\n                    ', validity.valid=' + this.input.nativeElement.validity.valid);\n        return false;\n      }\n      this.valid = (!this.validator || this.validator(value));\n      if (!this.valid) {\n        console.log('invalid as validator=' + this.validator + ', validator(value)=' + this.validator(value));\n        return false;\n      }\n    } else {\n      this.valid = !this.validator || this.validator('');\n      if (!this.valid) {\n        console.log('invalid as validator=' + this.validator + ', validator(\"\")=' + this.validator(''));\n        return false;\n      }\n    }\n    return this.valid;\n  }\n}\n","<ng-container *ngIf='textArea && inputEnabled'>\n    <div class='textarea'>\n      <textarea rows='4' #input autofocus (keyup)='validate()' (change)='validate()'\n                [placeholder]='placeholder || content.inputPlaceholder'\n      ></textarea>\n      <button (click)='onSubmit()' [innerHTML]='content.sendButtonText' [disabled]='!valid'></button>\n    </div>\n</ng-container>\n<ng-container *ngIf='!textArea || !inputEnabled'>\n    <div class='suggestions-wrapper' *ngIf='visibleSuggestions && visibleSuggestions.length > 0'>\n      <div class='suggestions'>\n        <span class='suggestion' *ngFor='let suggestion of visibleSuggestions'\n             (click)='selectSuggestion(suggestion)' (touchstart)='selectSuggestion(suggestion, $event)'>\n          <strong>{{ suggestion[0] }}</strong>{{ suggestion[1] }}\n        </span>\n      </div>\n    </div>\n    <div class='input' *ngIf='inputEnabled' [class.invalid]='!valid'>\n      <input [type]='inputKind' #input (keyup)='validate() && ($event.keyCode == 13) && onSubmit()' (change)='validate()'\n            [attr.min]='inputMin' [attr.max]='inputMax' [attr.step]='inputStep'\n            [disabled]='!inputEnabled' [placeholder]='placeholder || content.inputPlaceholder'             \n            autofocus />\n      <button [disabled]='!valid' (click)='onSubmit()' [innerHTML]='content.sendButtonText' aria-label='SEND'></button>\n    </div>\n</ng-container>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ContentManager } from '../content-manager';\n\n@Component({\n  selector: 'htl-chatbox',\n  templateUrl: './chatbox.component.html',\n  styleUrls: ['./chatbox.component.less']\n})\nexport class ChatboxComponent implements OnInit {\n\n  @Input() content: ContentManager;\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","<htl-messages [content]='content'></htl-messages>\n<htl-input [inputEnabled]='content.inputEnabled' [textArea]='content.textArea'\n           [inputKind]='content.inputKind' [inputMin]='content.inputMin' [inputMax]='content.inputMax' [inputStep]='content.inputStep'\n           [inputRequired]='content.inputRequired' [suggestions]='content.inputSuggestions'\n           [content]='content' [placeholder]='content.placeholder' [validator]='content.validator'\n           [class.enabled]='content.inputEnabled'\n></htl-input>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ContentService } from './content.service';\nimport { ContentManager } from './content-manager';\n\n@Component({\n  selector: 'htl-hatool',\n  template: `\n      <htl-chatbox [content]='content'></htl-chatbox>\n  `,\n  styleUrls: ['./hatool.component.less']\n})\nexport class HatoolLibComponent implements OnInit {\n\n  @Input() content: ContentManager;\n\n  constructor(private contentService: ContentService) { }\n\n  ngOnInit() {\n    this.content = this.content ? this.content : this.contentService.M;\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { HatoolLibComponent } from './hatool.component';\nimport { ChatboxComponent } from './chatbox/chatbox.component';\nimport { MessagesComponent } from './messages/messages.component';\nimport { InputComponent } from './input/input.component';\nimport { MessageFromComponent } from './message-from/message-from.component';\nimport { MessageToComponent } from './message-to/message-to.component';\nimport { MessageTypingComponent } from './message-typing/message-typing.component';\nimport { MessageOptionsComponent } from './message-options/message-options.component';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { MessageUploaderComponent } from './message-uploader/message-uploader.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { MessageMultiOptionsComponent } from './message-multi-options/message-multi-options.component';\nimport { MessageCustomComponentComponent } from './message-custom-component/message-custom-component.component';\nimport { MessageCustomComponentAuxDirective } from './message-custom-component-aux.directive';\nimport { MessageSwitchComponent } from './message-switch/message-switch.component';\n\n@NgModule({\n  declarations: [\n    HatoolLibComponent,\n    ChatboxComponent,\n    MessagesComponent,\n    InputComponent,\n    MessageFromComponent,\n    MessageToComponent,\n    MessageTypingComponent,\n    MessageOptionsComponent,\n    MessageUploaderComponent,\n    MessageMultiOptionsComponent,\n    MessageCustomComponentComponent,\n    MessageCustomComponentAuxDirective,\n    MessageSwitchComponent,\n  ],\n  imports: [\n    BrowserModule,\n    HttpClientModule\n  ],\n  exports: [HatoolLibComponent]\n})\nexport class HatoolLibModule { }\n","/*\n * Public API Surface of hatool\n */\n\nexport * from './lib/content.service';\nexport * from './lib/content-manager';\nexport * from './lib/script-runner.service';\nexport * from './lib/script-runner-impl';\nexport * from './lib/hatool.component';\nexport * from './lib/hatool.module';\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["first_","i1","i1.MessageCustomComponentAuxDirective","i2.MessageFromComponent","i3.MessageToComponent","i4.MessageTypingComponent","i5.MessageOptionsComponent","i6.MessageUploaderComponent","i7.MessageMultiOptionsComponent","i8.MessageCustomComponentComponent","i2.MessageSwitchComponent","i1.MessagesComponent","i2.InputComponent","i1.ContentService","i2.ChatboxComponent"],"mappings":"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"}