andoncloud-workplaces-state-timelines-widget 1.2.5 → 1.2.7

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","../node_modules/graphql/jsutils/defineInspect.mjs","../node_modules/graphql/jsutils/invariant.mjs","../node_modules/graphql/language/ast.mjs","../node_modules/graphql/jsutils/inspect.mjs","../node_modules/graphql/language/visitor.mjs","../node_modules/graphql/language/printer.mjs","../node_modules/graphql/language/blockString.mjs","../src/locales/index.ts","../src/version.ts","../src/components/SettingsFormContent/index.tsx","../src/helpers.ts","../node_modules/react-content-loader/dist/react-content-loader.es.js","../src/components/TimelineLoader/index.tsx","../src/components/Timeline/styled.ts","../src/components/Timeline/index.tsx","../src/components/WidgetView/index.tsx","../node_modules/property-expr/index.js","../node_modules/tiny-case/index.js","../node_modules/toposort/index.js","../node_modules/yup/index.esm.js","../src/components/Widget/utils.ts","../src/components/Widget/index.tsx","../src/index.tsx"],"sourcesContent":["// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;\n","import invariant from \"./invariant.mjs\";\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\n\nexport default function defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || invariant(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (nodejsCustomInspectSymbol) {\n classObject.prototype[nodejsCustomInspectSymbol] = fn;\n }\n}\n","export default function invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n","import defineInspect from \"../jsutils/defineInspect.mjs\";\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport var Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n var _proto = Location.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport var Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. <SOF> is always the first node and <EOF>\n * the last.\n */\n function Token(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n }\n\n var _proto2 = Token.prototype;\n\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Token);\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable flowtype/no-weak-types */\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","import inspect from \"../jsutils/inspect.mjs\";\nimport { isNode } from \"./ast.mjs\";\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error(\"Invalid AST Node: \".concat(inspect(node), \".\"));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _visitorKeys$node$kin;\n\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","import { visit } from \"./visitor.mjs\";\nimport { printBlockString } from \"./blockString.mjs\";\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: addDescription(function (_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n }),\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray) {\n var _maybeArray$filter$jo;\n\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}\n","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(rawString);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n var startLine = 0;\n\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n\n var endLine = lines.length;\n\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n\n return true;\n}\n/**\n * @internal\n */\n\n\nexport function getBlockStringIndentation(value) {\n var _commonIndent;\n\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n\n case 9: // \\t\n\n case 32:\n // <space>\n ++indent;\n break;\n\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n\n isEmptyLine = false;\n }\n }\n\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","import en from './en/translation.json';\nimport pl from './pl/translation.json';\n\nconst resources = {\n en: {\n translation: en,\n },\n pl: {\n translation: pl,\n },\n};\n\nexport default resources;\n","export const LIBRARY_VERSION = '1.2.5';","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { TabContext, TabList, TabPanel } from '@mui/lab';\nimport { Box, Tab } from '@mui/material';\nimport { SortableSelect } from 'andoncloud-dashboard-toolkit';\nimport { SettingsFormContentProps } from 'andoncloud-widget-base';\n\nimport { WidgetData, WidgetSettings } from '@/types';\n\nconst SettingsFormContent: React.FC<SettingsFormContentProps<WidgetData, WidgetSettings>> = ({ data, formProps }) => {\n const [tabValue, setTabValue] = useState('1');\n const { t } = useTranslation();\n\n const handleTabChange = (_: React.SyntheticEvent, newValue: string) => {\n setTabValue(newValue);\n };\n\n return (\n <React.Fragment>\n <TabContext value={tabValue}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <TabList onChange={handleTabChange}>\n <Tab label={t('Workplaces')} value=\"1\" />\n </TabList>\n </Box>\n <TabPanel value=\"1\">\n <SortableSelect\n placeholder={`${t('Select and arrange the order')}...`}\n options={data.workplaces?.map(({ id, name }) => ({ label: name, value: id }))}\n selected={formProps.values.workplacesIds}\n onChange={(selected) => formProps.setFieldValue('workplacesIds', [...selected])}\n />\n </TabPanel>\n </TabContext>\n </React.Fragment>\n );\n};\n\nexport default SettingsFormContent;\n","import { AndonLightColor, ListStatusChanges_StatusChange, NormalizedShift } from 'andoncloud-dashboard-toolkit';\nimport dayjs from 'dayjs';\n\nexport const durationSeconds = (\n shift: NormalizedShift,\n statusChange: ListStatusChanges_StatusChange,\n currentDate: Date,\n) => {\n const startedAt = shift.startedAt.isAfter(statusChange.startedAt) ? shift.startedAt : dayjs(statusChange.startedAt);\n\n if (startedAt && statusChange.finishedAt) {\n return Math.abs(startedAt.diff(dayjs(statusChange.finishedAt), 'seconds'));\n }\n return Math.abs(dayjs(currentDate).diff(startedAt, 'seconds'));\n};\n\nexport const mapTimelineColor = (color: AndonLightColor): string => {\n switch (color) {\n case 'green':\n return '#2ACB42';\n case 'red':\n return '#FF453A';\n case 'yellow':\n return '#FFC12F';\n default:\n return '#525860';\n }\n};\n","import { useId, createElement, isValidElement } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nvar SVG = function (_a) {\n var _b = _a.animate, animate = _b === void 0 ? true : _b, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? '#f5f6f7' : _c, _d = _a.backgroundOpacity, backgroundOpacity = _d === void 0 ? 1 : _d, _e = _a.baseUrl, baseUrl = _e === void 0 ? '' : _e, children = _a.children, _f = _a.foregroundColor, foregroundColor = _f === void 0 ? '#eee' : _f, _g = _a.foregroundOpacity, foregroundOpacity = _g === void 0 ? 1 : _g, _h = _a.gradientRatio, gradientRatio = _h === void 0 ? 2 : _h, uniqueKey = _a.uniqueKey, _j = _a.rtl, rtl = _j === void 0 ? false : _j, _k = _a.speed, speed = _k === void 0 ? 1.2 : _k, _l = _a.style, style = _l === void 0 ? {} : _l, _m = _a.title, title = _m === void 0 ? 'Loading...' : _m, _o = _a.beforeMask, beforeMask = _o === void 0 ? null : _o, props = __rest(_a, [\"animate\", \"backgroundColor\", \"backgroundOpacity\", \"baseUrl\", \"children\", \"foregroundColor\", \"foregroundOpacity\", \"gradientRatio\", \"uniqueKey\", \"rtl\", \"speed\", \"style\", \"title\", \"beforeMask\"]);\n var fixedId = useId();\n if (uniqueKey)\n fixedId = uniqueKey;\n var idClip = \"\".concat(fixedId, \"-diff\");\n var idGradient = \"\".concat(fixedId, \"-animated-diff\");\n var idAria = \"\".concat(fixedId, \"-aria\");\n var rtlStyle = rtl ? { transform: 'scaleX(-1)' } : null;\n var dur = \"\".concat(speed, \"s\");\n var from = \"\".concat(gradientRatio * -1, \" 0\");\n var to = \"\".concat(gradientRatio, \" 0\");\n return (createElement(\"svg\", __assign({ \"aria-labelledby\": idAria, role: \"img\", style: __assign(__assign({}, style), rtlStyle) }, props),\n title ? createElement(\"title\", { id: idAria }, title) : null,\n beforeMask && isValidElement(beforeMask) ? beforeMask : null,\n createElement(\"rect\", { role: \"presentation\", x: \"0\", y: \"0\", width: \"100%\", height: \"100%\", clipPath: \"url(\".concat(baseUrl, \"#\").concat(idClip, \")\"), style: { fill: \"url(\".concat(baseUrl, \"#\").concat(idGradient, \")\") } }),\n createElement(\"defs\", null,\n createElement(\"clipPath\", { id: idClip }, children),\n createElement(\"linearGradient\", { id: idGradient, gradientTransform: \"translate(\".concat(from, \")\") },\n createElement(\"stop\", { offset: \"0%\", stopColor: backgroundColor, stopOpacity: backgroundOpacity }),\n createElement(\"stop\", { offset: \"50%\", stopColor: foregroundColor, stopOpacity: foregroundOpacity }),\n createElement(\"stop\", { offset: \"100%\", stopColor: backgroundColor, stopOpacity: backgroundOpacity }),\n animate && (createElement(\"animateTransform\", { attributeName: \"gradientTransform\", type: \"translate\", values: \"\".concat(from, \"; 0 0; \").concat(to), dur: dur, repeatCount: \"indefinite\" }))))));\n};\n\nvar ContentLoader = function (props) {\n return props.children ? createElement(SVG, __assign({}, props)) : createElement(ReactContentLoaderFacebook, __assign({}, props));\n};\n\nvar ReactContentLoaderFacebook = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 476 124\" }, props),\n createElement(\"rect\", { x: \"48\", y: \"8\", width: \"88\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"48\", y: \"26\", width: \"52\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"56\", width: \"410\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"72\", width: \"380\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"88\", width: \"178\", height: \"6\", rx: \"3\" }),\n createElement(\"circle\", { cx: \"20\", cy: \"20\", r: \"20\" }))); };\n\nvar ReactContentLoaderInstagram = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 400 460\" }, props),\n createElement(\"circle\", { cx: \"31\", cy: \"31\", r: \"15\" }),\n createElement(\"rect\", { x: \"58\", y: \"18\", rx: \"2\", ry: \"2\", width: \"140\", height: \"10\" }),\n createElement(\"rect\", { x: \"58\", y: \"34\", rx: \"2\", ry: \"2\", width: \"140\", height: \"10\" }),\n createElement(\"rect\", { x: \"0\", y: \"60\", rx: \"2\", ry: \"2\", width: \"400\", height: \"400\" }))); };\n\nvar ReactContentLoaderCode = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 340 84\" }, props),\n createElement(\"rect\", { x: \"0\", y: \"0\", width: \"67\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"76\", y: \"0\", width: \"140\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"127\", y: \"48\", width: \"53\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"187\", y: \"48\", width: \"72\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"18\", y: \"48\", width: \"100\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"71\", width: \"37\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"18\", y: \"23\", width: \"140\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"166\", y: \"23\", width: \"173\", height: \"11\", rx: \"3\" }))); };\n\nvar ReactContentLoaderListStyle = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 400 110\" }, props),\n createElement(\"rect\", { x: \"0\", y: \"0\", rx: \"3\", ry: \"3\", width: \"250\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"20\", rx: \"3\", ry: \"3\", width: \"220\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"40\", rx: \"3\", ry: \"3\", width: \"170\", height: \"10\" }),\n createElement(\"rect\", { x: \"0\", y: \"60\", rx: \"3\", ry: \"3\", width: \"250\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"80\", rx: \"3\", ry: \"3\", width: \"200\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"100\", rx: \"3\", ry: \"3\", width: \"80\", height: \"10\" }))); };\n\nvar ReactContentLoaderBulletList = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 245 125\" }, props),\n createElement(\"circle\", { cx: \"10\", cy: \"20\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"15\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }),\n createElement(\"circle\", { cx: \"10\", cy: \"50\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"45\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }),\n createElement(\"circle\", { cx: \"10\", cy: \"80\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"75\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }),\n createElement(\"circle\", { cx: \"10\", cy: \"110\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"105\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }))); };\n\nexport default ContentLoader;\nexport { ReactContentLoaderBulletList as BulletList, ReactContentLoaderCode as Code, ReactContentLoaderFacebook as Facebook, ReactContentLoaderInstagram as Instagram, ReactContentLoaderListStyle as List };\n//# sourceMappingURL=react-content-loader.es.js.map\n","import React from 'react';\nimport ContentLoader from 'react-content-loader';\n\nconst TimelineLoader = () => (\n <ContentLoader\n data-testid=\"timeline-loading\"\n height=\"28\"\n width=\"100%\"\n speed={1.5}\n backgroundColor=\"#3d3d3d\"\n foregroundColor=\"#ffffff\"\n >\n <rect x=\"4%\" y=\"10\" ry=\"6\" width=\"92%\" height=\"14\" />\n </ContentLoader>\n);\n\nexport default TimelineLoader;\n","import { styled } from '@mui/material/styles';\nimport { AndonLightColor } from 'andoncloud-dashboard-toolkit';\n\nimport { mapTimelineColor } from '@/helpers';\n\nexport interface TimelineElementProps {\n percentWidth: number;\n color?: AndonLightColor;\n}\n\nexport const TimelineRow = styled('div')({\n display: 'flex',\n flexGrow: 1,\n alignItems: 'center',\n padding: '10px 0',\n background: '#252A32',\n '&:nth-of-type(2n)': {\n background: '#30353d',\n },\n});\n\nexport const TimelineWrapper = styled('div')({\n display: 'flex',\n margin: '6px 0',\n zIndex: 3,\n flexDirection: 'row',\n height: '20px',\n width: '100%',\n overflow: 'hidden',\n borderRadius: '4px',\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\n});\n\nexport const TimelineTimeInfoContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n});\n\nexport const TimelineTimeInfo = styled('span')({\n margin: '0 1.5em',\n fontSize: '12px',\n fontWeight: 500,\n lineHeight: '12px',\n color: 'rgba(255, 255, 255, 0.5)',\n});\n\nexport const TimelineElement = styled('div')<TimelineElementProps>(({ percentWidth, color }) => ({\n flexBasis: `${percentWidth}%`,\n flexShrink: 0,\n backgroundColor: mapTimelineColor(color as AndonLightColor),\n '&:first-of-type': {\n borderTopLeftRadius: '4px',\n borderBottomLeftRadius: '4px',\n },\n}));\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport { Typography } from '@mui/material';\nimport { ListStatusChanges_StatusChange, NormalizedShift } from 'andoncloud-dashboard-toolkit';\nimport dayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\n\nimport { durationSeconds } from '@/helpers';\n\ndayjs.extend(isBetween);\n\nimport TimelineLoader from '../TimelineLoader';\n\nimport { TimelineElement, TimelineRow, TimelineTimeInfo, TimelineWrapper } from './styled';\n\nexport interface TimelineProps {\n title: string;\n shift: NormalizedShift | null;\n statusChanges: ListStatusChanges_StatusChange[];\n loading?: boolean;\n}\n\nconst Timeline: React.FC<TimelineProps> = ({ title, shift, statusChanges, loading }) => {\n const [shiftStatusChanges, setShiftStatusChanges] = useState<ListStatusChanges_StatusChange[]>([]);\n const calculateShiftDuration = useCallback(() => {\n return shift ? Math.abs(shift.startedAt.diff(shift.finishedAt, 'seconds')) : 0;\n }, [shift]);\n const isShiftStatusChange = useCallback(\n (statusChange: ListStatusChanges_StatusChange) => {\n const startedAt = dayjs(statusChange.startedAt);\n const finishedAt = statusChange.finishedAt ? dayjs(statusChange.finishedAt) : null;\n\n if (shift) {\n return (\n startedAt.isBetween(shift.startedAt, shift.finishedAt) ||\n finishedAt?.isBetween(shift.startedAt, shift.finishedAt) ||\n (startedAt.isBefore(shift.startedAt) && !finishedAt)\n );\n }\n return false;\n },\n [shift],\n );\n const [shiftDuration, setShiftDuration] = useState<number>(() => calculateShiftDuration());\n\n useEffect(() => {\n setShiftDuration(calculateShiftDuration());\n }, [shift, calculateShiftDuration]);\n\n useEffect(() => {\n setShiftStatusChanges(statusChanges.filter((statusChange) => isShiftStatusChange(statusChange)));\n }, [statusChanges, isShiftStatusChange]);\n\n if (loading) return <TimelineLoader />;\n\n return (\n <TimelineRow>\n <Typography\n sx={{\n display: title ? 'block' : 'none',\n flexBasis: '25%',\n marginLeft: '20px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n color: 'white',\n }}\n >\n {title}\n </Typography>\n {shift && (\n <React.Fragment>\n <TimelineTimeInfo>{shift.startedAt.format('HH:mm')}</TimelineTimeInfo>\n <TimelineWrapper data-testid=\"timeline\">\n {shiftStatusChanges?.map(\n (status) =>\n status.reason.statusColor && (\n <TimelineElement\n data-testid={`timeline-element-${status.id}-color-${status.reason.statusColor}`}\n key={`${status.id}${status.author.id}`}\n color={status.reason.statusColor}\n percentWidth={Math.min((durationSeconds(shift, status, new Date()) / shiftDuration) * 100, 100)}\n />\n ),\n )}\n </TimelineWrapper>\n <TimelineTimeInfo>{shift.finishedAt.format('HH:mm')}</TimelineTimeInfo>\n </React.Fragment>\n )}\n </TimelineRow>\n );\n};\n\nexport default Timeline;\n","import React, { useEffect, useState } from 'react';\n\nimport { Box } from '@mui/material';\nimport { getCurrentShift, NormalizedShift, normalizeShifts } from 'andoncloud-dashboard-toolkit';\nimport dayjs from 'dayjs';\n\nimport { WidgetViewProps } from '@/types';\n\nimport Timeline from '../Timeline';\n\nconst WidgetView: React.FC<WidgetViewProps> = ({ data, settings }) => {\n const [currentShift, setCurrentShift] = useState<NormalizedShift | null>(null);\n const getTitle = (workplaceId: string) => {\n const workplaces = data.workplaces;\n\n return settings?.workplacesIds?.length === 1\n ? ''\n : workplaces?.find((workplace) => workplace.id === workplaceId)?.name || '';\n };\n\n useEffect(() => {\n const updateCurrentShift = () => {\n const currentDate = dayjs();\n\n setCurrentShift(getCurrentShift(currentDate, normalizeShifts(data?.shifts || [], currentDate)));\n };\n const intervalId = setInterval(() => updateCurrentShift(), 10 * 1000);\n\n updateCurrentShift();\n\n return () => {\n clearInterval(intervalId);\n };\n }, [data?.shifts]);\n\n return (\n <Box display=\"flex\" flexDirection=\"column\" height=\"100%\">\n {settings?.workplacesIds.map((workplaceId) => (\n <Timeline\n key={workplaceId}\n title={getTitle(workplaceId)}\n shift={currentShift}\n statusChanges={data.statusChanges?.filter((statusChange) => statusChange.workplaceId === workplaceId) || []}\n loading={data === undefined}\n />\n ))}\n </Box>\n );\n};\n\nexport default WidgetView;\n","/**\n * Based on Kendo UI Core expression code <https://github.com/telerik/kendo-ui-core#license-information>\n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","const reWords = /[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['’](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['’](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+|(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*/g\n\nconst words = (str) => str.match(reWords) || []\n\nconst upperFirst = (str) => str[0].toUpperCase() + str.slice(1)\n\nconst join = (str, d) => words(str).join(d).toLowerCase()\n\nconst camelCase = (str) =>\n words(str).reduce(\n (acc, next) =>\n `${acc}${\n !acc\n ? next.toLowerCase()\n : next[0].toUpperCase() + next.slice(1).toLowerCase()\n }`,\n '',\n )\n\nconst pascalCase = (str) => upperFirst(camelCase(str))\n\nconst snakeCase = (str) => join(str, '_')\n\nconst kebabCase = (str) => join(str, '-')\n\nconst sentenceCase = (str) => upperFirst(join(str, ' '))\n\nconst titleCase = (str) => words(str).map(upperFirst).join(' ')\n\nmodule.exports = {\n words,\n upperFirst,\n camelCase,\n pascalCase,\n snakeCase,\n kebabCase,\n sentenceCase,\n titleCase,\n}\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","import { getter, forEach, split, normalizePath, join } from 'property-expr';\nimport { camelCase, snakeCase } from 'tiny-case';\nimport toposort from 'toposort';\n\nconst toString = Object.prototype.toString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\nfunction printSimpleValue(val, quoteStrings = false) {\n if (val == null || val === true || val === false) return '' + val;\n const typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n const tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\nfunction printValue(value, quoteStrings) {\n let result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n let result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}\n\nfunction toArray(value) {\n return value == null ? [] : [].concat(value);\n}\n\nlet _Symbol$toStringTag, _Symbol$hasInstance, _Symbol$toStringTag2;\nlet strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\n_Symbol$toStringTag = Symbol.toStringTag;\nclass ValidationErrorNoStack {\n constructor(errorOrErrors, value, field, type) {\n this.name = void 0;\n this.message = void 0;\n this.value = void 0;\n this.path = void 0;\n this.type = void 0;\n this.params = void 0;\n this.errors = void 0;\n this.inner = void 0;\n this[_Symbol$toStringTag] = 'Error';\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n toArray(errorOrErrors).forEach(err => {\n if (ValidationError.isError(err)) {\n this.errors.push(...err.errors);\n const innerErrors = err.inner.length ? err.inner : [err];\n this.inner.push(...innerErrors);\n } else {\n this.errors.push(err);\n }\n });\n this.message = this.errors.length > 1 ? `${this.errors.length} errors occurred` : this.errors[0];\n }\n}\n_Symbol$hasInstance = Symbol.hasInstance;\n_Symbol$toStringTag2 = Symbol.toStringTag;\nclass ValidationError extends Error {\n static formatError(message, params) {\n // Attempt to make the path more friendly for error message interpolation.\n const path = params.label || params.path || 'this';\n // Store the original path under `originalPath` so it isn't lost to custom\n // message functions; e.g., ones provided in `setLocale()` calls.\n params = Object.assign({}, params, {\n path,\n originalPath: params.path\n });\n if (typeof message === 'string') return message.replace(strReg, (_, key) => printValue(params[key]));\n if (typeof message === 'function') return message(params);\n return message;\n }\n static isError(err) {\n return err && err.name === 'ValidationError';\n }\n constructor(errorOrErrors, value, field, type, disableStack) {\n const errorNoStack = new ValidationErrorNoStack(errorOrErrors, value, field, type);\n if (disableStack) {\n return errorNoStack;\n }\n super();\n this.value = void 0;\n this.path = void 0;\n this.type = void 0;\n this.params = void 0;\n this.errors = [];\n this.inner = [];\n this[_Symbol$toStringTag2] = 'Error';\n this.name = errorNoStack.name;\n this.message = errorNoStack.message;\n this.type = errorNoStack.type;\n this.value = errorNoStack.value;\n this.path = errorNoStack.path;\n this.errors = errorNoStack.errors;\n this.inner = errorNoStack.inner;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ValidationError);\n }\n }\n static [_Symbol$hasInstance](inst) {\n return ValidationErrorNoStack[Symbol.hasInstance](inst) || super[Symbol.hasInstance](inst);\n }\n}\n\nlet mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n defined: '${path} must be defined',\n notNull: '${path} cannot be null',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: ({\n path,\n type,\n value,\n originalValue\n }) => {\n const castMsg = originalValue != null && originalValue !== value ? ` (cast from the value \\`${printValue(originalValue, true)}\\`).` : '.';\n return type !== 'mixed' ? `${path} must be a \\`${type}\\` type, ` + `but the final value was: \\`${printValue(value, true)}\\`` + castMsg : `${path} must match the configured type. ` + `The validated value was: \\`${printValue(value, true)}\\`` + castMsg;\n }\n};\nlet string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n datetime: '${path} must be a valid ISO date-time',\n datetime_precision: '${path} must be a valid ISO date-time with a sub-second precision of exactly ${precision} digits',\n datetime_offset: '${path} must be a valid ISO date-time with UTC \"Z\" timezone',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nlet number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nlet date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nlet boolean = {\n isValue: '${path} field must be ${value}'\n};\nlet object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}',\n exact: '${path} object contains unknown properties: ${properties}'\n};\nlet array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items',\n length: '${path} must have ${length} items'\n};\nlet tuple = {\n notType: params => {\n const {\n path,\n value,\n spec\n } = params;\n const typeLen = spec.types.length;\n if (Array.isArray(value)) {\n if (value.length < typeLen) return `${path} tuple value has too few items, expected a length of ${typeLen} but got ${value.length} for value: \\`${printValue(value, true)}\\``;\n if (value.length > typeLen) return `${path} tuple value has too many items, expected a length of ${typeLen} but got ${value.length} for value: \\`${printValue(value, true)}\\``;\n }\n return ValidationError.formatError(mixed.notType, params);\n }\n};\nvar locale = Object.assign(Object.create(null), {\n mixed,\n string,\n number,\n date,\n object,\n array,\n boolean,\n tuple\n});\n\nconst isSchema = obj => obj && obj.__isYupSchema__;\n\nclass Condition {\n static fromOptions(refs, config) {\n if (!config.then && !config.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n let {\n is,\n then,\n otherwise\n } = config;\n let check = typeof is === 'function' ? is : (...values) => values.every(value => value === is);\n return new Condition(refs, (values, schema) => {\n var _branch;\n let branch = check(...values) ? then : otherwise;\n return (_branch = branch == null ? void 0 : branch(schema)) != null ? _branch : schema;\n });\n }\n constructor(refs, builder) {\n this.fn = void 0;\n this.refs = refs;\n this.refs = refs;\n this.fn = builder;\n }\n resolve(base, options) {\n let values = this.refs.map(ref =>\n // TODO: ? operator here?\n ref.getValue(options == null ? void 0 : options.value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context));\n let schema = this.fn(values, base, options);\n if (schema === undefined ||\n // @ts-ignore this can be base\n schema === base) {\n return base;\n }\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n }\n}\n\nconst prefixes = {\n context: '$',\n value: '.'\n};\nfunction create$9(key, options) {\n return new Reference(key, options);\n}\nclass Reference {\n constructor(key, options = {}) {\n this.key = void 0;\n this.isContext = void 0;\n this.isValue = void 0;\n this.isSibling = void 0;\n this.path = void 0;\n this.getter = void 0;\n this.map = void 0;\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n let prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n getValue(value, parent, context) {\n let result = this.isContext ? context : this.isValue ? value : parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n }\n\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {Object=} options.context\n * @param {Object=} options.parent\n */\n cast(value, options) {\n return this.getValue(value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n }\n resolve() {\n return this;\n }\n describe() {\n return {\n type: 'ref',\n key: this.key\n };\n }\n toString() {\n return `Ref(${this.key})`;\n }\n static isRef(value) {\n return value && value.__isYupRef;\n }\n}\n\n// @ts-ignore\nReference.prototype.__isYupRef = true;\n\nconst isAbsent = value => value == null;\n\nfunction createValidation(config) {\n function validate({\n value,\n path = '',\n options,\n originalValue,\n schema\n }, panic, next) {\n const {\n name,\n test,\n params,\n message,\n skipAbsent\n } = config;\n let {\n parent,\n context,\n abortEarly = schema.spec.abortEarly,\n disableStackTrace = schema.spec.disableStackTrace\n } = options;\n const resolveOptions = {\n value,\n parent,\n context\n };\n function createError(overrides = {}) {\n const nextParams = resolveParams(Object.assign({\n value,\n originalValue,\n label: schema.spec.label,\n path: overrides.path || path,\n spec: schema.spec,\n disableStackTrace: overrides.disableStackTrace || disableStackTrace\n }, params, overrides.params), resolveOptions);\n const error = new ValidationError(ValidationError.formatError(overrides.message || message, nextParams), value, nextParams.path, overrides.type || name, nextParams.disableStackTrace);\n error.params = nextParams;\n return error;\n }\n const invalid = abortEarly ? panic : next;\n let ctx = {\n path,\n parent,\n type: name,\n from: options.from,\n createError,\n resolve(item) {\n return resolveMaybeRef(item, resolveOptions);\n },\n options,\n originalValue,\n schema\n };\n const handleResult = validOrError => {\n if (ValidationError.isError(validOrError)) invalid(validOrError);else if (!validOrError) invalid(createError());else next(null);\n };\n const handleError = err => {\n if (ValidationError.isError(err)) invalid(err);else panic(err);\n };\n const shouldSkip = skipAbsent && isAbsent(value);\n if (shouldSkip) {\n return handleResult(true);\n }\n let result;\n try {\n var _result;\n result = test.call(ctx, value, ctx);\n if (typeof ((_result = result) == null ? void 0 : _result.then) === 'function') {\n if (options.sync) {\n throw new Error(`Validation test of type: \"${ctx.type}\" returned a Promise during a synchronous validate. ` + `This test will finish after the validate call has returned`);\n }\n return Promise.resolve(result).then(handleResult, handleError);\n }\n } catch (err) {\n handleError(err);\n return;\n }\n handleResult(result);\n }\n validate.OPTIONS = config;\n return validate;\n}\n\n// Warning: mutates the input\nfunction resolveParams(params, options) {\n if (!params) return params;\n for (const key of Object.keys(params)) {\n params[key] = resolveMaybeRef(params[key], options);\n }\n return params;\n}\nfunction resolveMaybeRef(item, options) {\n return Reference.isRef(item) ? item.getValue(options.value, options.parent, options.context) : item;\n}\n\nfunction getIn(schema, path, value, context = value) {\n let parent, lastPart, lastPartDebug;\n\n // root path: ''\n if (!path) return {\n parent,\n parentPath: path,\n schema\n };\n forEach(path, (_part, isBracket, isArray) => {\n let part = isBracket ? _part.slice(1, _part.length - 1) : _part;\n schema = schema.resolve({\n context,\n parent,\n value\n });\n let isTuple = schema.type === 'tuple';\n let idx = isArray ? parseInt(part, 10) : 0;\n if (schema.innerType || isTuple) {\n if (isTuple && !isArray) throw new Error(`Yup.reach cannot implicitly index into a tuple type. the path part \"${lastPartDebug}\" must contain an index to the tuple element, e.g. \"${lastPartDebug}[0]\"`);\n if (value && idx >= value.length) {\n throw new Error(`Yup.reach cannot resolve an array item at index: ${_part}, in the path: ${path}. ` + `because there is no value at that index. `);\n }\n parent = value;\n value = value && value[idx];\n schema = isTuple ? schema.spec.types[idx] : schema.innerType;\n }\n\n // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(`The schema does not contain the path: ${path}. ` + `(failed at: ${lastPartDebug} which is a type: \"${schema.type}\")`);\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema,\n parent,\n parentPath: lastPart\n };\n}\nfunction reach(obj, path, value, context) {\n return getIn(obj, path, value, context).schema;\n}\n\nclass ReferenceSet extends Set {\n describe() {\n const description = [];\n for (const item of this.values()) {\n description.push(Reference.isRef(item) ? item.describe() : item);\n }\n return description;\n }\n resolveAll(resolve) {\n let result = [];\n for (const item of this.values()) {\n result.push(resolve(item));\n }\n return result;\n }\n clone() {\n return new ReferenceSet(this.values());\n }\n merge(newItems, removeItems) {\n const next = this.clone();\n newItems.forEach(value => next.add(value));\n removeItems.forEach(value => next.delete(value));\n return next;\n }\n}\n\n// tweaked from https://github.com/Kelin2025/nanoclone/blob/0abeb7635bda9b68ef2277093f76dbe3bf3948e1/src/index.js\nfunction clone(src, seen = new Map()) {\n if (isSchema(src) || !src || typeof src !== 'object') return src;\n if (seen.has(src)) return seen.get(src);\n let copy;\n if (src instanceof Date) {\n // Date\n copy = new Date(src.getTime());\n seen.set(src, copy);\n } else if (src instanceof RegExp) {\n // RegExp\n copy = new RegExp(src);\n seen.set(src, copy);\n } else if (Array.isArray(src)) {\n // Array\n copy = new Array(src.length);\n seen.set(src, copy);\n for (let i = 0; i < src.length; i++) copy[i] = clone(src[i], seen);\n } else if (src instanceof Map) {\n // Map\n copy = new Map();\n seen.set(src, copy);\n for (const [k, v] of src.entries()) copy.set(k, clone(v, seen));\n } else if (src instanceof Set) {\n // Set\n copy = new Set();\n seen.set(src, copy);\n for (const v of src) copy.add(clone(v, seen));\n } else if (src instanceof Object) {\n // Object\n copy = {};\n seen.set(src, copy);\n for (const [k, v] of Object.entries(src)) copy[k] = clone(v, seen);\n } else {\n throw Error(`Unable to clone ${src}`);\n }\n return copy;\n}\n\n/**\n * Copied from @standard-schema/spec to avoid having a dependency on it.\n * https://github.com/standard-schema/standard-schema/blob/main/packages/spec/src/index.ts\n */\n\nfunction createStandardPath(path) {\n if (!(path != null && path.length)) {\n return undefined;\n }\n\n // Array to store the final path segments\n const segments = [];\n // Buffer for building the current segment\n let currentSegment = '';\n // Track if we're inside square brackets (array/property access)\n let inBrackets = false;\n // Track if we're inside quotes (for property names with special chars)\n let inQuotes = false;\n for (let i = 0; i < path.length; i++) {\n const char = path[i];\n if (char === '[' && !inQuotes) {\n // When entering brackets, push any accumulated segment after splitting on dots\n if (currentSegment) {\n segments.push(...currentSegment.split('.').filter(Boolean));\n currentSegment = '';\n }\n inBrackets = true;\n continue;\n }\n if (char === ']' && !inQuotes) {\n if (currentSegment) {\n // Handle numeric indices (e.g. arr[0])\n if (/^\\d+$/.test(currentSegment)) {\n segments.push(currentSegment);\n } else {\n // Handle quoted property names (e.g. obj[\"foo.bar\"])\n segments.push(currentSegment.replace(/^\"|\"$/g, ''));\n }\n currentSegment = '';\n }\n inBrackets = false;\n continue;\n }\n if (char === '\"') {\n // Toggle quote state for handling quoted property names\n inQuotes = !inQuotes;\n continue;\n }\n if (char === '.' && !inBrackets && !inQuotes) {\n // On dots outside brackets/quotes, push current segment\n if (currentSegment) {\n segments.push(currentSegment);\n currentSegment = '';\n }\n continue;\n }\n currentSegment += char;\n }\n\n // Push any remaining segment after splitting on dots\n if (currentSegment) {\n segments.push(...currentSegment.split('.').filter(Boolean));\n }\n return segments;\n}\nfunction createStandardIssues(error, parentPath) {\n const path = parentPath ? `${parentPath}.${error.path}` : error.path;\n return error.errors.map(err => ({\n message: err,\n path: createStandardPath(path)\n }));\n}\nfunction issuesFromValidationError(error, parentPath) {\n var _error$inner;\n if (!((_error$inner = error.inner) != null && _error$inner.length) && error.errors.length) {\n return createStandardIssues(error, parentPath);\n }\n const path = parentPath ? `${parentPath}.${error.path}` : error.path;\n return error.inner.flatMap(err => issuesFromValidationError(err, path));\n}\n\n// If `CustomSchemaMeta` isn't extended with any keys, we'll fall back to a\n// loose Record definition allowing free form usage.\nclass Schema {\n constructor(options) {\n this.type = void 0;\n this.deps = [];\n this.tests = void 0;\n this.transforms = void 0;\n this.conditions = [];\n this._mutate = void 0;\n this.internalTests = {};\n this._whitelist = new ReferenceSet();\n this._blacklist = new ReferenceSet();\n this.exclusiveTests = Object.create(null);\n this._typeCheck = void 0;\n this.spec = void 0;\n this.tests = [];\n this.transforms = [];\n this.withMutation(() => {\n this.typeError(mixed.notType);\n });\n this.type = options.type;\n this._typeCheck = options.check;\n this.spec = Object.assign({\n strip: false,\n strict: false,\n abortEarly: true,\n recursive: true,\n disableStackTrace: false,\n nullable: false,\n optional: true,\n coerce: true\n }, options == null ? void 0 : options.spec);\n this.withMutation(s => {\n s.nonNullable();\n });\n }\n\n // TODO: remove\n get _type() {\n return this.type;\n }\n clone(spec) {\n if (this._mutate) {\n if (spec) Object.assign(this.spec, spec);\n return this;\n }\n\n // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n const next = Object.create(Object.getPrototypeOf(this));\n\n // @ts-expect-error this is readonly\n next.type = this.type;\n next._typeCheck = this._typeCheck;\n next._whitelist = this._whitelist.clone();\n next._blacklist = this._blacklist.clone();\n next.internalTests = Object.assign({}, this.internalTests);\n next.exclusiveTests = Object.assign({}, this.exclusiveTests);\n\n // @ts-expect-error this is readonly\n next.deps = [...this.deps];\n next.conditions = [...this.conditions];\n next.tests = [...this.tests];\n next.transforms = [...this.transforms];\n next.spec = clone(Object.assign({}, this.spec, spec));\n return next;\n }\n label(label) {\n let next = this.clone();\n next.spec.label = label;\n return next;\n }\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n }\n withMutation(fn) {\n let before = this._mutate;\n this._mutate = true;\n let result = fn(this);\n this._mutate = before;\n return result;\n }\n concat(schema) {\n if (!schema || schema === this) return this;\n if (schema.type !== this.type && this.type !== 'mixed') throw new TypeError(`You cannot \\`concat()\\` schema's of different types: ${this.type} and ${schema.type}`);\n let base = this;\n let combined = schema.clone();\n const mergedSpec = Object.assign({}, base.spec, combined.spec);\n combined.spec = mergedSpec;\n combined.internalTests = Object.assign({}, base.internalTests, combined.internalTests);\n\n // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n combined._whitelist = base._whitelist.merge(schema._whitelist, schema._blacklist);\n combined._blacklist = base._blacklist.merge(schema._blacklist, schema._whitelist);\n\n // start with the current tests\n combined.tests = base.tests;\n combined.exclusiveTests = base.exclusiveTests;\n\n // manually add the new tests to ensure\n // the deduping logic is consistent\n combined.withMutation(next => {\n schema.tests.forEach(fn => {\n next.test(fn.OPTIONS);\n });\n });\n combined.transforms = [...base.transforms, ...combined.transforms];\n return combined;\n }\n isType(v) {\n if (v == null) {\n if (this.spec.nullable && v === null) return true;\n if (this.spec.optional && v === undefined) return true;\n return false;\n }\n return this._typeCheck(v);\n }\n resolve(options) {\n let schema = this;\n if (schema.conditions.length) {\n let conditions = schema.conditions;\n schema = schema.clone();\n schema.conditions = [];\n schema = conditions.reduce((prevSchema, condition) => condition.resolve(prevSchema, options), schema);\n schema = schema.resolve(options);\n }\n return schema;\n }\n resolveOptions(options) {\n var _options$strict, _options$abortEarly, _options$recursive, _options$disableStack;\n return Object.assign({}, options, {\n from: options.from || [],\n strict: (_options$strict = options.strict) != null ? _options$strict : this.spec.strict,\n abortEarly: (_options$abortEarly = options.abortEarly) != null ? _options$abortEarly : this.spec.abortEarly,\n recursive: (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive,\n disableStackTrace: (_options$disableStack = options.disableStackTrace) != null ? _options$disableStack : this.spec.disableStackTrace\n });\n }\n\n /**\n * Run the configured transform pipeline over an input value.\n */\n\n cast(value, options = {}) {\n let resolvedSchema = this.resolve(Object.assign({}, options, {\n value\n // parent: options.parent,\n // context: options.context,\n }));\n\n let allowOptionality = options.assert === 'ignore-optionality';\n let result = resolvedSchema._cast(value, options);\n if (options.assert !== false && !resolvedSchema.isType(result)) {\n if (allowOptionality && isAbsent(result)) {\n return result;\n }\n let formattedValue = printValue(value);\n let formattedResult = printValue(result);\n throw new TypeError(`The value of ${options.path || 'field'} could not be cast to a value ` + `that satisfies the schema type: \"${resolvedSchema.type}\". \\n\\n` + `attempted value: ${formattedValue} \\n` + (formattedResult !== formattedValue ? `result of cast: ${formattedResult}` : ''));\n }\n return result;\n }\n _cast(rawValue, options) {\n let value = rawValue === undefined ? rawValue : this.transforms.reduce((prevValue, fn) => fn.call(this, prevValue, rawValue, this, options), rawValue);\n if (value === undefined) {\n value = this.getDefault(options);\n }\n return value;\n }\n _validate(_value, options = {}, panic, next) {\n let {\n path,\n originalValue = _value,\n strict = this.spec.strict\n } = options;\n let value = _value;\n if (!strict) {\n value = this._cast(value, Object.assign({\n assert: false\n }, options));\n }\n let initialTests = [];\n for (let test of Object.values(this.internalTests)) {\n if (test) initialTests.push(test);\n }\n this.runTests({\n path,\n value,\n originalValue,\n options,\n tests: initialTests\n }, panic, initialErrors => {\n // even if we aren't ending early we can't proceed further if the types aren't correct\n if (initialErrors.length) {\n return next(initialErrors, value);\n }\n this.runTests({\n path,\n value,\n originalValue,\n options,\n tests: this.tests\n }, panic, next);\n });\n }\n\n /**\n * Executes a set of validations, either schema, produced Tests or a nested\n * schema validate result.\n */\n runTests(runOptions, panic, next) {\n let fired = false;\n let {\n tests,\n value,\n originalValue,\n path,\n options\n } = runOptions;\n let panicOnce = arg => {\n if (fired) return;\n fired = true;\n panic(arg, value);\n };\n let nextOnce = arg => {\n if (fired) return;\n fired = true;\n next(arg, value);\n };\n let count = tests.length;\n let nestedErrors = [];\n if (!count) return nextOnce([]);\n let args = {\n value,\n originalValue,\n path,\n options,\n schema: this\n };\n for (let i = 0; i < tests.length; i++) {\n const test = tests[i];\n test(args, panicOnce, function finishTestRun(err) {\n if (err) {\n Array.isArray(err) ? nestedErrors.push(...err) : nestedErrors.push(err);\n }\n if (--count <= 0) {\n nextOnce(nestedErrors);\n }\n });\n }\n }\n asNestedTest({\n key,\n index,\n parent,\n parentPath,\n originalParent,\n options\n }) {\n const k = key != null ? key : index;\n if (k == null) {\n throw TypeError('Must include `key` or `index` for nested validations');\n }\n const isIndex = typeof k === 'number';\n let value = parent[k];\n const testOptions = Object.assign({}, options, {\n // Nested validations fields are always strict:\n // 1. parent isn't strict so the casting will also have cast inner values\n // 2. parent is strict in which case the nested values weren't cast either\n strict: true,\n parent,\n value,\n originalValue: originalParent[k],\n // FIXME: tests depend on `index` being passed around deeply,\n // we should not let the options.key/index bleed through\n key: undefined,\n // index: undefined,\n [isIndex ? 'index' : 'key']: k,\n path: isIndex || k.includes('.') ? `${parentPath || ''}[${isIndex ? k : `\"${k}\"`}]` : (parentPath ? `${parentPath}.` : '') + key\n });\n return (_, panic, next) => this.resolve(testOptions)._validate(value, testOptions, panic, next);\n }\n validate(value, options) {\n var _options$disableStack2;\n let schema = this.resolve(Object.assign({}, options, {\n value\n }));\n let disableStackTrace = (_options$disableStack2 = options == null ? void 0 : options.disableStackTrace) != null ? _options$disableStack2 : schema.spec.disableStackTrace;\n return new Promise((resolve, reject) => schema._validate(value, options, (error, parsed) => {\n if (ValidationError.isError(error)) error.value = parsed;\n reject(error);\n }, (errors, validated) => {\n if (errors.length) reject(new ValidationError(errors, validated, undefined, undefined, disableStackTrace));else resolve(validated);\n }));\n }\n validateSync(value, options) {\n var _options$disableStack3;\n let schema = this.resolve(Object.assign({}, options, {\n value\n }));\n let result;\n let disableStackTrace = (_options$disableStack3 = options == null ? void 0 : options.disableStackTrace) != null ? _options$disableStack3 : schema.spec.disableStackTrace;\n schema._validate(value, Object.assign({}, options, {\n sync: true\n }), (error, parsed) => {\n if (ValidationError.isError(error)) error.value = parsed;\n throw error;\n }, (errors, validated) => {\n if (errors.length) throw new ValidationError(errors, value, undefined, undefined, disableStackTrace);\n result = validated;\n });\n return result;\n }\n isValid(value, options) {\n return this.validate(value, options).then(() => true, err => {\n if (ValidationError.isError(err)) return false;\n throw err;\n });\n }\n isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (ValidationError.isError(err)) return false;\n throw err;\n }\n }\n _getDefault(options) {\n let defaultValue = this.spec.default;\n if (defaultValue == null) {\n return defaultValue;\n }\n return typeof defaultValue === 'function' ? defaultValue.call(this, options) : clone(defaultValue);\n }\n getDefault(options\n // If schema is defaulted we know it's at least not undefined\n ) {\n let schema = this.resolve(options || {});\n return schema._getDefault(options);\n }\n default(def) {\n if (arguments.length === 0) {\n return this._getDefault();\n }\n let next = this.clone({\n default: def\n });\n return next;\n }\n strict(isStrict = true) {\n return this.clone({\n strict: isStrict\n });\n }\n nullability(nullable, message) {\n const next = this.clone({\n nullable\n });\n next.internalTests.nullable = createValidation({\n message,\n name: 'nullable',\n test(value) {\n return value === null ? this.schema.spec.nullable : true;\n }\n });\n return next;\n }\n optionality(optional, message) {\n const next = this.clone({\n optional\n });\n next.internalTests.optionality = createValidation({\n message,\n name: 'optionality',\n test(value) {\n return value === undefined ? this.schema.spec.optional : true;\n }\n });\n return next;\n }\n optional() {\n return this.optionality(true);\n }\n defined(message = mixed.defined) {\n return this.optionality(false, message);\n }\n nullable() {\n return this.nullability(true);\n }\n nonNullable(message = mixed.notNull) {\n return this.nullability(false, message);\n }\n required(message = mixed.required) {\n return this.clone().withMutation(next => next.nonNullable(message).defined(message));\n }\n notRequired() {\n return this.clone().withMutation(next => next.nullable().optional());\n }\n transform(fn) {\n let next = this.clone();\n next.transforms.push(fn);\n return next;\n }\n\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n\n test(...args) {\n let opts;\n if (args.length === 1) {\n if (typeof args[0] === 'function') {\n opts = {\n test: args[0]\n };\n } else {\n opts = args[0];\n }\n } else if (args.length === 2) {\n opts = {\n name: args[0],\n test: args[1]\n };\n } else {\n opts = {\n name: args[0],\n message: args[1],\n test: args[2]\n };\n }\n if (opts.message === undefined) opts.message = mixed.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n let next = this.clone();\n let validate = createValidation(opts);\n let isExclusive = opts.exclusive || opts.name && next.exclusiveTests[opts.name] === true;\n if (opts.exclusive) {\n if (!opts.name) throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n if (opts.name) next.exclusiveTests[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(fn => {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n return true;\n });\n next.tests.push(validate);\n return next;\n }\n when(keys, options) {\n if (!Array.isArray(keys) && typeof keys !== 'string') {\n options = keys;\n keys = '.';\n }\n let next = this.clone();\n let deps = toArray(keys).map(key => new Reference(key));\n deps.forEach(dep => {\n // @ts-ignore readonly array\n if (dep.isSibling) next.deps.push(dep.key);\n });\n next.conditions.push(typeof options === 'function' ? new Condition(deps, options) : Condition.fromOptions(deps, options));\n return next;\n }\n typeError(message) {\n let next = this.clone();\n next.internalTests.typeError = createValidation({\n message,\n name: 'typeError',\n skipAbsent: true,\n test(value) {\n if (!this.schema._typeCheck(value)) return this.createError({\n params: {\n type: this.schema.type\n }\n });\n return true;\n }\n });\n return next;\n }\n oneOf(enums, message = mixed.oneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._whitelist.add(val);\n next._blacklist.delete(val);\n });\n next.internalTests.whiteList = createValidation({\n message,\n name: 'oneOf',\n skipAbsent: true,\n test(value) {\n let valids = this.schema._whitelist;\n let resolved = valids.resolveAll(this.resolve);\n return resolved.includes(value) ? true : this.createError({\n params: {\n values: Array.from(valids).join(', '),\n resolved\n }\n });\n }\n });\n return next;\n }\n notOneOf(enums, message = mixed.notOneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._blacklist.add(val);\n next._whitelist.delete(val);\n });\n next.internalTests.blacklist = createValidation({\n message,\n name: 'notOneOf',\n test(value) {\n let invalids = this.schema._blacklist;\n let resolved = invalids.resolveAll(this.resolve);\n if (resolved.includes(value)) return this.createError({\n params: {\n values: Array.from(invalids).join(', '),\n resolved\n }\n });\n return true;\n }\n });\n return next;\n }\n strip(strip = true) {\n let next = this.clone();\n next.spec.strip = strip;\n return next;\n }\n\n /**\n * Return a serialized description of the schema including validations, flags, types etc.\n *\n * @param options Provide any needed context for resolving runtime schema alterations (lazy, when conditions, etc).\n */\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const {\n label,\n meta,\n optional,\n nullable\n } = next.spec;\n const description = {\n meta,\n label,\n optional,\n nullable,\n default: next.getDefault(options),\n type: next.type,\n oneOf: next._whitelist.describe(),\n notOneOf: next._blacklist.describe(),\n tests: next.tests.filter((n, idx, list) => list.findIndex(c => c.OPTIONS.name === n.OPTIONS.name) === idx).map(fn => {\n const params = fn.OPTIONS.params && options ? resolveParams(Object.assign({}, fn.OPTIONS.params), options) : fn.OPTIONS.params;\n return {\n name: fn.OPTIONS.name,\n params\n };\n })\n };\n return description;\n }\n get ['~standard']() {\n const schema = this;\n const standard = {\n version: 1,\n vendor: 'yup',\n async validate(value) {\n try {\n const result = await schema.validate(value, {\n abortEarly: false\n });\n return {\n value: result\n };\n } catch (err) {\n if (err instanceof ValidationError) {\n return {\n issues: issuesFromValidationError(err)\n };\n }\n throw err;\n }\n }\n };\n return standard;\n }\n}\n// @ts-expect-error\nSchema.prototype.__isYupSchema__ = true;\nfor (const method of ['validate', 'validateSync']) Schema.prototype[`${method}At`] = function (path, value, options = {}) {\n const {\n parent,\n parentPath,\n schema\n } = getIn(this, path, value, options.context);\n return schema[method](parent && parent[parentPath], Object.assign({}, options, {\n parent,\n path\n }));\n};\nfor (const alias of ['equals', 'is']) Schema.prototype[alias] = Schema.prototype.oneOf;\nfor (const alias of ['not', 'nope']) Schema.prototype[alias] = Schema.prototype.notOneOf;\n\nconst returnsTrue = () => true;\nfunction create$8(spec) {\n return new MixedSchema(spec);\n}\nclass MixedSchema extends Schema {\n constructor(spec) {\n super(typeof spec === 'function' ? {\n type: 'mixed',\n check: spec\n } : Object.assign({\n type: 'mixed',\n check: returnsTrue\n }, spec));\n }\n}\ncreate$8.prototype = MixedSchema.prototype;\n\nfunction create$7() {\n return new BooleanSchema();\n}\nclass BooleanSchema extends Schema {\n constructor() {\n super({\n type: 'boolean',\n check(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw) => {\n if (this.spec.coerce && !this.isType(value)) {\n if (/^(true|1)$/i.test(String(value))) return true;\n if (/^(false|0)$/i.test(String(value))) return false;\n }\n return value;\n });\n });\n }\n isTrue(message = boolean.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'true'\n },\n test(value) {\n return isAbsent(value) || value === true;\n }\n });\n }\n isFalse(message = boolean.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'false'\n },\n test(value) {\n return isAbsent(value) || value === false;\n }\n });\n }\n default(def) {\n return super.default(def);\n }\n defined(msg) {\n return super.defined(msg);\n }\n optional() {\n return super.optional();\n }\n required(msg) {\n return super.required(msg);\n }\n notRequired() {\n return super.notRequired();\n }\n nullable() {\n return super.nullable();\n }\n nonNullable(msg) {\n return super.nonNullable(msg);\n }\n strip(v) {\n return super.strip(v);\n }\n}\ncreate$7.prototype = BooleanSchema.prototype;\n\n/**\n * This file is a modified version of the file from the following repository:\n * Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>\n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover <http://zetafleet.com>\n * Released under MIT license.\n */\n\n// prettier-ignore\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nconst isoReg = /^(\\d{4}|[+-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,.](\\d{1,}))?)?(?:(Z)|([+-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nfunction parseIsoDate(date) {\n const struct = parseDateStruct(date);\n if (!struct) return Date.parse ? Date.parse(date) : Number.NaN;\n\n // timestamps without timezone identifiers should be considered local time\n if (struct.z === undefined && struct.plusMinus === undefined) {\n return new Date(struct.year, struct.month, struct.day, struct.hour, struct.minute, struct.second, struct.millisecond).valueOf();\n }\n let totalMinutesOffset = 0;\n if (struct.z !== 'Z' && struct.plusMinus !== undefined) {\n totalMinutesOffset = struct.hourOffset * 60 + struct.minuteOffset;\n if (struct.plusMinus === '+') totalMinutesOffset = 0 - totalMinutesOffset;\n }\n return Date.UTC(struct.year, struct.month, struct.day, struct.hour, struct.minute + totalMinutesOffset, struct.second, struct.millisecond);\n}\nfunction parseDateStruct(date) {\n var _regexResult$7$length, _regexResult$;\n const regexResult = isoReg.exec(date);\n if (!regexResult) return null;\n\n // use of toNumber() avoids NaN timestamps caused by “undefined”\n // values being passed to Date constructor\n return {\n year: toNumber(regexResult[1]),\n month: toNumber(regexResult[2], 1) - 1,\n day: toNumber(regexResult[3], 1),\n hour: toNumber(regexResult[4]),\n minute: toNumber(regexResult[5]),\n second: toNumber(regexResult[6]),\n millisecond: regexResult[7] ?\n // allow arbitrary sub-second precision beyond milliseconds\n toNumber(regexResult[7].substring(0, 3)) : 0,\n precision: (_regexResult$7$length = (_regexResult$ = regexResult[7]) == null ? void 0 : _regexResult$.length) != null ? _regexResult$7$length : undefined,\n z: regexResult[8] || undefined,\n plusMinus: regexResult[9] || undefined,\n hourOffset: toNumber(regexResult[10]),\n minuteOffset: toNumber(regexResult[11])\n };\n}\nfunction toNumber(str, defaultValue = 0) {\n return Number(str) || defaultValue;\n}\n\n// Taken from HTML spec: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address\nlet rEmail =\n// eslint-disable-next-line\n/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\nlet rUrl =\n// eslint-disable-next-line\n/^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i;\n\n// eslint-disable-next-line\nlet rUUID = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nlet yearMonthDay = '^\\\\d{4}-\\\\d{2}-\\\\d{2}';\nlet hourMinuteSecond = '\\\\d{2}:\\\\d{2}:\\\\d{2}';\nlet zOrOffset = '(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)';\nlet rIsoDateTime = new RegExp(`${yearMonthDay}T${hourMinuteSecond}(\\\\.\\\\d+)?${zOrOffset}$`);\nlet isTrimmed = value => isAbsent(value) || value === value.trim();\nlet objStringTag = {}.toString();\nfunction create$6() {\n return new StringSchema();\n}\nclass StringSchema extends Schema {\n constructor() {\n super({\n type: 'string',\n check(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw) => {\n if (!this.spec.coerce || this.isType(value)) return value;\n\n // don't ever convert arrays\n if (Array.isArray(value)) return value;\n const strValue = value != null && value.toString ? value.toString() : value;\n\n // no one wants plain objects converted to [Object object]\n if (strValue === objStringTag) return value;\n return strValue;\n });\n });\n }\n required(message) {\n return super.required(message).withMutation(schema => schema.test({\n message: message || mixed.required,\n name: 'required',\n skipAbsent: true,\n test: value => !!value.length\n }));\n }\n notRequired() {\n return super.notRequired().withMutation(schema => {\n schema.tests = schema.tests.filter(t => t.OPTIONS.name !== 'required');\n return schema;\n });\n }\n length(length, message = string.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n skipAbsent: true,\n test(value) {\n return value.length === this.resolve(length);\n }\n });\n }\n min(min, message = string.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value.length >= this.resolve(min);\n }\n });\n }\n max(max, message = string.max) {\n return this.test({\n name: 'max',\n exclusive: true,\n message,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value.length <= this.resolve(max);\n }\n });\n }\n matches(regex, options) {\n let excludeEmptyString = false;\n let message;\n let name;\n if (options) {\n if (typeof options === 'object') {\n ({\n excludeEmptyString = false,\n message,\n name\n } = options);\n } else {\n message = options;\n }\n }\n return this.test({\n name: name || 'matches',\n message: message || string.matches,\n params: {\n regex\n },\n skipAbsent: true,\n test: value => value === '' && excludeEmptyString || value.search(regex) !== -1\n });\n }\n email(message = string.email) {\n return this.matches(rEmail, {\n name: 'email',\n message,\n excludeEmptyString: true\n });\n }\n url(message = string.url) {\n return this.matches(rUrl, {\n name: 'url',\n message,\n excludeEmptyString: true\n });\n }\n uuid(message = string.uuid) {\n return this.matches(rUUID, {\n name: 'uuid',\n message,\n excludeEmptyString: false\n });\n }\n datetime(options) {\n let message = '';\n let allowOffset;\n let precision;\n if (options) {\n if (typeof options === 'object') {\n ({\n message = '',\n allowOffset = false,\n precision = undefined\n } = options);\n } else {\n message = options;\n }\n }\n return this.matches(rIsoDateTime, {\n name: 'datetime',\n message: message || string.datetime,\n excludeEmptyString: true\n }).test({\n name: 'datetime_offset',\n message: message || string.datetime_offset,\n params: {\n allowOffset\n },\n skipAbsent: true,\n test: value => {\n if (!value || allowOffset) return true;\n const struct = parseDateStruct(value);\n if (!struct) return false;\n return !!struct.z;\n }\n }).test({\n name: 'datetime_precision',\n message: message || string.datetime_precision,\n params: {\n precision\n },\n skipAbsent: true,\n test: value => {\n if (!value || precision == undefined) return true;\n const struct = parseDateStruct(value);\n if (!struct) return false;\n return struct.precision === precision;\n }\n });\n }\n\n //-- transforms --\n ensure() {\n return this.default('').transform(val => val === null ? '' : val);\n }\n trim(message = string.trim) {\n return this.transform(val => val != null ? val.trim() : val).test({\n message,\n name: 'trim',\n test: isTrimmed\n });\n }\n lowercase(message = string.lowercase) {\n return this.transform(value => !isAbsent(value) ? value.toLowerCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n skipAbsent: true,\n test: value => isAbsent(value) || value === value.toLowerCase()\n });\n }\n uppercase(message = string.uppercase) {\n return this.transform(value => !isAbsent(value) ? value.toUpperCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n skipAbsent: true,\n test: value => isAbsent(value) || value === value.toUpperCase()\n });\n }\n}\ncreate$6.prototype = StringSchema.prototype;\n\n//\n// String Interfaces\n//\n\nlet isNaN$1 = value => value != +value;\nfunction create$5() {\n return new NumberSchema();\n}\nclass NumberSchema extends Schema {\n constructor() {\n super({\n type: 'number',\n check(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN$1(value);\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw) => {\n if (!this.spec.coerce) return value;\n let parsed = value;\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN;\n // don't use parseFloat to avoid positives on alpha-numeric strings\n parsed = +parsed;\n }\n\n // null -> NaN isn't useful; treat all nulls as null and let it fail on\n // nullability check vs TypeErrors\n if (this.isType(parsed) || parsed === null) return parsed;\n return parseFloat(parsed);\n });\n });\n }\n min(min, message = number.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value >= this.resolve(min);\n }\n });\n }\n max(max, message = number.max) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value <= this.resolve(max);\n }\n });\n }\n lessThan(less, message = number.lessThan) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n less\n },\n skipAbsent: true,\n test(value) {\n return value < this.resolve(less);\n }\n });\n }\n moreThan(more, message = number.moreThan) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n more\n },\n skipAbsent: true,\n test(value) {\n return value > this.resolve(more);\n }\n });\n }\n positive(msg = number.positive) {\n return this.moreThan(0, msg);\n }\n negative(msg = number.negative) {\n return this.lessThan(0, msg);\n }\n integer(message = number.integer) {\n return this.test({\n name: 'integer',\n message,\n skipAbsent: true,\n test: val => Number.isInteger(val)\n });\n }\n truncate() {\n return this.transform(value => !isAbsent(value) ? value | 0 : value);\n }\n round(method) {\n var _method;\n let avail = ['ceil', 'floor', 'round', 'trunc'];\n method = ((_method = method) == null ? void 0 : _method.toLowerCase()) || 'round';\n\n // this exists for symemtry with the new Math.trunc\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(value => !isAbsent(value) ? Math[method](value) : value);\n }\n}\ncreate$5.prototype = NumberSchema.prototype;\n\n//\n// Number Interfaces\n//\n\nlet invalidDate = new Date('');\nlet isDate = obj => Object.prototype.toString.call(obj) === '[object Date]';\nfunction create$4() {\n return new DateSchema();\n}\nclass DateSchema extends Schema {\n constructor() {\n super({\n type: 'date',\n check(v) {\n return isDate(v) && !isNaN(v.getTime());\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw) => {\n // null -> InvalidDate isn't useful; treat all nulls as null and let it fail on\n // nullability check vs TypeErrors\n if (!this.spec.coerce || this.isType(value) || value === null) return value;\n value = parseIsoDate(value);\n\n // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n return !isNaN(value) ? new Date(value) : DateSchema.INVALID_DATE;\n });\n });\n }\n prepareParam(ref, name) {\n let param;\n if (!Reference.isRef(ref)) {\n let cast = this.cast(ref);\n if (!this._typeCheck(cast)) throw new TypeError(`\\`${name}\\` must be a Date or a value that can be \\`cast()\\` to a Date`);\n param = cast;\n } else {\n param = ref;\n }\n return param;\n }\n min(min, message = date.min) {\n let limit = this.prepareParam(min, 'min');\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value >= this.resolve(limit);\n }\n });\n }\n max(max, message = date.max) {\n let limit = this.prepareParam(max, 'max');\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value <= this.resolve(limit);\n }\n });\n }\n}\nDateSchema.INVALID_DATE = invalidDate;\ncreate$4.prototype = DateSchema.prototype;\ncreate$4.INVALID_DATE = invalidDate;\n\n// @ts-expect-error\nfunction sortFields(fields, excludedEdges = []) {\n let edges = [];\n let nodes = new Set();\n let excludes = new Set(excludedEdges.map(([a, b]) => `${a}-${b}`));\n function addNode(depPath, key) {\n let node = split(depPath)[0];\n nodes.add(node);\n if (!excludes.has(`${key}-${node}`)) edges.push([key, node]);\n }\n for (const key of Object.keys(fields)) {\n let value = fields[key];\n nodes.add(key);\n if (Reference.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && 'deps' in value) value.deps.forEach(path => addNode(path, key));\n }\n return toposort.array(Array.from(nodes), edges).reverse();\n}\n\nfunction findIndex(arr, err) {\n let idx = Infinity;\n arr.some((key, ii) => {\n var _err$path;\n if ((_err$path = err.path) != null && _err$path.includes(key)) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\nfunction sortByKeyOrder(keys) {\n return (a, b) => {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}\n\nconst parseJson = (value, _, schema) => {\n if (typeof value !== 'string') {\n return value;\n }\n let parsed = value;\n try {\n parsed = JSON.parse(value);\n } catch (err) {\n /* */\n }\n return schema.isType(parsed) ? parsed : value;\n};\n\n// @ts-ignore\nfunction deepPartial(schema) {\n if ('fields' in schema) {\n const partial = {};\n for (const [key, fieldSchema] of Object.entries(schema.fields)) {\n partial[key] = deepPartial(fieldSchema);\n }\n return schema.setFields(partial);\n }\n if (schema.type === 'array') {\n const nextArray = schema.optional();\n if (nextArray.innerType) nextArray.innerType = deepPartial(nextArray.innerType);\n return nextArray;\n }\n if (schema.type === 'tuple') {\n return schema.optional().clone({\n types: schema.spec.types.map(deepPartial)\n });\n }\n if ('optional' in schema) {\n return schema.optional();\n }\n return schema;\n}\nconst deepHas = (obj, p) => {\n const path = [...normalizePath(p)];\n if (path.length === 1) return path[0] in obj;\n let last = path.pop();\n let parent = getter(join(path), true)(obj);\n return !!(parent && last in parent);\n};\nlet isObject = obj => Object.prototype.toString.call(obj) === '[object Object]';\nfunction unknown(ctx, value) {\n let known = Object.keys(ctx.fields);\n return Object.keys(value).filter(key => known.indexOf(key) === -1);\n}\nconst defaultSort = sortByKeyOrder([]);\nfunction create$3(spec) {\n return new ObjectSchema(spec);\n}\nclass ObjectSchema extends Schema {\n constructor(spec) {\n super({\n type: 'object',\n check(value) {\n return isObject(value) || typeof value === 'function';\n }\n });\n this.fields = Object.create(null);\n this._sortErrors = defaultSort;\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(() => {\n if (spec) {\n this.shape(spec);\n }\n });\n }\n _cast(_value, options = {}) {\n var _options$stripUnknown;\n let value = super._cast(_value, options);\n\n //should ignore nulls here\n if (value === undefined) return this.getDefault(options);\n if (!this._typeCheck(value)) return value;\n let fields = this.fields;\n let strip = (_options$stripUnknown = options.stripUnknown) != null ? _options$stripUnknown : this.spec.noUnknown;\n let props = [].concat(this._nodes, Object.keys(value).filter(v => !this._nodes.includes(v)));\n let intermediateValue = {}; // is filled during the transform below\n let innerOptions = Object.assign({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n let isChanged = false;\n for (const prop of props) {\n let field = fields[prop];\n let exists = (prop in value);\n let inputValue = value[prop];\n if (field) {\n let fieldValue;\n\n // safe to mutate since this is fired in sequence\n innerOptions.path = (options.path ? `${options.path}.` : '') + prop;\n field = field.resolve({\n value: inputValue,\n context: options.context,\n parent: intermediateValue\n });\n let fieldSpec = field instanceof Schema ? field.spec : undefined;\n let strict = fieldSpec == null ? void 0 : fieldSpec.strict;\n if (fieldSpec != null && fieldSpec.strip) {\n isChanged = isChanged || prop in value;\n continue;\n }\n fieldValue = !options.__validating || !strict ? field.cast(inputValue, innerOptions) : inputValue;\n if (fieldValue !== undefined) {\n intermediateValue[prop] = fieldValue;\n }\n } else if (exists && !strip) {\n intermediateValue[prop] = inputValue;\n }\n if (exists !== prop in intermediateValue || intermediateValue[prop] !== inputValue) {\n isChanged = true;\n }\n }\n return isChanged ? intermediateValue : value;\n }\n _validate(_value, options = {}, panic, next) {\n let {\n from = [],\n originalValue = _value,\n recursive = this.spec.recursive\n } = options;\n options.from = [{\n schema: this,\n value: originalValue\n }, ...from];\n // this flag is needed for handling `strict` correctly in the context of\n // validation vs just casting. e.g strict() on a field is only used when validating\n options.__validating = true;\n options.originalValue = originalValue;\n super._validate(_value, options, panic, (objectErrors, value) => {\n if (!recursive || !isObject(value)) {\n next(objectErrors, value);\n return;\n }\n originalValue = originalValue || value;\n let tests = [];\n for (let key of this._nodes) {\n let field = this.fields[key];\n if (!field || Reference.isRef(field)) {\n continue;\n }\n tests.push(field.asNestedTest({\n options,\n key,\n parent: value,\n parentPath: options.path,\n originalParent: originalValue\n }));\n }\n this.runTests({\n tests,\n value,\n originalValue,\n options\n }, panic, fieldErrors => {\n next(fieldErrors.sort(this._sortErrors).concat(objectErrors), value);\n });\n });\n }\n clone(spec) {\n const next = super.clone(spec);\n next.fields = Object.assign({}, this.fields);\n next._nodes = this._nodes;\n next._excludedEdges = this._excludedEdges;\n next._sortErrors = this._sortErrors;\n return next;\n }\n concat(schema) {\n let next = super.concat(schema);\n let nextFields = next.fields;\n for (let [field, schemaOrRef] of Object.entries(this.fields)) {\n const target = nextFields[field];\n nextFields[field] = target === undefined ? schemaOrRef : target;\n }\n return next.withMutation(s =>\n // XXX: excludes here is wrong\n s.setFields(nextFields, [...this._excludedEdges, ...schema._excludedEdges]));\n }\n _getDefault(options) {\n if ('default' in this.spec) {\n return super._getDefault(options);\n }\n\n // if there is no default set invent one\n if (!this._nodes.length) {\n return undefined;\n }\n let dft = {};\n this._nodes.forEach(key => {\n var _innerOptions;\n const field = this.fields[key];\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[key]\n });\n }\n dft[key] = field && 'getDefault' in field ? field.getDefault(innerOptions) : undefined;\n });\n return dft;\n }\n setFields(shape, excludedEdges) {\n let next = this.clone();\n next.fields = shape;\n next._nodes = sortFields(shape, excludedEdges);\n next._sortErrors = sortByKeyOrder(Object.keys(shape));\n // XXX: this carries over edges which may not be what you want\n if (excludedEdges) next._excludedEdges = excludedEdges;\n return next;\n }\n shape(additions, excludes = []) {\n return this.clone().withMutation(next => {\n let edges = next._excludedEdges;\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n edges = [...next._excludedEdges, ...excludes];\n }\n\n // XXX: excludes here is wrong\n return next.setFields(Object.assign(next.fields, additions), edges);\n });\n }\n partial() {\n const partial = {};\n for (const [key, schema] of Object.entries(this.fields)) {\n partial[key] = 'optional' in schema && schema.optional instanceof Function ? schema.optional() : schema;\n }\n return this.setFields(partial);\n }\n deepPartial() {\n const next = deepPartial(this);\n return next;\n }\n pick(keys) {\n const picked = {};\n for (const key of keys) {\n if (this.fields[key]) picked[key] = this.fields[key];\n }\n return this.setFields(picked, this._excludedEdges.filter(([a, b]) => keys.includes(a) && keys.includes(b)));\n }\n omit(keys) {\n const remaining = [];\n for (const key of Object.keys(this.fields)) {\n if (keys.includes(key)) continue;\n remaining.push(key);\n }\n return this.pick(remaining);\n }\n from(from, to, alias) {\n let fromGetter = getter(from, true);\n return this.transform(obj => {\n if (!obj) return obj;\n let newObj = obj;\n if (deepHas(obj, from)) {\n newObj = Object.assign({}, obj);\n if (!alias) delete newObj[from];\n newObj[to] = fromGetter(obj);\n }\n return newObj;\n });\n }\n\n /** Parse an input JSON string to an object */\n json() {\n return this.transform(parseJson);\n }\n\n /**\n * Similar to `noUnknown` but only validates that an object is the right shape without stripping the unknown keys\n */\n exact(message) {\n return this.test({\n name: 'exact',\n exclusive: true,\n message: message || object.exact,\n test(value) {\n if (value == null) return true;\n const unknownKeys = unknown(this.schema, value);\n return unknownKeys.length === 0 || this.createError({\n params: {\n properties: unknownKeys.join(', ')\n }\n });\n }\n });\n }\n stripUnknown() {\n return this.clone({\n noUnknown: true\n });\n }\n noUnknown(noAllow = true, message = object.noUnknown) {\n if (typeof noAllow !== 'boolean') {\n message = noAllow;\n noAllow = true;\n }\n let next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n test(value) {\n if (value == null) return true;\n const unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n });\n next.spec.noUnknown = noAllow;\n return next;\n }\n unknown(allow = true, message = object.noUnknown) {\n return this.noUnknown(!allow, message);\n }\n transformKeys(fn) {\n return this.transform(obj => {\n if (!obj) return obj;\n const result = {};\n for (const key of Object.keys(obj)) result[fn(key)] = obj[key];\n return result;\n });\n }\n camelCase() {\n return this.transformKeys(camelCase);\n }\n snakeCase() {\n return this.transformKeys(snakeCase);\n }\n constantCase() {\n return this.transformKeys(key => snakeCase(key).toUpperCase());\n }\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const base = super.describe(options);\n base.fields = {};\n for (const [key, value] of Object.entries(next.fields)) {\n var _innerOptions2;\n let innerOptions = options;\n if ((_innerOptions2 = innerOptions) != null && _innerOptions2.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[key]\n });\n }\n base.fields[key] = value.describe(innerOptions);\n }\n return base;\n }\n}\ncreate$3.prototype = ObjectSchema.prototype;\n\nfunction create$2(type) {\n return new ArraySchema(type);\n}\nclass ArraySchema extends Schema {\n constructor(type) {\n super({\n type: 'array',\n spec: {\n types: type\n },\n check(v) {\n return Array.isArray(v);\n }\n });\n\n // `undefined` specifically means uninitialized, as opposed to \"no subtype\"\n this.innerType = void 0;\n this.innerType = type;\n }\n _cast(_value, _opts) {\n const value = super._cast(_value, _opts);\n\n // should ignore nulls here\n if (!this._typeCheck(value) || !this.innerType) {\n return value;\n }\n let isChanged = false;\n const castArray = value.map((v, idx) => {\n const castElement = this.innerType.cast(v, Object.assign({}, _opts, {\n path: `${_opts.path || ''}[${idx}]`,\n parent: value,\n originalValue: v,\n value: v,\n index: idx\n }));\n if (castElement !== v) {\n isChanged = true;\n }\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n _validate(_value, options = {}, panic, next) {\n var _options$recursive;\n // let sync = options.sync;\n // let path = options.path;\n let innerType = this.innerType;\n // let endEarly = options.abortEarly ?? this.spec.abortEarly;\n let recursive = (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive;\n options.originalValue != null ? options.originalValue : _value;\n super._validate(_value, options, panic, (arrayErrors, value) => {\n var _options$originalValu2;\n if (!recursive || !innerType || !this._typeCheck(value)) {\n next(arrayErrors, value);\n return;\n }\n\n // #950 Ensure that sparse array empty slots are validated\n let tests = new Array(value.length);\n for (let index = 0; index < value.length; index++) {\n var _options$originalValu;\n tests[index] = innerType.asNestedTest({\n options,\n index,\n parent: value,\n parentPath: options.path,\n originalParent: (_options$originalValu = options.originalValue) != null ? _options$originalValu : _value\n });\n }\n this.runTests({\n value,\n tests,\n originalValue: (_options$originalValu2 = options.originalValue) != null ? _options$originalValu2 : _value,\n options\n }, panic, innerTypeErrors => next(innerTypeErrors.concat(arrayErrors), value));\n });\n }\n clone(spec) {\n const next = super.clone(spec);\n // @ts-expect-error readonly\n next.innerType = this.innerType;\n return next;\n }\n\n /** Parse an input JSON string to an object */\n json() {\n return this.transform(parseJson);\n }\n concat(schema) {\n let next = super.concat(schema);\n\n // @ts-expect-error readonly\n next.innerType = this.innerType;\n if (schema.innerType)\n // @ts-expect-error readonly\n next.innerType = next.innerType ?\n // @ts-expect-error Lazy doesn't have concat and will break\n next.innerType.concat(schema.innerType) : schema.innerType;\n return next;\n }\n of(schema) {\n // FIXME: this should return a new instance of array without the default to be\n let next = this.clone();\n if (!isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema not: ' + printValue(schema));\n\n // @ts-expect-error readonly\n next.innerType = schema;\n next.spec = Object.assign({}, next.spec, {\n types: schema\n });\n return next;\n }\n length(length, message = array.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n skipAbsent: true,\n test(value) {\n return value.length === this.resolve(length);\n }\n });\n }\n min(min, message) {\n message = message || array.min;\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n // FIXME(ts): Array<typeof T>\n test(value) {\n return value.length >= this.resolve(min);\n }\n });\n }\n max(max, message) {\n message = message || array.max;\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value.length <= this.resolve(max);\n }\n });\n }\n ensure() {\n return this.default(() => []).transform((val, original) => {\n // We don't want to return `null` for nullable schema\n if (this._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n }\n compact(rejector) {\n let reject = !rejector ? v => !!v : (v, i, a) => !rejector(v, i, a);\n return this.transform(values => values != null ? values.filter(reject) : values);\n }\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const base = super.describe(options);\n if (next.innerType) {\n var _innerOptions;\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[0]\n });\n }\n base.innerType = next.innerType.describe(innerOptions);\n }\n return base;\n }\n}\ncreate$2.prototype = ArraySchema.prototype;\n\n// @ts-ignore\nfunction create$1(schemas) {\n return new TupleSchema(schemas);\n}\nclass TupleSchema extends Schema {\n constructor(schemas) {\n super({\n type: 'tuple',\n spec: {\n types: schemas\n },\n check(v) {\n const types = this.spec.types;\n return Array.isArray(v) && v.length === types.length;\n }\n });\n this.withMutation(() => {\n this.typeError(tuple.notType);\n });\n }\n _cast(inputValue, options) {\n const {\n types\n } = this.spec;\n const value = super._cast(inputValue, options);\n if (!this._typeCheck(value)) {\n return value;\n }\n let isChanged = false;\n const castArray = types.map((type, idx) => {\n const castElement = type.cast(value[idx], Object.assign({}, options, {\n path: `${options.path || ''}[${idx}]`,\n parent: value,\n originalValue: value[idx],\n value: value[idx],\n index: idx\n }));\n if (castElement !== value[idx]) isChanged = true;\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n _validate(_value, options = {}, panic, next) {\n let itemTypes = this.spec.types;\n super._validate(_value, options, panic, (tupleErrors, value) => {\n var _options$originalValu2;\n // intentionally not respecting recursive\n if (!this._typeCheck(value)) {\n next(tupleErrors, value);\n return;\n }\n let tests = [];\n for (let [index, itemSchema] of itemTypes.entries()) {\n var _options$originalValu;\n tests[index] = itemSchema.asNestedTest({\n options,\n index,\n parent: value,\n parentPath: options.path,\n originalParent: (_options$originalValu = options.originalValue) != null ? _options$originalValu : _value\n });\n }\n this.runTests({\n value,\n tests,\n originalValue: (_options$originalValu2 = options.originalValue) != null ? _options$originalValu2 : _value,\n options\n }, panic, innerTypeErrors => next(innerTypeErrors.concat(tupleErrors), value));\n });\n }\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const base = super.describe(options);\n base.innerType = next.spec.types.map((schema, index) => {\n var _innerOptions;\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[index]\n });\n }\n return schema.describe(innerOptions);\n });\n return base;\n }\n}\ncreate$1.prototype = TupleSchema.prototype;\n\nfunction create(builder) {\n return new Lazy(builder);\n}\nfunction catchValidationError(fn) {\n try {\n return fn();\n } catch (err) {\n if (ValidationError.isError(err)) return Promise.reject(err);\n throw err;\n }\n}\nclass Lazy {\n constructor(builder) {\n this.type = 'lazy';\n this.__isYupSchema__ = true;\n this.spec = void 0;\n this._resolve = (value, options = {}) => {\n let schema = this.builder(value, options);\n if (!isSchema(schema)) throw new TypeError('lazy() functions must return a valid schema');\n if (this.spec.optional) schema = schema.optional();\n return schema.resolve(options);\n };\n this.builder = builder;\n this.spec = {\n meta: undefined,\n optional: false\n };\n }\n clone(spec) {\n const next = new Lazy(this.builder);\n next.spec = Object.assign({}, this.spec, spec);\n return next;\n }\n optionality(optional) {\n const next = this.clone({\n optional\n });\n return next;\n }\n optional() {\n return this.optionality(true);\n }\n resolve(options) {\n return this._resolve(options.value, options);\n }\n cast(value, options) {\n return this._resolve(value, options).cast(value, options);\n }\n asNestedTest(config) {\n let {\n key,\n index,\n parent,\n options\n } = config;\n let value = parent[index != null ? index : key];\n return this._resolve(value, Object.assign({}, options, {\n value,\n parent\n })).asNestedTest(config);\n }\n validate(value, options) {\n return catchValidationError(() => this._resolve(value, options).validate(value, options));\n }\n validateSync(value, options) {\n return this._resolve(value, options).validateSync(value, options);\n }\n validateAt(path, value, options) {\n return catchValidationError(() => this._resolve(value, options).validateAt(path, value, options));\n }\n validateSyncAt(path, value, options) {\n return this._resolve(value, options).validateSyncAt(path, value, options);\n }\n isValid(value, options) {\n try {\n return this._resolve(value, options).isValid(value, options);\n } catch (err) {\n if (ValidationError.isError(err)) {\n return Promise.resolve(false);\n }\n throw err;\n }\n }\n isValidSync(value, options) {\n return this._resolve(value, options).isValidSync(value, options);\n }\n describe(options) {\n return options ? this.resolve(options).describe(options) : {\n type: 'lazy',\n meta: this.spec.meta,\n label: undefined\n };\n }\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n }\n get ['~standard']() {\n const schema = this;\n const standard = {\n version: 1,\n vendor: 'yup',\n async validate(value) {\n try {\n const result = await schema.validate(value, {\n abortEarly: false\n });\n return {\n value: result\n };\n } catch (err) {\n if (ValidationError.isError(err)) {\n return {\n issues: issuesFromValidationError(err)\n };\n }\n throw err;\n }\n }\n };\n return standard;\n }\n}\n\nfunction setLocale(custom) {\n Object.keys(custom).forEach(type => {\n // @ts-ignore\n Object.keys(custom[type]).forEach(method => {\n // @ts-ignore\n locale[type][method] = custom[type][method];\n });\n });\n}\n\nfunction addMethod(schemaType, name, fn) {\n if (!schemaType || !isSchema(schemaType.prototype)) throw new TypeError('You must provide a yup schema constructor function');\n if (typeof name !== 'string') throw new TypeError('A Method name must be provided');\n if (typeof fn !== 'function') throw new TypeError('Method function must be provided');\n schemaType.prototype[name] = fn;\n}\n\nexport { ArraySchema, BooleanSchema, DateSchema, Lazy as LazySchema, MixedSchema, NumberSchema, ObjectSchema, Schema, StringSchema, TupleSchema, ValidationError, addMethod, create$2 as array, create$7 as bool, create$7 as boolean, create$4 as date, locale as defaultLocale, getIn, isSchema, create as lazy, create$8 as mixed, create$5 as number, create$3 as object, printValue, reach, create$9 as ref, setLocale, create$6 as string, create$1 as tuple };\n","import { TFunction } from 'i18next';\nimport * as yup from 'yup';\n\nexport const getSettingsFormProps = (t: TFunction) => {\n yup.setLocale({\n mixed: {\n required: t('This field is required'),\n },\n });\n return {\n initialValues: {\n workplacesIds: [],\n },\n validationSchema: yup.object({\n workplacesIds: yup.array().of(yup.string()).required(),\n }),\n };\n};\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport {\n ListStatusChanges_StatusChange,\n StatusChange,\n useGqlClients,\n WidgetProps,\n WorkplaceEvent,\n WorkplaceEventDocument,\n WorkplaceEventSubscriptionPayload,\n} from 'andoncloud-dashboard-toolkit';\nimport { BaseWidget } from 'andoncloud-widget-base';\nimport dayjs from 'dayjs';\nimport { print } from 'graphql';\n\nimport locales from '@/locales';\nimport { WidgetData, WidgetSettings } from '@/types';\nimport { LIBRARY_VERSION } from '@/version';\n\nimport SettingsFormContent from '../SettingsFormContent';\nimport WidgetView from '../WidgetView';\n\nimport { getSettingsFormProps } from './utils';\n\nconst Widget: React.FC<WidgetProps<WidgetData, WidgetSettings>> = ({\n url,\n wsUrl,\n lang,\n data,\n settings,\n ...widgetProps\n}) => {\n const { graphqlSdk, gqlWsClient } = useGqlClients({ url, wsUrl, lang });\n const [widgetData, setWidgetData] = useState<WidgetData | undefined>(data);\n const [widgetSettings, setWidgetSettings] = useState<WidgetSettings | undefined>(settings);\n\n const sortStatusChagnges = (items: ListStatusChanges_StatusChange[]): ListStatusChanges_StatusChange[] => {\n return items.sort((item1, item2) => {\n if (item1.finishedAt && item2.finishedAt) return dayjs(item1.finishedAt).diff(dayjs(item2.finishedAt));\n return item1.finishedAt ? -1 : 1;\n });\n };\n\n useEffect(() => {\n if (!data && graphqlSdk) {\n graphqlSdk\n .shifts()\n .then(({ shifts }) => {\n return setWidgetData((current: WidgetData) => ({\n ...(current || {}),\n shifts,\n }));\n })\n .catch(() => {});\n\n graphqlSdk\n .listWorkplaces()\n .then(({ workplaces }) => {\n return setWidgetData((current: WidgetData) => ({\n ...(current || {}),\n workplaces,\n }));\n })\n .catch(() => {});\n\n graphqlSdk\n .listStatusChanges()\n .then(({ statusChanges }) => {\n return setWidgetData((current: WidgetData) => ({\n ...(current || {}),\n statusChanges: sortStatusChagnges(statusChanges),\n }));\n })\n .catch(() => {});\n }\n if (widgetSettings?.workplacesIds && gqlWsClient) {\n widgetSettings.workplacesIds.forEach((workplaceId) => {\n gqlWsClient.subscribe<WorkplaceEventSubscriptionPayload>(\n print(WorkplaceEventDocument),\n { id: workplaceId },\n ({ event, subject }) => {\n if (event === WorkplaceEvent.StatusChangeCreated) {\n const statusChange = subject as StatusChange;\n\n setWidgetData((current: WidgetData) => {\n const workplaceStatusChanges = current?.statusChanges?.filter(\n (statusChange) => statusChange.workplaceId === workplaceId,\n );\n const lastStatusChange = workplaceStatusChanges[workplaceStatusChanges.length - 1];\n\n if (lastStatusChange) {\n lastStatusChange.finishedAt = statusChange.startedAt;\n }\n return {\n ...(current || {}),\n statusChanges: [...current.statusChanges, statusChange],\n };\n });\n } else if (event === WorkplaceEvent.StatusChangeUpdated) {\n const updatedStatusChange = subject as StatusChange;\n\n setWidgetData((current: WidgetData) => {\n const statusChanges = current.statusChanges.map((statusChange) =>\n statusChange.id === updatedStatusChange.id ? updatedStatusChange : statusChange,\n );\n return {\n ...(current || {}),\n statusChanges,\n };\n });\n }\n },\n );\n });\n }\n }, [data, graphqlSdk, gqlWsClient, widgetSettings]);\n\n const handleSettingsChange = useCallback(\n (settings: WidgetSettings) => {\n setWidgetSettings({ ...settings });\n },\n [setWidgetSettings],\n );\n\n return (\n <BaseWidget\n lang={lang}\n locales={locales}\n data={widgetData}\n settings={settings}\n gqlClients={{ graphqlSdk, gqlWsClient }}\n onSettingsChange={handleSettingsChange}\n WidgetView={WidgetView}\n getSettingsFormProps={getSettingsFormProps}\n SettingsFormContent={SettingsFormContent}\n version={LIBRARY_VERSION}\n data-testid=\"workplaces-state-timelines-widget\"\n {...widgetProps}\n />\n );\n};\n\nexport default Widget;\n","export { default as Widget } from './components/Widget';\n\nexport const getDisplayName = (lang: 'en' | 'pl') => {\n switch (lang) {\n case 'en':\n return 'Status changes history for current shift';\n case 'pl':\n return 'Historia zmian statusów dla obecnej zmiany';\n default:\n return 'workplaces-state-timelines-widget';\n }\n};\n\nexport const requiredFeatures = ['feature.workplaces-state-timelines-widget'];\nexport const extraPermissions: string[] = [];\n\nexport { LIBRARY_VERSION as version } from './version';\n"],"names":["nodejsCustomInspectSymbol$1","Symbol","for","undefined","defineInspect","classObject","fn","prototype","toJSON","Boolean","Error","invariant","inspect","nodejsCustomInspectSymbol","isNode","maybeNode","kind","_typeof","obj","iterator","constructor","value","formatValue","seenValues","JSON","stringify","name","concat","previouslySeenValues","indexOf","customInspectFn","object","String","getCustomFn","customValue","call","Array","isArray","array","length","len","Math","min","remaining","items","i","push","join","formatArray","keys","Object","tag","toString","replace","getObjectTag","map","key","formatObject","formatObjectValue","Location","startToken","endToken","source","this","start","end","Token","line","column","prev","next","QueryDocumentKeys","Name","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","freeze","getVisitFn","visitor","isLeaving","kindVisitor","kindSpecificVisitor","leave","enter","specificVisitor","specificKindVisitor","printDocASTReducer","node","definitions","op","operation","varDefs","wrap","variableDefinitions","directives","selectionSet","_ref","variable","type","defaultValue","_ref2","block","selections","_ref3","args","arguments","prefix","alias","argsLine","indent","_ref4","_ref5","_ref6","typeCondition","_ref7","_ref8","_ref9","_ref10","indentation","preferMultipleLines","isSingleLine","printAsMultipleLines","result","printBlockString","_ref11","_ref12","_ref13","values","_ref14","fields","_ref15","_ref16","_ref17","_ref18","_ref19","addDescription","_ref20","operationTypes","_ref21","_ref22","_ref23","interfaces","_ref24","hasMultilineItems","_ref25","_ref26","_ref27","types","_ref28","_ref29","_ref30","_ref31","repeatable","locations","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","cb","description","maybeArray","_maybeArray$filter$jo","separator","filter","x","maybeString","str","isMultiline","some","resources","en","translation","pl","LIBRARY_VERSION","SettingsFormContent","_data$workplaces","data","formProps","_useState","useState","tabValue","setTabValue","t","useTranslation","React","createElement","Fragment","TabContext","Box","sx","borderBottom","borderColor","TabList","onChange","_","newValue","Tab","label","TabPanel","SortableSelect","placeholder","options","workplaces","id","selected","workplacesIds","setFieldValue","durationSeconds","shift","statusChange","currentDate","startedAt","isAfter","dayjs","finishedAt","abs","diff","mapTimelineColor","color","SVG","_a","_b","animate","_c","backgroundColor","_d","backgroundOpacity","_e","baseUrl","children","_f","foregroundColor","_g","foregroundOpacity","_h","gradientRatio","uniqueKey","_j","rtl","_k","speed","_l","style","_m","title","_o","beforeMask","props","__rest","fixedId","useId","idClip","idGradient","idAria","rtlStyle","transform","dur","from","to","__assign","role","isValidElement","y","width","height","clipPath","fill","gradientTransform","offset","stopColor","stopOpacity","attributeName","repeatCount","TimelineLoader","ContentLoader","ry","TimelineRow","styled","display","flexGrow","alignItems","padding","background","TimelineWrapper","margin","zIndex","flexDirection","overflow","borderRadius","justifyContent","TimelineTimeInfo","fontSize","fontWeight","lineHeight","TimelineElement","flexBasis","percentWidth","flexShrink","borderTopLeftRadius","borderBottomLeftRadius","extend","isBetween","Timeline","statusChanges","loading","shiftStatusChanges","setShiftStatusChanges","calculateShiftDuration","useCallback","isShiftStatusChange","isBefore","_useState2","shiftDuration","setShiftDuration","useEffect","Typography","marginLeft","whiteSpace","textOverflow","format","status","reason","statusColor","author","Date","WidgetView","settings","currentShift","setCurrentShift","getTitle","workplaceId","_settings$workplacesI","_workplaces$find","find","workplace","updateCurrentShift","getCurrentShift","normalizeShifts","shifts","intervalId","setInterval","clearInterval","_data$statusChanges","Cache","maxSize","_maxSize","clear","_size","_values","create","get","set","SPLIT_REGEX","DIGIT_REGEX","LEAD_DIGIT_REGEX","SPEC_CHAR_REGEX","CLEAN_QUOTES_REGEX","pathCache","setCache","getCache","propertyExpr","split","normalizePath","setter","path","parts","index","part","getter","safe","segments","reduce","isQuoted","test","forEach","thisArg","iter","idx","isBracket","shouldBeQuoted","match","charAt","hasLeadingNumber","hasSpecialChars","reWords","words","tinyCase","acc","toUpperCase","slice","toLowerCase","toposort_1","edges","toposort","arr","res","Set","edge","add","uniqueNodes","nodes","cursor","sorted","visited","outgoingEdges","Map","has","makeOutgoingEdges","nodesHash","makeNodesHash","visit","predecessors","nodeRep","e","outgoing","child","delete","errorToString","regExpToString","RegExp","symbolToString","SYMBOL_REGEXP","printSimpleValue","val","quoteStrings","typeOf","printNumber","isNaN","getTime","toISOString","printValue","toArray","_Symbol$toStringTag","_Symbol$hasInstance","_Symbol$toStringTag2","strReg","toStringTag","ValidationErrorNoStack","errorOrErrors","field","message","params","errors","inner","err","ValidationError","isError","hasInstance","formatError","assign","originalPath","disableStack","errorNoStack","super","captureStackTrace","inst","mixed","default","required","defined","notNull","oneOf","notOneOf","notType","originalValue","castMsg","string","max","matches","email","url","uuid","datetime","datetime_precision","datetime_offset","trim","lowercase","uppercase","date","noUnknown","exact","tuple","spec","typeLen","locale","number","lessThan","moreThan","positive","negative","integer","boolean","isValue","isSchema","__isYupSchema__","Condition","fromOptions","refs","config","then","otherwise","TypeError","is","check","every","schema","_branch","branch","builder","resolve","base","ref","getValue","parent","context","Reference","isContext","isSibling","cast","describe","isRef","__isYupRef","isAbsent","createValidation","validate","panic","skipAbsent","abortEarly","disableStackTrace","resolveOptions","createError","overrides","nextParams","resolveParams","error","invalid","ctx","item","resolveMaybeRef","handleResult","validOrError","handleError","_result","sync","Promise","OPTIONS","getIn","lastPart","lastPartDebug","_part","isTuple","parseInt","innerType","parentPath","ReferenceSet","resolveAll","clone","merge","newItems","removeItems","src","seen","copy","k","v","entries","createStandardPath","currentSegment","inBrackets","inQuotes","char","issuesFromValidationError","_error$inner","createStandardIssues","flatMap","Schema","deps","tests","transforms","conditions","_mutate","internalTests","_whitelist","_blacklist","exclusiveTests","_typeCheck","withMutation","typeError","strip","strict","recursive","nullable","optional","coerce","s","nonNullable","_type","getPrototypeOf","meta","before","combined","mergedSpec","isType","prevSchema","condition","_options$strict","_options$abortEarly","_options$recursive","_options$disableStack","resolvedSchema","allowOptionality","assert","_cast","formattedValue","formattedResult","rawValue","prevValue","getDefault","_validate","_value","initialTests","runTests","initialErrors","runOptions","fired","panicOnce","arg","nextOnce","count","nestedErrors","asNestedTest","originalParent","isIndex","testOptions","includes","_options$disableStack2","reject","parsed","validated","validateSync","_options$disableStack3","isValid","isValidSync","_getDefault","def","isStrict","nullability","optionality","notRequired","opts","isExclusive","exclusive","when","dep","enums","whiteList","valids","resolved","blacklist","invalids","n","list","findIndex","c","version","vendor","issues","method","isoReg","parseDateStruct","_regexResult$7$length","_regexResult$","regexResult","exec","year","toNumber","month","day","hour","minute","second","millisecond","substring","precision","z","plusMinus","hourOffset","minuteOffset","Number","rEmail","rUrl","rUUID","rIsoDateTime","isTrimmed","objStringTag","create$6","StringSchema","valueOf","_raw","strValue","regex","excludeEmptyString","search","allowOffset","struct","ensure","invalidDate","DateSchema","parse","NaN","totalMinutesOffset","UTC","parseIsoDate","INVALID_DATE","prepareParam","param","limit","Infinity","ii","_err$path","sortByKeyOrder","a","b","parseJson","deepPartial","partial","fieldSchema","setFields","nextArray","isObject","unknown","known","defaultSort","create$3","ObjectSchema","_sortErrors","_nodes","_excludedEdges","shape","_options$stripUnknown","stripUnknown","intermediateValue","innerOptions","__validating","isChanged","prop","exists","inputValue","fieldValue","fieldSpec","objectErrors","fieldErrors","sort","nextFields","schemaOrRef","target","dft","_innerOptions","excludedEdges","excludes","addNode","depPath","reverse","sortFields","additions","Function","pick","picked","omit","fromGetter","newObj","deepHas","p","last","pop","json","unknownKeys","properties","noAllow","allow","transformKeys","camelCase","snakeCase","constantCase","_innerOptions2","create$2","ArraySchema","_opts","castArray","castElement","arrayErrors","_options$originalValu2","_options$originalValu","innerTypeErrors","of","original","compact","rejector","getSettingsFormProps","custom","initialValues","validationSchema","yup","_excluded","wsUrl","lang","widgetProps","_objectWithoutPropertiesLoose","_useGqlClients","useGqlClients","graphqlSdk","gqlWsClient","widgetData","setWidgetData","widgetSettings","setWidgetSettings","current","_extends","listWorkplaces","listStatusChanges","item1","item2","subscribe","root","visitorKeys","stack","inArray","edits","ancestors","newRoot","isEdited","_i2","_Object$keys2","editOffset","editKey","editValue","splice","_visitorKeys$node$kin","visitFn","WorkplaceEventDocument","event","subject","WorkplaceEvent","StatusChangeCreated","_current$statusChange","workplaceStatusChanges","lastStatusChange","StatusChangeUpdated","updatedStatusChange","handleSettingsChange","BaseWidget","locales","gqlClients","onSettingsChange"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["en","pl","locales","locales"],"sources":["../src/locales/en/translation.json","../src/locales/pl/translation.json","../src/locales/index.ts","../src/version.ts","../src/components/SettingsFormContent/index.tsx","../src/helpers.ts","../src/components/TimelineLoader/index.tsx","../src/components/Timeline/styled.ts","../src/components/Timeline/index.tsx","../src/components/WidgetView/index.tsx","../src/components/Widget/utils.ts","../src/components/Widget/index.tsx","../src/core/title.ts","../src/index.tsx"],"sourcesContent":["","","import en from './en/translation.json';\nimport pl from './pl/translation.json';\n\nconst resources = {\n en: {\n translation: en,\n },\n pl: {\n translation: pl,\n },\n};\n\nexport default resources;\n","export const LIBRARY_VERSION = '1.2.7';\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { TabContext, TabList, TabPanel } from '@mui/lab';\nimport { Tab, TextField } from '@mui/material';\nimport { SortableSelect } from 'andoncloud-dashboard-toolkit';\nimport { SettingsFormContentProps } from 'andoncloud-widget-base';\n\nimport { WidgetData, WidgetSettings } from '@/types';\n\nconst SettingsFormContent: React.FC<SettingsFormContentProps<WidgetData, WidgetSettings>> = ({ data, formProps }) => {\n // -- Local state --\n const [selectedTab, setSelectedTab] = useState('workplaces');\n\n // -- Translation --\n const { t } = useTranslation();\n\n return (\n <TabContext value={selectedTab}>\n <TabList onChange={(_, value) => setSelectedTab(value)} centered>\n <Tab label={t('workplacesStateTimelinesWidget.workplaces')} value=\"workplaces\" />\n <Tab label={t('workplacesStateTimelinesWidget.advanced')} value=\"advanced\" />\n </TabList>\n\n <TabPanel value=\"workplaces\">\n <SortableSelect\n placeholder={`${t('workplacesStateTimelinesWidget.selectAndArrangeTheOrder')}...`}\n options={data.workplaces?.map(({ id, name }) => ({ label: name, value: id }))}\n selected={formProps.values.workplacesIds}\n onChange={(selected) => formProps.setFieldValue('workplacesIds', [...selected])}\n />\n </TabPanel>\n\n <TabPanel value=\"advanced\">\n <TextField\n name=\"customTitle\"\n label={t('workplacesStateTimelinesWidget.customTitle')}\n value={formProps.values.customTitle}\n onChange={formProps.handleChange}\n fullWidth\n />\n </TabPanel>\n </TabContext>\n );\n};\n\nexport default SettingsFormContent;\n","import { AndonLightColor, ListStatusChanges_StatusChange, NormalizedShift } from 'andoncloud-dashboard-toolkit';\nimport dayjs from 'dayjs';\n\nexport const durationSeconds = (\n shift: NormalizedShift,\n statusChange: ListStatusChanges_StatusChange,\n currentDate: Date,\n) => {\n const startedAt = shift.startedAt.isAfter(statusChange.startedAt) ? shift.startedAt : dayjs(statusChange.startedAt);\n\n if (startedAt && statusChange.finishedAt) {\n return Math.abs(startedAt.diff(dayjs(statusChange.finishedAt), 'seconds'));\n }\n return Math.abs(dayjs(currentDate).diff(startedAt, 'seconds'));\n};\n\nexport const mapTimelineColor = (color: AndonLightColor): string => {\n switch (color) {\n case 'green':\n return '#2ACB42';\n case 'red':\n return '#FF453A';\n case 'yellow':\n return '#FFC12F';\n default:\n return '#525860';\n }\n};\n","import ContentLoader from 'react-content-loader';\n\nconst TimelineLoader = () => (\n <ContentLoader\n data-testid=\"timeline-loading\"\n height=\"28\"\n width=\"100%\"\n speed={1.5}\n backgroundColor=\"#3d3d3d\"\n foregroundColor=\"#ffffff\"\n >\n <rect x=\"4%\" y=\"10\" ry=\"6\" width=\"92%\" height=\"14\" />\n </ContentLoader>\n);\n\nexport default TimelineLoader;\n","import { styled } from '@mui/material/styles';\nimport { AndonLightColor } from 'andoncloud-dashboard-toolkit';\n\nimport { mapTimelineColor } from '@/helpers';\n\nexport interface TimelineElementProps {\n percentWidth: number;\n color?: AndonLightColor;\n}\n\nexport const TimelineRow = styled('div')({\n display: 'flex',\n flexGrow: 1,\n alignItems: 'center',\n padding: '10px 0',\n background: '#252A32',\n '&:nth-of-type(2n)': {\n background: '#30353d',\n },\n});\n\nexport const TimelineWrapper = styled('div')({\n display: 'flex',\n margin: '6px 0',\n zIndex: 3,\n flexDirection: 'row',\n height: '20px',\n width: '100%',\n overflow: 'hidden',\n borderRadius: '4px',\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\n});\n\nexport const TimelineTimeInfoContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n});\n\nexport const TimelineTimeInfo = styled('span')({\n margin: '0 1.5em',\n fontSize: '12px',\n fontWeight: 500,\n lineHeight: '12px',\n color: 'rgba(255, 255, 255, 0.5)',\n});\n\nexport const TimelineElement = styled('div')<TimelineElementProps>(({ percentWidth, color }) => ({\n flexBasis: `${percentWidth}%`,\n flexShrink: 0,\n backgroundColor: mapTimelineColor(color as AndonLightColor),\n '&:first-of-type': {\n borderTopLeftRadius: '4px',\n borderBottomLeftRadius: '4px',\n },\n}));\n","import { Fragment, useCallback, useEffect, useState } from 'react';\n\nimport { Typography } from '@mui/material';\nimport { ListStatusChanges_StatusChange, NormalizedShift } from 'andoncloud-dashboard-toolkit';\nimport dayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\n\nimport { durationSeconds } from '@/helpers';\n\ndayjs.extend(isBetween);\n\nimport TimelineLoader from '../TimelineLoader';\n\nimport { TimelineElement, TimelineRow, TimelineTimeInfo, TimelineWrapper } from './styled';\n\nexport interface TimelineProps {\n title: string;\n shift: NormalizedShift | null;\n statusChanges: ListStatusChanges_StatusChange[];\n loading?: boolean;\n}\n\nconst Timeline: React.FC<TimelineProps> = ({ title, shift, statusChanges, loading }) => {\n const [shiftStatusChanges, setShiftStatusChanges] = useState<ListStatusChanges_StatusChange[]>([]);\n const calculateShiftDuration = useCallback(() => {\n return shift ? Math.abs(shift.startedAt.diff(shift.finishedAt, 'seconds')) : 0;\n }, [shift]);\n const isShiftStatusChange = useCallback(\n (statusChange: ListStatusChanges_StatusChange) => {\n const startedAt = dayjs(statusChange.startedAt);\n const finishedAt = statusChange.finishedAt ? dayjs(statusChange.finishedAt) : null;\n\n if (shift) {\n return (\n startedAt.isBetween(shift.startedAt, shift.finishedAt) ||\n finishedAt?.isBetween(shift.startedAt, shift.finishedAt) ||\n (startedAt.isBefore(shift.startedAt) && !finishedAt)\n );\n }\n return false;\n },\n [shift],\n );\n const [shiftDuration, setShiftDuration] = useState<number>(() => calculateShiftDuration());\n\n useEffect(() => {\n setShiftDuration(calculateShiftDuration());\n }, [shift, calculateShiftDuration]);\n\n useEffect(() => {\n setShiftStatusChanges(statusChanges.filter((statusChange) => isShiftStatusChange(statusChange)));\n }, [statusChanges, isShiftStatusChange]);\n\n if (loading) return <TimelineLoader />;\n\n return (\n <TimelineRow>\n <Typography\n sx={{\n display: title ? 'block' : 'none',\n flexBasis: '25%',\n marginLeft: '20px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n color: 'white',\n }}\n >\n {title}\n </Typography>\n {shift && (\n <Fragment>\n <TimelineTimeInfo>{shift.startedAt.format('HH:mm')}</TimelineTimeInfo>\n <TimelineWrapper data-testid=\"timeline\">\n {shiftStatusChanges?.map(\n (status) =>\n status.reason.statusColor && (\n <TimelineElement\n data-testid={`timeline-element-${status.id}-color-${status.reason.statusColor}`}\n key={`${status.id}${status.author.id}`}\n color={status.reason.statusColor}\n percentWidth={Math.min((durationSeconds(shift, status, new Date()) / shiftDuration) * 100, 100)}\n />\n ),\n )}\n </TimelineWrapper>\n <TimelineTimeInfo>{shift.finishedAt.format('HH:mm')}</TimelineTimeInfo>\n </Fragment>\n )}\n </TimelineRow>\n );\n};\n\nexport default Timeline;\n","import { useEffect, useState } from 'react';\n\nimport { Box } from '@mui/material';\nimport { getCurrentShift, NormalizedShift, normalizeShifts } from 'andoncloud-dashboard-toolkit';\nimport dayjs from 'dayjs';\n\nimport { WidgetViewProps } from '@/types';\n\nimport Timeline from '../Timeline';\n\nconst WidgetView: React.FC<WidgetViewProps> = ({ data, settings }) => {\n const [currentShift, setCurrentShift] = useState<NormalizedShift | null>(null);\n const getTitle = (workplaceId: string) => {\n const workplaces = data.workplaces;\n\n return settings?.workplacesIds?.length === 1\n ? ''\n : workplaces?.find((workplace) => workplace.id === workplaceId)?.name || '';\n };\n\n useEffect(() => {\n const updateCurrentShift = () => {\n const currentDate = dayjs();\n\n setCurrentShift(getCurrentShift(currentDate, normalizeShifts(data?.shifts || [], currentDate)));\n };\n const intervalId = setInterval(() => updateCurrentShift(), 10 * 1000);\n\n updateCurrentShift();\n\n return () => {\n clearInterval(intervalId);\n };\n }, [data?.shifts]);\n\n return (\n <Box display=\"flex\" flexDirection=\"column\" height=\"100%\">\n {settings?.workplacesIds.map((workplaceId) => (\n <Timeline\n key={workplaceId}\n title={getTitle(workplaceId)}\n shift={currentShift}\n statusChanges={data.statusChanges?.filter((statusChange) => statusChange.workplaceId === workplaceId) || []}\n loading={data === undefined}\n />\n ))}\n </Box>\n );\n};\n\nexport default WidgetView;\n","import { TFunction } from 'i18next';\nimport * as yup from 'yup';\n\nexport const getSettingsFormProps = (t: TFunction) => {\n yup.setLocale({\n mixed: {\n required: t('workplacesStateTimelinesWidget.thisFieldIsRequired'),\n },\n });\n return {\n initialValues: {\n customTitle: '',\n workplacesIds: [],\n },\n validationSchema: yup.object({\n workplacesIds: yup.array().of(yup.string()).required(),\n }),\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nimport {\n ListStatusChanges_StatusChange,\n StatusChange,\n useGqlClients,\n WidgetProps,\n WorkplaceEvent,\n WorkplaceEventDocument,\n WorkplaceEventSubscriptionPayload,\n} from 'andoncloud-dashboard-toolkit';\nimport { BaseWidget } from 'andoncloud-widget-base';\nimport dayjs from 'dayjs';\nimport { print } from 'graphql';\n\nimport locales from '@/locales';\nimport { WidgetData, WidgetSettings } from '@/types';\nimport { LIBRARY_VERSION } from '@/version';\n\nimport SettingsFormContent from '../SettingsFormContent';\nimport WidgetView from '../WidgetView';\n\nimport { getSettingsFormProps } from './utils';\n\nconst Widget: React.FC<WidgetProps<WidgetData, WidgetSettings>> = ({\n url,\n wsUrl,\n lang,\n data,\n settings,\n ...widgetProps\n}) => {\n const { graphqlSdk, gqlWsClient } = useGqlClients({ url, wsUrl, lang });\n const [widgetData, setWidgetData] = useState<WidgetData | undefined>(data);\n const [widgetSettings, setWidgetSettings] = useState<WidgetSettings | undefined>(settings);\n\n const sortStatusChagnges = (items: ListStatusChanges_StatusChange[]): ListStatusChanges_StatusChange[] => {\n return items.sort((item1, item2) => {\n if (item1.finishedAt && item2.finishedAt) return dayjs(item1.finishedAt).diff(dayjs(item2.finishedAt));\n return item1.finishedAt ? -1 : 1;\n });\n };\n\n useEffect(() => {\n if (!data && graphqlSdk) {\n graphqlSdk\n .listShifts()\n .then(({ shifts }) => {\n return setWidgetData((current: WidgetData) => ({\n ...(current || {}),\n shifts,\n }));\n })\n .catch(() => {});\n\n graphqlSdk\n .listWorkplaces()\n .then(({ workplaces }) => {\n return setWidgetData((current: WidgetData) => ({\n ...(current || {}),\n workplaces,\n }));\n })\n .catch(() => {});\n\n graphqlSdk\n .listStatusChanges()\n .then(({ statusChanges }) => {\n return setWidgetData((current: WidgetData) => ({\n ...(current || {}),\n statusChanges: sortStatusChagnges(statusChanges),\n }));\n })\n .catch(() => {});\n }\n if (widgetSettings?.workplacesIds && gqlWsClient) {\n widgetSettings.workplacesIds.forEach((workplaceId) => {\n gqlWsClient.subscribe<WorkplaceEventSubscriptionPayload>(\n print(WorkplaceEventDocument),\n { id: workplaceId },\n ({ event, subject }) => {\n if (event === WorkplaceEvent.StatusChangeCreated) {\n const statusChange = subject as StatusChange;\n\n setWidgetData((current: WidgetData) => {\n const workplaceStatusChanges = current?.statusChanges?.filter(\n (statusChange) => statusChange.workplaceId === workplaceId,\n );\n const lastStatusChange = workplaceStatusChanges[workplaceStatusChanges.length - 1];\n\n if (lastStatusChange) {\n lastStatusChange.finishedAt = statusChange.startedAt;\n }\n return {\n ...(current || {}),\n statusChanges: [...current.statusChanges, statusChange],\n };\n });\n } else if (event === WorkplaceEvent.StatusChangeUpdated) {\n const updatedStatusChange = subject as StatusChange;\n\n setWidgetData((current: WidgetData) => {\n const statusChanges = current.statusChanges.map((statusChange) =>\n statusChange.id === updatedStatusChange.id ? updatedStatusChange : statusChange,\n );\n return {\n ...(current || {}),\n statusChanges,\n };\n });\n }\n },\n );\n });\n }\n }, [data, graphqlSdk, gqlWsClient, widgetSettings]);\n\n const handleSettingsChange = useCallback(\n (settings: WidgetSettings) => {\n setWidgetSettings({ ...settings });\n },\n [setWidgetSettings],\n );\n\n return (\n <BaseWidget\n {...widgetProps}\n lang={lang}\n locales={locales}\n data={widgetData}\n settings={settings}\n gqlClients={{ graphqlSdk, gqlWsClient }}\n onSettingsChange={handleSettingsChange}\n WidgetView={WidgetView}\n getSettingsFormProps={getSettingsFormProps}\n SettingsFormContent={SettingsFormContent}\n version={LIBRARY_VERSION}\n data-testid=\"workplaces-state-timelines-widget\"\n />\n );\n};\n\nexport default Widget;\n","import type { FilterValues } from 'andoncloud-dashboard-toolkit';\nimport i18n from 'i18next';\n\nimport type { WidgetData, WidgetSettings } from '../types';\n\nconst ns = 'workplacesStateTimelinesWidget';\n\nconst t = (key: string, lng: string, options?: Record<string, unknown>) => i18n.t(`${ns}.${key}`, { lng, ...options });\n\nexport const getDisplayName = (lang: string) => t('displayName', lang);\n\nexport const getTitle = (\n data: WidgetData | undefined,\n _settings: WidgetSettings | undefined,\n _filters: FilterValues | undefined,\n lang: string,\n): string => {\n const name = getDisplayName(lang);\n\n const workplaces = data?.workplaces;\n if (!workplaces?.length) return name;\n\n return `${name} — ${t('titleWorkplaces', lang, { count: workplaces.length })}`;\n};\n","import { registerTranslations } from 'andoncloud-sdk';\n\nimport locales from './locales';\n\nregisterTranslations(locales);\n\nexport { default as Widget } from './components/Widget';\nexport { getDisplayName, getTitle } from './core/title';\n\nexport const thumbnail: string | undefined = undefined;\n\nexport const requiredFeatures: string[] = ['feature.workplaces-state-timelines-widget'];\nexport const extraPermissions: string[] = [];\n\nexport { LIBRARY_VERSION as version } from './version';\n"],"mappings":";;;;;;;;;;;;;;;;;AEGA,MAAM,YAAY;CAChB,IAAI,EACF;;;;;;;;;;;;;;MACD;CACD,IAAI,EACF;;;;;;;;;;;;;;;MACD;CACF;;;ACVD,MAAa,kBAAkB;;;ACU/B,MAAM,uBAAuF,EAAE,MAAM,gBAAgB;CAEnH,MAAM,CAAC,aAAa,kBAAkB,SAAS,aAAa;CAG5D,MAAM,EAAE,MAAM,gBAAgB;AAE9B,QACE,qBAAC,YAAD;EAAY,OAAO;YAAnB;GACE,qBAAC,SAAD;IAAS,WAAW,GAAG,UAAU,eAAe,MAAM;IAAE,UAAA;cAAxD,CACE,oBAAC,KAAD;KAAK,OAAO,EAAE,4CAA4C;KAAE,OAAM;KAAe,CAAA,EACjF,oBAAC,KAAD;KAAK,OAAO,EAAE,0CAA0C;KAAE,OAAM;KAAa,CAAA,CACrE;;GAEV,oBAAC,UAAD;IAAU,OAAM;cACd,oBAAC,gBAAD;KACE,aAAa,GAAG,EAAE,0DAA0D,CAAC;KAC7E,SAAS,KAAK,YAAY,KAAK,EAAE,IAAI,YAAY;MAAE,OAAO;MAAM,OAAO;MAAI,EAAE;KAC7E,UAAU,UAAU,OAAO;KAC3B,WAAW,aAAa,UAAU,cAAc,iBAAiB,CAAC,GAAG,SAAS,CAAC;KAC/E,CAAA;IACO,CAAA;GAEX,oBAAC,UAAD;IAAU,OAAM;cACd,oBAAC,WAAD;KACE,MAAK;KACL,OAAO,EAAE,6CAA6C;KACtD,OAAO,UAAU,OAAO;KACxB,UAAU,UAAU;KACpB,WAAA;KACA,CAAA;IACO,CAAA;GACA;;;;;ACvCjB,MAAa,mBACX,OACA,cACA,gBACG;CACH,MAAM,YAAY,MAAM,UAAU,QAAQ,aAAa,UAAU,GAAG,MAAM,YAAY,MAAM,aAAa,UAAU;AAEnH,KAAI,aAAa,aAAa,WAC5B,QAAO,KAAK,IAAI,UAAU,KAAK,MAAM,aAAa,WAAW,EAAE,UAAU,CAAC;AAE5E,QAAO,KAAK,IAAI,MAAM,YAAY,CAAC,KAAK,WAAW,UAAU,CAAC;;AAGhE,MAAa,oBAAoB,UAAmC;AAClE,SAAQ,OAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,MACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;;;ACvBb,MAAM,uBACJ,oBAAC,eAAD;CACE,eAAY;CACZ,QAAO;CACP,OAAM;CACN,OAAO;CACP,iBAAgB;CAChB,iBAAgB;WAEhB,oBAAC,QAAD;EAAM,GAAE;EAAK,GAAE;EAAK,IAAG;EAAI,OAAM;EAAM,QAAO;EAAO,CAAA;CACvC,CAAA;;;ACFlB,MAAa,cAAc,OAAO,MAAM,CAAC;CACvC,SAAS;CACT,UAAU;CACV,YAAY;CACZ,SAAS;CACT,YAAY;CACZ,qBAAqB,EACnB,YAAY,WACb;CACF,CAAC;AAEF,MAAa,kBAAkB,OAAO,MAAM,CAAC;CAC3C,SAAS;CACT,QAAQ;CACR,QAAQ;CACR,eAAe;CACf,QAAQ;CACR,OAAO;CACP,UAAU;CACV,cAAc;CACd,iBAAiB;CAClB,CAAC;AAEuC,OAAO,MAAM,CAAC;CACrD,SAAS;CACT,YAAY;CACZ,gBAAgB;CACjB,CAAC;AAEF,MAAa,mBAAmB,OAAO,OAAO,CAAC;CAC7C,QAAQ;CACR,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO;CACR,CAAC;AAEF,MAAa,kBAAkB,OAAO,MAAM,EAAwB,EAAE,cAAc,aAAa;CAC/F,WAAW,GAAG,aAAa;CAC3B,YAAY;CACZ,iBAAiB,iBAAiB,MAAyB;CAC3D,mBAAmB;EACjB,qBAAqB;EACrB,wBAAwB;EACzB;CACF,EAAE;;;AC9CH,MAAM,OAAO,UAAU;AAavB,MAAM,YAAqC,EAAE,OAAO,OAAO,eAAe,cAAc;CACtF,MAAM,CAAC,oBAAoB,yBAAyB,SAA2C,EAAE,CAAC;CAClG,MAAM,yBAAyB,kBAAkB;AAC/C,SAAO,QAAQ,KAAK,IAAI,MAAM,UAAU,KAAK,MAAM,YAAY,UAAU,CAAC,GAAG;IAC5E,CAAC,MAAM,CAAC;CACX,MAAM,sBAAsB,aACzB,iBAAiD;EAChD,MAAM,YAAY,MAAM,aAAa,UAAU;EAC/C,MAAM,aAAa,aAAa,aAAa,MAAM,aAAa,WAAW,GAAG;AAE9E,MAAI,MACF,QACE,UAAU,UAAU,MAAM,WAAW,MAAM,WAAW,IACtD,YAAY,UAAU,MAAM,WAAW,MAAM,WAAW,IACvD,UAAU,SAAS,MAAM,UAAU,IAAI,CAAC;AAG7C,SAAO;IAET,CAAC,MAAM,CACR;CACD,MAAM,CAAC,eAAe,oBAAoB,eAAuB,wBAAwB,CAAC;AAE1F,iBAAgB;AACd,mBAAiB,wBAAwB,CAAC;IACzC,CAAC,OAAO,uBAAuB,CAAC;AAEnC,iBAAgB;AACd,wBAAsB,cAAc,QAAQ,iBAAiB,oBAAoB,aAAa,CAAC,CAAC;IAC/F,CAAC,eAAe,oBAAoB,CAAC;AAExC,KAAI,QAAS,QAAO,oBAAC,gBAAD,EAAkB,CAAA;AAEtC,QACE,qBAAC,aAAD,EAAA,UAAA,CACE,oBAAC,YAAD;EACE,IAAI;GACF,SAAS,QAAQ,UAAU;GAC3B,WAAW;GACX,YAAY;GACZ,YAAY;GACZ,UAAU;GACV,cAAc;GACd,OAAO;GACR;YAEA;EACU,CAAA,EACZ,SACC,qBAAC,UAAD,EAAA,UAAA;EACE,oBAAC,kBAAD,EAAA,UAAmB,MAAM,UAAU,OAAO,QAAQ,EAAoB,CAAA;EACtE,oBAAC,iBAAD;GAAiB,eAAY;aAC1B,oBAAoB,KAClB,WACC,OAAO,OAAO,eACZ,oBAAC,iBAAD;IACE,eAAa,oBAAoB,OAAO,GAAG,SAAS,OAAO,OAAO;IAElE,OAAO,OAAO,OAAO;IACrB,cAAc,KAAK,IAAK,gBAAgB,OAAO,wBAAQ,IAAI,MAAM,CAAC,GAAG,gBAAiB,KAAK,IAAI;IAC/F,EAHK,GAAG,OAAO,KAAK,OAAO,OAAO,KAGlC,CAEP;GACe,CAAA;EAClB,oBAAC,kBAAD,EAAA,UAAmB,MAAM,WAAW,OAAO,QAAQ,EAAoB,CAAA;EAC9D,EAAA,CAAA,CAED,EAAA,CAAA;;;;AC/ElB,MAAM,cAAyC,EAAE,MAAM,eAAe;CACpE,MAAM,CAAC,cAAc,mBAAmB,SAAiC,KAAK;CAC9E,MAAM,YAAY,gBAAwB;EACxC,MAAM,aAAa,KAAK;AAExB,SAAO,UAAU,eAAe,WAAW,IACvC,KACA,YAAY,MAAM,cAAc,UAAU,OAAO,YAAY,EAAE,QAAQ;;AAG7E,iBAAgB;EACd,MAAM,2BAA2B;GAC/B,MAAM,cAAc,OAAO;AAE3B,mBAAgB,gBAAgB,aAAa,gBAAgB,MAAM,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;;EAEjG,MAAM,aAAa,kBAAkB,oBAAoB,EAAE,KAAK,IAAK;AAErE,sBAAoB;AAEpB,eAAa;AACX,iBAAc,WAAW;;IAE1B,CAAC,MAAM,OAAO,CAAC;AAElB,QACE,oBAAC,KAAD;EAAK,SAAQ;EAAO,eAAc;EAAS,QAAO;YAC/C,UAAU,cAAc,KAAK,gBAC5B,oBAAC,UAAD;GAEE,OAAO,SAAS,YAAY;GAC5B,OAAO;GACP,eAAe,KAAK,eAAe,QAAQ,iBAAiB,aAAa,gBAAgB,YAAY,IAAI,EAAE;GAC3G,SAAS,SAAS,KAAA;GAClB,EALK,YAKL,CACF;EACE,CAAA;;;;AC3CV,MAAa,wBAAwB,MAAiB;AACpD,KAAI,UAAU,EACZ,OAAO,EACL,UAAU,EAAE,qDAAqD,EAClE,EACF,CAAC;AACF,QAAO;EACL,eAAe;GACb,aAAa;GACb,eAAe,EAAE;GAClB;EACD,kBAAkB,IAAI,OAAO,EAC3B,eAAe,IAAI,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,UAAU,EACvD,CAAC;EACH;;;;ACOH,MAAM,UAA6D,EACjE,KACA,OACA,MACA,MACA,UACA,GAAG,kBACC;CACJ,MAAM,EAAE,YAAY,gBAAgB,cAAc;EAAE;EAAK;EAAO;EAAM,CAAC;CACvE,MAAM,CAAC,YAAY,iBAAiB,SAAiC,KAAK;CAC1E,MAAM,CAAC,gBAAgB,qBAAqB,SAAqC,SAAS;CAE1F,MAAM,sBAAsB,UAA8E;AACxG,SAAO,MAAM,MAAM,OAAO,UAAU;AAClC,OAAI,MAAM,cAAc,MAAM,WAAY,QAAO,MAAM,MAAM,WAAW,CAAC,KAAK,MAAM,MAAM,WAAW,CAAC;AACtG,UAAO,MAAM,aAAa,KAAK;IAC/B;;AAGJ,iBAAgB;AACd,MAAI,CAAC,QAAQ,YAAY;AACvB,cACG,YAAY,CACZ,MAAM,EAAE,aAAa;AACpB,WAAO,eAAe,aAAyB;KAC7C,GAAI,WAAW,EAAE;KACjB;KACD,EAAE;KACH,CACD,YAAY,GAAG;AAElB,cACG,gBAAgB,CAChB,MAAM,EAAE,iBAAiB;AACxB,WAAO,eAAe,aAAyB;KAC7C,GAAI,WAAW,EAAE;KACjB;KACD,EAAE;KACH,CACD,YAAY,GAAG;AAElB,cACG,mBAAmB,CACnB,MAAM,EAAE,oBAAoB;AAC3B,WAAO,eAAe,aAAyB;KAC7C,GAAI,WAAW,EAAE;KACjB,eAAe,mBAAmB,cAAc;KACjD,EAAE;KACH,CACD,YAAY,GAAG;;AAEpB,MAAI,gBAAgB,iBAAiB,YACnC,gBAAe,cAAc,SAAS,gBAAgB;AACpD,eAAY,UACV,MAAM,uBAAuB,EAC7B,EAAE,IAAI,aAAa,GAClB,EAAE,OAAO,cAAc;AACtB,QAAI,UAAU,eAAe,qBAAqB;KAChD,MAAM,eAAe;AAErB,oBAAe,YAAwB;MACrC,MAAM,yBAAyB,SAAS,eAAe,QACpD,iBAAiB,aAAa,gBAAgB,YAChD;MACD,MAAM,mBAAmB,uBAAuB,uBAAuB,SAAS;AAEhF,UAAI,iBACF,kBAAiB,aAAa,aAAa;AAE7C,aAAO;OACL,GAAI,WAAW,EAAE;OACjB,eAAe,CAAC,GAAG,QAAQ,eAAe,aAAa;OACxD;OACD;eACO,UAAU,eAAe,qBAAqB;KACvD,MAAM,sBAAsB;AAE5B,oBAAe,YAAwB;MACrC,MAAM,gBAAgB,QAAQ,cAAc,KAAK,iBAC/C,aAAa,OAAO,oBAAoB,KAAK,sBAAsB,aACpE;AACD,aAAO;OACL,GAAI,WAAW,EAAE;OACjB;OACD;OACD;;KAGP;IACD;IAEH;EAAC;EAAM;EAAY;EAAa;EAAe,CAAC;CAEnD,MAAM,uBAAuB,aAC1B,aAA6B;AAC5B,oBAAkB,EAAE,GAAG,UAAU,CAAC;IAEpC,CAAC,kBAAkB,CACpB;AAED,QACE,oBAAC,YAAD;EACE,GAAI;EACE;EACN,SAASE;EACT,MAAM;EACI;EACV,YAAY;GAAE;GAAY;GAAa;EACvC,kBAAkB;EACN;EACU;EACD;EACrB,SAAS;EACT,eAAY;EACZ,CAAA;;;;ACrIN,MAAM,KAAK;AAEX,MAAM,KAAK,KAAa,KAAa,YAAsC,KAAK,EAAE,GAAG,GAAG,GAAG,OAAO;CAAE;CAAK,GAAG;CAAS,CAAC;AAEtH,MAAa,kBAAkB,SAAiB,EAAE,eAAe,KAAK;AAEtE,MAAa,YACX,MACA,WACA,UACA,SACW;CACX,MAAM,OAAO,eAAe,KAAK;CAEjC,MAAM,aAAa,MAAM;AACzB,KAAI,CAAC,YAAY,OAAQ,QAAO;AAEhC,QAAO,GAAG,KAAK,KAAK,EAAE,mBAAmB,MAAM,EAAE,OAAO,WAAW,QAAQ,CAAC;;;;AClB9E,qBAAqBC,UAAQ;AAK7B,MAAa,YAAgC,KAAA;AAE7C,MAAa,mBAA6B,CAAC,4CAA4C;AACvF,MAAa,mBAA6B,EAAE"}