@nyaruka/temba-components 0.120.6 → 0.120.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/static/svg/index.svg +1 -1
- package/dist/temba-components.js +5 -5
- package/dist/temba-components.js.map +1 -1
- package/out-tsc/src/completion/helpers.js +6 -4
- package/out-tsc/src/completion/helpers.js.map +1 -1
- package/out-tsc/src/store/Store.js +8 -0
- package/out-tsc/src/store/Store.js.map +1 -1
- package/out-tsc/src/vectoricon/index.js +10 -15
- package/out-tsc/src/vectoricon/index.js.map +1 -1
- package/package.json +1 -1
- package/src/completion/helpers.ts +11 -8
- package/src/store/Store.ts +8 -0
- package/src/vectoricon/index.ts +12 -16
- package/static/svg/index.svg +1 -1
- package/static/svg/packs/5-ai/azure.svg +1 -0
- package/static/svg/work/traced/azure.svg +1 -0
- package/static/svg/work/used/azure.svg +1 -0
- package/static/svg/legacy/1-feather/luis.svg +0 -6
- package/static/svg/packs/2-temba/zendesk.svg +0 -5
- package/static/svg/packs/4-classifiers/classifier-bothub.svg +0 -10
- package/static/svg/packs/4-classifiers/classifier-luis.svg +0 -6
- package/static/svg/work/traced/classifier-bothub.svg +0 -1
- package/static/svg/work/traced/classifier-luis.svg +0 -1
- package/static/svg/work/traced/zendesk.svg +0 -1
- package/static/svg/work/used/classifier-bothub.svg +0 -10
- package/static/svg/work/used/classifier-luis.svg +0 -6
- package/static/svg/work/used/zendesk.svg +0 -5
|
@@ -11,6 +11,7 @@ const sessionParser = new ExcellentParser('@', [
|
|
|
11
11
|
'contact',
|
|
12
12
|
'fields',
|
|
13
13
|
'globals',
|
|
14
|
+
'locals',
|
|
14
15
|
'urns',
|
|
15
16
|
'results',
|
|
16
17
|
'input',
|
|
@@ -69,7 +70,7 @@ export const getFunctions = (functions, query) => {
|
|
|
69
70
|
* Takes a dot query and returns the completions options at the current level
|
|
70
71
|
* @param dotQuery query such as "contact.first_n"
|
|
71
72
|
*/
|
|
72
|
-
export const getCompletions = (schema, dotQuery,
|
|
73
|
+
export const getCompletions = (schema, dotQuery, session, store) => {
|
|
73
74
|
const parts = (dotQuery || '').split('.');
|
|
74
75
|
let currentProps = session
|
|
75
76
|
? schema.root
|
|
@@ -94,8 +95,9 @@ export const getCompletions = (schema, dotQuery, keyedAssets = {}, session) => {
|
|
|
94
95
|
else if (nextType && nextType.property_template) {
|
|
95
96
|
prefix += part + '.';
|
|
96
97
|
const template = nextType.property_template;
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
const keys = store.getCompletions(nextType.name);
|
|
99
|
+
if (keys) {
|
|
100
|
+
currentProps = keys.map((key) => ({
|
|
99
101
|
key: template.key.replace('{key}', key),
|
|
100
102
|
help: template.help.replace('{key}', key),
|
|
101
103
|
type: template.type
|
|
@@ -258,7 +260,7 @@ export const executeCompletionQuery = (ele, store, session) => {
|
|
|
258
260
|
};
|
|
259
261
|
result.query = currentExpression.text.substr(i, currentExpression.text.length - i);
|
|
260
262
|
result.options = [
|
|
261
|
-
...getCompletions(store.getCompletionSchema(), result.query,
|
|
263
|
+
...getCompletions(store.getCompletionSchema(), result.query, session, store),
|
|
262
264
|
...(includeFunctions
|
|
263
265
|
? getFunctions(store.getFunctions(), result.query)
|
|
264
266
|
: [])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/completion/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit';\n\nimport ExcellentParser, { Expression } from './ExcellentParser';\nimport {\n CompletionOption,\n CompletionProperty,\n CompletionResult,\n CompletionSchema,\n CompletionType,\n KeyedAssets\n} from '../interfaces';\nimport { Store } from '../store/Store';\nimport { renderMarkdown } from '../markdown';\n\nconst messageParser = new ExcellentParser('@', [\n 'contact',\n 'fields',\n 'globals',\n 'urns'\n]);\n\nconst sessionParser = new ExcellentParser('@', [\n 'contact',\n 'fields',\n 'globals',\n 'urns',\n 'results',\n 'input',\n 'run',\n 'child',\n 'parent',\n 'node',\n 'webhook',\n 'ticket',\n 'trigger',\n 'resume'\n]);\n\nexport const renderCompletionOption = (\n option: CompletionOption,\n selected: boolean\n): TemplateResult => {\n if (option.signature) {\n const argStart = option.signature.indexOf('(');\n const name = option.signature.substr(0, argStart);\n const args = option.signature.substr(argStart);\n\n return html`\n <div style=\"${selected ? 'font-weight: 400' : ''}\">\n <div style=\"display:inline-block;margin-right: 5px\">ƒ</div>\n <div style=\"display:inline-block\">${name}</div>\n ${selected\n ? html`\n <div\n style=\"display:inline-block; font-weight: 300; font-size: 85%\"\n >\n ${args}\n </div>\n <div class=\"detail\">${renderMarkdown(option.summary)}</div>\n `\n : null}\n </div>\n `;\n }\n\n return html`\n <div>\n <div style=\"${selected ? 'font-weight: 400' : ''}\">${option.name}</div>\n ${selected\n ? html` <div style=\"font-size: 85%\">${option.summary}</div> `\n : null}\n </div>\n `;\n};\n\nexport const getFunctions = (\n functions: CompletionOption[],\n query: string\n): CompletionOption[] => {\n if (!query) {\n return functions;\n }\n return functions.filter((option: CompletionOption) => {\n if (option.signature) {\n return option.signature.indexOf((query || '').toLowerCase()) === 0;\n }\n return false;\n });\n};\n\n/**\n * Takes a dot query and returns the completions options at the current level\n * @param dotQuery query such as \"contact.first_n\"\n */\nexport const getCompletions = (\n schema: CompletionSchema,\n dotQuery: string,\n keyedAssets: KeyedAssets = {},\n session: boolean\n): CompletionOption[] => {\n const parts = (dotQuery || '').split('.');\n let currentProps: CompletionProperty[] = session\n ? schema.root\n : schema.root_no_session;\n\n if (!currentProps) {\n return [];\n }\n\n let prefix = '';\n let part = '';\n while (parts.length > 0) {\n part = parts.shift();\n if (part) {\n // eslint-disable-next-line\n const nextProp = currentProps.find(\n (prop: CompletionProperty) => prop.key === part\n );\n if (nextProp) {\n // eslint-disable-next-line\n const nextType = schema.types.find(\n (type: CompletionType) => type.name === nextProp.type\n );\n if (nextType && nextType.properties) {\n currentProps = nextType.properties;\n prefix += part + '.';\n } else if (nextType && nextType.property_template) {\n prefix += part + '.';\n const template = nextType.property_template;\n if (keyedAssets[nextType.name]) {\n currentProps = keyedAssets[nextType.name].map((key: string) => ({\n key: template.key.replace('{key}', key),\n help: template.help.replace('{key}', key),\n type: template.type\n }));\n } else {\n currentProps = [];\n }\n } else {\n // eslint-disable-next-line\n currentProps = currentProps.filter((prop: CompletionProperty) =>\n prop.key.startsWith(part.toLowerCase())\n );\n break;\n }\n } else {\n // eslint-disable-next-line\n currentProps = currentProps.filter((prop: CompletionProperty) =>\n prop.key.startsWith(part.toLowerCase())\n );\n break;\n }\n }\n }\n\n return currentProps.map((prop: CompletionProperty) => {\n const name =\n prop.key === '__default__'\n ? prefix.substr(0, prefix.length - 1)\n : prefix + prop.key;\n return { name, summary: prop.help };\n });\n};\n\nexport const getOffset = (el: HTMLElement) => {\n const rect = el.getBoundingClientRect(),\n scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,\n scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft };\n};\n\nexport const getVerticalScroll = (ele: Node) => {\n let current = ele;\n const verticalScroll = 0;\n while (current) {\n current = current.parentNode;\n }\n return verticalScroll;\n};\n\nexport const getCompletionName = (option: CompletionOption): string => {\n return (\n option.name || option.signature.substr(0, option.signature.indexOf('('))\n );\n};\n\nexport const getCompletionSignature = (option: CompletionOption): string => {\n return option.signature.substr(option.signature.indexOf('('));\n};\n\n/**\n * Determines the pixel position of position inside a textarea or input\n * TODO: Explore somethign like contenteditable to avoid this madness\n * see: https://jh3y.medium.com/how-to-where-s-the-caret-getting-the-xy-position-of-the-caret-a24ba372990a\n */\nconst getCursorXY = (input, selectionPoint) => {\n const { offsetLeft: inputX, offsetTop: inputY } = input;\n const div = document.createElement('div');\n const copyStyle = getComputedStyle(input);\n for (const prop of copyStyle) {\n div.style[prop] = copyStyle[prop];\n }\n div.style.position = 'relative';\n const swap = '.';\n const inputValue =\n input.tagName === 'INPUT' ? input.value.replace(/ /g, swap) : input.value;\n const textContent = inputValue.substr(0, selectionPoint);\n div.textContent = textContent;\n if (input.tagName === 'TEXTAREA') div.style.height = 'auto';\n if (input.tagName === 'INPUT') div.style.width = 'auto';\n const span = document.createElement('span');\n span.textContent = inputValue.substr(selectionPoint) || '.';\n div.appendChild(span);\n document.body.appendChild(div);\n const { offsetLeft: spanX, offsetTop: spanY } = span;\n document.body.removeChild(div);\n return {\n left: inputX + spanX,\n top: inputY + spanY\n };\n};\n\nexport const updateInputElementWithCompletion = (\n currentQuery: string,\n ele: HTMLInputElement,\n option: CompletionOption\n) => {\n let insertText = '';\n\n if (option.signature) {\n // they selected a function\n insertText = option.signature.substr(0, option.signature.indexOf('(') + 1);\n } else {\n insertText = option.name;\n }\n\n const queryLength = currentQuery.length;\n\n if (ele) {\n const value = ele.value;\n const insertionPoint = ele.selectionStart - queryLength;\n\n // strip out our query\n // const insertionPoint = value.lastIndexOf(value.substring(0, this.inputElement.selectionStart));\n const leftSide = value.substr(0, insertionPoint);\n const remaining = value.substr(insertionPoint + queryLength);\n const caret = leftSide.length + insertText.length;\n\n // set our value and our new caret\n ele.value = leftSide + insertText + remaining;\n ele.setSelectionRange(caret, caret);\n\n // now scroll our text box if necessary\n const position = getCursorXY(ele, caret);\n if (position.left > ele.width) {\n ele.scrollLeft = position.left;\n }\n\n ele.dispatchEvent(new Event('input'));\n }\n};\n\nexport const executeCompletionQuery = (\n ele: HTMLInputElement,\n store: Store,\n session: boolean\n): CompletionResult => {\n const result: CompletionResult = {\n currentFunction: null,\n options: [],\n anchorPosition: null,\n query: null\n };\n\n if (!ele) {\n return;\n }\n\n // we need a store to do anything useful\n if (!store) {\n return result;\n }\n\n const cursor = ele.selectionStart;\n const input = ele.value.substring(0, cursor);\n\n const parser = session ? sessionParser : messageParser;\n const expressions = parser.findExpressions(input);\n const currentExpression = expressions.find(\n (expr: Expression) =>\n expr.start <= cursor &&\n (expr.end > cursor || (expr.end === cursor && !expr.closed))\n );\n\n if (currentExpression) {\n const includeFunctions = currentExpression.text.indexOf('(') > -1;\n if (includeFunctions) {\n const functionQuery = parser.functionContext(currentExpression.text);\n if (functionQuery) {\n const fns = getFunctions(store.getFunctions(), functionQuery);\n if (fns.length > 0) {\n result.currentFunction = fns[0];\n }\n }\n }\n\n for (let i = currentExpression.text.length; i >= 0; i--) {\n const curr = currentExpression.text[i];\n if (\n curr === '@' ||\n curr === '(' ||\n curr === ' ' ||\n curr === ',' ||\n curr === ')' ||\n i === 0\n ) {\n // don't include non-expression chars\n if (\n curr === '(' ||\n curr === ' ' ||\n curr === ',' ||\n curr === ')' ||\n curr === '@'\n ) {\n i++;\n }\n\n const caret = getCursorXY(ele, currentExpression.start + i);\n\n result.anchorPosition = {\n left: caret.left - 2 - ele.scrollLeft,\n top: caret.top - ele.scrollTop\n };\n\n result.query = currentExpression.text.substr(\n i,\n currentExpression.text.length - i\n );\n\n result.options = [\n ...getCompletions(\n store.getCompletionSchema(),\n result.query,\n store.getKeyedAssets(),\n session\n ),\n ...(includeFunctions\n ? getFunctions(store.getFunctions(), result.query)\n : [])\n ];\n\n return result;\n }\n }\n } else {\n result.options = [];\n result.query = '';\n }\n return result;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/completion/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit';\n\nimport ExcellentParser, { Expression } from './ExcellentParser';\nimport {\n CompletionOption,\n CompletionProperty,\n CompletionResult,\n CompletionSchema,\n CompletionType\n} from '../interfaces';\nimport { Store } from '../store/Store';\nimport { renderMarkdown } from '../markdown';\n\nconst messageParser = new ExcellentParser('@', [\n 'contact',\n 'fields',\n 'globals',\n 'urns'\n]);\n\nconst sessionParser = new ExcellentParser('@', [\n 'contact',\n 'fields',\n 'globals',\n 'locals',\n 'urns',\n 'results',\n 'input',\n 'run',\n 'child',\n 'parent',\n 'node',\n 'webhook',\n 'ticket',\n 'trigger',\n 'resume'\n]);\n\nexport const renderCompletionOption = (\n option: CompletionOption,\n selected: boolean\n): TemplateResult => {\n if (option.signature) {\n const argStart = option.signature.indexOf('(');\n const name = option.signature.substr(0, argStart);\n const args = option.signature.substr(argStart);\n\n return html`\n <div style=\"${selected ? 'font-weight: 400' : ''}\">\n <div style=\"display:inline-block;margin-right: 5px\">ƒ</div>\n <div style=\"display:inline-block\">${name}</div>\n ${selected\n ? html`\n <div\n style=\"display:inline-block; font-weight: 300; font-size: 85%\"\n >\n ${args}\n </div>\n <div class=\"detail\">${renderMarkdown(option.summary)}</div>\n `\n : null}\n </div>\n `;\n }\n\n return html`\n <div>\n <div style=\"${selected ? 'font-weight: 400' : ''}\">${option.name}</div>\n ${selected\n ? html` <div style=\"font-size: 85%\">${option.summary}</div> `\n : null}\n </div>\n `;\n};\n\nexport const getFunctions = (\n functions: CompletionOption[],\n query: string\n): CompletionOption[] => {\n if (!query) {\n return functions;\n }\n return functions.filter((option: CompletionOption) => {\n if (option.signature) {\n return option.signature.indexOf((query || '').toLowerCase()) === 0;\n }\n return false;\n });\n};\n\n/**\n * Takes a dot query and returns the completions options at the current level\n * @param dotQuery query such as \"contact.first_n\"\n */\nexport const getCompletions = (\n schema: CompletionSchema,\n dotQuery: string,\n session: boolean,\n store: Store\n): CompletionOption[] => {\n const parts = (dotQuery || '').split('.');\n let currentProps: CompletionProperty[] = session\n ? schema.root\n : schema.root_no_session;\n\n if (!currentProps) {\n return [];\n }\n\n let prefix = '';\n let part = '';\n while (parts.length > 0) {\n part = parts.shift();\n if (part) {\n // eslint-disable-next-line\n const nextProp = currentProps.find(\n (prop: CompletionProperty) => prop.key === part\n );\n if (nextProp) {\n // eslint-disable-next-line\n const nextType = schema.types.find(\n (type: CompletionType) => type.name === nextProp.type\n );\n if (nextType && nextType.properties) {\n currentProps = nextType.properties;\n prefix += part + '.';\n } else if (nextType && nextType.property_template) {\n prefix += part + '.';\n const template = nextType.property_template;\n\n const keys = store.getCompletions(nextType.name);\n if (keys) {\n currentProps = keys.map((key: string) => ({\n key: template.key.replace('{key}', key),\n help: template.help.replace('{key}', key),\n type: template.type\n }));\n } else {\n currentProps = [];\n }\n } else {\n // eslint-disable-next-line\n currentProps = currentProps.filter((prop: CompletionProperty) =>\n prop.key.startsWith(part.toLowerCase())\n );\n break;\n }\n } else {\n // eslint-disable-next-line\n currentProps = currentProps.filter((prop: CompletionProperty) =>\n prop.key.startsWith(part.toLowerCase())\n );\n break;\n }\n }\n }\n\n return currentProps.map((prop: CompletionProperty) => {\n const name =\n prop.key === '__default__'\n ? prefix.substr(0, prefix.length - 1)\n : prefix + prop.key;\n return { name, summary: prop.help };\n });\n};\n\nexport const getOffset = (el: HTMLElement) => {\n const rect = el.getBoundingClientRect(),\n scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,\n scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft };\n};\n\nexport const getVerticalScroll = (ele: Node) => {\n let current = ele;\n const verticalScroll = 0;\n while (current) {\n current = current.parentNode;\n }\n return verticalScroll;\n};\n\nexport const getCompletionName = (option: CompletionOption): string => {\n return (\n option.name || option.signature.substr(0, option.signature.indexOf('('))\n );\n};\n\nexport const getCompletionSignature = (option: CompletionOption): string => {\n return option.signature.substr(option.signature.indexOf('('));\n};\n\n/**\n * Determines the pixel position of position inside a textarea or input\n * TODO: Explore somethign like contenteditable to avoid this madness\n * see: https://jh3y.medium.com/how-to-where-s-the-caret-getting-the-xy-position-of-the-caret-a24ba372990a\n */\nconst getCursorXY = (input, selectionPoint) => {\n const { offsetLeft: inputX, offsetTop: inputY } = input;\n const div = document.createElement('div');\n const copyStyle = getComputedStyle(input);\n for (const prop of copyStyle) {\n div.style[prop] = copyStyle[prop];\n }\n div.style.position = 'relative';\n const swap = '.';\n const inputValue =\n input.tagName === 'INPUT' ? input.value.replace(/ /g, swap) : input.value;\n const textContent = inputValue.substr(0, selectionPoint);\n div.textContent = textContent;\n if (input.tagName === 'TEXTAREA') div.style.height = 'auto';\n if (input.tagName === 'INPUT') div.style.width = 'auto';\n const span = document.createElement('span');\n span.textContent = inputValue.substr(selectionPoint) || '.';\n div.appendChild(span);\n document.body.appendChild(div);\n const { offsetLeft: spanX, offsetTop: spanY } = span;\n document.body.removeChild(div);\n return {\n left: inputX + spanX,\n top: inputY + spanY\n };\n};\n\nexport const updateInputElementWithCompletion = (\n currentQuery: string,\n ele: HTMLInputElement,\n option: CompletionOption\n) => {\n let insertText = '';\n\n if (option.signature) {\n // they selected a function\n insertText = option.signature.substr(0, option.signature.indexOf('(') + 1);\n } else {\n insertText = option.name;\n }\n\n const queryLength = currentQuery.length;\n\n if (ele) {\n const value = ele.value;\n const insertionPoint = ele.selectionStart - queryLength;\n\n // strip out our query\n // const insertionPoint = value.lastIndexOf(value.substring(0, this.inputElement.selectionStart));\n const leftSide = value.substr(0, insertionPoint);\n const remaining = value.substr(insertionPoint + queryLength);\n const caret = leftSide.length + insertText.length;\n\n // set our value and our new caret\n ele.value = leftSide + insertText + remaining;\n ele.setSelectionRange(caret, caret);\n\n // now scroll our text box if necessary\n const position = getCursorXY(ele, caret);\n if (position.left > ele.width) {\n ele.scrollLeft = position.left;\n }\n\n ele.dispatchEvent(new Event('input'));\n }\n};\n\nexport const executeCompletionQuery = (\n ele: HTMLInputElement,\n store: Store,\n session: boolean\n): CompletionResult => {\n const result: CompletionResult = {\n currentFunction: null,\n options: [],\n anchorPosition: null,\n query: null\n };\n\n if (!ele) {\n return;\n }\n\n // we need a store to do anything useful\n if (!store) {\n return result;\n }\n\n const cursor = ele.selectionStart;\n const input = ele.value.substring(0, cursor);\n\n const parser = session ? sessionParser : messageParser;\n const expressions = parser.findExpressions(input);\n const currentExpression = expressions.find(\n (expr: Expression) =>\n expr.start <= cursor &&\n (expr.end > cursor || (expr.end === cursor && !expr.closed))\n );\n\n if (currentExpression) {\n const includeFunctions = currentExpression.text.indexOf('(') > -1;\n if (includeFunctions) {\n const functionQuery = parser.functionContext(currentExpression.text);\n if (functionQuery) {\n const fns = getFunctions(store.getFunctions(), functionQuery);\n if (fns.length > 0) {\n result.currentFunction = fns[0];\n }\n }\n }\n\n for (let i = currentExpression.text.length; i >= 0; i--) {\n const curr = currentExpression.text[i];\n if (\n curr === '@' ||\n curr === '(' ||\n curr === ' ' ||\n curr === ',' ||\n curr === ')' ||\n i === 0\n ) {\n // don't include non-expression chars\n if (\n curr === '(' ||\n curr === ' ' ||\n curr === ',' ||\n curr === ')' ||\n curr === '@'\n ) {\n i++;\n }\n\n const caret = getCursorXY(ele, currentExpression.start + i);\n\n result.anchorPosition = {\n left: caret.left - 2 - ele.scrollLeft,\n top: caret.top - ele.scrollTop\n };\n\n result.query = currentExpression.text.substr(\n i,\n currentExpression.text.length - i\n );\n\n result.options = [\n ...getCompletions(\n store.getCompletionSchema(),\n result.query,\n\n session,\n store\n ),\n ...(includeFunctions\n ? getFunctions(store.getFunctions(), result.query)\n : [])\n ];\n\n return result;\n }\n }\n } else {\n result.options = [];\n result.query = '';\n }\n return result;\n};\n"]}
|
|
@@ -456,6 +456,14 @@ export class Store extends RapidElement {
|
|
|
456
456
|
getFlowResults() {
|
|
457
457
|
return this.flowContents.info.results;
|
|
458
458
|
}
|
|
459
|
+
getCompletions(type) {
|
|
460
|
+
if (type === 'results') {
|
|
461
|
+
return this.flowContents.info.results.map((result) => result.key);
|
|
462
|
+
}
|
|
463
|
+
else if (type === 'locals') {
|
|
464
|
+
return this.flowContents.info.locals;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
459
467
|
}
|
|
460
468
|
__decorate([
|
|
461
469
|
property({ type: Number })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.js","sourceRoot":"","sources":["../../../src/store/Store.ts"],"names":[],"mappings":"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","sourcesContent":["import { property } from 'lit/decorators.js';\nimport {\n fetchResults,\n getUrl,\n getAssets,\n Asset,\n WebResponse,\n postUrl,\n postJSON,\n postForm,\n getCookie\n} from '../utils';\nimport {\n ContactField,\n ContactGroup,\n CompletionOption,\n CompletionSchema,\n KeyedAssets,\n CustomEventType,\n Workspace,\n User,\n Shortcut\n} from '../interfaces';\nimport { RapidElement } from '../RapidElement';\nimport { lru } from 'tiny-lru';\nimport { DateTime } from 'luxon';\nimport { css, html } from 'lit';\nimport { configureLocalization } from '@lit/localize';\nimport { sourceLocale, targetLocales } from '../locales/locale-codes';\nimport { StoreMonitorElement } from './StoreMonitorElement';\nimport { getFullName } from '../user/TembaUser';\n\nconst { setLocale } = configureLocalization({\n sourceLocale,\n targetLocales,\n loadLocale: (locale) => import(`./locales/${locale}.js`)\n});\n\nexport class Store extends RapidElement {\n public static get styles() {\n return css`\n :host {\n position: fixed;\n z-index: 1000;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n top: 0.5em;\n }\n `;\n }\n\n settings = {};\n\n @property({ type: Number })\n ttl = 60000;\n\n @property({ type: Number })\n max = 20;\n\n @property({ type: Boolean })\n ready = false;\n\n @property({ type: Boolean })\n loader = false;\n\n @property({ type: String, attribute: 'completion' })\n completionEndpoint: string;\n\n @property({ type: String, attribute: 'fields' })\n fieldsEndpoint: string;\n\n @property({ type: String, attribute: 'groups' })\n groupsEndpoint: string;\n\n @property({ type: String, attribute: 'globals' })\n globalsEndpoint: string;\n\n @property({ type: String, attribute: 'languages' })\n languagesEndpoint: string;\n\n @property({ type: String, attribute: 'workspace' })\n workspaceEndpoint: string;\n\n @property({ type: String, attribute: 'shortcuts' })\n shortcutsEndpoint: string;\n\n @property({ type: Object, attribute: false })\n private schema: CompletionSchema;\n\n @property({ type: Object, attribute: false })\n private fnOptions: CompletionOption[];\n\n @property({ type: Object, attribute: false })\n private keyedAssets: KeyedAssets = {};\n\n private locale = [...navigator.languages];\n\n private fields: { [key: string]: ContactField } = {};\n private groups: { [uuid: string]: ContactGroup } = {};\n private shortcuts: Shortcut[] = [];\n private languages: any = {};\n private users: User[] = [];\n private workspace: Workspace;\n private featuredFields: ContactField[] = [];\n private flowContents: FlowContents;\n\n // http promise to monitor for completeness\n public initialHttpComplete: Promise<void | WebResponse[]>;\n\n private dirtyElements: StoreMonitorElement[] = [];\n\n public markDirty(ele: StoreMonitorElement) {\n if (!this.dirtyElements.includes(ele)) {\n this.dirtyElements.push(ele);\n }\n }\n\n public cleanAll() {\n this.dirtyElements.forEach((ele) => ele.markClean());\n this.dirtyElements = [];\n }\n\n public markClean(ele: StoreMonitorElement) {\n this.dirtyElements = this.dirtyElements.filter((el) => el !== ele);\n }\n\n public getDirtyMessage() {\n if (this.dirtyElements.length > 0) {\n return (\n this.dirtyElements[0].dirtyMessage ||\n 'You have unsaved changes, are you sure you want to continue?'\n );\n }\n }\n\n private cache: any;\n public getLocale() {\n return this.locale[0];\n }\n\n public clearCache() {\n this.cache = lru(this.max, this.ttl);\n }\n\n public reset() {\n this.ready = false;\n this.clearCache();\n this.settings = JSON.parse(getCookie('settings') || '{}');\n\n /* \n // This will create a shorthand unit\n this.humanizer.addLanguage(\"en\", {\n y: () => \"y\",\n mo: () => \"mo\",\n w: () => \"w\",\n d: () => \"d\",\n h: () => \"h\",\n m: () => \"m\",\n s: () => \"s\",\n ms: () => \"ms\",\n decimal: \".\",\n });\n */\n\n const fetches = [];\n if (this.completionEndpoint) {\n fetches.push(\n getUrl(this.completionEndpoint).then((response) => {\n this.schema = response.json['context'] as CompletionSchema;\n this.fnOptions = response.json['functions'] as CompletionOption[];\n })\n );\n }\n\n if (this.fieldsEndpoint) {\n fetches.push(this.refreshFields());\n }\n\n if (this.globalsEndpoint) {\n fetches.push(\n getAssets(this.globalsEndpoint).then((assets: Asset[]) => {\n this.keyedAssets['globals'] = assets.map((asset: Asset) => asset.key);\n })\n );\n }\n\n if (this.languagesEndpoint) {\n fetches.push(\n getAssets(this.languagesEndpoint).then((results: any[]) => {\n // convert array of objects to lookup\n this.languages = results.reduce(function (\n languages: any,\n result: any\n ) {\n languages[result.value] = result.name;\n return languages;\n },\n {});\n })\n );\n }\n\n if (this.groupsEndpoint) {\n fetches.push(\n getAssets(this.groupsEndpoint).then((groups: any[]) => {\n groups.forEach((group: any) => {\n this.groups[group.uuid] = group;\n });\n })\n );\n }\n\n if (this.workspaceEndpoint) {\n fetches.push(\n getUrl(this.workspaceEndpoint).then((response: WebResponse) => {\n this.workspace = response.json;\n const lang = response.headers.get('content-language');\n if (lang) {\n this.locale = [lang, ...this.locale];\n }\n })\n );\n }\n\n if (this.shortcutsEndpoint) {\n fetches.push(this.refreshShortcuts());\n }\n\n this.initialHttpComplete = Promise.all(fetches);\n\n this.initialHttpComplete.then(() => {\n this.ready = true;\n });\n }\n\n public getShortcuts() {\n return this.shortcuts || [];\n }\n\n public firstUpdated() {\n this.reset();\n }\n\n public getLanguageCode() {\n if (this.locale.length > 0) {\n return this.locale[0].split('-')[0];\n }\n return 'en';\n }\n\n public async refreshGlobals() {\n return getAssets(this.globalsEndpoint).then((assets: Asset[]) => {\n this.keyedAssets['globals'] = assets.map((asset: Asset) => asset.key);\n });\n }\n\n public async refreshShortcuts() {\n return getAssets(this.shortcutsEndpoint).then((shortcuts: Shortcut[]) => {\n this.shortcuts = shortcuts;\n });\n }\n\n public async refreshFields() {\n return getAssets(this.fieldsEndpoint).then((assets: Asset[]) => {\n this.keyedAssets['fields'] = [];\n this.featuredFields = [];\n\n assets.forEach((field: ContactField) => {\n this.keyedAssets['fields'].push(field.key);\n this.fields[field.key] = field;\n if (field.featured) {\n this.featuredFields.push(field);\n }\n });\n\n this.featuredFields.sort((a, b) => {\n return b.priority - a.priority;\n });\n\n this.keyedAssets['fields'].sort();\n\n this.fireCustomEvent(CustomEventType.StoreUpdated, {\n url: this.fieldsEndpoint,\n data: this.keyedAssets['fields']\n });\n });\n }\n\n public shiftAndRound(duration, unit: string, singular: string) {\n const value = Math.round(duration.shiftTo(unit).get(unit));\n if (value == 1) {\n return `1 ${singular}`;\n } else {\n return `${value} ${unit}`;\n }\n }\n\n public getCountdown(futureDate: DateTime) {\n const duration = futureDate.diff(DateTime.now());\n const comps = duration.rescale();\n\n if (comps.months > 0) {\n return '> 1 month';\n }\n\n if (comps.days > 1) {\n return `~ ${this.shiftAndRound(comps, 'days', 'day')}`;\n }\n\n if (comps.hours > 0) {\n return `~ ${this.shiftAndRound(comps, 'hours', 'hour')}`;\n }\n\n return `~ ${this.shiftAndRound(comps, 'minutes', 'minute')}`;\n }\n\n public getShortDuration(scheduled: DateTime, compareDate: DateTime = null) {\n const now = compareDate || DateTime.now();\n return scheduled\n .setLocale(this.locale[0])\n .toRelative({ base: now, style: 'long' });\n }\n\n public getShortDurationFromIso(isoDateA: string, isoDateB: string = null) {\n const scheduled = DateTime.fromISO(isoDateA);\n const now = isoDateB ? DateTime.fromISO(isoDateB) : DateTime.now();\n return this.getShortDuration(scheduled, now);\n }\n\n public setKeyedAssets(name: string, values: string[]): void {\n this.keyedAssets[name] = values;\n }\n\n public updated(changedProperties: Map<string, any>) {\n super.updated(changedProperties);\n\n if (changedProperties.has('ready') && this.ready) {\n const locale = this.getLanguageCode();\n const target = targetLocales.find(\n (targetLocale) => targetLocale === locale\n );\n\n if (target) {\n setLocale(target);\n }\n }\n }\n\n public getCompletionSchema(): CompletionSchema {\n return this.schema;\n }\n\n public getFunctions(): CompletionOption[] {\n return this.fnOptions;\n }\n\n public getKeyedAssets(): KeyedAssets {\n return this.keyedAssets;\n }\n\n public getFieldKeys(): string[] {\n return this.keyedAssets['fields'] || [];\n }\n\n public getContactField(key: string): ContactField {\n return this.fields[key];\n }\n\n public getFeaturedFields(): ContactField[] {\n return this.featuredFields;\n }\n\n public getLanguageName(iso: string) {\n return this.languages[iso];\n }\n\n public isDynamicGroup(uuid: string): boolean {\n const group = this.groups[uuid];\n // we treat missing groups as dynamic since the\n // api excludes initializing groups\n if (!group) {\n // console.warn('No group for ' + uuid);\n }\n\n if (!group || group.query) {\n return true;\n }\n return false;\n }\n\n public getWorkspace(): Workspace {\n return this.workspace;\n }\n\n public formatDate(dateString: string) {\n return DateTime.fromISO(dateString)\n .setLocale(this.getLocale())\n .toLocaleString(DateTime.DATETIME_SHORT);\n }\n\n public postJSON(url: string, payload: any = '') {\n return postJSON(url, payload);\n }\n\n public postForm(url: string, payload: any | FormData, headers: any = {}) {\n return postForm(url, payload, headers);\n }\n\n public postUrl(\n url: string,\n payload: any = '',\n headers: any = {},\n contentType = null\n ) {\n return postUrl(url, payload, headers, contentType);\n }\n\n public getUrl(\n url: string,\n options?: {\n force?: boolean;\n skipCache?: boolean;\n controller?: AbortController;\n headers?: { [key: string]: string };\n }\n ): Promise<WebResponse> {\n options = options || {};\n if (!options.force && this.cache.has(url)) {\n return new Promise<WebResponse>((resolve) => {\n resolve(this.cache.get(url));\n });\n }\n\n return getUrl(url, options.controller, options.headers || {}).then(\n (response: WebResponse) => {\n return new Promise<WebResponse>((resolve, reject) => {\n if (response.status >= 200 && response.status <= 300) {\n if (!options.skipCache) {\n this.cache.set(url, response);\n }\n resolve(response);\n } else {\n reject('Status: ' + response.status);\n }\n });\n }\n );\n }\n\n private pendingResolves = {};\n\n /**\n * Fetches all of the results for a given API endpoint with caching\n * @param url\n */\n public getResults(\n url: string,\n options?: { force?: boolean }\n ): Promise<any[]> {\n options = options || {};\n const key = 'results_' + url;\n const results = this.cache.get(key);\n\n if (!options.force && results) {\n return new Promise<any[]>((resolve) => {\n resolve(results);\n });\n }\n\n return new Promise<any[]>((resolve) => {\n const pending = this.pendingResolves[url] || [];\n pending.push(resolve);\n this.pendingResolves[url] = pending;\n if (pending.length <= 1) {\n fetchResults(url).then((results: any[]) => {\n this.cache.set(key, results);\n const pending = this.pendingResolves[url] || [];\n while (pending.length > 0) {\n const resolve = pending.pop();\n resolve(results);\n }\n });\n }\n });\n }\n\n public fetching: { [url: string]: number } = {};\n\n public updateCache(url: string, data: any) {\n this.cache.set(url, data);\n this.fireCustomEvent(CustomEventType.StoreUpdated, { url, data });\n }\n\n public removeFromCache(url: string) {\n this.cache.delete(url);\n }\n\n public resolveUsers(items: any, keys: string[]): Promise<void> {\n return new Promise<void>((resolve) => {\n const emails = new Set<string>();\n\n // keys are dot notation paths to user fields\n items.forEach((item) => {\n keys.forEach((key) => {\n const parts = key.split('.');\n let value = item;\n for (let i = 0; i < parts.length; i++) {\n value = value[parts[i]];\n if (!value) {\n break;\n }\n }\n if (value && value.email) {\n emails.add(value.email);\n }\n });\n });\n\n const promises = [];\n // we don't want to fetch all users at once so we can benefit from caching\n emails.forEach((email) => {\n promises.push(\n this.getUrl(`/api/v2/users.json?email=${encodeURIComponent(email)}`, {\n force: true\n })\n );\n });\n\n // wait for all of our user fetches to complete\n Promise.all(promises).then((promises) => {\n promises.forEach((response: WebResponse) => {\n if (response && response.json) {\n const results = response.json.results;\n if (results && results.length === 1) {\n const user = results[0];\n\n items.forEach((item) => {\n // replace each key with a matching user\n keys.forEach((key) => {\n const parts = key.split('.');\n let value = item;\n let last = value;\n for (let i = 0; i < parts.length; i++) {\n last = value;\n value = value[parts[i]];\n if (!value) {\n break;\n }\n }\n if (value && value.email === user.email) {\n // only care about avatars for now\n const orginalUser = last[parts[parts.length - 1]];\n orginalUser.avatar = user.avatar;\n orginalUser.name = getFullName(user);\n last[parts[parts.length - 1]].avatar = user.avatar;\n }\n });\n });\n }\n }\n });\n resolve();\n });\n });\n }\n\n public makeRequest(\n url: string,\n options?: { force?: boolean; prepareData?: (data: any) => any }\n ) {\n const previousRequest = this.fetching[url];\n const now = new Date().getTime();\n // if the request was recently made, don't do anything\n if (previousRequest) {\n setTimeout(() => {\n this.makeRequest(url, options);\n }, 500);\n return;\n }\n\n let cached = this.cache.get(url);\n if (cached && !options.force) {\n cached = options.prepareData ? options.prepareData(cached) : cached;\n this.fireCustomEvent(CustomEventType.StoreUpdated, { url, data: cached });\n } else {\n options = options || {};\n this.fetching[url] = now;\n fetchResults(url).then((data) => {\n if (!data) {\n delete this.fetching[url];\n return;\n }\n this.cache.set(url, data);\n delete this.fetching[url];\n data = options.prepareData ? options.prepareData(data) : data;\n this.fireCustomEvent(CustomEventType.StoreUpdated, { url, data });\n });\n }\n }\n\n public get(key: string, defaultValue: any = null) {\n return this.settings[key] || defaultValue;\n }\n\n public set(key: string, value: string) {\n this.settings[key] = value;\n // not sure yet if we really want to perist these\n // setCookie(COOKIE_KEYS.SETTINGS, JSON.stringify(this.settings), '/');\n }\n\n public render() {\n if (!this.ready && this.loader) {\n return html`<temba-loading size=\"10\" units=\"8\"></temba-loading>`;\n }\n }\n\n // TODO: for now we let the flow editor set this externally to avoid\n // double fetches and updates\n public setFlowContents(contents: FlowContents) {\n this.flowContents = contents;\n }\n\n public setFlowInfo(info: FlowInfo) {\n this.flowContents.info = info;\n }\n\n public async loadFlow(\n flowUUID: string,\n revision = 'latest'\n ): Promise<FlowContents> {\n const response = await getUrl(\n `/flow/revisions/${flowUUID}/${revision}/?version=14.3`\n );\n this.flowContents = response.json;\n return this.flowContents;\n }\n\n public getFlowResults(): InfoResult[] {\n return this.flowContents.info.results;\n }\n}\n\nexport interface InfoResult {\n key: string;\n name: string;\n categories: string[];\n node_uuids: string[];\n}\n\nexport interface ObjectRef {\n uuid: string;\n name: string;\n}\n\nexport interface TypedObjectRef extends ObjectRef {\n type: string;\n}\n\nexport interface Language {\n code: string;\n name: string;\n}\n\nexport interface FlowInfo {\n results: InfoResult[];\n dependencies: TypedObjectRef[];\n counts: { nodes: number; languages: number };\n locals: string[];\n}\n\nexport interface FlowContents {\n definition: any;\n info: FlowInfo;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Store.js","sourceRoot":"","sources":["../../../src/store/Store.ts"],"names":[],"mappings":"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","sourcesContent":["import { property } from 'lit/decorators.js';\nimport {\n fetchResults,\n getUrl,\n getAssets,\n Asset,\n WebResponse,\n postUrl,\n postJSON,\n postForm,\n getCookie\n} from '../utils';\nimport {\n ContactField,\n ContactGroup,\n CompletionOption,\n CompletionSchema,\n KeyedAssets,\n CustomEventType,\n Workspace,\n User,\n Shortcut\n} from '../interfaces';\nimport { RapidElement } from '../RapidElement';\nimport { lru } from 'tiny-lru';\nimport { DateTime } from 'luxon';\nimport { css, html } from 'lit';\nimport { configureLocalization } from '@lit/localize';\nimport { sourceLocale, targetLocales } from '../locales/locale-codes';\nimport { StoreMonitorElement } from './StoreMonitorElement';\nimport { getFullName } from '../user/TembaUser';\n\nconst { setLocale } = configureLocalization({\n sourceLocale,\n targetLocales,\n loadLocale: (locale) => import(`./locales/${locale}.js`)\n});\n\nexport class Store extends RapidElement {\n public static get styles() {\n return css`\n :host {\n position: fixed;\n z-index: 1000;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n top: 0.5em;\n }\n `;\n }\n\n settings = {};\n\n @property({ type: Number })\n ttl = 60000;\n\n @property({ type: Number })\n max = 20;\n\n @property({ type: Boolean })\n ready = false;\n\n @property({ type: Boolean })\n loader = false;\n\n @property({ type: String, attribute: 'completion' })\n completionEndpoint: string;\n\n @property({ type: String, attribute: 'fields' })\n fieldsEndpoint: string;\n\n @property({ type: String, attribute: 'groups' })\n groupsEndpoint: string;\n\n @property({ type: String, attribute: 'globals' })\n globalsEndpoint: string;\n\n @property({ type: String, attribute: 'languages' })\n languagesEndpoint: string;\n\n @property({ type: String, attribute: 'workspace' })\n workspaceEndpoint: string;\n\n @property({ type: String, attribute: 'shortcuts' })\n shortcutsEndpoint: string;\n\n @property({ type: Object, attribute: false })\n private schema: CompletionSchema;\n\n @property({ type: Object, attribute: false })\n private fnOptions: CompletionOption[];\n\n @property({ type: Object, attribute: false })\n private keyedAssets: KeyedAssets = {};\n\n private locale = [...navigator.languages];\n\n private fields: { [key: string]: ContactField } = {};\n private groups: { [uuid: string]: ContactGroup } = {};\n private shortcuts: Shortcut[] = [];\n private languages: any = {};\n private users: User[] = [];\n private workspace: Workspace;\n private featuredFields: ContactField[] = [];\n private flowContents: FlowContents;\n\n // http promise to monitor for completeness\n public initialHttpComplete: Promise<void | WebResponse[]>;\n\n private dirtyElements: StoreMonitorElement[] = [];\n\n public markDirty(ele: StoreMonitorElement) {\n if (!this.dirtyElements.includes(ele)) {\n this.dirtyElements.push(ele);\n }\n }\n\n public cleanAll() {\n this.dirtyElements.forEach((ele) => ele.markClean());\n this.dirtyElements = [];\n }\n\n public markClean(ele: StoreMonitorElement) {\n this.dirtyElements = this.dirtyElements.filter((el) => el !== ele);\n }\n\n public getDirtyMessage() {\n if (this.dirtyElements.length > 0) {\n return (\n this.dirtyElements[0].dirtyMessage ||\n 'You have unsaved changes, are you sure you want to continue?'\n );\n }\n }\n\n private cache: any;\n public getLocale() {\n return this.locale[0];\n }\n\n public clearCache() {\n this.cache = lru(this.max, this.ttl);\n }\n\n public reset() {\n this.ready = false;\n this.clearCache();\n this.settings = JSON.parse(getCookie('settings') || '{}');\n\n /* \n // This will create a shorthand unit\n this.humanizer.addLanguage(\"en\", {\n y: () => \"y\",\n mo: () => \"mo\",\n w: () => \"w\",\n d: () => \"d\",\n h: () => \"h\",\n m: () => \"m\",\n s: () => \"s\",\n ms: () => \"ms\",\n decimal: \".\",\n });\n */\n\n const fetches = [];\n if (this.completionEndpoint) {\n fetches.push(\n getUrl(this.completionEndpoint).then((response) => {\n this.schema = response.json['context'] as CompletionSchema;\n this.fnOptions = response.json['functions'] as CompletionOption[];\n })\n );\n }\n\n if (this.fieldsEndpoint) {\n fetches.push(this.refreshFields());\n }\n\n if (this.globalsEndpoint) {\n fetches.push(\n getAssets(this.globalsEndpoint).then((assets: Asset[]) => {\n this.keyedAssets['globals'] = assets.map((asset: Asset) => asset.key);\n })\n );\n }\n\n if (this.languagesEndpoint) {\n fetches.push(\n getAssets(this.languagesEndpoint).then((results: any[]) => {\n // convert array of objects to lookup\n this.languages = results.reduce(function (\n languages: any,\n result: any\n ) {\n languages[result.value] = result.name;\n return languages;\n },\n {});\n })\n );\n }\n\n if (this.groupsEndpoint) {\n fetches.push(\n getAssets(this.groupsEndpoint).then((groups: any[]) => {\n groups.forEach((group: any) => {\n this.groups[group.uuid] = group;\n });\n })\n );\n }\n\n if (this.workspaceEndpoint) {\n fetches.push(\n getUrl(this.workspaceEndpoint).then((response: WebResponse) => {\n this.workspace = response.json;\n const lang = response.headers.get('content-language');\n if (lang) {\n this.locale = [lang, ...this.locale];\n }\n })\n );\n }\n\n if (this.shortcutsEndpoint) {\n fetches.push(this.refreshShortcuts());\n }\n\n this.initialHttpComplete = Promise.all(fetches);\n\n this.initialHttpComplete.then(() => {\n this.ready = true;\n });\n }\n\n public getShortcuts() {\n return this.shortcuts || [];\n }\n\n public firstUpdated() {\n this.reset();\n }\n\n public getLanguageCode() {\n if (this.locale.length > 0) {\n return this.locale[0].split('-')[0];\n }\n return 'en';\n }\n\n public async refreshGlobals() {\n return getAssets(this.globalsEndpoint).then((assets: Asset[]) => {\n this.keyedAssets['globals'] = assets.map((asset: Asset) => asset.key);\n });\n }\n\n public async refreshShortcuts() {\n return getAssets(this.shortcutsEndpoint).then((shortcuts: Shortcut[]) => {\n this.shortcuts = shortcuts;\n });\n }\n\n public async refreshFields() {\n return getAssets(this.fieldsEndpoint).then((assets: Asset[]) => {\n this.keyedAssets['fields'] = [];\n this.featuredFields = [];\n\n assets.forEach((field: ContactField) => {\n this.keyedAssets['fields'].push(field.key);\n this.fields[field.key] = field;\n if (field.featured) {\n this.featuredFields.push(field);\n }\n });\n\n this.featuredFields.sort((a, b) => {\n return b.priority - a.priority;\n });\n\n this.keyedAssets['fields'].sort();\n\n this.fireCustomEvent(CustomEventType.StoreUpdated, {\n url: this.fieldsEndpoint,\n data: this.keyedAssets['fields']\n });\n });\n }\n\n public shiftAndRound(duration, unit: string, singular: string) {\n const value = Math.round(duration.shiftTo(unit).get(unit));\n if (value == 1) {\n return `1 ${singular}`;\n } else {\n return `${value} ${unit}`;\n }\n }\n\n public getCountdown(futureDate: DateTime) {\n const duration = futureDate.diff(DateTime.now());\n const comps = duration.rescale();\n\n if (comps.months > 0) {\n return '> 1 month';\n }\n\n if (comps.days > 1) {\n return `~ ${this.shiftAndRound(comps, 'days', 'day')}`;\n }\n\n if (comps.hours > 0) {\n return `~ ${this.shiftAndRound(comps, 'hours', 'hour')}`;\n }\n\n return `~ ${this.shiftAndRound(comps, 'minutes', 'minute')}`;\n }\n\n public getShortDuration(scheduled: DateTime, compareDate: DateTime = null) {\n const now = compareDate || DateTime.now();\n return scheduled\n .setLocale(this.locale[0])\n .toRelative({ base: now, style: 'long' });\n }\n\n public getShortDurationFromIso(isoDateA: string, isoDateB: string = null) {\n const scheduled = DateTime.fromISO(isoDateA);\n const now = isoDateB ? DateTime.fromISO(isoDateB) : DateTime.now();\n return this.getShortDuration(scheduled, now);\n }\n\n public setKeyedAssets(name: string, values: string[]): void {\n this.keyedAssets[name] = values;\n }\n\n public updated(changedProperties: Map<string, any>) {\n super.updated(changedProperties);\n\n if (changedProperties.has('ready') && this.ready) {\n const locale = this.getLanguageCode();\n const target = targetLocales.find(\n (targetLocale) => targetLocale === locale\n );\n\n if (target) {\n setLocale(target);\n }\n }\n }\n\n public getCompletionSchema(): CompletionSchema {\n return this.schema;\n }\n\n public getFunctions(): CompletionOption[] {\n return this.fnOptions;\n }\n\n public getKeyedAssets(): KeyedAssets {\n return this.keyedAssets;\n }\n\n public getFieldKeys(): string[] {\n return this.keyedAssets['fields'] || [];\n }\n\n public getContactField(key: string): ContactField {\n return this.fields[key];\n }\n\n public getFeaturedFields(): ContactField[] {\n return this.featuredFields;\n }\n\n public getLanguageName(iso: string) {\n return this.languages[iso];\n }\n\n public isDynamicGroup(uuid: string): boolean {\n const group = this.groups[uuid];\n // we treat missing groups as dynamic since the\n // api excludes initializing groups\n if (!group) {\n // console.warn('No group for ' + uuid);\n }\n\n if (!group || group.query) {\n return true;\n }\n return false;\n }\n\n public getWorkspace(): Workspace {\n return this.workspace;\n }\n\n public formatDate(dateString: string) {\n return DateTime.fromISO(dateString)\n .setLocale(this.getLocale())\n .toLocaleString(DateTime.DATETIME_SHORT);\n }\n\n public postJSON(url: string, payload: any = '') {\n return postJSON(url, payload);\n }\n\n public postForm(url: string, payload: any | FormData, headers: any = {}) {\n return postForm(url, payload, headers);\n }\n\n public postUrl(\n url: string,\n payload: any = '',\n headers: any = {},\n contentType = null\n ) {\n return postUrl(url, payload, headers, contentType);\n }\n\n public getUrl(\n url: string,\n options?: {\n force?: boolean;\n skipCache?: boolean;\n controller?: AbortController;\n headers?: { [key: string]: string };\n }\n ): Promise<WebResponse> {\n options = options || {};\n if (!options.force && this.cache.has(url)) {\n return new Promise<WebResponse>((resolve) => {\n resolve(this.cache.get(url));\n });\n }\n\n return getUrl(url, options.controller, options.headers || {}).then(\n (response: WebResponse) => {\n return new Promise<WebResponse>((resolve, reject) => {\n if (response.status >= 200 && response.status <= 300) {\n if (!options.skipCache) {\n this.cache.set(url, response);\n }\n resolve(response);\n } else {\n reject('Status: ' + response.status);\n }\n });\n }\n );\n }\n\n private pendingResolves = {};\n\n /**\n * Fetches all of the results for a given API endpoint with caching\n * @param url\n */\n public getResults(\n url: string,\n options?: { force?: boolean }\n ): Promise<any[]> {\n options = options || {};\n const key = 'results_' + url;\n const results = this.cache.get(key);\n\n if (!options.force && results) {\n return new Promise<any[]>((resolve) => {\n resolve(results);\n });\n }\n\n return new Promise<any[]>((resolve) => {\n const pending = this.pendingResolves[url] || [];\n pending.push(resolve);\n this.pendingResolves[url] = pending;\n if (pending.length <= 1) {\n fetchResults(url).then((results: any[]) => {\n this.cache.set(key, results);\n const pending = this.pendingResolves[url] || [];\n while (pending.length > 0) {\n const resolve = pending.pop();\n resolve(results);\n }\n });\n }\n });\n }\n\n public fetching: { [url: string]: number } = {};\n\n public updateCache(url: string, data: any) {\n this.cache.set(url, data);\n this.fireCustomEvent(CustomEventType.StoreUpdated, { url, data });\n }\n\n public removeFromCache(url: string) {\n this.cache.delete(url);\n }\n\n public resolveUsers(items: any, keys: string[]): Promise<void> {\n return new Promise<void>((resolve) => {\n const emails = new Set<string>();\n\n // keys are dot notation paths to user fields\n items.forEach((item) => {\n keys.forEach((key) => {\n const parts = key.split('.');\n let value = item;\n for (let i = 0; i < parts.length; i++) {\n value = value[parts[i]];\n if (!value) {\n break;\n }\n }\n if (value && value.email) {\n emails.add(value.email);\n }\n });\n });\n\n const promises = [];\n // we don't want to fetch all users at once so we can benefit from caching\n emails.forEach((email) => {\n promises.push(\n this.getUrl(`/api/v2/users.json?email=${encodeURIComponent(email)}`, {\n force: true\n })\n );\n });\n\n // wait for all of our user fetches to complete\n Promise.all(promises).then((promises) => {\n promises.forEach((response: WebResponse) => {\n if (response && response.json) {\n const results = response.json.results;\n if (results && results.length === 1) {\n const user = results[0];\n\n items.forEach((item) => {\n // replace each key with a matching user\n keys.forEach((key) => {\n const parts = key.split('.');\n let value = item;\n let last = value;\n for (let i = 0; i < parts.length; i++) {\n last = value;\n value = value[parts[i]];\n if (!value) {\n break;\n }\n }\n if (value && value.email === user.email) {\n // only care about avatars for now\n const orginalUser = last[parts[parts.length - 1]];\n orginalUser.avatar = user.avatar;\n orginalUser.name = getFullName(user);\n last[parts[parts.length - 1]].avatar = user.avatar;\n }\n });\n });\n }\n }\n });\n resolve();\n });\n });\n }\n\n public makeRequest(\n url: string,\n options?: { force?: boolean; prepareData?: (data: any) => any }\n ) {\n const previousRequest = this.fetching[url];\n const now = new Date().getTime();\n // if the request was recently made, don't do anything\n if (previousRequest) {\n setTimeout(() => {\n this.makeRequest(url, options);\n }, 500);\n return;\n }\n\n let cached = this.cache.get(url);\n if (cached && !options.force) {\n cached = options.prepareData ? options.prepareData(cached) : cached;\n this.fireCustomEvent(CustomEventType.StoreUpdated, { url, data: cached });\n } else {\n options = options || {};\n this.fetching[url] = now;\n fetchResults(url).then((data) => {\n if (!data) {\n delete this.fetching[url];\n return;\n }\n this.cache.set(url, data);\n delete this.fetching[url];\n data = options.prepareData ? options.prepareData(data) : data;\n this.fireCustomEvent(CustomEventType.StoreUpdated, { url, data });\n });\n }\n }\n\n public get(key: string, defaultValue: any = null) {\n return this.settings[key] || defaultValue;\n }\n\n public set(key: string, value: string) {\n this.settings[key] = value;\n // not sure yet if we really want to perist these\n // setCookie(COOKIE_KEYS.SETTINGS, JSON.stringify(this.settings), '/');\n }\n\n public render() {\n if (!this.ready && this.loader) {\n return html`<temba-loading size=\"10\" units=\"8\"></temba-loading>`;\n }\n }\n\n // TODO: for now we let the flow editor set this externally to avoid\n // double fetches and updates\n public setFlowContents(contents: FlowContents) {\n this.flowContents = contents;\n }\n\n public setFlowInfo(info: FlowInfo) {\n this.flowContents.info = info;\n }\n\n public async loadFlow(\n flowUUID: string,\n revision = 'latest'\n ): Promise<FlowContents> {\n const response = await getUrl(\n `/flow/revisions/${flowUUID}/${revision}/?version=14.3`\n );\n this.flowContents = response.json;\n return this.flowContents;\n }\n\n public getFlowResults(): InfoResult[] {\n return this.flowContents.info.results;\n }\n\n public getCompletions(type: string) {\n if (type === 'results') {\n return this.flowContents.info.results.map((result) => result.key);\n } else if (type === 'locals') {\n return this.flowContents.info.locals;\n }\n }\n}\n\nexport interface InfoResult {\n key: string;\n name: string;\n categories: string[];\n node_uuids: string[];\n}\n\nexport interface ObjectRef {\n uuid: string;\n name: string;\n}\n\nexport interface TypedObjectRef extends ObjectRef {\n type: string;\n}\n\nexport interface Language {\n code: string;\n name: string;\n}\n\nexport interface FlowInfo {\n results: InfoResult[];\n dependencies: TypedObjectRef[];\n counts: { nodes: number; languages: number };\n locals: string[];\n}\n\nexport interface FlowContents {\n definition: any;\n info: FlowInfo;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-duplicate-enum-values */
|
|
2
2
|
// for cache busting we dynamically generate a fingerprint, use yarn svg to update
|
|
3
|
-
export const SVG_FINGERPRINT = '
|
|
3
|
+
export const SVG_FINGERPRINT = '6ba60d8c1832b26e5dab7ba5c4cb6b74';
|
|
4
4
|
// only icons below are included in the sprite sheet
|
|
5
5
|
export var Icon;
|
|
6
6
|
(function (Icon) {
|
|
@@ -41,9 +41,6 @@ export var Icon;
|
|
|
41
41
|
Icon["checkbox"] = "square";
|
|
42
42
|
Icon["checkbox_checked"] = "check-square";
|
|
43
43
|
Icon["checkbox_partial"] = "stop-square";
|
|
44
|
-
Icon["classifier_wit"] = "classifier-wit";
|
|
45
|
-
Icon["classifier_luis"] = "classifier-luis";
|
|
46
|
-
Icon["classifier_bothub"] = "classifier-bothub";
|
|
47
44
|
Icon["close"] = "x";
|
|
48
45
|
Icon["compose"] = "send-01";
|
|
49
46
|
Icon["contact"] = "user-01";
|
|
@@ -195,10 +192,7 @@ export var Icon;
|
|
|
195
192
|
Icon["users"] = "users-01";
|
|
196
193
|
Icon["video"] = "video-recorder";
|
|
197
194
|
Icon["webhook"] = "link-external-01";
|
|
198
|
-
Icon["wit"] = "wit";
|
|
199
195
|
Icon["workspace"] = "folder";
|
|
200
|
-
Icon["zapier"] = "zapier";
|
|
201
|
-
Icon["zendesk"] = "zendesk";
|
|
202
196
|
// channel types
|
|
203
197
|
Icon["channel_a"] = "channel-android";
|
|
204
198
|
Icon["channel_ac"] = "zap";
|
|
@@ -247,16 +241,17 @@ export var Icon;
|
|
|
247
241
|
Icon["channel_wc"] = "channel-wechat";
|
|
248
242
|
Icon["channel_yo"] = "zap";
|
|
249
243
|
Icon["channel_zvw"] = "channel-whatsapp";
|
|
244
|
+
// ai
|
|
245
|
+
Icon["ai_openai"] = "openai";
|
|
246
|
+
Icon["ai_anthropic"] = "anthropic";
|
|
247
|
+
Icon["ai_google"] = "gemini";
|
|
248
|
+
Icon["ai_microsoft"] = "azure";
|
|
249
|
+
Icon["ai_deepseek"] = "deepseek";
|
|
250
250
|
// classifiers
|
|
251
|
-
Icon["
|
|
252
|
-
|
|
251
|
+
Icon["classifier_wit"] = "classifier-wit";
|
|
252
|
+
// other brands
|
|
253
253
|
Icon["dtone"] = "dtone";
|
|
254
|
-
|
|
255
|
-
Icon["openai"] = "openai";
|
|
256
|
-
Icon["anthropic"] = "anthropic";
|
|
257
|
-
Icon["google"] = "gemini";
|
|
258
|
-
Icon["openai_azure"] = "openai";
|
|
259
|
-
Icon["deepseek"] = "deepseek";
|
|
254
|
+
Icon["zapier"] = "zapier";
|
|
260
255
|
// demo
|
|
261
256
|
Icon["default"] = "list";
|
|
262
257
|
Icon["datepicker"] = "calendar";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vectoricon/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-duplicate-enum-values */\n// for cache busting we dynamically generate a fingerprint, use yarn svg to update\nexport const SVG_FINGERPRINT = 'fdc002188459c72f93a899ac53dcffa9';\n\n// only icons below are included in the sprite sheet\nexport enum Icon {\n ai = 'beaker-02',\n alert_warning = 'alert-square',\n account = 'user-01',\n active = 'play',\n add = 'plus',\n add_note = 'file-02',\n airtime = 'bank-note-01',\n analytics = 'bar-chart-01',\n archive = 'archive',\n arrow_up = 'chevron-up',\n arrow_down = 'chevron-down',\n arrow_left = 'chevron-left',\n arrow_right = 'chevron-right',\n attachment = 'paperclip',\n attachment_audio = 'volume-min',\n attachment_document = 'file-06',\n attachment_image = 'image-01',\n attachment_location = 'marker-pin-01',\n attachment_video = 'video-recorder',\n branding = 'brush-02',\n branding_hostname = 'server-05',\n branding_notifications = 'mail-01',\n branding_styling = 'palette',\n branding_raw = 'pencil-01',\n broadcast = 'announcement-01',\n call = 'phone-call-01',\n call_missed = 'phone-call-02',\n campaign = 'clock-refresh',\n campaign_active = 'play',\n campaign_archived = 'archive',\n campaigns = 'clock-refresh',\n channel = 'zap',\n children = 'git-branch-01',\n check = 'check',\n checkbox = 'square',\n checkbox_checked = 'check-square',\n checkbox_partial = 'stop-square',\n classifier_wit = 'classifier-wit',\n classifier_luis = 'classifier-luis',\n classifier_bothub = 'classifier-bothub',\n close = 'x',\n compose = 'send-01',\n contact = 'user-01',\n contact_archived = 'archive',\n contact_blocked = 'message-x-square',\n contact_export = 'download-cloud-01',\n contact_import = 'upload-cloud-01',\n contact_stopped = 'slash-octagon',\n contact_updated = 'user-edit',\n contacts = 'user-01',\n copy = 'copy-04',\n dashboard = 'pie-chart-01',\n definitions_export = 'download-cloud-01',\n delete = 'trash-03',\n delete_small = 'x',\n down = 'chevron-down',\n download = 'download-01',\n edit = 'edit-03',\n email = 'mail-01',\n error = 'alert-circle',\n event = 'zap',\n export = 'download-cloud-01',\n expressions = 'at-sign',\n fields = 'user-edit',\n filter = 'filter-funnel-01',\n flow = 'flow',\n flow_background = 'layers-two-01',\n flow_interrupted = 'x-close',\n flow_ivr = 'phone',\n flow_message = 'message-square-02',\n flow_surveyor = 'tablet-01',\n flow_user = 'hard-drive',\n flows = 'flow',\n global = 'at-sign',\n grid = 'dots-grid',\n group = 'users-01',\n group_exclude = 'users-x',\n group_include = 'users-check',\n group_smart = 'atom-01',\n help = 'help-circle',\n hide = 'eye-off',\n home = 'settings-02',\n image = 'image-01',\n import = 'upload-cloud-01',\n inbox = 'inbox-01',\n incidents = 'alert-square',\n incoming_call = 'phone-incoming-01',\n info = 'user-square',\n integrations = 'layers-three-01',\n invitations = 'user-plus-01',\n issue = 'alert-square',\n label = 'tag-01',\n language = 'translate-01',\n link = 'link-external-01',\n location = 'marker-pin-01',\n log = 'file-02',\n logout = 'log-out-04',\n menu = 'menu-01',\n menu_collapse = 'chevron-left-double',\n message = 'message-square-02',\n message_export = 'download-cloud-01',\n messages = 'message-square-02',\n missing = 'maximize-02',\n missed_call = 'phone-x',\n new = 'plus',\n next_schedule = 'alarm-clock',\n notes = 'edit-03',\n notification = 'bell-01',\n number = 'hash-01',\n optin_requested = 'message-notification-circle',\n optin = 'message-check-circle',\n optout = 'message-x-circle',\n org_active = 'credit-card-02',\n org_anonymous = 'glasses-01',\n org_bulk = 'credit-card-plus',\n org_flagged = 'flag-01',\n org_new = 'stars-02',\n org_suspended = 'slash-circle-01',\n org_verified = 'check-verified-02',\n overview = 'pie-chart-01',\n prometheus = 'prometheus',\n progress_spinner = 'refresh-cw-04',\n featured = 'star-01',\n quick_replies = 'dotpoints-01',\n recording = 'microphone-01',\n resend = 'refresh-cw-05',\n reset = 'flip-backward',\n resthooks = 'share-07',\n restore = 'play',\n results_export = 'download-cloud-01',\n retry = 'refresh-cw-05',\n revisions = 'clock-rewind',\n rocketchat = 'rocketchat',\n runs = 'rows-03',\n schedule = 'calendar',\n search = 'search-refraction',\n select_open = 'chevron-down',\n select_clear = 'x',\n send = 'send-03',\n service = 'magic-wand-01',\n service_end = 'log-out-04',\n settings = 'settings-02',\n shortcut = 'zap-fast',\n show = 'eye',\n simulator = 'phone-02',\n sort = 'chevron-selector-vertical',\n sort_down = 'sort-arrow-down',\n sort_up = 'sort-arrow-up',\n staff = 'hard-drive',\n submit = 'check',\n success = 'check',\n template_approved = 'check-circle',\n template_pending = 'hourglass-01',\n template_rejected = 'alert-circle',\n tickets = 'agent',\n tickets_all = 'archive',\n tickets_closed = 'check',\n tickets_mine = 'coffee',\n tickets_mine_done = 'coffee-empty',\n tickets_open = 'inbox-01',\n tickets_export = 'download-cloud-01',\n tickets_unassigned = 'inbox-01',\n topic = 'message-text-circle-02',\n two_factor_enabled = 'shield-02',\n two_factor_disabled = 'shield-01',\n trigger = 'signal-01',\n trigger_active = 'play',\n trigger_archived = 'archive',\n trigger_new = 'plus',\n trigger_keyword = 'message-check-square',\n trigger_catch_all = 'message-question-square',\n trigger_inbound_call = 'phone-incoming-01',\n trigger_missed_call = 'phone-hang-up',\n trigger_schedule = 'calendar',\n trigger_new_conversation = 'message-chat-square',\n trigger_referral = 'user-right-01',\n trigger_closed_ticket = 'agent',\n trigger_opt_in = 'message-check-circle',\n trigger_opt_out = 'message-x-circle',\n triggers = 'signal-01',\n updated = 'edit-02',\n up = 'chevron-up',\n upload = 'upload-cloud-01',\n upload_image = 'camera-01',\n usages = 'link-04',\n user = 'users-01',\n user_beta = 'shield-zap',\n user_token = 'key-01',\n users = 'users-01',\n video = 'video-recorder',\n webhook = 'link-external-01',\n wit = 'wit',\n workspace = 'folder',\n zapier = 'zapier',\n zendesk = 'zendesk',\n\n // channel types\n channel_a = 'channel-android',\n channel_ac = 'zap', // TODO https://www.arabiacell.com/\n channel_at = 'zap', // TODO https://africastalking.com/\n channel_bs = 'zap', // TODO https://burstsms.com/\n channel_bw = 'zap', // TODO https://www.bandwidth.com/\n channel_cs = 'zap', // TODO https://www.clicksend.com/\n channel_ct = 'channel-clickatell',\n channel_d3 = 'channel-whatsapp',\n channel_d3c = 'channel-whatsapp',\n channel_da = 'zap', // TODO https://dartmedia.co.id/\n channel_ds = 'channel-discord',\n channel_ex = 'zap',\n channel_fb = 'channel-facebook',\n channel_fba = 'channel-facebook',\n channel_fc = 'channel-freshchat',\n channel_fcm = 'channel-firebase',\n channel_hm = 'zap', // TODO https://hormuud.com/\n channel_ib = 'zap', // TODO https://www.infobip.com/\n channel_ig = 'channel-instagram',\n channel_jc = 'channel-jiochat',\n channel_kn = 'channel-kannel',\n channel_kwa = 'channel-whatsapp',\n channel_ln = 'channel-line',\n channel_mt = 'channel-mtarget',\n channel_mtn = 'zap', // TODO https://mtn.com/\n channel_nx = 'channel-vonage',\n channel_pl = 'channel-plivo',\n channel_rc = 'channel-rocketchat',\n channel_sl = 'channel-slack',\n channel_sq = 'zap', // TODO https://shaqodoon.org/\n channel_st = 'zap', // TODO https://bulk.startmobile.ua\n channel_sw = 'channel-signalwire',\n channel_t = 'channel-twilio',\n channel_tg = 'channel-telegram',\n channel_tms = 'channel-twilio',\n channel_tq = 'channel-thinq',\n channel_tw = 'zap', // TODO https://www.somleng.org/\n channel_twa = 'channel-whatsapp',\n channel_twc = 'zap', // TODO\n channel_twt = 'channel-twitter',\n channel_vk = 'channel-vk',\n channel_vp = 'channel-viber',\n channel_wa = 'channel-whatsapp',\n channel_wac = 'channel-whatsapp',\n channel_wc = 'channel-wechat',\n channel_yo = 'zap', // TODO https://www.yo.co.ug/\n channel_zvw = 'channel-whatsapp',\n\n // classifiers\n bothub = 'bothub',\n chatbase = 'chatbase',\n dtone = 'dtone',\n\n // ai\n openai = 'openai',\n anthropic = 'anthropic',\n google = 'gemini',\n openai_azure = 'openai',\n deepseek = 'deepseek',\n\n // demo\n default = 'list',\n datepicker = 'calendar',\n slider = 'sliders-02',\n select = 'browser',\n input = 'edit-05'\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vectoricon/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-duplicate-enum-values */\n// for cache busting we dynamically generate a fingerprint, use yarn svg to update\nexport const SVG_FINGERPRINT = '6ba60d8c1832b26e5dab7ba5c4cb6b74';\n\n// only icons below are included in the sprite sheet\nexport enum Icon {\n ai = 'beaker-02',\n alert_warning = 'alert-square',\n account = 'user-01',\n active = 'play',\n add = 'plus',\n add_note = 'file-02',\n airtime = 'bank-note-01',\n analytics = 'bar-chart-01',\n archive = 'archive',\n arrow_up = 'chevron-up',\n arrow_down = 'chevron-down',\n arrow_left = 'chevron-left',\n arrow_right = 'chevron-right',\n attachment = 'paperclip',\n attachment_audio = 'volume-min',\n attachment_document = 'file-06',\n attachment_image = 'image-01',\n attachment_location = 'marker-pin-01',\n attachment_video = 'video-recorder',\n branding = 'brush-02',\n branding_hostname = 'server-05',\n branding_notifications = 'mail-01',\n branding_styling = 'palette',\n branding_raw = 'pencil-01',\n broadcast = 'announcement-01',\n call = 'phone-call-01',\n call_missed = 'phone-call-02',\n campaign = 'clock-refresh',\n campaign_active = 'play',\n campaign_archived = 'archive',\n campaigns = 'clock-refresh',\n channel = 'zap',\n children = 'git-branch-01',\n check = 'check',\n checkbox = 'square',\n checkbox_checked = 'check-square',\n checkbox_partial = 'stop-square',\n close = 'x',\n compose = 'send-01',\n contact = 'user-01',\n contact_archived = 'archive',\n contact_blocked = 'message-x-square',\n contact_export = 'download-cloud-01',\n contact_import = 'upload-cloud-01',\n contact_stopped = 'slash-octagon',\n contact_updated = 'user-edit',\n contacts = 'user-01',\n copy = 'copy-04',\n dashboard = 'pie-chart-01',\n definitions_export = 'download-cloud-01',\n delete = 'trash-03',\n delete_small = 'x',\n down = 'chevron-down',\n download = 'download-01',\n edit = 'edit-03',\n email = 'mail-01',\n error = 'alert-circle',\n event = 'zap',\n export = 'download-cloud-01',\n expressions = 'at-sign',\n fields = 'user-edit',\n filter = 'filter-funnel-01',\n flow = 'flow',\n flow_background = 'layers-two-01',\n flow_interrupted = 'x-close',\n flow_ivr = 'phone',\n flow_message = 'message-square-02',\n flow_surveyor = 'tablet-01',\n flow_user = 'hard-drive',\n flows = 'flow',\n global = 'at-sign',\n grid = 'dots-grid',\n group = 'users-01',\n group_exclude = 'users-x',\n group_include = 'users-check',\n group_smart = 'atom-01',\n help = 'help-circle',\n hide = 'eye-off',\n home = 'settings-02',\n image = 'image-01',\n import = 'upload-cloud-01',\n inbox = 'inbox-01',\n incidents = 'alert-square',\n incoming_call = 'phone-incoming-01',\n info = 'user-square',\n integrations = 'layers-three-01',\n invitations = 'user-plus-01',\n issue = 'alert-square',\n label = 'tag-01',\n language = 'translate-01',\n link = 'link-external-01',\n location = 'marker-pin-01',\n log = 'file-02',\n logout = 'log-out-04',\n menu = 'menu-01',\n menu_collapse = 'chevron-left-double',\n message = 'message-square-02',\n message_export = 'download-cloud-01',\n messages = 'message-square-02',\n missing = 'maximize-02',\n missed_call = 'phone-x',\n new = 'plus',\n next_schedule = 'alarm-clock',\n notes = 'edit-03',\n notification = 'bell-01',\n number = 'hash-01',\n optin_requested = 'message-notification-circle',\n optin = 'message-check-circle',\n optout = 'message-x-circle',\n org_active = 'credit-card-02',\n org_anonymous = 'glasses-01',\n org_bulk = 'credit-card-plus',\n org_flagged = 'flag-01',\n org_new = 'stars-02',\n org_suspended = 'slash-circle-01',\n org_verified = 'check-verified-02',\n overview = 'pie-chart-01',\n prometheus = 'prometheus',\n progress_spinner = 'refresh-cw-04',\n featured = 'star-01',\n quick_replies = 'dotpoints-01',\n recording = 'microphone-01',\n resend = 'refresh-cw-05',\n reset = 'flip-backward',\n resthooks = 'share-07',\n restore = 'play',\n results_export = 'download-cloud-01',\n retry = 'refresh-cw-05',\n revisions = 'clock-rewind',\n rocketchat = 'rocketchat',\n runs = 'rows-03',\n schedule = 'calendar',\n search = 'search-refraction',\n select_open = 'chevron-down',\n select_clear = 'x',\n send = 'send-03',\n service = 'magic-wand-01',\n service_end = 'log-out-04',\n settings = 'settings-02',\n shortcut = 'zap-fast',\n show = 'eye',\n simulator = 'phone-02',\n sort = 'chevron-selector-vertical',\n sort_down = 'sort-arrow-down',\n sort_up = 'sort-arrow-up',\n staff = 'hard-drive',\n submit = 'check',\n success = 'check',\n template_approved = 'check-circle',\n template_pending = 'hourglass-01',\n template_rejected = 'alert-circle',\n tickets = 'agent',\n tickets_all = 'archive',\n tickets_closed = 'check',\n tickets_mine = 'coffee',\n tickets_mine_done = 'coffee-empty',\n tickets_open = 'inbox-01',\n tickets_export = 'download-cloud-01',\n tickets_unassigned = 'inbox-01',\n topic = 'message-text-circle-02',\n two_factor_enabled = 'shield-02',\n two_factor_disabled = 'shield-01',\n trigger = 'signal-01',\n trigger_active = 'play',\n trigger_archived = 'archive',\n trigger_new = 'plus',\n trigger_keyword = 'message-check-square',\n trigger_catch_all = 'message-question-square',\n trigger_inbound_call = 'phone-incoming-01',\n trigger_missed_call = 'phone-hang-up',\n trigger_schedule = 'calendar',\n trigger_new_conversation = 'message-chat-square',\n trigger_referral = 'user-right-01',\n trigger_closed_ticket = 'agent',\n trigger_opt_in = 'message-check-circle',\n trigger_opt_out = 'message-x-circle',\n triggers = 'signal-01',\n updated = 'edit-02',\n up = 'chevron-up',\n upload = 'upload-cloud-01',\n upload_image = 'camera-01',\n usages = 'link-04',\n user = 'users-01',\n user_beta = 'shield-zap',\n user_token = 'key-01',\n users = 'users-01',\n video = 'video-recorder',\n webhook = 'link-external-01',\n workspace = 'folder',\n\n // channel types\n channel_a = 'channel-android',\n channel_ac = 'zap', // TODO https://www.arabiacell.com/\n channel_at = 'zap', // TODO https://africastalking.com/\n channel_bs = 'zap', // TODO https://burstsms.com/\n channel_bw = 'zap', // TODO https://www.bandwidth.com/\n channel_cs = 'zap', // TODO https://www.clicksend.com/\n channel_ct = 'channel-clickatell',\n channel_d3 = 'channel-whatsapp',\n channel_d3c = 'channel-whatsapp',\n channel_da = 'zap', // TODO https://dartmedia.co.id/\n channel_ds = 'channel-discord',\n channel_ex = 'zap',\n channel_fb = 'channel-facebook',\n channel_fba = 'channel-facebook',\n channel_fc = 'channel-freshchat',\n channel_fcm = 'channel-firebase',\n channel_hm = 'zap', // TODO https://hormuud.com/\n channel_ib = 'zap', // TODO https://www.infobip.com/\n channel_ig = 'channel-instagram',\n channel_jc = 'channel-jiochat',\n channel_kn = 'channel-kannel',\n channel_kwa = 'channel-whatsapp',\n channel_ln = 'channel-line',\n channel_mt = 'channel-mtarget',\n channel_mtn = 'zap', // TODO https://mtn.com/\n channel_nx = 'channel-vonage',\n channel_pl = 'channel-plivo',\n channel_rc = 'channel-rocketchat',\n channel_sl = 'channel-slack',\n channel_sq = 'zap', // TODO https://shaqodoon.org/\n channel_st = 'zap', // TODO https://bulk.startmobile.ua\n channel_sw = 'channel-signalwire',\n channel_t = 'channel-twilio',\n channel_tg = 'channel-telegram',\n channel_tms = 'channel-twilio',\n channel_tq = 'channel-thinq',\n channel_tw = 'zap', // TODO https://www.somleng.org/\n channel_twa = 'channel-whatsapp',\n channel_twc = 'zap', // TODO\n channel_twt = 'channel-twitter',\n channel_vk = 'channel-vk',\n channel_vp = 'channel-viber',\n channel_wa = 'channel-whatsapp',\n channel_wac = 'channel-whatsapp',\n channel_wc = 'channel-wechat',\n channel_yo = 'zap', // TODO https://www.yo.co.ug/\n channel_zvw = 'channel-whatsapp',\n\n // ai\n ai_openai = 'openai',\n ai_anthropic = 'anthropic',\n ai_google = 'gemini',\n ai_microsoft = 'azure',\n ai_deepseek = 'deepseek',\n\n // classifiers\n classifier_wit = 'classifier-wit',\n\n // other brands\n dtone = 'dtone',\n zapier = 'zapier',\n\n // demo\n default = 'list',\n datepicker = 'calendar',\n slider = 'sliders-02',\n select = 'browser',\n input = 'edit-05'\n}\n"]}
|
package/package.json
CHANGED
|
@@ -6,8 +6,7 @@ import {
|
|
|
6
6
|
CompletionProperty,
|
|
7
7
|
CompletionResult,
|
|
8
8
|
CompletionSchema,
|
|
9
|
-
CompletionType
|
|
10
|
-
KeyedAssets
|
|
9
|
+
CompletionType
|
|
11
10
|
} from '../interfaces';
|
|
12
11
|
import { Store } from '../store/Store';
|
|
13
12
|
import { renderMarkdown } from '../markdown';
|
|
@@ -23,6 +22,7 @@ const sessionParser = new ExcellentParser('@', [
|
|
|
23
22
|
'contact',
|
|
24
23
|
'fields',
|
|
25
24
|
'globals',
|
|
25
|
+
'locals',
|
|
26
26
|
'urns',
|
|
27
27
|
'results',
|
|
28
28
|
'input',
|
|
@@ -95,8 +95,8 @@ export const getFunctions = (
|
|
|
95
95
|
export const getCompletions = (
|
|
96
96
|
schema: CompletionSchema,
|
|
97
97
|
dotQuery: string,
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
session: boolean,
|
|
99
|
+
store: Store
|
|
100
100
|
): CompletionOption[] => {
|
|
101
101
|
const parts = (dotQuery || '').split('.');
|
|
102
102
|
let currentProps: CompletionProperty[] = session
|
|
@@ -127,8 +127,10 @@ export const getCompletions = (
|
|
|
127
127
|
} else if (nextType && nextType.property_template) {
|
|
128
128
|
prefix += part + '.';
|
|
129
129
|
const template = nextType.property_template;
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
|
|
131
|
+
const keys = store.getCompletions(nextType.name);
|
|
132
|
+
if (keys) {
|
|
133
|
+
currentProps = keys.map((key: string) => ({
|
|
132
134
|
key: template.key.replace('{key}', key),
|
|
133
135
|
help: template.help.replace('{key}', key),
|
|
134
136
|
type: template.type
|
|
@@ -341,8 +343,9 @@ export const executeCompletionQuery = (
|
|
|
341
343
|
...getCompletions(
|
|
342
344
|
store.getCompletionSchema(),
|
|
343
345
|
result.query,
|
|
344
|
-
|
|
345
|
-
session
|
|
346
|
+
|
|
347
|
+
session,
|
|
348
|
+
store
|
|
346
349
|
),
|
|
347
350
|
...(includeFunctions
|
|
348
351
|
? getFunctions(store.getFunctions(), result.query)
|
package/src/store/Store.ts
CHANGED
|
@@ -641,6 +641,14 @@ export class Store extends RapidElement {
|
|
|
641
641
|
public getFlowResults(): InfoResult[] {
|
|
642
642
|
return this.flowContents.info.results;
|
|
643
643
|
}
|
|
644
|
+
|
|
645
|
+
public getCompletions(type: string) {
|
|
646
|
+
if (type === 'results') {
|
|
647
|
+
return this.flowContents.info.results.map((result) => result.key);
|
|
648
|
+
} else if (type === 'locals') {
|
|
649
|
+
return this.flowContents.info.locals;
|
|
650
|
+
}
|
|
651
|
+
}
|
|
644
652
|
}
|
|
645
653
|
|
|
646
654
|
export interface InfoResult {
|
package/src/vectoricon/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-duplicate-enum-values */
|
|
2
2
|
// for cache busting we dynamically generate a fingerprint, use yarn svg to update
|
|
3
|
-
export const SVG_FINGERPRINT = '
|
|
3
|
+
export const SVG_FINGERPRINT = '6ba60d8c1832b26e5dab7ba5c4cb6b74';
|
|
4
4
|
|
|
5
5
|
// only icons below are included in the sprite sheet
|
|
6
6
|
export enum Icon {
|
|
@@ -41,9 +41,6 @@ export enum Icon {
|
|
|
41
41
|
checkbox = 'square',
|
|
42
42
|
checkbox_checked = 'check-square',
|
|
43
43
|
checkbox_partial = 'stop-square',
|
|
44
|
-
classifier_wit = 'classifier-wit',
|
|
45
|
-
classifier_luis = 'classifier-luis',
|
|
46
|
-
classifier_bothub = 'classifier-bothub',
|
|
47
44
|
close = 'x',
|
|
48
45
|
compose = 'send-01',
|
|
49
46
|
contact = 'user-01',
|
|
@@ -195,10 +192,7 @@ export enum Icon {
|
|
|
195
192
|
users = 'users-01',
|
|
196
193
|
video = 'video-recorder',
|
|
197
194
|
webhook = 'link-external-01',
|
|
198
|
-
wit = 'wit',
|
|
199
195
|
workspace = 'folder',
|
|
200
|
-
zapier = 'zapier',
|
|
201
|
-
zendesk = 'zendesk',
|
|
202
196
|
|
|
203
197
|
// channel types
|
|
204
198
|
channel_a = 'channel-android',
|
|
@@ -249,17 +243,19 @@ export enum Icon {
|
|
|
249
243
|
channel_yo = 'zap', // TODO https://www.yo.co.ug/
|
|
250
244
|
channel_zvw = 'channel-whatsapp',
|
|
251
245
|
|
|
246
|
+
// ai
|
|
247
|
+
ai_openai = 'openai',
|
|
248
|
+
ai_anthropic = 'anthropic',
|
|
249
|
+
ai_google = 'gemini',
|
|
250
|
+
ai_microsoft = 'azure',
|
|
251
|
+
ai_deepseek = 'deepseek',
|
|
252
|
+
|
|
252
253
|
// classifiers
|
|
253
|
-
|
|
254
|
-
chatbase = 'chatbase',
|
|
255
|
-
dtone = 'dtone',
|
|
254
|
+
classifier_wit = 'classifier-wit',
|
|
256
255
|
|
|
257
|
-
//
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
google = 'gemini',
|
|
261
|
-
openai_azure = 'openai',
|
|
262
|
-
deepseek = 'deepseek',
|
|
256
|
+
// other brands
|
|
257
|
+
dtone = 'dtone',
|
|
258
|
+
zapier = 'zapier',
|
|
263
259
|
|
|
264
260
|
// demo
|
|
265
261
|
default = 'list',
|