@oneblink/sdk-core 0.4.5 → 0.4.6-beta.2
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/dist/abnService.js +1 -1
- package/dist/abnService.js.map +1 -1
- package/dist/formElementsService.d.ts +25 -1
- package/dist/formElementsService.js +35 -1
- package/dist/formElementsService.js.map +1 -1
- package/dist/submissionService.d.ts +20 -1
- package/dist/submissionService.js +43 -2
- package/dist/submissionService.js.map +1 -1
- package/package.json +1 -1
package/dist/abnService.js
CHANGED
|
@@ -63,7 +63,7 @@ exports.getBusinessNameFromABNRecord = getBusinessNameFromABNRecord;
|
|
|
63
63
|
*/
|
|
64
64
|
const displayBusinessNameFromABNRecord = (abnRecord) => {
|
|
65
65
|
const businessName = (0, exports.getBusinessNameFromABNRecord)(abnRecord);
|
|
66
|
-
return businessName || '
|
|
66
|
+
return businessName || 'ABN Details Suppressed';
|
|
67
67
|
};
|
|
68
68
|
exports.displayBusinessNameFromABNRecord = displayBusinessNameFromABNRecord;
|
|
69
69
|
/**
|
package/dist/abnService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abnService.js","sourceRoot":"","sources":["../src/abnService.ts"],"names":[],"mappings":";;;AAEA,MAAM,eAAe,GAAG,CAAC,EACvB,UAAU,EACV,SAAS,EACT,cAAc,GACsB,EAAE,EAAE;IACxC,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,mBAAmB;IACnB,IAAI,UAAU;QAAE,SAAS,IAAI,GAAG,UAAU,IAAI,CAAA;IAC9C,oBAAoB;IACpB,IAAI,SAAS;QAAE,SAAS,IAAI,GAAG,SAAS,GAAG,CAAA;IAC3C,qBAAqB;IACrB,IAAI,cAAc;QAAE,SAAS,IAAI,GAAG,cAAc,EAAE,CAAA;IAEpD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED;;;;;;;;;;;;GAYG;AACI,MAAM,4BAA4B,GAAG,CAC1C,SAAoB,EACA,EAAE;;IACtB,IAAI,SAAS,CAAC,UAAU,CAAC,cAAc,KAAK,KAAK,IAAI,SAAS,CAAC,SAAS,EAAE;QACxE,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACtD,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC,IAAI,EAAE,CAAA;KACvC;IAED,IAAI,MAAA,SAAS,CAAC,QAAQ,0CAAE,gBAAgB,EAAE;QACxC,OAAO,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAA;KAC3C;IACD,IAAI,MAAA,SAAS,CAAC,eAAe,0CAAE,gBAAgB,EAAE;QAC/C,OAAO,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAA;KAClD;IACD,IAAI,SAAS,CAAC,SAAS,EAAE;QACvB,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACtD,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC,IAAI,EAAE,CAAA;KACvC;AACH,CAAC,CAAA;AAlBY,QAAA,4BAA4B,gCAkBxC;AAED;;;;;;;;;;;;;GAaG;AACI,MAAM,gCAAgC,GAAG,CAC9C,SAAoB,EACZ,EAAE;IACV,MAAM,YAAY,GAAG,IAAA,oCAA4B,EAAC,SAAS,CAAC,CAAA;IAC5D,OAAO,YAAY,IAAI,
|
|
1
|
+
{"version":3,"file":"abnService.js","sourceRoot":"","sources":["../src/abnService.ts"],"names":[],"mappings":";;;AAEA,MAAM,eAAe,GAAG,CAAC,EACvB,UAAU,EACV,SAAS,EACT,cAAc,GACsB,EAAE,EAAE;IACxC,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,mBAAmB;IACnB,IAAI,UAAU;QAAE,SAAS,IAAI,GAAG,UAAU,IAAI,CAAA;IAC9C,oBAAoB;IACpB,IAAI,SAAS;QAAE,SAAS,IAAI,GAAG,SAAS,GAAG,CAAA;IAC3C,qBAAqB;IACrB,IAAI,cAAc;QAAE,SAAS,IAAI,GAAG,cAAc,EAAE,CAAA;IAEpD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED;;;;;;;;;;;;GAYG;AACI,MAAM,4BAA4B,GAAG,CAC1C,SAAoB,EACA,EAAE;;IACtB,IAAI,SAAS,CAAC,UAAU,CAAC,cAAc,KAAK,KAAK,IAAI,SAAS,CAAC,SAAS,EAAE;QACxE,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACtD,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC,IAAI,EAAE,CAAA;KACvC;IAED,IAAI,MAAA,SAAS,CAAC,QAAQ,0CAAE,gBAAgB,EAAE;QACxC,OAAO,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAA;KAC3C;IACD,IAAI,MAAA,SAAS,CAAC,eAAe,0CAAE,gBAAgB,EAAE;QAC/C,OAAO,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAA;KAClD;IACD,IAAI,SAAS,CAAC,SAAS,EAAE;QACvB,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACtD,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC,IAAI,EAAE,CAAA;KACvC;AACH,CAAC,CAAA;AAlBY,QAAA,4BAA4B,gCAkBxC;AAED;;;;;;;;;;;;;GAaG;AACI,MAAM,gCAAgC,GAAG,CAC9C,SAAoB,EACZ,EAAE;IACV,MAAM,YAAY,GAAG,IAAA,oCAA4B,EAAC,SAAS,CAAC,CAAA;IAC5D,OAAO,YAAY,IAAI,wBAAwB,CAAA;AACjD,CAAC,CAAA;AALY,QAAA,gCAAgC,oCAK5C;AAED;;;;;;;;;;;;GAYG;AACI,MAAM,yBAAyB,GAAG,CACvC,SAAoB,EACA,EAAE;IACtB,IAAI,CAAC,SAAS,CAAC,GAAG;QAAE,OAAM;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;QAChC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CACpC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,CACxC,CAAA;QACD,OAAO,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,CAAA;KACpC;IACD,OAAO,SAAS,CAAC,GAAG,CAAC,eAAe,CAAA;AACtC,CAAC,CAAA;AAXY,QAAA,yBAAyB,6BAWrC;AAED;;;;;;;;;;;;GAYG;AACI,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAAU,EAAE;IAC5E,MAAM,SAAS,GAAG,IAAA,iCAAyB,EAAC,SAAS,CAAC,CAAA;IACtD,OAAO,SAAS,IAAI,oBAAoB,CAAA;AAC1C,CAAC,CAAA;AAHY,QAAA,6BAA6B,iCAGzC","sourcesContent":["import { ABNRecord } from '@oneblink/types/typescript/misc'\n\nconst createLegalName = ({\n familyName,\n givenName,\n otherGivenName,\n}: NonNullable<ABNRecord['legalName']>) => {\n let legalName = ''\n // Concat last name\n if (familyName) legalName += `${familyName}, `\n // Concat first name\n if (givenName) legalName += `${givenName} `\n // Concat middle name\n if (otherGivenName) legalName += `${otherGivenName}`\n\n return legalName\n}\n\n/**\n * Attempts to get the most relevant business name from the data returned in an\n * `ABNRecord`. Will return `undefined` if a suitable name is not found.\n *\n * #### Example\n *\n * ```js\n * const businessName = abnService.getBusinessNameFromABNRecord(abnRecord)\n * ```\n *\n * @param abnRecord\n * @returns\n */\nexport const getBusinessNameFromABNRecord = (\n abnRecord: ABNRecord,\n): string | undefined => {\n if (abnRecord.entityType.entityTypeCode === 'IND' && abnRecord.legalName) {\n const legalName = createLegalName(abnRecord.legalName)\n if (legalName) return legalName.trim()\n }\n\n if (abnRecord.mainName?.organisationName) {\n return abnRecord.mainName.organisationName\n }\n if (abnRecord.mainTradingName?.organisationName) {\n return abnRecord.mainTradingName.organisationName\n }\n if (abnRecord.legalName) {\n const legalName = createLegalName(abnRecord.legalName)\n if (legalName) return legalName.trim()\n }\n}\n\n/**\n * Get the most relevant business name from the data returned in an `ABNRecord`.\n * Will return \"Unknown Business Name\" if a suitable name is not found.\n *\n * #### Example\n *\n * ```js\n * const businessName =\n * abnService.displayBusinessNameFromABNRecord(abnRecord)\n * ```\n *\n * @param abnRecord\n * @returns\n */\nexport const displayBusinessNameFromABNRecord = (\n abnRecord: ABNRecord,\n): string => {\n const businessName = getBusinessNameFromABNRecord(abnRecord)\n return businessName || 'ABN Details Suppressed'\n}\n\n/**\n * Attempts to get the most recent ABN number from the data returned in an\n * `ABNRecord`. Will return `undefined` if an ABN is not found.\n *\n * #### Example\n *\n * ```js\n * const ABN = abnService.getABNNumberFromABNRecord(abnRecord)\n * ```\n *\n * @param abnRecord\n * @returns\n */\nexport const getABNNumberFromABNRecord = (\n abnRecord: ABNRecord,\n): string | undefined => {\n if (!abnRecord.ABN) return\n if (Array.isArray(abnRecord.ABN)) {\n const relevantABN = abnRecord.ABN.find(\n (abn) => abn.isCurrentIndicator === 'Y',\n )\n return relevantABN?.identifierValue\n }\n return abnRecord.ABN.identifierValue\n}\n\n/**\n * Attempts to get the most recent ABN number from the data returned in an\n * `ABNRecord`. Will return \"Unknown ABN Number\" if an ABN is not found.\n *\n * #### Example\n *\n * ```js\n * const ABN = abnService.displayABNNumberFromABNRecord(abnRecord)\n * ```\n *\n * @param abnRecord\n * @returns\n */\nexport const displayABNNumberFromABNRecord = (abnRecord: ABNRecord): string => {\n const abnNumber = getABNNumberFromABNRecord(abnRecord)\n return abnNumber || 'Unknown ABN Number'\n}\n"]}
|
|
@@ -86,4 +86,28 @@ declare function parseFormElementOptionsSet(data: unknown): FormTypes.ChoiceElem
|
|
|
86
86
|
* @returns
|
|
87
87
|
*/
|
|
88
88
|
declare function flattenFormElements(elements: FormTypes.FormElement[]): FormTypes.FormElement[];
|
|
89
|
-
|
|
89
|
+
/**
|
|
90
|
+
* The regex used for matching `{ELEMENT:<elementName>}` tags in OneBlink
|
|
91
|
+
* Calculation and Info (HTML) elements.
|
|
92
|
+
*/
|
|
93
|
+
declare const WYSIWYGRegex: RegExp;
|
|
94
|
+
/**
|
|
95
|
+
* Takes a string and calls a provided handler function for each found instance
|
|
96
|
+
* of `{ELEMENT:<elementName>}` in the string. Used to replace values in
|
|
97
|
+
* OneBlink calculation and info (HTML) elements.
|
|
98
|
+
*
|
|
99
|
+
* #### Example
|
|
100
|
+
*
|
|
101
|
+
* ```js
|
|
102
|
+
* formElementsService.matchElementsTagRegex(myString, (elementName) => {
|
|
103
|
+
* const v = submission[elementName]
|
|
104
|
+
* myString = myString.replace(`{ELEMENT:${elementName}}`, v)
|
|
105
|
+
* })
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @param data
|
|
109
|
+
* @param handler
|
|
110
|
+
* @returns
|
|
111
|
+
*/
|
|
112
|
+
declare const matchElementsTagRegex: (data: string, matchHandler: (elementName: string) => void) => void;
|
|
113
|
+
export { forEachFormElement, forEachFormElementWithOptions, findFormElement, parseFormElementOptionsSet, flattenFormElements, WYSIWYGRegex, matchElementsTagRegex, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.flattenFormElements = exports.parseFormElementOptionsSet = exports.findFormElement = exports.forEachFormElementWithOptions = exports.forEachFormElement = void 0;
|
|
3
|
+
exports.matchElementsTagRegex = exports.WYSIWYGRegex = exports.flattenFormElements = exports.parseFormElementOptionsSet = exports.findFormElement = exports.forEachFormElementWithOptions = exports.forEachFormElement = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
5
|
/**
|
|
6
6
|
* Iterate over all form elements, also iterating over nested form element (e.g.
|
|
@@ -172,4 +172,38 @@ function flattenFormElements(elements) {
|
|
|
172
172
|
}, []);
|
|
173
173
|
}
|
|
174
174
|
exports.flattenFormElements = flattenFormElements;
|
|
175
|
+
/**
|
|
176
|
+
* The regex used for matching `{ELEMENT:<elementName>}` tags in OneBlink
|
|
177
|
+
* Calculation and Info (HTML) elements.
|
|
178
|
+
*/
|
|
179
|
+
const WYSIWYGRegex = /({ELEMENT:)([^}]+)(})/g;
|
|
180
|
+
exports.WYSIWYGRegex = WYSIWYGRegex;
|
|
181
|
+
/**
|
|
182
|
+
* Takes a string and calls a provided handler function for each found instance
|
|
183
|
+
* of `{ELEMENT:<elementName>}` in the string. Used to replace values in
|
|
184
|
+
* OneBlink calculation and info (HTML) elements.
|
|
185
|
+
*
|
|
186
|
+
* #### Example
|
|
187
|
+
*
|
|
188
|
+
* ```js
|
|
189
|
+
* formElementsService.matchElementsTagRegex(myString, (elementName) => {
|
|
190
|
+
* const v = submission[elementName]
|
|
191
|
+
* myString = myString.replace(`{ELEMENT:${elementName}}`, v)
|
|
192
|
+
* })
|
|
193
|
+
* ```
|
|
194
|
+
*
|
|
195
|
+
* @param data
|
|
196
|
+
* @param handler
|
|
197
|
+
* @returns
|
|
198
|
+
*/
|
|
199
|
+
const matchElementsTagRegex = (data, matchHandler) => {
|
|
200
|
+
let matches;
|
|
201
|
+
while ((matches = WYSIWYGRegex.exec(data)) !== null) {
|
|
202
|
+
if ((matches === null || matches === void 0 ? void 0 : matches.length) < 3)
|
|
203
|
+
continue;
|
|
204
|
+
const elementName = matches[2];
|
|
205
|
+
matchHandler(elementName);
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
exports.matchElementsTagRegex = matchElementsTagRegex;
|
|
175
209
|
//# sourceMappingURL=formElementsService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formElementsService.js","sourceRoot":"","sources":["../src/formElementsService.ts"],"names":[],"mappings":";;;AACA,wBAAmC;AAEnC;;;;;;;;;;;;;;GAcG;AACH,SAAS,kBAAkB,CACzB,QAAiC,EACjC,OAGS;IAET,eAAe,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE;QACxD,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;QACpC,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"formElementsService.js","sourceRoot":"","sources":["../src/formElementsService.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes } from '@oneblink/types'\nimport { typeCastService } from '.'\n\n/**\n * Iterate over all form elements, also iterating over nested form element (e.g.\n * page elements).\n *\n * #### Example\n *\n * ```js\n * formElementsService.forEachFormElement(form.elements, (formElement) => {\n * // do something with formElement\n * })\n * ```\n *\n * @param elements The form elements to iterate over\n * @param forEach Function to execute on each form element\n */\nfunction forEachFormElement(\n elements: FormTypes.FormElement[],\n forEach: (\n element: FormTypes.FormElement,\n elements: FormTypes.FormElement[],\n ) => void,\n): void {\n findFormElement(elements, (formElement, parentElements) => {\n forEach(formElement, parentElements)\n return false\n })\n}\n\n/**\n * Iterate over all form elements that have options (e.g. `'select'` type\n * elements), also iterating over nested form element (e.g. page elements).\n *\n * #### Example\n *\n * ```js\n * formElementsService.forEachFormElementWithOptions(\n * form.elements,\n * (formElementWithOptions) => {\n * // do something with formElementWithOptions\n * },\n * )\n * ```\n *\n * @param elements The form elements to iterate over\n * @param forEach Function to execute on each form element with options\n */\nfunction forEachFormElementWithOptions(\n elements: FormTypes.FormElement[],\n forEach: (\n elementWithOptions: FormTypes.FormElementWithOptions,\n elements: FormTypes.FormElement[],\n ) => void,\n): void {\n findFormElement(elements, (formElement, parentElements) => {\n const optionsFormElement =\n typeCastService.formElements.toOptionsElement(formElement)\n if (optionsFormElement) {\n forEach(optionsFormElement, parentElements)\n }\n return false\n })\n}\n\n/**\n * Iterate over all form elements and return an element that matches a\n * predicate, also iterating over nested form element (e.g. page elements). Will\n * return `undefined` if no matching element is found.\n *\n * #### Example\n *\n * ```js\n * const formElement = formElementsService.findFormElement(\n * form.elements,\n * (formElement) => {\n * return formElement.id === '123-abc'\n * },\n * )\n * ```\n *\n * @param elements The form elements to iterate over\n * @param predicate Predicate function to execute on each form element\n * @param parentElements\n * @returns\n */\nfunction findFormElement(\n elements: FormTypes.FormElement[],\n predicate: (\n element: FormTypes.FormElement,\n elements: FormTypes.FormElement[],\n ) => boolean,\n parentElements: FormTypes.FormElement[] = [],\n): FormTypes.FormElement | void {\n for (const element of elements) {\n if (predicate(element, parentElements)) {\n return element\n }\n\n if (\n (element.type === 'repeatableSet' ||\n element.type === 'page' ||\n element.type === 'form' ||\n element.type === 'infoPage' ||\n element.type === 'section') &&\n Array.isArray(element.elements)\n ) {\n const nestedElement = findFormElement(element.elements, predicate, [\n ...parentElements,\n element,\n ])\n\n if (nestedElement) {\n return nestedElement\n }\n }\n }\n}\n\n/**\n * Parse unknown data as valid options for a forms element. This will always\n * return an Array of valid options.\n *\n * #### Example\n *\n * ```js\n * const options = formElementsService.parseFormElementOptionsSet(data)\n * // \"options\" are valid for a form element\n * ```\n *\n * @param data\n * @returns\n */\nfunction parseFormElementOptionsSet(\n data: unknown,\n): FormTypes.ChoiceElementOption[] {\n if (!Array.isArray(data)) {\n return []\n }\n return data.reduce(\n (\n options: FormTypes.ChoiceElementOption[],\n record: unknown,\n index: number,\n ) => {\n if (typeof record === 'string') {\n options.push({\n id: index.toString(),\n value: record,\n label: record,\n })\n } else if (typeof record === 'object') {\n const option = record as Record<string, unknown>\n const value =\n typeof option.value === 'string' && option.value\n ? option.value\n : index.toString()\n const id =\n typeof option.id === 'string' && option.id ? option.id : value\n const label =\n typeof option.label === 'string' && option.label\n ? option.label\n : value\n const colour =\n typeof option.colour === 'string' && option.colour\n ? option.colour\n : undefined\n options.push({\n ...option,\n id,\n value,\n label,\n colour,\n })\n }\n return options\n },\n [],\n )\n}\n\n/**\n * Takes the nested definition structure and returns all form elements as 1d array.\n *\n * #### Example\n *\n * ```js\n * const flattenedElements = formElementsService.flattenFormElements(\n * form.elements,\n * )\n * ```\n *\n * @param elements\n * @returns\n */\nfunction flattenFormElements(\n elements: FormTypes.FormElement[],\n): FormTypes.FormElement[] {\n return elements.reduce<FormTypes.FormElement[]>(\n (flattenedElements, element) => {\n flattenedElements.push(element)\n switch (element.type) {\n case 'section':\n case 'page': {\n flattenedElements.push(...flattenFormElements(element.elements))\n }\n }\n return flattenedElements\n },\n [],\n )\n}\n\n/**\n * The regex used for matching `{ELEMENT:<elementName>}` tags in OneBlink\n * Calculation and Info (HTML) elements.\n */\nconst WYSIWYGRegex = /({ELEMENT:)([^}]+)(})/g\n\n/**\n * Takes a string and calls a provided handler function for each found instance\n * of `{ELEMENT:<elementName>}` in the string. Used to replace values in\n * OneBlink calculation and info (HTML) elements.\n *\n * #### Example\n *\n * ```js\n * formElementsService.matchElementsTagRegex(myString, (elementName) => {\n * const v = submission[elementName]\n * myString = myString.replace(`{ELEMENT:${elementName}}`, v)\n * })\n * ```\n *\n * @param data\n * @param handler\n * @returns\n */\nconst matchElementsTagRegex = (\n data: string,\n matchHandler: (elementName: string) => void,\n) => {\n let matches\n while ((matches = WYSIWYGRegex.exec(data)) !== null) {\n if (matches?.length < 3) continue\n\n const elementName = matches[2]\n matchHandler(elementName)\n }\n}\n\nexport {\n forEachFormElement,\n forEachFormElementWithOptions,\n findFormElement,\n parseFormElementOptionsSet,\n flattenFormElements,\n WYSIWYGRegex,\n matchElementsTagRegex,\n}\n"]}
|
|
@@ -7,7 +7,7 @@ export * from './replaceCustomValues';
|
|
|
7
7
|
* #### Example
|
|
8
8
|
*
|
|
9
9
|
* ```js
|
|
10
|
-
* const value =
|
|
10
|
+
* const value = submissionService.getRootElementById(
|
|
11
11
|
* formElementId,
|
|
12
12
|
* form.elements,
|
|
13
13
|
* submission,
|
|
@@ -20,3 +20,22 @@ export * from './replaceCustomValues';
|
|
|
20
20
|
* @returns
|
|
21
21
|
*/
|
|
22
22
|
export declare function getRootElementValueById(formElementId: string, formElements: FormTypes.FormElement[], submission: SubmissionTypes.S3SubmissionData['submission']): unknown;
|
|
23
|
+
/**
|
|
24
|
+
* Takes an element name and a submission object, and returns the provided
|
|
25
|
+
* element's value as a string. Used for replaceable values in OneBlink
|
|
26
|
+
* Calculation and Info (HTML) elements.
|
|
27
|
+
*
|
|
28
|
+
* #### Example
|
|
29
|
+
*
|
|
30
|
+
* ```js
|
|
31
|
+
* const nameElementValue = submissionService.getSubmissionValueAsString(
|
|
32
|
+
* 'Name_Element',
|
|
33
|
+
* submission,
|
|
34
|
+
* )
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @param elementName
|
|
38
|
+
* @param submission
|
|
39
|
+
* @returns
|
|
40
|
+
*/
|
|
41
|
+
export declare function getSubmissionValueAsString(elementName: string, submission: SubmissionTypes.S3SubmissionData['submission']): string;
|
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.getRootElementValueById = void 0;
|
|
17
|
+
exports.getSubmissionValueAsString = exports.getRootElementValueById = void 0;
|
|
18
18
|
__exportStar(require("./replaceCustomValues"), exports);
|
|
19
19
|
/**
|
|
20
20
|
* Takes a form element's id, the form elements and the submission data to
|
|
@@ -23,7 +23,7 @@ __exportStar(require("./replaceCustomValues"), exports);
|
|
|
23
23
|
* #### Example
|
|
24
24
|
*
|
|
25
25
|
* ```js
|
|
26
|
-
* const value =
|
|
26
|
+
* const value = submissionService.getRootElementById(
|
|
27
27
|
* formElementId,
|
|
28
28
|
* form.elements,
|
|
29
29
|
* submission,
|
|
@@ -49,4 +49,45 @@ function getRootElementValueById(formElementId, formElements, submission) {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
exports.getRootElementValueById = getRootElementValueById;
|
|
52
|
+
/**
|
|
53
|
+
* Takes an element name and a submission object, and returns the provided
|
|
54
|
+
* element's value as a string. Used for replaceable values in OneBlink
|
|
55
|
+
* Calculation and Info (HTML) elements.
|
|
56
|
+
*
|
|
57
|
+
* #### Example
|
|
58
|
+
*
|
|
59
|
+
* ```js
|
|
60
|
+
* const nameElementValue = submissionService.getSubmissionValueAsString(
|
|
61
|
+
* 'Name_Element',
|
|
62
|
+
* submission,
|
|
63
|
+
* )
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @param elementName
|
|
67
|
+
* @param submission
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
function getSubmissionValueAsString(elementName, submission) {
|
|
71
|
+
const v = submission[elementName];
|
|
72
|
+
switch (typeof v) {
|
|
73
|
+
case 'function':
|
|
74
|
+
case 'undefined':
|
|
75
|
+
case 'symbol': {
|
|
76
|
+
return '';
|
|
77
|
+
}
|
|
78
|
+
case 'object': {
|
|
79
|
+
// Account for null
|
|
80
|
+
return (v === null || v === void 0 ? void 0 : v.toString()) || '';
|
|
81
|
+
}
|
|
82
|
+
case 'number':
|
|
83
|
+
case 'boolean':
|
|
84
|
+
case 'bigint': {
|
|
85
|
+
return v.toString();
|
|
86
|
+
}
|
|
87
|
+
default: {
|
|
88
|
+
return v;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.getSubmissionValueAsString = getSubmissionValueAsString;
|
|
52
93
|
//# sourceMappingURL=submissionService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submissionService.js","sourceRoot":"","sources":["../src/submissionService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,wDAAqC;AAErC;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,uBAAuB,CACrC,aAAqB,EACrB,YAAqC,EACrC,UAA0D;IAE1D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE;YACjE,MAAM,KAAK,GAAG,uBAAuB,CACnC,aAAa,EACb,WAAW,CAAC,QAAQ,EACpB,UAAU,CACX,CAAA;YACD,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAO,KAAK,CAAA;aACb;SACF;aAAM,IAAI,WAAW,CAAC,EAAE,KAAK,aAAa,EAAE;YAC3C,OAAO,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;SACpC;KACF;AACH,CAAC;AAnBD,0DAmBC","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\n\nexport * from './replaceCustomValues'\n\n/**\n * Takes a form element's id, the form elements and the submission data to\n * return a value from the submission.\n *\n * #### Example\n *\n * ```js\n * const value =
|
|
1
|
+
{"version":3,"file":"submissionService.js","sourceRoot":"","sources":["../src/submissionService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,wDAAqC;AAErC;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,uBAAuB,CACrC,aAAqB,EACrB,YAAqC,EACrC,UAA0D;IAE1D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE;YACjE,MAAM,KAAK,GAAG,uBAAuB,CACnC,aAAa,EACb,WAAW,CAAC,QAAQ,EACpB,UAAU,CACX,CAAA;YACD,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAO,KAAK,CAAA;aACb;SACF;aAAM,IAAI,WAAW,CAAC,EAAE,KAAK,aAAa,EAAE;YAC3C,OAAO,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;SACpC;KACF;AACH,CAAC;AAnBD,0DAmBC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,0BAA0B,CACxC,WAAmB,EACnB,UAA0D;IAE1D,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IACjC,QAAQ,OAAO,CAAC,EAAE;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,EAAE,CAAA;SACV;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,mBAAmB;YACnB,OAAO,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,EAAE,KAAI,EAAE,CAAA;SAC3B;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;SACpB;QACD,OAAO,CAAC,CAAC;YACP,OAAO,CAAW,CAAA;SACnB;KACF;AACH,CAAC;AAxBD,gEAwBC","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\n\nexport * from './replaceCustomValues'\n\n/**\n * Takes a form element's id, the form elements and the submission data to\n * return a value from the submission.\n *\n * #### Example\n *\n * ```js\n * const value = submissionService.getRootElementById(\n * formElementId,\n * form.elements,\n * submission,\n * )\n * ```\n *\n * @param formElementId\n * @param formElements\n * @param submission\n * @returns\n */\nexport function getRootElementValueById(\n formElementId: string,\n formElements: FormTypes.FormElement[],\n submission: SubmissionTypes.S3SubmissionData['submission'],\n): unknown {\n for (const formElement of formElements) {\n if (formElement.type === 'page' || formElement.type === 'section') {\n const value = getRootElementValueById(\n formElementId,\n formElement.elements,\n submission,\n )\n if (value !== undefined) {\n return value\n }\n } else if (formElement.id === formElementId) {\n return submission[formElement.name]\n }\n }\n}\n\n/**\n * Takes an element name and a submission object, and returns the provided\n * element's value as a string. Used for replaceable values in OneBlink\n * Calculation and Info (HTML) elements.\n *\n * #### Example\n *\n * ```js\n * const nameElementValue = submissionService.getSubmissionValueAsString(\n * 'Name_Element',\n * submission,\n * )\n * ```\n *\n * @param elementName\n * @param submission\n * @returns\n */\nexport function getSubmissionValueAsString(\n elementName: string,\n submission: SubmissionTypes.S3SubmissionData['submission'],\n): string {\n const v = submission[elementName]\n switch (typeof v) {\n case 'function':\n case 'undefined':\n case 'symbol': {\n return ''\n }\n case 'object': {\n // Account for null\n return v?.toString() || ''\n }\n case 'number':\n case 'boolean':\n case 'bigint': {\n return v.toString()\n }\n default: {\n return v as string\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneblink/sdk-core",
|
|
3
3
|
"description": "OneBlink SDK for JavaScript (works in Browsers and NodeJS)",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.6-beta.2",
|
|
5
5
|
"author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/oneblink/sdk-core-js/issues"
|