@pnp/spfx-controls-react 3.17.0-beta.7003036 → 3.17.0-beta.7072507

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.
Files changed (55) hide show
  1. package/lib/common/SPEntities.d.ts +5 -0
  2. package/lib/common/SPEntities.d.ts.map +1 -1
  3. package/lib/common/telemetry/version.js +1 -1
  4. package/lib/common/utilities/CustomFormatting.d.ts +31 -0
  5. package/lib/common/utilities/CustomFormatting.d.ts.map +1 -0
  6. package/lib/common/utilities/CustomFormatting.js +160 -0
  7. package/lib/common/utilities/CustomFormatting.js.map +1 -0
  8. package/lib/common/utilities/FormulaEvaluation.d.ts +21 -0
  9. package/lib/common/utilities/FormulaEvaluation.d.ts.map +1 -0
  10. package/lib/common/utilities/FormulaEvaluation.js +612 -0
  11. package/lib/common/utilities/FormulaEvaluation.js.map +1 -0
  12. package/lib/common/utilities/FormulaEvaluation.types.d.ts +23 -0
  13. package/lib/common/utilities/FormulaEvaluation.types.d.ts.map +1 -0
  14. package/lib/common/utilities/FormulaEvaluation.types.js +80 -0
  15. package/lib/common/utilities/FormulaEvaluation.types.js.map +1 -0
  16. package/lib/common/utilities/ICustomFormatting.d.ts +27 -0
  17. package/lib/common/utilities/ICustomFormatting.d.ts.map +1 -0
  18. package/lib/common/utilities/ICustomFormatting.js +2 -0
  19. package/lib/common/utilities/ICustomFormatting.js.map +1 -0
  20. package/lib/controls/dynamicForm/DynamicForm.d.ts +53 -5
  21. package/lib/controls/dynamicForm/DynamicForm.d.ts.map +1 -1
  22. package/lib/controls/dynamicForm/DynamicForm.js +828 -536
  23. package/lib/controls/dynamicForm/DynamicForm.js.map +1 -1
  24. package/lib/controls/dynamicForm/DynamicForm.module.css +2 -2
  25. package/lib/controls/dynamicForm/DynamicForm.module.scss.d.ts +4 -0
  26. package/lib/controls/dynamicForm/DynamicForm.module.scss.d.ts.map +1 -1
  27. package/lib/controls/dynamicForm/DynamicForm.module.scss.js +25 -21
  28. package/lib/controls/dynamicForm/DynamicForm.module.scss.js.map +1 -1
  29. package/lib/controls/dynamicForm/IDynamicFormProps.d.ts +12 -0
  30. package/lib/controls/dynamicForm/IDynamicFormProps.d.ts.map +1 -1
  31. package/lib/controls/dynamicForm/IDynamicFormState.d.ts +25 -0
  32. package/lib/controls/dynamicForm/IDynamicFormState.d.ts.map +1 -1
  33. package/lib/controls/dynamicForm/dynamicField/DynamicField.d.ts.map +1 -1
  34. package/lib/controls/dynamicForm/dynamicField/DynamicField.js +57 -42
  35. package/lib/controls/dynamicForm/dynamicField/DynamicField.js.map +1 -1
  36. package/lib/controls/dynamicForm/dynamicField/IDynamicFieldProps.d.ts +32 -11
  37. package/lib/controls/dynamicForm/dynamicField/IDynamicFieldProps.d.ts.map +1 -1
  38. package/lib/controls/fieldCollectionData/collectionDataItem/CollectionDataItem.js.map +1 -1
  39. package/lib/controls/webPartTitle/WebPartTitle.js +1 -1
  40. package/lib/controls/webPartTitle/WebPartTitle.js.map +1 -1
  41. package/lib/services/ISPService.d.ts +194 -0
  42. package/lib/services/ISPService.d.ts.map +1 -1
  43. package/lib/services/ISPService.js +13 -0
  44. package/lib/services/ISPService.js.map +1 -1
  45. package/lib/services/SPService.d.ts +10 -1
  46. package/lib/services/SPService.d.ts.map +1 -1
  47. package/lib/services/SPService.js +69 -0
  48. package/lib/services/SPService.js.map +1 -1
  49. package/lib/services/SPServiceMock.d.ts +3 -1
  50. package/lib/services/SPServiceMock.d.ts.map +1 -1
  51. package/lib/services/SPServiceMock.js +6 -0
  52. package/lib/services/SPServiceMock.js.map +1 -1
  53. package/package.json +1 -1
  54. package/release/manifests/45165954-80f9-44c1-9967-cd38ae92a33b.manifest.json +58 -3
  55. package/tests/utils/formulaevaluation.test.ts +248 -0
@@ -52,6 +52,11 @@ export interface ISPField {
52
52
  LookupDisplayUrl?: string;
53
53
  TypeAsString?: string;
54
54
  ResultType?: string;
55
+ ValidationFormula?: string;
56
+ ValidationMessage?: string;
57
+ MinimumValue?: number;
58
+ MaximumValue?: number;
59
+ CurrencyLocaleId?: number;
55
60
  }
56
61
  /**
57
62
  * Represents value of Lookup Field (single lookup)
@@ -1 +1 @@
1
- {"version":3,"file":"SPEntities.d.ts","sourceRoot":"","sources":["../../src/common/SPEntities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SPEntities.d.ts","sourceRoot":"","sources":["../../src/common/SPEntities.ts"],"names":[],"mappings":"AAAA;;GAEG;AACF,MAAM,WAAW,gBAAgB;IAC9B,WAAW,EAAE,MAAM,CAAC;CACvB;AACD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,gBAAgB,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,cAAe,SAAQ,kBAAkB;CAAG;AAE7D;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,OAAO,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,6BAA6B,EAAE,MAAM,EAAE,CAAC;IACxC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC,EAAE,MAAM,CAAC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,GAAG,EAAE,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,sBAAsB,CAAC;IACvC,YAAY,EAAE,oBAAoB,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACjB;AAEC;;EAEC;AACH,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,OAAO,EAAE,CAAC;CACpB"}
@@ -1,2 +1,2 @@
1
- export var version = "3.17.0-beta.7003036";
1
+ export var version = "3.17.0-beta.7072507";
2
2
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,31 @@
1
+ /// <reference types="react" />
2
+ import { FormulaEvaluation } from "./FormulaEvaluation";
3
+ import { Context } from "./FormulaEvaluation.types";
4
+ import { ICustomFormattingNode } from "./ICustomFormatting";
5
+ /**
6
+ * A class that provides helper methods for custom formatting
7
+ * See: https://learn.microsoft.com/en-us/sharepoint/dev/declarative-customization/formatting-syntax-reference
8
+ */
9
+ export default class CustomFormattingHelper {
10
+ private _formulaEvaluator;
11
+ /**
12
+ * Custom Formatting Helper / Renderer
13
+ * @param formulaEvaluator An instance of FormulaEvaluation used for evaluating expressions in custom formatting
14
+ */
15
+ constructor(formulaEvaluator: FormulaEvaluation);
16
+ /**
17
+ * The Formula Evaluator expects an ASTNode to be passed to it for evaluation. This method converts expressions
18
+ * described by the interface ICustomFormattingExpressionNode to ASTNodes.
19
+ * @param node An ICustomFormattingExpressionNode to be converted to an ASTNode
20
+ */
21
+ private convertCustomFormatExpressionNodes;
22
+ /**
23
+ * Given a single custom formatting expression, node or element, this method evaluates the expression and returns the result
24
+ * @param content An object, expression or literal value to be evaluated
25
+ * @param context A context object containing values / variables to be used in the evaluation
26
+ * @returns
27
+ */
28
+ private evaluateCustomFormatContent;
29
+ renderCustomFormatContent: (node: ICustomFormattingNode, context: Context, rootEl?: boolean) => JSX.Element | string | number;
30
+ }
31
+ //# sourceMappingURL=CustomFormatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFormatting.d.ts","sourceRoot":"","sources":["../../../src/common/utilities/CustomFormatting.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAW,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAmC,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAI7F;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAsB;IAEvC,OAAO,CAAC,iBAAiB,CAAoB;IAE7C;;;OAGG;gBACS,gBAAgB,EAAE,iBAAiB;IAI/C;;;;OAIG;IACH,OAAO,CAAC,kCAAkC,CAczC;IAED;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B,CAiClC;IAGM,yBAAyB,SAAU,qBAAqB,WAAW,OAAO,WAAU,OAAO,KAAW,WAAW,GAAG,MAAM,GAAG,MAAM,CA0EzI;CACJ"}
@@ -0,0 +1,160 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import * as React from "react";
22
+ import { Icon } from "@fluentui/react/lib/Icon";
23
+ /**
24
+ * A class that provides helper methods for custom formatting
25
+ * See: https://learn.microsoft.com/en-us/sharepoint/dev/declarative-customization/formatting-syntax-reference
26
+ */
27
+ var CustomFormattingHelper = /** @class */ (function () {
28
+ /**
29
+ * Custom Formatting Helper / Renderer
30
+ * @param formulaEvaluator An instance of FormulaEvaluation used for evaluating expressions in custom formatting
31
+ */
32
+ function CustomFormattingHelper(formulaEvaluator) {
33
+ var _this = this;
34
+ /**
35
+ * The Formula Evaluator expects an ASTNode to be passed to it for evaluation. This method converts expressions
36
+ * described by the interface ICustomFormattingExpressionNode to ASTNodes.
37
+ * @param node An ICustomFormattingExpressionNode to be converted to an ASTNode
38
+ */
39
+ this.convertCustomFormatExpressionNodes = function (node) {
40
+ if (typeof node !== "object") {
41
+ switch (typeof node) {
42
+ case "string":
43
+ return { type: "string", value: node };
44
+ case "number":
45
+ return { type: "number", value: node };
46
+ case "boolean":
47
+ return { type: "booelan", value: node ? 1 : 0 };
48
+ }
49
+ }
50
+ var operator = node.operator;
51
+ var operands = node.operands.map(function (o) { return _this.convertCustomFormatExpressionNodes(o); });
52
+ return { type: "operator", value: operator, operands: operands };
53
+ };
54
+ /**
55
+ * Given a single custom formatting expression, node or element, this method evaluates the expression and returns the result
56
+ * @param content An object, expression or literal value to be evaluated
57
+ * @param context A context object containing values / variables to be used in the evaluation
58
+ * @returns
59
+ */
60
+ this.evaluateCustomFormatContent = function (content, context) {
61
+ // If content is a string or number, it is a literal value and should be returned as-is
62
+ if ((typeof content === "string" && content.charAt(0) !== "=") || typeof content === "number")
63
+ return content;
64
+ // If content is a string beginning with '=' it is a formula/expression, and should be evaluated
65
+ if (typeof content === "string" && content.charAt(0) === "=") {
66
+ var result = _this._formulaEvaluator.evaluate(content.substring(1), context);
67
+ return result;
68
+ }
69
+ // If content is an object, it is either further custom formatting described by an ICustomFormattingNode,
70
+ // or an expression to be evaluated - as described by an ICustomFormattingExpressionNode
71
+ if (typeof content === "object") {
72
+ if (Object.prototype.hasOwnProperty.call(content, "elmType")) {
73
+ // Custom Formatting Content
74
+ return _this.renderCustomFormatContent(content, context);
75
+ }
76
+ else if (Object.prototype.hasOwnProperty.call(content, "operator")) {
77
+ // Expression to be evaluated
78
+ var astNode = _this.convertCustomFormatExpressionNodes(content);
79
+ var result = _this._formulaEvaluator.evaluateASTNode(astNode, context);
80
+ if (typeof result === "object" && Object.prototype.hasOwnProperty.call(result, "elmType")) {
81
+ return _this.renderCustomFormatContent(result, context);
82
+ }
83
+ return result;
84
+ }
85
+ }
86
+ };
87
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
88
+ this.renderCustomFormatContent = function (node, context, rootEl) {
89
+ if (rootEl === void 0) { rootEl = false; }
90
+ // We don't want attempts to render custom format content to kill the component or web part,
91
+ // so we wrap the entire method in a try/catch block, log errors and return null if an error occurs
92
+ try {
93
+ // If node is a string or number, it is a literal value and should be returned as-is
94
+ if (typeof node === "string" || typeof node === "number")
95
+ return node;
96
+ // Custom formatting nodes / elements may have a txtContent property, which represents the inner
97
+ // content of a HTML element. This can be a string literal, or another expression to be evaluated:
98
+ var textContent = void 0;
99
+ if (node.txtContent) {
100
+ textContent = _this.evaluateCustomFormatContent(node.txtContent, context);
101
+ }
102
+ // Custom formatting nodes / elements may have a style property, which contains the style rules
103
+ // to be applied to the resulting HTML element. Rule values can be string literals or another expression
104
+ // to be evaluated:
105
+ var styleProperties = {};
106
+ if (node.style) {
107
+ for (var styleAttribute in node.style) {
108
+ if (node.style[styleAttribute]) {
109
+ styleProperties[styleAttribute] = _this.evaluateCustomFormatContent(node.style[styleAttribute], context);
110
+ }
111
+ }
112
+ }
113
+ // Custom formatting nodes / elements may have an attributes property, which represents the HTML attributes
114
+ // to be applied to the resulting HTML element. Attribute values can be string literals or another expression
115
+ // to be evaluated:
116
+ var attributes = {};
117
+ if (node.attributes) {
118
+ for (var attribute in node.attributes) {
119
+ if (node.attributes[attribute]) {
120
+ var attributeName = attribute;
121
+ // Because we're using React to render the HTML content, we need to rename the 'class' attribute
122
+ if (attributeName === "class")
123
+ attributeName = "className";
124
+ // Evaluation
125
+ attributes[attributeName] = _this.evaluateCustomFormatContent(node.attributes[attribute], context);
126
+ // Add the 'sp-field-customFormatter' class to the root element
127
+ if (attributeName === "className" && rootEl) {
128
+ attributes[attributeName] = "".concat(attributes[attributeName], " sp-field-customFormatter");
129
+ }
130
+ }
131
+ }
132
+ }
133
+ // Custom formatting nodes / elements may have children. These are likely to be further custom formatting
134
+ var children = [];
135
+ // If the node has an iconName property, we'll render an Icon component as the first child.
136
+ // SharePoint uses CSS to apply the icon in a ::before rule, but we can't count on the global selector for iconName
137
+ // being present on the page, so we'll add it as a child instead:
138
+ if (attributes.iconName) {
139
+ var icon = React.createElement(Icon, { iconName: attributes.iconName });
140
+ children.push(icon);
141
+ }
142
+ // Each child object is evaluated recursively and added to the children array
143
+ if (node.children) {
144
+ children = node.children.map(function (c) { return _this.evaluateCustomFormatContent(c, context); });
145
+ }
146
+ // The resulting HTML element is returned to the callee using React.createElement
147
+ var el = React.createElement.apply(React, __spreadArray([node.elmType, __assign({ style: styleProperties }, attributes), textContent], children, false));
148
+ return el;
149
+ }
150
+ catch (error) {
151
+ console.error('Unable to render custom formatted content', error);
152
+ return null;
153
+ }
154
+ };
155
+ this._formulaEvaluator = formulaEvaluator;
156
+ }
157
+ return CustomFormattingHelper;
158
+ }());
159
+ export default CustomFormattingHelper;
160
+ //# sourceMappingURL=CustomFormatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFormatting.js","sourceRoot":"","sources":["../../../src/common/utilities/CustomFormatting.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAOhD;;;GAGG;AACH;IAII;;;OAGG;IACH,gCAAY,gBAAmC;QAA/C,iBAEC;QAED;;;;WAIG;QACK,uCAAkC,GAAG,UAAC,IAAiE;YAC3G,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC1B,QAAQ,OAAO,IAAI,EAAE;oBACjB,KAAK,QAAQ;wBACT,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBAC3C,KAAK,QAAQ;wBACT,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBAC3C,KAAK,SAAS;wBACV,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvD;aACJ;YACD,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAA1C,CAA0C,CAAC,CAAC;YACpF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,UAAA,EAAE,CAAC;QAC3D,CAAC,CAAA;QAED;;;;;WAKG;QACK,gCAA2B,GAAG,UAAC,OAA4F,EAAE,OAAgB;YAEjJ,uFAAuF;YACvF,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO,OAAO,CAAC;YAE9G,gGAAgG;YAChG,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC1D,IAAM,MAAM,GAAG,KAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC9E,OAAO,MAA4B,CAAC;aACvC;YAED,yGAAyG;YACzG,wFAAwF;YAExF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAE7B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;oBAE1D,4BAA4B;oBAC5B,OAAO,KAAI,CAAC,yBAAyB,CAAC,OAAgC,EAAE,OAAO,CAAC,CAAC;iBAEpF;qBAAM,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;oBAElE,6BAA6B;oBAC7B,IAAM,OAAO,GAAG,KAAI,CAAC,kCAAkC,CAAC,OAA0C,CAAC,CAAC;oBACpG,IAAM,MAAM,GAAG,KAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACxE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;wBACvF,OAAO,KAAI,CAAC,yBAAyB,CAAC,MAA+B,EAAE,OAAO,CAAC,CAAC;qBACnF;oBACD,OAAO,MAA4B,CAAC;iBAEvC;aACJ;QACL,CAAC,CAAA;QAED,8DAA8D;QACvD,8BAAyB,GAAG,UAAC,IAA2B,EAAE,OAAgB,EAAE,MAAuB;YAAvB,uBAAA,EAAA,cAAuB;YAEtG,6FAA6F;YAC7F,mGAAmG;YACnG,IAAI;gBAEA,oFAAoF;gBACpF,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBAEtE,gGAAgG;gBAChG,kGAAkG;gBAClG,IAAI,WAAW,SAAgC,CAAC;gBAChD,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,WAAW,GAAG,KAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;iBAC5E;gBAED,+FAA+F;gBAC/F,wGAAwG;gBACxG,mBAAmB;gBACnB,IAAM,eAAe,GAAwB,EAAE,CAAC;gBAChD,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,KAAK,IAAM,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE;wBACrC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;4BAC5B,eAAe,CAAC,cAAc,CAAC,GAAG,KAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,OAAO,CAAW,CAAC;yBACrH;qBACJ;iBACJ;gBAED,2GAA2G;gBAC3G,6GAA6G;gBAC7G,mBAAmB;gBACnB,IAAM,UAAU,GAAG,EAA4B,CAAC;gBAChD,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,KAAK,IAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;wBACrC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;4BAC5B,IAAI,aAAa,GAAG,SAAS,CAAC;4BAE9B,gGAAgG;4BAChG,IAAI,aAAa,KAAK,OAAO;gCAAE,aAAa,GAAG,WAAW,CAAC;4BAE3D,aAAa;4BACb,UAAU,CAAC,aAAa,CAAC,GAAG,KAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAW,CAAC;4BAE5G,+DAA+D;4BAC/D,IAAI,aAAa,KAAK,WAAW,IAAI,MAAM,EAAE;gCACzC,UAAU,CAAC,aAAa,CAAC,GAAG,UAAG,UAAU,CAAC,aAAa,CAAC,8BAA2B,CAAC;6BACvF;yBACJ;qBACJ;iBACJ;gBAED,yGAAyG;gBACzG,IAAI,QAAQ,GAA2B,EAAE,CAAC;gBAE1C,2FAA2F;gBAC3F,mHAAmH;gBACnH,iEAAiE;gBACjE,IAAI,UAAU,CAAC,QAAQ,EAAE;oBACrB,IAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC1E,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB;gBAED,6EAA6E;gBAC7E,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,OAAO,CAAC,EAA5C,CAA4C,CAAC,CAAC;iBACnF;gBAED,iFAAiF;gBACjF,IAAM,EAAE,GAAG,KAAK,CAAC,aAAa,OAAnB,KAAK,iBAAe,IAAI,CAAC,OAAO,aAAI,KAAK,EAAE,eAAe,IAAK,UAAU,GAAI,WAAW,GAAK,QAAQ,SAAC,CAAC;gBAClH,OAAO,EAAE,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC;aACf;QACL,CAAC,CAAA;QA5IG,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAC9C,CAAC;IA4IL,6BAAC;AAAD,CAAC,AAtJD,IAsJC"}
@@ -0,0 +1,21 @@
1
+ import { IContext } from "../Interfaces";
2
+ import { ASTNode, ArrayLiteralNode, ArrayNodeValue, Context, Token } from "./FormulaEvaluation.types";
3
+ export declare class FormulaEvaluation {
4
+ private webUrl;
5
+ private _meEmail;
6
+ constructor(context?: IContext, webUrlOverride?: string);
7
+ /** Evaluates a formula expression and returns the result, with optional context object for variables */
8
+ evaluate(expression: string, context?: Context): boolean | string | number | ArrayNodeValue | object;
9
+ /** Tokenizes an expression into a list of tokens (primatives, operators, variables, function names, arrays etc) */
10
+ tokenize(expression: string, context?: Context): Token[];
11
+ shuntingYard(tokens: Token[]): Token[];
12
+ buildAST(postfixTokens: Token[]): ASTNode;
13
+ evaluateASTNode(node: ASTNode | ArrayLiteralNode | ArrayNodeValue | string | number, context?: Context): boolean | number | string | ArrayNodeValue | object;
14
+ validate(expression: string): boolean;
15
+ /** Returns a precedence value for a token or operator */
16
+ private getPrecedence;
17
+ private _getFnArity;
18
+ private _getSharePointThumbnailUrl;
19
+ private _getUserImageUrl;
20
+ }
21
+ //# sourceMappingURL=FormulaEvaluation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormulaEvaluation.d.ts","sourceRoot":"","sources":["../../../src/common/utilities/FormulaEvaluation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAA6B,MAAM,2BAA2B,CAAC;AAmBjI,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM;IAOvD,wGAAwG;IACjG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM;IAS/G,mHAAmH;IAC5G,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,GAAG,KAAK,EAAE;IAuD5D,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;IA2FtC,QAAQ,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,OAAO;IAqDzC,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,cAAc,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,OAAY,GAC7G,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM;IA2UhD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAiB5C,yDAAyD;IACzD,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,gBAAgB;CAG3B"}