tocco-admin 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/changelog.md +5 -0
  2. package/dist/chunk-138.1dac2102dca00a6ecddc.js +2 -0
  3. package/dist/chunk-138.1dac2102dca00a6ecddc.js.map +1 -0
  4. package/dist/chunk-404.285ccaafc0543180391a.js +2 -0
  5. package/dist/chunk-404.285ccaafc0543180391a.js.map +1 -0
  6. package/dist/{chunk-744.cf1b11985b1acf8f8758.js → chunk-697.b94de7e4e9e81ca9b3be.js} +3 -3
  7. package/dist/chunk-697.b94de7e4e9e81ca9b3be.js.map +1 -0
  8. package/dist/chunk-817.89303ab89e733524067b.js +2 -0
  9. package/dist/chunk-817.89303ab89e733524067b.js.map +1 -0
  10. package/dist/chunk-actions.636f80a1ff8d8305eca6.js +2 -0
  11. package/dist/chunk-actions.636f80a1ff8d8305eca6.js.map +1 -0
  12. package/dist/{chunk-code-editor.1e16966a5f2cbffbbc33.js → chunk-code-editor.ffe5b3bddeb0f646482a.js} +2 -2
  13. package/dist/chunk-code-editor.ffe5b3bddeb0f646482a.js.map +1 -0
  14. package/dist/chunk-docs-actions.3bcbf1e5418f40e73dae.js +2 -0
  15. package/dist/chunk-docs-actions.3bcbf1e5418f40e73dae.js.map +1 -0
  16. package/dist/chunk-vendor-icons.276a1de8671288ce5747.js +1 -0
  17. package/dist/index.js +7 -7
  18. package/dist/index.js.map +1 -1
  19. package/package.json +1 -1
  20. package/dist/chunk-404.9bc2425dfbf4ee21635e.js +0 -2
  21. package/dist/chunk-404.9bc2425dfbf4ee21635e.js.map +0 -1
  22. package/dist/chunk-744.cf1b11985b1acf8f8758.js.map +0 -1
  23. package/dist/chunk-817.46476531b6e7efc9219a.js +0 -2
  24. package/dist/chunk-817.46476531b6e7efc9219a.js.map +0 -1
  25. package/dist/chunk-872.78ef4c13fe048e7d74d8.js +0 -2
  26. package/dist/chunk-872.78ef4c13fe048e7d74d8.js.map +0 -1
  27. package/dist/chunk-actions.894c9b9d417c47055ce0.js +0 -2
  28. package/dist/chunk-actions.894c9b9d417c47055ce0.js.map +0 -1
  29. package/dist/chunk-code-editor.1e16966a5f2cbffbbc33.js.map +0 -1
  30. package/dist/chunk-docs-actions.8ab8cbdda6409ff4311f.js +0 -2
  31. package/dist/chunk-docs-actions.8ab8cbdda6409ff4311f.js.map +0 -1
  32. package/dist/chunk-vendor-icons.a0ddc6dcbaa37ff7f205.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack:///./packages/delete/src/modules/delete/actions.js","webpack:///./packages/delete/src/modules/delete/reducer.js","webpack:///./packages/delete/src/utils/deleteRequestParser.js","webpack:///./packages/delete/src/modules/delete/sagas.js","webpack:///./packages/delete/src/modules/reducers.js","webpack:///./packages/tocco-ui/src/SignalBox/StyledSignalBox.js","webpack:///./packages/tocco-ui/src/SignalBox/SignalBox.js","webpack:///./packages/delete/src/components/InfoPart/LinkPopOver.js","webpack:///./packages/delete/src/components/InfoPart/InfoPart.js","webpack:///./packages/delete/src/components/Dialog/StyledComponents.js","webpack:///./packages/delete/src/components/Dialog/Dialog.js","webpack:///./packages/delete/src/components/Dialog/DialogContainer.js","webpack:///./packages/delete/src/components/DeleteProgress/StyledComponents.js","webpack:///./packages/delete/src/components/DeleteProgress/DeleteProgress.js","webpack:///./packages/delete/src/components/DeleteProgress/DeleteProgressContainer.js","webpack:///./packages/delete/src/components/DeleteProgress/index.js","webpack:///./packages/delete/src/components/Delete/Delete.js","webpack:///./packages/delete/src/components/Delete/DeleteContainer.js","webpack:///./packages/delete/src/components/Delete/index.js","webpack:///./packages/delete/src/main.js","webpack:///./packages/tocco-ui/src/CodeEditor/TqlAutoCompleter.js","webpack:///./packages/tocco-ui/src/CodeEditor/TqlMode.js","webpack:///./packages/tocco-ui/src/CodeEditor/ToccoFtlMode.js","webpack:///./packages/tocco-ui/src/CodeEditor/AceEditor.js","webpack:///./packages/tocco-util/src/selection/selectionTypes.js","webpack:///./packages/tocco-util/src/selection/selection.js","webpack:///./packages/tocco-util/src/selection/proptype.js","webpack:///./packages/tocco-util/src/selection/index.js"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_defineProperty","value","_objectSpread","arguments","source","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","forEach","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","err","_iterableToArrayLimit","TypeError","_nonIterableRest","_toConsumableArray","arr2","_arrayWithoutHoles","iter","toString","call","from","_iterableToArray","_nonIterableSpread","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","measure","window","document","MutationObserver","performance","e","_ref$userAgent","navigator","userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","documentElement","head","addEventListener","createElement","IS_IE","indexOf","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","PREFIX_TO_STYLE","STYLE_TO_PREFIX","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","RESERVED_CLASSES","map","n","initial","FontAwesomeConfig","querySelector","_ref","_ref2","attr","val","coerce","element","getAttribute","getAttrConfig","_config","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","config","w","styles","hooks","shims","namespace","functions","loaded","domready","fn","setTimeout","doScroll","test","readyState","listener","removeEventListener","asyncTimer","NOOP","isNode","g","process","emit","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","asyncCall","callback","arg","invokeCallback","subscriber","owner","settled","_state","_data","promise","then","reject","handleThenable","resolve","resolved","fulfill","reason","publishFulfillment","publishRejection","publish","_then","_handled","notifyRejectionHandled","P","resolver","this","rejectPromise","invokeResolver","onFulfillment","onRejection","fulfilled","rejected","catch","all","promises","results","remaining","index","race","picked","Promise","d","meaninglessTransform","size","x","y","rotate","flipX","flipY","insertCss","css","style","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","nextUniqueId","id","Math","random","toArray","array","classArray","node","classList","split","getIconName","cls","name","parts","prefix","iconName","slice","join","htmlEscape","str","replace","joinStyles","reduce","acc","styleName","transformIsMeaningful","transform","transformForSvg","containerWidth","iconWidth","outer","innerTranslate","innerScale","innerRotate","inner","path","ALL_SPACE","width","height","fillBlack","abstract","force","attributes","fill","makeInlineSvgAbstract","params","_params$icons","icons","main","mask","symbol","title","maskId","titleId","extra","_params$watchable","watchable","found","isUploadedIcon","widthClass","ceil","attrClass","c","classes","content","children","role","uploadedIconWidthStyle","tag","args","explicitMaskId","mainWidth","mainPath","icon","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconMasking","styleString","makeIconStandard","asSymbol","offset","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","class","makeLayersCounterAbstract","noop$1","p","preamble","end","perf","subject","initialValue","thisContext","result","func","a","b","bindInternal4","toHex","unicode","charCodeAt","isPrivateUnicode","string","second","first","cp","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","_byUnicode","_byLigature","_byOldName","build","lookup","reducer","o","ligatures","ligature","hasRegular","shim","oldName","byUnicode","styles$1","getCanonicalIcon","values","autoFetchSvg","rest","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","attributeName","trim","joinAttributes","noop$2","isWatched","mutators","mutation","newOuterHTML","parentNode","outerHTML","toLowerCase","newNode","replaceChild","nest","forSvg","RegExp","splitClasses","match","toSvg","toNode","newInnerHTML","performOperationSync","op","perform","mutations","callbackFunction","frame","requestAnimationFrame","mutator","disabled","enableObservation","mo","observe","options","treeCallback","nodeCallback","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","mutationRecord","type","addedNodes","_getCanonicalIcon","childList","characterData","subtree","classParser","existingPrefix","existingIconName","innerText","parseTransformString","transformString","parseFloat","isNaN","parseMeta","_classParser","extraClasses","extraStyles","prop","styleParser","transformParser","symbolParser","extraAttributes","attributesParser","maskParser","MissingIcon","error","message","stack","Error","create","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","missing","cx","cy","r","opacity","styles$2","asFoundIcon","vectorData","findIcon","kitConfig","iconUploads","descriptiveIconName","find","u","v","resolveCustomIconVersion","FontAwesomeKitConfig","token","styles$3","generateMutation","nodeMeta","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","generateLayersText","generateSvgReplacementMutation","onTree","root","htmlClassList","hclAdd","suffix","add","hclRemove","remove","prefixes","prefixesDomQuery","candidates","querySelectorAll","console","resolvedMutations","onNode","replaceForPosition","position","pendingAttribute","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","fontWeight","removeChild","_content","hexValue","substr","iconIdentifier","meta","firstChild","appendChild","removeAttribute","processable","operations","drc","fp","rc","s","dPatt","customPropPatt","rPatt","ensureCss","_cssInserted","apiObject","abstractCreator","get","container","html","findIconDefinition","iconLookup","_iconLookup$prefix","library","definitions","Library","instance","Constructor","_classCallCheck","protoProps","staticProps","_this","_len","_key","additions","_pullDefinitions","definition","0","_normalized$key","noAuto","disconnect","dom","i2svg","_params$node","_params$callback","watch","autoReplaceSvgRoot","autoReplace","parse","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","maybeIconDefinition","text","_params$transform2","_params$title2","_params$classes2","_params$attributes2","_params$styles2","counter","_params$title3","_params$classes3","_params$attributes3","_params$styles3","layer","assembler","_params$classes4","api","_params$autoReplaceSv","setDeleteDialogInfo","dialogInfo","payload","doDelete","setEntitiesToDelete","entitiesToDelete","ACTION_HANDLERS","reducerUtil","initialState","deletingInProgress","deleteStatus","transformRootEntity","rootEntities","entity","applyKeys","rootEntity","entityName","entityLabel","includes","entityNameReal","keyReal","_get","isEntityDeletable","entityToDelete","affectedEntities","affectedEntity","getDialogInfo","response","currentBuId","deletable","relatedAttr","rootEntitiesDeletable","rootEntitiesNotDeletable","relatedEntities","keysOtherBu","businessUnitId","Set","transformRelatedEntities","relatedDeletable","relatedNotDeletable","hasUnreadableEntities","unreadableEntities","getEntitiesToDelete","deleteEntityPropType","PropTypes","isRequired","getDeleteBodyFromSelection","getDeleteEndpoint","loadDialogInfo","onCancel","mainSagas","inputSelector","state","input","textResourceSelector","intl","messages","entitiesToDeleteSelector","del","select","selection","selectionUtil","entities","entityModel","customDeleteEndpoint","body","deleteEndpoint","method","deleteResponse","principal","currentBusinessUnit","put","actions","acceptedStatusCodes","textResources","ok","deletedEntities","remoteEvents","externalEvents","status","information","takeLatest","action","handler","sagas","deleteSagas","ALLOWED_CONDITIONS","design","COLORS","theme","shadeColor","StyledSignalBox","styled","condition","getColor","scale","StyledSignalListItem","propTypes","SignalBox","Typography","React","defaultProps","relatedEntity","maxCountLink","count","Popover","placement","NonBreakingText","navigationStrategy","entries","rootEntityName","ListLink","entityKeys","prev","curr","linkText","Count","Content","StyledSectionWrapper","StyledButtonsWrapper","StyledButton","Button","onClick","every","ink","mapActionCreators","connect","injectIntl","Dialog","StyledIconWrapper","DeleteProgress","useEffect","LoadMask","required","loadingText","formatMessage","Delete","EXTERNAL_EVENTS","initApp","events","publicPath","store","appFactory","reducers","actionEmitter","emitAction","handleNotifications","notification","textResourceModules","DeleteApp","packageName","component","TokenIterator","ace","getTokenType","substring","lastIndexOf","isCurrentTokenOfType","getCurrentToken","findLastPathStep","stepBackward","modelToken","stepBackUntilToken","handleParentheses","parenCount","findLastModelScope","findCurrentPath","stepForward","backtrack","stepBack","steps","lastStep","step","unshift","sendRequest","endpoint","request","extractBody","json","determineAvailablePaths","createIterator","baseModel","modelScope","currentPath","relationSteps","model","sourceModel","resolvePart","buildResolveUrl","fields","relations","f","label","fieldName","relation","relationName","targetEntity","resolvePath","paths","pathCompletions","caption","score","errors","loadAllAvailableModels","models","modelCompletions","getAvailableFunctions","defaultScore","getCompletions","editor","session","pos","createIteratorAtCurrentPosition","row","column","currentToken","previousToken","types","placeholders","placeholder","operators","atoms","TqlHighlightRules","commonWhere","regex","caseInsensitive","customRules","start","rootwhere","comparison","exists","existswhere","countwhere","order","$rules","_mergeWith","objValue","srcValue","_isArray","normalizeRules","TextHighlightRules","TqlMode","HighlightRules","completer","TqlAutoCompleter","snippedIdField","Mode","ToccoFtlLangHighlightRules","qstring","defaultToken","ToccoFtlHighlightRules","tqlDirectives","startRules","apply","embedRules","addRules","tqlEndRules","mergingRules","HtmlHighlightRules","ToccoFtlMode","StyledEditor","modeMappings","groovy","GroovyMode","HtmlMode","xml","XmlMode","properties","PropertiesMode","JsonMode","htmlmixed","freemarkermixed","ftl","tql","less","LessMode","drools","DroolsMode","TextMode","setEditorConfiguration","mode","showGutter","editorOptions","getSession","setMode","getMode","setTheme","k","setOption","renderer","setShowGutter","resize","onChange","containerReference","useRef","editorReference","aceEditor","current","setValue","on","getValue","destroy","ref","ID","QUERY","getEntities","fetchEntities","selectionTypes","query","limit","consoleLogger","ids","propType","propName","componentName"],"mappings":"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","file":"chunk-code-editor.ffe5b3bddeb0f646482a.js","sourcesContent":["/*!\n * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar PREFIX_TO_STYLE = {\n 'fas': 'solid',\n 'far': 'regular',\n 'fal': 'light',\n 'fad': 'duotone',\n 'fab': 'brands',\n 'fak': 'kit',\n 'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n // For example <script data-search-pseudo-elements src=\"...\"></script>\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.1\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\nfunction codePointAt(string, index) {\n /*! https://mths.be/codepointat v0.2.0 by @mathias */\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n/**\n * Used to check that the character is between the E000..F8FF private unicode\n * range\n */\n\nfunction isPrivateUnicode(iconName) {\n if (iconName.length !== 1) {\n return false;\n } else {\n var cp = codePointAt(iconName, 0);\n return cp >= 57344 && cp <= 63743;\n }\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"<!-- \".concat(node.outerHTML, \" Font Awesome fontawesome.com -->\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction resolveCustomIconVersion() {\n var kitConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var iconName = arguments.length > 1 ? arguments[1] : undefined;\n\n if (iconName && isPrivateUnicode(iconName)) {\n if (kitConfig && kitConfig.iconUploads) {\n var iconUploads = kitConfig.iconUploads;\n var descriptiveIconName = Object.keys(iconUploads).find(function (key) {\n return iconUploads[key] && iconUploads[key].u && iconUploads[key].u === toHex(iconName);\n });\n\n if (descriptiveIconName) {\n return iconUploads[descriptiveIconName].v;\n }\n }\n } else {\n if (kitConfig && kitConfig.iconUploads && kitConfig.iconUploads[iconName] && kitConfig.iconUploads[iconName].v) {\n return kitConfig.iconUploads[iconName].v;\n }\n }\n}\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n var kitToken = null;\n var iconVersion = resolveCustomIconVersion(WINDOW.FontAwesomeKitConfig, iconName);\n\n if (WINDOW.FontAwesomeKitConfig && WINDOW.FontAwesomeKitConfig.token) {\n kitToken = WINDOW.FontAwesomeKitConfig.token;\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","export const LOAD_DIALOG_INFO = 'root/LOAD_DIALOG_INFO'\nexport const SET_DIALOG_INFO = 'delete/SET_DELETE_DIALOG_INFO'\nexport const DO_DELETE = 'delete/DO_DELETE'\nexport const SET_DELETING_IN_PROGRESS = 'delete/SET_DELETING_IN_PROGRESS'\nexport const ON_CANCEL = 'delete/ON_CANCEL'\nexport const SET_ENTITIES_TO_DELETE = 'delete/SET_ENTITIES_TO_DELETE'\n\nexport const\n loadDialogInfo = () => ({\n type: LOAD_DIALOG_INFO\n })\n\nexport const setDeleteDialogInfo = dialogInfo => ({\n type: SET_DIALOG_INFO,\n payload: {\n dialogInfo\n }\n})\n\nexport const doDelete = () => ({\n type: DO_DELETE\n})\n\nexport const setDeletingInProgress = deletingInProgress => ({\n type: SET_DELETING_IN_PROGRESS,\n payload: {\n deletingInProgress\n }\n})\n\nexport const onCancel = () => ({\n type: ON_CANCEL\n})\n\nexport const setEntitiesToDelete = entitiesToDelete => ({\n type: SET_ENTITIES_TO_DELETE,\n payload: {\n entitiesToDelete\n }\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_DIALOG_INFO]: reducerUtil.singleTransferReducer('dialogInfo'),\n [actions.SET_ENTITIES_TO_DELETE]: reducerUtil.singleTransferReducer('entitiesToDelete'),\n [actions.SET_DELETING_IN_PROGRESS]: reducerUtil.singleTransferReducer('deletingInProgress')\n}\n\nconst initialState = {\n dialogInfo: null,\n entitiesToDelete: null,\n deletingInProgress: false\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import _get from 'lodash/get'\nimport PropTypes from 'prop-types'\n\nconst deleteStatus = {\n DELETABLE: 'DELETABLE',\n DENIED_BY_CASCADE: 'DENIED_BY_CASCADE',\n NO_DELETE_PERMISSION: 'NO_DELETE_PERMISSION'\n}\n\nconst transformRelatedEntities = (relatedEntities, entityToDelete, deletable, currentBuId) => ({\n ...entityToDelete.affectedEntities.reduce((acc, affectedEntity) => ({\n ...acc,\n ...(deletable || affectedEntity.deleteStatus !== deleteStatus.DELETABLE\n ? {\n [affectedEntity.entityName]: {\n ..._get(acc,\n affectedEntity.entityName,\n {keys: [], keysOtherBu: [], entityLabel: affectedEntity.entityLabel}\n ),\n ...(affectedEntity.businessUnitId === null || affectedEntity.businessUnitId === currentBuId\n ? {\n keys: Array.from(\n new Set([..._get(acc, [affectedEntity.entityName, 'keys'], []), affectedEntity.key])\n )\n }\n : {\n keysOtherBu: Array.from(\n new Set([..._get(acc, [affectedEntity.entityName, 'keysOtherBu'], []), affectedEntity.key])\n )\n }\n )\n }\n }\n : {}\n )\n }), {...relatedEntities})\n})\n\nconst transformRootEntity = (rootEntities, entity, applyKeys = true) => {\n const {entityName, entityLabel, key} = entity.rootEntity\n if (key.includes('/')) {\n const [entityNameReal, keyReal] = key.split('/')\n return {\n ...rootEntities,\n [entityNameReal]: {\n entityLabel,\n keys: [..._get(rootEntities, [entityNameReal, 'keys'], []), ...(applyKeys ? [keyReal] : [])]\n }\n }\n } else {\n return {\n ...rootEntities,\n [entityName]: {\n entityLabel,\n keys: [..._get(rootEntities, [entityName, 'keys'], []), ...(applyKeys ? [key] : [])]\n }\n }\n }\n}\n\nconst isEntityDeletable = entityToDelete =>\n entityToDelete.rootEntity.deleteStatus === deleteStatus.DELETABLE\n && !entityToDelete.affectedEntities.find(affectedEntity => affectedEntity.deleteStatus !== deleteStatus.DELETABLE)\n\nexport const getDialogInfo = (response, currentBuId) => {\n const {entitiesToDelete} = response\n\n return entitiesToDelete.reduce((acc, entityToDelete) => {\n const deletable = isEntityDeletable(entityToDelete)\n const relatedAttr = deletable ? 'relatedDeletable' : 'relatedNotDeletable'\n return {\n ...acc,\n rootEntitiesDeletable: transformRootEntity(acc.rootEntitiesDeletable, entityToDelete, deletable),\n ...!deletable && {rootEntitiesNotDeletable: transformRootEntity(acc.rootEntitiesNotDeletable, entityToDelete)},\n [relatedAttr]: transformRelatedEntities(acc[relatedAttr], entityToDelete, deletable, currentBuId)\n }\n },\n {\n rootEntitiesDeletable: {},\n rootEntitiesNotDeletable: {},\n relatedDeletable: {},\n relatedNotDeletable: {},\n hasUnreadableEntities: !!entitiesToDelete.find(e => e.unreadableEntities)\n })\n}\n\nexport const getEntitiesToDelete = ({entitiesToDelete}) => ({\n entityName: _get(entitiesToDelete, '[0].rootEntity.entityName'),\n keys: entitiesToDelete.reduce((acc, entityToDelete) => [\n ...acc,\n ...(isEntityDeletable(entityToDelete) ? [entityToDelete.rootEntity.key] : [])\n ]\n , [])\n})\n\nexport const deleteEntityPropType = PropTypes.shape({\n entityLabel: PropTypes.string,\n keys: PropTypes.arrayOf(PropTypes.string),\n keysOtherBu: PropTypes.arrayOf(PropTypes.string)\n})\n\nexport const deleteInfoPropType = PropTypes.shape({\n rootEntitiesDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n rootEntitiesNotDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n relatedDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n relatedNotDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n hasUnreadableEntities: PropTypes.bool\n})\n","import {takeLatest, all, call, put, select} from 'redux-saga/effects'\nimport {rest, externalEvents} from 'tocco-app-extensions'\nimport {selection as selectionUtil} from 'tocco-util'\n\nimport * as actions from './actions'\nimport {getDialogInfo, getEntitiesToDelete} from '../../utils/deleteRequestParser'\n\nexport const inputSelector = state => state.input\nexport const textResourceSelector = state => state.intl.messages\nexport const entitiesToDeleteSelector = state => state.del.entitiesToDelete\n\nexport function* getDeleteBodyFromSelection() {\n const {selection} = yield select(inputSelector)\n\n const entities = yield call(selectionUtil.getEntities, selection, rest.fetchEntities)\n\n return {\n entityModel: entities.entityName,\n keys: entities.keys\n }\n}\n\nexport function* getDeleteEndpoint() {\n const {customDeleteEndpoint} = yield select(inputSelector)\n return customDeleteEndpoint || 'client/delete'\n}\n\nexport function* loadDialogInfo() {\n const body = yield call(getDeleteBodyFromSelection)\n const deleteEndpoint = yield call(getDeleteEndpoint)\n\n const [deleteResponse, principal] = yield all([\n call(rest.requestSaga, `${deleteEndpoint}/dialog`, {method: 'POST', body}),\n call(rest.fetchPrincipal)\n ])\n\n const dialogInfo = yield call(getDialogInfo, deleteResponse.body, principal.currentBusinessUnit.id)\n yield put(actions.setDeleteDialogInfo(dialogInfo))\n\n const entitiesToDelete = yield call(getEntitiesToDelete, deleteResponse.body)\n yield put(actions.setEntitiesToDelete(entitiesToDelete))\n}\n\nexport function* doDelete() {\n const entitiesToDelete = yield select(entitiesToDeleteSelector)\n\n yield put(actions.setDeletingInProgress(true))\n const body = {\n entityModel: entitiesToDelete.entityName,\n keys: entitiesToDelete.keys\n }\n\n const deleteEndpoint = yield call(getDeleteEndpoint)\n\n const response = yield call(rest.requestSaga, deleteEndpoint, {\n method: 'POST',\n body,\n acceptedStatusCodes: [409]\n })\n\n const textResources = yield select(textResourceSelector)\n if (response.ok) {\n const {body} = response\n\n const entities = Object.keys(body.deletedEntities).reduce((acc, entityName) => {\n return [\n ...acc,\n ...body.deletedEntities[entityName].map(key => ({entityName, key}))\n ]\n }, [])\n\n const remoteEvents = [{\n type: 'entity-delete-event',\n payload: {\n entities\n }\n }]\n\n yield put(externalEvents.fireExternalEvent('onSuccess', {\n message: textResources['client.delete.successfullyMessage'],\n remoteEvents\n }))\n } else {\n if (response.status === 409 && response.body.information) {\n yield put(externalEvents.fireExternalEvent('onError', {message: response.body.information}))\n } else {\n yield put(externalEvents.fireExternalEvent('onError', {message: textResources['client.delete.errorMessage']}))\n }\n }\n}\n\nexport function* onCancel() {\n yield put(externalEvents.fireExternalEvent('onCancel'))\n}\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.LOAD_DIALOG_INFO, loadDialogInfo),\n takeLatest(actions.DO_DELETE, doDelete),\n takeLatest(actions.ON_CANCEL, onCancel)\n ])\n}\n","import del, {sagas as deleteSagas} from './delete'\n\nexport default {\n del\n}\n\nexport const sagas = [\n deleteSagas\n]\n","import _get from 'lodash/get'\nimport styled from 'styled-components'\n\nimport {StyledSignalListItem} from '../SignalList'\nimport {\n design,\n scale,\n shadeColor,\n theme\n} from '../utilStyles'\n\nconst ALLOWED_CONDITIONS = [\n design.condition.BASE,\n design.condition.DANGER,\n design.condition.SUCCESS,\n design.condition.WARNING\n]\n\nconst COLORS = {\n [design.condition.DANGER]: theme.color('signal.danger.paper'),\n [design.condition.SUCCESS]: theme.color('signal.success.paper'),\n [design.condition.WARNING]: theme.color('signal.warning.paper'),\n [design.condition.BASE]: props => shadeColor(_get(props.theme, 'colors.paper'), 1)\n}\n\nconst getColor = props => {\n const color = COLORS[props.condition]\n return color || shadeColor(_get(props.theme, 'colors.paper'), 1)\n}\n\nconst StyledSignalBox = styled.div`\n && {\n background-color: ${props => getColor(props)};\n padding: ${scale.space(-1)};\n margin-bottom: ${scale.space(-1)};\n border-radius: ${theme.radii('radii.regular')};\n\n &:last-child {\n margin-bottom: 0;\n }\n\n ${StyledSignalListItem} {\n color: inherit;\n }\n }\n`\n\nStyledSignalBox.propTypes = {\n condition: design.oneOfPropTypeAndCompletelyMapped(ALLOWED_CONDITIONS, COLORS)\n}\n\nexport {\n ALLOWED_CONDITIONS,\n StyledSignalBox as default\n}\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport StyledSignalBox, {ALLOWED_CONDITIONS} from './StyledSignalBox'\nimport Typography from '../Typography'\nimport {design} from '../utilStyles'\n\n/**\n * Emphasize important information by context. Group them by utilizing several instances of <SignalBox/>.\n */\nconst SignalBox = props =>\n <StyledSignalBox condition={props.condition}>\n {props.title && <Typography.H5>{props.title}</Typography.H5>}\n {React.Children.map(props.children, child => React.cloneElement(child))}\n {props.meta && <Typography.Small>{props.meta}</Typography.Small>}\n </StyledSignalBox>\n\nSignalBox.defaultProps = {\n condition: design.condition.BASE\n}\n\nSignalBox.propTypes = {\n /**\n * Prefer <SignalList.List/> and <SignalList.Item/> to list items over any other typographic component.\n */\n children: PropTypes.node,\n /**\n * Background is colorized according condition. Default value is 'base'.\n * Possible values: base|danger|success|warning\n */\n condition: PropTypes.oneOf(ALLOWED_CONDITIONS),\n /**\n * Add loosely related but still important information as meta text (e.g. date, id, type).\n */\n meta: PropTypes.string,\n /**\n * Summarize information from whole signal box concise.\n */\n title: PropTypes.string\n}\n\nexport default SignalBox\n","import React from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport {Popover, Typography} from 'tocco-ui'\nimport PropTypes from 'prop-types'\n\nimport {deleteEntityPropType} from '../../utils/deleteRequestParser'\n\nconst LinkPopOver = ({relatedEntity, children, maxCountLink}) => {\n if (relatedEntity.keys.length < maxCountLink && relatedEntity.keysOtherBu.length === 0) {\n return children\n }\n\n const content = <>\n {relatedEntity.keys.length > maxCountLink\n && <Typography.P>\n <FormattedMessage id=\"client.delete.tooManyRecords\"/>\n </Typography.P>\n }\n {relatedEntity.keysOtherBu.length > 0\n && <Typography.P>\n <FormattedMessage id=\"client.delete.recordInOtherBU\" values={{count: relatedEntity.keysOtherBu.length}}/>\n </Typography.P>\n }\n </>\n\n return <Popover\n content={content}\n placement=\"top\"\n >\n {children}\n </Popover>\n}\n\nLinkPopOver.propTypes = {\n relatedEntity: deleteEntityPropType.isRequired,\n maxCountLink: PropTypes.number.isRequired,\n children: PropTypes.element\n}\n\nexport default LinkPopOver\n","import React from 'react'\nimport {Typography} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport LinkPopOver from './LinkPopOver'\nimport {deleteEntityPropType} from '../../utils/deleteRequestParser'\n\nconst NonBreakingText = styled.span`\n white-space: nowrap;\n`\n\nconst InfoPart = ({rootEntities, relatedEntities, maxCountLink, navigationStrategy}) => (\n <Typography.Span>\n <Typography.B>\n {\n Object.entries(rootEntities).map(([rootEntityName, rootEntity]) => (\n <span key={`root-entity-${rootEntityName}`}>\n {rootEntity.entityLabel} ({rootEntity.keys.length > 0 && navigationStrategy.ListLink\n ? <navigationStrategy.ListLink\n entityName={rootEntityName}\n entityKeys={rootEntity.keys}\n >\n {rootEntity.keys.length}\n </navigationStrategy.ListLink>\n : <Typography.Span>{rootEntity.keys.length}</Typography.Span>\n })</span>\n )).reduce((prev, curr) => [prev, ', ', curr])}\n </Typography.B>\n {\n Object.keys(relatedEntities).length > 0\n && <>\n <span> / </span>\n {Object.keys(relatedEntities).map(entityName => {\n const relatedEntity = relatedEntities[entityName]\n const linkText = [...relatedEntity.keys, ...relatedEntity.keysOtherBu].length\n\n const Count = relatedEntity.keys.length > 0 && navigationStrategy.ListLink\n ? <navigationStrategy.ListLink\n entityName={entityName}\n entityKeys={relatedEntity.keys.slice(0, maxCountLink)}\n >\n {linkText}\n </navigationStrategy.ListLink>\n : <Typography.Span>{linkText}</Typography.Span>\n\n const Content = <LinkPopOver relatedEntity={relatedEntity} maxCountLink={maxCountLink}>{Count}</LinkPopOver>\n\n return <React.Fragment\n key={'entity-info-' + entityName}>\n <NonBreakingText>{relatedEntity.entityLabel} ({Content})</NonBreakingText>\n </React.Fragment>\n }).reduce((prev, curr) => [prev, ', ', curr])}\n </>\n }\n\n </Typography.Span>\n)\n\nInfoPart.propTypes = {\n rootEntities: PropTypes.objectOf(\n PropTypes.shape({\n entityLabel: PropTypes.string.isRequired,\n keys: PropTypes.arrayOf(PropTypes.string).isRequired\n })).isRequired,\n relatedEntities: PropTypes.objectOf(deleteEntityPropType).isRequired,\n maxCountLink: PropTypes.number,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default InfoPart\n","import styled from 'styled-components'\nimport {StyledButton, scale} from 'tocco-ui'\n\nexport const StyledSectionWrapper = styled.div`\n padding-top: ${scale.space(0.6)};\n`\n\nexport const StyledButtonsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n\n ${StyledButton} {\n margin-right: 0;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Button, Typography, SignalBox} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\nimport {FormattedMessage} from 'react-intl'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport InfoPart from '../InfoPart'\nimport {StyledSectionWrapper, StyledButtonsWrapper} from './StyledComponents'\n\nconst Dialog = ({\n dialogInfo: {\n rootEntitiesDeletable,\n rootEntitiesNotDeletable,\n relatedDeletable,\n relatedNotDeletable,\n hasUnreadableEntities\n }, doDelete, onCancel, navigationStrategy\n}) => <>\n <Typography.P><FormattedMessage id=\"client.delete.confirmText\"/></Typography.P>\n <InfoPart\n key=\"infopart-deletable\"\n rootEntities={rootEntitiesDeletable}\n relatedEntities={relatedDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n {Object.keys(rootEntitiesNotDeletable).length > 0\n && <StyledSectionWrapper>\n <Typography.P><FormattedMessage id=\"client.delete.textNotDeletable\"/></Typography.P>\n <InfoPart\n key=\"infopart-notdeletable\"\n rootEntities={rootEntitiesNotDeletable}\n relatedEntities={relatedNotDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n </StyledSectionWrapper>\n }\n {hasUnreadableEntities\n && <StyledSectionWrapper>\n <SignalBox\n condition=\"warning\">\n <Typography.Span><FormattedMessage id=\"client.delete.unreadableEntities\"/></Typography.Span>\n </SignalBox>\n </StyledSectionWrapper>\n }\n <StyledSectionWrapper>\n <StyledButtonsWrapper>\n <Button\n onClick={doDelete}\n disabled={Object.keys(rootEntitiesDeletable).every(entity => rootEntitiesDeletable[entity].keys.length === 0)}\n >\n <FormattedMessage id=\"client.delete.deleteButton\"/>\n </Button>\n <Button\n ink=\"primary\"\n onClick={onCancel}\n >\n <FormattedMessage id=\"client.delete.cancelButton\"/>\n </Button>\n </StyledButtonsWrapper>\n </StyledSectionWrapper>\n </>\n\nDialog.propTypes = {\n onCancel: PropTypes.func.isRequired,\n doDelete: PropTypes.func.isRequired,\n dialogInfo: deleteInfoPropType.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default Dialog\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport {doDelete, onCancel} from '../../modules/delete/actions'\nimport Dialog from './Dialog'\n\nconst mapActionCreators = {\n doDelete,\n onCancel\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n navigationStrategy: state.input.navigationStrategy\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Dialog))\n","import styled from 'styled-components'\nimport {scale} from 'tocco-ui'\n\nexport const StyledIconWrapper = styled.div`\n margin-bottom: ${scale.space(0.2)};\n`\n","import React from 'react'\nimport {LoadingSpinner, Typography} from 'tocco-ui'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport InfoPart from '../InfoPart'\nimport {StyledIconWrapper} from './StyledComponents'\n\nconst DeleteProgress = ({dialogInfo, navigationStrategy}) => {\n return <>\n <StyledIconWrapper>\n <LoadingSpinner size=\"30px\"/>\n </StyledIconWrapper>\n <Typography.P><FormattedMessage id=\"client.delete.deleteInProgress\"/></Typography.P>\n <InfoPart\n key=\"infopart-deletable\"\n rootEntities={dialogInfo.rootEntitiesDeletable}\n relatedEntities={dialogInfo.relatedDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n </>\n}\n\nDeleteProgress.propTypes = {\n dialogInfo: deleteInfoPropType.isRequired,\n intl: PropTypes.object.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default DeleteProgress\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport {doDelete} from '../../modules/delete/actions'\nimport DeleteProgress from './DeleteProgress'\n\nconst mapActionCreators = {\n doDelete\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n navigationStrategy: state.input.navigationStrategy\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DeleteProgress))\n","import DeleteProgress from './DeleteProgressContainer'\n\nexport default DeleteProgress\n","import React, {useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {LoadMask} from 'tocco-ui'\n\nimport Dialog from '../Dialog'\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport DeleteProgress from '../DeleteProgress'\n\nconst Delete = ({loadDialogInfo, dialogInfo, deletingInProgress, intl}) => {\n useEffect(() => {\n loadDialogInfo()\n }, [])\n\n const msg = id => intl.formatMessage({id})\n\n if (deletingInProgress) {\n return <DeleteProgress/>\n }\n\n return (\n <LoadMask\n required={[dialogInfo]}\n loadingText={msg('client.delete.loadingText')}\n >\n {dialogInfo && <Dialog/>}\n </LoadMask>\n )\n}\n\nDelete.propTypes = {\n loadDialogInfo: PropTypes.func.isRequired,\n dialogInfo: deleteInfoPropType,\n deletingInProgress: PropTypes.bool,\n intl: PropTypes.object.isRequired\n}\n\nexport default Delete\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport Delete from './Delete'\nimport {loadDialogInfo} from '../../modules/delete/actions'\n\nconst mapActionCreators = {\n loadDialogInfo\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n deletingInProgress: state.del.deletingInProgress\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Delete))\n","import Delete from './DeleteContainer'\n\nexport default Delete\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {reducer as reducerUtil, selection} from 'tocco-util'\nimport {actionEmitter, appFactory, externalEvents, notification} from 'tocco-app-extensions'\n\nimport reducers, {sagas} from './modules/reducers'\nimport Delete from './components/Delete'\n\nconst packageName = 'delete'\n\nconst EXTERNAL_EVENTS = [\n 'onSuccess',\n 'onCancel',\n 'onError',\n 'emitAction'\n]\n\nconst initApp = (id, input, events, publicPath) => {\n const content = <Delete/>\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n actionEmitter.addToStore(store, events.emitAction)\n const handleNotifications = !events.emitAction\n notification.addToStore(store, handleNotifications)\n externalEvents.addToStore(store, events)\n\n return appFactory.createApp(\n packageName,\n content,\n store,\n {\n input,\n events,\n actions: [],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\n }\n )\n}\n\n(() => {\n if (__DEV__ && __PACKAGE_NAME__ === packageName) {\n const input = require('./dev/input.json')\n\n if (!__NO_MOCK__) {\n const fetchMock = require('fetch-mock').default\n fetchMock.config.overwriteRoutes = false\n const setupFetchMocks = require('./dev/fetchMocks').default\n setupFetchMocks(packageName, fetchMock)\n fetchMock.spy()\n }\n\n const app = initApp(packageName, input)\n\n if (module.hot) {\n module.hot.accept('./modules/reducers', () => {\n const reducers = require('./modules/reducers').default\n reducerUtil.hotReloadReducers(app.store, reducers)\n })\n }\n\n appFactory.renderApp(app.component)\n } else {\n appFactory.registerAppInRegistry(packageName, initApp)\n }\n})()\n\nconst DeleteApp = props => {\n const {component} = appFactory.useApp({initApp, props, packageName, externalEvents: EXTERNAL_EVENTS})\n return component\n}\n\nDeleteApp.propTypes = {\n selection: selection.propType.isRequired,\n customDeleteEndpoint: PropTypes.string\n}\n\nexport default DeleteApp\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport {request} from 'tocco-util'\n\nimport {functions, placeholders, types} from './TqlMode'\n\nconst TokenIterator = ace.require('ace/token_iterator').TokenIterator\nconst getTokenType = token => token ? token.type.substring(token.type.lastIndexOf('.') + 1) : null\n\nconst isCurrentTokenOfType = (iterator, type) => getTokenType(iterator.getCurrentToken()) === type\n\nconst findLastPathStep = iterator => {\n if (isCurrentTokenOfType(iterator, 'model')) {\n iterator.stepBackward()\n }\n if (isCurrentTokenOfType(iterator, 'field') || isCurrentTokenOfType(iterator, 'relation')) {\n iterator.stepBackward()\n }\n if (isCurrentTokenOfType(iterator, 'chaining')) {\n iterator.stepBackward()\n } else {\n return null\n }\n\n if (isCurrentTokenOfType(iterator, 'model')) {\n const modelToken = iterator.getCurrentToken()\n iterator.stepBackward()\n iterator.stepBackward()\n return modelToken ? modelToken.value.trim() : null\n } else {\n return null\n }\n}\n\nconst stepBackUntilToken = (iterator, type) => {\n while (!isCurrentTokenOfType(iterator, type)) {\n if (!iterator.stepBackward()) {\n return false\n }\n }\n return true\n}\n\nconst handleParentheses = (iterator, parenCount) => {\n if (isCurrentTokenOfType(iterator, 'rparen')) {\n return 1\n } else if (parenCount > 0 && isCurrentTokenOfType(iterator, 'lparen')) {\n iterator.stepBackward()\n return -1\n } else {\n return 0\n }\n}\n\nconst findLastModelScope = iterator => {\n let parenCount = 0\n while (iterator.getCurrentToken()) {\n if (parenCount === 0 && isCurrentTokenOfType(iterator, 'where')) {\n const modelToken = iterator.stepBackward()\n return modelToken ? [modelToken.value.trim(), ...findCurrentPath(iterator)] : []\n }\n if (isCurrentTokenOfType(iterator, 'order_by')) {\n stepBackUntilToken(iterator, 'find')\n const modelToken = iterator.stepForward()\n return modelToken ? modelToken.value.trim() : []\n }\n parenCount += handleParentheses(iterator, parenCount)\n if (!iterator.stepBackward()) {\n return null\n }\n }\n return null\n}\n\nconst backtrack = (iterator, stepBack) => {\n const steps = []\n let lastStep = stepBack(iterator)\n while (lastStep) {\n if (Array.isArray(lastStep)) {\n lastStep.forEach(step => steps.unshift(step))\n } else {\n steps.unshift(lastStep)\n }\n lastStep = stepBack(iterator)\n }\n return steps\n}\n\nexport const findCurrentPath = iterator => backtrack(iterator, findLastPathStep)\nexport const findCurrentModelScope = iterator => backtrack(iterator, findLastModelScope)\n\n/**\n * built-in language completions use 1000000, which also seems to just be some magic number\n * keyword and local completions seem to be somewhere around 100 based on some experiments with ordering\n **/\nconst defaultScore = 1000\n\nconst sendRequest = endpoint => request.executeRequest(`rest/${endpoint}`)\n\nconst extractBody = response => response.status === 200 ? response.json() : null\n\nconst loadModels = () => sendRequest('entities')\n .then(extractBody)\n .then(body => body ? body.entities : {})\n .then(entities => entities ? Object.keys(entities) : [])\n\nconst buildRelationLabel = relation => relation.relationName.substring(3) !== relation.targetEntity\n ? `${relation.relationName} (${relation.targetEntity})`\n : relation.relationName\n\nconst buildResolveUrl = (sourceModel, relationSteps) => {\n const resolvePart = relationSteps.length > 0 ? '/resolve?path=' + relationSteps.join('.') : ''\n return `entities/${sourceModel}/model${resolvePart}`\n}\n\nconst resolvePath = ([sourceModel, ...relationSteps]) =>\n sendRequest(buildResolveUrl(sourceModel, relationSteps))\n .then(extractBody)\n .then(body => {\n if (!body) {\n return []\n }\n const fields = body.fields || []\n const relations = body.relations || []\n return [\n ...(fields.map(f => ({\n label: `${f.fieldName} (${f.type})`,\n value: f.fieldName,\n type: 'field'\n }))),\n ...(relations.map(r => ({\n label: buildRelationLabel(r),\n value: r.relationName,\n type: 'relation'\n })))\n ]\n })\n\nconst determineAvailablePaths = (createIterator, callback) => {\n const [baseModel, ...modelScope] = findCurrentModelScope(createIterator())\n if (!baseModel) {\n return\n }\n const currentPath = findCurrentPath(createIterator())\n const relationSteps = [...modelScope, ...currentPath].map(model => `rel${model}`)\n const fullPath = [baseModel, ...relationSteps]\n resolvePath(fullPath).then(paths => {\n const pathCompletions = paths.map(path => ({\n caption: path.label,\n value: path.value,\n meta: path.type,\n score: defaultScore\n }))\n callback(null, pathCompletions)\n }).catch(errors => callback(errors))\n}\n\nconst loadAllAvailableModels = callback => loadModels().then(models => {\n const modelCompletions = models.map(model => ({\n caption: model,\n value: model,\n meta: 'model',\n score: defaultScore\n }))\n callback(null, modelCompletions)\n}).catch(errors => callback(errors))\n\nconst getAvailableFunctions = () => functions.map(f => f.toUpperCase()).map(f =>\n ({\n caption: f,\n value: `${f}()`,\n meta: 'function',\n score: defaultScore - 30\n })\n)\n\nconst getAvailableTypes = () => types.map(type =>\n ({\n caption: type,\n value: `${type}:`,\n meta: 'type',\n score: defaultScore - 20\n })\n)\n\nconst getAvailablePlaceholders = () => placeholders.map(placeholder =>\n ({\n caption: placeholder,\n value: `:${placeholder}`,\n meta: 'placeholder',\n score: defaultScore - 10\n })\n)\n\nexport default () => ({\n getCompletions: (editor, session, pos, prefix, callback) => {\n const createIteratorAtCurrentPosition = () => new TokenIterator(session, pos.row, pos.column)\n\n const iterator = createIteratorAtCurrentPosition()\n const currentToken = iterator.getCurrentToken()\n const previousToken = iterator.stepBackward() ? iterator.getCurrentToken() : null\n switch (getTokenType(currentToken)) {\n case 'chaining':\n case 'relation':\n case 'separator':\n case 'order_by':\n case 'count':\n case 'exists':\n case 'field':\n case 'function_arguments':\n determineAvailablePaths(createIteratorAtCurrentPosition, callback)\n break\n case 'where':\n case 'conjunction':\n determineAvailablePaths(createIteratorAtCurrentPosition, callback)\n callback(null, getAvailableFunctions())\n break\n case 'nice_function':\n callback(null, getAvailableFunctions())\n break\n case 'find':\n loadAllAvailableModels(callback)\n break\n case 'type':\n case 'tocco_placeholder':\n case 'comparison':\n callback(null, getAvailableTypes())\n callback(null, getAvailablePlaceholders())\n break\n case 'model':\n determineAvailablePaths(createIteratorAtCurrentPosition, callback)\n if (previousToken && getTokenType(previousToken) !== 'relation') {\n loadAllAvailableModels(callback)\n }\n break\n }\n }\n})\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-text'\nimport _mergeWith from 'lodash/mergeWith'\nimport _isArray from 'lodash/isArray'\n\nimport TqlAutoCompleter from './TqlAutoCompleter'\n\nexport const operators = ['==', '!=', '<=', '>=', '<', '>', '~=']\nexport const atoms = ['true', 'false', 'null']\nexport const types = [\n 'string', 'long', 'serial', 'bool', 'boolean', 'double', 'float', 'time', 'timestamp', 'char', 'varchar', 'date',\n 'datetime'\n]\nexport const placeholders = [\n 'now_date', 'yesterday_date', 'tomorrow_date', 'today_date', 'now_start', 'yesterday_start', 'tomorrow_start',\n 'today_start', 'now', 'yesterday', 'tomorrow', 'today', 'currentUsername', 'currentUser', 'currentBu'\n]\nexport const functions = [\n 'in', 'dateadd', 'datetimeadd', 'duedate', 'birthdayin', 'fulltext', 'likeall', 'distance', 'inboundingbox'\n]\n\nexport class TqlHighlightRules extends ace.require('ace/mode/text_highlight_rules').TextHighlightRules {\n constructor() {\n super()\n\n const commonWhere = [\n {\n token: 'keyword.operator.conjunction',\n regex: /(\\s*)(and|or|not)($|\\s+)/,\n caseInsensitive: true\n },\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.exists',\n regex: /exists\\s*/,\n push: 'exists',\n caseInsensitive: true\n },\n {\n token: 'keyword.count',\n regex: /count\\s*/,\n push: 'count',\n caseInsensitive: true\n },\n {\n token: [\n 'keyword.function.nice_function',\n 'paren.lparen.function_arguments',\n 'text.function_arguments',\n 'paren.rparen',\n 'text.whitespace'\n ],\n regex: `((?:${functions.join('|')})\\\\s*)(\\\\()(.*?)(\\\\))($|\\\\s+)`,\n caseInsensitive: true\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: 'support.function.field',\n regex: /([a-z_]+)($|\\s+)/,\n push: 'comparison'\n }\n ]\n\n const customRules = {\n start: [\n {\n token: 'keyword.find',\n regex: /find($|\\s+)/,\n push: 'model',\n caseInsensitive: true\n },\n {\n token: 'keyword.where',\n regex: /where($|\\s+)/,\n next: 'rootwhere',\n caseInsensitive: true\n }\n ],\n model: [\n {\n token: 'support.class.model',\n regex: /[A-Z][a-z_0-9]*\\s*/,\n next: 'pop'\n }\n ],\n rootwhere: [\n {\n token: 'keyword.order_by',\n regex: /order by($|\\s+)/,\n next: 'order',\n caseInsensitive: true\n },\n ...commonWhere\n ],\n comparison: [\n {\n token: 'keyword.operator.comparison',\n regex: `(${operators.join('|')})\\\\s*`,\n next: 'value'\n }\n ],\n value: [\n {\n token: 'string',\n regex: /\".*?\"\\s*/,\n next: 'pop'\n },\n {\n token: 'constant.numeric',\n regex: /[0-9]+(.[0-9]+)?\\s*/,\n next: 'pop'\n },\n {\n token: 'constant.language.tocco_placeholder',\n regex: `\\\\:(${placeholders.join('|')})\\\\s*`,\n next: 'pop',\n caseInsensitive: true\n },\n {\n token: 'constant.language',\n regex: `(${atoms.join('|')})\\\\s*`,\n next: 'pop',\n caseInsensitive: true\n },\n {\n token: 'support.type',\n regex: `(${types.join('|')}):\\\\s*`,\n caseInsensitive: true\n }\n ],\n exists: [\n {\n token: 'paren.lparen',\n regex: /\\(\\s*/\n },\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: 'keyword.where',\n regex: /where($|\\s+)/,\n next: 'existswhere',\n caseInsensitive: true\n },\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'pop'\n }\n ],\n existswhere: [\n ...commonWhere,\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'pop'\n }\n ],\n count: [\n {\n token: 'paren.lparen',\n regex: /\\(\\s*/\n },\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: 'keyword.where',\n regex: /where($|\\s+)/,\n next: 'countwhere',\n caseInsensitive: true\n },\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'comparison'\n }\n ],\n countwhere: [\n ...commonWhere,\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'comparison'\n }\n ],\n order: [\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: ['support.function.field', 'keyword.direction', 'separator'],\n regex: /([a-z_]+\\s*)(asc|desc)?($|,|\\s+)/\n }\n ]\n }\n this.$rules = _mergeWith(\n this.$rules,\n customRules,\n (objValue, srcValue) => _isArray(objValue) ? objValue.concat(srcValue) : undefined\n )\n\n this.normalizeRules()\n }\n}\n\nexport default class TqlMode extends ace.require('ace/mode/text').Mode {\n constructor() {\n super()\n this.HighlightRules = TqlHighlightRules\n this.completer = TqlAutoCompleter()\n this.snippedIdField = null // TODO implement? TOCDEV-4499\n }\n}\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-ftl'\nimport 'ace-builds/src-min-noconflict/mode-text'\nimport 'ace-builds/src-min-noconflict/mode-html'\nimport _mergeWith from 'lodash/mergeWith'\nimport _isArray from 'lodash/isArray'\n\nimport {TqlHighlightRules} from './TqlMode'\nimport TqlAutoCompleter from './TqlAutoCompleter'\n\n/** this is a copy from https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/ftl_highlight_rules.js but with angled\n * brackets replaced with square brackets as described in\n * https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html\n *\n * TODO add auto-complete? only for tocco functions? TOCDEV-4496\n * TODO implement possibility to switch between the two and open PR with ACE repository? TOCDEV-4495\n **/\nclass ToccoFtlLangHighlightRules extends ace.require('ace/mode/text_highlight_rules').TextHighlightRules {\n constructor() {\n super()\n\n const stringBuiltIns = '\\\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|'\n + 'ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|'\n + 'left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|'\n + 'upper_case|word_list|xhtml|xml'\n const numberBuiltIns = 'c|round|floor|ceiling'\n const dateBuiltIns = 'iso_[a-z_]+'\n const seqBuiltIns = 'first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk'\n const hashBuiltIns = 'keys|values'\n const xmlBuiltIns = 'children|parent|root|ancestors|node_name|node_type|node_namespace'\n const expertBuiltIns = 'byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|'\n + 'eval|has_content|interpret|is_[a-z_]+|namespacenew'\n const allBuiltIns = stringBuiltIns + numberBuiltIns + dateBuiltIns + seqBuiltIns + hashBuiltIns\n + xmlBuiltIns + expertBuiltIns\n\n const deprecatedBuiltIns = 'default|exists|if_exists|web_safe'\n\n const variables = 'data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|'\n + 'now|output_encoding|template_name|url_escaping_charset|vars|version'\n\n const operators = 'gt|gte|lt|lte|as|in|using'\n\n const reserved = 'true|false'\n\n const attributes = 'encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|'\n + 'url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|'\n + 'attributes'\n\n this.$rules = {\n start: [\n {\n token: 'constant.character.entity',\n regex: /&[^;]+;/\n },\n {\n token: 'support.function',\n regex: '\\\\?(' + allBuiltIns + ')'\n },\n {\n token: 'support.function.deprecated',\n regex: '\\\\?(' + deprecatedBuiltIns + ')'\n },\n {\n token: 'language.variable',\n regex: '\\\\.(?:' + variables + ')'\n },\n {\n token: 'constant.language',\n regex: '\\\\b(' + reserved + ')\\\\b'\n },\n {\n token: 'keyword.operator',\n regex: '\\\\b(?:' + operators + ')\\\\b'\n },\n {\n token: 'entity.other.attribute-name',\n regex: attributes\n },\n {\n token: 'string', //\n regex: /['\"]/,\n next: 'qstring'\n },\n {\n // Deal with variable names that contains number\n // e.g. <#if var42 == 42 >\n token: function(value) {\n if (value.match('^[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?$')) {\n return 'constant.numeric'\n } else {\n return 'variable'\n }\n },\n regex: /[\\w.+-]+/\n },\n {\n token: 'keyword.operator',\n regex: '!|\\\\.|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\\\|\\\\||\\\\?\\\\:'\n + '|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^='\n },\n {\n token: 'paren.lparen',\n regex: '[[({]'\n },\n {\n token: 'paren.rparen',\n regex: '[\\\\])}]'\n },\n {\n token: 'text',\n regex: '\\\\s+'\n }\n ],\n\n qstring: [\n {\n token: 'constant.character.escape',\n regex: '\\\\\\\\[nrtvef\\\\\\\\\"$]'\n },\n {\n token: 'string',\n regex: /['\"]/,\n next: 'start'\n },\n {\n defaultToken: 'string'\n }\n ]\n }\n }\n}\n\nexport class ToccoFtlHighlightRules extends ace.require('ace/mode/html_highlight_rules').HtmlHighlightRules {\n constructor() {\n super()\n\n const directives = 'assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|'\n + 'ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|'\n + 'setting|stop|switch|t|visit'\n\n const tqlDirectives = ['query', 'queryCount']\n\n const startRules = [\n {\n token: 'keyword.function',\n regex: `\\\\[@(${tqlDirectives.join('|')}).*?]`,\n push: 'tql-start'\n },\n {\n token: 'comment',\n regex: '\\\\[#--',\n next: 'ftl-dcomment'\n }, {\n token: 'string.interpolated',\n regex: '\\\\${',\n push: 'ftl-start'\n }, {\n token: 'keyword.function',\n regex: '\\\\[/?#(' + directives + ')',\n push: 'ftl-start'\n }, {\n token: 'keyword.other',\n regex: '\\\\[/?@[a-zA-Z\\\\.]+',\n push: 'ftl-start'\n }\n ]\n\n const endRules = [\n {\n token: 'keyword',\n regex: '/?\\\\]',\n next: 'pop'\n },\n {\n token: 'string.interpolated',\n regex: '}',\n next: 'pop'\n }\n ]\n\n for (const key in this.$rules) {\n this.$rules[key].unshift.apply(this.$rules[key], startRules)\n }\n\n this.embedRules(ToccoFtlLangHighlightRules, 'ftl-', endRules, ['start'])\n\n this.addRules({\n 'ftl-dcomment': [\n {\n token: 'comment',\n regex: '--\\\\]',\n next: 'pop'\n },\n {\n defaultToken: 'comment'\n }\n ]\n })\n\n const tqlEndRules = [\n {\n token: 'keyword.function',\n regex: `\\\\[/@(${tqlDirectives.join('|')})]`,\n next: 'pop'\n }\n ]\n\n this.embedRules(TqlHighlightRules, 'tql-', tqlEndRules, ['start'])\n\n const mergingRules = {\n 'tql-rootwhere': [\n {\n token: 'keyword.function',\n regex: `\\\\[/@(${tqlDirectives.join('|')})]`,\n next: 'pop'\n }\n ],\n 'tql-order': [\n {\n token: 'keyword.function',\n regex: `\\\\[/@(${tqlDirectives.join('|')})]`,\n next: 'pop'\n }\n ]\n }\n this.$rules = _mergeWith(\n this.$rules,\n mergingRules,\n (objValue, srcValue) => _isArray(objValue) ? objValue.concat(srcValue) : undefined\n )\n\n this.normalizeRules()\n }\n}\n\nexport default class ToccoFtlMode extends ace.require('ace/mode/ftl').Mode {\n constructor() {\n super()\n this.HighlightRules = ToccoFtlHighlightRules\n this.completer = TqlAutoCompleter()\n }\n}\n","import React, {useEffect, useRef} from 'react'\nimport styled from 'styled-components'\nimport _get from 'lodash/get'\nimport ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/webpack-resolver'\nimport {Mode as GroovyMode} from 'ace-builds/src-min-noconflict/mode-groovy'\nimport {Mode as HtmlMode} from 'ace-builds/src-min-noconflict/mode-html'\nimport {Mode as LessMode} from 'ace-builds/src-min-noconflict/mode-less'\nimport {Mode as XmlMode} from 'ace-builds/src-min-noconflict/mode-xml'\nimport {Mode as PropertiesMode} from 'ace-builds/src-min-noconflict/mode-properties'\nimport {Mode as DroolsMode} from 'ace-builds/src-min-noconflict/mode-drools'\nimport {Mode as JsonMode} from 'ace-builds/src-min-noconflict/mode-json'\nimport {Mode as TextMode} from 'ace-builds/src-min-noconflict/mode-text'\n\nimport AceEditorPropTypes from './AceEditorPropTypes'\nimport 'ace-builds/src-min-noconflict/snippets/ftl'\nimport 'ace-builds/src-min-noconflict/snippets/groovy'\nimport 'ace-builds/src-min-noconflict/snippets/html'\nimport 'ace-builds/src-min-noconflict/snippets/less'\nimport 'ace-builds/src-min-noconflict/snippets/xml'\nimport 'ace-builds/src-min-noconflict/snippets/properties'\nimport 'ace-builds/src-min-noconflict/snippets/json'\nimport 'ace-builds/src-min-noconflict/snippets/drools'\nimport 'ace-builds/src-min-noconflict/theme-textmate'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport TqlMode from './TqlMode'\nimport ToccoFtlMode from './ToccoFtlMode'\n\nconst StyledEditor = styled.div`\n width: 100%;\n z-index: 0; /* gutter lays over menu otherwise */\n`\n\nconst modeMappings = {\n groovy: new GroovyMode(),\n html: new HtmlMode(),\n xml: new XmlMode(),\n properties: new PropertiesMode(),\n json: new JsonMode(),\n htmlmixed: new ToccoFtlMode(),\n freemarkermixed: new ToccoFtlMode(),\n ftl: new ToccoFtlMode(),\n tql: new TqlMode(),\n less: new LessMode(),\n drools: new DroolsMode(),\n text: new TextMode()\n}\n\nconst getMode = mode => _get(modeMappings, mode, mode)\n\nconst setEditorConfiguration = (editor, {\n mode,\n theme,\n showGutter,\n editorOptions = {}\n}) => {\n editor.getSession().setMode(getMode(mode))\n editor.setTheme(`ace/theme/${theme}`)\n Object.entries(editorOptions).forEach(([k, v]) => {\n editor.setOption(k, v)\n })\n editor.renderer.setShowGutter(showGutter)\n editor.resize()\n}\n\nconst AceEditor = props => {\n const {\n mode,\n theme = 'textmate',\n value,\n onChange,\n showGutter = true,\n editorOptions = {}\n } = props\n const containerReference = useRef(null)\n const editorReference = useRef(null)\n\n useEffect(() => {\n const aceEditor = ace.edit(containerReference.current)\n aceEditor.getSession().setValue(value || '')\n aceEditor.on('change', () => onChange(aceEditor.getValue()))\n setEditorConfiguration(aceEditor, props)\n editorReference.current = aceEditor\n\n return () => aceEditor.destroy()\n }, [])\n useEffect(() => {\n if (editorReference.current) {\n setEditorConfiguration(editorReference.current, props)\n }\n }, [mode, theme, showGutter, editorOptions])\n return <StyledEditor ref={containerReference}/>\n}\n\nAceEditor.propTypes = AceEditorPropTypes\n\nexport default AceEditor\n","export default {\n ID: 'ID',\n QUERY: 'QUERY'\n}\n","import {call} from 'redux-saga/effects'\n\nimport consoleLogger from '../consoleLogger'\nimport selectionTypes from './selectionTypes'\n\nconst limit = 100000\n/**\n * Helper to get all entitiy keys of a selection.\n * @param {object} selection - selection object\n * @param {function} fetchEntities - rest helper function\n * @returns {object} Object containing entityName and an array of keys (limited if selection is query)\n */\nexport function* getEntities(selection, fetchEntities) {\n const {entityName} = selection\n if (selection.type === selectionTypes.QUERY) {\n const entities = yield call(fetchEntities, selection.entityName, {...selection.query, limit})\n\n if (entities.length > limit) {\n yield call(consoleLogger.logError, `Selected records exceed limit of ${limit}`)\n }\n\n return {\n entityName,\n keys: entities.map(e => e.key)\n }\n }\n\n return {\n entityName,\n keys: selection.ids\n }\n}\n","import PropTypes from 'prop-types'\n\nimport selectionTypes from './selectionTypes'\n\nexport default PropTypes.shape({\n entityName: PropTypes.string.isRequired,\n ids: (props, propName, componentName) => {\n if (props.selection && props.selection.type === selectionTypes.ID && !props.selection[propName]) {\n return new Error(`Selection.ids prop not defined. Component: ${componentName}'.`)\n }\n },\n query: (props, propName, componentName) => {\n if (props.selection && props.selection.type === selectionTypes.QUERY && !props.selection[propName]) {\n return new Error(`Selection.query prop not defined. Component: ${componentName}'.`)\n }\n },\n type: PropTypes.oneOf(Object.keys(selectionTypes)).isRequired,\n count: PropTypes.number\n})\n","import {getEntities} from './selection'\nimport propType from './proptype'\nimport selectionTypes from './selectionTypes'\nexport default {\n getEntities,\n propType,\n selectionTypes\n}\n"],"sourceRoot":""}