{"version":3,"file":"8242.e64723069376d874294f.js","mappings":"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","sources":["webpack://grafana/./.yarn/__virtual__/react-use-virtual-0c21d950b6/3/opt/drone/yarncache/react-use-npm-17.4.0-0ef4521544-0889da919b.zip/node_modules/react-use/esm/useSetState.js","webpack://grafana/./.yarn/__virtual__/react-use-virtual-0c21d950b6/3/opt/drone/yarncache/react-use-npm-17.4.0-0ef4521544-0889da919b.zip/node_modules/react-use/esm/useCopyToClipboard.js","webpack://grafana/./public/app/features/plugins/sql/components/ConfirmModal.tsx","webpack://grafana/./public/app/features/plugins/sql/components/DatasetSelector.tsx","webpack://grafana/./public/app/features/plugins/sql/components/ErrorBoundary.tsx","webpack://grafana/./public/app/features/plugins/sql/components/TableSelector.tsx","webpack://grafana/./public/app/features/plugins/sql/components/QueryHeader.tsx","webpack://grafana/./public/app/features/plugins/sql/components/query-editor-raw/QueryEditorRaw.tsx","webpack://grafana/./public/app/features/plugins/sql/components/query-editor-raw/QueryValidator.tsx","webpack://grafana/./public/app/features/plugins/sql/components/query-editor-raw/QueryToolbox.tsx","webpack://grafana/./public/app/features/plugins/sql/components/query-editor-raw/RawEditor.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/Preview.tsx","webpack://grafana/./public/app/features/plugins/sql/utils/useSqlChange.ts","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/GroupByRow.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/SQLGroupByRow.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/OrderByRow.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/SQLOrderByRow.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/SelectRow.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/SQLSelectRow.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/AwesomeQueryBuilder.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/WhereRow.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/SQLWhereRow.tsx","webpack://grafana/./public/app/features/plugins/sql/components/visual-query-builder/VisualEditor.tsx","webpack://grafana/./public/app/features/plugins/sql/components/QueryEditor.tsx","webpack://grafana/./public/app/features/plugins/sql/components/configuration/ConnectionLimits.tsx","webpack://grafana/./public/app/features/plugins/sql/constants.ts","webpack://grafana/./public/app/features/plugins/sql/ResponseParser.ts","webpack://grafana/./public/app/features/plugins/sql/utils/migration.ts","webpack://grafana/./public/app/features/plugins/sql/datasource/SqlDatasource.ts","webpack://grafana/./public/app/features/plugins/sql/defaults.ts","webpack://grafana/./public/app/features/plugins/sql/expressions.ts","webpack://grafana/./public/app/features/plugins/sql/types.ts","webpack://grafana/./public/app/features/plugins/sql/utils/formatSQL.ts","webpack://grafana/./public/app/features/plugins/sql/utils/sql.utils.ts","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/actions/drag.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/actions/group.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/actions/index.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/actions/rule.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/actions/tree.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/Builder.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/Query.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/QueryContainer.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/containers/Draggable.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/containers/GroupContainer.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/containers/RuleContainer.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/containers/SortableContainer.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/CaseGroup.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/Group.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/GroupActions.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/Item.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/Rule.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/RuleGroup.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/RuleGroupActions.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/RuleGroupExt.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/RuleGroupExtActions.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/SwitchGroup.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/item/SwitchGroupActions.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/operators/Proximity.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/operators/index.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/Field.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/FieldWrapper.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/FuncSelect.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/FuncWidget.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/Operator.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/OperatorOptions.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/OperatorWrapper.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/ValueField.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/Widget.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/rule/WidgetFactory.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/utils.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/index.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/core/VanillaButton.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/core/VanillaButtonGroup.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/core/VanillaConjs.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/core/VanillaFieldSelect.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/core/VanillaSwitch.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/core/VanillaValueSources.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/core/vanillaConfirm.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/index.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaBoolean.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaDate.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaDateTime.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaMultiSelect.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaNumber.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaSelect.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaSlider.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaText.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaTextArea.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/components/widgets/vanilla/value/VanillaTime.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/config/basic.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/config/default.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/config/funcs.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/constants.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/export/elasticSearch.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/export/index.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/export/jsonLogic.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/export/mongoDb.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/export/queryBuilder.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/export/queryString.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/export/spel.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/export/sql.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/import/index.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/import/jsonLogic.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/import/spel.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/import/tree.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/index.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/stores/context.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/stores/tree.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/autocomplete.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/configUtils.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/defaultUtils.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/export.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/funcUtils.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/index.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/reactUtils.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/ruleUtils.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/stuff.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/treeUtils.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/uuid.js","webpack://grafana/./.yarn/__virtual__/react-awesome-query-builder-virtual-584624b41b/3/opt/drone/yarncache/react-awesome-query-builder-npm-5.3.1-61fa92e096-d9c27f5c0c.zip/node_modules/react-awesome-query-builder/lib/utils/validation.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/components/Context.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/utils/batch.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/utils/Subscription.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/components/Provider.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/components/connectAdvanced.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/utils/shallowEqual.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/utils/bindActionCreators.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/connect/mapStateToProps.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/connect/mergeProps.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/connect/selectorFactory.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/connect/connect.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/hooks/useReduxContext.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/hooks/useStore.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/hooks/useDispatch.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/hooks/useSelector.js","webpack://grafana/./.yarn/__virtual__/react-redux-virtual-779c17aed0/3/opt/drone/yarncache/react-redux-npm-7.2.8-096f36457b-ecf1933e91.zip/node_modules/react-redux/es/index.js","webpack://grafana/./.yarn/__virtual__/react-use-virtual-0c21d950b6/3/opt/drone/yarncache/react-use-npm-17.4.0-0ef4521544-0889da919b.zip/node_modules/react-use/lib/useDebounce.js","webpack://grafana/./.yarn/__virtual__/react-use-virtual-0c21d950b6/3/opt/drone/yarncache/react-use-npm-17.4.0-0ef4521544-0889da919b.zip/node_modules/react-use/lib/useTimeoutFn.js","webpack://grafana/../../opt/drone/yarncache/clone-npm-2.1.2-1d491c6629-aaf106e9bc.zip/node_modules/clone/clone.js","webpack://grafana/../../opt/drone/yarncache/immutable-npm-3.8.2-8bba11f18f-41909b3869.zip/node_modules/immutable/dist/immutable.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_assignMergeValue.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseClamp.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseFindIndex.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseFor.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseForOwn.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseIndexOf.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseIsMatch.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseIsNaN.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseIteratee.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseMatches.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseMatchesProperty.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseMerge.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseMergeDeep.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseProperty.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_basePropertyDeep.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseRange.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseRepeat.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseRest.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_baseValues.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_createAssigner.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_createBaseFor.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_createRange.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_getMatchData.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_isIterateeCall.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_isStrictComparable.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_matchesStrictComparable.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_safeGet.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/_strictIndexOf.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/escapeRegExp.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/get.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/includes.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/isArrayLikeObject.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/isEmpty.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/isString.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/mapValues.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/merge.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/mergeWith.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/pickBy.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/property.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/range.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/repeat.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/startsWith.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/toFinite.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/toInteger.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/toPlainObject.js","webpack://grafana/../../opt/drone/yarncache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/values.js","webpack://grafana/../../opt/drone/yarncache/spel2js-npm-0.2.8-7bacacb344-a81f30b904.zip/node_modules/spel2js/dist/spel2js.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/core/Formatter.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/core/Indentation.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/core/InlineBlock.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/core/Params.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/core/Tokenizer.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/core/tokenTypes.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/languages/Db2Formatter.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/languages/N1qlFormatter.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/languages/PlSqlFormatter.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/languages/StandardSqlFormatter.js","webpack://grafana/../../opt/drone/yarncache/sql-formatter-plus-npm-1.3.6-b69a0c94da-5c215f8593.zip/node_modules/sql-formatter-plus/lib/sqlFormatter.js","webpack://grafana/../../opt/drone/yarncache/sqlstring-npm-2.3.3-2db6939570-1e7e2d51c3.zip/node_modules/sqlstring/index.js","webpack://grafana/../../opt/drone/yarncache/sqlstring-npm-2.3.3-2db6939570-1e7e2d51c3.zip/node_modules/sqlstring/lib/SqlString.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/createClass.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/defineProperty.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/extends.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/get.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/inherits.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/superPropBase.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/toArray.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/typeof.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://grafana/../../opt/drone/yarncache/@babel-runtime-npm-7.20.1-8f9256f2ed-00567a333d.zip/node_modules/@babel/runtime/regenerator/index.js"],"sourcesContent":["import { useCallback, useState } from 'react';\nvar useSetState = function (initialState) {\n if (initialState === void 0) { initialState = {}; }\n var _a = useState(initialState), state = _a[0], set = _a[1];\n var setState = useCallback(function (patch) {\n set(function (prevState) {\n return Object.assign({}, prevState, patch instanceof Function ? patch(prevState) : patch);\n });\n }, []);\n return [state, setState];\n};\nexport default useSetState;\n","import writeText from 'copy-to-clipboard';\nimport { useCallback } from 'react';\nimport useMountedState from './useMountedState';\nimport useSetState from './useSetState';\nvar useCopyToClipboard = function () {\n var isMounted = useMountedState();\n var _a = useSetState({\n value: undefined,\n error: undefined,\n noUserInteraction: true,\n }), state = _a[0], setState = _a[1];\n var copyToClipboard = useCallback(function (value) {\n if (!isMounted()) {\n return;\n }\n var noUserInteraction;\n var normalizedValue;\n try {\n // only strings and numbers casted to strings can be copied to clipboard\n if (typeof value !== 'string' && typeof value !== 'number') {\n var error = new Error(\"Cannot copy typeof \" + typeof value + \" to clipboard, must be a string\");\n if (process.env.NODE_ENV === 'development')\n console.error(error);\n setState({\n value: value,\n error: error,\n noUserInteraction: true,\n });\n return;\n }\n // empty strings are also considered invalid\n else if (value === '') {\n var error = new Error(\"Cannot copy empty string to clipboard.\");\n if (process.env.NODE_ENV === 'development')\n console.error(error);\n setState({\n value: value,\n error: error,\n noUserInteraction: true,\n });\n return;\n }\n normalizedValue = value.toString();\n noUserInteraction = writeText(normalizedValue);\n setState({\n value: normalizedValue,\n error: undefined,\n noUserInteraction: noUserInteraction,\n });\n }\n catch (error) {\n setState({\n value: normalizedValue,\n error: error,\n noUserInteraction: noUserInteraction,\n });\n }\n }, []);\n return [state, copyToClipboard];\n};\nexport default useCopyToClipboard;\n","import React, { useRef, useEffect } from 'react';\n\nimport { Button, Icon, Modal } from '@grafana/ui';\n\ntype ConfirmModalProps = {\n isOpen: boolean;\n onCancel?: () => void;\n onDiscard?: () => void;\n onCopy?: () => void;\n};\nexport function ConfirmModal({ isOpen, onCancel, onDiscard, onCopy }: ConfirmModalProps) {\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n // Moved from grafana/ui\n useEffect(() => {\n // for some reason autoFocus property did no work on this button, but this does\n if (isOpen) {\n buttonRef.current?.focus();\n }\n }, [isOpen]);\n\n return (\n <Modal\n title={\n <div className=\"modal-header-title\">\n <Icon name=\"exclamation-triangle\" size=\"lg\" />\n <span className=\"p-l-1\">Warning</span>\n </div>\n }\n onDismiss={onCancel}\n isOpen={isOpen}\n >\n <p>\n Builder mode does not display changes made in code. The query builder will display the last changes you made in\n builder mode.\n </p>\n <p>Do you want to copy your code to the clipboard?</p>\n <Modal.ButtonRow>\n <Button type=\"button\" variant=\"secondary\" onClick={onCancel} fill=\"outline\">\n Cancel\n </Button>\n <Button variant=\"destructive\" type=\"button\" onClick={onDiscard} ref={buttonRef}>\n Discard code and switch\n </Button>\n <Button variant=\"primary\" onClick={onCopy}>\n Copy code and switch\n </Button>\n </Modal.ButtonRow>\n </Modal>\n );\n}\n","import React, { useEffect } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { DB, ResourceSelectorProps, toOption } from '../types';\n\ninterface DatasetSelectorProps extends ResourceSelectorProps {\n db: DB;\n value: string | null;\n applyDefault?: boolean;\n disabled?: boolean;\n onChange: (v: SelectableValue) => void;\n}\n\nexport const DatasetSelector: React.FC<DatasetSelectorProps> = ({\n db,\n value,\n onChange,\n disabled,\n className,\n applyDefault,\n}) => {\n const state = useAsync(async () => {\n const datasets = await db.datasets();\n return datasets.map(toOption);\n }, []);\n\n useEffect(() => {\n if (!applyDefault) {\n return;\n }\n // Set default dataset when values are fetched\n if (!value) {\n if (state.value && state.value[0]) {\n onChange(state.value[0]);\n }\n } else {\n if (state.value && state.value.find((v) => v.value === value) === undefined) {\n // if value is set and newly fetched values does not contain selected value\n if (state.value.length > 0) {\n onChange(state.value[0]);\n }\n }\n }\n }, [state.value, value, applyDefault, onChange]);\n\n return (\n <Select\n className={className}\n aria-label=\"Dataset selector\"\n value={value}\n options={state.value}\n onChange={onChange}\n disabled={disabled}\n isLoading={state.loading}\n menuShouldPortal={true}\n />\n );\n};\n","import React from 'react';\n\ntype Props = {\n fallBackComponent?: React.ReactNode;\n};\n\nexport class ErrorBoundary extends React.Component<React.PropsWithChildren<Props>, { hasError: boolean }> {\n constructor(props: React.PropsWithChildren<Props>) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n render() {\n if (this.state.hasError) {\n const FallBack = this.props.fallBackComponent || <div>Error</div>;\n return FallBack;\n }\n\n return this.props.children;\n }\n}\n","import React from 'react';\nimport { useAsync } from 'react-use';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { QueryWithDefaults } from '../defaults';\nimport { DB, ResourceSelectorProps } from '../types';\n\ninterface TableSelectorProps extends ResourceSelectorProps {\n db: DB;\n value: string | null;\n query: QueryWithDefaults;\n onChange: (v: SelectableValue) => void;\n forceFetch?: boolean;\n}\n\nexport const TableSelector: React.FC<TableSelectorProps> = ({ db, query, value, className, onChange, forceFetch }) => {\n const state = useAsync(async () => {\n if (!query.dataset && !forceFetch) {\n return [];\n }\n const tables = await db.tables(query.dataset);\n return tables.map(toOption);\n }, [query.dataset]);\n\n return (\n <Select\n className={className}\n disabled={state.loading}\n aria-label=\"Table selector\"\n value={value}\n options={state.value}\n onChange={onChange}\n isLoading={state.loading}\n menuShouldPortal={true}\n placeholder={state.loading ? 'Loading tables' : 'Select table'}\n />\n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField, EditorHeader, EditorMode, EditorRow, FlexItem, InlineSelect, Space } from '@grafana/experimental';\nimport { Button, InlineField, InlineSwitch, RadioButtonGroup, Select, Tooltip } from '@grafana/ui';\n\nimport { QueryWithDefaults } from '../defaults';\nimport { SQLQuery, QueryFormat, QueryRowFilter, QUERY_FORMAT_OPTIONS, DB } from '../types';\nimport { defaultToRawSql } from '../utils/sql.utils';\n\nimport { ConfirmModal } from './ConfirmModal';\nimport { DatasetSelector } from './DatasetSelector';\nimport { ErrorBoundary } from './ErrorBoundary';\nimport { TableSelector } from './TableSelector';\n\nexport interface QueryHeaderProps {\n db: DB;\n query: QueryWithDefaults;\n onChange: (query: SQLQuery) => void;\n onRunQuery: () => void;\n onQueryRowChange: (queryRowFilter: QueryRowFilter) => void;\n queryRowFilter: QueryRowFilter;\n isQueryRunnable: boolean;\n isDatasetSelectorHidden?: boolean;\n}\n\nconst editorModes = [\n { label: 'Builder', value: EditorMode.Builder },\n { label: 'Code', value: EditorMode.Code },\n];\n\nexport function QueryHeader({\n db,\n query,\n queryRowFilter,\n onChange,\n onRunQuery,\n onQueryRowChange,\n isQueryRunnable,\n isDatasetSelectorHidden,\n}: QueryHeaderProps) {\n const { editorMode } = query;\n const [_, copyToClipboard] = useCopyToClipboard();\n const [showConfirm, setShowConfirm] = useState(false);\n const toRawSql = db.toRawSql || defaultToRawSql;\n\n const onEditorModeChange = useCallback(\n (newEditorMode: EditorMode) => {\n if (editorMode === EditorMode.Code) {\n setShowConfirm(true);\n return;\n }\n onChange({ ...query, editorMode: newEditorMode });\n },\n [editorMode, onChange, query]\n );\n\n const onFormatChange = (e: SelectableValue) => {\n const next = { ...query, format: e.value !== undefined ? e.value : QueryFormat.Table };\n onChange(next);\n };\n\n const onDatasetChange = (e: SelectableValue) => {\n if (e.value === query.dataset) {\n return;\n }\n\n const next = {\n ...query,\n dataset: e.value,\n table: undefined,\n sql: undefined,\n rawSql: '',\n };\n\n onChange(next);\n };\n\n const onTableChange = (e: SelectableValue) => {\n if (e.value === query.table) {\n return;\n }\n\n const next: SQLQuery = {\n ...query,\n table: e.value,\n sql: undefined,\n rawSql: '',\n };\n onChange(next);\n };\n\n return (\n <>\n <EditorHeader>\n {/* Backward compatibility check. Inline select uses SelectContainer that was added in 8.3 */}\n <ErrorBoundary\n fallBackComponent={\n <InlineField label=\"Format\" labelWidth={15}>\n <Select\n placeholder=\"Select format\"\n value={query.format}\n onChange={onFormatChange}\n options={QUERY_FORMAT_OPTIONS}\n />\n </InlineField>\n }\n >\n <InlineSelect\n label=\"Format\"\n value={query.format}\n placeholder=\"Select format\"\n menuShouldPortal\n onChange={onFormatChange}\n options={QUERY_FORMAT_OPTIONS}\n />\n </ErrorBoundary>\n\n {editorMode === EditorMode.Builder && (\n <>\n <InlineSwitch\n id=\"sql-filter\"\n label=\"Filter\"\n transparent={true}\n showLabel={true}\n value={queryRowFilter.filter}\n onChange={(ev) =>\n ev.target instanceof HTMLInputElement &&\n onQueryRowChange({ ...queryRowFilter, filter: ev.target.checked })\n }\n />\n\n <InlineSwitch\n id=\"sql-group\"\n label=\"Group\"\n transparent={true}\n showLabel={true}\n value={queryRowFilter.group}\n onChange={(ev) =>\n ev.target instanceof HTMLInputElement &&\n onQueryRowChange({ ...queryRowFilter, group: ev.target.checked })\n }\n />\n\n <InlineSwitch\n id=\"sql-order\"\n label=\"Order\"\n transparent={true}\n showLabel={true}\n value={queryRowFilter.order}\n onChange={(ev) =>\n ev.target instanceof HTMLInputElement &&\n onQueryRowChange({ ...queryRowFilter, order: ev.target.checked })\n }\n />\n\n <InlineSwitch\n id=\"sql-preview\"\n label=\"Preview\"\n transparent={true}\n showLabel={true}\n value={queryRowFilter.preview}\n onChange={(ev) =>\n ev.target instanceof HTMLInputElement &&\n onQueryRowChange({ ...queryRowFilter, preview: ev.target.checked })\n }\n />\n </>\n )}\n\n <FlexItem grow={1} />\n\n {isQueryRunnable ? (\n <Button icon=\"play\" variant=\"primary\" size=\"sm\" onClick={() => onRunQuery()}>\n Run query\n </Button>\n ) : (\n <Tooltip\n theme=\"error\"\n content={\n <>\n Your query is invalid. Check below for details. <br />\n However, you can still run this query.\n </>\n }\n placement=\"top\"\n >\n <Button icon=\"exclamation-triangle\" variant=\"secondary\" size=\"sm\" onClick={() => onRunQuery()}>\n Run query\n </Button>\n </Tooltip>\n )}\n\n <RadioButtonGroup options={editorModes} size=\"sm\" value={editorMode} onChange={onEditorModeChange} />\n\n <ConfirmModal\n isOpen={showConfirm}\n onCopy={() => {\n setShowConfirm(false);\n copyToClipboard(query.rawSql!);\n onChange({\n ...query,\n rawSql: toRawSql(query),\n editorMode: EditorMode.Builder,\n });\n }}\n onDiscard={() => {\n setShowConfirm(false);\n onChange({\n ...query,\n rawSql: toRawSql(query),\n editorMode: EditorMode.Builder,\n });\n }}\n onCancel={() => setShowConfirm(false)}\n />\n </EditorHeader>\n\n {editorMode === EditorMode.Builder && (\n <>\n <Space v={0.5} />\n <EditorRow>\n {isDatasetSelectorHidden ? null : (\n <EditorField label=\"Dataset\" width={25}>\n <DatasetSelector\n db={db}\n value={query.dataset === undefined ? null : query.dataset}\n onChange={onDatasetChange}\n />\n </EditorField>\n )}\n\n <EditorField label=\"Table\" width={25}>\n <TableSelector\n db={db}\n query={query}\n value={query.table === undefined ? null : query.table}\n onChange={onTableChange}\n forceFetch={isDatasetSelectorHidden}\n applyDefault\n />\n </EditorField>\n </EditorRow>\n </>\n )}\n </>\n );\n}\n","import React, { useCallback, useEffect, useRef } from 'react';\n\nimport { LanguageDefinition, SQLEditor } from '@grafana/experimental';\n\nimport { SQLQuery } from '../../types';\n\ntype Props = {\n query: SQLQuery;\n onChange: (value: SQLQuery, processQuery: boolean) => void;\n children?: (props: { formatQuery: () => void }) => React.ReactNode;\n width?: number;\n height?: number;\n editorLanguageDefinition: LanguageDefinition;\n};\n\nexport function QueryEditorRaw({ children, onChange, query, width, height, editorLanguageDefinition }: Props) {\n // We need to pass query via ref to SQLEditor as onChange is executed via monacoEditor.onDidChangeModelContent callback, not onChange property\n const queryRef = useRef<SQLQuery>(query);\n useEffect(() => {\n queryRef.current = query;\n }, [query]);\n\n const onRawQueryChange = useCallback(\n (rawSql: string, processQuery: boolean) => {\n const newQuery = {\n ...queryRef.current,\n rawQuery: true,\n rawSql,\n };\n onChange(newQuery, processQuery);\n },\n [onChange]\n );\n\n return (\n <SQLEditor\n width={width}\n height={height}\n query={query.rawSql!}\n onChange={onRawQueryChange}\n language={editorLanguageDefinition}\n >\n {children}\n </SQLEditor>\n );\n}\n","import { css } from '@emotion/css';\nimport React, { useState, useMemo, useEffect } from 'react';\nimport { useAsyncFn } from 'react-use';\nimport useDebounce from 'react-use/lib/useDebounce';\n\nimport { formattedValueToString, getValueFormat, TimeRange } from '@grafana/data';\nimport { Icon, Spinner, useTheme2 } from '@grafana/ui';\n\nimport { DB, SQLQuery, ValidationResults } from '../../types';\n\nexport interface QueryValidatorProps {\n db: DB;\n query: SQLQuery;\n range?: TimeRange;\n onValidate: (isValid: boolean) => void;\n}\n\nexport function QueryValidator({ db, query, onValidate, range }: QueryValidatorProps) {\n const [validationResult, setValidationResult] = useState<ValidationResults | null>();\n const theme = useTheme2();\n const valueFormatter = useMemo(() => getValueFormat('bytes'), []);\n\n const styles = useMemo(() => {\n return {\n error: css`\n color: ${theme.colors.error.text};\n font-size: ${theme.typography.bodySmall.fontSize};\n font-family: ${theme.typography.fontFamilyMonospace};\n `,\n valid: css`\n color: ${theme.colors.success.text};\n `,\n info: css`\n color: ${theme.colors.text.secondary};\n `,\n };\n }, [theme]);\n\n const [state, validateQuery] = useAsyncFn(\n async (q: SQLQuery) => {\n if (q.rawSql?.trim() === '') {\n return null;\n }\n\n return await db.validateQuery(q, range);\n },\n [db]\n );\n\n const [,] = useDebounce(\n async () => {\n const result = await validateQuery(query);\n if (result) {\n setValidationResult(result);\n }\n\n return null;\n },\n 1000,\n [query, validateQuery]\n );\n\n useEffect(() => {\n if (validationResult?.isError) {\n onValidate(false);\n }\n if (validationResult?.isValid) {\n onValidate(true);\n }\n }, [validationResult, onValidate]);\n\n if (!state.value && !state.loading) {\n return null;\n }\n\n const error = state.value?.error ? processErrorMessage(state.value.error) : '';\n\n return (\n <>\n {state.loading && (\n <div className={styles.info}>\n <Spinner inline={true} size={12} /> Validating query...\n </div>\n )}\n {!state.loading && state.value && (\n <>\n <>\n {state.value.isValid && state.value.statistics && (\n <div className={styles.valid}>\n <Icon name=\"check\" /> This query will process{' '}\n <strong>{formattedValueToString(valueFormatter(state.value.statistics.TotalBytesProcessed))}</strong>{' '}\n when run.\n </div>\n )}\n </>\n\n <>{state.value.isError && <div className={styles.error}>{error}</div>}</>\n </>\n )}\n </>\n );\n}\n\nfunction processErrorMessage(error: string) {\n const splat = error.split(':');\n if (splat.length > 2) {\n return splat.slice(2).join(':');\n }\n return error;\n}\n","import { css } from '@emotion/css';\nimport React, { useMemo, useState } from 'react';\n\nimport { HorizontalGroup, Icon, IconButton, Tooltip, useTheme2 } from '@grafana/ui';\n\nimport { QueryValidator, QueryValidatorProps } from './QueryValidator';\n\ninterface QueryToolboxProps extends Omit<QueryValidatorProps, 'onValidate'> {\n showTools?: boolean;\n isExpanded?: boolean;\n onFormatCode?: () => void;\n onExpand?: (expand: boolean) => void;\n onValidate?: (isValid: boolean) => void;\n}\n\nexport function QueryToolbox({ showTools, onFormatCode, onExpand, isExpanded, ...validatorProps }: QueryToolboxProps) {\n const theme = useTheme2();\n const [validationResult, setValidationResult] = useState<boolean>();\n\n const styles = useMemo(() => {\n return {\n container: css`\n border: 1px solid ${theme.colors.border.medium};\n border-top: none;\n padding: ${theme.spacing(0.5, 0.5, 0.5, 0.5)};\n display: flex;\n flex-grow: 1;\n justify-content: space-between;\n font-size: ${theme.typography.bodySmall.fontSize};\n `,\n error: css`\n color: ${theme.colors.error.text};\n font-size: ${theme.typography.bodySmall.fontSize};\n font-family: ${theme.typography.fontFamilyMonospace};\n `,\n valid: css`\n color: ${theme.colors.success.text};\n `,\n info: css`\n color: ${theme.colors.text.secondary};\n `,\n hint: css`\n color: ${theme.colors.text.disabled};\n white-space: nowrap;\n cursor: help;\n `,\n };\n }, [theme]);\n\n let style = {};\n\n if (!showTools && validationResult === undefined) {\n style = { height: 0, padding: 0, visibility: 'hidden' };\n }\n\n return (\n <div className={styles.container} style={style}>\n <div>\n {validatorProps.onValidate && (\n <QueryValidator\n {...validatorProps}\n onValidate={(result: boolean) => {\n setValidationResult(result);\n validatorProps.onValidate!(result);\n }}\n />\n )}\n </div>\n {showTools && (\n <div>\n <HorizontalGroup spacing=\"sm\">\n {onFormatCode && (\n <IconButton onClick={onFormatCode} name=\"brackets-curly\" size=\"xs\" tooltip=\"Format query\" />\n )}\n {onExpand && (\n <IconButton\n onClick={() => onExpand(!isExpanded)}\n name={isExpanded ? 'angle-up' : 'angle-down'}\n size=\"xs\"\n tooltip={isExpanded ? 'Collapse editor' : 'Expand editor'}\n />\n )}\n <Tooltip content=\"Hit CTRL/CMD+Return to run query\">\n <Icon className={styles.hint} name=\"keyboard\" />\n </Tooltip>\n </HorizontalGroup>\n </div>\n )}\n </div>\n );\n}\n","import { css } from '@emotion/css';\nimport React, { useMemo, useState } from 'react';\nimport { useMeasure } from 'react-use';\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Modal, useStyles2, useTheme2 } from '@grafana/ui';\n\nimport { SQLQuery, QueryEditorProps } from '../../types';\n\nimport { QueryEditorRaw } from './QueryEditorRaw';\nimport { QueryToolbox } from './QueryToolbox';\n\ninterface RawEditorProps extends Omit<QueryEditorProps, 'onChange'> {\n onRunQuery: () => void;\n onChange: (q: SQLQuery, processQuery: boolean) => void;\n onValidate: (isValid: boolean) => void;\n queryToValidate: SQLQuery;\n}\n\nexport function RawEditor({ db, query, onChange, onRunQuery, onValidate, queryToValidate, range }: RawEditorProps) {\n const theme = useTheme2();\n const styles = useStyles2(getStyles);\n const [isExpanded, setIsExpanded] = useState(false);\n const [toolboxRef, toolboxMeasure] = useMeasure<HTMLDivElement>();\n const [editorRef, editorMeasure] = useMeasure<HTMLDivElement>();\n\n const editorLanguageDefinition = useMemo(() => db.getEditorLanguageDefinition(), [db]);\n\n const renderQueryEditor = (width?: number, height?: number) => {\n return (\n <QueryEditorRaw\n editorLanguageDefinition={editorLanguageDefinition}\n query={query}\n width={width}\n height={height ? height - toolboxMeasure.height : undefined}\n onChange={onChange}\n >\n {({ formatQuery }) => {\n return (\n <div ref={toolboxRef}>\n <QueryToolbox\n db={db}\n query={queryToValidate}\n onValidate={onValidate}\n onFormatCode={formatQuery}\n showTools\n range={range}\n onExpand={setIsExpanded}\n isExpanded={isExpanded}\n />\n </div>\n );\n }}\n </QueryEditorRaw>\n );\n };\n\n const renderEditor = (standalone = false) => {\n return standalone ? (\n <AutoSizer>\n {({ width, height }) => {\n return renderQueryEditor(width, height);\n }}\n </AutoSizer>\n ) : (\n <div ref={editorRef}>{renderQueryEditor()}</div>\n );\n };\n\n const renderPlaceholder = () => {\n return (\n <div\n style={{\n width: editorMeasure.width,\n height: editorMeasure.height,\n background: theme.colors.background.primary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n Editing in expanded code editor\n </div>\n );\n };\n\n return (\n <>\n {isExpanded ? renderPlaceholder() : renderEditor()}\n {isExpanded && (\n <Modal\n title={`Query ${query.refId}`}\n closeOnBackdropClick={false}\n closeOnEscape={false}\n className={styles.modal}\n contentClassName={styles.modalContent}\n isOpen={isExpanded}\n onDismiss={() => {\n setIsExpanded(false);\n }}\n >\n {renderEditor(true)}\n </Modal>\n )}\n </>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n modal: css`\n width: 95vw;\n height: 95vh;\n `,\n modalContent: css`\n height: 100%;\n padding-top: 0;\n `,\n };\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { CodeEditor, Field, IconButton, useStyles2 } from '@grafana/ui';\n\nimport { formatSQL } from '../../utils/formatSQL';\n\ntype PreviewProps = {\n rawSql: string;\n};\n\nexport function Preview({ rawSql }: PreviewProps) {\n // TODO: use zero index to give feedback about copy success\n const [_, copyToClipboard] = useCopyToClipboard();\n const styles = useStyles2(getStyles);\n\n const labelElement = (\n <div className={styles.labelWrapper}>\n <span className={styles.label}>Preview</span>\n <IconButton tooltip=\"Copy to clipboard\" onClick={() => copyToClipboard(rawSql)} name=\"copy\" />\n </div>\n );\n\n return (\n <Field label={labelElement} className={styles.grow}>\n <CodeEditor\n language=\"sql\"\n height={80}\n value={formatSQL(rawSql)}\n monacoOptions={{ scrollbar: { vertical: 'hidden' }, scrollBeyondLastLine: false }}\n readOnly={true}\n showMiniMap={false}\n />\n </Field>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n grow: css({ flexGrow: 1 }),\n label: css({ fontSize: 12, fontWeight: theme.typography.fontWeightMedium }),\n labelWrapper: css({ display: 'flex', justifyContent: 'space-between', paddingBottom: theme.spacing(0.5) }),\n };\n}\n","import { useCallback } from 'react';\n\nimport { DB, SQLExpression, SQLQuery } from '../types';\n\nimport { defaultToRawSql } from './sql.utils';\n\ninterface UseSqlChange {\n db: DB;\n query: SQLQuery;\n onQueryChange: (query: SQLQuery) => void;\n}\n\nexport function useSqlChange({ query, onQueryChange, db }: UseSqlChange) {\n const onSqlChange = useCallback(\n (sql: SQLExpression) => {\n const toRawSql = db.toRawSql || defaultToRawSql;\n const rawSql = toRawSql({ sql, dataset: query.dataset, table: query.table, refId: query.refId });\n const newQuery: SQLQuery = { ...query, sql, rawSql };\n onQueryChange(newQuery);\n },\n [db, onQueryChange, query]\n );\n\n return { onSqlChange };\n}\n","import React, { useCallback } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { AccessoryButton, EditorList, InputGroup } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport { QueryEditorGroupByExpression } from '../../expressions';\nimport { SQLExpression } from '../../types';\nimport { setGroupByField } from '../../utils/sql.utils';\n\ninterface GroupByRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n}\n\nexport function GroupByRow({ sql, columns, onSqlChange }: GroupByRowProps) {\n const onGroupByChange = useCallback(\n (item: Array<Partial<QueryEditorGroupByExpression>>) => {\n // As new (empty object) items come in, we need to make sure they have the correct type\n const cleaned = item.map((v) => setGroupByField(v.property?.name));\n const newSql = { ...sql, groupBy: cleaned };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <EditorList<QueryEditorGroupByExpression>\n items={sql.groupBy!}\n onChange={onGroupByChange}\n renderItem={makeRenderColumn({\n options: columns,\n })}\n />\n );\n}\n\nfunction makeRenderColumn({ options }: { options?: Array<SelectableValue<string>> }) {\n const renderColumn = function (\n item: Partial<QueryEditorGroupByExpression>,\n onChangeItem: (item: QueryEditorGroupByExpression) => void,\n onDeleteItem: () => void\n ) {\n return (\n <InputGroup>\n <Select\n value={item.property?.name ? toOption(item.property.name) : null}\n aria-label=\"Group by\"\n options={options}\n menuShouldPortal\n onChange={({ value }) => value && onChangeItem(setGroupByField(value))}\n />\n <AccessoryButton aria-label=\"Remove group by column\" icon=\"times\" variant=\"secondary\" onClick={onDeleteItem} />\n </InputGroup>\n );\n };\n return renderColumn;\n}\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { QueryWithDefaults } from '../../defaults';\nimport { DB, SQLQuery } from '../../types';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { GroupByRow } from './GroupByRow';\n\ninterface SQLGroupByRowProps {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLGroupByRow({ fields, query, onQueryChange, db }: SQLGroupByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n return <GroupByRow columns={fields} sql={query.sql!} onSqlChange={onSqlChange} />;\n}\n","import { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { EditorField, InputGroup, Space } from '@grafana/experimental';\nimport { Input, RadioButtonGroup, Select } from '@grafana/ui';\n\nimport { SQLExpression } from '../../types';\nimport { setPropertyField } from '../../utils/sql.utils';\n\ntype OrderByRowProps = {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n showOffset?: boolean;\n};\n\nconst sortOrderOptions = [\n { description: 'Sort by ascending', value: 'ASC', icon: 'sort-amount-up' } as const,\n { description: 'Sort by descending', value: 'DESC', icon: 'sort-amount-down' } as const,\n];\n\nexport function OrderByRow({ sql, onSqlChange, columns, showOffset }: OrderByRowProps) {\n const onSortOrderChange = useCallback(\n (item: 'ASC' | 'DESC') => {\n const newSql: SQLExpression = { ...sql, orderByDirection: item };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onLimitChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOffsetChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOrderByChange = useCallback(\n (item: SelectableValue<string>) => {\n const newSql: SQLExpression = { ...sql, orderBy: setPropertyField(item?.value) };\n if (item === null) {\n newSql.orderByDirection = undefined;\n }\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <>\n <EditorField label=\"Order by\" width={25}>\n <InputGroup>\n <Select\n aria-label=\"Order by\"\n options={columns}\n value={sql.orderBy?.property.name ? toOption(sql.orderBy.property.name) : null}\n isClearable\n menuShouldPortal\n onChange={onOrderByChange}\n />\n\n <Space h={1.5} />\n\n <RadioButtonGroup\n options={sortOrderOptions}\n disabled={!sql?.orderBy?.property.name}\n value={sql.orderByDirection}\n onChange={onSortOrderChange}\n />\n </InputGroup>\n </EditorField>\n <EditorField label=\"Limit\" optional width={25}>\n <Input type=\"number\" min={0} id={uniqueId('limit-')} value={sql.limit || ''} onChange={onLimitChange} />\n </EditorField>\n {showOffset && (\n <EditorField label=\"Offset\" optional width={25}>\n <Input type=\"number\" id={uniqueId('offset-')} value={sql.offset || ''} onChange={onOffsetChange} />\n </EditorField>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { QueryWithDefaults } from '../../defaults';\nimport { DB, SQLQuery } from '../../types';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { OrderByRow } from './OrderByRow';\n\ntype SQLOrderByRowProps = {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n};\n\nexport function SQLOrderByRow({ fields, query, onQueryChange, db }: SQLOrderByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n let columnsWithIndices: SelectableValue[] = [];\n\n if (fields) {\n const options = query.sql?.columns?.map((c, i) => {\n const value = c.name ? `${c.name}(${c.parameters?.map((p) => p.name)})` : c.parameters?.map((p) => p.name);\n return {\n value,\n label: `${i + 1} - ${value}`,\n };\n });\n columnsWithIndices = [\n {\n value: '',\n label: 'Selected columns',\n options,\n expanded: true,\n },\n ...fields,\n ];\n }\n\n return <OrderByRow sql={query.sql!} onSqlChange={onSqlChange} columns={columnsWithIndices} />;\n}\n","import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { EditorField, Stack } from '@grafana/experimental';\nimport { Button, Select, useStyles2 } from '@grafana/ui';\n\nimport { QueryEditorExpressionType, QueryEditorFunctionExpression } from '../../expressions';\nimport { SQLExpression, QueryFormat } from '../../types';\nimport { createFunctionField } from '../../utils/sql.utils';\n\ninterface SelectRowProps {\n sql: SQLExpression;\n format: QueryFormat | undefined;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n functions?: Array<SelectableValue<string>>;\n}\n\nconst asteriskValue = { label: '*', value: '*' };\n\nexport function SelectRow({ sql, format, columns, onSqlChange, functions }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const columnsWithAsterisk = [asteriskValue, ...(columns || [])];\n const timeSeriesAliasOpts: Array<SelectableValue<string>> = [];\n\n // Add necessary alias options for time series format\n // when that format has been selected\n if (format === QueryFormat.Timeseries) {\n timeSeriesAliasOpts.push({ label: 'time', value: 'time' });\n timeSeriesAliasOpts.push({ label: 'value', value: 'value' });\n }\n\n const onColumnChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (column: SelectableValue<string>) => {\n let modifiedItem = { ...item };\n if (!item.parameters?.length) {\n modifiedItem.parameters = [{ type: QueryEditorExpressionType.FunctionParameter, name: column.value } as const];\n } else {\n modifiedItem.parameters = item.parameters.map((p) =>\n p.type === QueryEditorExpressionType.FunctionParameter ? { ...p, name: column.value } : p\n );\n }\n\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? modifiedItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n };\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onAliasChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (alias: SelectableValue<string>) => {\n let newItem = { ...item };\n\n if (alias !== null) {\n newItem = { ...item, alias: `\"${alias?.value?.trim()}\"` };\n } else {\n delete newItem.alias;\n }\n\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...sql.columns!];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...sql, columns: [...sql.columns!, createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, sql]);\n\n return (\n <Stack gap={2} wrap direction=\"column\">\n {sql.columns?.map((item, index) => (\n <div key={index}>\n <Stack gap={2} alignItems=\"end\">\n <EditorField label=\"Column\" width={25}>\n <Select\n value={getColumnValue(item)}\n options={columnsWithAsterisk}\n inputId={`select-column-${index}-${uniqueId()}`}\n menuShouldPortal\n allowCustomValue\n onChange={onColumnChange(item, index)}\n />\n </EditorField>\n\n <EditorField label=\"Aggregation\" optional width={25}>\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={functions}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n <EditorField label=\"Alias\" optional width={15}>\n <Select\n value={item.alias ? toOption(item.alias) : null}\n options={timeSeriesAliasOpts}\n onChange={onAliasChange(item, index)}\n isClearable\n menuShouldPortal\n allowCustomValue\n />\n </EditorField>\n <Button\n aria-label=\"Remove\"\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </Stack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n size=\"md\"\n icon=\"plus\"\n aria-label=\"Add\"\n className={styles.addButton}\n />\n </Stack>\n );\n}\n\nconst getStyles = () => {\n return { addButton: css({ alignSelf: 'flex-start' }) };\n};\n\nfunction getColumnValue({ parameters }: QueryEditorFunctionExpression): SelectableValue<string> | null {\n const column = parameters?.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);\n if (column?.name) {\n return toOption(column.name);\n }\n return null;\n}\n","import React from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\n\nimport { COMMON_AGGREGATE_FNS } from '../../constants';\nimport { QueryWithDefaults } from '../../defaults';\nimport { DB, SQLQuery } from '../../types';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { SelectRow } from './SelectRow';\n\ninterface SQLSelectRowProps {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLSelectRow({ fields, query, onQueryChange, db }: SQLSelectRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n const functions = [...COMMON_AGGREGATE_FNS, ...(db.functions?.() || [])].map(toOption);\n\n return (\n <SelectRow\n columns={fields}\n sql={query.sql!}\n format={query.format}\n functions={functions}\n onSqlChange={onSqlChange}\n />\n );\n}\n","import { List } from 'immutable';\nimport { isString } from 'lodash';\nimport React from 'react';\nimport {\n BasicConfig,\n Config,\n JsonItem,\n JsonTree,\n Operator,\n Settings,\n SimpleField,\n Utils,\n ValueSource,\n Widgets,\n} from 'react-awesome-query-builder';\n\nimport { dateTime, toOption } from '@grafana/data';\nimport { Button, DateTimePicker, Input, Select } from '@grafana/ui';\n\nconst buttonLabels = {\n add: 'Add',\n remove: 'Remove',\n};\n\nexport const emptyInitValue: JsonItem = {\n id: Utils.uuid(),\n type: 'group' as const,\n children1: {\n [Utils.uuid()]: {\n type: 'rule',\n properties: {\n field: null,\n operator: null,\n value: [],\n valueSrc: [],\n },\n },\n },\n};\n\nexport const emptyInitTree: JsonTree = {\n id: Utils.uuid(),\n type: 'group' as const,\n children1: {\n [Utils.uuid()]: {\n type: 'rule',\n properties: {\n field: null,\n operator: null,\n value: [],\n valueSrc: [],\n },\n },\n },\n};\n\nexport const widgets: Widgets = {\n ...BasicConfig.widgets,\n text: {\n ...BasicConfig.widgets.text,\n factory: function TextInput(props) {\n return (\n <Input\n value={props?.value || ''}\n placeholder={props?.placeholder}\n onChange={(e) => props?.setValue(e.currentTarget.value)}\n />\n );\n },\n },\n number: {\n ...BasicConfig.widgets.number,\n factory: function NumberInput(props) {\n return (\n <Input\n value={props?.value}\n placeholder={props?.placeholder}\n type=\"number\"\n onChange={(e) => props?.setValue(Number.parseInt(e.currentTarget.value, 10))}\n />\n );\n },\n },\n datetime: {\n ...BasicConfig.widgets.datetime,\n factory: function DateTimeInput(props) {\n return (\n <DateTimePicker\n onChange={(e) => {\n props?.setValue(e.format(BasicConfig.widgets.datetime.valueFormat));\n }}\n date={dateTime(props?.value).utc()}\n />\n );\n },\n },\n};\n\nexport const settings: Settings = {\n ...BasicConfig.settings,\n canRegroup: false,\n maxNesting: 1,\n canReorder: false,\n showNot: false,\n addRuleLabel: buttonLabels.add,\n deleteLabel: buttonLabels.remove,\n renderConjs: function Conjunctions(conjProps) {\n return (\n <Select\n id={conjProps?.id}\n aria-label=\"Conjunction\"\n menuShouldPortal\n options={conjProps?.conjunctionOptions ? Object.keys(conjProps?.conjunctionOptions).map(toOption) : undefined}\n value={conjProps?.selectedConjunction}\n onChange={(val) => conjProps?.setConjunction(val.value!)}\n />\n );\n },\n renderField: function Field(fieldProps) {\n const fields = fieldProps?.config?.fields || {};\n return (\n <Select\n id={fieldProps?.id}\n width={25}\n aria-label=\"Field\"\n menuShouldPortal\n options={fieldProps?.items.map((f) => {\n // @ts-ignore\n const icon = fields[f.key].mainWidgetProps?.customProps?.icon;\n return {\n label: f.label,\n value: f.key,\n icon,\n };\n })}\n value={fieldProps?.selectedKey}\n onChange={(val) => {\n fieldProps?.setField(val.label!);\n }}\n />\n );\n },\n renderButton: function RAQBButton(buttonProps) {\n return (\n <Button\n type=\"button\"\n title={`${buttonProps?.label} filter`}\n onClick={buttonProps?.onClick}\n variant=\"secondary\"\n size=\"md\"\n icon={buttonProps?.label === buttonLabels.add ? 'plus' : 'times'}\n />\n );\n },\n renderOperator: function Operator(operatorProps) {\n return (\n <Select\n options={operatorProps?.items.map((op) => ({ label: op.label, value: op.key }))}\n aria-label=\"Operator\"\n menuShouldPortal\n value={operatorProps?.selectedKey}\n onChange={(val) => {\n operatorProps?.setField(val.value || '');\n }}\n />\n );\n },\n};\n\n// add IN / NOT IN operators to text to support multi-value variables\nconst enum Op {\n IN = 'select_any_in',\n NOT_IN = 'select_not_any_in',\n}\n// eslint-ignore\nconst customOperators = getCustomOperators(BasicConfig) as typeof BasicConfig.operators;\nconst textWidget = BasicConfig.types.text.widgets.text;\nconst opers = [...(textWidget.operators || []), Op.IN, Op.NOT_IN];\nconst customTextWidget = {\n ...textWidget,\n operators: opers,\n};\n\nconst customTypes = {\n ...BasicConfig.types,\n text: {\n ...BasicConfig.types.text,\n widgets: {\n ...BasicConfig.types.text.widgets,\n text: customTextWidget,\n },\n },\n};\n\nexport const raqbConfig: Config = {\n ...BasicConfig,\n widgets,\n settings,\n operators: customOperators as typeof BasicConfig.operators,\n types: customTypes,\n};\n\nexport type { Config };\n\nfunction getCustomOperators(config: BasicConfig) {\n const { ...supportedOperators } = config.operators;\n const noop = () => '';\n // IN operator expects array, override IN formatter for multi-value variables\n const sqlFormatInOp = supportedOperators[Op.IN].sqlFormatOp || noop;\n const customSqlInFormatter = (\n field: string,\n op: string,\n value: string | List<string>,\n valueSrc: ValueSource,\n valueType: string,\n opDef: Operator,\n operatorOptions: object,\n fieldDef: SimpleField\n ) => {\n return sqlFormatInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n // NOT IN operator expects array, override NOT IN formatter for multi-value variables\n const sqlFormatNotInOp = supportedOperators[Op.NOT_IN].sqlFormatOp || noop;\n const customSqlNotInFormatter = (\n field: string,\n op: string,\n value: string | List<string>,\n valueSrc: ValueSource,\n valueType: string,\n opDef: Operator,\n operatorOptions: object,\n fieldDef: SimpleField\n ) => {\n return sqlFormatNotInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n\n const customOperators = {\n ...supportedOperators,\n [Op.IN]: {\n ...supportedOperators[Op.IN],\n sqlFormatOp: customSqlInFormatter,\n },\n [Op.NOT_IN]: {\n ...supportedOperators[Op.NOT_IN],\n sqlFormatOp: customSqlNotInFormatter,\n },\n };\n\n return customOperators;\n}\n\n// value: string | List<string> but AQB uses a different version of Immutable\n// eslint-ignore\nfunction splitIfString(value: any) {\n if (isString(value)) {\n return value.split(',');\n }\n return value;\n}\n","import { injectGlobal } from '@emotion/css';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Builder, Config, ImmutableTree, Query, Utils } from 'react-awesome-query-builder';\n\nimport { SQLExpression } from '../../types';\n\nimport { emptyInitTree, raqbConfig } from './AwesomeQueryBuilder';\n\ninterface SQLBuilderWhereRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n config?: Partial<Config>;\n}\n\nexport function WhereRow({ sql, config, onSqlChange }: SQLBuilderWhereRowProps) {\n const [tree, setTree] = useState<ImmutableTree>();\n const configWithDefaults = useMemo(() => ({ ...raqbConfig, ...config }), [config]);\n\n useEffect(() => {\n // Set the initial tree\n if (!tree) {\n const initTree = Utils.checkTree(Utils.loadTree(sql.whereJsonTree ?? emptyInitTree), configWithDefaults);\n setTree(initTree);\n }\n }, [configWithDefaults, sql.whereJsonTree, tree]);\n\n useEffect(() => {\n if (!sql.whereJsonTree) {\n setTree(Utils.checkTree(Utils.loadTree(emptyInitTree), configWithDefaults));\n }\n }, [configWithDefaults, sql.whereJsonTree]);\n\n const onTreeChange = useCallback(\n (changedTree: ImmutableTree, config: Config) => {\n setTree(changedTree);\n const newSql = {\n ...sql,\n whereJsonTree: Utils.getTree(changedTree),\n whereString: Utils.sqlFormat(changedTree, config),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n if (!tree) {\n return null;\n }\n\n return (\n <Query\n {...configWithDefaults}\n value={tree}\n onChange={onTreeChange}\n renderBuilder={(props) => <Builder {...props} />}\n />\n );\n}\n\nfunction flex(direction: string) {\n return `\n display: flex;\n gap: 8px;\n flex-direction: ${direction};`;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\ninjectGlobal`\n .group--header {\n ${flex('row')}\n }\n\n .group-or-rule {\n ${flex('column')}\n .rule {\n flex-direction: row;\n }\n }\n\n .rule--body {\n ${flex('row')}\n }\n\n .group--children {\n ${flex('column')}\n }\n\n .group--conjunctions:empty {\n display: none;\n }\n`;\n","import React from 'react';\nimport useAsync from 'react-use/lib/useAsync';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { QueryWithDefaults } from '../../defaults';\nimport { DB, SQLExpression, SQLQuery, SQLSelectableValue } from '../../types';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { Config } from './AwesomeQueryBuilder';\nimport { WhereRow } from './WhereRow';\n\ninterface WhereRowProps {\n query: QueryWithDefaults;\n fields: SelectableValue[];\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLWhereRow({ query, fields, onQueryChange, db }: WhereRowProps) {\n const state = useAsync(async () => {\n return mapFieldsToTypes(fields);\n }, [fields]);\n\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n return (\n <WhereRow\n // TODO: fix key that's used to force clean render or SQLWhereRow - otherwise it doesn't render operators correctly\n key={JSON.stringify(state.value)}\n config={{ fields: state.value || {} }}\n sql={query.sql!}\n onSqlChange={(val: SQLExpression) => {\n onSqlChange(val);\n }}\n />\n );\n}\n\n// needed for awesome query builder\nfunction mapFieldsToTypes(columns: SQLSelectableValue[]) {\n const fields: Config['fields'] = {};\n for (const col of columns) {\n fields[col.value] = {\n type: col.raqbFieldType || 'text',\n valueSources: ['value'],\n mainWidgetProps: { customProps: { icon: col.icon } },\n };\n }\n return fields;\n}\n","import React from 'react';\nimport { useAsync } from 'react-use';\n\nimport { EditorRows, EditorRow, EditorField } from '@grafana/experimental';\n\nimport { DB, QueryEditorProps, QueryRowFilter } from '../../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\n\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLSelectRow } from './SQLSelectRow';\nimport { SQLWhereRow } from './SQLWhereRow';\n\ninterface VisualEditorProps extends QueryEditorProps {\n db: DB;\n queryRowFilter: QueryRowFilter;\n onValidate: (isValid: boolean) => void;\n}\n\nexport const VisualEditor: React.FC<VisualEditorProps> = ({\n query,\n db,\n queryRowFilter,\n onChange,\n onValidate,\n range,\n}) => {\n const state = useAsync(async () => {\n const fields = await db.fields(query);\n return fields;\n }, [db, query.dataset, query.table]);\n\n return (\n <>\n <EditorRows>\n <EditorRow>\n <SQLSelectRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n {queryRowFilter.filter && (\n <EditorRow>\n <EditorField label=\"Filter by column value\" optional>\n <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.group && (\n <EditorRow>\n <EditorField label=\"Group by column\">\n <SQLGroupByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.order && (\n <EditorRow>\n <SQLOrderByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n )}\n {queryRowFilter.preview && query.rawSql && (\n <EditorRow>\n <Preview rawSql={query.rawSql} />\n </EditorRow>\n )}\n </EditorRows>\n <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n </>\n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { QueryEditorProps } from '@grafana/data';\nimport { EditorMode, Space } from '@grafana/experimental';\n\nimport { SqlDatasource } from '../datasource/SqlDatasource';\nimport { applyQueryDefaults } from '../defaults';\nimport { SQLQuery, QueryRowFilter, SQLOptions } from '../types';\nimport { haveColumns } from '../utils/sql.utils';\n\nimport { QueryHeader, QueryHeaderProps } from './QueryHeader';\nimport { RawEditor } from './query-editor-raw/RawEditor';\nimport { VisualEditor } from './visual-query-builder/VisualEditor';\n\ninterface Props extends QueryEditorProps<SqlDatasource, SQLQuery, SQLOptions> {\n queryHeaderProps?: Pick<QueryHeaderProps, 'isDatasetSelectorHidden'>;\n}\n\nexport function SqlQueryEditor({ datasource, query, onChange, onRunQuery, range, queryHeaderProps }: Props) {\n const [isQueryRunnable, setIsQueryRunnable] = useState(true);\n const db = datasource.getDB();\n const { loading, error } = useAsync(async () => {\n return () => {\n if (datasource.getDB(datasource.id).init !== undefined) {\n datasource.getDB(datasource.id).init!();\n }\n };\n }, [datasource]);\n\n const queryWithDefaults = applyQueryDefaults(query);\n const [queryRowFilter, setQueryRowFilter] = useState<QueryRowFilter>({\n filter: !!queryWithDefaults.sql?.whereString,\n group: !!queryWithDefaults.sql?.groupBy?.[0]?.property.name,\n order: !!queryWithDefaults.sql?.orderBy?.property.name,\n preview: true,\n });\n const [queryToValidate, setQueryToValidate] = useState(queryWithDefaults);\n\n useEffect(() => {\n return () => {\n if (datasource.getDB(datasource.id).dispose !== undefined) {\n datasource.getDB(datasource.id).dispose!();\n }\n };\n }, [datasource]);\n\n const processQuery = useCallback(\n (q: SQLQuery) => {\n if (isQueryValid(q) && onRunQuery) {\n onRunQuery();\n }\n },\n [onRunQuery]\n );\n\n const onQueryChange = (q: SQLQuery, process = true) => {\n setQueryToValidate(q);\n onChange(q);\n\n if (haveColumns(q.sql?.columns) && q.sql?.columns.some((c) => c.name) && !queryRowFilter.group) {\n setQueryRowFilter({ ...queryRowFilter, group: true });\n }\n\n if (process) {\n processQuery(q);\n }\n };\n\n const onQueryHeaderChange = (q: SQLQuery) => {\n setQueryToValidate(q);\n onChange(q);\n };\n\n if (loading || error) {\n return null;\n }\n\n return (\n <>\n <QueryHeader\n db={db}\n onChange={onQueryHeaderChange}\n onRunQuery={onRunQuery}\n onQueryRowChange={setQueryRowFilter}\n queryRowFilter={queryRowFilter}\n query={queryWithDefaults}\n isQueryRunnable={isQueryRunnable}\n {...queryHeaderProps}\n />\n\n <Space v={0.5} />\n\n {queryWithDefaults.editorMode !== EditorMode.Code && (\n <VisualEditor\n db={db}\n query={queryWithDefaults}\n onChange={(q: SQLQuery) => onQueryChange(q, false)}\n queryRowFilter={queryRowFilter}\n onValidate={setIsQueryRunnable}\n range={range}\n />\n )}\n\n {queryWithDefaults.editorMode === EditorMode.Code && (\n <RawEditor\n db={db}\n query={queryWithDefaults}\n queryToValidate={queryToValidate}\n onChange={onQueryChange}\n onRunQuery={onRunQuery}\n onValidate={setIsQueryRunnable}\n range={range}\n />\n )}\n </>\n );\n}\n\nconst isQueryValid = (q: SQLQuery) => {\n return Boolean(q.rawSql);\n};\n","import React from 'react';\n\nimport { FieldSet, InlineField } from '@grafana/ui';\nimport { NumberInput } from 'app/core/components/OptionsUI/NumberInput';\n\nimport { SQLConnectionLimits } from '../../types';\n\ninterface Props<T> {\n onPropertyChanged: (property: keyof T, value?: number) => void;\n labelWidth: number;\n jsonData: SQLConnectionLimits;\n}\n\nexport const ConnectionLimits = <T extends SQLConnectionLimits>(props: Props<T>) => {\n const { onPropertyChanged, labelWidth, jsonData } = props;\n\n const onJSONDataNumberChanged = (property: keyof SQLConnectionLimits) => {\n return (number?: number) => {\n if (onPropertyChanged) {\n onPropertyChanged(property, number);\n }\n };\n };\n\n return (\n <FieldSet label=\"Connection limits\">\n <InlineField\n tooltip={\n <span>\n The maximum number of open connections to the database.If <i>Max idle connections</i> is greater than 0 and\n the <i>Max open connections</i> is less than <i>Max idle connections</i>, then\n <i>Max idle connections</i> will be reduced to match the <i>Max open connections</i> limit. If set to 0,\n there is no limit on the number of open connections.\n </span>\n }\n labelWidth={labelWidth}\n label=\"Max open\"\n >\n <NumberInput\n placeholder=\"unlimited\"\n value={jsonData.maxOpenConns}\n onChange={onJSONDataNumberChanged('maxOpenConns')}\n ></NumberInput>\n </InlineField>\n <InlineField\n tooltip={\n <span>\n The maximum number of connections in the idle connection pool.If <i>Max open connections</i> is greater than\n 0 but less than the <i>Max idle connections</i>, then the <i>Max idle connections</i> will be reduced to\n match the <i>Max open connections</i> limit. If set to 0, no idle connections are retained.\n </span>\n }\n labelWidth={labelWidth}\n label=\"Max idle\"\n >\n <NumberInput\n placeholder=\"2\"\n value={jsonData.maxIdleConns}\n onChange={onJSONDataNumberChanged('maxIdleConns')}\n ></NumberInput>\n </InlineField>\n <InlineField\n tooltip=\"The maximum amount of time in seconds a connection may be reused. If set to 0, connections are reused forever.\"\n labelWidth={labelWidth}\n label=\"Max lifetime\"\n >\n <NumberInput\n placeholder=\"14400\"\n value={jsonData.connMaxLifetime}\n onChange={onJSONDataNumberChanged('connMaxLifetime')}\n ></NumberInput>\n </InlineField>\n </FieldSet>\n );\n};\n","export const COMMON_AGGREGATE_FNS = ['AVG', 'COUNT', 'MAX', 'MIN', 'SUM'];\n\nexport const MACRO_NAMES = [\n '$__time',\n '$__timeEpoch',\n '$__timeFilter',\n '$__timeFrom',\n '$__timeTo',\n '$__timeGroup',\n '$__timeGroupAlias',\n '$__unixEpochFilter',\n '$__unixEpochNanoFilter',\n '$__unixEpochNanoFrom',\n '$__unixEpochNanoTo',\n '$__unixEpochGroup',\n '$__unixEpochGroupAlias',\n];\n","import { uniqBy } from 'lodash';\n\nimport { DataFrame, MetricFindValue } from '@grafana/data';\nimport { ResponseParser as ResponseParserType } from 'app/features/plugins/sql/types';\n\nexport class ResponseParser implements ResponseParserType {\n transformMetricFindResponse(frame: DataFrame): MetricFindValue[] {\n const values: MetricFindValue[] = [];\n const textField = frame.fields.find((f) => f.name === '__text');\n const valueField = frame.fields.find((f) => f.name === '__value');\n\n if (textField && valueField) {\n for (let i = 0; i < textField.values.length; i++) {\n values.push({ text: '' + textField.values.get(i), value: '' + valueField.values.get(i) });\n }\n } else {\n values.push(\n ...frame.fields\n .flatMap((f) => f.values.toArray())\n .map((v) => ({\n text: v,\n }))\n );\n }\n\n return uniqBy(values, 'text');\n }\n}\n","import { AnnotationQuery } from '@grafana/data';\n\nimport { applyQueryDefaults } from '../defaults';\nimport { SQLQuery } from '../types';\n\nexport default function migrateAnnotation(annotation: AnnotationQuery<SQLQuery>) {\n const oldQuery = typeof annotation.rawQuery === 'string' ? annotation.rawQuery : null;\n\n if (!oldQuery) {\n return annotation;\n }\n\n const newQuery = applyQueryDefaults({ refId: 'Annotation', ...(annotation.target ?? {}), rawSql: oldQuery });\n\n return {\n ...annotation,\n rawQuery: undefined,\n workspace: undefined,\n subscription: undefined,\n queryType: undefined,\n target: newQuery,\n };\n}\n","import { lastValueFrom, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport {\n DataFrame,\n DataFrameView,\n DataQuery,\n DataSourceInstanceSettings,\n DataSourceRef,\n MetricFindValue,\n ScopedVars,\n TimeRange,\n} from '@grafana/data';\nimport {\n BackendDataSourceResponse,\n DataSourceWithBackend,\n FetchResponse,\n getBackendSrv,\n getTemplateSrv,\n TemplateSrv,\n} from '@grafana/runtime';\nimport { toDataQueryResponse, toTestingStatus } from '@grafana/runtime/src/utils/queryResponse';\nimport { getTimeSrv } from 'app/features/dashboard/services/TimeSrv';\n\nimport { VariableWithMultiSupport } from '../../../variables/types';\nimport { getSearchFilterScopedVar, SearchFilterOptions } from '../../../variables/utils';\nimport { ResponseParser } from '../ResponseParser';\nimport { SqlQueryEditor } from '../components/QueryEditor';\nimport { MACRO_NAMES } from '../constants';\nimport { DB, SQLQuery, SQLOptions, SqlQueryModel, QueryFormat } from '../types';\nimport migrateAnnotation from '../utils/migration';\n\nexport abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLOptions> {\n id: number;\n responseParser: ResponseParser;\n name: string;\n interval: string;\n db: DB;\n\n constructor(\n instanceSettings: DataSourceInstanceSettings<SQLOptions>,\n protected readonly templateSrv: TemplateSrv = getTemplateSrv()\n ) {\n super(instanceSettings);\n this.name = instanceSettings.name;\n this.responseParser = new ResponseParser();\n this.id = instanceSettings.id;\n const settingsData = instanceSettings.jsonData || {};\n this.interval = settingsData.timeInterval || '1m';\n this.db = this.getDB();\n this.annotations = {\n prepareAnnotation: migrateAnnotation,\n QueryEditor: SqlQueryEditor,\n };\n }\n\n abstract getDB(dsID?: number): DB;\n\n abstract getQueryModel(target?: SQLQuery, templateSrv?: TemplateSrv, scopedVars?: ScopedVars): SqlQueryModel;\n\n getResponseParser() {\n return this.responseParser;\n }\n\n interpolateVariable = (value: string | string[] | number, variable: VariableWithMultiSupport) => {\n if (typeof value === 'string') {\n if (variable.multi || variable.includeAll) {\n return this.getQueryModel().quoteLiteral(value);\n } else {\n return String(value).replace(/'/g, \"''\");\n }\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (Array.isArray(value)) {\n const quotedValues = value.map((v) => this.getQueryModel().quoteLiteral(v));\n return quotedValues.join(',');\n }\n\n return value;\n };\n\n interpolateVariablesInQueries(queries: SQLQuery[], scopedVars: ScopedVars): SQLQuery[] {\n let expandedQueries = queries;\n if (queries && queries.length > 0) {\n expandedQueries = queries.map((query) => {\n const expandedQuery = {\n ...query,\n datasource: this.getRef(),\n rawSql: this.templateSrv.replace(query.rawSql, scopedVars, this.interpolateVariable),\n rawQuery: true,\n };\n return expandedQuery;\n });\n }\n return expandedQueries;\n }\n\n filterQuery(query: SQLQuery): boolean {\n return !query.hide;\n }\n\n applyTemplateVariables(\n target: SQLQuery,\n scopedVars: ScopedVars\n ): Record<string, string | DataSourceRef | SQLQuery['format']> {\n return {\n refId: target.refId,\n datasource: this.getRef(),\n rawSql: this.templateSrv.replace(target.rawSql, scopedVars, this.interpolateVariable),\n format: target.format,\n };\n }\n\n async metricFindQuery(query: string, optionalOptions?: MetricFindQueryOptions): Promise<MetricFindValue[]> {\n let refId = 'tempvar';\n if (optionalOptions && optionalOptions.variable && optionalOptions.variable.name) {\n refId = optionalOptions.variable.name;\n }\n\n const rawSql = this.templateSrv.replace(\n query,\n getSearchFilterScopedVar({ query, wildcardChar: '%', options: optionalOptions }),\n this.interpolateVariable\n );\n\n const interpolatedQuery: SQLQuery = {\n refId: refId,\n datasource: this.getRef(),\n rawSql,\n format: QueryFormat.Table,\n };\n\n const response = await this.runMetaQuery(interpolatedQuery, optionalOptions);\n return this.getResponseParser().transformMetricFindResponse(response);\n }\n\n async runSql<T>(query: string, options?: RunSQLOptions) {\n const frame = await this.runMetaQuery({ rawSql: query, format: QueryFormat.Table, refId: options?.refId }, options);\n return new DataFrameView<T>(frame);\n }\n\n private runMetaQuery(request: Partial<SQLQuery>, options?: MetricFindQueryOptions): Promise<DataFrame> {\n const range = getTimeSrv().timeRange();\n const refId = request.refId || 'meta';\n const queries: DataQuery[] = [{ ...request, datasource: request.datasource || this.getRef(), refId }];\n\n return lastValueFrom(\n getBackendSrv()\n .fetch<BackendDataSourceResponse>({\n url: '/api/ds/query',\n method: 'POST',\n headers: this.getRequestHeaders(),\n data: {\n from: options?.range?.from.valueOf().toString() || range.from.valueOf().toString(),\n to: options?.range?.to.valueOf().toString() || range.to.valueOf().toString(),\n queries,\n },\n requestId: refId,\n })\n .pipe(\n map((res: FetchResponse<BackendDataSourceResponse>) => {\n const rsp = toDataQueryResponse(res, queries);\n return rsp.data[0];\n })\n )\n );\n }\n\n testDatasource(): Promise<{ status: string; message: string }> {\n const refId = 'A';\n return lastValueFrom(\n getBackendSrv()\n .fetch<BackendDataSourceResponse>({\n url: '/api/ds/query',\n method: 'POST',\n headers: this.getRequestHeaders(),\n data: {\n from: '5m',\n to: 'now',\n queries: [\n {\n refId: refId,\n intervalMs: 1,\n maxDataPoints: 1,\n datasource: this.getRef(),\n datasourceId: this.id,\n rawSql: 'SELECT 1',\n format: 'table',\n },\n ],\n },\n })\n .pipe(\n map((r) => {\n const error = r.data.results[refId].error;\n if (error) {\n return { status: 'error', message: error };\n }\n return { status: 'success', message: 'Database Connection OK' };\n }),\n catchError((err) => {\n return of(toTestingStatus(err));\n })\n )\n );\n }\n\n targetContainsTemplate(target: SQLQuery) {\n let queryWithoutMacros = target.rawSql;\n MACRO_NAMES.forEach((value) => {\n queryWithoutMacros = queryWithoutMacros?.replace(value, '') || '';\n });\n return this.templateSrv.containsTemplate(queryWithoutMacros);\n }\n}\n\ninterface RunSQLOptions extends MetricFindQueryOptions {\n refId?: string;\n}\n\ninterface MetricFindQueryOptions extends SearchFilterOptions {\n range?: TimeRange;\n variable?: VariableWithMultiSupport;\n}\n","import { EditorMode } from '@grafana/experimental';\n\nimport { QueryFormat, SQLQuery } from './types';\nimport { createFunctionField, setGroupByField } from './utils/sql.utils';\n\nexport function applyQueryDefaults(q?: SQLQuery): SQLQuery {\n let editorMode = q?.editorMode || EditorMode.Builder;\n\n // Switching to code editor if the query was created before visual query builder was introduced.\n if (q?.editorMode === undefined && q?.rawSql !== undefined) {\n editorMode = EditorMode.Code;\n }\n\n const result: SQLQuery = {\n ...q,\n refId: q?.refId || 'A',\n format: q?.format !== undefined ? q.format : QueryFormat.Table,\n rawSql: q?.rawSql || '',\n editorMode,\n sql: q?.sql || {\n columns: [createFunctionField()],\n groupBy: [setGroupByField()],\n limit: 50,\n },\n };\n\n return result;\n}\n\nexport type QueryWithDefaults = ReturnType<typeof applyQueryDefaults>;\n","export enum QueryEditorPropertyType {\n String = 'string',\n}\n\nexport interface QueryEditorProperty {\n type: QueryEditorPropertyType;\n name?: string;\n}\n\nexport type QueryEditorOperatorType = string | boolean | number;\ntype QueryEditorOperatorValueType = QueryEditorOperatorType | QueryEditorOperatorType[];\n\nexport interface QueryEditorOperator<T extends QueryEditorOperatorValueType> {\n name?: string;\n value?: T;\n}\n\nexport interface QueryEditorOperatorExpression {\n type: QueryEditorExpressionType.Operator;\n property: QueryEditorProperty;\n operator: QueryEditorOperator<QueryEditorOperatorValueType>;\n}\n\nexport interface QueryEditorArrayExpression {\n type: QueryEditorExpressionType.And | QueryEditorExpressionType.Or;\n expressions: QueryEditorExpression[] | QueryEditorArrayExpression[];\n}\n\nexport interface QueryEditorPropertyExpression {\n type: QueryEditorExpressionType.Property;\n property: QueryEditorProperty;\n}\n\nexport enum QueryEditorExpressionType {\n Property = 'property',\n Operator = 'operator',\n Or = 'or',\n And = 'and',\n GroupBy = 'groupBy',\n Function = 'function',\n FunctionParameter = 'functionParameter',\n}\n\nexport type QueryEditorExpression =\n | QueryEditorArrayExpression\n | QueryEditorPropertyExpression\n | QueryEditorGroupByExpression\n | QueryEditorFunctionExpression\n | QueryEditorFunctionParameterExpression\n | QueryEditorOperatorExpression;\n\nexport interface QueryEditorGroupByExpression {\n type: QueryEditorExpressionType.GroupBy;\n property: QueryEditorProperty;\n}\n\nexport interface QueryEditorFunctionExpression {\n type: QueryEditorExpressionType.Function;\n name?: string;\n alias?: string;\n parameters?: QueryEditorFunctionParameterExpression[];\n}\n\nexport interface QueryEditorFunctionParameterExpression {\n type: QueryEditorExpressionType.FunctionParameter;\n name?: string;\n}\n","import { JsonTree } from 'react-awesome-query-builder';\n\nimport {\n DataFrame,\n DataQuery,\n DataSourceJsonData,\n MetricFindValue,\n SelectableValue,\n TimeRange,\n toOption as toOptionFromData,\n} from '@grafana/data';\nimport { CompletionItemKind, EditorMode, LanguageDefinition } from '@grafana/experimental';\n\nimport { QueryWithDefaults } from './defaults';\nimport {\n QueryEditorFunctionExpression,\n QueryEditorGroupByExpression,\n QueryEditorPropertyExpression,\n} from './expressions';\n\nexport interface SqlQueryForInterpolation {\n dataset?: string;\n alias?: string;\n format?: QueryFormat;\n rawSql?: string;\n refId: string;\n hide?: boolean;\n}\n\nexport interface SQLConnectionLimits {\n maxOpenConns: number;\n maxIdleConns: number;\n connMaxLifetime: number;\n}\n\nexport interface SQLOptions extends SQLConnectionLimits, DataSourceJsonData {\n tlsAuth: boolean;\n tlsAuthWithCACert: boolean;\n timezone: string;\n tlsSkipVerify: boolean;\n user: string;\n database: string;\n url: string;\n timeInterval: string;\n}\n\nexport enum QueryFormat {\n Timeseries = 'time_series',\n Table = 'table',\n}\n\nexport interface SQLQuery extends DataQuery {\n alias?: string;\n format?: QueryFormat;\n rawSql?: string;\n dataset?: string;\n table?: string;\n sql?: SQLExpression;\n editorMode?: EditorMode;\n rawQuery?: boolean;\n}\n\nexport interface NameValue {\n name: string;\n value: string;\n}\n\nexport type SQLFilters = NameValue[];\n\nexport interface SQLExpression {\n columns?: QueryEditorFunctionExpression[];\n whereJsonTree?: JsonTree;\n whereString?: string;\n filters?: SQLFilters;\n groupBy?: QueryEditorGroupByExpression[];\n orderBy?: QueryEditorPropertyExpression;\n orderByDirection?: 'ASC' | 'DESC';\n limit?: number;\n offset?: number;\n}\n\nexport interface TableSchema {\n name?: string;\n schema?: TableFieldSchema[];\n}\n\nexport interface TableFieldSchema {\n name: string;\n description?: string;\n type: string;\n repeated: boolean;\n schema: TableFieldSchema[];\n}\n\nexport interface QueryRowFilter {\n filter: boolean;\n group: boolean;\n order: boolean;\n preview: boolean;\n}\n\nexport const QUERY_FORMAT_OPTIONS = [\n { label: 'Time series', value: QueryFormat.Timeseries },\n { label: 'Table', value: QueryFormat.Table },\n];\n\nconst backWardToOption = (value: string) => ({ label: value, value });\n\nexport const toOption = toOptionFromData ?? backWardToOption;\n\nexport interface ResourceSelectorProps {\n disabled?: boolean;\n className?: string;\n applyDefault?: boolean;\n}\n// React Awesome Query builder field types.\n// These are responsible for rendering the correct UI for the field.\nexport type RAQBFieldTypes = 'text' | 'number' | 'boolean' | 'datetime' | 'date' | 'time';\n\nexport interface SQLSelectableValue extends SelectableValue {\n type?: string;\n raqbFieldType?: RAQBFieldTypes;\n}\n\nexport interface DB {\n init?: (datasourceId?: string) => Promise<boolean>;\n datasets: () => Promise<string[]>;\n tables: (dataset?: string) => Promise<string[]>;\n fields: (query: SQLQuery, order?: boolean) => Promise<SQLSelectableValue[]>;\n validateQuery: (query: SQLQuery, range?: TimeRange) => Promise<ValidationResults>;\n dsID: () => number;\n dispose?: (dsID?: string) => void;\n lookup?: (path?: string) => Promise<Array<{ name: string; completion: string }>>;\n getEditorLanguageDefinition: () => LanguageDefinition;\n toRawSql?: (query: SQLQuery) => string;\n functions?: () => string[];\n}\n\nexport interface QueryEditorProps {\n db: DB;\n query: QueryWithDefaults;\n onChange: (query: SQLQuery) => void;\n range?: TimeRange;\n}\n\nexport interface ValidationResults {\n query: SQLQuery;\n rawSql?: string;\n error: string;\n isError: boolean;\n isValid: boolean;\n statistics?: {\n TotalBytesProcessed: number;\n } | null;\n}\n\nexport interface SqlQueryModel {\n quoteLiteral: (v: string) => string;\n}\n\nexport interface ResponseParser {\n transformMetricFindResponse: (frame: DataFrame) => MetricFindValue[];\n}\n\nexport interface MetaDefinition {\n name: string;\n completion?: string;\n kind: CompletionItemKind;\n}\n","// @ts-ignore\nimport sqlFormatter from 'sql-formatter-plus';\n\nexport function formatSQL(q: string) {\n return sqlFormatter.format(q).replace(/(\\$ \\{ .* \\})|(\\$ __)|(\\$ \\w+)/g, (m: string) => {\n return m.replace(/\\s/g, '');\n });\n}\n","import { isEmpty } from 'lodash';\n\nimport {\n QueryEditorExpressionType,\n QueryEditorFunctionExpression,\n QueryEditorGroupByExpression,\n QueryEditorPropertyExpression,\n QueryEditorPropertyType,\n} from '../expressions';\nimport { SQLQuery, SQLExpression } from '../types';\n\nexport function defaultToRawSql({ sql, dataset, table }: SQLQuery): string {\n let rawQuery = '';\n\n // Return early with empty string if there is no sql column\n if (!sql || !haveColumns(sql.columns)) {\n return rawQuery;\n }\n\n rawQuery += createSelectClause(sql.columns);\n\n if (dataset && table) {\n rawQuery += `FROM ${dataset}.${table} `;\n }\n\n if (sql.whereString) {\n rawQuery += `WHERE ${sql.whereString} `;\n }\n\n if (sql.groupBy?.[0]?.property.name) {\n const groupBy = sql.groupBy.map((g) => g.property.name).filter((g) => !isEmpty(g));\n rawQuery += `GROUP BY ${groupBy.join(', ')} `;\n }\n\n if (sql.orderBy?.property.name) {\n rawQuery += `ORDER BY ${sql.orderBy.property.name} `;\n }\n\n if (sql.orderBy?.property.name && sql.orderByDirection) {\n rawQuery += `${sql.orderByDirection} `;\n }\n\n // Altough LIMIT 0 doesn't make sense, it is still possible to have LIMIT 0\n if (sql.limit !== undefined && sql.limit >= 0) {\n rawQuery += `LIMIT ${sql.limit} `;\n }\n return rawQuery;\n}\n\nfunction createSelectClause(sqlColumns: NonNullable<SQLExpression['columns']>): string {\n const columns = sqlColumns.map((c) => {\n let rawColumn = '';\n if (c.name && c.alias) {\n rawColumn += `${c.name}(${c.parameters?.map((p) => `${p.name}`)}) AS ${c.alias}`;\n } else if (c.name) {\n rawColumn += `${c.name}(${c.parameters?.map((p) => `${p.name}`)})`;\n } else if (c.alias) {\n rawColumn += `${c.parameters?.map((p) => `${p.name}`)} AS ${c.alias}`;\n } else {\n rawColumn += `${c.parameters?.map((p) => `${p.name}`)}`;\n }\n return rawColumn;\n });\n return `SELECT ${columns.join(', ')} `;\n}\n\nexport const haveColumns = (columns: SQLExpression['columns']): columns is NonNullable<SQLExpression['columns']> => {\n if (!columns) {\n return false;\n }\n\n const haveColumn = columns.some((c) => c.parameters?.length || c.parameters?.some((p) => p.name));\n const haveFunction = columns.some((c) => c.name);\n return haveColumn || haveFunction;\n};\n\n/**\n * Creates a GroupByExpression for a specified field\n */\nexport function setGroupByField(field?: string): QueryEditorGroupByExpression {\n return {\n type: QueryEditorExpressionType.GroupBy,\n property: {\n type: QueryEditorPropertyType.String,\n name: field,\n },\n };\n}\n\n/**\n * Creates a PropertyExpression for a specified field\n */\nexport function setPropertyField(field?: string): QueryEditorPropertyExpression {\n return {\n type: QueryEditorExpressionType.Property,\n property: {\n type: QueryEditorPropertyType.String,\n name: field,\n },\n };\n}\n\nexport function createFunctionField(functionName?: string): QueryEditorFunctionExpression {\n return {\n type: QueryEditorExpressionType.Function,\n name: functionName,\n parameters: [],\n };\n}\n","\"use strict\";\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setDragStart = exports.setDragProgress = exports.setDragEnd = void 0;\n\nvar constants = _interopRequireWildcard(require(\"../constants\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/**\n * @param {Object} mousePos\n * @param {Object} dragging\n */\nvar setDragProgress = function setDragProgress(mousePos, dragging) {\n return {\n type: constants.SET_DRAG_PROGRESS,\n mousePos: mousePos,\n dragging: dragging\n };\n};\n/**\n * @param {Object} dragStart\n * @param {Object} dragging\n * @param {Object} mousePos\n */\n\n\nexports.setDragProgress = setDragProgress;\n\nvar setDragStart = function setDragStart(dragStart, dragging, mousePos) {\n return {\n type: constants.SET_DRAG_START,\n dragStart: dragStart,\n dragging: dragging,\n mousePos: mousePos\n };\n};\n/**\n *\n */\n\n\nexports.setDragStart = setDragStart;\n\nvar setDragEnd = function setDragEnd() {\n return {\n type: constants.SET_DRAG_END\n };\n};\n\nexports.setDragEnd = setDragEnd;","\"use strict\";\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setNot = exports.setLock = exports.setConjunction = void 0;\n\nvar constants = _interopRequireWildcard(require(\"../constants\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {string} conjunction\n */\nvar setConjunction = function setConjunction(config, path, conjunction) {\n return {\n type: constants.SET_CONJUNCTION,\n path: (0, _stuff.toImmutableList)(path),\n conjunction: conjunction\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {bool} not\n */\n\n\nexports.setConjunction = setConjunction;\n\nvar setNot = function setNot(config, path, not) {\n return {\n type: constants.SET_NOT,\n path: (0, _stuff.toImmutableList)(path),\n not: not\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {bool} lock\n */\n\n\nexports.setNot = setNot;\n\nvar setLock = function setLock(config, path, lock) {\n return {\n type: constants.SET_LOCK,\n path: (0, _stuff.toImmutableList)(path),\n lock: lock\n };\n};\n\nexports.setLock = setLock;","\"use strict\";\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tree = exports.rule = exports.group = exports.drag = void 0;\n\nvar tree = _interopRequireWildcard(require(\"./tree\"));\n\nexports.tree = tree;\n\nvar group = _interopRequireWildcard(require(\"./group\"));\n\nexports.group = group;\n\nvar rule = _interopRequireWildcard(require(\"./rule\"));\n\nexports.rule = rule;\n\nvar drag = _interopRequireWildcard(require(\"./drag\"));\n\nexports.drag = drag;\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }","\"use strict\";\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setValueSrc = exports.setValue = exports.setOperatorOption = exports.setOperator = exports.setField = void 0;\n\nvar constants = _interopRequireWildcard(require(\"../constants\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {string} field\n */\nvar setField = function setField(config, path, field) {\n return {\n type: constants.SET_FIELD,\n path: (0, _stuff.toImmutableList)(path),\n field: field,\n config: config\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {string} operator\n */\n\n\nexports.setField = setField;\n\nvar setOperator = function setOperator(config, path, operator) {\n return {\n type: constants.SET_OPERATOR,\n path: (0, _stuff.toImmutableList)(path),\n operator: operator,\n config: config\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {integer} delta\n * @param {*} value\n * @param {string} valueType\n * @param {*} asyncListValues\n * @param {boolean} __isInternal\n */\n\n\nexports.setOperator = setOperator;\n\nvar setValue = function setValue(config, path, delta, value, valueType, asyncListValues, __isInternal) {\n return {\n type: constants.SET_VALUE,\n path: (0, _stuff.toImmutableList)(path),\n delta: delta,\n value: value,\n valueType: valueType,\n asyncListValues: asyncListValues,\n config: config,\n __isInternal: __isInternal\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {integer} delta\n * @param {*} srcKey\n */\n\n\nexports.setValue = setValue;\n\nvar setValueSrc = function setValueSrc(config, path, delta, srcKey) {\n return {\n type: constants.SET_VALUE_SRC,\n path: (0, _stuff.toImmutableList)(path),\n delta: delta,\n srcKey: srcKey,\n config: config\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {string} name\n * @param {*} value\n */\n\n\nexports.setValueSrc = setValueSrc;\n\nvar setOperatorOption = function setOperatorOption(config, path, name, value) {\n return {\n type: constants.SET_OPERATOR_OPTION,\n path: (0, _stuff.toImmutableList)(path),\n name: name,\n value: value,\n config: config\n };\n};\n\nexports.setOperatorOption = setOperatorOption;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setTree = exports.removeRule = exports.removeGroup = exports.moveItem = exports.addRule = exports.addGroup = exports.addDefaultCaseGroup = exports.addCaseGroup = void 0;\n\nvar _uuid = _interopRequireDefault(require(\"../utils/uuid\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar constants = _interopRequireWildcard(require(\"../constants\"));\n\nvar _immutable = _interopRequireDefault(require(\"immutable\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/**\n * @param {object} config\n * @param {Immutable.Map} tree\n */\nvar setTree = function setTree(config, tree) {\n return {\n type: constants.SET_TREE,\n tree: tree,\n config: config\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\n\n\nexports.setTree = setTree;\n\nvar addRule = function addRule(config, path, properties) {\n var ruleType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"rule\";\n var children = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n return {\n type: constants.ADD_RULE,\n ruleType: ruleType,\n children: children,\n path: (0, _stuff.toImmutableList)(path),\n id: (0, _uuid[\"default\"])(),\n properties: (0, _defaultUtils.defaultRuleProperties)(config).merge(properties || {}),\n config: config\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n */\n\n\nexports.addRule = addRule;\n\nvar removeRule = function removeRule(config, path) {\n return {\n type: constants.REMOVE_RULE,\n path: (0, _stuff.toImmutableList)(path),\n config: config\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\n\n\nexports.removeRule = removeRule;\n\nvar addDefaultCaseGroup = function addDefaultCaseGroup(config, path, properties) {\n var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return {\n type: constants.ADD_CASE_GROUP,\n path: (0, _stuff.toImmutableList)(path),\n children: children,\n id: (0, _uuid[\"default\"])(),\n properties: (0, _defaultUtils.defaultGroupProperties)(config).merge(properties || {}),\n config: config,\n meta: {\n isDefaultCase: true\n }\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\n\n\nexports.addDefaultCaseGroup = addDefaultCaseGroup;\n\nvar addCaseGroup = function addCaseGroup(config, path, properties) {\n var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return {\n type: constants.ADD_CASE_GROUP,\n path: (0, _stuff.toImmutableList)(path),\n children: children,\n id: (0, _uuid[\"default\"])(),\n properties: (0, _defaultUtils.defaultGroupProperties)(config).merge(properties || {}),\n config: config\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\n\n\nexports.addCaseGroup = addCaseGroup;\n\nvar addGroup = function addGroup(config, path, properties) {\n var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return {\n type: constants.ADD_GROUP,\n path: (0, _stuff.toImmutableList)(path),\n children: children,\n id: (0, _uuid[\"default\"])(),\n properties: (0, _defaultUtils.defaultGroupProperties)(config).merge(properties || {}),\n config: config\n };\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n */\n\n\nexports.addGroup = addGroup;\n\nvar removeGroup = function removeGroup(config, path) {\n return {\n type: constants.REMOVE_GROUP,\n path: (0, _stuff.toImmutableList)(path),\n config: config\n };\n};\n/**\n * @param {object} config\n * @param {Array} fromPath\n * @param {Array} toPath\n * @param {String} placement, see constants PLACEMENT_*\n */\n\n\nexports.removeGroup = removeGroup;\n\nvar moveItem = function moveItem(config, fromPath, toPath, placement) {\n return {\n type: constants.MOVE_ITEM,\n fromPath: (0, _stuff.toImmutableList)(fromPath),\n toPath: (0, _stuff.toImmutableList)(toPath),\n placement: placement,\n config: config\n };\n};\n\nexports.moveItem = moveItem;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _immutable = _interopRequireWildcard(require(\"immutable\"));\n\nvar _Item = require(\"./item/Item\");\n\nvar _SortableContainer = _interopRequireDefault(require(\"./containers/SortableContainer\"));\n\nvar _treeUtils = require(\"../utils/treeUtils\");\n\nvar _uuid = _interopRequireDefault(require(\"../utils/uuid\"));\n\nvar _reactUtils = require(\"../utils/reactUtils\");\n\nvar _class, _class2;\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar Builder = (0, _SortableContainer[\"default\"])(_class = (_class2 = /*#__PURE__*/function (_Component) {\n (0, _inherits2[\"default\"])(Builder, _Component);\n\n var _super = _createSuper(Builder);\n\n function Builder(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Builder);\n _this = _super.call(this, props);\n\n _this._updPath(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Builder, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var prevProps = this.props;\n var should = (0, _reactUtils.pureShouldComponentUpdate)(this)(nextProps, nextState);\n\n if (should) {\n var chs = [];\n\n for (var k in nextProps) {\n var changed = nextProps[k] !== prevProps[k];\n\n if (changed && k != \"__isInternalValueChange\") {\n chs.push(k);\n }\n }\n\n if (!chs.length) should = false; //optimize render\n\n if (chs.length == 1 && chs[0] == \"tree\" && nextProps.__isInternalValueChange) should = false;\n }\n\n return should;\n }\n }, {\n key: \"_updPath\",\n value: function _updPath(props) {\n var id = props.tree.get(\"id\");\n this.path = _immutable[\"default\"].List.of(id);\n }\n }, {\n key: \"render\",\n value: function render() {\n var tree = this.props.tree;\n var rootType = tree.get(\"type\");\n var isTernary = rootType == \"switch_group\";\n var reordableNodesCnt = isTernary ? null : (0, _treeUtils.getTotalReordableNodesCountInTree)(tree);\n var totalRulesCnt = isTernary ? null : (0, _treeUtils.getTotalRulesCountInTree)(tree);\n var id = tree.get(\"id\");\n return /*#__PURE__*/_react[\"default\"].createElement(_Item.Item, {\n key: id,\n id: id,\n path: this.path,\n type: rootType,\n properties: tree.get(\"properties\") || new _immutable.Map(),\n config: this.props.config,\n actions: this.props.actions,\n children1: tree.get(\"children1\") || new _immutable.Map() //tree={tree}\n ,\n reordableNodesCnt: reordableNodesCnt,\n totalRulesCnt: totalRulesCnt,\n parentReordableNodesCnt: 0,\n onDragStart: this.props.onDragStart\n });\n }\n }]);\n return Builder;\n}(_react.Component), _class2.propTypes = {\n tree: _propTypes[\"default\"].any.isRequired,\n //instanceOf(Immutable.Map)\n config: _propTypes[\"default\"].object.isRequired,\n actions: _propTypes[\"default\"].object.isRequired,\n onDragStart: _propTypes[\"default\"].func\n}, _class2)) || _class;\n\nexports[\"default\"] = Builder;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _context = _interopRequireDefault(require(\"../stores/context\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar actions = _interopRequireWildcard(require(\"../actions\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _reactUtils = require(\"../utils/reactUtils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar Query = /*#__PURE__*/function (_Component) {\n (0, _inherits2[\"default\"])(Query, _Component);\n\n var _super = _createSuper(Query);\n\n function Query(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Query);\n _this = _super.call(this, props);\n _this.shouldComponentUpdate = (0, _reactUtils.liteShouldComponentUpdate)((0, _assertThisInitialized2[\"default\"])(_this), {\n tree: function tree(nextValue) {\n if (nextValue === _this.oldValidatedTree && _this.oldValidatedTree === _this.validatedTree) {\n // Got value dispatched from QueryContainer\n // Ignore, because we've just rendered it\n return false;\n }\n\n return true;\n }\n });\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this._updateActions(props); // For preventive validation (tree and config consistency)\n // When config has chnaged from QueryContainer, \n // but new dispatched validated tree value is not in redux store yet (tree prop is old)\n\n\n _this.validatedTree = props.getMemoizedTree(props.config, props.tree);\n _this.oldValidatedTree = _this.validatedTree; //props.onChange && props.onChange(this.validatedTree, props.config);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Query, [{\n key: \"_updateActions\",\n value: function _updateActions(props) {\n var config = props.config,\n dispatch = props.dispatch;\n this.actions = (0, _reactUtils.bindActionCreators)(_objectSpread(_objectSpread(_objectSpread({}, actions.tree), actions.group), actions.rule), config, dispatch);\n }\n }, {\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var onChange = nextProps.onChange;\n var oldConfig = this.props.config;\n var newTree = nextProps.tree;\n var oldTree = this.props.tree;\n var newConfig = nextProps.config;\n this.oldValidatedTree = this.validatedTree;\n this.validatedTree = newTree;\n\n if (oldConfig !== newConfig) {\n this._updateActions(nextProps);\n\n this.validatedTree = nextProps.getMemoizedTree(newConfig, newTree, oldConfig);\n }\n\n var validatedTreeChanged = !(0, _stuff.immutableEqual)(this.validatedTree, this.oldValidatedTree);\n\n if (validatedTreeChanged) {\n onChange && onChange(this.validatedTree, newConfig, nextProps.__lastAction);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n renderBuilder = _this$props.renderBuilder,\n dispatch = _this$props.dispatch,\n __isInternalValueChange = _this$props.__isInternalValueChange;\n var builderProps = {\n tree: this.validatedTree,\n actions: this.actions,\n config: config,\n dispatch: dispatch,\n __isInternalValueChange: __isInternalValueChange\n };\n return renderBuilder(builderProps);\n }\n }]);\n return Query;\n}(_react.Component);\n\nQuery.propTypes = {\n config: _propTypes[\"default\"].object.isRequired,\n onChange: _propTypes[\"default\"].func,\n renderBuilder: _propTypes[\"default\"].func,\n tree: _propTypes[\"default\"].any //instanceOf(Immutable.Map)\n //dispatch: PropTypes.func.isRequired,\n //__isInternalValueChange\n //__lastAction\n //getMemoizedTree: PropTypes.func.isRequired,\n\n};\nvar ConnectedQuery = (0, _reactRedux.connect)(function (state) {\n return {\n tree: state.tree,\n __isInternalValueChange: state.__isInternalValueChange,\n __lastAction: state.__lastAction\n };\n}, null, null, {\n context: _context[\"default\"]\n})(Query);\nConnectedQuery.displayName = \"ConnectedQuery\";\nvar _default = ConnectedQuery;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _tree = _interopRequireDefault(require(\"../stores/tree\"));\n\nvar _context = _interopRequireDefault(require(\"../stores/context\"));\n\nvar _redux = require(\"redux\");\n\nvar _reactRedux = require(\"react-redux\");\n\nvar actions = _interopRequireWildcard(require(\"../actions\"));\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _validation = require(\"../utils/validation\");\n\nvar _reactUtils = require(\"../utils/reactUtils\");\n\nvar _Query = _interopRequireDefault(require(\"./Query\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar QueryContainer = /*#__PURE__*/function (_Component) {\n (0, _inherits2[\"default\"])(QueryContainer, _Component);\n\n var _super = _createSuper(QueryContainer);\n\n function QueryContainer(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, QueryContainer);\n _this = _super.call(this, props, context);\n _this.shouldComponentUpdate = (0, _reactUtils.liteShouldComponentUpdate)((0, _assertThisInitialized2[\"default\"])(_this), {\n value: function value(nextValue, prevValue, state) {\n return false;\n }\n });\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getMemoizedConfig = (0, _configUtils.createConfigMemo)();\n _this.getMemoizedTree = (0, _validation.createValidationMemo)();\n\n var config = _this.getMemoizedConfig(props);\n\n var tree = props.value;\n\n var validatedTree = _this.getMemoizedTree(config, tree);\n\n var reducer = (0, _tree[\"default\"])(config, validatedTree, _this.getMemoizedTree);\n var store = (0, _redux.createStore)(reducer);\n _this.state = {\n store: store,\n config: config\n };\n return _this;\n }\n\n (0, _createClass2[\"default\"])(QueryContainer, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var _this2 = this;\n\n // compare configs\n var oldConfig = this.state.config;\n var nextConfig = this.getMemoizedConfig(nextProps);\n var isConfigChanged = oldConfig !== nextConfig; // compare trees\n\n var storeValue = this.state.store.getState().tree;\n var isTreeChanged = !(0, _stuff.immutableEqual)(nextProps.value, this.props.value) && !(0, _stuff.immutableEqual)(nextProps.value, storeValue);\n var currentTree = isTreeChanged ? nextProps.value || (0, _defaultUtils.defaultRoot)(nextProps) : storeValue;\n\n if (isConfigChanged) {\n this.setState({\n config: nextConfig\n });\n }\n\n if (isTreeChanged || isConfigChanged) {\n var validatedTree = this.getMemoizedTree(nextConfig, currentTree, oldConfig);\n return Promise.resolve().then(function () {\n _this2.state.store.dispatch(actions.tree.setTree(nextConfig, validatedTree));\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n // `get_children` is deprecated!\n var _this$props = this.props,\n renderBuilder = _this$props.renderBuilder,\n get_children = _this$props.get_children,\n onChange = _this$props.onChange,\n settings = _this$props.settings;\n var _this$state = this.state,\n config = _this$state.config,\n store = _this$state.store;\n var QueryWrapper = settings.renderProvider;\n return /*#__PURE__*/_react[\"default\"].createElement(QueryWrapper, {\n config: config\n }, /*#__PURE__*/_react[\"default\"].createElement(_reactRedux.Provider, {\n store: store,\n context: _context[\"default\"]\n }, /*#__PURE__*/_react[\"default\"].createElement(_Query[\"default\"], {\n config: config,\n getMemoizedTree: this.getMemoizedTree,\n onChange: onChange,\n renderBuilder: renderBuilder || get_children\n })));\n }\n }]);\n return QueryContainer;\n}(_react.Component);\n\nexports[\"default\"] = QueryContainer;\nQueryContainer.propTypes = {\n //config\n conjunctions: _propTypes[\"default\"].object.isRequired,\n fields: _propTypes[\"default\"].object.isRequired,\n types: _propTypes[\"default\"].object.isRequired,\n operators: _propTypes[\"default\"].object.isRequired,\n widgets: _propTypes[\"default\"].object.isRequired,\n settings: _propTypes[\"default\"].object.isRequired,\n onChange: _propTypes[\"default\"].func,\n renderBuilder: _propTypes[\"default\"].func,\n value: _propTypes[\"default\"].any //instanceOf(Immutable.Map)\n\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _excluded = [\"isDraggingTempo\", \"isDraggingMe\", \"dragging\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar classNames = require(\"classnames\");\n\nvar _default = function _default(className) {\n return function (GroupOrRule) {\n var _class;\n\n return _class = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(Draggable, _PureComponent);\n\n var _super = _createSuper(Draggable);\n\n function Draggable(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Draggable);\n _this = _super.call(this, props);\n\n _this.handleDraggerMouseDown = function (e) {\n var nodeId = _this.props.id;\n var dom = _this.wrapper.current;\n\n if (_this.props.onDragStart) {\n _this.props.onDragStart(nodeId, dom, e);\n }\n };\n\n _this.wrapper = /*#__PURE__*/_react[\"default\"].createRef();\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Draggable, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n isDraggingTempo = _this$props.isDraggingTempo,\n isDraggingMe = _this$props.isDraggingMe,\n dragging = _this$props.dragging,\n otherProps = (0, _objectWithoutProperties2[\"default\"])(_this$props, _excluded);\n var isTrueLocked = otherProps.isTrueLocked;\n var styles = {};\n\n if (isDraggingMe && isDraggingTempo) {\n styles = {\n top: dragging.y,\n left: dragging.x,\n width: dragging.w\n };\n }\n\n var cn = classNames(className, \"group-or-rule\", isDraggingMe && isDraggingTempo ? \"qb-draggable\" : null, isDraggingMe && !isDraggingTempo ? \"qb-placeholder\" : null, isTrueLocked ? \"locked\" : null);\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: cn,\n style: styles,\n ref: this.wrapper,\n \"data-id\": this.props.id\n }, /*#__PURE__*/_react[\"default\"].createElement(GroupOrRule, (0, _extends2[\"default\"])({\n handleDraggerMouseDown: this.handleDraggerMouseDown,\n isDraggingMe: isDraggingMe,\n isDraggingTempo: isDraggingTempo\n }, otherProps)));\n }\n }]);\n return Draggable;\n }(_react.PureComponent), _class.propTypes = {\n isDraggingTempo: _propTypes[\"default\"].bool,\n isDraggingMe: _propTypes[\"default\"].bool,\n onDragStart: _propTypes[\"default\"].func,\n dragging: _propTypes[\"default\"].object,\n //{id, x, y, w, h}\n isLocked: _propTypes[\"default\"].bool,\n isTrueLocked: _propTypes[\"default\"].bool\n }, _class;\n };\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mapValues = _interopRequireDefault(require(\"lodash/mapValues\"));\n\nvar _context = _interopRequireDefault(require(\"../../stores/context\"));\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _defaultUtils = require(\"../../utils/defaultUtils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar createGroupContainer = function createGroupContainer(Group) {\n var _class;\n\n return _class = /*#__PURE__*/function (_Component) {\n (0, _inherits2[\"default\"])(GroupContainer, _Component);\n\n var _super = _createSuper(GroupContainer);\n\n function GroupContainer(_props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, GroupContainer);\n _this = _super.call(this, _props);\n\n _this._selectedConjunction = function (props) {\n props = props || _this.props;\n return props.conjunction || (0, _defaultUtils.defaultGroupConjunction)(props.config, props.field);\n };\n\n _this.setConjunction = function () {\n var conj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n _this.props.actions.setConjunction(_this.props.path, conj);\n };\n\n _this.setNot = function () {\n var not = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n _this.props.actions.setNot(_this.props.path, not);\n };\n\n _this.setLock = function () {\n var lock = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n _this.props.actions.setLock(_this.props.path, lock);\n };\n\n _this.dummyFn = function () {};\n\n _this.removeSelf = function () {\n _this.props.actions.removeGroup(_this.props.path);\n };\n\n _this.addGroup = function () {\n _this.props.actions.addGroup(_this.props.path);\n };\n\n _this.addCaseGroup = function () {\n _this.props.actions.addCaseGroup(_this.props.path);\n };\n\n _this.addDefaultCaseGroup = function () {\n _this.props.actions.addDefaultCaseGroup(_this.props.path);\n };\n\n _this.addRule = function () {\n _this.props.actions.addRule(_this.props.path);\n };\n\n _this.setField = function (field) {\n _this.props.actions.setField(_this.props.path, field);\n };\n\n _this.setOperator = function (operator) {\n _this.props.actions.setOperator(_this.props.path, operator);\n };\n\n _this.setValue = function (delta, value, type) {\n _this.props.actions.setValue(_this.props.path, delta, value, type);\n };\n\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n _this.selectedConjunction = _this._selectedConjunction(_props);\n _this.conjunctionOptions = _this._getConjunctionOptions(_props);\n _this.dummyFn.isDummyFn = true;\n return _this;\n }\n\n (0, _createClass2[\"default\"])(GroupContainer, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var prevProps = this.props;\n var prevState = this.state;\n var should = (0, _reactUtils.pureShouldComponentUpdate)(this)(nextProps, nextState);\n\n if (should) {\n if (prevState == nextState && prevProps != nextProps) {\n var draggingId = nextProps.dragging.id || prevProps.dragging.id;\n var isDraggingMe = draggingId == nextProps.id;\n var chs = [];\n\n for (var k in nextProps) {\n var changed = nextProps[k] != prevProps[k];\n\n if (k == \"dragging\" && !isDraggingMe) {\n changed = false; //dragging another item -> ignore\n }\n\n if (changed) {\n chs.push(k);\n }\n }\n\n if (!chs.length) should = false;\n }\n }\n\n return should;\n }\n }, {\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var config = nextProps.config,\n id = nextProps.id,\n conjunction = nextProps.conjunction;\n var oldConfig = this.props.config;\n var oldConjunction = this.props.conjunction;\n\n if (oldConfig != config || oldConjunction != conjunction) {\n this.selectedConjunction = this._selectedConjunction(nextProps);\n this.conjunctionOptions = this._getConjunctionOptions(nextProps);\n }\n }\n }, {\n key: \"_getConjunctionOptions\",\n value: function _getConjunctionOptions(props) {\n var _this2 = this;\n\n return (0, _mapValues[\"default\"])(props.config.conjunctions, function (item, index) {\n return {\n id: \"conjunction-\".concat(props.id, \"-\").concat(index),\n name: \"conjunction[\".concat(props.id, \"]\"),\n key: index,\n label: item.label,\n checked: index === _this2._selectedConjunction(props)\n };\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var isDraggingMe = this.props.dragging.id == this.props.id;\n var currentNesting = this.props.path.size;\n var maxNesting = this.props.config.settings.maxNesting;\n var isInDraggingTempo = !isDraggingMe && this.props.isDraggingTempo; // Don't allow nesting further than the maximum configured depth and don't\n // allow removal of the root group.\n\n var allowFurtherNesting = typeof maxNesting === \"undefined\" || currentNesting < maxNesting;\n var isRoot = currentNesting == 1;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group-or-rule-container group-container\",\n \"data-id\": this.props.id\n }, [isDraggingMe ? /*#__PURE__*/_react[\"default\"].createElement(Group, {\n key: \"dragging\",\n id: this.props.id,\n groupId: this.props.groupId,\n isDraggingMe: true,\n isDraggingTempo: true,\n dragging: this.props.dragging,\n isRoot: isRoot,\n allowFurtherNesting: allowFurtherNesting,\n conjunctionOptions: this.conjunctionOptions,\n not: this.props.not,\n selectedConjunction: this.selectedConjunction,\n setConjunction: this.dummyFn,\n setNot: this.dummyFn,\n setLock: this.dummyFn,\n removeSelf: this.dummyFn,\n addGroup: this.dummyFn,\n addCaseGroup: this.dummyFn,\n addDefaultCaseGroup: this.dummyFn,\n addRule: this.dummyFn,\n setField: this.dummyFn,\n setOperator: this.dummyFn,\n setValue: this.dummyFn,\n value: this.props.value || null,\n config: this.props.config,\n children1: this.props.children1,\n actions: this.props.actions //tree={this.props.tree}\n ,\n reordableNodesCnt: this.props.reordableNodesCnt,\n totalRulesCnt: this.props.totalRulesCnt,\n selectedField: this.props.field || null,\n parentField: this.props.parentField || null,\n selectedOperator: this.props.operator || null,\n isLocked: this.props.isLocked,\n isTrueLocked: this.props.isTrueLocked,\n parentReordableNodesCnt: this.props.parentReordableNodesCnt\n }) : null, /*#__PURE__*/_react[\"default\"].createElement(Group, {\n key: this.props.id,\n id: this.props.id,\n groupId: this.props.groupId,\n isDraggingMe: isDraggingMe,\n isDraggingTempo: isInDraggingTempo,\n onDragStart: this.props.onDragStart,\n isRoot: isRoot,\n allowFurtherNesting: allowFurtherNesting,\n conjunctionOptions: this.conjunctionOptions,\n not: this.props.not,\n selectedConjunction: this.selectedConjunction,\n setConjunction: isInDraggingTempo ? this.dummyFn : this.setConjunction,\n setNot: isInDraggingTempo ? this.dummyFn : this.setNot,\n setLock: isInDraggingTempo ? this.dummyFn : this.setLock,\n removeSelf: isInDraggingTempo ? this.dummyFn : this.removeSelf,\n addGroup: isInDraggingTempo ? this.dummyFn : this.addGroup,\n addCaseGroup: isInDraggingTempo ? this.dummyFn : this.addCaseGroup,\n addDefaultCaseGroup: isInDraggingTempo ? this.dummyFn : this.addDefaultCaseGroup,\n addRule: isInDraggingTempo ? this.dummyFn : this.addRule,\n setField: isInDraggingTempo ? this.dummyFn : this.setField,\n setOperator: isInDraggingTempo ? this.dummyFn : this.setOperator,\n setValue: isInDraggingTempo ? this.dummyFn : this.setValue,\n value: this.props.value || null,\n config: this.props.config,\n children1: this.props.children1,\n actions: this.props.actions //tree={this.props.tree}\n ,\n reordableNodesCnt: this.props.reordableNodesCnt,\n totalRulesCnt: this.props.totalRulesCnt,\n selectedField: this.props.field || null,\n parentField: this.props.parentField || null,\n selectedOperator: this.props.operator || null,\n isLocked: this.props.isLocked,\n isTrueLocked: this.props.isTrueLocked,\n parentReordableNodesCnt: this.props.parentReordableNodesCnt\n })]);\n }\n }]);\n return GroupContainer;\n }(_react.Component), _class.propTypes = {\n //tree: PropTypes.instanceOf(Immutable.Map).isRequired,\n config: _propTypes[\"default\"].object.isRequired,\n actions: _propTypes[\"default\"].object.isRequired,\n //{setConjunction: Funciton, removeGroup, addGroup, addRule, ...}\n path: _propTypes[\"default\"].any.isRequired,\n //instanceOf(Immutable.List)\n id: _propTypes[\"default\"].string.isRequired,\n groupId: _propTypes[\"default\"].string,\n not: _propTypes[\"default\"].bool,\n conjunction: _propTypes[\"default\"].string,\n children1: _propTypes[\"default\"].any,\n //instanceOf(Immutable.OrderedMap)\n onDragStart: _propTypes[\"default\"].func,\n reordableNodesCnt: _propTypes[\"default\"].number,\n field: _propTypes[\"default\"].string,\n // for RuleGroup\n parentField: _propTypes[\"default\"].string,\n //from RuleGroup\n isLocked: _propTypes[\"default\"].bool,\n isTrueLocked: _propTypes[\"default\"].bool,\n //connected:\n dragging: _propTypes[\"default\"].object,\n //{id, x, y, w, h}\n isDraggingTempo: _propTypes[\"default\"].bool\n }, _class;\n};\n\nvar _default = function _default(Group) {\n var ConnectedGroupContainer = (0, _reactRedux.connect)(function (state) {\n return {\n dragging: state.dragging\n };\n }, null, null, {\n context: _context[\"default\"]\n })(createGroupContainer(Group));\n ConnectedGroupContainer.displayName = \"ConnectedGroupContainer\";\n return ConnectedGroupContainer;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _context = _interopRequireDefault(require(\"../../stores/context\"));\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _reactRedux = require(\"react-redux\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar classNames = require(\"classnames\");\n\nvar createRuleContainer = function createRuleContainer(Rule) {\n var _class;\n\n return _class = /*#__PURE__*/function (_Component) {\n (0, _inherits2[\"default\"])(RuleContainer, _Component);\n\n var _super = _createSuper(RuleContainer);\n\n function RuleContainer(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, RuleContainer);\n _this = _super.call(this, props);\n\n _this.dummyFn = function () {};\n\n _this.removeSelf = function () {\n _this.props.actions.removeRule(_this.props.path);\n };\n\n _this.setLock = function () {\n var lock = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n _this.props.actions.setLock(_this.props.path, lock);\n };\n\n _this.setField = function (field) {\n _this.props.actions.setField(_this.props.path, field);\n };\n\n _this.setOperator = function (operator) {\n _this.props.actions.setOperator(_this.props.path, operator);\n };\n\n _this.setOperatorOption = function (name, value) {\n _this.props.actions.setOperatorOption(_this.props.path, name, value);\n };\n\n _this.setValue = function (delta, value, type, asyncListValues, __isInternal) {\n _this.props.actions.setValue(_this.props.path, delta, value, type, asyncListValues, __isInternal);\n };\n\n _this.setValueSrc = function (delta, srcKey) {\n _this.props.actions.setValueSrc(_this.props.path, delta, srcKey);\n };\n\n _this.dummyFn.isDummyFn = true;\n return _this;\n }\n\n (0, _createClass2[\"default\"])(RuleContainer, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var prevProps = this.props;\n var prevState = this.state;\n var should = (0, _reactUtils.pureShouldComponentUpdate)(this)(nextProps, nextState);\n\n if (should) {\n if (prevState == nextState && prevProps != nextProps) {\n var draggingId = nextProps.dragging.id || prevProps.dragging.id;\n var isDraggingMe = draggingId == nextProps.id;\n var chs = [];\n\n for (var k in nextProps) {\n var changed = nextProps[k] != prevProps[k];\n\n if (k == \"dragging\" && !isDraggingMe) {\n changed = false; //dragging another item -> ignore\n }\n\n if (changed) {\n chs.push(k);\n }\n }\n\n if (!chs.length) should = false;\n }\n }\n\n return should;\n }\n }, {\n key: \"render\",\n value: function render() {\n var isDraggingMe = this.props.dragging.id == this.props.id;\n var fieldConfig = (0, _configUtils.getFieldConfig)(this.props.config, this.props.field);\n var showErrorMessage = this.props.config.settings.showErrorMessage;\n\n var _isGroup = fieldConfig && fieldConfig.type == \"!struct\";\n\n var isInDraggingTempo = !isDraggingMe && this.props.isDraggingTempo;\n var valueError = this.props.valueError;\n var oneValueError = valueError && valueError.toArray().filter(function (e) {\n return !!e;\n }).shift() || null;\n var hasError = oneValueError != null && showErrorMessage;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: classNames(\"group-or-rule-container\", \"rule-container\", hasError ? \"rule-with-error\" : null),\n \"data-id\": this.props.id\n }, [isDraggingMe ? /*#__PURE__*/_react[\"default\"].createElement(Rule, {\n key: \"dragging\",\n id: this.props.id,\n groupId: this.props.groupId,\n isDraggingMe: true,\n isDraggingTempo: true,\n dragging: this.props.dragging,\n setField: this.dummyFn,\n setOperator: this.dummyFn,\n setOperatorOption: this.dummyFn,\n setLock: this.dummyFn,\n removeSelf: this.dummyFn,\n setValue: this.dummyFn,\n setValueSrc: this.dummyFn,\n selectedField: this.props.field || null,\n parentField: this.props.parentField || null,\n selectedOperator: this.props.operator || null,\n value: this.props.value || null,\n valueSrc: this.props.valueSrc || null,\n valueError: this.props.valueError || null,\n operatorOptions: this.props.operatorOptions,\n config: this.props.config,\n reordableNodesCnt: this.props.reordableNodesCnt,\n totalRulesCnt: this.props.totalRulesCnt,\n asyncListValues: this.props.asyncListValues,\n isLocked: this.props.isLocked,\n isTrueLocked: this.props.isTrueLocked,\n parentReordableNodesCnt: this.props.parentReordableNodesCnt\n }) : null, /*#__PURE__*/_react[\"default\"].createElement(Rule, {\n key: this.props.id,\n id: this.props.id,\n groupId: this.props.groupId,\n isDraggingMe: isDraggingMe,\n isDraggingTempo: isInDraggingTempo,\n onDragStart: this.props.onDragStart,\n setLock: isInDraggingTempo ? this.dummyFn : this.setLock,\n removeSelf: isInDraggingTempo ? this.dummyFn : this.removeSelf,\n setField: isInDraggingTempo ? this.dummyFn : this.setField,\n setOperator: isInDraggingTempo ? this.dummyFn : this.setOperator,\n setOperatorOption: isInDraggingTempo ? this.dummyFn : this.setOperatorOption,\n setValue: isInDraggingTempo ? this.dummyFn : this.setValue,\n setValueSrc: isInDraggingTempo ? this.dummyFn : this.setValueSrc,\n selectedField: this.props.field || null,\n parentField: this.props.parentField || null,\n selectedOperator: this.props.operator || null,\n value: this.props.value || null,\n valueSrc: this.props.valueSrc || null,\n valueError: this.props.valueError || null,\n operatorOptions: this.props.operatorOptions,\n config: this.props.config,\n reordableNodesCnt: this.props.reordableNodesCnt,\n totalRulesCnt: this.props.totalRulesCnt,\n asyncListValues: this.props.asyncListValues,\n isLocked: this.props.isLocked,\n isTrueLocked: this.props.isTrueLocked,\n parentReordableNodesCnt: this.props.parentReordableNodesCnt\n })]);\n }\n }]);\n return RuleContainer;\n }(_react.Component), _class.propTypes = {\n id: _propTypes[\"default\"].string.isRequired,\n groupId: _propTypes[\"default\"].string,\n config: _propTypes[\"default\"].object.isRequired,\n path: _propTypes[\"default\"].any.isRequired,\n //instanceOf(Immutable.List)\n operator: _propTypes[\"default\"].string,\n field: _propTypes[\"default\"].string,\n actions: _propTypes[\"default\"].object.isRequired,\n //{removeRule: Funciton, setField, setOperator, setOperatorOption, setValue, setValueSrc, ...}\n onDragStart: _propTypes[\"default\"].func,\n value: _propTypes[\"default\"].any,\n //depends on widget\n valueSrc: _propTypes[\"default\"].any,\n asyncListValues: _propTypes[\"default\"].array,\n valueError: _propTypes[\"default\"].any,\n operatorOptions: _propTypes[\"default\"].object,\n reordableNodesCnt: _propTypes[\"default\"].number,\n parentField: _propTypes[\"default\"].string,\n //from RuleGroup\n isLocked: _propTypes[\"default\"].bool,\n isTrueLocked: _propTypes[\"default\"].bool,\n //connected:\n dragging: _propTypes[\"default\"].object,\n //{id, x, y, w, h}\n isDraggingTempo: _propTypes[\"default\"].bool\n }, _class;\n};\n\nvar _default = function _default(Rule) {\n var ConnectedRuleContainer = (0, _reactRedux.connect)(function (state) {\n return {\n dragging: state.dragging\n };\n }, null, null, {\n context: _context[\"default\"]\n })(createRuleContainer(Rule));\n ConnectedRuleContainer.displayName = \"ConnectedRuleContainer\";\n return ConnectedRuleContainer;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _treeUtils = require(\"../../utils/treeUtils\");\n\nvar _stuff = require(\"../../utils/stuff\");\n\nvar _context = _interopRequireDefault(require(\"../../stores/context\"));\n\nvar constants = _interopRequireWildcard(require(\"../../constants\"));\n\nvar _clone = _interopRequireDefault(require(\"clone\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar actions = _interopRequireWildcard(require(\"../../actions\"));\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar createSortableContainer = function createSortableContainer(Builder) {\n var _class;\n\n var CanMoveFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return _class = /*#__PURE__*/function (_Component) {\n (0, _inherits2[\"default\"])(SortableContainer, _Component);\n\n var _super = _createSuper(SortableContainer);\n\n function SortableContainer(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, SortableContainer);\n _this = _super.call(this, props);\n\n _this._getEventTarget = function (e, dragStart) {\n return e && e.__mocked_window || document.body || window;\n };\n\n _this.onDragStart = function (id, dom, e) {\n var treeEl = dom.closest(\".query-builder\");\n document.body.classList.add(\"qb-dragging\");\n treeEl.classList.add(\"qb-dragging\");\n var treeElContainer = treeEl.closest(\".query-builder-container\") || treeEl;\n treeElContainer = _this._getScrollParent(treeElContainer) || document.body;\n var scrollTop = treeElContainer.scrollTop;\n\n var _dragEl = _this._getDraggableNodeEl(treeEl);\n\n var _plhEl = _this._getPlaceholderNodeEl(treeEl);\n\n var tmpAllGroups = treeEl.querySelectorAll(\".group--children\");\n var anyGroup = tmpAllGroups.length ? tmpAllGroups[0] : null;\n var groupPadding;\n\n if (anyGroup) {\n groupPadding = window.getComputedStyle(anyGroup, null).getPropertyValue(\"padding-left\");\n groupPadding = parseInt(groupPadding);\n }\n\n var dragging = {\n id: id,\n x: dom.offsetLeft,\n y: dom.offsetTop,\n w: dom.offsetWidth,\n h: dom.offsetHeight,\n itemInfo: _this.tree.items[id],\n paddingLeft: groupPadding\n };\n var dragStart = {\n id: id,\n x: dom.offsetLeft,\n y: dom.offsetTop,\n scrollTop: scrollTop,\n clientX: e.clientX,\n clientY: e.clientY,\n itemInfo: (0, _clone[\"default\"])(_this.tree.items[id]),\n treeEl: treeEl,\n treeElContainer: treeElContainer\n };\n var mousePos = {\n clientX: e.clientX,\n clientY: e.clientY\n };\n\n var target = _this._getEventTarget(e, dragStart);\n\n _this.eventTarget = target;\n target.addEventListener(\"mousemove\", _this.onDrag);\n target.addEventListener(\"mouseup\", _this.onDragEnd);\n\n _this.props.setDragStart(dragStart, dragging, mousePos);\n };\n\n _this.onDrag = function (e) {\n var doHandleDrag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var dragging = Object.assign({}, _this.props.dragging);\n var startDragging = _this.props.dragStart;\n var paddingLeft = dragging.paddingLeft; //this.props.paddingLeft;\n\n var treeElContainer = startDragging.treeElContainer;\n var scrollTop = treeElContainer.scrollTop;\n dragging.itemInfo = _this.tree.items[dragging.id];\n\n if (!dragging.itemInfo) {\n return;\n }\n\n var mousePos = {\n clientX: e.clientX,\n clientY: e.clientY\n };\n var startMousePos = {\n clientX: startDragging.clientX,\n clientY: startDragging.clientY\n };\n\n if (e.__mock_dom) {\n var treeEl = startDragging.treeEl;\n\n var dragEl = _this._getDraggableNodeEl(treeEl);\n\n var plhEl = _this._getPlaceholderNodeEl(treeEl);\n\n e.__mock_dom({\n treeEl: treeEl,\n dragEl: dragEl,\n plhEl: plhEl\n });\n } //first init plX/plY\n\n\n if (!startDragging.plX) {\n var _treeEl = startDragging.treeEl;\n\n var _plhEl2 = _this._getPlaceholderNodeEl(_treeEl);\n\n if (_plhEl2) {\n startDragging.plX = _plhEl2.getBoundingClientRect().left + window.scrollX;\n startDragging.plY = _plhEl2.getBoundingClientRect().top + window.scrollY;\n }\n }\n\n var startX = startDragging.x;\n var startY = startDragging.y;\n var startClientX = startDragging.clientX;\n var startClientY = startDragging.clientY;\n var startScrollTop = startDragging.scrollTop;\n var pos = {\n x: startX + (e.clientX - startClientX),\n y: startY + (e.clientY - startClientY) + (scrollTop - startScrollTop)\n };\n dragging.x = pos.x;\n dragging.y = pos.y;\n dragging.paddingLeft = paddingLeft;\n dragging.mousePos = mousePos;\n dragging.startMousePos = startMousePos;\n\n _this.props.setDragProgress(mousePos, dragging);\n\n var moved = doHandleDrag ? _this.handleDrag(dragging, e, CanMoveFn) : false;\n\n if (!moved) {\n if (e.preventDefault) e.preventDefault();\n }\n };\n\n _this.onDragEnd = function () {\n var treeEl = _this.props.dragStart.treeEl;\n\n _this.props.setDragEnd();\n\n treeEl.classList.remove(\"qb-dragging\");\n document.body.classList.remove(\"qb-dragging\");\n _this._cacheEls = {};\n\n var target = _this.eventTarget || _this._getEventTarget();\n\n target.removeEventListener(\"mousemove\", _this.onDrag);\n target.removeEventListener(\"mouseup\", _this.onDragEnd);\n };\n\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(SortableContainer, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n this.tree = (0, _treeUtils.getFlatTree)(nextProps.tree);\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var prevProps = this.props;\n var prevState = this.state;\n var should = (0, _reactUtils.pureShouldComponentUpdate)(this)(nextProps, nextState);\n\n if (should) {\n if (prevState == nextState && prevProps != nextProps) {\n var chs = [];\n\n for (var k in nextProps) {\n var changed = nextProps[k] != prevProps[k];\n\n if (changed) {\n //don't render <Builder> on dragging - appropriate redux-connected components will do it\n if (k != \"dragging\" && k != \"mousePos\") chs.push(k);\n }\n }\n\n if (!chs.length) should = false;\n }\n }\n\n return should;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(_prevProps, _prevState) {\n var dragging = this.props.dragging;\n var startDragging = this.props.dragStart;\n\n if (startDragging && startDragging.id) {\n dragging.itemInfo = this.tree.items[dragging.id];\n\n if (dragging.itemInfo) {\n if (dragging.itemInfo.index != startDragging.itemInfo.index || dragging.itemInfo.parent != startDragging.itemInfo.parent) {\n var treeEl = startDragging.treeEl;\n var treeElContainer = startDragging.treeElContainer;\n\n var plhEl = this._getPlaceholderNodeEl(treeEl, true);\n\n if (plhEl) {\n var plX = plhEl.getBoundingClientRect().left + window.scrollX;\n var plY = plhEl.getBoundingClientRect().top + window.scrollY;\n var oldPlX = startDragging.plX;\n var oldPlY = startDragging.plY;\n var scrollTop = treeElContainer.scrollTop;\n startDragging.plX = plX;\n startDragging.plY = plY;\n startDragging.itemInfo = (0, _clone[\"default\"])(dragging.itemInfo);\n startDragging.y = plhEl.offsetTop;\n startDragging.x = plhEl.offsetLeft;\n startDragging.clientY += plY - oldPlY;\n startDragging.clientX += plX - oldPlX;\n if (treeElContainer != document.body) startDragging.scrollTop = scrollTop;\n this.onDrag(this.props.mousePos, false);\n }\n }\n }\n }\n }\n }, {\n key: \"_getNodeElById\",\n value: function _getNodeElById(treeEl, indexId) {\n var ignoreCache = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (indexId == null) return null;\n if (!this._cacheEls) this._cacheEls = {};\n var el = this._cacheEls[indexId];\n if (el && document.contains(el) && !ignoreCache) return el;\n el = treeEl.querySelector('.group-or-rule-container[data-id=\"' + indexId + '\"]');\n this._cacheEls[indexId] = el;\n return el;\n }\n }, {\n key: \"_getDraggableNodeEl\",\n value: function _getDraggableNodeEl(treeEl) {\n var ignoreCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!this._cacheEls) this._cacheEls = {};\n var el = this._cacheEls[\"draggable\"];\n if (el && document.contains(el) && !ignoreCache) return el;\n var els = treeEl.getElementsByClassName(\"qb-draggable\");\n el = els.length ? els[0] : null;\n this._cacheEls[\"draggable\"] = el;\n return el;\n }\n }, {\n key: \"_getPlaceholderNodeEl\",\n value: function _getPlaceholderNodeEl(treeEl) {\n var ignoreCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!this._cacheEls) this._cacheEls = {};\n var el = this._cacheEls[\"placeholder\"];\n if (el && document.contains(el) && !ignoreCache) return el;\n var els = treeEl.getElementsByClassName(\"qb-placeholder\");\n el = els.length ? els[0] : null;\n this._cacheEls[\"placeholder\"] = el;\n return el;\n }\n }, {\n key: \"_isScrollable\",\n value: function _isScrollable(node) {\n var overflowY = window.getComputedStyle(node)[\"overflow-y\"];\n return (overflowY === \"scroll\" || overflowY === \"auto\") && node.scrollHeight > node.offsetHeight;\n }\n }, {\n key: \"_getScrollParent\",\n value: function _getScrollParent(node) {\n if (node == null) return null;\n\n if (node === document.body || this._isScrollable(node)) {\n return node;\n } else {\n return this._getScrollParent(node.parentNode);\n }\n }\n }, {\n key: \"handleDrag\",\n value: function handleDrag(dragInfo, e, canMoveFn) {\n var _this2 = this;\n\n var canMoveBeforeAfterGroup = true;\n var itemInfo = dragInfo.itemInfo;\n var paddingLeft = dragInfo.paddingLeft;\n var moveInfo = null;\n var treeEl = this.props.dragStart.treeEl;\n var dragId = dragInfo.id;\n\n var dragEl = this._getDraggableNodeEl(treeEl);\n\n var plhEl = this._getPlaceholderNodeEl(treeEl);\n\n var dragRect, plhRect, hovRect, treeRect;\n\n if (dragEl && plhEl) {\n dragRect = dragEl.getBoundingClientRect();\n plhRect = plhEl.getBoundingClientRect();\n\n if (!plhRect.width) {\n return;\n }\n\n var dragDirs = {\n hrz: 0,\n vrt: 0\n };\n if (dragRect.top < plhRect.top) dragDirs.vrt = -1; //up\n else if (dragRect.bottom > plhRect.bottom) dragDirs.vrt = +1; //down\n\n if (dragRect.left > plhRect.left) dragDirs.hrz = +1; //right\n else if (dragRect.left < plhRect.left) dragDirs.hrz = -1; //left\n\n treeRect = treeEl.getBoundingClientRect();\n var trgCoord = {\n x: treeRect.left + (treeRect.right - treeRect.left) / 2,\n y: dragDirs.vrt >= 0 ? dragRect.bottom : dragRect.top\n };\n var hovCNodeEl;\n\n if (e.__mocked_hov_container) {\n hovCNodeEl = e.__mocked_hov_container;\n } else {\n var hovNodeEl = document.elementFromPoint(trgCoord.x, trgCoord.y - 1);\n hovCNodeEl = hovNodeEl ? hovNodeEl.closest(\".group-or-rule-container\") : null;\n\n if (!hovCNodeEl && hovNodeEl && hovNodeEl.classList.contains(\"query-builder-container\")) {\n var _hovNodeEl$firstChild;\n\n // fix 2022-01-24 - get root .group-or-rule-container\n var rootGroupContainer = hovNodeEl === null || hovNodeEl === void 0 ? void 0 : (_hovNodeEl$firstChild = hovNodeEl.firstChild) === null || _hovNodeEl$firstChild === void 0 ? void 0 : _hovNodeEl$firstChild.firstChild;\n\n if (rootGroupContainer && rootGroupContainer.classList.contains(\"group-or-rule-container\")) {\n hovCNodeEl = rootGroupContainer;\n }\n }\n }\n\n if (!hovCNodeEl) {\n _stuff.logger.log(\"out of tree bounds!\");\n } else {\n var isGroup = hovCNodeEl.classList.contains(\"group-container\");\n var hovNodeId = hovCNodeEl.getAttribute(\"data-id\");\n var hovEl = hovCNodeEl;\n var doAppend = false;\n var doPrepend = false;\n\n if (hovEl) {\n hovRect = hovEl.getBoundingClientRect();\n var hovHeight = hovRect.bottom - hovRect.top;\n var hovII = this.tree.items[hovNodeId];\n var trgRect = null,\n trgEl = null,\n trgII = null,\n altII = null; //for canMoveBeforeAfterGroup\n\n if (dragDirs.vrt == 0) {\n trgII = itemInfo;\n trgEl = plhEl;\n if (trgEl) trgRect = trgEl.getBoundingClientRect();\n } else {\n if (isGroup) {\n if (dragDirs.vrt > 0) {\n //down\n //take group header (for prepend only)\n var hovInnerEl = hovCNodeEl.getElementsByClassName(\"group--header\");\n var hovEl2 = hovInnerEl.length ? hovInnerEl[0] : null;\n\n if (hovEl2) {\n var hovRect2 = hovEl2.getBoundingClientRect();\n var hovHeight2 = hovRect2.bottom - hovRect2.top;\n var isOverHover = dragRect.bottom - hovRect2.top > hovHeight2 * 3 / 4;\n\n if (isOverHover && hovII.top > dragInfo.itemInfo.top) {\n trgII = hovII;\n trgRect = hovRect2;\n trgEl = hovEl2;\n doPrepend = true;\n }\n }\n } else if (dragDirs.vrt < 0) {\n //up\n if (hovII.lev >= itemInfo.lev) {\n //take whole group\n var isClimbToHover = hovRect.bottom - dragRect.top >= 2;\n\n if (isClimbToHover && hovII.top < dragInfo.itemInfo.top) {\n trgII = hovII;\n trgRect = hovRect;\n trgEl = hovEl;\n doAppend = true;\n }\n }\n }\n\n if (!doPrepend && !doAppend || canMoveBeforeAfterGroup) {\n //take whole group and check if we can move before/after group\n var _isOverHover = dragDirs.vrt < 0 //up\n ? hovRect.bottom - dragRect.top > hovHeight - 5 : dragRect.bottom - hovRect.top > hovHeight - 5;\n\n if (_isOverHover) {\n if (!doPrepend && !doAppend) {\n trgII = hovII;\n trgRect = hovRect;\n trgEl = hovEl;\n }\n\n if (canMoveBeforeAfterGroup) {\n altII = hovII;\n }\n }\n }\n } else {\n //check if we can move before/after group\n var _isOverHover2 = dragDirs.vrt < 0 //up\n ? hovRect.bottom - dragRect.top > hovHeight / 2 : dragRect.bottom - hovRect.top > hovHeight / 2;\n\n if (_isOverHover2) {\n trgII = hovII;\n trgRect = hovRect;\n trgEl = hovEl;\n }\n }\n }\n\n var isSamePos = trgII && trgII.id == dragId;\n\n if (trgRect) {\n var dragLeftOffset = dragRect.left - treeRect.left;\n var trgLeftOffset = trgRect.left - treeRect.left;\n\n var _trgLev = trgLeftOffset / paddingLeft;\n\n var dragLev = Math.max(0, Math.round(dragLeftOffset / paddingLeft)); //find all possible moves\n\n var availMoves = [];\n var altMoves = []; //alternatively can move after/before group, if can't move into it\n\n if (isSamePos) {//do nothing\n } else {\n if (isGroup) {\n if (doAppend) {\n availMoves.push([constants.PLACEMENT_APPEND, trgII, trgII.lev + 1]);\n } else if (doPrepend) {\n availMoves.push([constants.PLACEMENT_PREPEND, trgII, trgII.lev + 1]);\n } //alt\n\n\n if (canMoveBeforeAfterGroup && altII) {\n // fix 2022-01-24: do prepend/append instead of before/after for root\n var isToRoot = altII.lev == 0; // fix 2022-01-25: fix prepend/append instead of before/after for case_group\n\n var isToCase = altII.type == \"case_group\" && itemInfo.type != \"case_group\";\n var prevCaseId = altII.prev && this.tree.items[altII.prev].caseId;\n var nextCaseId = altII.next && this.tree.items[altII.next].caseId;\n if (itemInfo.caseId == prevCaseId) prevCaseId = null;\n if (itemInfo.caseId == nextCaseId) nextCaseId = null;\n var prevCase = prevCaseId && this.tree.items[prevCaseId];\n var nextCase = nextCaseId && this.tree.items[nextCaseId];\n\n if (dragDirs.vrt > 0) {\n //down\n if (isToRoot) {\n altMoves.push([constants.PLACEMENT_APPEND, altII, altII.lev + 1]);\n } else if (isToCase && nextCase) {\n altMoves.push([constants.PLACEMENT_PREPEND, nextCase, nextCase.lev + 1]);\n } else {\n altMoves.push([constants.PLACEMENT_AFTER, altII, altII.lev]);\n }\n } else if (dragDirs.vrt < 0) {\n //up\n if (isToRoot) {\n altMoves.push([constants.PLACEMENT_PREPEND, altII, altII.lev + 1]);\n } else if (isToCase && prevCase) {\n altMoves.push([constants.PLACEMENT_APPEND, prevCase, prevCase.lev + 1]);\n } else {\n altMoves.push([constants.PLACEMENT_BEFORE, altII, altII.lev]);\n }\n }\n }\n }\n\n if (!doAppend && !doPrepend) {\n if (dragDirs.vrt < 0) {\n //up\n availMoves.push([constants.PLACEMENT_BEFORE, trgII, trgII.lev]);\n } else if (dragDirs.vrt > 0) {\n //down\n availMoves.push([constants.PLACEMENT_AFTER, trgII, trgII.lev]);\n }\n }\n } //add case\n\n\n var addCaseII = function addCaseII(am) {\n var toII = am[1];\n var fromCaseII = itemInfo.caseId ? _this2.tree.items[itemInfo.caseId] : null;\n var toCaseII = toII.caseId ? _this2.tree.items[toII.caseId] : null;\n return [].concat((0, _toConsumableArray2[\"default\"])(am), [fromCaseII, toCaseII]);\n };\n\n availMoves = availMoves.map(addCaseII);\n altMoves = altMoves.map(addCaseII); //sanitize\n\n availMoves = availMoves.filter(function (am) {\n var placement = am[0];\n var trg = am[1];\n if ((placement == constants.PLACEMENT_BEFORE || placement == constants.PLACEMENT_AFTER) && trg.parent == null) return false;\n if (trg.collapsed && (placement == constants.PLACEMENT_APPEND || placement == constants.PLACEMENT_PREPEND)) return false;\n var isInside = trg.id == itemInfo.id;\n\n if (!isInside) {\n var tmp = trg;\n\n while (tmp.parent) {\n tmp = _this2.tree.items[tmp.parent];\n\n if (tmp.id == itemInfo.id) {\n isInside = true;\n break;\n }\n }\n }\n\n return !isInside;\n }).map(function (am) {\n var placement = am[0],\n toII = am[1],\n _lev = am[2],\n _fromCaseII = am[3],\n _toCaseII = am[4];\n var toParentII = null;\n if (placement == constants.PLACEMENT_APPEND || placement == constants.PLACEMENT_PREPEND) toParentII = toII;else toParentII = _this2.tree.items[toII.parent];\n if (toParentII && toParentII.parent == null) toParentII = null;\n am[5] = toParentII;\n return am;\n });\n var bestMode = null;\n var filteredMoves = availMoves.filter(function (am) {\n return _this2.canMove(itemInfo, am[1], am[0], am[3], am[4], am[5], canMoveFn);\n });\n\n if (canMoveBeforeAfterGroup && filteredMoves.length == 0 && altMoves.length > 0) {\n filteredMoves = altMoves.filter(function (am) {\n return _this2.canMove(itemInfo, am[1], am[0], am[3], am[4], am[5], canMoveFn);\n });\n }\n\n var levs = filteredMoves.map(function (am) {\n return am[2];\n });\n var curLev = itemInfo.lev;\n var allLevs = levs.concat(curLev);\n var closestDragLev = null;\n if (allLevs.indexOf(dragLev) != -1) closestDragLev = dragLev;else if (dragLev > Math.max.apply(Math, (0, _toConsumableArray2[\"default\"])(allLevs))) closestDragLev = Math.max.apply(Math, (0, _toConsumableArray2[\"default\"])(allLevs));else if (dragLev < Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])(allLevs))) closestDragLev = Math.min.apply(Math, (0, _toConsumableArray2[\"default\"])(allLevs));\n bestMode = filteredMoves.find(function (am) {\n return am[2] == closestDragLev;\n });\n if (!isSamePos && !bestMode && filteredMoves.length) bestMode = filteredMoves[0];\n moveInfo = bestMode;\n }\n }\n }\n }\n\n if (moveInfo) {\n this.move(itemInfo, moveInfo[1], moveInfo[0], moveInfo[3]); // logger.log(\"DRAG-N-DROP\", JSON.stringify({\n // dragRect,\n // plhRect,\n // treeRect,\n // hovRect,\n // startMousePos: dragInfo.startMousePos,\n // mousePos: dragInfo.mousePos,\n // }));\n\n return true;\n }\n\n return false;\n }\n }, {\n key: \"canMove\",\n value: function canMove(fromII, toII, placement, fromCaseII, toCaseII, toParentII, canMoveFn) {\n if (!fromII || !toII) return false;\n if (fromII.id === toII.id) return false;\n var _this$props$config$se = this.props.config.settings,\n canRegroup = _this$props$config$se.canRegroup,\n canRegroupCases = _this$props$config$se.canRegroupCases,\n maxNesting = _this$props$config$se.maxNesting,\n maxNumberOfRules = _this$props$config$se.maxNumberOfRules,\n canLeaveEmptyCase = _this$props$config$se.canLeaveEmptyCase;\n var newLev = toParentII ? toParentII.lev + 1 : toII.lev;\n var isBeforeAfter = placement == constants.PLACEMENT_BEFORE || placement == constants.PLACEMENT_AFTER;\n var isPend = placement == constants.PLACEMENT_PREPEND || placement == constants.PLACEMENT_APPEND;\n var isLev1 = isBeforeAfter && toII.lev == 1 || isPend && toII.lev == 0;\n var isParentChange = fromII.parent != toII.parent;\n var isStructChange = isPend || isParentChange; // can't move `case_group` anywhere but before/after anoter `case_group`\n\n var isForbiddenStructChange = fromII.type == \"case_group\" && !isLev1 // can't restruct `rule_group`\n || fromII.parentType == \"rule_group\" || toII.type == \"rule_group\" || toII.parentType == \"rule_group\" // only `case_group` can be placed under `switch_group`\n || fromII.type != \"case_group\" && toII.type == \"case_group\" && isBeforeAfter || fromII.type != \"case_group\" && toII.type == \"switch_group\" // can't move rule/group to another case\n || !canRegroupCases && fromII.caseId != toII.caseId;\n var isLockedChange = toII.isLocked || fromII.isLocked || toParentII && toParentII.isLocked;\n if (maxNesting && newLev > maxNesting) return false;\n if (isStructChange && (!canRegroup || isForbiddenStructChange || isLockedChange)) return false;\n\n if (fromII.type != \"case_group\" && fromII.caseId != toII.caseId) {\n var isLastFromCase = fromCaseII ? fromCaseII._height == 2 : false;\n var newRulesInTargetCase = toCaseII ? toCaseII.leafsCount + 1 : 0;\n if (maxNumberOfRules && newRulesInTargetCase > maxNumberOfRules) return false;\n if (isLastFromCase && !canLeaveEmptyCase) return false;\n }\n\n if (fromII.type == \"case_group\" && (fromII.isDefaultCase || toII.isDefaultCase || toII.type == \"switch_group\" && placement == constants.PLACEMENT_APPEND)) {\n // leave default case alone\n return false;\n }\n\n var res = true;\n\n if (canMoveFn) {\n res = canMoveFn(fromII.node.toJS(), toII.node.toJS(), placement, toParentII ? toParentII.node.toJS() : null);\n }\n\n return res;\n }\n }, {\n key: \"move\",\n value: function move(fromII, toII, placement, toParentII) {\n //logger.log(\"move\", fromII, toII, placement, toParentII);\n this.props.actions.moveItem(fromII.path, toII.path, placement);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/_react[\"default\"].createElement(Builder, (0, _extends2[\"default\"])({}, this.props, {\n onDragStart: this.onDragStart\n }));\n }\n }]);\n return SortableContainer;\n }(_react.Component), _class.propTypes = {\n tree: _propTypes[\"default\"].any.isRequired,\n //instanceOf(Immutable.Map)\n actions: _propTypes[\"default\"].object.isRequired // {moveItem: Function, ..}\n //... see Builder\n\n }, _class;\n};\n\nvar _default = function _default(Builder) {\n var CanMoveFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var ConnectedSortableContainer = (0, _reactRedux.connect)(function (state) {\n return {\n dragging: state.dragging,\n dragStart: state.dragStart,\n mousePos: state.mousePos\n };\n }, {\n setDragStart: actions.drag.setDragStart,\n setDragProgress: actions.drag.setDragProgress,\n setDragEnd: actions.drag.setDragEnd\n }, null, {\n context: _context[\"default\"]\n })(createSortableContainer(Builder, CanMoveFn));\n ConnectedSortableContainer.displayName = \"ConnectedSortableContainer\";\n return ConnectedSortableContainer;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _get2 = _interopRequireDefault(require(\"@babel/runtime/helpers/get\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _GroupContainer = _interopRequireDefault(require(\"../containers/GroupContainer\"));\n\nvar _Draggable = _interopRequireDefault(require(\"../containers/Draggable\"));\n\nvar _Group = require(\"./Group\");\n\nvar _GroupActions = require(\"./GroupActions\");\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _utils = require(\"../utils\");\n\nvar _Widget = _interopRequireDefault(require(\"../rule/Widget\"));\n\nvar _dec, _class, _class2;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar classNames = require(\"classnames\");\n\nvar CaseGroup = (_dec = (0, _Draggable[\"default\"])(\"group case_group\"), (0, _GroupContainer[\"default\"])(_class = _dec(_class = (0, _utils.ConfirmFn)(_class = (_class2 = /*#__PURE__*/function (_BasicGroup) {\n (0, _inherits2[\"default\"])(CaseGroup, _BasicGroup);\n\n var _super = _createSuper(CaseGroup);\n\n function CaseGroup(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, CaseGroup);\n _this = _super.call(this, props);\n\n _this.childrenClassName = function () {\n return \"case_group--children\";\n };\n\n _this.renderFooterWrapper = function () {\n return null;\n };\n\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(CaseGroup, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {}\n }, {\n key: \"isDefaultCase\",\n value: function isDefaultCase() {\n return this.props.children1 == undefined;\n }\n }, {\n key: \"reordableNodesCnt\",\n value: function reordableNodesCnt() {\n // `parentReordableNodesCnt` is number of cases to reorder\n return this.props.parentReordableNodesCnt;\n }\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(_item) {\n // `reordableNodesCnt` is number of nodes is current case\n if (this.props.isLocked) return 0;\n return this.props.reordableNodesCnt;\n }\n }, {\n key: \"totalRulesCntForItem\",\n value: function totalRulesCntForItem(_item) {\n // `totalRulesCnt` is number of nodes is current case\n return this.props.totalRulesCnt;\n }\n }, {\n key: \"showDragIcon\",\n value: function showDragIcon() {\n // default impl of `showDragIcon()` uses `this.reordableNodesCnt()`\n if (this.isDefaultCase()) return false;\n return (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(CaseGroup.prototype), \"showDragIcon\", this).call(this);\n }\n }, {\n key: \"renderHeaderWrapper\",\n value: function renderHeaderWrapper() {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"group-header\",\n className: classNames(\"group--header\", this.isOneChild() ? \"one--child\" : \"\", this.showDragIcon() ? \"with--drag\" : \"hide--drag\", this.showConjs() && (!this.isOneChild() || this.showNot()) ? \"with--conjs\" : \"hide--conjs\")\n }, this.renderHeaderLeft(), this.renderHeaderCenter(), this.renderActions());\n }\n }, {\n key: \"renderChildrenWrapper\",\n value: function renderChildrenWrapper() {\n if (this.isDefaultCase()) return null; // body has 2 columns: condition & value\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"case_group--body\"\n }, this.renderCondition(), this.renderValue());\n }\n }, {\n key: \"renderHeaderLeft\",\n value: function renderHeaderLeft() {\n if (this.isDefaultCase()) {\n var defaultCaseLabel = this.props.config.settings.defaultCaseLabel;\n return defaultCaseLabel || \"\";\n } // default impl:\n\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group--conjunctions\"\n }, this.renderConjs(), this.renderDrag());\n }\n }, {\n key: \"renderCondition\",\n value: function renderCondition() {\n if (this.isDefaultCase()) return null;\n return (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(CaseGroup.prototype), \"renderChildrenWrapper\", this).call(this);\n }\n }, {\n key: \"renderHeaderCenter\",\n value: function renderHeaderCenter() {\n if (this.isDefaultCase()) return this.renderValue();else return null;\n }\n }, {\n key: \"canAddGroup\",\n value: function canAddGroup() {\n if (this.isDefaultCase()) return false;\n return (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(CaseGroup.prototype), \"canAddGroup\", this).call(this);\n }\n }, {\n key: \"canAddRule\",\n value: function canAddRule() {\n if (this.isDefaultCase()) return false;\n return (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(CaseGroup.prototype), \"canAddRule\", this).call(this);\n }\n }, {\n key: \"renderValue\",\n value: function renderValue() {\n var _this$props = this.props,\n config = _this$props.config,\n isLocked = _this$props.isLocked,\n value = _this$props.value,\n setValue = _this$props.setValue,\n id = _this$props.id;\n var immutableValuesMode = config.settings.immutableValuesMode;\n\n var widget = /*#__PURE__*/_react[\"default\"].createElement(_Widget[\"default\"], {\n key: \"values\",\n isCaseValue: true,\n field: \"!case_value\",\n operator: null,\n value: value,\n valueSrc: \"value\",\n valueError: null,\n config: config,\n setValue: !immutableValuesMode ? setValue : _utils.dummyFn,\n setValueSrc: _utils.dummyFn,\n readonly: immutableValuesMode || isLocked,\n id: id,\n groupId: null\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n className: \"case_group--value\"\n }, widget);\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props2 = this.props,\n config = _this$props2.config,\n addGroup = _this$props2.addGroup,\n addRule = _this$props2.addRule,\n isLocked = _this$props2.isLocked,\n isTrueLocked = _this$props2.isTrueLocked,\n id = _this$props2.id;\n return /*#__PURE__*/_react[\"default\"].createElement(_GroupActions.GroupActions, {\n config: config,\n addGroup: addGroup,\n addRule: addRule,\n canAddRule: this.canAddRule(),\n canAddGroup: this.canAddGroup(),\n canDeleteGroup: this.canDeleteGroup(),\n removeSelf: this.removeSelf,\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }, {\n key: \"isEmptyCurrentGroup\",\n value: function isEmptyCurrentGroup() {\n // used to confirm self-deletion\n var value = this.props.value;\n var oneValue = value && value.size ? value.get(0) : null;\n var hasValue = oneValue != null && (Array.isArray(oneValue) ? oneValue.length > 0 : true);\n return (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(CaseGroup.prototype), \"isEmptyCurrentGroup\", this).call(this) && !hasValue;\n }\n }]);\n return CaseGroup;\n}(_Group.BasicGroup), _class2.propTypes = _objectSpread(_objectSpread({}, _Group.BasicGroup.propTypes), {}, {\n parentReordableNodesCnt: _propTypes[\"default\"].number,\n value: _propTypes[\"default\"].any,\n setValue: _propTypes[\"default\"].func\n}), _class2)) || _class) || _class) || _class);\nvar _default = CaseGroup;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.BasicGroup = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _startsWith = _interopRequireDefault(require(\"lodash/startsWith\"));\n\nvar _GroupContainer = _interopRequireDefault(require(\"../containers/GroupContainer\"));\n\nvar _Draggable = _interopRequireDefault(require(\"../containers/Draggable\"));\n\nvar _Item = require(\"./Item\");\n\nvar _GroupActions = require(\"./GroupActions\");\n\nvar _utils = require(\"../utils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar classNames = require(\"classnames\");\n\nvar defaultPosition = \"topRight\";\n\nvar BasicGroup = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(BasicGroup, _PureComponent);\n\n var _super = _createSuper(BasicGroup);\n\n function BasicGroup(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, BasicGroup);\n _this = _super.call(this, props);\n\n _this.childrenClassName = function () {\n return \"\";\n };\n\n _this.renderBeforeActions = function () {\n var BeforeActions = _this.props.config.settings.renderBeforeActions;\n if (BeforeActions == undefined) return null;\n return typeof BeforeActions === \"function\" ? /*#__PURE__*/_react[\"default\"].createElement(BeforeActions, _this.props) : BeforeActions;\n };\n\n _this.renderAfterActions = function () {\n var AfterActions = _this.props.config.settings.renderAfterActions;\n if (AfterActions == undefined) return null;\n return typeof AfterActions === \"function\" ? /*#__PURE__*/_react[\"default\"].createElement(AfterActions, _this.props) : AfterActions;\n };\n\n _this.removeSelf = _this.removeSelf.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.setLock = _this.setLock.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.renderItem = _this.renderItem.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(BasicGroup, [{\n key: \"isGroupTopPosition\",\n value: function isGroupTopPosition() {\n return (0, _startsWith[\"default\"])(this.props.config.settings.groupActionsPosition || defaultPosition, \"top\");\n }\n }, {\n key: \"setLock\",\n value: function setLock(lock) {\n this.props.setLock(lock);\n }\n }, {\n key: \"removeSelf\",\n value: function removeSelf() {\n var _this2 = this;\n\n var confirmFn = this.props.confirmFn;\n var _this$props$config$se = this.props.config.settings,\n renderConfirm = _this$props$config$se.renderConfirm,\n confirmOptions = _this$props$config$se.removeGroupConfirmOptions;\n\n var doRemove = function doRemove() {\n _this2.props.removeSelf();\n };\n\n if (confirmOptions && !this.isEmptyCurrentGroup()) {\n renderConfirm(_objectSpread(_objectSpread({}, confirmOptions), {}, {\n onOk: doRemove,\n onCancel: null,\n confirmFn: confirmFn\n }));\n } else {\n doRemove();\n }\n }\n }, {\n key: \"isEmptyCurrentGroup\",\n value: function isEmptyCurrentGroup() {\n var children = this.props.children1;\n return !children || children.size == 0 || children.size == 1 && this.isEmpty(children.first());\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty(item) {\n var isGroup = item.get(\"type\") == \"group\" || item.get(\"type\") == \"rule_group\";\n return isGroup ? this.isEmptyGroup(item) : this.isEmptyRule(item);\n }\n }, {\n key: \"isEmptyGroup\",\n value: function isEmptyGroup(group) {\n var children = group.get(\"children1\");\n return !children || children.size == 0 || children.size == 1 && this.isEmpty(children.first());\n }\n }, {\n key: \"isEmptyRule\",\n value: function isEmptyRule(rule) {\n var properties = rule.get(\"properties\");\n return !(properties.get(\"field\") !== null && properties.get(\"operator\") !== null && properties.get(\"value\").filter(function (val) {\n return val !== undefined;\n }).size > 0);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, this.renderHeaderWrapper(), this.renderChildrenWrapper(), this.renderFooterWrapper());\n }\n }, {\n key: \"showNot\",\n value: function showNot() {\n var config = this.props.config;\n return config.settings.showNot;\n } // show conjs for 2+ children?\n\n }, {\n key: \"showConjs\",\n value: function showConjs() {\n var _this$props = this.props,\n conjunctionOptions = _this$props.conjunctionOptions,\n children1 = _this$props.children1,\n config = _this$props.config;\n var conjunctionCount = Object.keys(conjunctionOptions).length;\n return conjunctionCount > 1 || this.showNot();\n }\n }, {\n key: \"isOneChild\",\n value: function isOneChild() {\n var children1 = this.props.children1;\n return children1 ? children1.size < 2 : true;\n }\n }, {\n key: \"renderChildrenWrapper\",\n value: function renderChildrenWrapper() {\n var children1 = this.props.children1;\n return children1 && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"group-children\",\n className: classNames(\"group--children\", !this.showConjs() ? \"hide--conjs\" : \"\", this.isOneChild() ? \"hide--line\" : \"\", this.isOneChild() ? \"one--child\" : \"\", this.childrenClassName())\n }, this.renderChildren());\n }\n }, {\n key: \"renderHeaderWrapper\",\n value: function renderHeaderWrapper() {\n var isGroupTopPosition = this.isGroupTopPosition();\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"group-header\",\n className: classNames(\"group--header\", this.isOneChild() ? \"one--child\" : \"\")\n }, this.renderHeader(), isGroupTopPosition && this.renderBeforeActions(), isGroupTopPosition && this.renderActions(), isGroupTopPosition && this.renderAfterActions());\n }\n }, {\n key: \"renderFooterWrapper\",\n value: function renderFooterWrapper() {\n var isGroupTopPosition = this.isGroupTopPosition();\n return !isGroupTopPosition && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"group-footer\",\n className: \"group--footer\"\n }, this.renderBeforeActions(), this.renderActions(), this.renderAfterActions());\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props2 = this.props,\n config = _this$props2.config,\n addRule = _this$props2.addRule,\n addGroup = _this$props2.addGroup,\n isLocked = _this$props2.isLocked,\n isTrueLocked = _this$props2.isTrueLocked,\n id = _this$props2.id;\n return /*#__PURE__*/_react[\"default\"].createElement(_GroupActions.GroupActions, {\n config: config,\n addRule: addRule,\n addGroup: addGroup,\n canAddGroup: this.canAddGroup(),\n canAddRule: this.canAddRule(),\n canDeleteGroup: this.canDeleteGroup(),\n removeSelf: this.removeSelf,\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }, {\n key: \"canAddGroup\",\n value: function canAddGroup() {\n return this.props.allowFurtherNesting;\n }\n }, {\n key: \"canAddRule\",\n value: function canAddRule() {\n var maxNumberOfRules = this.props.config.settings.maxNumberOfRules;\n var totalRulesCnt = this.props.totalRulesCnt;\n\n if (maxNumberOfRules) {\n return totalRulesCnt < maxNumberOfRules;\n }\n\n return true;\n }\n }, {\n key: \"canDeleteGroup\",\n value: function canDeleteGroup() {\n return !this.props.isRoot;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var children1 = this.props.children1;\n return children1 ? children1.map(this.renderItem).toList() : null;\n }\n }, {\n key: \"renderItem\",\n value: function renderItem(item) {\n var props = this.props;\n var config = props.config,\n actions = props.actions,\n onDragStart = props.onDragStart,\n isLocked = props.isLocked;\n var isRuleGroup = item.get(\"type\") == \"group\" && item.getIn([\"properties\", \"field\"]) != null;\n var type = isRuleGroup ? \"rule_group\" : item.get(\"type\");\n return /*#__PURE__*/_react[\"default\"].createElement(_Item.Item, (0, _extends2[\"default\"])({}, this.extraPropsForItem(item), {\n key: item.get(\"id\"),\n id: item.get(\"id\"),\n groupId: props.id //path={props.path.push(item.get('id'))}\n ,\n path: item.get(\"path\"),\n type: type,\n properties: item.get(\"properties\"),\n config: config,\n actions: actions,\n children1: item.get(\"children1\") //tree={props.tree}\n ,\n reordableNodesCnt: this.reordableNodesCntForItem(item),\n totalRulesCnt: this.totalRulesCntForItem(item),\n parentReordableNodesCnt: this.reordableNodesCnt(),\n onDragStart: onDragStart,\n isDraggingTempo: this.props.isDraggingTempo,\n isParentLocked: isLocked\n }));\n }\n }, {\n key: \"extraPropsForItem\",\n value: function extraPropsForItem(_item) {\n return {};\n }\n }, {\n key: \"reordableNodesCnt\",\n value: function reordableNodesCnt() {\n if (this.props.isLocked) return 0;\n return this.props.reordableNodesCnt;\n }\n }, {\n key: \"totalRulesCntForItem\",\n value: function totalRulesCntForItem(_item) {\n return this.props.totalRulesCnt;\n }\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(_item) {\n if (this.props.isLocked) return 0;\n return this.reordableNodesCnt();\n }\n }, {\n key: \"showDragIcon\",\n value: function showDragIcon() {\n var _this$props3 = this.props,\n config = _this$props3.config,\n isRoot = _this$props3.isRoot,\n isLocked = _this$props3.isLocked;\n var reordableNodesCnt = this.reordableNodesCnt();\n return config.settings.canReorder && !isRoot && reordableNodesCnt > 1 && !isLocked;\n }\n }, {\n key: \"renderDrag\",\n value: function renderDrag() {\n var handleDraggerMouseDown = this.props.handleDraggerMouseDown;\n\n var drag = this.showDragIcon() && /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n key: \"group-drag-icon\",\n className: \"qb-drag-handler group--drag-handler\",\n onMouseDown: handleDraggerMouseDown\n }, /*#__PURE__*/_react[\"default\"].createElement(_utils.DragIcon, null), \" \");\n\n return drag;\n }\n }, {\n key: \"conjunctionOptions\",\n value: function conjunctionOptions() {\n var conjunctionOptions = this.props.conjunctionOptions;\n return conjunctionOptions;\n }\n }, {\n key: \"renderConjs\",\n value: function renderConjs() {\n var _this$props4 = this.props,\n config = _this$props4.config,\n children1 = _this$props4.children1,\n id = _this$props4.id,\n selectedConjunction = _this$props4.selectedConjunction,\n setConjunction = _this$props4.setConjunction,\n not = _this$props4.not,\n setNot = _this$props4.setNot,\n isLocked = _this$props4.isLocked;\n var _config$settings = config.settings,\n immutableGroupsMode = _config$settings.immutableGroupsMode,\n Conjs = _config$settings.renderConjs,\n _showNot = _config$settings.showNot,\n notLabel = _config$settings.notLabel;\n var conjunctionOptions = this.conjunctionOptions();\n if (!this.showConjs()) return null;\n if (!children1 || !children1.size) return null;\n var renderProps = {\n disabled: this.isOneChild(),\n readonly: immutableGroupsMode || isLocked,\n selectedConjunction: selectedConjunction,\n setConjunction: immutableGroupsMode ? _utils.dummyFn : setConjunction,\n conjunctionOptions: conjunctionOptions,\n config: config,\n not: not || false,\n id: id,\n setNot: immutableGroupsMode ? _utils.dummyFn : setNot,\n notLabel: notLabel,\n showNot: this.showNot(),\n isLocked: isLocked\n };\n return /*#__PURE__*/_react[\"default\"].createElement(Conjs, renderProps);\n }\n }, {\n key: \"renderHeader\",\n value: function renderHeader() {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group--conjunctions\"\n }, this.renderConjs(), this.renderDrag());\n }\n }]);\n return BasicGroup;\n}(_react.PureComponent);\n\nexports.BasicGroup = BasicGroup;\nBasicGroup.propTypes = {\n //tree: PropTypes.instanceOf(Immutable.Map).isRequired,\n reordableNodesCnt: _propTypes[\"default\"].number,\n conjunctionOptions: _propTypes[\"default\"].object.isRequired,\n allowFurtherNesting: _propTypes[\"default\"].bool.isRequired,\n isRoot: _propTypes[\"default\"].bool.isRequired,\n not: _propTypes[\"default\"].bool,\n selectedConjunction: _propTypes[\"default\"].string,\n config: _propTypes[\"default\"].object.isRequired,\n id: _propTypes[\"default\"].string.isRequired,\n groupId: _propTypes[\"default\"].string,\n path: _propTypes[\"default\"].any,\n //instanceOf(Immutable.List)\n children1: _propTypes[\"default\"].any,\n //instanceOf(Immutable.OrderedMap)\n isDraggingMe: _propTypes[\"default\"].bool,\n isDraggingTempo: _propTypes[\"default\"].bool,\n isLocked: _propTypes[\"default\"].bool,\n isTrueLocked: _propTypes[\"default\"].bool,\n //actions\n handleDraggerMouseDown: _propTypes[\"default\"].func,\n onDragStart: _propTypes[\"default\"].func,\n addRule: _propTypes[\"default\"].func.isRequired,\n addGroup: _propTypes[\"default\"].func.isRequired,\n removeSelf: _propTypes[\"default\"].func.isRequired,\n setConjunction: _propTypes[\"default\"].func.isRequired,\n setNot: _propTypes[\"default\"].func.isRequired,\n setLock: _propTypes[\"default\"].func.isRequired,\n actions: _propTypes[\"default\"].object.isRequired\n};\n\nvar _default = (0, _GroupContainer[\"default\"])((0, _Draggable[\"default\"])(\"group\")((0, _utils.ConfirmFn)(BasicGroup)));\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GroupActions = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar groupActionsPositionList = {\n topLeft: \"group--actions--tl\",\n topCenter: \"group--actions--tc\",\n topRight: \"group--actions--tr\",\n bottomLeft: \"group--actions--bl\",\n bottomCenter: \"group--actions--bc\",\n bottomRight: \"group--actions--br\"\n};\nvar defaultPosition = \"topRight\";\n\nvar GroupActions = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(GroupActions, _PureComponent);\n\n var _super = _createSuper(GroupActions);\n\n function GroupActions() {\n (0, _classCallCheck2[\"default\"])(this, GroupActions);\n return _super.apply(this, arguments);\n }\n\n (0, _createClass2[\"default\"])(GroupActions, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n addRule = _this$props.addRule,\n addGroup = _this$props.addGroup,\n removeSelf = _this$props.removeSelf,\n setLock = _this$props.setLock,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id,\n canAddGroup = _this$props.canAddGroup,\n canAddRule = _this$props.canAddRule,\n canDeleteGroup = _this$props.canDeleteGroup;\n var _config$settings = config.settings,\n immutableGroupsMode = _config$settings.immutableGroupsMode,\n addRuleLabel = _config$settings.addRuleLabel,\n addGroupLabel = _config$settings.addGroupLabel,\n delGroupLabel = _config$settings.delGroupLabel,\n groupActionsPosition = _config$settings.groupActionsPosition,\n Btn = _config$settings.renderButton,\n Switch = _config$settings.renderSwitch,\n BtnGrp = _config$settings.renderButtonGroup,\n lockLabel = _config$settings.lockLabel,\n lockedLabel = _config$settings.lockedLabel,\n showLock = _config$settings.showLock,\n canDeleteLocked = _config$settings.canDeleteLocked;\n var position = groupActionsPositionList[groupActionsPosition || defaultPosition];\n\n var setLockSwitch = showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/_react[\"default\"].createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n config: config\n });\n\n var addRuleBtn = !immutableGroupsMode && canAddRule && !isLocked && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"addRule\",\n onClick: addRule,\n label: addRuleLabel,\n readonly: isLocked,\n config: config\n });\n\n var addGroupBtn = !immutableGroupsMode && canAddGroup && !isLocked && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"addGroup\",\n onClick: addGroup,\n label: addGroupLabel,\n readonly: isLocked,\n config: config\n });\n\n var delGroupBtn = !immutableGroupsMode && canDeleteGroup && (!isLocked || isLocked && canDeleteLocked) && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"delGroup\",\n onClick: removeSelf,\n label: delGroupLabel,\n config: config\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group--actions \".concat(position)\n }, /*#__PURE__*/_react[\"default\"].createElement(BtnGrp, {\n config: config\n }, setLockSwitch, addRuleBtn, addGroupBtn, delGroupBtn));\n }\n }]);\n return GroupActions;\n}(_react.PureComponent);\n\nexports.GroupActions = GroupActions;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Item = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Rule = _interopRequireDefault(require(\"./Rule\"));\n\nvar _Group = _interopRequireDefault(require(\"./Group\"));\n\nvar _RuleGroup = _interopRequireDefault(require(\"./RuleGroup\"));\n\nvar _RuleGroupExt = _interopRequireDefault(require(\"./RuleGroupExt\"));\n\nvar _SwitchGroup = _interopRequireDefault(require(\"./SwitchGroup\"));\n\nvar _CaseGroup = _interopRequireDefault(require(\"./CaseGroup\"));\n\nvar _excluded = [\"type\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar types = [\"rule\", \"group\", \"rule_group\", \"switch_group\", \"case_group\"];\n\nvar getProperties = function getProperties(props) {\n var properties = props.properties.toObject();\n\n var result = _objectSpread({}, properties);\n\n if (props.isParentLocked) {\n result.isLocked = true;\n }\n\n if (properties.isLocked) {\n result.isTrueLocked = true;\n }\n\n return result;\n};\n\nvar typeMap = {\n rule: function rule(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_Rule[\"default\"], (0, _extends2[\"default\"])({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n config: props.config,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n parentField: props.parentField,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n group: function group(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_Group[\"default\"], (0, _extends2[\"default\"])({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config //tree={props.tree}\n ,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: null,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n rule_group: function rule_group(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_RuleGroup[\"default\"], (0, _extends2[\"default\"])({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config //tree={props.tree}\n ,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: props.parentField,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n rule_group_ext: function rule_group_ext(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_RuleGroupExt[\"default\"], (0, _extends2[\"default\"])({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config //tree={props.tree}\n ,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: props.parentField,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n switch_group: function switch_group(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_SwitchGroup[\"default\"], (0, _extends2[\"default\"])({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config //tree={props.tree}\n ,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: null,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n case_group: function case_group(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_CaseGroup[\"default\"], (0, _extends2[\"default\"])({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config //tree={props.tree}\n ,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: null,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n }\n};\n\nvar Item = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(Item, _PureComponent);\n\n var _super = _createSuper(Item);\n\n function Item() {\n (0, _classCallCheck2[\"default\"])(this, Item);\n return _super.apply(this, arguments);\n }\n\n (0, _createClass2[\"default\"])(Item, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n type = _this$props.type,\n props = (0, _objectWithoutProperties2[\"default\"])(_this$props, _excluded);\n var mode = props.properties.get(\"mode\");\n var postfix = mode == \"array\" ? \"_ext\" : \"\";\n var renderItem = props.config.settings.renderItem;\n var Cmp = typeMap[type + postfix];\n\n if (renderItem) {\n return renderItem(_objectSpread(_objectSpread({}, props), {}, {\n type: type,\n itemComponent: Cmp\n }));\n }\n\n if (!Cmp) return null;\n return Cmp(props);\n }\n }]);\n return Item;\n}(_react.PureComponent);\n\nexports.Item = Item;\nItem.propTypes = {\n //tree: PropTypes.instanceOf(Immutable.Map).isRequired,\n config: _propTypes[\"default\"].object.isRequired,\n id: _propTypes[\"default\"].string.isRequired,\n groupId: _propTypes[\"default\"].string,\n type: _propTypes[\"default\"].oneOf(types).isRequired,\n path: _propTypes[\"default\"].any.isRequired,\n //instanceOf(Immutable.List)\n properties: _propTypes[\"default\"].any.isRequired,\n //instanceOf(Immutable.Map)\n children1: _propTypes[\"default\"].any,\n //instanceOf(Immutable.OrderedMap)\n actions: _propTypes[\"default\"].object.isRequired,\n reordableNodesCnt: _propTypes[\"default\"].number,\n onDragStart: _propTypes[\"default\"].func,\n parentField: _propTypes[\"default\"].string,\n //from RuleGroup\n isDraggingTempo: _propTypes[\"default\"].bool,\n isParentLocked: _propTypes[\"default\"].bool\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _RuleContainer = _interopRequireDefault(require(\"../containers/RuleContainer\"));\n\nvar _Draggable = _interopRequireDefault(require(\"../containers/Draggable\"));\n\nvar _OperatorWrapper = _interopRequireDefault(require(\"../rule/OperatorWrapper\"));\n\nvar _FieldWrapper = _interopRequireDefault(require(\"../rule/FieldWrapper\"));\n\nvar _Widget = _interopRequireDefault(require(\"../rule/Widget\"));\n\nvar _OperatorOptions = _interopRequireDefault(require(\"../rule/OperatorOptions\"));\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _ruleUtils = require(\"../../utils/ruleUtils\");\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _utils = require(\"../utils\");\n\nvar _dec, _class, _class2;\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar classNames = require(\"classnames\");\n\nvar Rule = (_dec = (0, _Draggable[\"default\"])(\"rule\"), (0, _RuleContainer[\"default\"])(_class = _dec(_class = (0, _utils.ConfirmFn)(_class = (_class2 = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(Rule, _PureComponent);\n\n var _super = _createSuper(Rule);\n\n function Rule(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Rule);\n _this = _super.call(this, props);\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n _this.removeSelf = _this.removeSelf.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.setLock = _this.setLock.bind((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Rule, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"selectedField\", \"selectedOperator\", \"config\", \"reordableNodesCnt\", \"isLocked\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref) {\n var selectedField = _ref.selectedField,\n selectedOperator = _ref.selectedOperator,\n config = _ref.config,\n reordableNodesCnt = _ref.reordableNodesCnt,\n isLocked = _ref.isLocked;\n var selectedFieldPartsLabels = (0, _ruleUtils.getFieldPathLabels)(selectedField, config);\n var selectedFieldConfig = (0, _configUtils.getFieldConfig)(config, selectedField);\n var isSelectedGroup = selectedFieldConfig && selectedFieldConfig.type == \"!struct\";\n var isFieldAndOpSelected = selectedField && selectedOperator && !isSelectedGroup;\n var selectedOperatorConfig = (0, _configUtils.getOperatorConfig)(config, selectedOperator, selectedField);\n var selectedOperatorHasOptions = selectedOperatorConfig && selectedOperatorConfig.options != null;\n var selectedFieldWidgetConfig = (0, _configUtils.getFieldWidgetConfig)(config, selectedField, selectedOperator) || {};\n var hideOperator = selectedFieldWidgetConfig.hideOperator;\n var showDragIcon = config.settings.canReorder && reordableNodesCnt > 1 && !isLocked;\n var showOperator = selectedField && !hideOperator;\n var showOperatorLabel = selectedField && hideOperator && selectedFieldWidgetConfig.operatorInlineLabel;\n var showWidget = isFieldAndOpSelected;\n var showOperatorOptions = isFieldAndOpSelected && selectedOperatorHasOptions;\n return {\n selectedFieldPartsLabels: selectedFieldPartsLabels,\n selectedFieldWidgetConfig: selectedFieldWidgetConfig,\n showDragIcon: showDragIcon,\n showOperator: showOperator,\n showOperatorLabel: showOperatorLabel,\n showWidget: showWidget,\n showOperatorOptions: showOperatorOptions\n };\n }\n }, {\n key: \"setLock\",\n value: function setLock(lock) {\n this.props.setLock(lock);\n }\n }, {\n key: \"removeSelf\",\n value: function removeSelf() {\n var _this2 = this;\n\n var confirmFn = this.props.confirmFn;\n var _this$props$config$se = this.props.config.settings,\n renderConfirm = _this$props$config$se.renderConfirm,\n confirmOptions = _this$props$config$se.removeRuleConfirmOptions;\n\n var doRemove = function doRemove() {\n _this2.props.removeSelf();\n };\n\n if (confirmOptions && !this.isEmptyCurrentRule()) {\n renderConfirm(_objectSpread(_objectSpread({}, confirmOptions), {}, {\n onOk: doRemove,\n onCancel: null,\n confirmFn: confirmFn\n }));\n } else {\n doRemove();\n }\n }\n }, {\n key: \"isEmptyCurrentRule\",\n value: function isEmptyCurrentRule() {\n return !(this.props.selectedField !== null && this.props.selectedOperator !== null && this.props.value.filter(function (val) {\n return val !== undefined;\n }).size > 0);\n }\n }, {\n key: \"renderField\",\n value: function renderField() {\n var _this$props = this.props,\n config = _this$props.config,\n isLocked = _this$props.isLocked;\n var immutableFieldsMode = config.settings.immutableFieldsMode;\n return /*#__PURE__*/_react[\"default\"].createElement(_FieldWrapper[\"default\"], {\n key: \"field\",\n classname: \"rule--field\",\n config: config,\n selectedField: this.props.selectedField,\n setField: !immutableFieldsMode ? this.props.setField : _utils.dummyFn,\n parentField: this.props.parentField,\n readonly: immutableFieldsMode || isLocked,\n id: this.props.id,\n groupId: this.props.groupId\n });\n }\n }, {\n key: \"renderOperator\",\n value: function renderOperator() {\n var _this$props2 = this.props,\n config = _this$props2.config,\n isLocked = _this$props2.isLocked;\n var _this$meta = this.meta,\n selectedFieldPartsLabels = _this$meta.selectedFieldPartsLabels,\n selectedFieldWidgetConfig = _this$meta.selectedFieldWidgetConfig,\n showOperator = _this$meta.showOperator,\n showOperatorLabel = _this$meta.showOperatorLabel;\n var immutableOpsMode = config.settings.immutableOpsMode;\n return /*#__PURE__*/_react[\"default\"].createElement(_OperatorWrapper[\"default\"], {\n key: \"operator\",\n config: config,\n selectedField: this.props.selectedField,\n selectedOperator: this.props.selectedOperator,\n setOperator: !immutableOpsMode ? this.props.setOperator : _utils.dummyFn,\n selectedFieldPartsLabels: selectedFieldPartsLabels,\n showOperator: showOperator,\n showOperatorLabel: showOperatorLabel,\n selectedFieldWidgetConfig: selectedFieldWidgetConfig,\n readonly: immutableOpsMode || isLocked,\n id: this.props.id,\n groupId: this.props.groupId\n });\n }\n }, {\n key: \"renderWidget\",\n value: function renderWidget() {\n var _this$props3 = this.props,\n config = _this$props3.config,\n valueError = _this$props3.valueError,\n isLocked = _this$props3.isLocked;\n var showWidget = this.meta.showWidget;\n var immutableValuesMode = config.settings.immutableValuesMode;\n if (!showWidget) return null;\n\n var widget = /*#__PURE__*/_react[\"default\"].createElement(_Widget[\"default\"], {\n key: \"values\",\n field: this.props.selectedField,\n parentField: this.props.parentField,\n operator: this.props.selectedOperator,\n value: this.props.value,\n valueSrc: this.props.valueSrc,\n asyncListValues: this.props.asyncListValues,\n valueError: valueError,\n config: config,\n setValue: !immutableValuesMode ? this.props.setValue : _utils.dummyFn,\n setValueSrc: !immutableValuesMode ? this.props.setValueSrc : _utils.dummyFn,\n readonly: immutableValuesMode || isLocked,\n id: this.props.id,\n groupId: this.props.groupId\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"widget-for-\" + this.props.selectedOperator,\n className: \"rule--value\"\n }, widget);\n }\n }, {\n key: \"renderOperatorOptions\",\n value: function renderOperatorOptions() {\n var config = this.props.config;\n var showOperatorOptions = this.meta.showOperatorOptions;\n var _config$settings = config.settings,\n immutableOpsMode = _config$settings.immutableOpsMode,\n immutableValuesMode = _config$settings.immutableValuesMode;\n if (!showOperatorOptions) return null;\n\n var opOpts = /*#__PURE__*/_react[\"default\"].createElement(_OperatorOptions[\"default\"], {\n key: \"operatorOptions\",\n selectedField: this.props.selectedField,\n selectedOperator: this.props.selectedOperator,\n operatorOptions: this.props.operatorOptions,\n setOperatorOption: !immutableOpsMode ? this.props.setOperatorOption : _utils.dummyFn,\n config: config,\n readonly: immutableValuesMode\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"op-options-for-\" + this.props.selectedOperator,\n className: \"rule--operator-options\"\n }, opOpts);\n }\n }, {\n key: \"renderBeforeWidget\",\n value: function renderBeforeWidget() {\n var config = this.props.config;\n var renderBeforeWidget = config.settings.renderBeforeWidget;\n return renderBeforeWidget && /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"before-widget-for-\" + this.props.selectedOperator,\n className: \"rule--before-widget\"\n }, typeof renderBeforeWidget === \"function\" ? renderBeforeWidget(this.props) : renderBeforeWidget);\n }\n }, {\n key: \"renderAfterWidget\",\n value: function renderAfterWidget() {\n var config = this.props.config;\n var renderAfterWidget = config.settings.renderAfterWidget;\n return renderAfterWidget && /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"after-widget-for-\" + this.props.selectedOperator,\n className: \"rule--after-widget\"\n }, typeof renderAfterWidget === \"function\" ? renderAfterWidget(this.props) : renderAfterWidget);\n }\n }, {\n key: \"renderError\",\n value: function renderError() {\n var _this$props4 = this.props,\n config = _this$props4.config,\n valueError = _this$props4.valueError;\n var _config$settings2 = config.settings,\n renderRuleError = _config$settings2.renderRuleError,\n showErrorMessage = _config$settings2.showErrorMessage;\n var oneValueError = valueError && valueError.toArray().filter(function (e) {\n return !!e;\n }).shift() || null;\n return showErrorMessage && oneValueError && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"rule--error\"\n }, renderRuleError ? renderRuleError({\n error: oneValueError\n }) : oneValueError);\n }\n }, {\n key: \"renderDrag\",\n value: function renderDrag() {\n var showDragIcon = this.meta.showDragIcon;\n return showDragIcon && /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n key: \"rule-drag-icon\",\n className: \"qb-drag-handler rule--drag-handler\",\n onMouseDown: this.props.handleDraggerMouseDown\n }, /*#__PURE__*/_react[\"default\"].createElement(_utils.DragIcon, null), \" \");\n }\n }, {\n key: \"renderDel\",\n value: function renderDel() {\n var _this$props5 = this.props,\n config = _this$props5.config,\n isLocked = _this$props5.isLocked;\n var _config$settings3 = config.settings,\n deleteLabel = _config$settings3.deleteLabel,\n immutableGroupsMode = _config$settings3.immutableGroupsMode,\n Btn = _config$settings3.renderButton,\n canDeleteLocked = _config$settings3.canDeleteLocked;\n return !immutableGroupsMode && (!isLocked || isLocked && canDeleteLocked) && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"delRule\",\n onClick: this.removeSelf,\n label: deleteLabel,\n config: config\n });\n }\n }, {\n key: \"renderLock\",\n value: function renderLock() {\n var _this$props6 = this.props,\n config = _this$props6.config,\n isLocked = _this$props6.isLocked,\n isTrueLocked = _this$props6.isTrueLocked,\n id = _this$props6.id;\n var _config$settings4 = config.settings,\n lockLabel = _config$settings4.lockLabel,\n lockedLabel = _config$settings4.lockedLabel,\n showLock = _config$settings4.showLock,\n Switch = _config$settings4.renderSwitch;\n return showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/_react[\"default\"].createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: this.setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n hideLabel: true,\n config: config\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$meta2 = this.meta,\n showOperatorOptions = _this$meta2.showOperatorOptions,\n selectedFieldWidgetConfig = _this$meta2.selectedFieldWidgetConfig;\n var _this$props7 = this.props,\n valueSrc = _this$props7.valueSrc,\n value = _this$props7.value,\n config = _this$props7.config;\n var canShrinkValue = valueSrc.first() == \"value\" && !showOperatorOptions && value.size == 1 && selectedFieldWidgetConfig.fullWidth;\n var BtnGrp = config.settings.renderButtonGroup;\n var parts = [this.renderField(), this.renderOperator(), this.renderBeforeWidget(), this.renderWidget(), this.renderAfterWidget(), this.renderOperatorOptions()];\n\n var body = /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"rule-body\",\n className: classNames(\"rule--body\", canShrinkValue && \"can--shrink--value\")\n }, parts);\n\n var error = this.renderError();\n var drag = this.renderDrag();\n var lock = this.renderLock();\n var del = this.renderDel();\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, drag, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"rule--body--wrapper\"\n }, body, error), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"rule--header\"\n }, /*#__PURE__*/_react[\"default\"].createElement(BtnGrp, {\n config: config\n }, lock, del)));\n }\n }]);\n return Rule;\n}(_react.PureComponent), _class2.propTypes = {\n id: _propTypes[\"default\"].string.isRequired,\n groupId: _propTypes[\"default\"].string,\n selectedField: _propTypes[\"default\"].string,\n selectedOperator: _propTypes[\"default\"].string,\n operatorOptions: _propTypes[\"default\"].object,\n config: _propTypes[\"default\"].object.isRequired,\n value: _propTypes[\"default\"].any,\n //depends on widget\n valueSrc: _propTypes[\"default\"].any,\n asyncListValues: _propTypes[\"default\"].array,\n isDraggingMe: _propTypes[\"default\"].bool,\n isDraggingTempo: _propTypes[\"default\"].bool,\n parentField: _propTypes[\"default\"].string,\n //from RuleGroup\n valueError: _propTypes[\"default\"].any,\n isLocked: _propTypes[\"default\"].bool,\n isTrueLocked: _propTypes[\"default\"].bool,\n //path: PropTypes.instanceOf(Immutable.List),\n //actions\n handleDraggerMouseDown: _propTypes[\"default\"].func,\n setField: _propTypes[\"default\"].func,\n setOperator: _propTypes[\"default\"].func,\n setOperatorOption: _propTypes[\"default\"].func,\n setLock: _propTypes[\"default\"].func,\n removeSelf: _propTypes[\"default\"].func,\n setValue: _propTypes[\"default\"].func,\n setValueSrc: _propTypes[\"default\"].func,\n reordableNodesCnt: _propTypes[\"default\"].number\n}, _class2)) || _class) || _class) || _class);\nvar _default = Rule;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _get2 = _interopRequireDefault(require(\"@babel/runtime/helpers/get\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _GroupContainer = _interopRequireDefault(require(\"../containers/GroupContainer\"));\n\nvar _Draggable = _interopRequireDefault(require(\"../containers/Draggable\"));\n\nvar _Group = require(\"./Group\");\n\nvar _RuleGroupActions = require(\"./RuleGroupActions\");\n\nvar _FieldWrapper = _interopRequireDefault(require(\"../rule/FieldWrapper\"));\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _utils = require(\"../utils\");\n\nvar _dec, _class, _class2;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RuleGroup = (_dec = (0, _Draggable[\"default\"])(\"group rule_group\"), (0, _GroupContainer[\"default\"])(_class = _dec(_class = (0, _utils.ConfirmFn)(_class = (_class2 = /*#__PURE__*/function (_BasicGroup) {\n (0, _inherits2[\"default\"])(RuleGroup, _BasicGroup);\n\n var _super = _createSuper(RuleGroup);\n\n function RuleGroup(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, RuleGroup);\n _this = _super.call(this, props);\n\n _this.childrenClassName = function () {\n return \"rule_group--children\";\n };\n\n _this.renderHeaderWrapper = function () {\n return null;\n };\n\n _this.renderFooterWrapper = function () {\n return null;\n };\n\n _this.renderConjs = function () {\n return null;\n };\n\n _this.canAddGroup = function () {\n return false;\n };\n\n _this.canAddRule = function () {\n return true;\n };\n\n _this.canDeleteGroup = function () {\n return false;\n };\n\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(RuleGroup, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {}\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(_item) {\n if (this.props.isLocked) return 0;\n var children1 = this.props.children1;\n return children1.size;\n }\n }, {\n key: \"renderChildrenWrapper\",\n value: function renderChildrenWrapper() {\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, this.renderDrag(), this.renderField(), this.renderActions(), (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(RuleGroup.prototype), \"renderChildrenWrapper\", this).call(this));\n }\n }, {\n key: \"renderField\",\n value: function renderField() {\n var _this$props = this.props,\n config = _this$props.config,\n selectedField = _this$props.selectedField,\n setField = _this$props.setField,\n parentField = _this$props.parentField,\n id = _this$props.id,\n groupId = _this$props.groupId,\n isLocked = _this$props.isLocked;\n var immutableFieldsMode = config.settings.immutableFieldsMode;\n return /*#__PURE__*/_react[\"default\"].createElement(_FieldWrapper[\"default\"], {\n key: \"field\",\n classname: \"group--field\",\n config: config,\n selectedField: selectedField,\n setField: setField,\n parentField: parentField,\n readonly: immutableFieldsMode || isLocked,\n id: id,\n groupId: groupId\n });\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props2 = this.props,\n config = _this$props2.config,\n addRule = _this$props2.addRule,\n isLocked = _this$props2.isLocked,\n isTrueLocked = _this$props2.isTrueLocked,\n id = _this$props2.id;\n return /*#__PURE__*/_react[\"default\"].createElement(_RuleGroupActions.RuleGroupActions, {\n config: config,\n addRule: addRule,\n canAddRule: this.canAddRule(),\n canDeleteGroup: this.canDeleteGroup(),\n removeSelf: this.removeSelf,\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }, {\n key: \"extraPropsForItem\",\n value: function extraPropsForItem(_item) {\n return {\n parentField: this.props.selectedField\n };\n }\n }]);\n return RuleGroup;\n}(_Group.BasicGroup), _class2.propTypes = _objectSpread(_objectSpread({}, _Group.BasicGroup.propTypes), {}, {\n selectedField: _propTypes[\"default\"].string,\n parentField: _propTypes[\"default\"].string,\n setField: _propTypes[\"default\"].func\n}), _class2)) || _class) || _class) || _class);\nvar _default = RuleGroup;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RuleGroupActions = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RuleGroupActions = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(RuleGroupActions, _PureComponent);\n\n var _super = _createSuper(RuleGroupActions);\n\n function RuleGroupActions() {\n (0, _classCallCheck2[\"default\"])(this, RuleGroupActions);\n return _super.apply(this, arguments);\n }\n\n (0, _createClass2[\"default\"])(RuleGroupActions, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n addRule = _this$props.addRule,\n canAddRule = _this$props.canAddRule,\n canDeleteGroup = _this$props.canDeleteGroup,\n removeSelf = _this$props.removeSelf,\n setLock = _this$props.setLock,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id;\n var _config$settings = config.settings,\n immutableGroupsMode = _config$settings.immutableGroupsMode,\n addRuleLabel = _config$settings.addRuleLabel,\n delGroupLabel = _config$settings.delGroupLabel,\n Btn = _config$settings.renderButton,\n Switch = _config$settings.renderSwitch,\n BtnGrp = _config$settings.renderButtonGroup,\n lockLabel = _config$settings.lockLabel,\n lockedLabel = _config$settings.lockedLabel,\n showLock = _config$settings.showLock,\n canDeleteLocked = _config$settings.canDeleteLocked;\n\n var setLockSwitch = showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/_react[\"default\"].createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n hideLabel: true,\n config: config\n });\n\n var addRuleBtn = !immutableGroupsMode && canAddRule && !isLocked && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"addRuleGroup\",\n onClick: addRule,\n label: addRuleLabel,\n readonly: isLocked,\n config: config\n });\n\n var delGroupBtn = !immutableGroupsMode && canDeleteGroup && (!isLocked || isLocked && canDeleteLocked) && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"delRuleGroup\",\n onClick: removeSelf,\n label: delGroupLabel,\n config: config\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group--actions\"\n }, /*#__PURE__*/_react[\"default\"].createElement(BtnGrp, {\n config: config\n }, setLockSwitch, addRuleBtn, delGroupBtn));\n }\n }]);\n return RuleGroupActions;\n}(_react.PureComponent);\n\nexports.RuleGroupActions = RuleGroupActions;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _get2 = _interopRequireDefault(require(\"@babel/runtime/helpers/get\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _GroupContainer = _interopRequireDefault(require(\"../containers/GroupContainer\"));\n\nvar _Draggable = _interopRequireDefault(require(\"../containers/Draggable\"));\n\nvar _Group = require(\"./Group\");\n\nvar _RuleGroupExtActions = require(\"./RuleGroupExtActions\");\n\nvar _FieldWrapper = _interopRequireDefault(require(\"../rule/FieldWrapper\"));\n\nvar _OperatorWrapper = _interopRequireDefault(require(\"../rule/OperatorWrapper\"));\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _utils = require(\"../utils\");\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _Widget = _interopRequireDefault(require(\"../rule/Widget\"));\n\nvar _dec, _class, _class2;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar classNames = require(\"classnames\");\n\nvar RuleGroupExt = (_dec = (0, _Draggable[\"default\"])(\"group rule_group_ext\"), (0, _GroupContainer[\"default\"])(_class = _dec(_class = (0, _utils.ConfirmFn)(_class = (_class2 = /*#__PURE__*/function (_BasicGroup) {\n (0, _inherits2[\"default\"])(RuleGroupExt, _BasicGroup);\n\n var _super = _createSuper(RuleGroupExt);\n\n function RuleGroupExt(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, RuleGroupExt);\n _this = _super.call(this, props);\n\n _this.childrenClassName = function () {\n return \"rule_group_ext--children\";\n };\n\n _this.renderFooterWrapper = function () {\n return null;\n };\n\n _this.canAddGroup = function () {\n return false;\n };\n\n _this.canAddRule = function () {\n return true;\n };\n\n _this.canDeleteGroup = function () {\n return true;\n };\n\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(RuleGroupExt, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {}\n }, {\n key: \"renderHeaderWrapper\",\n value: function renderHeaderWrapper() {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"group-header\",\n className: classNames(\"group--header\", this.isOneChild() ? \"one--child\" : \"\", this.showDragIcon() ? \"with--drag\" : \"hide--drag\", this.showConjs() && (!this.isOneChild() || this.showNot()) ? \"with--conjs\" : \"hide--conjs\")\n }, this.renderHeader(), this.renderGroupField(), this.renderActions());\n }\n }, {\n key: \"renderHeader\",\n value: function renderHeader() {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group--conjunctions\"\n }, this.renderConjs(), this.renderDrag());\n }\n }, {\n key: \"renderGroupField\",\n value: function renderGroupField() {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group--field--count--rule\"\n }, this.renderField(), this.renderOperator(), this.renderWidget());\n }\n }, {\n key: \"showNot\",\n value: function showNot() {\n var _this$props = this.props,\n config = _this$props.config,\n selectedField = _this$props.selectedField,\n selectedOperator = _this$props.selectedOperator;\n var selectedFieldConfig = (0, _configUtils.getFieldConfig)(config, selectedField) || {};\n return selectedFieldConfig.showNot != undefined ? selectedFieldConfig.showNot : config.settings.showNot;\n }\n }, {\n key: \"conjunctionOptions\",\n value: function conjunctionOptions() {\n var _this$props2 = this.props,\n config = _this$props2.config,\n selectedField = _this$props2.selectedField,\n selectedOperator = _this$props2.selectedOperator;\n var selectedFieldConfig = (0, _configUtils.getFieldConfig)(config, selectedField) || {};\n var conjunctionOptions = (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(RuleGroupExt.prototype), \"conjunctionOptions\", this).call(this);\n\n if (selectedFieldConfig.conjunctions) {\n var filtered = {};\n\n var _iterator = _createForOfIteratorHelper(selectedFieldConfig.conjunctions),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var k = _step.value;\n filtered[k] = conjunctionOptions[k];\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n conjunctionOptions = filtered;\n }\n\n return conjunctionOptions;\n }\n }, {\n key: \"renderField\",\n value: function renderField() {\n var _this$props3 = this.props,\n config = _this$props3.config,\n selectedField = _this$props3.selectedField,\n setField = _this$props3.setField,\n parentField = _this$props3.parentField,\n id = _this$props3.id,\n groupId = _this$props3.groupId,\n isLocked = _this$props3.isLocked;\n var immutableFieldsMode = config.settings.immutableFieldsMode;\n return /*#__PURE__*/_react[\"default\"].createElement(_FieldWrapper[\"default\"], {\n key: \"field\",\n classname: \"rule--field\",\n config: config,\n selectedField: selectedField,\n setField: setField,\n parentField: parentField,\n readonly: immutableFieldsMode || isLocked,\n id: id,\n groupId: groupId\n });\n }\n }, {\n key: \"renderOperator\",\n value: function renderOperator() {\n var _this$props4 = this.props,\n config = _this$props4.config,\n selectedField = _this$props4.selectedField,\n selectedOperator = _this$props4.selectedOperator,\n setField = _this$props4.setField,\n setOperator = _this$props4.setOperator,\n isLocked = _this$props4.isLocked;\n var immutableFieldsMode = config.settings.immutableFieldsMode;\n var selectedFieldWidgetConfig = (0, _configUtils.getFieldWidgetConfig)(config, selectedField, selectedOperator) || {};\n var hideOperator = selectedFieldWidgetConfig.hideOperator;\n var showOperatorLabel = selectedField && hideOperator && selectedFieldWidgetConfig.operatorInlineLabel;\n var showOperator = selectedField && !hideOperator;\n return /*#__PURE__*/_react[\"default\"].createElement(_OperatorWrapper[\"default\"], {\n key: \"operator\",\n classname: \"group--operator\",\n config: config,\n selectedField: selectedField,\n selectedOperator: selectedOperator,\n setField: setField,\n setOperator: setOperator,\n selectedFieldPartsLabels: [\"group\"],\n showOperator: showOperator,\n showOperatorLabel: showOperatorLabel,\n selectedFieldWidgetConfig: selectedFieldWidgetConfig,\n readonly: immutableFieldsMode || isLocked,\n id: this.props.id,\n groupId: this.props.groupId\n });\n }\n }, {\n key: \"renderWidget\",\n value: function renderWidget() {\n var _this$props5 = this.props,\n config = _this$props5.config,\n selectedField = _this$props5.selectedField,\n selectedOperator = _this$props5.selectedOperator,\n isLocked = _this$props5.isLocked;\n var immutableValuesMode = config.settings.immutableValuesMode;\n var isFieldAndOpSelected = selectedField && selectedOperator;\n var showWidget = isFieldAndOpSelected;\n if (!showWidget) return null;\n\n var widget = /*#__PURE__*/_react[\"default\"].createElement(_Widget[\"default\"], {\n key: \"values\",\n isForRuleGruop: true,\n field: this.props.selectedField,\n operator: this.props.selectedOperator,\n value: this.props.value,\n valueSrc: \"value\",\n valueError: null,\n config: config,\n setValue: !immutableValuesMode ? this.props.setValue : _utils.dummyFn,\n setValueSrc: _utils.dummyFn,\n readonly: immutableValuesMode || isLocked,\n id: this.props.id,\n groupId: this.props.groupId\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"widget-for-\" + this.props.selectedOperator,\n className: \"rule--value\"\n }, widget);\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props6 = this.props,\n config = _this$props6.config,\n addRule = _this$props6.addRule,\n isLocked = _this$props6.isLocked,\n isTrueLocked = _this$props6.isTrueLocked,\n id = _this$props6.id;\n return /*#__PURE__*/_react[\"default\"].createElement(_RuleGroupExtActions.RuleGroupExtActions, {\n config: config,\n addRule: addRule,\n canAddRule: this.canAddRule(),\n canDeleteGroup: this.canDeleteGroup(),\n removeSelf: this.removeSelf,\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(_item) {\n if (this.props.isLocked) return 0;\n var children1 = this.props.children1;\n return children1.size;\n }\n }, {\n key: \"extraPropsForItem\",\n value: function extraPropsForItem(_item) {\n return {\n parentField: this.props.selectedField\n };\n }\n }]);\n return RuleGroupExt;\n}(_Group.BasicGroup), _class2.propTypes = _objectSpread(_objectSpread({}, _Group.BasicGroup.propTypes), {}, {\n selectedField: _propTypes[\"default\"].string,\n selectedOperator: _propTypes[\"default\"].string,\n value: _propTypes[\"default\"].any,\n parentField: _propTypes[\"default\"].string,\n setField: _propTypes[\"default\"].func,\n setOperator: _propTypes[\"default\"].func,\n setValue: _propTypes[\"default\"].func\n}), _class2)) || _class) || _class) || _class);\nvar _default = RuleGroupExt;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RuleGroupExtActions = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RuleGroupExtActions = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(RuleGroupExtActions, _PureComponent);\n\n var _super = _createSuper(RuleGroupExtActions);\n\n function RuleGroupExtActions() {\n (0, _classCallCheck2[\"default\"])(this, RuleGroupExtActions);\n return _super.apply(this, arguments);\n }\n\n (0, _createClass2[\"default\"])(RuleGroupExtActions, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n addRule = _this$props.addRule,\n canAddRule = _this$props.canAddRule,\n canDeleteGroup = _this$props.canDeleteGroup,\n removeSelf = _this$props.removeSelf,\n setLock = _this$props.setLock,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id;\n var _config$settings = config.settings,\n immutableGroupsMode = _config$settings.immutableGroupsMode,\n addSubRuleLabel = _config$settings.addSubRuleLabel,\n delGroupLabel = _config$settings.delGroupLabel,\n Btn = _config$settings.renderButton,\n Switch = _config$settings.renderSwitch,\n BtnGrp = _config$settings.renderButtonGroup,\n lockLabel = _config$settings.lockLabel,\n lockedLabel = _config$settings.lockedLabel,\n showLock = _config$settings.showLock,\n canDeleteLocked = _config$settings.canDeleteLocked;\n\n var setLockSwitch = showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/_react[\"default\"].createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n config: config\n });\n\n var addRuleBtn = !immutableGroupsMode && canAddRule && !isLocked && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"addRuleGroupExt\",\n onClick: addRule,\n label: addSubRuleLabel,\n readonly: isLocked,\n config: config\n });\n\n var delGroupBtn = !immutableGroupsMode && canDeleteGroup && (!isLocked || isLocked && canDeleteLocked) && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"delRuleGroup\",\n onClick: removeSelf,\n label: delGroupLabel,\n config: config\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group--actions group--actions--tr\"\n }, /*#__PURE__*/_react[\"default\"].createElement(BtnGrp, {\n config: config\n }, setLockSwitch, addRuleBtn, delGroupBtn));\n }\n }]);\n return RuleGroupExtActions;\n}(_react.PureComponent);\n\nexports.RuleGroupExtActions = RuleGroupExtActions;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _GroupContainer = _interopRequireDefault(require(\"../containers/GroupContainer\"));\n\nvar _Draggable = _interopRequireDefault(require(\"../containers/Draggable\"));\n\nvar _Group = require(\"./Group\");\n\nvar _SwitchGroupActions = require(\"./SwitchGroupActions\");\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _utils = require(\"../utils\");\n\nvar _treeUtils = require(\"../../utils/treeUtils\");\n\nvar _dec, _class, _class2;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar classNames = require(\"classnames\");\n\nvar SwitchGroup = (_dec = (0, _Draggable[\"default\"])(\"group switch_group\"), (0, _GroupContainer[\"default\"])(_class = _dec(_class = (0, _utils.ConfirmFn)(_class = (_class2 = /*#__PURE__*/function (_BasicGroup) {\n (0, _inherits2[\"default\"])(SwitchGroup, _BasicGroup);\n\n var _super = _createSuper(SwitchGroup);\n\n function SwitchGroup(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, SwitchGroup);\n _this = _super.call(this, props);\n\n _this.childrenClassName = function () {\n return \"switch_group--children\";\n };\n\n _this.renderFooterWrapper = function () {\n return null;\n };\n\n _this.hasDefaultCase = function () {\n return _this.props.children1.size && _this.props.children1.filter(function (c) {\n return c.get(\"children1\") == null;\n }).size > 0;\n };\n\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(SwitchGroup, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {}\n }, {\n key: \"canAddGroup\",\n value: function canAddGroup() {\n var maxNumberOfCases = this.props.config.settings.maxNumberOfCases;\n var totalCasesCnt = this.props.children1.size;\n\n if (maxNumberOfCases) {\n return totalCasesCnt < maxNumberOfCases;\n }\n\n return true;\n }\n }, {\n key: \"canAddRule\",\n value: function canAddRule() {\n return false;\n }\n }, {\n key: \"reordableNodesCnt\",\n value: function reordableNodesCnt() {\n // result will be passed to each case's `parentReordableNodesCnt` prop\n var totalCasesCnt = this.props.children1.size;\n var casesToReorder = totalCasesCnt;\n\n if (this.hasDefaultCase()) {\n casesToReorder--;\n }\n\n return casesToReorder;\n }\n }, {\n key: \"totalRulesCntForItem\",\n value: function totalRulesCntForItem(item) {\n return (0, _treeUtils.getTotalRulesCountInTree)(item);\n }\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(item) {\n if (this.props.isLocked) return 0;\n var _this$props$config$se = this.props.config.settings,\n canLeaveEmptyCase = _this$props$config$se.canLeaveEmptyCase,\n canRegroupCases = _this$props$config$se.canRegroupCases;\n var totalCasesCnt = this.props.children1.size;\n var casesToReorder = totalCasesCnt;\n\n if (this.hasDefaultCase()) {\n casesToReorder--;\n }\n\n var nodesInCase = (0, _treeUtils.getTotalReordableNodesCountInTree)(item);\n var cnt = nodesInCase;\n if (cnt == 1 && canRegroupCases && canLeaveEmptyCase && casesToReorder > 1) cnt = 111;\n return cnt;\n }\n }, {\n key: \"renderHeaderWrapper\",\n value: function renderHeaderWrapper() {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"group-header\",\n className: classNames(\"group--header\", this.isOneChild() ? \"one--child\" : \"\", this.showDragIcon() ? \"with--drag\" : \"hide--drag\", this.showConjs() && (!this.isOneChild() || this.showNot()) ? \"with--conjs\" : \"hide--conjs\")\n }, this.renderHeader(), this.renderActions());\n }\n }, {\n key: \"renderHeader\",\n value: function renderHeader() {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group--conjunctions\"\n }, this.renderConjs(), this.renderDrag());\n }\n }, {\n key: \"renderConjs\",\n value: function renderConjs() {\n var renderSwitchPrefix = this.props.config.settings.renderSwitchPrefix;\n return renderSwitchPrefix ? renderSwitchPrefix() : null;\n }\n }, {\n key: \"showNot\",\n value: function showNot() {\n return false;\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props = this.props,\n config = _this$props.config,\n addCaseGroup = _this$props.addCaseGroup,\n addDefaultCaseGroup = _this$props.addDefaultCaseGroup,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id;\n return /*#__PURE__*/_react[\"default\"].createElement(_SwitchGroupActions.SwitchGroupActions, {\n config: config,\n addCaseGroup: addCaseGroup,\n addDefaultCaseGroup: addDefaultCaseGroup,\n canAddDefault: !this.hasDefaultCase(),\n canAddGroup: this.canAddGroup(),\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }]);\n return SwitchGroup;\n}(_Group.BasicGroup), _class2.propTypes = _objectSpread({}, _Group.BasicGroup.propTypes), _class2)) || _class) || _class) || _class);\nvar _default = SwitchGroup;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SwitchGroupActions = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar groupActionsPositionList = {\n topLeft: \"group--actions--tl\",\n topCenter: \"group--actions--tc\",\n topRight: \"group--actions--tr\",\n bottomLeft: \"group--actions--bl\",\n bottomCenter: \"group--actions--bc\",\n bottomRight: \"group--actions--br\"\n};\nvar defaultPosition = \"topRight\";\n\nvar SwitchGroupActions = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(SwitchGroupActions, _PureComponent);\n\n var _super = _createSuper(SwitchGroupActions);\n\n function SwitchGroupActions() {\n (0, _classCallCheck2[\"default\"])(this, SwitchGroupActions);\n return _super.apply(this, arguments);\n }\n\n (0, _createClass2[\"default\"])(SwitchGroupActions, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n addCaseGroup = _this$props.addCaseGroup,\n addDefaultCaseGroup = _this$props.addDefaultCaseGroup,\n setLock = _this$props.setLock,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id,\n canAddGroup = _this$props.canAddGroup,\n canAddDefault = _this$props.canAddDefault;\n var _config$settings = config.settings,\n immutableGroupsMode = _config$settings.immutableGroupsMode,\n addCaseLabel = _config$settings.addCaseLabel,\n addDefaultCaseLabel = _config$settings.addDefaultCaseLabel,\n groupActionsPosition = _config$settings.groupActionsPosition,\n Btn = _config$settings.renderButton,\n Switch = _config$settings.renderSwitch,\n BtnGrp = _config$settings.renderButtonGroup,\n lockLabel = _config$settings.lockLabel,\n lockedLabel = _config$settings.lockedLabel,\n showLock = _config$settings.showLock;\n var position = groupActionsPositionList[groupActionsPosition || defaultPosition];\n\n var setLockSwitch = showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/_react[\"default\"].createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n config: config\n });\n\n var addCaseGroupBtn = !immutableGroupsMode && canAddGroup && !isLocked && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"addCaseGroup\",\n onClick: addCaseGroup,\n label: addCaseLabel,\n readonly: isLocked,\n config: config\n });\n\n var addDefaultCaseGroupBtn = !immutableGroupsMode && canAddDefault && !isLocked && /*#__PURE__*/_react[\"default\"].createElement(Btn, {\n type: \"addDefaultCaseGroup\",\n onClick: addDefaultCaseGroup,\n label: addDefaultCaseLabel,\n readonly: isLocked,\n config: config\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"group--actions \".concat(position)\n }, /*#__PURE__*/_react[\"default\"].createElement(BtnGrp, {\n config: config\n }, setLockSwitch, addCaseGroupBtn, addDefaultCaseGroupBtn));\n }\n }]);\n return SwitchGroupActions;\n}(_react.PureComponent);\n\nexports.SwitchGroupActions = SwitchGroupActions;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _range = _interopRequireDefault(require(\"lodash/range\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar Proximity = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(Proximity, _PureComponent);\n\n var _super = _createSuper(Proximity);\n\n function Proximity() {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Proximity);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _this.handleChange = function (value) {\n _this.props.setOption(\"proximity\", parseInt(value));\n };\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Proximity, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n defaults = _this$props.defaults,\n options = _this$props.options,\n config = _this$props.config,\n optionLabel = _this$props.optionLabel,\n optionPlaceholder = _this$props.optionPlaceholder,\n customProps = _this$props.customProps,\n minProximity = _this$props.minProximity,\n maxProximity = _this$props.maxProximity,\n optionTextBefore = _this$props.optionTextBefore,\n readonly = _this$props.readonly;\n var settings = config.settings,\n widgets = config.widgets;\n var defaultProximity = defaults ? defaults.proximity : undefined;\n var showLabels = settings.showLabels;\n var selectedProximity = options.get(\"proximity\", defaultProximity);\n var proxValues = (0, _range[\"default\"])(minProximity, maxProximity + 1).map(function (item) {\n return {\n title: item,\n value: item\n };\n });\n var Select = widgets.select.factory;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"operator--PROXIMITY\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"operator--options\"\n }, showLabels && /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n className: \"rule--label\"\n }, optionLabel), !showLabels && optionTextBefore && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"operator--options--sep\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"span\", null, optionTextBefore)), /*#__PURE__*/_react[\"default\"].createElement(Select, (0, _extends2[\"default\"])({\n config: config,\n value: selectedProximity,\n listValues: proxValues,\n setValue: this.handleChange,\n readonly: readonly,\n placeholder: optionPlaceholder\n }, customProps))), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"operator--widgets\"\n }, this.props.children));\n }\n }]);\n return Proximity;\n}(_react.PureComponent);\n\nexports[\"default\"] = Proximity;\nProximity.propTypes = {\n config: _propTypes[\"default\"].object.isRequired,\n setOption: _propTypes[\"default\"].func.isRequired,\n options: _propTypes[\"default\"].any.isRequired,\n //instanceOf(Immutable.Map)\n minProximity: _propTypes[\"default\"].number,\n maxProximity: _propTypes[\"default\"].number,\n optionPlaceholder: _propTypes[\"default\"].string,\n optionTextBefore: _propTypes[\"default\"].string,\n optionLabel: _propTypes[\"default\"].string,\n customProps: _propTypes[\"default\"].object,\n readonly: _propTypes[\"default\"].bool //children\n\n};\nProximity.defaultProps = {\n customProps: {},\n minProximity: 2,\n maxProximity: 10,\n optionPlaceholder: \"Select words between\",\n optionLabel: \"Words between\",\n optionTextBefore: null\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ProximityOperator\", {\n enumerable: true,\n get: function get() {\n return _Proximity[\"default\"];\n }\n});\n\nvar _Proximity = _interopRequireDefault(require(\"./Proximity\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _ruleUtils = require(\"../../utils/ruleUtils\");\n\nvar _stuff = require(\"../../utils/stuff\");\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _last = _interopRequireDefault(require(\"lodash/last\"));\n\nvar _keys = _interopRequireDefault(require(\"lodash/keys\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar Field = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(Field, _PureComponent);\n\n var _super = _createSuper(Field);\n\n function Field(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Field);\n _this = _super.call(this, props);\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Field, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"selectedField\", \"config\", \"parentField\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref) {\n var selectedField = _ref.selectedField,\n config = _ref.config,\n parentField = _ref.parentField;\n var selectedKey = selectedField;\n var _config$settings = config.settings,\n maxLabelsLength = _config$settings.maxLabelsLength,\n fieldSeparatorDisplay = _config$settings.fieldSeparatorDisplay,\n fieldPlaceholder = _config$settings.fieldPlaceholder,\n fieldSeparator = _config$settings.fieldSeparator;\n var isFieldSelected = !!selectedField;\n var placeholder = !isFieldSelected ? (0, _stuff.truncateString)(fieldPlaceholder, maxLabelsLength) : null;\n var currField = isFieldSelected ? (0, _configUtils.getFieldConfig)(config, selectedKey) : null;\n var selectedOpts = currField || {};\n var selectedKeys = (0, _ruleUtils.getFieldPath)(selectedKey, config);\n var selectedPath = (0, _ruleUtils.getFieldPath)(selectedKey, config, true);\n var selectedLabel = this.getFieldLabel(currField, selectedKey, config);\n var partsLabels = (0, _ruleUtils.getFieldPathLabels)(selectedKey, config);\n var selectedFullLabel = partsLabels ? partsLabels.join(fieldSeparatorDisplay) : null;\n if (selectedFullLabel == selectedLabel || parentField) selectedFullLabel = null;\n var selectedAltLabel = selectedOpts.label2;\n var parentFieldPath = typeof parentField == \"string\" ? parentField.split(fieldSeparator) : parentField;\n var parentFieldConfig = parentField ? (0, _configUtils.getFieldConfig)(config, parentField) : null;\n var sourceFields = parentField ? parentFieldConfig && parentFieldConfig.subfields : config.fields;\n var items = this.buildOptions(parentFieldPath, config, sourceFields, parentFieldPath);\n return {\n placeholder: placeholder,\n items: items,\n parentField: parentField,\n selectedKey: selectedKey,\n selectedKeys: selectedKeys,\n selectedPath: selectedPath,\n selectedLabel: selectedLabel,\n selectedOpts: selectedOpts,\n selectedAltLabel: selectedAltLabel,\n selectedFullLabel: selectedFullLabel\n };\n }\n }, {\n key: \"getFieldLabel\",\n value: function getFieldLabel(fieldOpts, fieldKey, config) {\n if (!fieldKey) return null;\n var fieldSeparator = config.settings.fieldSeparator;\n var maxLabelsLength = config.settings.maxLabelsLength;\n var fieldParts = Array.isArray(fieldKey) ? fieldKey : fieldKey.split(fieldSeparator);\n var label = fieldOpts && fieldOpts.label || (0, _last[\"default\"])(fieldParts);\n label = (0, _stuff.truncateString)(label, maxLabelsLength);\n return label;\n }\n }, {\n key: \"buildOptions\",\n value: function buildOptions(parentFieldPath, config, fields) {\n var _this2 = this;\n\n var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var optGroupLabel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!fields) return null;\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n fieldSeparatorDisplay = _config$settings2.fieldSeparatorDisplay;\n var prefix = path ? path.join(fieldSeparator) + fieldSeparator : \"\";\n return (0, _keys[\"default\"])(fields).map(function (fieldKey) {\n var field = fields[fieldKey];\n\n var label = _this2.getFieldLabel(field, fieldKey, config);\n\n var partsLabels = (0, _ruleUtils.getFieldPathLabels)(prefix + fieldKey, config);\n var fullLabel = partsLabels.join(fieldSeparatorDisplay);\n if (fullLabel == label || parentFieldPath) fullLabel = null;\n var altLabel = field.label2;\n var tooltip = field.tooltip;\n var subpath = (path ? path : []).concat(fieldKey);\n var disabled = field.disabled;\n if (field.hideForSelect) return undefined;\n\n if (field.type == \"!struct\") {\n return {\n disabled: disabled,\n key: fieldKey,\n path: prefix + fieldKey,\n label: label,\n fullLabel: fullLabel,\n altLabel: altLabel,\n tooltip: tooltip,\n items: _this2.buildOptions(parentFieldPath, config, field.subfields, subpath, label)\n };\n } else {\n return {\n disabled: disabled,\n key: fieldKey,\n path: prefix + fieldKey,\n label: label,\n fullLabel: fullLabel,\n altLabel: altLabel,\n tooltip: tooltip,\n grouplabel: optGroupLabel\n };\n }\n }).filter(function (o) {\n return !!o;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n setField = _this$props.setField,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var renderField = config.settings.renderField;\n\n var renderProps = _objectSpread({\n id: id,\n groupId: groupId,\n config: config,\n customProps: customProps,\n readonly: readonly,\n setField: setField\n }, this.meta);\n\n return renderField(renderProps);\n }\n }]);\n return Field;\n}(_react.PureComponent);\n\nexports[\"default\"] = Field;\nField.propTypes = {\n id: _propTypes[\"default\"].string,\n groupId: _propTypes[\"default\"].string,\n config: _propTypes[\"default\"].object.isRequired,\n selectedField: _propTypes[\"default\"].string,\n parentField: _propTypes[\"default\"].string,\n customProps: _propTypes[\"default\"].object,\n readonly: _propTypes[\"default\"].bool,\n //actions\n setField: _propTypes[\"default\"].func.isRequired\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _Field = _interopRequireDefault(require(\"./Field\"));\n\nvar _utils = require(\"../utils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FieldWrapper = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(FieldWrapper, _PureComponent);\n\n var _super = _createSuper(FieldWrapper);\n\n function FieldWrapper() {\n (0, _classCallCheck2[\"default\"])(this, FieldWrapper);\n return _super.apply(this, arguments);\n }\n\n (0, _createClass2[\"default\"])(FieldWrapper, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n selectedField = _this$props.selectedField,\n setField = _this$props.setField,\n parentField = _this$props.parentField,\n classname = _this$props.classname,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n className: classname\n }, config.settings.showLabels && /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n className: \"rule--label\"\n }, config.settings.fieldLabel), /*#__PURE__*/_react[\"default\"].createElement(_Field[\"default\"], {\n config: config,\n selectedField: selectedField,\n parentField: parentField,\n setField: setField,\n customProps: config.settings.customFieldSelectProps,\n readonly: readonly,\n id: id,\n groupId: groupId\n }));\n }\n }]);\n return FieldWrapper;\n}(_react.PureComponent);\n\nexports[\"default\"] = FieldWrapper;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _ruleUtils = require(\"../../utils/ruleUtils\");\n\nvar _stuff = require(\"../../utils/stuff\");\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _last = _interopRequireDefault(require(\"lodash/last\"));\n\nvar _keys = _interopRequireDefault(require(\"lodash/keys\"));\n\nvar _clone = _interopRequireDefault(require(\"clone\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n//tip: this.props.value - right value, this.props.field - left value\nvar FuncSelect = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(FuncSelect, _PureComponent);\n\n var _super = _createSuper(FuncSelect);\n\n function FuncSelect(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, FuncSelect);\n _this = _super.call(this, props);\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(FuncSelect, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForItems = [\"config\", \"field\", \"operator\", \"isFuncArg\"];\n var keysForMeta = [\"config\", \"field\", \"value\"];\n var needUpdateItems = !this.items || keysForItems.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n\n if (needUpdateItems) {\n this.items = this.getItems(nextProps);\n }\n }\n }, {\n key: \"getItems\",\n value: function getItems(_ref) {\n var config = _ref.config,\n field = _ref.field,\n operator = _ref.operator,\n parentFuncs = _ref.parentFuncs,\n fieldDefinition = _ref.fieldDefinition,\n isFuncArg = _ref.isFuncArg;\n var canUseFuncForField = config.settings.canUseFuncForField;\n var filteredFuncs = this.filterFuncs(config, config.funcs, field, operator, canUseFuncForField, parentFuncs, isFuncArg, fieldDefinition);\n var items = this.buildOptions(config, filteredFuncs);\n return items;\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref2) {\n var config = _ref2.config,\n field = _ref2.field,\n value = _ref2.value;\n var _config$settings = config.settings,\n funcPlaceholder = _config$settings.funcPlaceholder,\n fieldSeparatorDisplay = _config$settings.fieldSeparatorDisplay;\n var selectedFuncKey = value;\n var isFuncSelected = !!value;\n var leftFieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n var leftFieldWidgetField = leftFieldConfig.widgets.field;\n var leftFieldWidgetFieldProps = leftFieldWidgetField && leftFieldWidgetField.widgetProps || {};\n var placeholder = !isFuncSelected ? funcPlaceholder : null;\n var currFunc = isFuncSelected ? (0, _configUtils.getFuncConfig)(config, selectedFuncKey) : null;\n var selectedOpts = currFunc || {};\n var selectedKeys = (0, _ruleUtils.getFieldPath)(selectedFuncKey, config);\n var selectedPath = (0, _ruleUtils.getFieldPath)(selectedFuncKey, config, true);\n var selectedLabel = this.getFuncLabel(currFunc, selectedFuncKey, config);\n var partsLabels = (0, _ruleUtils.getFuncPathLabels)(selectedFuncKey, config);\n var selectedFullLabel = partsLabels ? partsLabels.join(fieldSeparatorDisplay) : null;\n if (selectedFullLabel == selectedLabel) selectedFullLabel = null;\n return {\n placeholder: placeholder,\n selectedKey: selectedFuncKey,\n selectedKeys: selectedKeys,\n selectedPath: selectedPath,\n selectedLabel: selectedLabel,\n selectedOpts: selectedOpts,\n selectedFullLabel: selectedFullLabel\n };\n }\n }, {\n key: \"filterFuncs\",\n value: function filterFuncs(config, funcs, leftFieldFullkey, operator, canUseFuncForField, parentFuncs, isFuncArg, fieldDefinition) {\n funcs = (0, _clone[\"default\"])(funcs);\n var fieldSeparator = config.settings.fieldSeparator;\n var leftFieldConfig = (0, _configUtils.getFieldConfig)(config, leftFieldFullkey);\n var expectedType;\n var targetDefinition = leftFieldConfig;\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, leftFieldFullkey, operator, \"value\");\n\n if (isFuncArg && fieldDefinition) {\n targetDefinition = fieldDefinition;\n expectedType = fieldDefinition.type;\n } else if (widget) {\n var widgetConfig = config.widgets[widget];\n var widgetType = widgetConfig.type; //expectedType = leftFieldConfig.type;\n\n expectedType = widgetType;\n } else {\n expectedType = leftFieldConfig.type;\n }\n\n function _filter(list, path) {\n for (var funcKey in list) {\n var subfields = list[funcKey].subfields;\n var subpath = (path ? path : []).concat(funcKey);\n var funcFullkey = subpath.join(fieldSeparator);\n var funcConfig = (0, _configUtils.getFuncConfig)(config, funcFullkey);\n\n if (funcConfig.type == \"!struct\") {\n if (_filter(subfields, subpath) == 0) delete list[funcKey];\n } else {\n var canUse = funcConfig.returnType == expectedType;\n if (targetDefinition.funcs) canUse = canUse && targetDefinition.funcs.includes(funcFullkey);\n if (canUseFuncForField) canUse = canUse && canUseFuncForField(leftFieldFullkey, leftFieldConfig, funcFullkey, funcConfig, operator); // don't use func in func (can be configurable, but usually users don't need this)\n\n if (!funcConfig.allowSelfNesting && parentFuncs && parentFuncs.map(function (_ref3) {\n var _ref4 = (0, _slicedToArray2[\"default\"])(_ref3, 2),\n func = _ref4[0],\n _arg = _ref4[1];\n\n return func;\n }).includes(funcFullkey)) canUse = false;\n if (!canUse) delete list[funcKey];\n }\n }\n\n return (0, _keys[\"default\"])(list).length;\n }\n\n _filter(funcs, []);\n\n return funcs;\n }\n }, {\n key: \"buildOptions\",\n value: function buildOptions(config, funcs) {\n var _this2 = this;\n\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var optGroupLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n if (!funcs) return null;\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n fieldSeparatorDisplay = _config$settings2.fieldSeparatorDisplay;\n var prefix = path ? path.join(fieldSeparator) + fieldSeparator : \"\";\n return (0, _keys[\"default\"])(funcs).map(function (funcKey) {\n var func = funcs[funcKey];\n\n var label = _this2.getFuncLabel(func, funcKey, config);\n\n var partsLabels = (0, _ruleUtils.getFuncPathLabels)(funcKey, config);\n var fullLabel = partsLabels.join(fieldSeparatorDisplay);\n if (fullLabel == label) fullLabel = null;\n var tooltip = func.tooltip;\n var subpath = (path ? path : []).concat(funcKey);\n\n if (func.type == \"!struct\") {\n return {\n key: funcKey,\n path: prefix + funcKey,\n label: label,\n fullLabel: fullLabel,\n tooltip: tooltip,\n items: _this2.buildOptions(config, func.subfields, subpath, label)\n };\n } else {\n return {\n key: funcKey,\n path: prefix + funcKey,\n label: label,\n fullLabel: fullLabel,\n tooltip: tooltip,\n grouplabel: optGroupLabel\n };\n }\n });\n }\n }, {\n key: \"getFuncLabel\",\n value: function getFuncLabel(funcOpts, funcKey, config) {\n if (!funcKey) return null;\n var fieldSeparator = config.settings.fieldSeparator;\n var maxLabelsLength = config.settings.maxLabelsLength;\n var funcParts = Array.isArray(funcKey) ? funcKey : funcKey.split(fieldSeparator);\n var label = funcOpts.label || (0, _last[\"default\"])(funcParts);\n label = (0, _stuff.truncateString)(label, maxLabelsLength);\n return label;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n setValue = _this$props.setValue,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var renderFunc = config.settings.renderFunc;\n\n var renderProps = _objectSpread({\n config: config,\n customProps: customProps,\n readonly: readonly,\n setField: setValue,\n items: this.items,\n id: id,\n groupId: groupId\n }, this.meta);\n\n return renderFunc(renderProps);\n }\n }]);\n return FuncSelect;\n}(_react.PureComponent);\n\nexports[\"default\"] = FuncSelect;\nFuncSelect.propTypes = {\n id: _propTypes[\"default\"].string,\n groupId: _propTypes[\"default\"].string,\n config: _propTypes[\"default\"].object.isRequired,\n field: _propTypes[\"default\"].string.isRequired,\n operator: _propTypes[\"default\"].string,\n customProps: _propTypes[\"default\"].object,\n value: _propTypes[\"default\"].string,\n setValue: _propTypes[\"default\"].func.isRequired,\n readonly: _propTypes[\"default\"].bool,\n parentFuncs: _propTypes[\"default\"].array,\n fieldDefinition: _propTypes[\"default\"].object,\n isFuncArg: _propTypes[\"default\"].bool\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _FuncSelect = _interopRequireDefault(require(\"./FuncSelect\"));\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _Widget = _interopRequireDefault(require(\"./Widget\"));\n\nvar _utils = require(\"../utils\");\n\nvar _funcUtils = require(\"../../utils/funcUtils\");\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FuncWidget = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(FuncWidget, _PureComponent);\n\n var _super = _createSuper(FuncWidget);\n\n function FuncWidget(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, FuncWidget);\n _this = _super.call(this, props);\n\n _this.setFunc = function (funcKey) {\n _this.props.setValue((0, _funcUtils.setFunc)(_this.props.value, funcKey, _this.props.config));\n };\n\n _this.setArgValue = function (argKey, argVal) {\n var config = _this.props.config;\n var funcDefinition = _this.meta.funcDefinition;\n var args = funcDefinition.args;\n var argDefinition = args[argKey];\n\n _this.props.setValue((0, _funcUtils.setArgValue)(_this.props.value, argKey, argVal, argDefinition, config));\n };\n\n _this.setArgValueSrc = function (argKey, argValSrc) {\n var config = _this.props.config;\n var funcDefinition = _this.meta.funcDefinition;\n var args = funcDefinition.args;\n var argDefinition = args[argKey];\n\n _this.props.setValue((0, _funcUtils.setArgValueSrc)(_this.props.value, argKey, argValSrc, argDefinition, config));\n };\n\n _this.renderFuncSelect = function () {\n var _this$props = _this.props,\n config = _this$props.config,\n field = _this$props.field,\n operator = _this$props.operator,\n customProps = _this$props.customProps,\n value = _this$props.value,\n readonly = _this$props.readonly,\n parentFuncs = _this$props.parentFuncs,\n id = _this$props.id,\n groupId = _this$props.groupId,\n isFuncArg = _this$props.isFuncArg,\n fieldDefinition = _this$props.fieldDefinition;\n var funcKey = value ? value.get(\"func\") : null;\n var selectProps = {\n value: funcKey,\n setValue: _this.setFunc,\n config: config,\n field: field,\n operator: operator,\n customProps: customProps,\n readonly: readonly,\n parentFuncs: parentFuncs,\n isFuncArg: isFuncArg,\n fieldDefinition: fieldDefinition,\n id: id,\n groupId: groupId\n };\n var _config$settings = config.settings,\n showLabels = _config$settings.showLabels,\n funcLabel = _config$settings.funcLabel;\n var widgetLabel = showLabels ? /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n className: \"rule--label\"\n }, funcLabel) : null;\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"func\",\n className: \"rule--func\"\n }, widgetLabel, /*#__PURE__*/_react[\"default\"].createElement(_FuncSelect[\"default\"], selectProps));\n };\n\n _this.renderArgLabel = function (argKey, argDefinition) {\n var valueSources = argDefinition.valueSources,\n type = argDefinition.type,\n showPrefix = argDefinition.showPrefix,\n label = argDefinition.label;\n var config = _this.props.config;\n var isConst = valueSources && valueSources.length == 1 && valueSources[0] == \"const\";\n var forceShow = !config.settings.showLabels && (type == \"boolean\" || isConst) && showPrefix;\n if (!forceShow) return null;\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n className: \"rule--func--arg-label\"\n }, label || argKey);\n };\n\n _this.renderArgLabelSep = function (argKey, argDefinition) {\n var valueSources = argDefinition.valueSources,\n type = argDefinition.type,\n showPrefix = argDefinition.showPrefix;\n var config = _this.props.config;\n var isConst = valueSources && valueSources.length == 1 && valueSources[0] == \"const\";\n var forceShow = !config.settings.showLabels && (type == \"boolean\" || isConst) && showPrefix;\n if (!forceShow) return null;\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n className: \"rule--func--arg-label-sep\"\n }, \":\");\n };\n\n _this.renderArgVal = function (funcKey, argKey, argDefinition) {\n var _this$props2 = _this.props,\n config = _this$props2.config,\n field = _this$props2.field,\n operator = _this$props2.operator,\n value = _this$props2.value,\n readonly = _this$props2.readonly,\n parentFuncs = _this$props2.parentFuncs,\n id = _this$props2.id,\n groupId = _this$props2.groupId;\n var arg = value ? value.getIn([\"args\", argKey]) : null;\n var argVal = arg ? arg.get(\"value\") : undefined;\n var defaultValueSource = argDefinition.valueSources.length == 1 ? argDefinition.valueSources[0] : undefined;\n var argValSrc = arg ? arg.get(\"valueSrc\") || defaultValueSource || \"value\" : defaultValueSource;\n var widgetProps = {\n config: config,\n fieldFunc: funcKey,\n fieldArg: argKey,\n leftField: field,\n operator: null,\n value: argVal,\n valueSrc: argValSrc,\n setValue: _this.setArgValue,\n setValueSrc: _this.setArgValueSrc,\n funcKey: funcKey,\n argKey: argKey,\n argDefinition: argDefinition,\n readonly: readonly,\n parentFuncs: parentFuncs,\n id: id,\n groupId: groupId\n }; //tip: value & valueSrc will be converted to Immutable.List at <Widget>\n\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n className: \"rule--func--arg-value\"\n }, /*#__PURE__*/_react[\"default\"].createElement(ArgWidget, widgetProps));\n };\n\n _this.renderArgSep = function (argKey, argDefinition, argIndex, _ref) {\n var renderSeps = _ref.renderSeps;\n if (!argIndex) return null;\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n className: \"rule--func--arg-sep\"\n }, renderSeps ? renderSeps[argIndex - 1] : \", \");\n };\n\n _this.renderBracketBefore = function (_ref2) {\n var renderBrackets = _ref2.renderBrackets;\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"before_args\",\n className: \"rule--func--bracket-before\"\n }, renderBrackets ? renderBrackets[0] : \"(\");\n };\n\n _this.renderBracketAfter = function (_ref3) {\n var renderBrackets = _ref3.renderBrackets;\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"after_args\",\n className: \"rule--func--bracket-after\"\n }, renderBrackets ? renderBrackets[1] : \")\");\n };\n\n _this.renderFuncArgs = function () {\n var _this$meta = _this.meta,\n funcDefinition = _this$meta.funcDefinition,\n funcKey = _this$meta.funcKey;\n if (!funcKey) return null;\n var args = funcDefinition.args;\n if (!args) return null;\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, _this.renderBracketBefore(funcDefinition), /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"args\",\n className: \"rule--func--args\"\n }, Object.keys(args).map(function (argKey, argIndex) {\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"arg-\".concat(argKey, \"-\").concat(argIndex),\n className: \"rule--func--arg\"\n }, _this.renderArgSep(argKey, args[argKey], argIndex, funcDefinition), _this.renderArgLabel(argKey, args[argKey]), _this.renderArgLabelSep(argKey, args[argKey]), _this.renderArgVal(funcKey, argKey, args[argKey]));\n })), _this.renderBracketAfter(funcDefinition));\n };\n\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(FuncWidget, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"config\", \"field\", \"operator\", \"value\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref4) {\n var config = _ref4.config,\n field = _ref4.field,\n operator = _ref4.operator,\n value = _ref4.value;\n var funcKey = value ? value.get(\"func\") : null;\n var funcDefinition = funcKey ? (0, _configUtils.getFuncConfig)(config, funcKey) : null;\n return {\n funcDefinition: funcDefinition,\n funcKey: funcKey\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n className: \"rule--func--wrapper\"\n }, this.renderFuncSelect(), this.renderFuncArgs());\n }\n }]);\n return FuncWidget;\n}(_react.PureComponent);\n\nexports[\"default\"] = FuncWidget;\nFuncWidget.propTypes = {\n id: _propTypes[\"default\"].string,\n groupId: _propTypes[\"default\"].string,\n config: _propTypes[\"default\"].object.isRequired,\n field: _propTypes[\"default\"].string.isRequired,\n operator: _propTypes[\"default\"].string,\n customProps: _propTypes[\"default\"].object,\n value: _propTypes[\"default\"].object,\n //instanceOf(Immutable.Map) //with keys 'func' and `args`\n setValue: _propTypes[\"default\"].func.isRequired,\n readonly: _propTypes[\"default\"].bool,\n parentFuncs: _propTypes[\"default\"].array,\n fieldDefinition: _propTypes[\"default\"].object,\n isFuncArg: _propTypes[\"default\"].bool\n};\n\nvar ArgWidget = /*#__PURE__*/function (_PureComponent2) {\n (0, _inherits2[\"default\"])(ArgWidget, _PureComponent2);\n\n var _super2 = _createSuper(ArgWidget);\n\n function ArgWidget() {\n var _this2;\n\n (0, _classCallCheck2[\"default\"])(this, ArgWidget);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n\n _this2.setValue = function (_delta, value, _widgetType) {\n var _this2$props = _this2.props,\n setValue = _this2$props.setValue,\n argKey = _this2$props.argKey;\n setValue(argKey, value);\n };\n\n _this2.setValueSrc = function (_delta, valueSrc, _widgetType) {\n var _this2$props2 = _this2.props,\n setValueSrc = _this2$props2.setValueSrc,\n argKey = _this2$props2.argKey;\n setValueSrc(argKey, valueSrc);\n };\n\n return _this2;\n }\n\n (0, _createClass2[\"default\"])(ArgWidget, [{\n key: \"render\",\n value: function render() {\n var _this$props3 = this.props,\n funcKey = _this$props3.funcKey,\n argKey = _this$props3.argKey,\n parentFuncs = _this$props3.parentFuncs;\n return /*#__PURE__*/_react[\"default\"].createElement(_Widget[\"default\"], (0, _extends2[\"default\"])({}, this.props, {\n setValue: this.setValue,\n setValueSrc: this.setValueSrc,\n isFuncArg: true,\n parentFuncs: [].concat((0, _toConsumableArray2[\"default\"])(parentFuncs || []), [[funcKey, argKey]])\n }));\n }\n }]);\n return ArgWidget;\n}(_react.PureComponent);\n\nArgWidget.propTypes = {\n funcKey: _propTypes[\"default\"].string.isRequired,\n argKey: _propTypes[\"default\"].string.isRequired,\n setValue: _propTypes[\"default\"].func.isRequired,\n setValueSrc: _propTypes[\"default\"].func.isRequired,\n readonly: _propTypes[\"default\"].bool,\n parentFuncs: _propTypes[\"default\"].array,\n id: _propTypes[\"default\"].string,\n groupId: _propTypes[\"default\"].string\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _keys = _interopRequireDefault(require(\"lodash/keys\"));\n\nvar _pickBy = _interopRequireDefault(require(\"lodash/pickBy\"));\n\nvar _mapValues = _interopRequireDefault(require(\"lodash/mapValues\"));\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar Operator = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(Operator, _PureComponent);\n\n var _super = _createSuper(Operator);\n\n function Operator(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Operator);\n _this = _super.call(this, props);\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Operator, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"config\", \"selectedField\", \"selectedOperator\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref) {\n var config = _ref.config,\n selectedField = _ref.selectedField,\n selectedOperator = _ref.selectedOperator;\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, selectedField);\n var operators = fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.operators;\n var operatorOptions = (0, _mapValues[\"default\"])((0, _pickBy[\"default\"])(config.operators, function (item, key) {\n return (operators === null || operators === void 0 ? void 0 : operators.indexOf(key)) !== -1;\n }), function (_opts, op) {\n return (0, _configUtils.getOperatorConfig)(config, op, selectedField);\n });\n var items = this.buildOptions(config, operatorOptions, operators);\n var isOpSelected = !!selectedOperator;\n var currOp = isOpSelected ? operatorOptions[selectedOperator] : null;\n var selectedOpts = currOp || {};\n var placeholder = this.props.config.settings.operatorPlaceholder;\n var selectedKey = selectedOperator;\n var selectedKeys = isOpSelected ? [selectedKey] : null;\n var selectedPath = selectedKeys;\n var selectedLabel = selectedOpts.label;\n return {\n placeholder: placeholder,\n items: items,\n selectedKey: selectedKey,\n selectedKeys: selectedKeys,\n selectedPath: selectedPath,\n selectedLabel: selectedLabel,\n selectedOpts: selectedOpts,\n fieldConfig: fieldConfig\n };\n }\n }, {\n key: \"buildOptions\",\n value: function buildOptions(config, fields, ops) {\n if (!fields || !ops) return null;\n return (0, _keys[\"default\"])(fields).sort(function (a, b) {\n return ops.indexOf(a) - ops.indexOf(b);\n }).map(function (fieldKey) {\n var field = fields[fieldKey];\n var label = field.label;\n return {\n key: fieldKey,\n path: fieldKey,\n label: label\n };\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n setOperator = _this$props.setOperator,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var renderOperator = config.settings.renderOperator;\n\n var renderProps = _objectSpread({\n id: id,\n groupId: groupId,\n config: config,\n customProps: customProps,\n readonly: readonly,\n setField: setOperator\n }, this.meta);\n\n if (!renderProps.items) return null;\n return renderOperator(renderProps);\n }\n }]);\n return Operator;\n}(_react.PureComponent);\n\nexports[\"default\"] = Operator;\nOperator.propTypes = {\n id: _propTypes[\"default\"].string,\n groupId: _propTypes[\"default\"].string,\n config: _propTypes[\"default\"].object.isRequired,\n selectedField: _propTypes[\"default\"].string,\n selectedOperator: _propTypes[\"default\"].string,\n readonly: _propTypes[\"default\"].bool,\n //actions\n setOperator: _propTypes[\"default\"].func.isRequired\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _excluded = [\"factory\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar OperatorOptions = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(OperatorOptions, _PureComponent);\n\n var _super = _createSuper(OperatorOptions);\n\n function OperatorOptions() {\n (0, _classCallCheck2[\"default\"])(this, OperatorOptions);\n return _super.apply(this, arguments);\n }\n\n (0, _createClass2[\"default\"])(OperatorOptions, [{\n key: \"render\",\n value: function render() {\n if (!this.props.selectedOperator) return null;\n var operatorDefinitions = (0, _configUtils.getOperatorConfig)(this.props.config, this.props.selectedOperator, this.props.selectedField);\n\n if (typeof operatorDefinitions.options === \"undefined\") {\n return null;\n }\n\n var _operatorDefinitions$ = operatorDefinitions.options,\n optionsFactory = _operatorDefinitions$.factory,\n basicOptionsProps = (0, _objectWithoutProperties2[\"default\"])(_operatorDefinitions$, _excluded);\n var optionsProps = Object.assign({}, basicOptionsProps, {\n config: this.props.config,\n field: this.props.selectedField,\n operator: this.props.selectedOperator,\n options: this.props.operatorOptions,\n setOption: this.props.setOperatorOption,\n readonly: this.props.readonly\n });\n var optionsCmp = optionsFactory(optionsProps);\n var name = this.props.selectedOperator;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"rule--operator rule--operator--\".concat(name.toUpperCase())\n }, optionsCmp);\n }\n }]);\n return OperatorOptions;\n}(_react.PureComponent);\n\nexports[\"default\"] = OperatorOptions;\nOperatorOptions.propTypes = {\n config: _propTypes[\"default\"].object.isRequired,\n operatorOptions: _propTypes[\"default\"].any.isRequired,\n //instanceOf(Immutable.Map)\n selectedField: _propTypes[\"default\"].string.isRequired,\n selectedOperator: _propTypes[\"default\"].string.isRequired,\n readonly: _propTypes[\"default\"].bool,\n //actions\n setOperatorOption: _propTypes[\"default\"].func.isRequired\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _Operator = _interopRequireDefault(require(\"./Operator\"));\n\nvar _utils = require(\"../utils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar OperatorWrapper = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(OperatorWrapper, _PureComponent);\n\n var _super = _createSuper(OperatorWrapper);\n\n function OperatorWrapper() {\n (0, _classCallCheck2[\"default\"])(this, OperatorWrapper);\n return _super.apply(this, arguments);\n }\n\n (0, _createClass2[\"default\"])(OperatorWrapper, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n selectedField = _this$props.selectedField,\n selectedOperator = _this$props.selectedOperator,\n setOperator = _this$props.setOperator,\n selectedFieldPartsLabels = _this$props.selectedFieldPartsLabels,\n showOperator = _this$props.showOperator,\n showOperatorLabel = _this$props.showOperatorLabel,\n selectedFieldWidgetConfig = _this$props.selectedFieldWidgetConfig,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n\n var operator = showOperator && /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"operators-for-\" + (selectedFieldPartsLabels || []).join(\"_\"),\n className: \"rule--operator\"\n }, config.settings.showLabels && /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n className: \"rule--label\"\n }, config.settings.operatorLabel), /*#__PURE__*/_react[\"default\"].createElement(_Operator[\"default\"], {\n key: \"operator\",\n config: config,\n selectedField: selectedField,\n selectedOperator: selectedOperator,\n setOperator: setOperator,\n readonly: readonly,\n id: id,\n groupId: groupId\n }));\n\n var hiddenOperator = showOperatorLabel && /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n key: \"operators-for-\" + (selectedFieldPartsLabels || []).join(\"_\"),\n className: \"rule--operator\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"rule--operator\"\n }, config.settings.showLabels ? /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n className: \"rule--label\"\n }, \"\\xA0\") : null, /*#__PURE__*/_react[\"default\"].createElement(\"span\", null, selectedFieldWidgetConfig.operatorInlineLabel)));\n\n return [operator, hiddenOperator];\n }\n }]);\n return OperatorWrapper;\n}(_react.PureComponent);\n\nexports[\"default\"] = OperatorWrapper;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _ruleUtils = require(\"../../utils/ruleUtils\");\n\nvar _stuff = require(\"../../utils/stuff\");\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _last = _interopRequireDefault(require(\"lodash/last\"));\n\nvar _keys = _interopRequireDefault(require(\"lodash/keys\"));\n\nvar _clone = _interopRequireDefault(require(\"clone\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n//tip: this.props.value - right value, this.props.field - left value\nvar ValueField = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(ValueField, _PureComponent);\n\n var _super = _createSuper(ValueField);\n\n function ValueField(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, ValueField);\n _this = _super.call(this, props);\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(ValueField, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForItems = [\"config\", \"field\", \"operator\", \"isFuncArg\", \"parentField\"];\n var keysForMeta = [\"config\", \"field\", \"operator\", \"value\", \"placeholder\", \"isFuncArg\", \"parentField\"];\n var needUpdateItems = !this.items || keysForItems.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n\n if (needUpdateItems) {\n this.items = this.getItems(nextProps);\n }\n\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getItems\",\n value: function getItems(_ref) {\n var config = _ref.config,\n field = _ref.field,\n operator = _ref.operator,\n parentField = _ref.parentField,\n isFuncArg = _ref.isFuncArg,\n fieldDefinition = _ref.fieldDefinition;\n var canCompareFieldWithField = config.settings.canCompareFieldWithField;\n var fieldSeparator = config.settings.fieldSeparator;\n var parentFieldPath = typeof parentField == \"string\" ? parentField.split(fieldSeparator) : parentField;\n var parentFieldConfig = parentField ? (0, _configUtils.getFieldConfig)(config, parentField) : null;\n var sourceFields = parentField ? parentFieldConfig && parentFieldConfig.subfields : config.fields;\n var filteredFields = this.filterFields(config, sourceFields, field, parentField, parentFieldPath, operator, canCompareFieldWithField, isFuncArg, fieldDefinition);\n var items = this.buildOptions(parentFieldPath, config, filteredFields, parentFieldPath);\n return items;\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref2) {\n var config = _ref2.config,\n field = _ref2.field,\n operator = _ref2.operator,\n value = _ref2.value,\n customPlaceholder = _ref2.placeholder,\n isFuncArg = _ref2.isFuncArg,\n parentField = _ref2.parentField;\n var _config$settings = config.settings,\n fieldPlaceholder = _config$settings.fieldPlaceholder,\n fieldSeparatorDisplay = _config$settings.fieldSeparatorDisplay;\n var selectedKey = value;\n var isFieldSelected = !!value;\n var leftFieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n var leftFieldWidgetField = leftFieldConfig.widgets.field;\n var leftFieldWidgetFieldProps = leftFieldWidgetField && leftFieldWidgetField.widgetProps || {};\n var placeholder = isFieldSelected ? null : isFuncArg && customPlaceholder || leftFieldWidgetFieldProps.valuePlaceholder || fieldPlaceholder;\n var currField = isFieldSelected ? (0, _configUtils.getFieldConfig)(config, selectedKey) : null;\n var selectedOpts = currField || {};\n var selectedKeys = (0, _ruleUtils.getFieldPath)(selectedKey, config);\n var selectedPath = (0, _ruleUtils.getFieldPath)(selectedKey, config, true);\n var selectedLabel = this.getFieldLabel(currField, selectedKey, config);\n var partsLabels = (0, _ruleUtils.getFieldPathLabels)(selectedKey, config);\n var selectedFullLabel = partsLabels ? partsLabels.join(fieldSeparatorDisplay) : null;\n if (selectedFullLabel == selectedLabel || parentField) selectedFullLabel = null;\n var selectedAltLabel = selectedOpts.label2;\n return {\n placeholder: placeholder,\n selectedKey: selectedKey,\n selectedKeys: selectedKeys,\n selectedPath: selectedPath,\n selectedLabel: selectedLabel,\n selectedOpts: selectedOpts,\n selectedAltLabel: selectedAltLabel,\n selectedFullLabel: selectedFullLabel\n };\n }\n }, {\n key: \"filterFields\",\n value: function filterFields(config, fields, leftFieldFullkey, parentField, parentFieldPath, operator, canCompareFieldWithField, isFuncArg, fieldDefinition) {\n fields = (0, _clone[\"default\"])(fields);\n var fieldSeparator = config.settings.fieldSeparator;\n var leftFieldConfig = (0, _configUtils.getFieldConfig)(config, leftFieldFullkey);\n var expectedType;\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, leftFieldFullkey, operator, \"value\");\n\n if (isFuncArg && fieldDefinition) {\n expectedType = fieldDefinition.type;\n } else if (widget) {\n var widgetConfig = config.widgets[widget];\n var widgetType = widgetConfig.type; //expectedType = leftFieldConfig.type;\n\n expectedType = widgetType;\n } else {\n expectedType = leftFieldConfig.type;\n }\n\n function _filter(list, path) {\n for (var rightFieldKey in list) {\n var subfields = list[rightFieldKey].subfields;\n var subpath = (path ? path : []).concat(rightFieldKey);\n var rightFieldFullkey = subpath.join(fieldSeparator);\n var rightFieldConfig = (0, _configUtils.getFieldConfig)(config, rightFieldFullkey);\n\n if (!rightFieldConfig) {\n delete list[rightFieldKey];\n } else if (rightFieldConfig.type == \"!struct\" || rightFieldConfig.type == \"!group\") {\n if (_filter(subfields, subpath) == 0) delete list[rightFieldKey];\n } else {\n // tip: LHS field can be used as arg in RHS function\n var canUse = rightFieldConfig.type == expectedType && (isFuncArg ? true : rightFieldFullkey != leftFieldFullkey);\n var fn = canCompareFieldWithField || config.settings.canCompareFieldWithField;\n if (fn) canUse = canUse && fn(leftFieldFullkey, leftFieldConfig, rightFieldFullkey, rightFieldConfig, operator);\n if (!canUse) delete list[rightFieldKey];\n }\n }\n\n return (0, _keys[\"default\"])(list).length;\n }\n\n _filter(fields, parentFieldPath || []);\n\n return fields;\n }\n }, {\n key: \"buildOptions\",\n value: function buildOptions(parentFieldPath, config, fields) {\n var _this2 = this;\n\n var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var optGroupLabel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!fields) return null;\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n fieldSeparatorDisplay = _config$settings2.fieldSeparatorDisplay;\n var prefix = path ? path.join(fieldSeparator) + fieldSeparator : \"\";\n return (0, _keys[\"default\"])(fields).map(function (fieldKey) {\n var field = fields[fieldKey];\n\n var label = _this2.getFieldLabel(field, fieldKey, config);\n\n var partsLabels = (0, _ruleUtils.getFieldPathLabels)(fieldKey, config);\n var fullLabel = partsLabels.join(fieldSeparatorDisplay);\n if (fullLabel == label || parentFieldPath) fullLabel = null;\n var altLabel = field.label2;\n var tooltip = field.tooltip;\n var subpath = (path ? path : []).concat(fieldKey);\n if (field.hideForCompare) return undefined;\n\n if (field.type == \"!struct\" || field.type == \"!group\") {\n return {\n key: fieldKey,\n path: prefix + fieldKey,\n label: label,\n fullLabel: fullLabel,\n altLabel: altLabel,\n tooltip: tooltip,\n items: _this2.buildOptions(parentFieldPath, config, field.subfields, subpath, label)\n };\n } else {\n return {\n key: fieldKey,\n path: prefix + fieldKey,\n label: label,\n fullLabel: fullLabel,\n altLabel: altLabel,\n tooltip: tooltip,\n grouplabel: optGroupLabel\n };\n }\n }).filter(function (o) {\n return !!o;\n });\n }\n }, {\n key: \"getFieldLabel\",\n value: function getFieldLabel(fieldOpts, fieldKey, config) {\n if (!fieldKey) return null;\n var fieldSeparator = config.settings.fieldSeparator;\n var maxLabelsLength = config.settings.maxLabelsLength;\n var fieldParts = Array.isArray(fieldKey) ? fieldKey : fieldKey.split(fieldSeparator);\n var label = fieldOpts.label || (0, _last[\"default\"])(fieldParts);\n label = (0, _stuff.truncateString)(label, maxLabelsLength);\n return label;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n setValue = _this$props.setValue,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var renderField = config.settings.renderField;\n\n var renderProps = _objectSpread({\n config: config,\n customProps: customProps,\n setField: setValue,\n readonly: readonly,\n items: this.items,\n id: id,\n groupId: groupId\n }, this.meta);\n\n return renderField(renderProps);\n }\n }]);\n return ValueField;\n}(_react.PureComponent);\n\nexports[\"default\"] = ValueField;\nValueField.propTypes = {\n id: _propTypes[\"default\"].string,\n groupId: _propTypes[\"default\"].string,\n setValue: _propTypes[\"default\"].func.isRequired,\n config: _propTypes[\"default\"].object.isRequired,\n field: _propTypes[\"default\"].string.isRequired,\n value: _propTypes[\"default\"].string,\n operator: _propTypes[\"default\"].string,\n customProps: _propTypes[\"default\"].object,\n readonly: _propTypes[\"default\"].bool,\n parentField: _propTypes[\"default\"].string,\n fieldDefinition: _propTypes[\"default\"].object,\n isFuncArg: _propTypes[\"default\"].bool\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _range = _interopRequireDefault(require(\"lodash/range\"));\n\nvar _configUtils = require(\"../../utils/configUtils\");\n\nvar _ruleUtils = require(\"../../utils/ruleUtils\");\n\nvar _stuff = require(\"../../utils/stuff\");\n\nvar _reactUtils = require(\"../../utils/reactUtils\");\n\nvar _pick = _interopRequireDefault(require(\"lodash/pick\"));\n\nvar _immutable = _interopRequireDefault(require(\"immutable\"));\n\nvar _WidgetFactory = _interopRequireDefault(require(\"./WidgetFactory\"));\n\nvar _utils = require(\"../utils\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar funcArgDummyOpDef = {\n cardinality: 1\n};\n\nvar Widget = /*#__PURE__*/function (_PureComponent) {\n (0, _inherits2[\"default\"])(Widget, _PureComponent);\n\n var _super = _createSuper(Widget);\n\n function Widget(_props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Widget);\n _this = _super.call(this, _props);\n\n _this._setValue = function (isSpecialRange, delta, widgetType, value, asyncListValues, __isInternal) {\n if (isSpecialRange && Array.isArray(value)) {\n var oldRange = [_this.props.value.get(0), _this.props.value.get(1)];\n if (oldRange[0] != value[0]) _this.props.setValue(0, value[0], widgetType, asyncListValues, __isInternal);\n if (oldRange[1] != value[1]) _this.props.setValue(1, value[1], widgetType, asyncListValues, __isInternal);\n } else {\n _this.props.setValue(delta, value, widgetType, asyncListValues, __isInternal);\n }\n };\n\n _this._onChangeValueSrc = function (delta, srcKey) {\n _this.props.setValueSrc(delta, srcKey);\n };\n\n _this.renderWidget = function (delta, meta, props) {\n var config = props.config,\n isFuncArg = props.isFuncArg,\n leftField = props.leftField,\n operator = props.operator,\n values = props.value,\n valueError = props.valueError,\n readonly = props.readonly,\n parentField = props.parentField,\n parentFuncs = props.parentFuncs,\n id = props.id,\n groupId = props.groupId;\n var settings = config.settings;\n var widgets = meta.widgets,\n iValues = meta.iValues,\n aField = meta.aField;\n var value = isFuncArg ? iValues : values;\n var field = isFuncArg ? leftField : aField;\n var _widgets$delta = widgets[delta],\n valueSrc = _widgets$delta.valueSrc,\n valueLabel = _widgets$delta.valueLabel;\n var widgetLabel = settings.showLabels ? /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n className: \"rule--label\"\n }, valueLabel.label) : null;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"widget-\" + field + \"-\" + delta,\n className: \"widget--widget\"\n }, valueSrc == \"func\" ? null : widgetLabel, /*#__PURE__*/_react[\"default\"].createElement(_WidgetFactory[\"default\"], (0, _extends2[\"default\"])({\n id: id,\n groupId: groupId,\n valueSrc: valueSrc,\n delta: delta,\n value: value,\n valueError: valueError,\n isFuncArg: isFuncArg\n }, (0, _pick[\"default\"])(meta, [\"isSpecialRange\", \"fieldDefinition\", \"asyncListValues\"]), (0, _pick[\"default\"])(widgets[delta], [\"widget\", \"widgetDefinition\", \"widgetValueLabel\", \"valueLabels\", \"textSeparators\", \"setValueHandler\"]), {\n config: config,\n field: field,\n parentField: parentField,\n parentFuncs: parentFuncs,\n operator: operator,\n readonly: readonly\n })));\n };\n\n _this.renderValueSources = function (delta, meta, props) {\n var config = props.config,\n isFuncArg = props.isFuncArg,\n leftField = props.leftField,\n operator = props.operator,\n readonly = props.readonly;\n var settings = config.settings;\n var valueSources = meta.valueSources,\n widgets = meta.widgets,\n aField = meta.aField;\n var field = isFuncArg ? leftField : aField;\n var _widgets$delta2 = widgets[delta],\n valueSrc = _widgets$delta2.valueSrc,\n setValueSrcHandler = _widgets$delta2.setValueSrcHandler;\n var valueSourcesInfo = settings.valueSourcesInfo,\n ValueSources = settings.renderValueSources;\n var valueSourcesOptions = valueSources.map(function (srcKey) {\n return [srcKey, {\n label: valueSourcesInfo[srcKey].label\n }];\n });\n var sourceLabel = settings.showLabels ? /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n className: \"rule--label\"\n }, \"\\xA0\") : null;\n return valueSources.length > 1 && !readonly && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"valuesrc-\" + field + \"-\" + delta,\n className: \"widget--valuesrc\"\n }, sourceLabel, /*#__PURE__*/_react[\"default\"].createElement(ValueSources, {\n key: \"valuesrc-\" + delta,\n delta: delta,\n valueSources: valueSourcesOptions,\n valueSrc: valueSrc,\n config: config,\n field: field,\n operator: operator,\n setValueSrc: setValueSrcHandler,\n readonly: readonly,\n title: settings.valueSourcesPopupTitle\n }));\n };\n\n _this.renderSep = function (delta, meta, props) {\n var config = props.config;\n var widgets = meta.widgets;\n var settings = config.settings;\n var sepText = widgets[delta].sepText;\n var sepLabel = settings.showLabels ? /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n className: \"rule--label\"\n }, \"\\xA0\") : null;\n return sepText && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"widget-separators-\" + delta,\n className: \"widget--sep\"\n }, sepLabel, /*#__PURE__*/_react[\"default\"].createElement(\"span\", null, sepText));\n };\n\n _this.renderWidgetDelta = function (delta) {\n var sep = _this.renderSep(delta, _this.meta, _this.props);\n\n var sources = _this.renderValueSources(delta, _this.meta, _this.props);\n\n var widgetCmp = _this.renderWidget(delta, _this.meta, _this.props);\n\n return [sep, sources, widgetCmp];\n };\n\n (0, _reactUtils.useOnPropsChanged)((0, _assertThisInitialized2[\"default\"])(_this));\n\n _this.onPropsChanged(_props);\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Widget, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"config\", \"field\", \"fieldFunc\", \"fieldArg\", \"leftField\", \"operator\", \"valueSrc\", \"isFuncArg\", \"asyncListValues\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k] //tip: for isFuncArg we need to wrap value in Imm list\n || k == \"isFuncArg\" && nextProps[\"isFuncArg\"] && nextProps[\"value\"] !== prevProps[\"value\"];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref) {\n var _this2 = this;\n\n var config = _ref.config,\n simpleField = _ref.field,\n fieldFunc = _ref.fieldFunc,\n fieldArg = _ref.fieldArg,\n operator = _ref.operator,\n valueSrcs = _ref.valueSrc,\n values = _ref.value,\n isForRuleGruop = _ref.isForRuleGruop,\n isCaseValue = _ref.isCaseValue,\n isFuncArg = _ref.isFuncArg,\n leftField = _ref.leftField,\n asyncListValues = _ref.asyncListValues;\n var field = isFuncArg ? {\n func: fieldFunc,\n arg: fieldArg\n } : simpleField;\n var iValueSrcs = valueSrcs;\n var iValues = values;\n\n if (isFuncArg || isForRuleGruop || isCaseValue) {\n iValueSrcs = _immutable[\"default\"].List([valueSrcs]);\n iValues = _immutable[\"default\"].List([values]);\n }\n\n var fieldDefinition = (0, _configUtils.getFieldConfig)(config, field);\n var defaultWidget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator);\n\n var _widgets = (0, _ruleUtils.getWidgetsForFieldOp)(config, field, operator);\n\n var operatorDefinition = isFuncArg ? funcArgDummyOpDef : (0, _configUtils.getOperatorConfig)(config, operator, field);\n\n if ((fieldDefinition == null || operatorDefinition == null) && !isCaseValue) {\n return null;\n }\n\n var isSpecialRange = operatorDefinition === null || operatorDefinition === void 0 ? void 0 : operatorDefinition.isSpecialRange;\n var isSpecialRangeForSrcField = isSpecialRange && (iValueSrcs.get(0) == \"field\" || iValueSrcs.get(1) == \"field\");\n var isTrueSpecialRange = isSpecialRange && !isSpecialRangeForSrcField;\n var cardinality = isTrueSpecialRange ? 1 : (0, _stuff.defaultValue)(operatorDefinition === null || operatorDefinition === void 0 ? void 0 : operatorDefinition.cardinality, 1);\n\n if (cardinality === 0) {\n return null;\n }\n\n var valueSources = (0, _ruleUtils.getValueSourcesForFieldOp)(config, field, operator, fieldDefinition, isFuncArg ? leftField : null);\n var widgets = (0, _range[\"default\"])(0, cardinality).map(function (delta) {\n var _widgetDefinition;\n\n var valueSrc = iValueSrcs.get(delta) || null;\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var widgetDefinition = (0, _configUtils.getFieldWidgetConfig)(config, field, operator, widget, valueSrc);\n\n if (isSpecialRangeForSrcField) {\n widget = widgetDefinition.singleWidget;\n widgetDefinition = (0, _configUtils.getFieldWidgetConfig)(config, field, operator, widget, valueSrc);\n }\n\n var widgetType = (_widgetDefinition = widgetDefinition) === null || _widgetDefinition === void 0 ? void 0 : _widgetDefinition.type;\n var valueLabel = (0, _ruleUtils.getValueLabel)(config, field, operator, delta, valueSrc, isTrueSpecialRange);\n var widgetValueLabel = (0, _ruleUtils.getValueLabel)(config, field, operator, delta, null, isTrueSpecialRange);\n var sepText = operatorDefinition !== null && operatorDefinition !== void 0 && operatorDefinition.textSeparators ? operatorDefinition === null || operatorDefinition === void 0 ? void 0 : operatorDefinition.textSeparators[delta] : null;\n\n var setValueSrcHandler = _this2._onChangeValueSrc.bind(_this2, delta);\n\n var valueLabels = null;\n var textSeparators = null;\n\n if (isSpecialRange) {\n valueLabels = [(0, _ruleUtils.getValueLabel)(config, field, operator, 0), (0, _ruleUtils.getValueLabel)(config, field, operator, 1)];\n valueLabels = {\n placeholder: [valueLabels[0].placeholder, valueLabels[1].placeholder],\n label: [valueLabels[0].label, valueLabels[1].label]\n };\n textSeparators = operatorDefinition === null || operatorDefinition === void 0 ? void 0 : operatorDefinition.textSeparators;\n }\n\n var setValueHandler = _this2._setValue.bind(_this2, isSpecialRange, delta, widgetType);\n\n return {\n valueSrc: valueSrc,\n valueLabel: valueLabel,\n widget: widget,\n sepText: sepText,\n setValueSrcHandler: setValueSrcHandler,\n widgetDefinition: widgetDefinition,\n widgetValueLabel: widgetValueLabel,\n valueLabels: valueLabels,\n textSeparators: textSeparators,\n setValueHandler: setValueHandler\n };\n });\n return {\n defaultWidget: defaultWidget,\n fieldDefinition: fieldDefinition,\n operatorDefinition: operatorDefinition,\n isSpecialRange: isTrueSpecialRange,\n cardinality: cardinality,\n valueSources: valueSources,\n widgets: widgets,\n iValues: iValues,\n //correct for isFuncArg\n aField: field,\n //correct for isFuncArg\n asyncListValues: asyncListValues\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!this.meta) return null;\n var _this$meta = this.meta,\n defaultWidget = _this$meta.defaultWidget,\n cardinality = _this$meta.cardinality;\n if (!defaultWidget) return null;\n var name = defaultWidget;\n return /*#__PURE__*/_react[\"default\"].createElement(_utils.Col, {\n className: \"rule--widget rule--widget--\".concat(name.toUpperCase()),\n key: \"widget-col-\" + name\n }, (0, _range[\"default\"])(0, cardinality).map(this.renderWidgetDelta));\n }\n }]);\n return Widget;\n}(_react.PureComponent);\n\nexports[\"default\"] = Widget;\nWidget.propTypes = {\n config: _propTypes[\"default\"].object.isRequired,\n value: _propTypes[\"default\"].any,\n //instanceOf(Immutable.List)\n valueSrc: _propTypes[\"default\"].any,\n //instanceOf(Immutable.List)\n valueError: _propTypes[\"default\"].any,\n field: _propTypes[\"default\"].string,\n operator: _propTypes[\"default\"].string,\n readonly: _propTypes[\"default\"].bool,\n asyncListValues: _propTypes[\"default\"].array,\n id: _propTypes[\"default\"].string,\n groupId: _propTypes[\"default\"].string,\n //actions\n setValue: _propTypes[\"default\"].func,\n setValueSrc: _propTypes[\"default\"].func,\n // for isFuncArg\n isFuncArg: _propTypes[\"default\"].bool,\n fieldFunc: _propTypes[\"default\"].string,\n fieldArg: _propTypes[\"default\"].string,\n leftField: _propTypes[\"default\"].string,\n // for RuleGroupExt\n isForRuleGruop: _propTypes[\"default\"].bool,\n parentField: _propTypes[\"default\"].string,\n // for func in func\n parentFuncs: _propTypes[\"default\"].array,\n // for case_value\n isCaseValue: _propTypes[\"default\"].bool\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _stuff = require(\"../../utils/stuff\");\n\nvar _excluded = [\"factory\"];\n\nvar _default = function _default(_ref) {\n var delta = _ref.delta,\n isFuncArg = _ref.isFuncArg,\n valueSrc = _ref.valueSrc,\n immValue = _ref.value,\n immValueError = _ref.valueError,\n asyncListValues = _ref.asyncListValues,\n isSpecialRange = _ref.isSpecialRange,\n fieldDefinition = _ref.fieldDefinition,\n widget = _ref.widget,\n widgetDefinition = _ref.widgetDefinition,\n widgetValueLabel = _ref.widgetValueLabel,\n valueLabels = _ref.valueLabels,\n textSeparators = _ref.textSeparators,\n setValueHandler = _ref.setValueHandler,\n config = _ref.config,\n field = _ref.field,\n operator = _ref.operator,\n readonly = _ref.readonly,\n parentField = _ref.parentField,\n parentFuncs = _ref.parentFuncs,\n id = _ref.id,\n groupId = _ref.groupId;\n var widgetFactory = widgetDefinition.factory,\n fieldWidgetProps = (0, _objectWithoutProperties2[\"default\"])(widgetDefinition, _excluded);\n var isConst = isFuncArg && fieldDefinition.valueSources && fieldDefinition.valueSources.length == 1 && fieldDefinition.valueSources[0] == \"const\";\n var defaultValue = fieldDefinition.defaultValue;\n\n if (!widgetFactory) {\n return \"?\";\n }\n\n var value = isSpecialRange ? [immValue.get(0), immValue.get(1)] : immValue ? immValue.get(delta) : undefined;\n var valueError = immValueError && (isSpecialRange ? [immValueError.get(0), immValueError.get(1)] : immValueError.get(delta)) || null;\n if (isSpecialRange && value[0] === undefined && value[1] === undefined) value = undefined;\n\n var _ref2 = fieldDefinition || {},\n fieldSettings = _ref2.fieldSettings;\n\n var widgetProps = Object.assign({}, fieldWidgetProps, fieldSettings, {\n config: config,\n field: field,\n parentField: parentField,\n parentFuncs: parentFuncs,\n fieldDefinition: fieldDefinition,\n operator: operator,\n delta: delta,\n isSpecialRange: isSpecialRange,\n isFuncArg: isFuncArg,\n value: value,\n valueError: valueError,\n label: widgetValueLabel.label,\n placeholder: widgetValueLabel.placeholder,\n placeholders: valueLabels ? valueLabels.placeholder : null,\n textSeparators: textSeparators,\n setValue: setValueHandler,\n readonly: readonly,\n asyncListValues: asyncListValues,\n id: id,\n groupId: groupId\n });\n\n if (widget == \"field\") {//\n }\n\n if (isConst && defaultValue) {\n if (typeof defaultValue == \"boolean\") {\n return defaultValue ? widgetProps.labelYes || \"YES\" : widgetProps.labelNo || \"NO\";\n } else if (fieldSettings.listValues) {\n if (Array.isArray(defaultValue)) return defaultValue.map(function (v) {\n return (0, _stuff.getTitleInListValues)(fieldSettings.listValues, v) || v;\n }).join(\", \");else return (0, _stuff.getTitleInListValues)(fieldSettings.listValues, defaultValue) || defaultValue;\n }\n\n return \"\" + defaultValue;\n }\n\n return widgetFactory(widgetProps);\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dummyFn = exports.DragIcon = exports.ConfirmFn = exports.Col = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _excluded = [\"children\"];\n\nvar Col = function Col(_ref) {\n var children = _ref.children,\n props = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", props, children);\n};\n\nexports.Col = Col;\n\nvar dummyFn = function dummyFn() {};\n\nexports.dummyFn = dummyFn;\n\nvar DragIcon = function DragIcon() {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"gray\",\n width: \"18px\",\n height: \"18px\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n d: \"M0 0h24v24H0V0z\",\n fill: \"none\"\n }), /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n }));\n};\n\nexports.DragIcon = DragIcon;\n\nvar ConfirmFn = function ConfirmFn(Cmp) {\n return function (props) {\n var useConfirm = props.config.settings.useConfirm;\n var confirmFn = useConfirm ? useConfirm() : null;\n return /*#__PURE__*/_react[\"default\"].createElement(Cmp, (0, _extends2[\"default\"])({}, props, {\n confirmFn: confirmFn\n }));\n };\n};\n\nexports.ConfirmFn = ConfirmFn;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n ValueFieldWidget: true,\n FuncWidget: true\n};\nObject.defineProperty(exports, \"FuncWidget\", {\n enumerable: true,\n get: function get() {\n return _FuncWidget[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ValueFieldWidget\", {\n enumerable: true,\n get: function get() {\n return _ValueField[\"default\"];\n }\n});\n\nvar _ValueField = _interopRequireDefault(require(\"../rule/ValueField\"));\n\nvar _FuncWidget = _interopRequireDefault(require(\"../rule/FuncWidget\"));\n\nvar _index = require(\"./vanilla/index.js\");\n\nObject.keys(_index).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _index[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _index[key];\n }\n });\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(_ref) {\n var type = _ref.type,\n label = _ref.label,\n onClick = _ref.onClick,\n readonly = _ref.readonly,\n config = _ref.config;\n var typeToLabel = {\n \"addRuleGroup\": \"+\",\n \"addRuleGroupExt\": \"+\",\n \"delGroup\": \"x\",\n \"delRuleGroup\": \"x\",\n \"delRule\": \"x\"\n };\n var btnLabel = label || typeToLabel[type];\n return /*#__PURE__*/_react[\"default\"].createElement(\"button\", {\n onClick: onClick,\n type: \"button\",\n disabled: readonly\n }, btnLabel);\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(_ref) {\n var children = _ref.children,\n config = _ref.config;\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, children);\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(_ref) {\n var id = _ref.id,\n not = _ref.not,\n setNot = _ref.setNot,\n conjunctionOptions = _ref.conjunctionOptions,\n setConjunction = _ref.setConjunction,\n disabled = _ref.disabled,\n readonly = _ref.readonly,\n config = _ref.config,\n showNot = _ref.showNot,\n notLabel = _ref.notLabel;\n var conjsCount = Object.keys(conjunctionOptions).length;\n var lessThenTwo = disabled;\n var forceShowConj = config.settings.forceShowConj;\n var showConj = forceShowConj || conjsCount > 1 && !lessThenTwo;\n\n var renderOptions = function renderOptions() {\n return Object.keys(conjunctionOptions).map(function (key) {\n var _conjunctionOptions$k = conjunctionOptions[key],\n id = _conjunctionOptions$k.id,\n name = _conjunctionOptions$k.name,\n label = _conjunctionOptions$k.label,\n checked = _conjunctionOptions$k.checked;\n var postfix = setConjunction.isDummyFn ? \"__dummy\" : \"\";\n if ((readonly || disabled) && !checked) return null;\n return [/*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n key: id + postfix,\n type: \"radio\",\n id: id + postfix,\n name: name + postfix,\n checked: checked,\n disabled: readonly || disabled,\n value: key,\n onChange: onChange\n }), /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n key: id + postfix + \"label\",\n htmlFor: id + postfix\n }, label)];\n });\n };\n\n var renderNot = function renderNot() {\n var postfix = \"not\";\n return [/*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n key: id + postfix,\n type: \"checkbox\",\n id: id + postfix,\n checked: not,\n disabled: readonly,\n onChange: onNotChange\n }), /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n key: id + postfix + \"label\",\n htmlFor: id + postfix\n }, notLabel || \"NOT\")];\n };\n\n var onChange = function onChange(e) {\n return setConjunction(e.target.value);\n };\n\n var onNotChange = function onNotChange(e) {\n return setNot(e.target.checked);\n };\n\n return [showNot && renderNot(), showConj && renderOptions()];\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(_ref) {\n var items = _ref.items,\n setField = _ref.setField,\n selectedKey = _ref.selectedKey,\n readonly = _ref.readonly;\n\n var renderOptions = function renderOptions(fields) {\n return fields.map(function (field) {\n var items = field.items,\n path = field.path,\n label = field.label,\n disabled = field.disabled;\n\n if (items) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"optgroup\", {\n disabled: disabled,\n key: path,\n label: label\n }, renderOptions(items));\n } else {\n return /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n disabled: disabled,\n key: path,\n value: path\n }, label);\n }\n });\n };\n\n var onChange = function onChange(e) {\n return setField(e.target.value);\n };\n\n var hasValue = selectedKey != null;\n return /*#__PURE__*/_react[\"default\"].createElement(\"select\", {\n onChange: onChange,\n value: hasValue ? selectedKey : \"\",\n disabled: readonly\n }, !hasValue && /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n disabled: true,\n value: \"\"\n }), renderOptions(items));\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(_ref) {\n var value = _ref.value,\n setValue = _ref.setValue,\n label = _ref.label,\n id = _ref.id,\n config = _ref.config,\n type = _ref.type;\n\n var onChange = function onChange(e) {\n return setValue(e.target.checked);\n };\n\n var postfix = type;\n return [/*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n key: id + postfix,\n type: \"checkbox\",\n id: id + postfix,\n checked: !!value,\n onChange: onChange\n }), /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n key: id + postfix + \"label\",\n htmlFor: id + postfix\n }, label)];\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(_ref) {\n var config = _ref.config,\n valueSources = _ref.valueSources,\n valueSrc = _ref.valueSrc,\n title = _ref.title,\n setValueSrc = _ref.setValueSrc,\n readonly = _ref.readonly;\n\n var renderOptions = function renderOptions(valueSources) {\n return valueSources.map(function (_ref2) {\n var _ref3 = (0, _slicedToArray2[\"default\"])(_ref2, 2),\n srcKey = _ref3[0],\n info = _ref3[1];\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n key: srcKey,\n value: srcKey\n }, info.label);\n });\n };\n\n var onChange = function onChange(e) {\n return setValueSrc(e.target.value);\n };\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"select\", {\n onChange: onChange,\n value: valueSrc,\n disabled: readonly\n }, renderOptions(valueSources));\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default(_ref) {\n var onOk = _ref.onOk,\n okText = _ref.okText,\n cancelText = _ref.cancelText,\n title = _ref.title;\n\n if (confirm(title)) {\n onOk();\n }\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"VanillaBooleanWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaBoolean[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaButton\", {\n enumerable: true,\n get: function get() {\n return _VanillaButton[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaButtonGroup\", {\n enumerable: true,\n get: function get() {\n return _VanillaButtonGroup[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaConjs\", {\n enumerable: true,\n get: function get() {\n return _VanillaConjs[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaDateTimeWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaDateTime[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaDateWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaDate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaFieldSelect\", {\n enumerable: true,\n get: function get() {\n return _VanillaFieldSelect[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaMultiSelectWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaMultiSelect[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaNumberWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaNumber[\"default\"];\n }\n});\nexports.VanillaProvider = void 0;\nObject.defineProperty(exports, \"VanillaSelectWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaSelect[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaSliderWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaSlider[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaSwitch\", {\n enumerable: true,\n get: function get() {\n return _VanillaSwitch[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaTextAreaWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaTextArea[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaTextWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaText[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaTimeWidget\", {\n enumerable: true,\n get: function get() {\n return _VanillaTime[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VanillaValueSources\", {\n enumerable: true,\n get: function get() {\n return _VanillaValueSources[\"default\"];\n }\n});\nObject.defineProperty(exports, \"vanillaConfirm\", {\n enumerable: true,\n get: function get() {\n return _vanillaConfirm[\"default\"];\n }\n});\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _VanillaBoolean = _interopRequireDefault(require(\"./value/VanillaBoolean\"));\n\nvar _VanillaText = _interopRequireDefault(require(\"./value/VanillaText\"));\n\nvar _VanillaTextArea = _interopRequireDefault(require(\"./value/VanillaTextArea\"));\n\nvar _VanillaDate = _interopRequireDefault(require(\"./value/VanillaDate\"));\n\nvar _VanillaTime = _interopRequireDefault(require(\"./value/VanillaTime\"));\n\nvar _VanillaDateTime = _interopRequireDefault(require(\"./value/VanillaDateTime\"));\n\nvar _VanillaMultiSelect = _interopRequireDefault(require(\"./value/VanillaMultiSelect\"));\n\nvar _VanillaSelect = _interopRequireDefault(require(\"./value/VanillaSelect\"));\n\nvar _VanillaNumber = _interopRequireDefault(require(\"./value/VanillaNumber\"));\n\nvar _VanillaSlider = _interopRequireDefault(require(\"./value/VanillaSlider\"));\n\nvar _VanillaFieldSelect = _interopRequireDefault(require(\"./core/VanillaFieldSelect\"));\n\nvar _VanillaConjs = _interopRequireDefault(require(\"./core/VanillaConjs\"));\n\nvar _VanillaButton = _interopRequireDefault(require(\"./core/VanillaButton\"));\n\nvar _VanillaButtonGroup = _interopRequireDefault(require(\"./core/VanillaButtonGroup\"));\n\nvar _VanillaValueSources = _interopRequireDefault(require(\"./core/VanillaValueSources\"));\n\nvar _VanillaSwitch = _interopRequireDefault(require(\"./core/VanillaSwitch\"));\n\nvar _vanillaConfirm = _interopRequireDefault(require(\"./core/vanillaConfirm\"));\n\n// value widgets\n// field select widget\n// core components\nvar VanillaProvider = function VanillaProvider(_ref) {\n var config = _ref.config,\n children = _ref.children;\n return children;\n};\n\nexports.VanillaProvider = VanillaProvider;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _uuid = _interopRequireDefault(require(\"../../../../utils/uuid\"));\n\nvar _default = function _default(props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n labelYes = props.labelYes,\n labelNo = props.labelNo,\n readonly = props.readonly,\n _props$customProps = props.customProps,\n customProps = _props$customProps === void 0 ? {} : _props$customProps;\n var customRadioYesProps = customProps.radioYes || {};\n var customRadioNoProps = customProps.radioNo || {};\n\n var onCheckboxChange = function onCheckboxChange(e) {\n return setValue(e.target.checked);\n };\n\n var onRadioChange = function onRadioChange(e) {\n return setValue(e.target.value == \"true\");\n };\n\n var id = (0, _uuid[\"default\"])(),\n id2 = (0, _uuid[\"default\"])(); // return <>\n // <input key={id} type=\"checkbox\" id={id} checked={!!value} disabled={readonly} onChange={onCheckboxChange} />\n // <label style={{display: \"inline\"}} key={id+\"label\"} htmlFor={id}>{value ? labelYes : labelNo}</label>\n // </>;\n\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, /*#__PURE__*/_react[\"default\"].createElement(\"input\", (0, _extends2[\"default\"])({\n key: id,\n type: \"radio\",\n id: id,\n value: true,\n checked: !!value,\n disabled: readonly,\n onChange: onRadioChange\n }, customRadioYesProps)), /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n style: {\n display: \"inline\"\n },\n key: id + \"label\",\n htmlFor: id\n }, labelYes), /*#__PURE__*/_react[\"default\"].createElement(\"input\", (0, _extends2[\"default\"])({\n key: id2,\n type: \"radio\",\n id: id2,\n value: false,\n checked: !value,\n disabled: readonly,\n onChange: onRadioChange\n }, customRadioNoProps)), /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n style: {\n display: \"inline\"\n },\n key: id2 + \"label\",\n htmlFor: id2\n }, labelNo));\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nvar _default = function _default(props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n valueFormat = props.valueFormat,\n readonly = props.readonly,\n customProps = props.customProps;\n\n var onChange = function onChange(e) {\n var value = e.target.value;\n if (value == \"\") value = undefined;\n setValue(value);\n };\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"input\", (0, _extends2[\"default\"])({\n type: \"date\",\n value: value || \"\",\n disabled: readonly,\n onChange: onChange\n }, customProps));\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nvar _default = function _default(props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n valueFormat = props.valueFormat,\n use12Hours = props.use12Hours,\n readonly = props.readonly,\n customProps = props.customProps;\n\n var onChange = function onChange(e) {\n var value = e.target.value;\n if (value == \"\") value = undefined;else value = (0, _moment[\"default\"])(new Date(value)).format(valueFormat);\n setValue(value);\n };\n\n var dtValue = value;\n if (!value) dtValue = \"\";else dtValue = (0, _moment[\"default\"])(value).format(\"YYYY-MM-DDTHH:mm\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"input\", (0, _extends2[\"default\"])({\n type: \"datetime-local\",\n value: dtValue,\n disabled: readonly,\n onChange: onChange\n }, customProps));\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _stuff = require(\"../../../../utils/stuff\");\n\nvar _omit = _interopRequireDefault(require(\"lodash/omit\"));\n\nvar _default = function _default(_ref) {\n var listValues = _ref.listValues,\n value = _ref.value,\n setValue = _ref.setValue,\n allowCustomValues = _ref.allowCustomValues,\n readonly = _ref.readonly,\n customProps = _ref.customProps;\n\n var renderOptions = function renderOptions() {\n return (0, _stuff.mapListValues)(listValues, function (_ref2) {\n var title = _ref2.title,\n value = _ref2.value;\n return /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n key: value,\n value: value\n }, title);\n });\n };\n\n var getMultiSelectValues = function getMultiSelectValues(multiselect) {\n var values = [];\n var options = multiselect.options;\n\n for (var i = 0; i < options.length; i++) {\n var opt = options[i];\n\n if (opt.selected) {\n values.push(opt.value);\n }\n }\n\n if (!values.length) values = undefined; //not allow []\n\n return values;\n };\n\n var onChange = function onChange(e) {\n return setValue(getMultiSelectValues(e.target));\n };\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"select\", (0, _extends2[\"default\"])({\n multiple: true,\n onChange: onChange,\n value: value,\n disabled: readonly\n }, (0, _omit[\"default\"])(customProps, [\"showSearch\", \"input\", \"showCheckboxes\"])), renderOptions());\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n readonly = props.readonly,\n min = props.min,\n max = props.max,\n step = props.step,\n placeholder = props.placeholder,\n customProps = props.customProps;\n\n var onChange = function onChange(e) {\n var val = e.target.value;\n if (val === \"\" || val === null) val = undefined;else val = Number(val);\n setValue(val);\n };\n\n var numberValue = value == undefined ? \"\" : value;\n return /*#__PURE__*/_react[\"default\"].createElement(\"input\", (0, _extends2[\"default\"])({\n type: \"number\",\n value: numberValue,\n placeholder: placeholder,\n disabled: readonly,\n min: min,\n max: max,\n step: step,\n onChange: onChange\n }, customProps));\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _stuff = require(\"../../../../utils/stuff\");\n\nvar _omit = _interopRequireDefault(require(\"lodash/omit\"));\n\nvar _default = function _default(_ref) {\n var listValues = _ref.listValues,\n value = _ref.value,\n setValue = _ref.setValue,\n allowCustomValues = _ref.allowCustomValues,\n readonly = _ref.readonly,\n customProps = _ref.customProps;\n\n var renderOptions = function renderOptions() {\n return (0, _stuff.mapListValues)(listValues, function (_ref2) {\n var title = _ref2.title,\n value = _ref2.value;\n return /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n key: value,\n value: value\n }, title);\n });\n };\n\n var onChange = function onChange(e) {\n return setValue(e.target.value);\n };\n\n var hasValue = value != null;\n return /*#__PURE__*/_react[\"default\"].createElement(\"select\", (0, _extends2[\"default\"])({\n onChange: onChange,\n value: hasValue ? value : \"\",\n disabled: readonly\n }, (0, _omit[\"default\"])(customProps, [\"showSearch\", \"input\"])), !hasValue && /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n disabled: true,\n value: \"\"\n }), renderOptions());\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n readonly = props.readonly,\n min = props.min,\n max = props.max,\n step = props.step,\n placeholder = props.placeholder,\n _props$customProps = props.customProps,\n customProps = _props$customProps === void 0 ? {} : _props$customProps;\n var customInputProps = customProps.input || {};\n var customSliderProps = customProps.slider || customProps;\n\n var onChange = function onChange(e) {\n var val = e.target.value;\n if (val === \"\" || val === null) val = undefined;else val = Number(val);\n setValue(val);\n };\n\n var numberValue = value == undefined ? \"\" : value;\n return [/*#__PURE__*/_react[\"default\"].createElement(\"input\", (0, _extends2[\"default\"])({\n key: \"number\",\n type: \"number\",\n value: numberValue,\n placeholder: placeholder,\n disabled: readonly,\n min: min,\n max: max,\n step: step,\n onChange: onChange\n }, customInputProps)), /*#__PURE__*/_react[\"default\"].createElement(\"input\", (0, _extends2[\"default\"])({\n key: \"range\",\n type: \"range\",\n value: numberValue,\n disabled: readonly,\n min: min,\n max: max,\n step: step,\n onChange: onChange\n }, customSliderProps))];\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n readonly = props.readonly,\n placeholder = props.placeholder,\n maxLength = props.maxLength,\n customProps = props.customProps;\n\n var onChange = function onChange(e) {\n var val = e.target.value;\n if (val === \"\") val = undefined; // don't allow empty value\n\n setValue(val);\n };\n\n var textValue = value || \"\";\n return /*#__PURE__*/_react[\"default\"].createElement(\"input\", (0, _extends2[\"default\"])({\n type: \"text\",\n value: textValue,\n placeholder: placeholder,\n disabled: readonly,\n onChange: onChange,\n maxLength: maxLength\n }, customProps));\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n readonly = props.readonly,\n placeholder = props.placeholder,\n maxLength = props.maxLength,\n maxRows = props.maxRows,\n fullWidth = props.fullWidth,\n customProps = props.customProps;\n\n var onChange = function onChange(e) {\n var val = e.target.value;\n if (val === \"\") val = undefined; // don't allow empty value\n\n setValue(val);\n };\n\n var textValue = value || \"\";\n return /*#__PURE__*/_react[\"default\"].createElement(\"textarea\", (0, _extends2[\"default\"])({\n value: textValue,\n placeholder: placeholder,\n disabled: readonly,\n onChange: onChange,\n maxLength: maxLength,\n style: {\n width: fullWidth ? \"100%\" : undefined\n }\n }, customProps));\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = function _default(props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n valueFormat = props.valueFormat,\n use12Hours = props.use12Hours,\n readonly = props.readonly,\n customProps = props.customProps;\n\n var onChange = function onChange(e) {\n var value = e.target.value;\n if (value == \"\") value = undefined;\n setValue(value);\n };\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"input\", (0, _extends2[\"default\"])({\n type: \"time\",\n value: value || \"\",\n disabled: readonly,\n onChange: onChange\n }, customProps));\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.stringifyForDisplay = exports.mongoFormatOp2 = exports.mongoFormatOp1 = exports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar Widgets = _interopRequireWildcard(require(\"../components/widgets\"));\n\nvar Operators = _interopRequireWildcard(require(\"../components/operators\"));\n\nvar _export = require(\"../utils/export\");\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nvar _default2 = require(\"../config/default\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar VanillaBooleanWidget = Widgets.VanillaBooleanWidget,\n VanillaTextWidget = Widgets.VanillaTextWidget,\n VanillaTextAreaWidget = Widgets.VanillaTextAreaWidget,\n VanillaDateWidget = Widgets.VanillaDateWidget,\n VanillaTimeWidget = Widgets.VanillaTimeWidget,\n VanillaDateTimeWidget = Widgets.VanillaDateTimeWidget,\n VanillaMultiSelectWidget = Widgets.VanillaMultiSelectWidget,\n VanillaSelectWidget = Widgets.VanillaSelectWidget,\n VanillaNumberWidget = Widgets.VanillaNumberWidget,\n VanillaSliderWidget = Widgets.VanillaSliderWidget,\n ValueFieldWidget = Widgets.ValueFieldWidget,\n FuncWidget = Widgets.FuncWidget;\nvar ProximityOperator = Operators.ProximityOperator; //---------------------------- conjunctions\n\nvar conjunctions = {\n AND: {\n label: \"And\",\n mongoConj: \"$and\",\n jsonLogicConj: \"and\",\n sqlConj: \"AND\",\n spelConj: \"and\",\n spelConjs: [\"and\", \"&&\"],\n reversedConj: \"OR\",\n formatConj: function formatConj(children, conj, not, isForDisplay) {\n return children.size > 1 ? (not ? \"NOT \" : \"\") + \"(\" + children.join(\" \" + (isForDisplay ? \"AND\" : \"&&\") + \" \") + \")\" : (not ? \"NOT (\" : \"\") + children.first() + (not ? \")\" : \"\");\n },\n sqlFormatConj: function sqlFormatConj(children, conj, not) {\n return children.size > 1 ? (not ? \"NOT \" : \"\") + \"(\" + children.join(\" \" + \"AND\" + \" \") + \")\" : (not ? \"NOT (\" : \"\") + children.first() + (not ? \")\" : \"\");\n },\n spelFormatConj: function spelFormatConj(children, conj, not, omitBrackets) {\n if (not) omitBrackets = false;\n return children.size > 1 ? (not ? \"!\" : \"\") + (omitBrackets ? \"\" : \"(\") + children.join(\" \" + \"&&\" + \" \") + (omitBrackets ? \"\" : \")\") : (not ? \"!(\" : \"\") + children.first() + (not ? \")\" : \"\");\n }\n },\n OR: {\n label: \"Or\",\n mongoConj: \"$or\",\n jsonLogicConj: \"or\",\n sqlConj: \"OR\",\n spelConj: \"or\",\n spelConjs: [\"or\", \"||\"],\n reversedConj: \"AND\",\n formatConj: function formatConj(children, conj, not, isForDisplay) {\n return children.size > 1 ? (not ? \"NOT \" : \"\") + \"(\" + children.join(\" \" + (isForDisplay ? \"OR\" : \"||\") + \" \") + \")\" : (not ? \"NOT (\" : \"\") + children.first() + (not ? \")\" : \"\");\n },\n sqlFormatConj: function sqlFormatConj(children, conj, not) {\n return children.size > 1 ? (not ? \"NOT \" : \"\") + \"(\" + children.join(\" \" + \"OR\" + \" \") + \")\" : (not ? \"NOT (\" : \"\") + children.first() + (not ? \")\" : \"\");\n },\n spelFormatConj: function spelFormatConj(children, conj, not, omitBrackets) {\n if (not) omitBrackets = false;\n return children.size > 1 ? (not ? \"!\" : \"\") + (omitBrackets ? \"\" : \"(\") + children.join(\" \" + \"||\" + \" \") + (omitBrackets ? \"\" : \")\") : (not ? \"!(\" : \"\") + children.first() + (not ? \")\" : \"\");\n }\n }\n}; //---------------------------- operators\n// helpers for mongo format\n\nvar mongoFormatOp1 = function mongoFormatOp1(mop, mc, not, field, _op, value, useExpr, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var $field = typeof field == \"string\" && !field.startsWith(\"$\") ? \"$\" + field : field;\n var mv = mc(value, fieldDef);\n if (mv === undefined) return undefined;\n\n if (not) {\n if (!useExpr && (!mop || mop == \"$eq\")) return (0, _defineProperty2[\"default\"])({}, field, {\n \"$ne\": mv\n }); // short form\n\n return !useExpr ? (0, _defineProperty2[\"default\"])({}, field, {\n \"$not\": (0, _defineProperty2[\"default\"])({}, mop, mv)\n }) : {\n \"$not\": (0, _defineProperty2[\"default\"])({}, mop, [$field, mv])\n };\n } else {\n if (!useExpr && (!mop || mop == \"$eq\")) return (0, _defineProperty2[\"default\"])({}, field, mv); // short form\n\n return !useExpr ? (0, _defineProperty2[\"default\"])({}, field, (0, _defineProperty2[\"default\"])({}, mop, mv)) : (0, _defineProperty2[\"default\"])({}, mop, [$field, mv]);\n }\n};\n\nexports.mongoFormatOp1 = mongoFormatOp1;\n\nvar mongoFormatOp2 = function mongoFormatOp2(mops, not, field, _op, values, useExpr, valueSrcs, valueTypes, opDef, operatorOptions, fieldDef) {\n var $field = typeof field == \"string\" && !field.startsWith(\"$\") ? \"$\" + field : field;\n\n if (not) {\n var _$not3;\n\n return !useExpr ? (0, _defineProperty2[\"default\"])({}, field, {\n \"$not\": (_$not3 = {}, (0, _defineProperty2[\"default\"])(_$not3, mops[0], values[0]), (0, _defineProperty2[\"default\"])(_$not3, mops[1], values[1]), _$not3)\n }) : {\n \"$not\": {\n \"$and\": [(0, _defineProperty2[\"default\"])({}, mops[0], [$field, values[0]]), (0, _defineProperty2[\"default\"])({}, mops[1], [$field, values[1]])]\n }\n };\n } else {\n var _field2;\n\n return !useExpr ? (0, _defineProperty2[\"default\"])({}, field, (_field2 = {}, (0, _defineProperty2[\"default\"])(_field2, mops[0], values[0]), (0, _defineProperty2[\"default\"])(_field2, mops[1], values[1]), _field2)) : {\n \"$and\": [(0, _defineProperty2[\"default\"])({}, mops[0], [$field, values[0]]), (0, _defineProperty2[\"default\"])({}, mops[1], [$field, values[1]])]\n };\n }\n};\n\nexports.mongoFormatOp2 = mongoFormatOp2;\nvar operators = {\n equal: {\n label: \"==\",\n labelForFormat: \"==\",\n sqlOp: \"=\",\n spelOp: \"==\",\n spelOps: [\"==\", \"eq\"],\n reversedOp: \"not_equal\",\n formatOp: function formatOp(field, op, value, valueSrcs, valueTypes, opDef, operatorOptions, isForDisplay, fieldDef) {\n var opStr = isForDisplay ? \"=\" : opDef.label;\n if (valueTypes == \"boolean\" && isForDisplay) return value == \"No\" ? \"NOT \".concat(field) : \"\".concat(field);else return \"\".concat(field, \" \").concat(opStr, \" \").concat(value);\n },\n mongoFormatOp: mongoFormatOp1.bind(null, \"$eq\", function (v) {\n return v;\n }, false),\n jsonLogic: \"==\",\n elasticSearchQueryType: \"term\"\n },\n not_equal: {\n isNotOp: true,\n label: \"!=\",\n labelForFormat: \"!=\",\n sqlOp: \"<>\",\n spelOp: \"!=\",\n spelOps: [\"!=\", \"ne\"],\n reversedOp: \"equal\",\n formatOp: function formatOp(field, op, value, valueSrcs, valueTypes, opDef, operatorOptions, isForDisplay, fieldDef) {\n if (valueTypes == \"boolean\" && isForDisplay) return value == \"No\" ? \"\".concat(field) : \"NOT \".concat(field);else return \"\".concat(field, \" \").concat(opDef.label, \" \").concat(value);\n },\n mongoFormatOp: mongoFormatOp1.bind(null, \"$ne\", function (v) {\n return v;\n }, false),\n jsonLogic: \"!=\"\n },\n less: {\n label: \"<\",\n labelForFormat: \"<\",\n sqlOp: \"<\",\n spelOp: \"<\",\n spelOps: [\"<\", \"lt\"],\n reversedOp: \"greater_or_equal\",\n mongoFormatOp: mongoFormatOp1.bind(null, \"$lt\", function (v) {\n return v;\n }, false),\n jsonLogic: \"<\",\n elasticSearchQueryType: \"range\"\n },\n less_or_equal: {\n label: \"<=\",\n labelForFormat: \"<=\",\n sqlOp: \"<=\",\n spelOp: \"<=\",\n spelOps: [\"<=\", \"le\"],\n reversedOp: \"greater\",\n mongoFormatOp: mongoFormatOp1.bind(null, \"$lte\", function (v) {\n return v;\n }, false),\n jsonLogic: \"<=\",\n elasticSearchQueryType: \"range\"\n },\n greater: {\n label: \">\",\n labelForFormat: \">\",\n sqlOp: \">\",\n spelOp: \">\",\n spelOps: [\">\", \"gt\"],\n reversedOp: \"less_or_equal\",\n mongoFormatOp: mongoFormatOp1.bind(null, \"$gt\", function (v) {\n return v;\n }, false),\n jsonLogic: \">\",\n elasticSearchQueryType: \"range\"\n },\n greater_or_equal: {\n label: \">=\",\n labelForFormat: \">=\",\n sqlOp: \">=\",\n spelOp: \">=\",\n spelOps: [\">=\", \"ge\"],\n reversedOp: \"less\",\n mongoFormatOp: mongoFormatOp1.bind(null, \"$gte\", function (v) {\n return v;\n }, false),\n jsonLogic: \">=\",\n elasticSearchQueryType: \"range\"\n },\n like: {\n label: \"Contains\",\n labelForFormat: \"Contains\",\n reversedOp: \"not_like\",\n sqlOp: \"LIKE\",\n spelOp: \".contains\",\n spelOps: [\"matches\", \".contains\"],\n mongoFormatOp: mongoFormatOp1.bind(null, \"$regex\", function (v) {\n return typeof v == \"string\" ? (0, _stuff.escapeRegExp)(v) : undefined;\n }, false),\n //jsonLogic: (field, op, val) => ({ \"in\": [val, field] }),\n jsonLogic: \"in\",\n _jsonLogicIsRevArgs: true,\n valueSources: [\"value\"],\n elasticSearchQueryType: \"regexp\"\n },\n not_like: {\n isNotOp: true,\n label: \"Not contains\",\n reversedOp: \"like\",\n labelForFormat: \"Not Contains\",\n sqlOp: \"NOT LIKE\",\n mongoFormatOp: mongoFormatOp1.bind(null, \"$regex\", function (v) {\n return typeof v == \"string\" ? (0, _stuff.escapeRegExp)(v) : undefined;\n }, true),\n valueSources: [\"value\"]\n },\n starts_with: {\n label: \"Starts with\",\n labelForFormat: \"Starts with\",\n sqlOp: \"LIKE\",\n spelOp: \".startsWith\",\n spelOps: [\"matches\", \".startsWith\"],\n mongoFormatOp: mongoFormatOp1.bind(null, \"$regex\", function (v) {\n return typeof v == \"string\" ? \"^\" + (0, _stuff.escapeRegExp)(v) : undefined;\n }, false),\n jsonLogic: undefined,\n // not supported\n valueSources: [\"value\"]\n },\n ends_with: {\n label: \"Ends with\",\n labelForFormat: \"Ends with\",\n sqlOp: \"LIKE\",\n spelOp: \".endsWith\",\n spelOps: [\"matches\", \".endsWith\"],\n mongoFormatOp: mongoFormatOp1.bind(null, \"$regex\", function (v) {\n return typeof v == \"string\" ? (0, _stuff.escapeRegExp)(v) + \"$\" : undefined;\n }, false),\n jsonLogic: undefined,\n // not supported\n valueSources: [\"value\"]\n },\n between: {\n label: \"Between\",\n labelForFormat: \"BETWEEN\",\n sqlOp: \"BETWEEN\",\n cardinality: 2,\n formatOp: function formatOp(field, op, values, valueSrcs, valueTypes, opDef, operatorOptions, isForDisplay) {\n var valFrom = values.first();\n var valTo = values.get(1);\n if (isForDisplay) return \"\".concat(field, \" BETWEEN \").concat(valFrom, \" AND \").concat(valTo);else return \"\".concat(field, \" >= \").concat(valFrom, \" && \").concat(field, \" <= \").concat(valTo);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n var valFrom = values[0];\n var valTo = values[1];\n return \"\".concat(field, \" >= \").concat(valFrom, \" && \").concat(field, \" <= \").concat(valTo);\n },\n mongoFormatOp: mongoFormatOp2.bind(null, [\"$gte\", \"$lte\"], false),\n valueLabels: [\"Value from\", \"Value to\"],\n textSeparators: [null, \"and\"],\n reversedOp: \"not_between\",\n jsonLogic: \"<=\",\n validateValues: function validateValues(values) {\n if (values[0] != undefined && values[1] != undefined) {\n return values[0] <= values[1] ? null : \"Invalid range\";\n }\n\n return null;\n },\n elasticSearchQueryType: function elasticSearchQueryType(type) {\n return type === \"time\" ? \"filter\" : \"range\";\n }\n },\n not_between: {\n isNotOp: true,\n label: \"Not between\",\n labelForFormat: \"NOT BETWEEN\",\n sqlOp: \"NOT BETWEEN\",\n cardinality: 2,\n formatOp: function formatOp(field, op, values, valueSrcs, valueTypes, opDef, operatorOptions, isForDisplay) {\n var valFrom = values.first();\n var valTo = values.get(1);\n if (isForDisplay) return \"\".concat(field, \" NOT BETWEEN \").concat(valFrom, \" AND \").concat(valTo);else return \"(\".concat(field, \" < \").concat(valFrom, \" || \").concat(field, \" > \").concat(valTo, \")\");\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n var valFrom = values[0];\n var valTo = values[1];\n return \"(\".concat(field, \" < \").concat(valFrom, \" || \").concat(field, \" > \").concat(valTo, \")\");\n },\n mongoFormatOp: mongoFormatOp2.bind(null, [\"$gte\", \"$lte\"], true),\n valueLabels: [\"Value from\", \"Value to\"],\n textSeparators: [null, \"and\"],\n reversedOp: \"between\",\n validateValues: function validateValues(values) {\n if (values[0] != undefined && values[1] != undefined) {\n return values[0] <= values[1] ? null : \"Invalid range\";\n }\n\n return null;\n }\n },\n is_empty: {\n label: \"Is empty\",\n labelForFormat: \"IS EMPTY\",\n cardinality: 0,\n reversedOp: \"is_not_empty\",\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return isForDisplay ? \"\".concat(field, \" IS EMPTY\") : \"!\".concat(field);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var empty = (0, _export.sqlEmptyValue)(fieldDef);\n return \"COALESCE(\".concat(field, \", \").concat(empty, \") = \").concat(empty);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n //tip: is empty or null\n return \"\".concat(field, \" <= ''\");\n },\n mongoFormatOp: mongoFormatOp1.bind(null, \"$in\", function (v, fieldDef) {\n return [(0, _export.mongoEmptyValue)(fieldDef), null];\n }, false),\n jsonLogic: \"!\"\n },\n is_not_empty: {\n isNotOp: true,\n label: \"Is not empty\",\n labelForFormat: \"IS NOT EMPTY\",\n cardinality: 0,\n reversedOp: \"is_empty\",\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return isForDisplay ? \"\".concat(field, \" IS NOT EMPTY\") : \"!!\".concat(field);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var empty = (0, _export.sqlEmptyValue)(fieldDef);\n return \"COALESCE(\".concat(field, \", \").concat(empty, \") <> \").concat(empty);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n //tip: is not empty and not null\n return \"\".concat(field, \" > ''\");\n },\n mongoFormatOp: mongoFormatOp1.bind(null, \"$nin\", function (v, fieldDef) {\n return [(0, _export.mongoEmptyValue)(fieldDef), null];\n }, false),\n jsonLogic: \"!!\",\n elasticSearchQueryType: \"exists\"\n },\n is_null: {\n label: \"Is null\",\n labelForFormat: \"IS NULL\",\n sqlOp: \"IS NULL\",\n cardinality: 0,\n reversedOp: \"is_not_null\",\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return isForDisplay ? \"\".concat(field, \" IS NULL\") : \"!\".concat(field);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" == null\");\n },\n // check if value is null OR not exists\n mongoFormatOp: mongoFormatOp1.bind(null, \"$eq\", function (v) {\n return null;\n }, false),\n jsonLogic: \"==\"\n },\n is_not_null: {\n label: \"Is not null\",\n labelForFormat: \"IS NOT NULL\",\n sqlOp: \"IS NOT NULL\",\n cardinality: 0,\n reversedOp: \"is_null\",\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return isForDisplay ? \"\".concat(field, \" IS NOT NULL\") : \"!!\".concat(field);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" != null\");\n },\n // check if value exists and is not null\n mongoFormatOp: mongoFormatOp1.bind(null, \"$ne\", function (v) {\n return null;\n }, false),\n jsonLogic: \"!=\",\n elasticSearchQueryType: \"exists\"\n },\n select_equals: {\n label: \"==\",\n labelForFormat: \"==\",\n sqlOp: \"=\",\n // enum/set\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n var opStr = isForDisplay ? \"=\" : \"==\";\n return \"\".concat(field, \" \").concat(opStr, \" \").concat(value);\n },\n spelOp: \"==\",\n spelOps: [\"==\", \"eq\"],\n mongoFormatOp: mongoFormatOp1.bind(null, \"$eq\", function (v) {\n return v;\n }, false),\n reversedOp: \"select_not_equals\",\n jsonLogic: \"==\",\n elasticSearchQueryType: \"term\"\n },\n select_not_equals: {\n isNotOp: true,\n label: \"!=\",\n labelForFormat: \"!=\",\n sqlOp: \"<>\",\n // enum/set\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return \"\".concat(field, \" != \").concat(value);\n },\n spelOp: \"!=\",\n spelOps: [\"!=\", \"ne\"],\n mongoFormatOp: mongoFormatOp1.bind(null, \"$ne\", function (v) {\n return v;\n }, false),\n reversedOp: \"select_equals\",\n jsonLogic: \"!=\"\n },\n select_any_in: {\n label: \"Any in\",\n labelForFormat: \"IN\",\n sqlOp: \"IN\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n if (valueSrc == \"value\") return \"\".concat(field, \" IN (\").concat(values.join(\", \"), \")\");else return \"\".concat(field, \" IN (\").concat(values, \")\");\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n if (valueSrc == \"value\") {\n return \"\".concat(field, \" IN (\").concat(values.join(\", \"), \")\");\n } else return undefined; // not supported\n\n },\n spelOp: \"$contains\",\n // tip: $ means first arg is object\n mongoFormatOp: mongoFormatOp1.bind(null, \"$in\", function (v) {\n return v;\n }, false),\n reversedOp: \"select_not_any_in\",\n jsonLogic: \"in\",\n elasticSearchQueryType: \"term\"\n },\n select_not_any_in: {\n isNotOp: true,\n label: \"Not in\",\n labelForFormat: \"NOT IN\",\n sqlOp: \"NOT IN\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n if (valueSrc == \"value\") return \"\".concat(field, \" NOT IN (\").concat(values.join(\", \"), \")\");else return \"\".concat(field, \" NOT IN (\").concat(values, \")\");\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n if (valueSrc == \"value\") {\n return \"\".concat(field, \" NOT IN (\").concat(values.join(\", \"), \")\");\n } else return undefined; // not supported\n\n },\n mongoFormatOp: mongoFormatOp1.bind(null, \"$nin\", function (v) {\n return v;\n }, false),\n reversedOp: \"select_any_in\"\n },\n //todo: multiselect_contains - for SpEL it would be `.containsAll`\n multiselect_equals: {\n label: \"Equals\",\n labelForFormat: \"==\",\n sqlOp: \"=\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n var opStr = isForDisplay ? \"=\" : \"==\";\n if (valueSrc == \"value\") return \"\".concat(field, \" \").concat(opStr, \" [\").concat(values.join(\", \"), \"]\");else return \"\".concat(field, \" \").concat(opStr, \" \").concat(values);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n if (valueSrc == \"value\") // set\n return \"\".concat(field, \" = '\").concat(values.map(function (v) {\n return _export.SqlString.trim(v);\n }).join(\",\"), \"'\");else return undefined; //not supported\n },\n spelOp: \".equals\",\n mongoFormatOp: mongoFormatOp1.bind(null, \"$eq\", function (v) {\n return v;\n }, false),\n reversedOp: \"multiselect_not_equals\",\n jsonLogic2: \"all-in\",\n jsonLogic: function jsonLogic(field, op, vals) {\n return {\n // it's not \"equals\", but \"includes\" operator - just for example\n \"all\": [field, {\n \"in\": [{\n \"var\": \"\"\n }, vals]\n }]\n };\n },\n elasticSearchQueryType: \"term\"\n },\n multiselect_not_equals: {\n isNotOp: true,\n label: \"Not equals\",\n labelForFormat: \"!=\",\n sqlOp: \"<>\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n if (valueSrc == \"value\") return \"\".concat(field, \" != [\").concat(values.join(\", \"), \"]\");else return \"\".concat(field, \" != \").concat(values);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n if (valueSrc == \"value\") // set\n return \"\".concat(field, \" != '\").concat(values.map(function (v) {\n return _export.SqlString.trim(v);\n }).join(\",\"), \"'\");else return undefined; //not supported\n },\n mongoFormatOp: mongoFormatOp1.bind(null, \"$ne\", function (v) {\n return v;\n }, false),\n reversedOp: \"multiselect_equals\"\n },\n proximity: {\n label: \"Proximity search\",\n cardinality: 2,\n valueLabels: [{\n label: \"Word 1\",\n placeholder: \"Enter first word\"\n }, {\n label: \"Word 2\",\n placeholder: \"Enter second word\"\n }],\n textSeparators: [//'Word 1',\n //'Word 2'\n ],\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n var val1 = values.first();\n var val2 = values.get(1);\n var prox = operatorOptions.get(\"proximity\");\n return \"\".concat(field, \" \").concat(val1, \" NEAR/\").concat(prox, \" \").concat(val2);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var val1 = values.first();\n var val2 = values.get(1);\n\n var aVal1 = _export.SqlString.trim(val1);\n\n var aVal2 = _export.SqlString.trim(val2);\n\n var prox = operatorOptions.get(\"proximity\");\n return \"CONTAINS(\".concat(field, \", 'NEAR((\").concat(aVal1, \", \").concat(aVal2, \"), \").concat(prox, \")')\");\n },\n mongoFormatOp: undefined,\n // not supported\n jsonLogic: undefined,\n // not supported\n options: {\n optionLabel: \"Near\",\n // label on top of \"near\" selectbox (for config.settings.showLabels==true)\n optionTextBefore: \"Near\",\n // label before \"near\" selectbox (for config.settings.showLabels==false)\n optionPlaceholder: \"Select words between\",\n // placeholder for \"near\" selectbox\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(ProximityOperator, props);\n },\n minProximity: 2,\n maxProximity: 10,\n defaults: {\n proximity: 2\n }\n }\n },\n some: {\n label: \"Some\",\n labelForFormat: \"SOME\",\n cardinality: 0,\n jsonLogic: \"some\",\n spelFormatOp: function spelFormatOp(filteredSize) {\n return \"\".concat(filteredSize, \" > 0\");\n },\n mongoFormatOp: mongoFormatOp1.bind(null, \"$gt\", function (v) {\n return 0;\n }, false)\n },\n all: {\n label: \"All\",\n labelForFormat: \"ALL\",\n cardinality: 0,\n jsonLogic: \"all\",\n spelFormatOp: function spelFormatOp(filteredSize, op, fullSize) {\n return \"\".concat(filteredSize, \" == \").concat(fullSize);\n },\n mongoFormatOp: mongoFormatOp1.bind(null, \"$eq\", function (v) {\n return v;\n }, false)\n },\n none: {\n label: \"None\",\n labelForFormat: \"NONE\",\n cardinality: 0,\n jsonLogic: \"none\",\n spelFormatOp: function spelFormatOp(filteredSize) {\n return \"\".concat(filteredSize, \" == 0\");\n },\n mongoFormatOp: mongoFormatOp1.bind(null, \"$eq\", function (v) {\n return 0;\n }, false)\n }\n}; //---------------------------- widgets\n\nvar stringifyForDisplay = function stringifyForDisplay(v) {\n return v == null ? \"NULL\" : v.toString();\n};\n\nexports.stringifyForDisplay = stringifyForDisplay;\nvar widgets = {\n text: {\n type: \"text\",\n jsType: \"string\",\n valueSrc: \"value\",\n valueLabel: \"String\",\n valuePlaceholder: \"Enter string\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaTextWidget, props);\n },\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? stringifyForDisplay(val) : JSON.stringify(val);\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n if (opDef.spelOp == \"matches\" && op != \"regex\") {\n var regex;\n\n if (op == \"starts_with\") {\n regex = \"(?s)^\".concat((0, _stuff.escapeRegExp)(val), \".*\");\n } else if (op == \"ends_with\") {\n regex = \"(?s).*\".concat((0, _stuff.escapeRegExp)(val), \"$\");\n } else {\n // op == 'like'\n regex = \"(?s).*\".concat((0, _stuff.escapeRegExp)(val), \".*\"); //tip: can use (?sui) for case-insensitive\n }\n\n return (0, _export.spelEscape)(regex);\n } else {\n return (0, _export.spelEscape)(val);\n }\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n if (opDef.sqlOp == \"LIKE\" || opDef.sqlOp == \"NOT LIKE\") {\n return _export.SqlString.escapeLike(val, op != \"starts_with\", op != \"ends_with\");\n } else {\n return _export.SqlString.escape(val);\n }\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n textarea: {\n type: \"text\",\n jsType: \"string\",\n valueSrc: \"value\",\n valueLabel: \"Text\",\n valuePlaceholder: \"Enter text\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaTextAreaWidget, props);\n },\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? stringifyForDisplay(val) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n if (opDef.sqlOp == \"LIKE\" || opDef.sqlOp == \"NOT LIKE\") {\n return _export.SqlString.escapeLike(val, op != \"starts_with\", op != \"ends_with\");\n } else {\n return _export.SqlString.escape(val);\n }\n },\n spelFormatValue: function spelFormatValue(val) {\n return (0, _export.spelEscape)(val);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n },\n fullWidth: true\n },\n number: {\n type: \"number\",\n jsType: \"number\",\n valueSrc: \"value\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaNumberWidget, props);\n },\n valueLabel: \"Number\",\n valuePlaceholder: \"Enter number\",\n valueLabels: [{\n label: \"Number from\",\n placeholder: \"Enter number from\"\n }, {\n label: \"Number to\",\n placeholder: \"Enter number to\"\n }],\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? stringifyForDisplay(val) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return _export.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef) {\n var isFloat = wgtDef.step && !Number.isInteger(wgtDef.step);\n return (0, _export.spelEscape)(val, isFloat);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n slider: {\n type: \"number\",\n jsType: \"number\",\n valueSrc: \"value\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaSliderWidget, props);\n },\n valueLabel: \"Number\",\n valuePlaceholder: \"Enter number or move slider\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? stringifyForDisplay(val) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return _export.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val) {\n return (0, _export.spelEscape)(val);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n select: {\n type: \"select\",\n jsType: \"string\",\n valueSrc: \"value\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaSelectWidget, props);\n },\n valueLabel: \"Value\",\n valuePlaceholder: \"Select value\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n var valLabel = (0, _stuff.getTitleInListValues)(fieldDef.fieldSettings.listValues || fieldDef.asyncListValues, val);\n return isForDisplay ? stringifyForDisplay(valLabel) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return _export.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val) {\n return (0, _export.spelEscape)(val);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n multiselect: {\n type: \"multiselect\",\n jsType: \"array\",\n valueSrc: \"value\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaMultiSelectWidget, props);\n },\n valueLabel: \"Values\",\n valuePlaceholder: \"Select values\",\n formatValue: function formatValue(vals, fieldDef, wgtDef, isForDisplay) {\n var valsLabels = vals.map(function (v) {\n return (0, _stuff.getTitleInListValues)(fieldDef.fieldSettings.listValues || fieldDef.asyncListValues, v);\n });\n return isForDisplay ? valsLabels.map(stringifyForDisplay) : vals.map(JSON.stringify);\n },\n sqlFormatValue: function sqlFormatValue(vals, fieldDef, wgtDef, op, opDef) {\n return vals.map(function (v) {\n return _export.SqlString.escape(v);\n });\n },\n spelFormatValue: function spelFormatValue(vals, fieldDef, wgtDef, op, opDef) {\n var isCallable = opDef.spelOp && opDef.spelOp[0] == \"$\";\n var res = (0, _export.spelEscape)(vals); // inline list\n\n if (isCallable) {\n // `{1,2}.contains(1)` NOT works\n // `{1,2}.?[true].contains(1)` works\n res = (0, _export.spelFixList)(res);\n }\n\n return res;\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n date: {\n type: \"date\",\n jsType: \"string\",\n valueSrc: \"value\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaDateWidget, props);\n },\n dateFormat: \"DD.MM.YYYY\",\n valueFormat: \"YYYY-MM-DD\",\n useKeyboard: true,\n valueLabel: \"Date\",\n valuePlaceholder: \"Enter date\",\n valueLabels: [{\n label: \"Date from\",\n placeholder: \"Enter date from\"\n }, {\n label: \"Date to\",\n placeholder: \"Enter date to\"\n }],\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return isForDisplay ? dateVal.format(wgtDef.dateFormat) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return _export.SqlString.escape(dateVal.format(\"YYYY-MM-DD\"));\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return \"new java.text.SimpleDateFormat('yyyy-MM-dd').parse('\".concat(dateVal.format(\"YYYY-MM-DD\"), \"')\");\n },\n jsonLogic: function jsonLogic(val, fieldDef, wgtDef) {\n return (0, _moment[\"default\"])(val, wgtDef.valueFormat).toDate();\n },\n toJS: function toJS(val, fieldSettings) {\n var dateVal = (0, _moment[\"default\"])(val, fieldSettings.valueFormat);\n return dateVal.isValid() ? dateVal.toDate() : undefined;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return dateVal.isValid() ? dateVal.toDate() : undefined;\n }\n },\n time: {\n type: \"time\",\n jsType: \"string\",\n valueSrc: \"value\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaTimeWidget, props);\n },\n timeFormat: \"HH:mm\",\n valueFormat: \"HH:mm:ss\",\n use12Hours: false,\n useKeyboard: true,\n valueLabel: \"Time\",\n valuePlaceholder: \"Enter time\",\n valueLabels: [{\n label: \"Time from\",\n placeholder: \"Enter time from\"\n }, {\n label: \"Time to\",\n placeholder: \"Enter time to\"\n }],\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return isForDisplay ? dateVal.format(wgtDef.timeFormat) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return _export.SqlString.escape(dateVal.format(\"HH:mm:ss\"));\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return \"T(java.time.LocalTime).parse('\".concat(dateVal.format(\"HH:mm:ss\"), \"')\"); //return `new java.text.SimpleDateFormat('HH:mm:ss').parse('${dateVal.format(\"HH:mm:ss\")}')`;\n },\n jsonLogic: function jsonLogic(val, fieldDef, wgtDef) {\n // return seconds of day\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return dateVal.get(\"hour\") * 60 * 60 + dateVal.get(\"minute\") * 60 + dateVal.get(\"second\");\n },\n toJS: function toJS(val, fieldSettings) {\n // return seconds of day\n var dateVal = (0, _moment[\"default\"])(val, fieldSettings.valueFormat);\n return dateVal.isValid() ? dateVal.get(\"hour\") * 60 * 60 + dateVal.get(\"minute\") * 60 + dateVal.get(\"second\") : undefined;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n // return seconds of day\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return dateVal.get(\"hour\") * 60 * 60 + dateVal.get(\"minute\") * 60 + dateVal.get(\"second\");\n },\n elasticSearchFormatValue: function elasticSearchFormatValue(queryType, value, operator, fieldName) {\n return {\n script: {\n script: {\n source: \"doc[\".concat(fieldName, \"][0].getHour() >== params.min && doc[\").concat(fieldName, \"][0].getHour() <== params.max\"),\n params: {\n min: value[0],\n max: value[1]\n }\n }\n }\n };\n }\n },\n datetime: {\n type: \"datetime\",\n jsType: \"string\",\n valueSrc: \"value\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaDateTimeWidget, props);\n },\n timeFormat: \"HH:mm\",\n dateFormat: \"DD.MM.YYYY\",\n valueFormat: \"YYYY-MM-DD HH:mm:ss\",\n use12Hours: false,\n useKeyboard: true,\n valueLabel: \"Datetime\",\n valuePlaceholder: \"Enter datetime\",\n valueLabels: [{\n label: \"Datetime from\",\n placeholder: \"Enter datetime from\"\n }, {\n label: \"Datetime to\",\n placeholder: \"Enter datetime to\"\n }],\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return isForDisplay ? dateVal.format(wgtDef.dateFormat + \" \" + wgtDef.timeFormat) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return _export.SqlString.escape(dateVal.toDate());\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return \"new java.text.SimpleDateFormat('yyyy-MM-dd HH:mm:ss').parse('\".concat(dateVal.format(\"YYYY-MM-DD HH:mm:ss\"), \"')\");\n },\n jsonLogic: function jsonLogic(val, fieldDef, wgtDef) {\n return (0, _moment[\"default\"])(val, wgtDef.valueFormat).toDate();\n },\n toJS: function toJS(val, fieldSettings) {\n var dateVal = (0, _moment[\"default\"])(val, fieldSettings.valueFormat);\n return dateVal.isValid() ? dateVal.toDate() : undefined;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n var dateVal = (0, _moment[\"default\"])(val, wgtDef.valueFormat);\n return dateVal.isValid() ? dateVal.toDate() : undefined;\n }\n },\n \"boolean\": {\n type: \"boolean\",\n jsType: \"boolean\",\n valueSrc: \"value\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaBooleanWidget, props);\n },\n labelYes: \"Yes\",\n labelNo: \"No\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? val ? \"Yes\" : \"No\" : JSON.stringify(!!val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return _export.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return (0, _export.spelEscape)(val);\n },\n defaultValue: false,\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n field: {\n valueSrc: \"field\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(ValueFieldWidget, props);\n },\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay, op, opDef, rightFieldDef) {\n return isForDisplay ? rightFieldDef.label || val : val;\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef, rightFieldDef) {\n return val;\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return val;\n },\n valueLabel: \"Field to compare\",\n valuePlaceholder: \"Select field to compare\",\n customProps: {\n showSearch: true\n }\n },\n func: {\n valueSrc: \"func\",\n factory: function factory(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(FuncWidget, props);\n },\n valueLabel: \"Function\",\n valuePlaceholder: \"Select function\",\n customProps: {//showSearch: true\n }\n },\n case_value: {\n valueSrc: \"value\",\n type: \"case_value\",\n spelFormatValue: function spelFormatValue(val) {\n return (0, _export.spelEscape)(val === \"\" ? null : val);\n },\n spelImportValue: function spelImportValue(val) {\n return [val.value, []];\n },\n factory: function factory(_ref12) {\n var value = _ref12.value,\n setValue = _ref12.setValue;\n return /*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n type: \"text\",\n value: value || \"\",\n onChange: function onChange(e) {\n return setValue(e.target.value);\n }\n });\n }\n }\n}; //---------------------------- types\n\nvar types = {\n text: {\n defaultOperator: \"equal\",\n mainWidget: \"text\",\n widgets: {\n text: {\n operators: [\"equal\", \"not_equal\", \"like\", \"not_like\", \"starts_with\", \"ends_with\", \"proximity\", \"is_empty\", \"is_not_empty\", \"is_null\", \"is_not_null\"],\n widgetProps: {},\n opProps: {}\n },\n textarea: {\n operators: [\"equal\", \"not_equal\", \"like\", \"not_like\", \"starts_with\", \"ends_with\", \"is_empty\", \"is_not_empty\", \"is_null\", \"is_not_null\"],\n widgetProps: {},\n opProps: {}\n },\n field: {\n operators: [//unary ops (like `is_empty`) will be excluded anyway, see getWidgetsForFieldOp()\n \"equal\", \"not_equal\", \"proximity\" //can exclude if you want\n ]\n }\n }\n },\n number: {\n defaultOperator: \"equal\",\n mainWidget: \"number\",\n widgets: {\n number: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\", // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n },\n slider: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n date: {\n defaultOperator: \"equal\",\n widgets: {\n date: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\", // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n time: {\n defaultOperator: \"equal\",\n widgets: {\n time: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\", // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n datetime: {\n defaultOperator: \"equal\",\n widgets: {\n datetime: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\", // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n select: {\n mainWidget: \"select\",\n defaultOperator: \"select_equals\",\n widgets: {\n select: {\n operators: [\"select_equals\", \"select_not_equals\", // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"],\n widgetProps: {\n customProps: {\n showSearch: true\n }\n }\n },\n multiselect: {\n operators: [\"select_any_in\", \"select_not_any_in\", // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n multiselect: {\n defaultOperator: \"multiselect_equals\",\n widgets: {\n multiselect: {\n operators: [\"multiselect_equals\", \"multiselect_not_equals\", // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n \"boolean\": {\n defaultOperator: \"equal\",\n widgets: {\n \"boolean\": {\n operators: [\"equal\", \"not_equal\", \"is_null\", \"is_not_null\"],\n widgetProps: {//you can enable this if you don't use fields as value sources\n // hideOperator: true,\n // operatorInlineLabel: \"is\",\n }\n },\n field: {\n operators: [\"equal\", \"not_equal\"]\n }\n }\n },\n \"!group\": {\n defaultOperator: \"some\",\n mainWidget: \"number\",\n widgets: {\n number: {\n widgetProps: {\n min: 0\n },\n operators: [// w/o operand\n \"some\", \"all\", \"none\", // w/ operand - count\n \"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\"],\n opProps: {\n equal: {\n label: \"Count ==\"\n },\n not_equal: {\n label: \"Count !=\"\n },\n less: {\n label: \"Count <\"\n },\n less_or_equal: {\n label: \"Count <=\"\n },\n greater: {\n label: \"Count >\"\n },\n greater_or_equal: {\n label: \"Count >=\"\n },\n between: {\n label: \"Count between\"\n },\n not_between: {\n label: \"Count not between\"\n }\n }\n }\n }\n },\n \"case_value\": {\n mainWidget: \"case_value\",\n widgets: {\n case_value: {}\n }\n }\n}; //---------------------------- settings\n\nvar settings = _objectSpread(_objectSpread({}, _default2.settings), {}, {\n formatField: function formatField(field, parts, label2, fieldDefinition, config, isForDisplay) {\n if (isForDisplay) return label2;else return field;\n },\n formatSpelField: function formatSpelField(field, parentField, parts, partsExt, fieldDefinition, config) {\n var fieldName = partsExt.map(function (_ref13, ind) {\n var key = _ref13.key,\n parent = _ref13.parent;\n\n if (ind == 0) {\n if (parent == \"[map]\") return \"#this[\".concat((0, _export.spelEscape)(key), \"]\");else if (parent == \"[class]\") return key;else return key;\n } else {\n if (parent == \"map\" || parent == \"[map]\") return \"[\".concat((0, _export.spelEscape)(key), \"]\");else if (parent == \"class\" || parent == \"[class]\") return \".\".concat(key);else return \".\".concat(key);\n }\n }).join(\"\");\n\n if (fieldDefinition.isSpelVariable) {\n fieldName = \"#\" + fieldName;\n }\n\n return fieldName;\n },\n sqlFormatReverse: function sqlFormatReverse(q) {\n if (q == undefined) return undefined;\n return \"NOT(\" + q + \")\";\n },\n spelFormatReverse: function spelFormatReverse(q) {\n if (q == undefined) return undefined;\n return \"!(\" + q + \")\";\n },\n formatReverse: function formatReverse(q, operator, reversedOp, operatorDefinition, revOperatorDefinition, isForDisplay) {\n if (q == undefined) return undefined;\n if (isForDisplay) return \"NOT (\" + q + \")\";else return \"!(\" + q + \")\";\n },\n formatAggr: function formatAggr(whereStr, aggrField, operator, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay, aggrFieldDef) {\n var labelForFormat = opDef.labelForFormat,\n cardinality = opDef.cardinality;\n\n if (cardinality == 0) {\n var cond = whereStr ? \" HAVE \".concat(whereStr) : \"\";\n return \"\".concat(labelForFormat, \" OF \").concat(aggrField).concat(cond);\n } else if (cardinality == undefined || cardinality == 1) {\n var _cond = whereStr ? \" WHERE \".concat(whereStr) : \"\";\n\n return \"COUNT OF \".concat(aggrField).concat(_cond, \" \").concat(labelForFormat, \" \").concat(value);\n } else if (cardinality == 2) {\n var _cond2 = whereStr ? \" WHERE \".concat(whereStr) : \"\";\n\n var valFrom = value.first();\n var valTo = value.get(1);\n return \"COUNT OF \".concat(aggrField).concat(_cond2, \" \").concat(labelForFormat, \" \").concat(valFrom, \" AND \").concat(valTo);\n }\n },\n canCompareFieldWithField: function canCompareFieldWithField(leftField, leftFieldConfig, rightField, rightFieldConfig) {\n //for type == 'select'/'multiselect' you can check listValues\n return true;\n },\n // enable compare fields\n valueSourcesInfo: {\n value: {\n label: \"Value\"\n },\n field: {\n label: \"Field\",\n widget: \"field\"\n },\n func: {\n label: \"Function\",\n widget: \"func\"\n }\n },\n customFieldSelectProps: {\n showSearch: true\n },\n defaultSliderWidth: \"200px\",\n defaultSelectWidth: \"200px\",\n defaultSearchWidth: \"100px\",\n defaultMaxRows: 5\n}); //----------------------------\n\n\nvar _default = {\n conjunctions: conjunctions,\n operators: operators,\n widgets: widgets,\n types: types,\n settings: settings\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.settings = void 0;\n\nvar Widgets = _interopRequireWildcard(require(\"../components/widgets\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar VanillaFieldSelect = Widgets.VanillaFieldSelect,\n VanillaConjs = Widgets.VanillaConjs,\n VanillaButton = Widgets.VanillaButton,\n VanillaButtonGroup = Widgets.VanillaButtonGroup,\n VanillaProvider = Widgets.VanillaProvider,\n VanillaValueSources = Widgets.VanillaValueSources,\n vanillaConfirm = Widgets.vanillaConfirm,\n VanillaSwitch = Widgets.VanillaSwitch;\nvar settings = {\n formatField: function formatField(field, parts, label2, fieldDefinition, config, isForDisplay) {\n if (isForDisplay) return label2;else return field;\n },\n renderField: function renderField(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaFieldSelect, props);\n },\n renderOperator: function renderOperator(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaFieldSelect, props);\n },\n renderFunc: function renderFunc(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaFieldSelect, props);\n },\n renderConjs: function renderConjs(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaConjs, props);\n },\n renderSwitch: function renderSwitch(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaSwitch, props);\n },\n renderButton: function renderButton(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaButton, props);\n },\n renderButtonGroup: function renderButtonGroup(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaButtonGroup, props);\n },\n renderProvider: function renderProvider(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaProvider, props);\n },\n renderValueSources: function renderValueSources(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(VanillaValueSources, props);\n },\n renderConfirm: vanillaConfirm,\n renderSwitchPrefix: function renderSwitchPrefix() {\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, \"Conditions\");\n },\n valueSourcesInfo: {\n value: {}\n },\n fieldSeparator: \".\",\n fieldSeparatorDisplay: \".\",\n renderSize: \"small\",\n maxLabelsLength: 100,\n canReorder: true,\n canRegroup: true,\n showLock: false,\n canDeleteLocked: false,\n showNot: true,\n canLeaveEmptyGroup: true,\n shouldCreateEmptyGroup: false,\n forceShowConj: false,\n canShortMongoQuery: true,\n removeEmptyGroupsOnLoad: true,\n removeIncompleteRulesOnLoad: true,\n removeInvalidMultiSelectValuesOnLoad: true,\n groupActionsPosition: \"topRight\",\n // oneOf [topLeft, topCenter, topRight, bottomLeft, bottomCenter, bottomRight]\n setOpOnChangeField: [\"keep\", \"default\"],\n // 'default' (default if present), 'keep' (keep prev from last field), 'first', 'none'\n groupOperators: [\"some\", \"all\", \"none\"],\n convertableWidgets: {\n \"number\": [\"slider\", \"rangeslider\"],\n \"slider\": [\"number\", \"rangeslider\"],\n \"rangeslider\": [\"number\", \"slider\"],\n \"text\": [\"textarea\"],\n \"textarea\": [\"text\"]\n },\n // localization\n locale: {\n moment: \"en\"\n },\n valueLabel: \"Value\",\n valuePlaceholder: \"Value\",\n fieldLabel: \"Field\",\n operatorLabel: \"Operator\",\n funcLabel: \"Function\",\n fieldPlaceholder: \"Select field\",\n funcPlaceholder: \"Select function\",\n operatorPlaceholder: \"Select operator\",\n lockLabel: \"Lock\",\n lockedLabel: \"Locked\",\n deleteLabel: null,\n addGroupLabel: \"Add group\",\n addCaseLabel: \"Add condition\",\n addDefaultCaseLabel: \"Add default condition\",\n defaultCaseLabel: \"Default:\",\n addRuleLabel: \"Add rule\",\n addSubRuleLabel: \"Add sub rule\",\n delGroupLabel: \"\",\n notLabel: \"Not\",\n valueSourcesPopupTitle: \"Select value source\",\n removeRuleConfirmOptions: null,\n removeGroupConfirmOptions: null,\n defaultGroupConjunction: \"AND\",\n jsonLogic: {\n groupVarKey: \"var\",\n altVarKey: \"var\",\n lockedOp: \"locked\"\n }\n};\nexports.settings = settings;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UPPER = exports.RELATIVE_DATETIME = exports.NOW = exports.LOWER = exports.LINEAR_REGRESSION = void 0;\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nvar NOW = {\n label: \"Now\",\n returnType: \"datetime\",\n jsonLogic: \"now\",\n //todo: document option `jsonLogicCustomOps`\n //todo: add util to return all used custom ops to be added by user with `jsonLogic.add_operation`\n jsonLogicCustomOps: {\n now: function now() {\n return new Date();\n }\n },\n spelFunc: \"new java.util.Date()\",\n sqlFormatFunc: function sqlFormatFunc() {\n return \"NOW()\";\n },\n mongoFormatFunc: function mongoFormatFunc() {\n return new Date();\n },\n formatFunc: function formatFunc() {\n return \"NOW\";\n }\n};\nexports.NOW = NOW;\nvar RELATIVE_DATETIME = {\n label: \"Relative\",\n returnType: \"datetime\",\n renderBrackets: [\"\", \"\"],\n renderSeps: [\"\", \"\", \"\"],\n jsonLogic: function jsonLogic(_ref) {\n var date = _ref.date,\n op = _ref.op,\n val = _ref.val,\n dim = _ref.dim;\n return {\n \"date_add\": [date, val * (op == \"minus\" ? -1 : +1), dim]\n };\n },\n jsonLogicImport: function jsonLogicImport(v) {\n var date = v[\"date_add\"][0];\n var val = Math.abs(v[\"date_add\"][1]);\n var op = v[\"date_add\"][1] >= 0 ? \"plus\" : \"minus\";\n var dim = v[\"date_add\"][2];\n return [date, op, val, dim];\n },\n jsonLogicCustomOps: {\n date_add: function date_add(date, val, dim) {\n return (0, _moment[\"default\"])(date).add(val, dim).toDate();\n }\n },\n // MySQL\n //todo: other SQL dialects?\n sqlFormatFunc: function sqlFormatFunc(_ref2) {\n var date = _ref2.date,\n op = _ref2.op,\n val = _ref2.val,\n dim = _ref2.dim;\n return \"DATE_ADD(\".concat(date, \", INTERVAL \").concat(parseInt(val) * (op == \"minus\" ? -1 : +1), \" \").concat(dim.replace(/^'|'$/g, \"\"), \")\");\n },\n mongoFormatFunc: null,\n //todo: support?\n //todo: spel\n formatFunc: function formatFunc(_ref3) {\n var date = _ref3.date,\n op = _ref3.op,\n val = _ref3.val,\n dim = _ref3.dim;\n return !val ? date : \"\".concat(date, \" \").concat(op == \"minus\" ? \"-\" : \"+\", \" \").concat(val, \" \").concat(dim);\n },\n args: {\n date: {\n label: \"Date\",\n type: \"datetime\",\n defaultValue: {\n func: \"NOW\",\n args: []\n },\n valueSources: [\"func\", \"field\"]\n },\n op: {\n label: \"Op\",\n type: \"select\",\n defaultValue: \"plus\",\n valueSources: [\"value\"],\n mainWidgetProps: {\n customProps: {\n showSearch: false\n }\n },\n fieldSettings: {\n listValues: {\n plus: \"+\",\n minus: \"-\"\n }\n }\n },\n val: {\n label: \"Value\",\n type: \"number\",\n fieldSettings: {\n min: 0\n },\n defaultValue: 0,\n valueSources: [\"value\"]\n },\n dim: {\n label: \"Dimension\",\n type: \"select\",\n defaultValue: \"day\",\n valueSources: [\"value\"],\n mainWidgetProps: {\n customProps: {\n showSearch: false\n }\n },\n fieldSettings: {\n listValues: {\n day: \"day\",\n week: \"week\",\n month: \"month\",\n year: \"year\"\n }\n }\n }\n }\n};\nexports.RELATIVE_DATETIME = RELATIVE_DATETIME;\nvar LOWER = {\n label: \"Lowercase\",\n mongoFunc: \"$toLower\",\n jsonLogic: \"toLowerCase\",\n spelFunc: \".toLowerCase\",\n //jsonLogicIsMethod: true, // Removed in JsonLogic 2.x due to Prototype Pollution\n jsonLogicCustomOps: {\n toLowerCase: function toLowerCase(str) {\n return str.toLowerCase();\n }\n },\n returnType: \"text\",\n args: {\n str: {\n label: \"String\",\n type: \"text\",\n valueSources: [\"value\", \"field\"]\n }\n }\n};\nexports.LOWER = LOWER;\nvar UPPER = {\n label: \"Uppercase\",\n mongoFunc: \"$toUpper\",\n jsonLogic: \"toUpperCase\",\n spelFunc: \".toUpperCase\",\n //jsonLogicIsMethod: true, // Removed in JsonLogic 2.x due to Prototype Pollution\n jsonLogicCustomOps: {\n toUpperCase: function toUpperCase(str) {\n return str.toUpperCase();\n }\n },\n returnType: \"text\",\n args: {\n str: {\n label: \"String\",\n type: \"text\",\n valueSources: [\"value\", \"field\"]\n }\n }\n};\nexports.UPPER = UPPER;\nvar LINEAR_REGRESSION = {\n label: \"Linear regression\",\n returnType: \"number\",\n formatFunc: function formatFunc(_ref4, _) {\n var coef = _ref4.coef,\n bias = _ref4.bias,\n val = _ref4.val;\n return \"(\".concat(coef, \" * \").concat(val, \" + \").concat(bias, \")\");\n },\n sqlFormatFunc: function sqlFormatFunc(_ref5) {\n var coef = _ref5.coef,\n bias = _ref5.bias,\n val = _ref5.val;\n return \"(\".concat(coef, \" * \").concat(val, \" + \").concat(bias, \")\");\n },\n spelFormatFunc: function spelFormatFunc(_ref6) {\n var coef = _ref6.coef,\n bias = _ref6.bias,\n val = _ref6.val;\n return \"(\".concat(coef, \" * \").concat(val, \" + \").concat(bias, \")\");\n },\n mongoFormatFunc: function mongoFormatFunc(_ref7) {\n var coef = _ref7.coef,\n bias = _ref7.bias,\n val = _ref7.val;\n return {\n \"$sum\": [{\n \"$multiply\": [coef, val]\n }, bias]\n };\n },\n jsonLogic: function jsonLogic(_ref8) {\n var coef = _ref8.coef,\n bias = _ref8.bias,\n val = _ref8.val;\n return {\n \"+\": [{\n \"*\": [coef, val]\n }, bias]\n };\n },\n jsonLogicImport: function jsonLogicImport(v) {\n var coef = v[\"+\"][0][\"*\"][0];\n var val = v[\"+\"][0][\"*\"][1];\n var bias = v[\"+\"][1];\n return [coef, val, bias];\n },\n renderBrackets: [\"\", \"\"],\n renderSeps: [\" * \", \" + \"],\n args: {\n coef: {\n label: \"Coef\",\n type: \"number\",\n defaultValue: 1,\n valueSources: [\"value\"]\n },\n val: {\n label: \"Value\",\n type: \"number\",\n valueSources: [\"value\", \"field\"]\n },\n bias: {\n label: \"Bias\",\n type: \"number\",\n defaultValue: 0,\n valueSources: [\"value\"]\n }\n }\n};\nexports.LINEAR_REGRESSION = LINEAR_REGRESSION;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SET_VALUE_SRC = exports.SET_VALUE = exports.SET_TREE = exports.SET_OPERATOR_OPTION = exports.SET_OPERATOR = exports.SET_NOT = exports.SET_LOCK = exports.SET_FIELD = exports.SET_DRAG_START = exports.SET_DRAG_PROGRESS = exports.SET_DRAG_END = exports.SET_CONJUNCTION = exports.REMOVE_RULE = exports.REMOVE_GROUP = exports.PLACEMENT_PREPEND = exports.PLACEMENT_BEFORE = exports.PLACEMENT_APPEND = exports.PLACEMENT_AFTER = exports.MOVE_ITEM = exports.ADD_RULE = exports.ADD_GROUP = exports.ADD_CASE_GROUP = void 0;\nvar ADD_GROUP = \"ADD_GROUP\";\nexports.ADD_GROUP = ADD_GROUP;\nvar ADD_CASE_GROUP = \"ADD_CASE_GROUP\";\nexports.ADD_CASE_GROUP = ADD_CASE_GROUP;\nvar REMOVE_GROUP = \"REMOVE_GROUP\";\nexports.REMOVE_GROUP = REMOVE_GROUP;\nvar SET_CONJUNCTION = \"SET_CONJUNCTION\";\nexports.SET_CONJUNCTION = SET_CONJUNCTION;\nvar SET_NOT = \"SET_NOT\";\nexports.SET_NOT = SET_NOT;\nvar ADD_RULE = \"ADD_RULE\";\nexports.ADD_RULE = ADD_RULE;\nvar REMOVE_RULE = \"REMOVE_RULE\";\nexports.REMOVE_RULE = REMOVE_RULE;\nvar SET_FIELD = \"SET_FIELD\";\nexports.SET_FIELD = SET_FIELD;\nvar SET_OPERATOR = \"SET_OPERATOR\";\nexports.SET_OPERATOR = SET_OPERATOR;\nvar SET_VALUE = \"SET_VALUE\";\nexports.SET_VALUE = SET_VALUE;\nvar SET_VALUE_SRC = \"SET_VALUE_SRC\";\nexports.SET_VALUE_SRC = SET_VALUE_SRC;\nvar SET_OPERATOR_OPTION = \"SET_OPERATOR_OPTION\";\nexports.SET_OPERATOR_OPTION = SET_OPERATOR_OPTION;\nvar SET_LOCK = \"SET_LOCK\";\nexports.SET_LOCK = SET_LOCK;\nvar SET_TREE = \"SET_TREE\";\nexports.SET_TREE = SET_TREE;\nvar MOVE_ITEM = \"MOVE_ITEM\";\nexports.MOVE_ITEM = MOVE_ITEM;\nvar PLACEMENT_AFTER = \"after\";\nexports.PLACEMENT_AFTER = PLACEMENT_AFTER;\nvar PLACEMENT_BEFORE = \"before\";\nexports.PLACEMENT_BEFORE = PLACEMENT_BEFORE;\nvar PLACEMENT_APPEND = \"append\";\nexports.PLACEMENT_APPEND = PLACEMENT_APPEND;\nvar PLACEMENT_PREPEND = \"prepend\";\nexports.PLACEMENT_PREPEND = PLACEMENT_PREPEND;\nvar SET_DRAG_PROGRESS = \"SET_DRAG_PROGRESS\";\nexports.SET_DRAG_PROGRESS = SET_DRAG_PROGRESS;\nvar SET_DRAG_START = \"SET_DRAG_START\";\nexports.SET_DRAG_START = SET_DRAG_START;\nvar SET_DRAG_END = \"SET_DRAG_END\";\nexports.SET_DRAG_END = SET_DRAG_END;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.elasticSearchFormat = elasticSearchFormat;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n/**\n * Converts a string representation of top_left and bottom_right cords to\n * a ES geo_point required for query\n *\n * @param {string} geoPointString - comma separated string of lat/lon coods\n * @returns {{top_left: {lon: number, lat: number}, bottom_right: {lon: number, lat: number}}} - ES geoPoint formatted object\n * @private\n */\nfunction buildEsGeoPoint(geoPointString) {\n if (geoPointString == null) {\n return null;\n }\n\n var coordsNumberArray = geoPointString.split(\",\").map(Number);\n return {\n top_left: {\n lat: coordsNumberArray[0],\n lon: coordsNumberArray[1]\n },\n bottom_right: {\n lat: coordsNumberArray[2],\n lon: coordsNumberArray[3]\n }\n };\n}\n/**\n * Converts a dateTime string from the query builder to a ES range formatted object\n *\n * @param {string} dateTime - dateTime formatted string\n * @param {string} operator - query builder operator type, see constants.js and query builder docs\n * @returns {{lt: string}|{lte: string}|{gte: string}|{gte: string, lte: string}|undefined} - ES range query parameter\n *\n * @private\n */\n\n\nfunction buildEsRangeParameters(value, operator) {\n // -- if value is greater than 1 then we assume this is a between operator : BUG this is wrong, a selectable list can have multiple values\n if (value.length > 1) {\n return {\n gte: \"\".concat(value[0]),\n lte: \"\".concat(value[1])\n };\n } // -- if value is only one we assume this is a date time query for a specific day\n\n\n var dateTime = value[0]; //TODO: Rethink about this part, what if someone adds a new type of opperator\n //todo: move this logic into config\n\n switch (operator) {\n case \"on_date\": //todo: not used\n\n case \"not_on_date\":\n case \"equal\":\n case \"select_equals\":\n case \"not_equal\":\n return {\n gte: \"\".concat(dateTime, \"||/d\"),\n lte: \"\".concat(dateTime, \"||+1d\")\n };\n\n case \"less_or_equal\":\n return {\n lte: \"\".concat(dateTime)\n };\n\n case \"greater_or_equal\":\n return {\n gte: \"\".concat(dateTime)\n };\n\n case \"less\":\n return {\n lt: \"\".concat(dateTime)\n };\n\n case \"greater\":\n return {\n gt: \"\".concat(dateTime)\n };\n\n default:\n return undefined;\n }\n}\n/**\n * Builds the DSL parameters for a Wildcard query\n *\n * @param {string} value - The match value\n * @returns {{value: string}} - The value = value parameter surrounded with * on each end\n * @private\n */\n\n\nfunction buildEsWildcardParameters(value) {\n return {\n value: \"*\" + value + \"*\"\n };\n}\n/**\n * Takes the match type string from awesome query builder like 'greater_or_equal' and\n * returns the ES occurrence required for bool queries\n *\n * @param {string} combinator - query group type or rule condition\n * @param {bool} not\n * @returns {string} - ES occurrence type. See constants.js\n * @private\n */\n\n\nfunction determineOccurrence(combinator, not) {\n //todo: move into config, like mongoConj\n switch (combinator) {\n case \"AND\":\n return not ? \"must_not\" : \"must\";\n // -- AND\n\n case \"OR\":\n return not ? \"should_not\" : \"should\";\n // -- OR\n\n case \"NOT\":\n return not ? \"must\" : \"must_not\";\n // -- NOT AND\n\n default:\n return undefined;\n }\n}\n/**\n * Determines what field to query off of given the operator type\n *\n * @param {string} fieldDataType - The type of data\n * @param {string} fullFieldName - A '.' separated string containing the property lineage (including self)\n * @param {string} queryType - The query type\n * @returns {string|*} - will be either the fullFieldName or fullFieldName.keyword\n * @private\n */\n//todo: not used\n\n\nfunction determineQueryField(fieldDataType, fullFieldName, queryType) {\n if (fieldDataType === \"boolean\") {\n return fullFieldName;\n }\n\n switch (queryType) {\n case \"term\":\n case \"wildcard\":\n return \"\".concat(fullFieldName, \".keyword\");\n\n case \"geo_bounding_box\":\n case \"range\":\n case \"match\":\n return fullFieldName;\n\n default:\n console.error(\"Can't determine query field for query type \".concat(queryType));\n return null;\n }\n}\n\nfunction buildRegexpParameters(value) {\n return {\n value: value\n };\n}\n\nfunction determineField(fieldName, config) {\n //todo: ElasticSearchTextField - not used\n //return config.fields[fieldName].ElasticSearchTextField || fieldName;\n return fieldName;\n}\n\nfunction buildParameters(queryType, value, operator, fieldName, config) {\n var textField = determineField(fieldName, config);\n\n switch (queryType) {\n case \"filter\":\n //todo: elasticSearchScript - not used\n return {\n script: config.operators[operator].elasticSearchScript(fieldName, value)\n };\n\n case \"exists\":\n return {\n field: fieldName\n };\n\n case \"match\":\n return (0, _defineProperty2[\"default\"])({}, textField, value[0]);\n\n case \"term\":\n return (0, _defineProperty2[\"default\"])({}, fieldName, value[0]);\n //todo: not used\n // need to add geo type into RAQB or remove this code\n\n case \"geo_bounding_box\":\n return (0, _defineProperty2[\"default\"])({}, fieldName, buildEsGeoPoint(value[0]));\n\n case \"range\":\n return (0, _defineProperty2[\"default\"])({}, fieldName, buildEsRangeParameters(value, operator));\n\n case \"wildcard\":\n return (0, _defineProperty2[\"default\"])({}, fieldName, buildEsWildcardParameters(value[0]));\n\n case \"regexp\":\n return (0, _defineProperty2[\"default\"])({}, fieldName, buildRegexpParameters(value[0]));\n\n default:\n return undefined;\n }\n}\n/**\n * Handles the building of the group portion of the DSL\n *\n * @param {string} fieldName - The name of the field you are building a rule for\n * @param {string} fieldDataType - The type of data this field holds\n * @param {string} value - The value of this rule\n * @param {string} operator - The condition on how the value is matched\n * @returns {object} - The ES rule\n * @private\n */\n\n\nfunction buildEsRule(fieldName, value, operator, config, valueSrc) {\n if (!fieldName || !operator || value == undefined) return undefined; // rule is not fully entered\n\n var op = operator;\n var opConfig = config.operators[op];\n if (!opConfig) return undefined; // unknown operator\n\n var _opConfig = opConfig,\n elasticSearchQueryType = _opConfig.elasticSearchQueryType; // not\n\n var not = false;\n\n if (!elasticSearchQueryType && opConfig.reversedOp) {\n not = true;\n op = opConfig.reversedOp;\n opConfig = config.operators[op];\n var _opConfig2 = opConfig;\n elasticSearchQueryType = _opConfig2.elasticSearchQueryType;\n } // handle if value 0 has multiple values like a select in a array\n\n\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, fieldName, op, valueSrc);\n var widgetConfig = config.widgets[widget];\n if (!widgetConfig) return undefined; // unknown widget\n\n var elasticSearchFormatValue = widgetConfig.elasticSearchFormatValue;\n /** In most cases the queryType will be static however in some casese (like between) the query type will change\n * based on the data type. i.e. a between time will be different than between number, date, letters etc... */\n\n var queryType;\n\n if (typeof elasticSearchQueryType === \"function\") {\n queryType = elasticSearchQueryType(widget);\n } else {\n queryType = elasticSearchQueryType;\n }\n\n if (!queryType) {\n // Not supported\n return undefined;\n }\n /** If a widget has a rule on how to format that data then use that otherwise use default way of determineing search parameters\n * */\n\n\n var parameters;\n\n if (typeof elasticSearchFormatValue === \"function\") {\n parameters = elasticSearchFormatValue(queryType, value, op, fieldName, config);\n } else {\n parameters = buildParameters(queryType, value, op, fieldName, config);\n }\n\n if (not) {\n return {\n bool: {\n must_not: (0, _defineProperty2[\"default\"])({}, queryType, _objectSpread({}, parameters))\n }\n };\n } else {\n return (0, _defineProperty2[\"default\"])({}, queryType, _objectSpread({}, parameters));\n }\n}\n/**\n * Handles the building of the group portion of the DSL\n *\n * @param {object} children - The contents of the group\n * @param {string} conjunction - The way the contents of the group are joined together i.e. AND OR\n * @param {bool} not\n * @param {Function} recursiveFxn - The recursive fxn to build the contents of the groups children\n * @private\n * @returns {object} - The ES group\n */\n\n\nfunction buildEsGroup(children, conjunction, not, recursiveFxn, config) {\n if (!children || !children.size) return undefined;\n var childrenArray = children.valueSeq().toArray();\n var occurrence = determineOccurrence(conjunction, not);\n var result = childrenArray.map(function (c) {\n return recursiveFxn(c, config);\n }).filter(function (v) {\n return v !== undefined;\n });\n if (!result.length) return undefined;\n var resultFlat = result.flat(Infinity);\n return {\n bool: (0, _defineProperty2[\"default\"])({}, occurrence, resultFlat)\n };\n}\n\nfunction elasticSearchFormat(tree, config) {\n // -- format the es dsl here\n if (!tree) return undefined;\n var type = tree.get(\"type\");\n var properties = tree.get(\"properties\") || new Map();\n\n if (type === \"rule\" && properties.get(\"field\")) {\n var _properties$get, _properties$get2;\n\n // -- field is null when a new blank rule is added\n var operator = properties.get(\"operator\");\n var field = properties.get(\"field\");\n var value = properties.get(\"value\").toJS();\n\n var _valueType = (_properties$get = properties.get(\"valueType\")) === null || _properties$get === void 0 ? void 0 : _properties$get.get(0);\n\n var valueSrc = (_properties$get2 = properties.get(\"valueSrc\")) === null || _properties$get2 === void 0 ? void 0 : _properties$get2.get(0);\n\n if (valueSrc === \"func\") {\n // -- elastic search doesn't support functions (that is post processing)\n return;\n }\n\n if (value && Array.isArray(value[0])) {\n //TODO : Handle case where the value has multiple values such as in the case of a list\n return value[0].map(function (val) {\n return buildEsRule(field, [val], operator, config, valueSrc);\n });\n } else {\n return buildEsRule(field, value, operator, config, valueSrc);\n }\n }\n\n if (type === \"group\" || type === \"rule_group\") {\n var not = properties.get(\"not\");\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = (0, _defaultUtils.defaultConjunction)(config);\n var children = tree.get(\"children1\");\n return buildEsGroup(children, conjunction, not, elasticSearchFormat, config);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _queryBuilder = require(\"./queryBuilder\");\n\nObject.keys(_queryBuilder).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _queryBuilder[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _queryBuilder[key];\n }\n });\n});\n\nvar _jsonLogic = require(\"./jsonLogic\");\n\nObject.keys(_jsonLogic).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _jsonLogic[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _jsonLogic[key];\n }\n });\n});\n\nvar _mongoDb = require(\"./mongoDb\");\n\nObject.keys(_mongoDb).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _mongoDb[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _mongoDb[key];\n }\n });\n});\n\nvar _sql = require(\"./sql\");\n\nObject.keys(_sql).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _sql[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _sql[key];\n }\n });\n});\n\nvar _spel = require(\"./spel\");\n\nObject.keys(_spel).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _spel[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _spel[key];\n }\n });\n});\n\nvar _queryString = require(\"./queryString\");\n\nObject.keys(_queryString).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _queryString[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _queryString[key];\n }\n });\n});\n\nvar _elasticSearch = require(\"./elasticSearch\");\n\nObject.keys(_elasticSearch).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _elasticSearch[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _elasticSearch[key];\n }\n });\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.jsonLogicFormat = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _funcUtils = require(\"../utils/funcUtils\");\n\nvar _immutable = require(\"immutable\");\n\nvar _omit = _interopRequireDefault(require(\"lodash/omit\"));\n\nvar _pick = _interopRequireDefault(require(\"lodash/pick\"));\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// http://jsonlogic.com/\nvar jsonLogicFormat = function jsonLogicFormat(item, config) {\n //meta is mutable\n var meta = {\n usedFields: [],\n errors: []\n };\n var logic = formatItem(item, config, meta, true); // build empty data\n\n var errors = meta.errors,\n usedFields = meta.usedFields;\n var fieldSeparator = config.settings.fieldSeparator;\n var data = {};\n\n var _iterator = _createForOfIteratorHelper(usedFields),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var ff = _step.value;\n var def = (0, _configUtils.getFieldConfig)(config, ff) || {};\n var parts = ff.split(fieldSeparator);\n var tmp = data;\n\n for (var i = 0; i < parts.length; i++) {\n var p = parts[i];\n var pdef = (0, _configUtils.getFieldConfig)(config, parts.slice(0, i + 1)) || {};\n\n if (i != parts.length - 1) {\n if (pdef.type == \"!group\" && pdef.mode != \"struct\") {\n if (!tmp[p]) tmp[p] = [{}];\n tmp = tmp[p][0];\n } else {\n if (!tmp[p]) tmp[p] = {};\n tmp = tmp[p];\n }\n } else {\n if (!tmp[p]) tmp[p] = null; // can use def.type for sample values\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return {\n errors: errors,\n logic: logic,\n data: data\n };\n};\n\nexports.jsonLogicFormat = jsonLogicFormat;\n\nvar formatItem = function formatItem(item, config, meta, isRoot) {\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!item) return undefined;\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new _immutable.Map();\n var isLocked = properties.get(\"isLocked\");\n var lockedOp = config.settings.jsonLogic.lockedOp;\n var ret;\n\n if (type === \"group\" || type === \"rule_group\") {\n ret = formatGroup(item, config, meta, isRoot, parentField);\n } else if (type === \"rule\") {\n ret = formatRule(item, config, meta, parentField);\n }\n\n if (isLocked && ret && lockedOp) {\n ret = (0, _defineProperty2[\"default\"])({}, lockedOp, ret);\n }\n\n return ret;\n};\n\nvar formatGroup = function formatGroup(item, config, meta, isRoot) {\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new _immutable.Map();\n var mode = properties.get(\"mode\");\n var children = item.get(\"children1\");\n var field = properties.get(\"field\");\n if (!children) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = (0, _defaultUtils.defaultConjunction)(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n var conj = conjunctionDefinition.jsonLogicConj || conjunction.toLowerCase();\n var not = properties.get(\"not\");\n\n if (conj != \"and\" && conj != \"or\") {\n meta.errors.push(\"Conjunction \".concat(conj, \" is not supported\"));\n return undefined;\n }\n\n var isRuleGroup = type === \"rule_group\" && !isRoot;\n var groupField = isRuleGroup && mode != \"struct\" ? field : parentField;\n var groupOperator = properties.get(\"operator\");\n var groupOperatorDefinition = groupOperator && (0, _configUtils.getOperatorConfig)(config, groupOperator, field) || null;\n var formattedValue = formatItemValue(config, properties, meta, groupOperator, parentField);\n var isGroup0 = isRuleGroup && (!groupOperator || groupOperatorDefinition.cardinality == 0);\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta, false, groupField);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n\n if (isRuleGroup && mode != \"struct\" && !isGroup0) {\n // \"count\" rule can have no \"having\" children, but should have number value\n if (formattedValue == undefined) return undefined;\n } else {\n if (!list.size) return undefined;\n }\n\n var resultQuery = {};\n if (list.size == 1 && !isRoot) resultQuery = list.first();else resultQuery[conj] = list.toList().toJS(); // revert\n\n if (not) {\n resultQuery = {\n \"!\": resultQuery\n };\n } // rule_group (issue #246)\n\n\n if (isRuleGroup && mode != \"struct\") {\n var formattedField = formatField(meta, config, field, parentField);\n\n if (isGroup0) {\n // config.settings.groupOperators\n var op = groupOperator || \"some\";\n resultQuery = (0, _defineProperty2[\"default\"])({}, op, [formattedField, resultQuery]);\n } else {\n // there is rule for count\n var filter = !list.size ? formattedField : {\n \"filter\": [formattedField, resultQuery]\n };\n var count = {\n \"reduce\": [filter, {\n \"+\": [1, {\n \"var\": \"accumulator\"\n }]\n }, 0]\n };\n resultQuery = formatLogic(config, properties, count, formattedValue, groupOperator);\n }\n }\n\n return resultQuery;\n};\n\nvar formatRule = function formatRule(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var properties = item.get(\"properties\") || new _immutable.Map();\n var field = properties.get(\"field\");\n var operator = properties.get(\"operator\");\n var operatorOptions = properties.get(\"operatorOptions\");\n operatorOptions = operatorOptions ? operatorOptions.toJS() : null;\n if (operatorOptions && !Object.keys(operatorOptions).length) operatorOptions = null;\n if (field == null || operator == null) return undefined;\n var fieldDefinition = (0, _configUtils.getFieldConfig)(config, field) || {};\n var operatorDefinition = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var reversedOp = operatorDefinition.reversedOp;\n var revOperatorDefinition = (0, _configUtils.getOperatorConfig)(config, reversedOp, field) || {}; // check op\n\n var isRev = false;\n\n if (!operatorDefinition.jsonLogic && !revOperatorDefinition.jsonLogic) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n\n if (!operatorDefinition.jsonLogic && revOperatorDefinition.jsonLogic) {\n isRev = true;\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOperatorDefinition, operatorDefinition];\n operatorDefinition = _ref2[0];\n revOperatorDefinition = _ref2[1];\n }\n\n var formattedValue = formatItemValue(config, properties, meta, operator, parentField);\n if (formattedValue === undefined) return undefined;\n var formattedField = formatField(meta, config, field, parentField);\n return formatLogic(config, properties, formattedField, formattedValue, operator, operatorOptions, fieldDefinition, isRev);\n};\n\nvar formatItemValue = function formatItemValue(config, properties, meta, operator, parentField) {\n var field = properties.get(\"field\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n var fieldDefinition = (0, _configUtils.getFieldConfig)(config, field) || {};\n var operatorDefinition = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var cardinality = (0, _stuff.defaultValue)(operatorDefinition.cardinality, 1);\n var iValue = properties.get(\"value\");\n var asyncListValues = properties.get(\"asyncListValues\");\n if (iValue == undefined) return undefined;\n var valueSrcs = [];\n var valueTypes = [];\n var oldUsedFields = meta.usedFields;\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = (0, _funcUtils.completeValue)(currentValue, valueSrc, config);\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var fieldWidgetDef = (0, _omit[\"default\"])((0, _configUtils.getFieldWidgetConfig)(config, field, operator, widget, valueSrc), [\"factory\"]);\n var fv = formatValue(meta, config, cValue, valueSrc, valueType, fieldWidgetDef, fieldDefinition, operator, operatorDefinition, parentField, asyncListValues);\n\n if (fv !== undefined) {\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n\n return fv;\n });\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n\n if (fvalue.size < cardinality || hasUndefinedValues) {\n meta.usedFields = oldUsedFields; // restore\n\n return undefined;\n }\n\n return cardinality > 1 ? fvalue.toArray() : cardinality == 1 ? fvalue.first() : null;\n};\n\nvar formatValue = function formatValue(meta, config, currentValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDef) {\n var parentField = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : null;\n var asyncListValues = arguments.length > 10 ? arguments[10] : undefined;\n if (currentValue === undefined) return undefined;\n var ret;\n\n if (valueSrc == \"field\") {\n ret = formatField(meta, config, currentValue, parentField);\n } else if (valueSrc == \"func\") {\n ret = formatFunc(meta, config, currentValue, parentField);\n } else if (typeof fieldWidgetDef.jsonLogic === \"function\") {\n var fn = fieldWidgetDef.jsonLogic;\n var args = [currentValue, _objectSpread(_objectSpread({}, (0, _pick[\"default\"])(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }), //useful options: valueFormat for date/time\n (0, _omit[\"default\"])(fieldWidgetDef, [\"formatValue\", \"mongoFormatValue\", \"sqlFormatValue\", \"jsonLogic\", \"elasticSearchFormatValue\", \"spelFormatValue\"])];\n\n if (operator) {\n args.push(operator);\n args.push(operatorDef);\n }\n\n ret = fn.apply(void 0, args);\n } else {\n ret = currentValue;\n }\n\n return ret;\n};\n\nvar formatFunc = function formatFunc(meta, config, currentValue) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var funcKey = currentValue.get(\"func\");\n var args = currentValue.get(\"args\");\n var funcConfig = (0, _configUtils.getFuncConfig)(config, funcKey);\n\n if (!funcConfig.jsonLogic) {\n meta.errors.push(\"Func \".concat(funcKey, \" is not supported\"));\n return undefined;\n }\n\n var formattedArgs = {};\n\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var fieldDef = (0, _configUtils.getFieldConfig)(config, argConfig);\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var formattedArgVal = formatValue(meta, config, argValue, argValueSrc, argConfig.type, fieldDef, argConfig, null, null, parentField);\n\n if (argValue != undefined && formattedArgVal === undefined) {\n meta.errors.push(\"Can't format value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n\n if (formattedArgVal !== undefined) {\n // skip optional in the end\n formattedArgs[argKey] = formattedArgVal;\n }\n }\n\n var formattedArgsArr = Object.values(formattedArgs);\n var ret;\n\n if (typeof funcConfig.jsonLogic === \"function\") {\n var fn = funcConfig.jsonLogic;\n var _args = [formattedArgs];\n ret = fn.apply(void 0, _args);\n } else {\n var funcName = funcConfig.jsonLogic || funcKey;\n var isMethod = !!funcConfig.jsonLogicIsMethod;\n\n if (isMethod) {\n var obj = formattedArgsArr[0],\n params = formattedArgsArr.slice(1);\n\n if (params.length) {\n ret = {\n \"method\": [obj, funcName, params]\n };\n } else {\n ret = {\n \"method\": [obj, funcName]\n };\n }\n } else {\n ret = (0, _defineProperty2[\"default\"])({}, funcName, formattedArgsArr);\n }\n }\n\n return ret;\n};\n\nvar formatField = function formatField(meta, config, field) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var _config$settings = config.settings,\n fieldSeparator = _config$settings.fieldSeparator,\n jsonLogic = _config$settings.jsonLogic;\n var ret;\n\n if (field) {\n if (Array.isArray(field)) field = field.join(fieldSeparator);\n var fieldDef = (0, _configUtils.getFieldConfig)(config, field) || {};\n var fieldName = field;\n\n if (fieldDef.fieldName) {\n fieldName = fieldDef.fieldName;\n }\n\n if (parentField) {\n var parentFieldDef = (0, _configUtils.getFieldConfig)(config, parentField) || {};\n var parentFieldName = parentField;\n\n if (parentFieldDef.fieldName) {\n parentFieldName = parentFieldDef.fieldName;\n }\n\n if (fieldName.indexOf(parentFieldName + fieldSeparator) == 0) {\n fieldName = fieldName.slice((parentFieldName + fieldSeparator).length);\n } else {\n meta.errors.push(\"Can't cut group \".concat(parentFieldName, \" from field \").concat(fieldName));\n }\n }\n\n var varName = fieldDef.jsonLogicVar || (fieldDef.type == \"!group\" ? jsonLogic.groupVarKey : \"var\");\n ret = (0, _defineProperty2[\"default\"])({}, varName, fieldName);\n if (meta.usedFields.indexOf(field) == -1) meta.usedFields.push(field);\n }\n\n return ret;\n};\n\nvar buildFnToFormatOp = function buildFnToFormatOp(operator, operatorDefinition, formattedField, formattedValue) {\n var formatteOp = operator;\n var cardinality = (0, _stuff.defaultValue)(operatorDefinition.cardinality, 1);\n var isReverseArgs = (0, _stuff.defaultValue)(operatorDefinition._jsonLogicIsRevArgs, false);\n if (typeof operatorDefinition.jsonLogic == \"string\") formatteOp = operatorDefinition.jsonLogic;\n var rangeOps = [\"<\", \"<=\", \">\", \">=\"];\n var eqOps = [\"==\", \"!=\"];\n\n var fn = function fn(field, op, val, opDef, opOpts) {\n if (cardinality == 0 && eqOps.includes(formatteOp)) return (0, _defineProperty2[\"default\"])({}, formatteOp, [formattedField, null]);else if (cardinality == 0) return (0, _defineProperty2[\"default\"])({}, formatteOp, formattedField);else if (cardinality == 1 && isReverseArgs) return (0, _defineProperty2[\"default\"])({}, formatteOp, [formattedValue, formattedField]);else if (cardinality == 1) return (0, _defineProperty2[\"default\"])({}, formatteOp, [formattedField, formattedValue]);else if (cardinality == 2 && rangeOps.includes(formatteOp)) return (0, _defineProperty2[\"default\"])({}, formatteOp, [formattedValue[0], formattedField, formattedValue[1]]);else return (0, _defineProperty2[\"default\"])({}, formatteOp, [formattedField].concat((0, _toConsumableArray2[\"default\"])(formattedValue)));\n };\n\n return fn;\n};\n\nvar formatLogic = function formatLogic(config, properties, formattedField, formattedValue, operator) {\n var operatorOptions = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var fieldDefinition = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n var isRev = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n var field = properties.get(\"field\");\n var operatorDefinition = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var fn = typeof operatorDefinition.jsonLogic == \"function\" ? operatorDefinition.jsonLogic : buildFnToFormatOp(operator, operatorDefinition, formattedField, formattedValue);\n var args = [formattedField, operator, formattedValue, (0, _omit[\"default\"])(operatorDefinition, [\"formatOp\", \"mongoFormatOp\", \"sqlFormatOp\", \"jsonLogic\", \"spelFormatOp\"]), operatorOptions, fieldDefinition];\n var ruleQuery = fn.apply(void 0, args);\n\n if (isRev) {\n ruleQuery = {\n \"!\": ruleQuery\n };\n }\n\n return ruleQuery;\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mongodbFormat = exports._mongodbFormat = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _funcUtils = require(\"../utils/funcUtils\");\n\nvar _omit = _interopRequireDefault(require(\"lodash/omit\"));\n\nvar _pick = _interopRequireDefault(require(\"lodash/pick\"));\n\nvar _immutable = require(\"immutable\");\n\nvar _default = require(\"../config/default\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n// helpers\nvar isObject = function isObject(v) {\n return (0, _typeof2[\"default\"])(v) == \"object\" && v !== null && !Array.isArray(v);\n};\n\nvar mongodbFormat = function mongodbFormat(tree, config) {\n return _mongodbFormat(tree, config, false);\n};\n\nexports.mongodbFormat = mongodbFormat;\n\nvar _mongodbFormat = function _mongodbFormat(tree, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = {\n errors: []\n };\n var res = formatItem([], tree, config, meta);\n\n if (returnErrors) {\n return [res, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while exporting to MongoDb:\", meta.errors);\n return res;\n }\n};\n\nexports._mongodbFormat = _mongodbFormat;\n\nvar formatItem = function formatItem(parents, item, config, meta) {\n var _not = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var _canWrapExpr = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\n var _fieldName = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : undefined;\n\n var _value = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;\n\n if (!item) return undefined;\n var type = item.get(\"type\");\n\n if (type === \"group\" || type === \"rule_group\") {\n return formatGroup(parents, item, config, meta, _not, _canWrapExpr, _fieldName, _value);\n } else if (type === \"rule\") {\n return formatRule(parents, item, config, meta, _not, _canWrapExpr, _fieldName, _value);\n }\n\n return undefined;\n};\n\nvar formatGroup = function formatGroup(parents, item, config, meta) {\n var _not = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var _canWrapExpr = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\n var _fieldName = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : undefined;\n\n var _value = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;\n\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new _immutable.Map();\n var children = item.get(\"children1\");\n var canShortMongoQuery = config.settings.canShortMongoQuery;\n if (!children) return undefined;\n var hasParentRuleGroup = parents.filter(function (it) {\n return it.get(\"type\") == \"rule_group\";\n }).length > 0;\n var parentPath = parents.filter(function (it) {\n return it.get(\"type\") == \"rule_group\";\n }).map(function (it) {\n return it.get(\"properties\").get(\"field\");\n }).slice(-1).pop();\n var realParentPath = hasParentRuleGroup && parentPath;\n var groupField = type === \"rule_group\" ? properties.get(\"field\") : null;\n var groupFieldName = formatFieldName(groupField, config, meta, realParentPath);\n var groupFieldDef = (0, _configUtils.getFieldConfig)(config, groupField) || {};\n var mode = groupFieldDef.mode; //properties.get(\"mode\");\n\n var canHaveEmptyChildren = groupField && mode == \"array\";\n var not = _not ? !properties.get(\"not\") : properties.get(\"not\");\n var list = children.map(function (currentChild) {\n return formatItem([].concat((0, _toConsumableArray2[\"default\"])(parents), [item]), currentChild, config, meta, not, true, mode == \"array\" ? function (f) {\n return \"$$el.\".concat(f);\n } : undefined);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (!canHaveEmptyChildren && !list.size) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = (0, _defaultUtils.defaultConjunction)(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n var reversedConj = conjunctionDefinition.reversedConj;\n\n if (not && reversedConj) {\n conjunction = reversedConj;\n conjunctionDefinition = config.conjunctions[conjunction];\n }\n\n var mongoConj = conjunctionDefinition.mongoConj;\n var resultQuery;\n\n if (list.size == 1) {\n resultQuery = list.first();\n } else if (list.size > 1) {\n var rules = list.toList().toJS();\n var canShort = canShortMongoQuery && mongoConj == \"$and\";\n\n if (canShort) {\n resultQuery = rules.reduce(function (acc, rule) {\n if (!acc) return undefined;\n\n for (var k in rule) {\n if (k[0] == \"$\") {\n acc = undefined;\n break;\n }\n\n if (acc[k] == undefined) {\n acc[k] = rule[k];\n } else {\n // https://github.com/ukrbublik/react-awesome-query-builder/issues/182\n var prev = acc[k],\n next = rule[k];\n\n if (!isObject(prev)) {\n prev = {\n \"$eq\": prev\n };\n }\n\n if (!isObject(next)) {\n next = {\n \"$eq\": next\n };\n }\n\n var prevOp = Object.keys(prev)[0],\n nextOp = Object.keys(next)[0];\n\n if (prevOp == nextOp) {\n acc = undefined;\n break;\n }\n\n acc[k] = Object.assign({}, prev, next);\n }\n }\n\n return acc;\n }, {});\n }\n\n if (!resultQuery) // can't be shorten\n resultQuery = (0, _defineProperty2[\"default\"])({}, mongoConj, rules);\n }\n\n if (groupField) {\n if (mode == \"array\") {\n var totalQuery = {\n \"$size\": groupFieldName\n };\n var filterQuery = resultQuery ? {\n \"$size\": {\n \"$filter\": {\n input: \"$\" + groupFieldName,\n as: \"el\",\n cond: resultQuery\n }\n }\n } : totalQuery;\n resultQuery = formatItem(parents, item.set(\"type\", \"rule\"), config, meta, false, false, function (_f) {\n return filterQuery;\n }, totalQuery);\n resultQuery = {\n \"$expr\": resultQuery\n };\n } else {\n resultQuery = (0, _defineProperty2[\"default\"])({}, groupFieldName, {\n \"$elemMatch\": resultQuery\n });\n }\n }\n\n return resultQuery;\n};\n\nvar formatRule = function formatRule(parents, item, config, meta) {\n var _not = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var _canWrapExpr = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\n var _fieldName = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : undefined;\n\n var _value = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;\n\n var properties = item.get(\"properties\") || new _immutable.Map();\n var hasParentRuleGroup = parents.filter(function (it) {\n return it.get(\"type\") == \"rule_group\";\n }).length > 0;\n var parentPath = parents.filter(function (it) {\n return it.get(\"type\") == \"rule_group\";\n }).map(function (it) {\n return it.get(\"properties\").get(\"field\");\n }).slice(-1).pop();\n var realParentPath = hasParentRuleGroup && parentPath;\n var operator = properties.get(\"operator\");\n var operatorOptions = properties.get(\"operatorOptions\");\n var field = properties.get(\"field\");\n var iValue = properties.get(\"value\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n var asyncListValues = properties.get(\"asyncListValues\");\n if (field == null || operator == null || iValue === undefined) return undefined;\n var fieldDef = (0, _configUtils.getFieldConfig)(config, field) || {};\n var operatorDefinition = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var reversedOp = operatorDefinition.reversedOp;\n var revOperatorDefinition = (0, _configUtils.getOperatorConfig)(config, reversedOp, field) || {};\n var cardinality = (0, _stuff.defaultValue)(operatorDefinition.cardinality, 1);\n var not = _not;\n\n if (not && reversedOp) {\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOperatorDefinition, operatorDefinition];\n operatorDefinition = _ref2[0];\n revOperatorDefinition = _ref2[1];\n not = false;\n }\n\n var fieldName = formatFieldName(field, config, meta, realParentPath); //format value\n\n var valueSrcs = [];\n var valueTypes = [];\n var useExpr = false;\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = (0, _funcUtils.completeValue)(currentValue, valueSrc, config);\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var fieldWidgetDef = (0, _omit[\"default\"])((0, _configUtils.getFieldWidgetConfig)(config, field, operator, widget, valueSrc), [\"factory\"]);\n\n var _formatValue = formatValue(meta, config, cValue, valueSrc, valueType, fieldWidgetDef, fieldDef, realParentPath, operator, operatorDefinition, asyncListValues),\n _formatValue2 = (0, _slicedToArray2[\"default\"])(_formatValue, 2),\n fv = _formatValue2[0],\n fvUseExpr = _formatValue2[1];\n\n if (fv !== undefined) {\n useExpr = useExpr || fvUseExpr;\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n\n return fv;\n });\n if (_fieldName) useExpr = true;\n var wrapExpr = useExpr && _canWrapExpr;\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n if (fvalue.size < cardinality || hasUndefinedValues) return undefined;\n var formattedValue = cardinality > 1 ? fvalue.toArray() : cardinality == 1 ? fvalue.first() : null; //build rule\n\n var fn = operatorDefinition.mongoFormatOp;\n\n if (!fn) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n\n var args = [_fieldName ? _fieldName(fieldName) : fieldName, operator, _value !== undefined && formattedValue == null ? _value : formattedValue, useExpr, valueSrcs.length > 1 ? valueSrcs : valueSrcs[0], valueTypes.length > 1 ? valueTypes : valueTypes[0], (0, _omit[\"default\"])(operatorDefinition, [\"formatOp\", \"mongoFormatOp\", \"sqlFormatOp\", \"jsonLogic\", \"spelFormatOp\"]), operatorOptions, fieldDef];\n var ruleQuery = fn.apply(void 0, args);\n\n if (wrapExpr) {\n ruleQuery = {\n \"$expr\": ruleQuery\n };\n }\n\n if (not) {\n ruleQuery = {\n \"$not\": ruleQuery\n };\n }\n\n return ruleQuery;\n};\n\nvar formatValue = function formatValue(meta, config, currentValue, valueSrc, valueType, fieldWidgetDef, fieldDef, parentPath, operator, operatorDef, asyncListValues) {\n if (currentValue === undefined) return [undefined, false];\n var ret;\n var useExpr = false;\n\n if (valueSrc == \"field\") {\n var _formatRightField = formatRightField(meta, config, currentValue, parentPath);\n\n var _formatRightField2 = (0, _slicedToArray2[\"default\"])(_formatRightField, 2);\n\n ret = _formatRightField2[0];\n useExpr = _formatRightField2[1];\n } else if (valueSrc == \"func\") {\n var _formatFunc = formatFunc(meta, config, currentValue, parentPath);\n\n var _formatFunc2 = (0, _slicedToArray2[\"default\"])(_formatFunc, 2);\n\n ret = _formatFunc2[0];\n useExpr = _formatFunc2[1];\n } else {\n if (typeof fieldWidgetDef.mongoFormatValue === \"function\") {\n var fn = fieldWidgetDef.mongoFormatValue;\n var args = [currentValue, _objectSpread(_objectSpread({}, (0, _pick[\"default\"])(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }), //useful options: valueFormat for date/time\n (0, _omit[\"default\"])(fieldWidgetDef, [\"formatValue\", \"mongoFormatValue\", \"sqlFormatValue\", \"jsonLogic\", \"elasticSearchFormatValue\", \"spelFormatValue\"])];\n\n if (operator) {\n args.push(operator);\n args.push(operatorDef);\n }\n\n ret = fn.apply(void 0, args);\n } else {\n ret = currentValue;\n }\n }\n\n return [ret, useExpr];\n};\n\nvar formatFieldName = function formatFieldName(field, config, meta, parentPath) {\n if (!field) return;\n var fieldDef = (0, _configUtils.getFieldConfig)(config, field) || {};\n var fieldSeparator = config.settings.fieldSeparator;\n var fieldParts = Array.isArray(field) ? field : field.split(fieldSeparator);\n var fieldName = Array.isArray(field) ? field.join(fieldSeparator) : field; // if (fieldDef.tableName) { // legacy\n // const fieldPartsCopy = [...fieldParts];\n // fieldPartsCopy[0] = fieldDef.tableName;\n // fieldName = fieldPartsCopy.join(fieldSeparator);\n // }\n\n if (fieldDef.fieldName) {\n fieldName = fieldDef.fieldName;\n }\n\n if (parentPath) {\n var parentFieldDef = (0, _configUtils.getFieldConfig)(config, parentPath) || {};\n var parentFieldName = parentPath;\n\n if (parentFieldDef.fieldName) {\n parentFieldName = parentFieldDef.fieldName;\n }\n\n if (fieldName.indexOf(parentFieldName + \".\") == 0) {\n fieldName = fieldName.slice((parentFieldName + \".\").length);\n } else {\n meta.errors.push(\"Can't cut group \".concat(parentFieldName, \" from field \").concat(fieldName));\n }\n }\n\n return fieldName;\n};\n\nvar formatRightField = function formatRightField(meta, config, rightField, parentPath) {\n var fieldSeparator = config.settings.fieldSeparator;\n var ret;\n var useExpr = true;\n\n if (rightField) {\n var rightFieldDefinition = (0, _configUtils.getFieldConfig)(config, rightField) || {};\n var fieldParts = Array.isArray(rightField) ? rightField : rightField.split(fieldSeparator);\n\n var _fieldKeys = (0, _ruleUtils.getFieldPath)(rightField, config);\n\n var fieldPartsLabels = (0, _ruleUtils.getFieldPathLabels)(rightField, config);\n var fieldFullLabel = fieldPartsLabels ? fieldPartsLabels.join(fieldSeparator) : null;\n var formatFieldFn = config.settings.formatField || _default.settings.formatField;\n var rightFieldName = formatFieldName(rightField, config, meta, parentPath);\n var formattedField = formatFieldFn(rightFieldName, fieldParts, fieldFullLabel, rightFieldDefinition, config, false);\n ret = \"$\" + formattedField;\n }\n\n return [ret, useExpr];\n};\n\nvar formatFunc = function formatFunc(meta, config, currentValue, parentPath) {\n var useExpr = true;\n var ret;\n var funcKey = currentValue.get(\"func\");\n var args = currentValue.get(\"args\");\n var funcConfig = (0, _configUtils.getFuncConfig)(config, funcKey);\n var funcName = funcConfig.mongoFunc || funcKey;\n var mongoArgsAsObject = funcConfig.mongoArgsAsObject;\n var formattedArgs = {};\n var argsCnt = 0;\n var lastArg = undefined;\n\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var fieldDef = (0, _configUtils.getFieldConfig)(config, argConfig);\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var argAsyncListValues = argVal ? argVal.get(\"asyncListValues\") : undefined;\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, fieldDef, null, argValueSrc);\n var fieldWidgetDef = (0, _omit[\"default\"])((0, _configUtils.getFieldWidgetConfig)(config, fieldDef, null, widget, argValueSrc), [\"factory\"]);\n\n var _formatValue3 = formatValue(meta, config, argValue, argValueSrc, argConfig.type, fieldWidgetDef, fieldDef, parentPath, null, null, argAsyncListValues),\n _formatValue4 = (0, _slicedToArray2[\"default\"])(_formatValue3, 2),\n formattedArgVal = _formatValue4[0],\n _argUseExpr = _formatValue4[1];\n\n if (argValue != undefined && formattedArgVal === undefined) {\n meta.errors.push(\"Can't format value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return [undefined, false];\n }\n\n argsCnt++;\n\n if (formattedArgVal !== undefined) {\n // skip optional in the end\n formattedArgs[argKey] = formattedArgVal;\n lastArg = formattedArgVal;\n }\n }\n\n if (typeof funcConfig.mongoFormatFunc === \"function\") {\n var fn = funcConfig.mongoFormatFunc;\n var _args = [formattedArgs];\n ret = fn.apply(void 0, _args);\n } else if (funcConfig.mongoFormatFunc === null) {\n meta.errors.push(\"Functon \".concat(funcName, \" is not supported\"));\n return [undefined, false];\n } else {\n if (mongoArgsAsObject) ret = (0, _defineProperty2[\"default\"])({}, funcName, formattedArgs);else if (argsCnt == 1 && lastArg !== undefined) ret = (0, _defineProperty2[\"default\"])({}, funcName, lastArg);else ret = (0, _defineProperty2[\"default\"])({}, funcName, Object.values(formattedArgs));\n }\n\n return [ret, useExpr];\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.queryBuilderFormat = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _funcUtils = require(\"../utils/funcUtils\");\n\nvar _immutable = require(\"immutable\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n/*\n Build tree to http://querybuilder.js.org/ like format\n\n Example:\n {\n \"condition\": \"AND\",\n \"rules\": [\n {\n \"id\": \"price\",\n \"field\": \"price\",\n \"type\": \"double\",\n \"input\": \"text\",\n \"operator\": \"less\",\n \"value\": \"10.25\"\n },\n {\n \"condition\": \"OR\",\n \"rules\": [\n {\n \"id\": \"category\",\n \"field\": \"category\",\n \"type\": \"integer\",\n \"input\": \"select\",\n \"operator\": \"equal\",\n \"value\": \"2\"\n },\n {\n \"id\": \"category\",\n \"field\": \"category\",\n \"type\": \"integer\",\n \"input\": \"select\",\n \"operator\": \"equal\",\n \"value\": \"1\"\n }\n ]\n }\n ]\n }\n */\nvar queryBuilderFormat = function queryBuilderFormat(item, config) {\n //meta is mutable\n var meta = {\n usedFields: []\n };\n var res = formatItem(item, config, meta);\n if (!res) return undefined;\n return _objectSpread(_objectSpread({}, res), meta);\n};\n\nexports.queryBuilderFormat = queryBuilderFormat;\n\nvar formatItem = function formatItem(item, config, meta) {\n if (!item) return undefined;\n var type = item.get(\"type\");\n var children = item.get(\"children1\");\n\n if ((type === \"group\" || type === \"rule_group\") && children && children.size) {\n return formatGroup(item, config, meta);\n } else if (type === \"rule\") {\n return formatRule(item, config, meta);\n }\n\n return undefined;\n};\n\nvar formatGroup = function formatGroup(item, config, meta) {\n var properties = item.get(\"properties\") || new _immutable.Map();\n var children = item.get(\"children1\");\n var id = item.get(\"id\");\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (!list.size) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = (0, _defaultUtils.defaultConjunction)(config);\n var not = properties.get(\"not\");\n var resultQuery = {\n id: id,\n rules: list.toList(),\n condition: conjunction.toUpperCase(),\n not: not\n };\n return resultQuery;\n};\n\nvar formatRule = function formatRule(item, config, meta) {\n var properties = item.get(\"properties\") || new _immutable.Map();\n var id = item.get(\"id\");\n var operator = properties.get(\"operator\");\n var options = properties.get(\"operatorOptions\");\n var field = properties.get(\"field\");\n var value = properties.get(\"value\");\n var valueSrc = properties.get(\"valueSrc\");\n var valueType = properties.get(\"valueType\");\n var hasUndefinedValues = value.filter(function (v) {\n return v === undefined;\n }).size > 0;\n if (field == null || operator == null || hasUndefinedValues) return undefined;\n var fieldDefinition = (0, _configUtils.getFieldConfig)(config, field) || {};\n var operatorDefinition = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var fieldType = fieldDefinition.type || \"undefined\";\n var cardinality = (0, _stuff.defaultValue)(operatorDefinition.cardinality, 1);\n var typeConfig = config.types[fieldDefinition.type] || {};\n var fieldName = (0, _ruleUtils.formatFieldName)(field, config, meta);\n if (value.size < cardinality) return undefined;\n if (meta.usedFields.indexOf(field) == -1) meta.usedFields.push(field);\n value = value.toArray();\n valueSrc = valueSrc.toArray();\n valueType = valueType.toArray();\n var values = [];\n\n for (var i = 0; i < value.length; i++) {\n var val = {\n type: valueType[i],\n value: value[i]\n };\n values.push(val);\n\n if (valueSrc[i] == \"field\") {\n var secondField = value[i];\n if (meta.usedFields.indexOf(secondField) == -1) meta.usedFields.push(secondField);\n }\n }\n\n var operatorOptions = options ? options.toJS() : null;\n if (operatorOptions && !Object.keys(operatorOptions).length) operatorOptions = null;\n var ruleQuery = {\n id: id,\n fieldName: fieldName,\n type: fieldType,\n input: typeConfig.mainWidget,\n operator: operator\n };\n if (operatorOptions) ruleQuery.operatorOptions = operatorOptions;\n ruleQuery.values = values;\n return ruleQuery;\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.queryString = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _omit = _interopRequireDefault(require(\"lodash/omit\"));\n\nvar _pick = _interopRequireDefault(require(\"lodash/pick\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _default = require(\"../config/default\");\n\nvar _funcUtils = require(\"../utils/funcUtils\");\n\nvar _immutable = require(\"immutable\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar queryString = function queryString(item, config) {\n var isForDisplay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n //meta is mutable\n var meta = {\n errors: []\n };\n var res = formatItem(item, config, meta, isForDisplay, null);\n if (meta.errors.length) console.warn(\"Errors while exporting to string:\", meta.errors);\n return res;\n};\n\nexports.queryString = queryString;\n\nvar formatItem = function formatItem(item, config, meta) {\n var isForDisplay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!item) return undefined;\n var type = item.get(\"type\");\n var children = item.get(\"children1\");\n\n if (type === \"group\" || type === \"rule_group\") {\n return formatGroup(item, config, meta, isForDisplay, parentField);\n } else if (type === \"rule\") {\n return formatRule(item, config, meta, isForDisplay, parentField);\n }\n\n return undefined;\n};\n\nvar formatGroup = function formatGroup(item, config, meta) {\n var isForDisplay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new _immutable.Map();\n var mode = properties.get(\"mode\");\n var children = item.get(\"children1\");\n if (!children) return undefined;\n var isRuleGroup = type === \"rule_group\"; // TIP: don't cut group for mode == 'struct' and don't do aggr format (maybe later)\n\n var groupField = isRuleGroup && mode == \"array\" ? properties.get(\"field\") : null;\n var canHaveEmptyChildren = isRuleGroup && mode == \"array\";\n var not = properties.get(\"not\");\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta, isForDisplay, groupField);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (!canHaveEmptyChildren && !list.size) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = (0, _defaultUtils.defaultConjunction)(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n var conjStr = list.size ? conjunctionDefinition.formatConj(list, conjunction, not, isForDisplay) : null;\n var ret;\n\n if (groupField) {\n var aggrArgs = formatRule(item, config, meta, isForDisplay, parentField, true);\n\n if (aggrArgs) {\n var _config$settings;\n\n var isRev = aggrArgs.pop();\n var args = [conjStr].concat((0, _toConsumableArray2[\"default\"])(aggrArgs));\n ret = (_config$settings = config.settings).formatAggr.apply(_config$settings, (0, _toConsumableArray2[\"default\"])(args));\n\n if (isRev) {\n ret = config.settings.formatReverse(ret, null, null, null, null, isForDisplay);\n }\n }\n } else {\n ret = conjStr;\n }\n\n return ret;\n};\n\nvar formatItemValue = function formatItemValue(config, properties, meta, _operator, isForDisplay, parentField) {\n var field = properties.get(\"field\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n var fieldDef = (0, _configUtils.getFieldConfig)(config, field) || {};\n\n var operator = _operator || properties.get(\"operator\");\n\n var operatorDef = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var cardinality = (0, _stuff.defaultValue)(operatorDef.cardinality, 1);\n var iValue = properties.get(\"value\");\n var asyncListValues = properties.get(\"asyncListValues\");\n var valueSrcs = [];\n var valueTypes = [];\n var formattedValue;\n\n if (iValue != undefined) {\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = (0, _funcUtils.completeValue)(currentValue, valueSrc, config);\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var fieldWidgetDef = (0, _omit[\"default\"])((0, _configUtils.getFieldWidgetConfig)(config, field, operator, widget, valueSrc), [\"factory\"]);\n var fv = formatValue(config, meta, cValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDef, isForDisplay, parentField, asyncListValues);\n\n if (fv !== undefined) {\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n\n return fv;\n });\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n\n if (!(hasUndefinedValues || fvalue.size < cardinality)) {\n formattedValue = cardinality == 1 ? fvalue.first() : fvalue;\n }\n }\n\n return [formattedValue, valueSrcs.length > 1 ? valueSrcs : valueSrcs[0], valueTypes.length > 1 ? valueTypes : valueTypes[0]];\n};\n\nvar buildFnToFormatOp = function buildFnToFormatOp(operator, operatorDefinition) {\n var fop = operatorDefinition.labelForFormat || operator;\n var cardinality = (0, _stuff.defaultValue)(operatorDefinition.cardinality, 1);\n var fn;\n\n if (cardinality == 0) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return \"\".concat(field, \" \").concat(fop);\n };\n } else if (cardinality == 1) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return \"\".concat(field, \" \").concat(fop, \" \").concat(values);\n };\n } else if (cardinality == 2) {\n // between\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n var valFrom = values.first();\n var valTo = values.get(1);\n return \"\".concat(field, \" \").concat(fop, \" \").concat(valFrom, \" AND \").concat(valTo);\n };\n }\n\n return fn;\n};\n\nvar formatRule = function formatRule(item, config, meta) {\n var isForDisplay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var returnArgs = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var properties = item.get(\"properties\") || new _immutable.Map();\n var field = properties.get(\"field\");\n var operator = properties.get(\"operator\");\n var operatorOptions = properties.get(\"operatorOptions\");\n if (field == null || operator == null) return undefined;\n var fieldDef = (0, _configUtils.getFieldConfig)(config, field) || {};\n var operatorDef = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var reversedOp = operatorDef.reversedOp;\n var revOperatorDef = (0, _configUtils.getOperatorConfig)(config, reversedOp, field) || {}; //check op\n\n var isRev = false;\n var fn = operatorDef.formatOp;\n\n if (!fn && reversedOp) {\n fn = revOperatorDef.formatOp;\n\n if (fn) {\n isRev = true;\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOperatorDef, operatorDef];\n operatorDef = _ref2[0];\n revOperatorDef = _ref2[1];\n }\n } //find fn to format expr\n\n\n if (!fn) fn = buildFnToFormatOp(operator, operatorDef);\n if (!fn) return undefined; //format field\n\n var formattedField = formatField(config, meta, field, isForDisplay, parentField); //format value\n\n var _formatItemValue = formatItemValue(config, properties, meta, operator, isForDisplay, parentField),\n _formatItemValue2 = (0, _slicedToArray2[\"default\"])(_formatItemValue, 3),\n formattedValue = _formatItemValue2[0],\n valueSrc = _formatItemValue2[1],\n valueType = _formatItemValue2[2];\n\n if (formattedValue === undefined) return undefined;\n var args = [formattedField, operator, formattedValue, valueSrc, valueType, (0, _omit[\"default\"])(operatorDef, [\"formatOp\", \"mongoFormatOp\", \"sqlFormatOp\", \"jsonLogic\", \"spelFormatOp\"]), operatorOptions, isForDisplay, fieldDef, isRev];\n\n if (returnArgs) {\n return args;\n } else {\n //format expr\n var ret = fn.apply(void 0, args); //rev\n\n if (isRev) {\n ret = config.settings.formatReverse(ret, operator, reversedOp, operatorDef, revOperatorDef, isForDisplay);\n }\n\n return ret;\n }\n};\n\nvar formatValue = function formatValue(config, meta, value, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, opDef, isForDisplay) {\n var parentField = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : null;\n var asyncListValues = arguments.length > 11 ? arguments[11] : undefined;\n if (value === undefined) return undefined;\n var ret;\n\n if (valueSrc == \"field\") {\n ret = formatField(config, meta, value, isForDisplay, parentField);\n } else if (valueSrc == \"func\") {\n ret = formatFunc(config, meta, value, isForDisplay, parentField);\n } else {\n if (typeof fieldWidgetDef.formatValue === \"function\") {\n var fn = fieldWidgetDef.formatValue;\n var args = [value, _objectSpread(_objectSpread({}, (0, _pick[\"default\"])(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }), //useful options: valueFormat for date/time\n (0, _omit[\"default\"])(fieldWidgetDef, [\"formatValue\", \"mongoFormatValue\", \"sqlFormatValue\", \"jsonLogic\", \"elasticSearchFormatValue\", \"spelFormatValue\"]), isForDisplay];\n\n if (operator) {\n args.push(operator);\n args.push(opDef);\n }\n\n if (valueSrc == \"field\") {\n var valFieldDefinition = (0, _configUtils.getFieldConfig)(config, value) || {};\n args.push(valFieldDefinition);\n }\n\n ret = fn.apply(void 0, args);\n } else {\n ret = value;\n }\n }\n\n return ret;\n};\n\nvar formatField = function formatField(config, meta, field, isForDisplay) {\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var cutParentField = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n fieldSeparatorDisplay = _config$settings2.fieldSeparatorDisplay;\n var ret = null;\n\n if (field) {\n var fieldDefinition = (0, _configUtils.getFieldConfig)(config, field) || {};\n var fieldParts = Array.isArray(field) ? field : field.split(fieldSeparator);\n\n var _fieldKeys = (0, _ruleUtils.getFieldPath)(field, config);\n\n var fieldPartsLabels = (0, _ruleUtils.getFieldPathLabels)(field, config, cutParentField ? parentField : null);\n var fieldFullLabel = fieldPartsLabels ? fieldPartsLabels.join(fieldSeparatorDisplay) : null;\n var fieldLabel2 = fieldDefinition.label2 || fieldFullLabel;\n var formatFieldFn = config.settings.formatField || _default.settings.formatField;\n var fieldName = (0, _ruleUtils.formatFieldName)(field, config, meta, cutParentField ? parentField : null);\n ret = formatFieldFn(fieldName, fieldParts, fieldLabel2, fieldDefinition, config, isForDisplay);\n }\n\n return ret;\n};\n\nvar formatFunc = function formatFunc(config, meta, funcValue, isForDisplay) {\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var funcKey = funcValue.get(\"func\");\n var args = funcValue.get(\"args\");\n var funcConfig = (0, _configUtils.getFuncConfig)(config, funcKey);\n var funcName = isForDisplay && funcConfig.label || funcKey;\n var formattedArgs = {};\n var formattedArgsWithNames = {};\n\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var fieldDef = (0, _configUtils.getFieldConfig)(config, argConfig);\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var argAsyncListValues = argVal ? argVal.get(\"asyncListValues\") : undefined;\n var formattedArgVal = formatValue(config, meta, argValue, argValueSrc, argConfig.type, fieldDef, argConfig, null, null, isForDisplay, parentField, argAsyncListValues);\n var argName = isForDisplay && argConfig.label || argKey;\n\n if (formattedArgVal !== undefined) {\n // skip optional in the end\n formattedArgs[argKey] = formattedArgVal;\n formattedArgsWithNames[argName] = formattedArgVal;\n }\n }\n\n var ret = null;\n\n if (typeof funcConfig.formatFunc === \"function\") {\n var fn = funcConfig.formatFunc;\n var _args = [formattedArgs, isForDisplay];\n ret = fn.apply(void 0, _args);\n } else {\n var argsStr = Object.entries(formattedArgsWithNames).map(function (_ref3) {\n var _ref4 = (0, _slicedToArray2[\"default\"])(_ref3, 2),\n k = _ref4[0],\n v = _ref4[1];\n\n return isForDisplay ? \"\".concat(k, \": \").concat(v) : \"\".concat(v);\n }).join(\", \");\n ret = \"\".concat(funcName, \"(\").concat(argsStr, \")\");\n }\n\n return ret;\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.spelFormat = exports._spelFormat = void 0;\n\nvar _toArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _omit = _interopRequireDefault(require(\"lodash/omit\"));\n\nvar _pick = _interopRequireDefault(require(\"lodash/pick\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _default = require(\"../config/default\");\n\nvar _funcUtils = require(\"../utils/funcUtils\");\n\nvar _immutable = require(\"immutable\");\n\nvar _export = require(\"../utils/export\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar spelFormat = function spelFormat(tree, config) {\n return _spelFormat(tree, config, false);\n};\n\nexports.spelFormat = spelFormat;\n\nvar _spelFormat = function _spelFormat(tree, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = {\n errors: []\n };\n var res = formatItem(tree, config, meta, null);\n\n if (returnErrors) {\n return [res, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while exporting to SpEL:\", meta.errors);\n return res;\n }\n};\n\nexports._spelFormat = _spelFormat;\n\nvar formatItem = function formatItem(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n if (!item) return undefined;\n var type = item.get(\"type\");\n\n if (type === \"group\" || type === \"rule_group\") {\n return formatGroup(item, config, meta, parentField);\n } else if (type === \"rule\") {\n return formatRule(item, config, meta, parentField);\n } else if (type == \"switch_group\") {\n return formatSwitch(item, config, meta, parentField);\n } else if (type == \"case_group\") {\n return formatCase(item, config, meta, parentField);\n }\n\n return undefined;\n};\n\nvar formatCase = function formatCase(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var type = item.get(\"type\");\n\n if (type != \"case_group\") {\n meta.errors.push(\"Unexpected child of type \".concat(type, \" inside switch\"));\n return undefined;\n }\n\n var properties = item.get(\"properties\") || new _immutable.Map();\n\n var _formatItemValue = formatItemValue(config, properties, meta, null, parentField, \"!case_value\"),\n _formatItemValue2 = (0, _slicedToArray2[\"default\"])(_formatItemValue, 3),\n formattedValue = _formatItemValue2[0],\n valueSrc = _formatItemValue2[1],\n valueType = _formatItemValue2[2];\n\n var cond = formatGroup(item, config, meta, parentField);\n return [cond, formattedValue];\n};\n\nvar formatSwitch = function formatSwitch(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var properties = item.get(\"properties\") || new _immutable.Map();\n var children = item.get(\"children1\");\n if (!children) return undefined;\n var cases = children.map(function (currentChild) {\n return formatCase(currentChild, config, meta, null);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n }).toArray();\n if (!cases.length) return undefined;\n\n if (cases.length == 1 && !cases[0][0]) {\n // only 1 case without condition\n return cases[0][1];\n }\n\n var filteredCases = [];\n\n for (var i = 0; i < cases.length; i++) {\n if (i != cases.length - 1 && !cases[i][0]) {\n meta.errors.push(\"No condition for case \".concat(i));\n } else {\n filteredCases.push(cases[i]);\n\n if (i == cases.length - 1 && cases[i][0]) {\n // no default - add null as default\n filteredCases.push([undefined, null]);\n }\n }\n }\n\n var left = \"\",\n right = \"\";\n\n for (var _i = 0; _i < filteredCases.length; _i++) {\n var _filteredCases$_i = (0, _slicedToArray2[\"default\"])(filteredCases[_i], 2),\n cond = _filteredCases$_i[0],\n value = _filteredCases$_i[1];\n\n if (value == undefined) value = \"null\";\n if (cond == undefined) cond = \"true\";\n\n if (_i != filteredCases.length - 1) {\n left += \"(\".concat(cond, \" ? \").concat(value, \" : \");\n right += \")\";\n } else {\n left += \"\".concat(value);\n }\n }\n\n return left + right;\n};\n\nvar formatGroup = function formatGroup(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new _immutable.Map();\n var mode = properties.get(\"mode\");\n var children = item.get(\"children1\");\n var field = properties.get(\"field\");\n if (!children) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = (0, _defaultUtils.defaultConjunction)(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n var not = properties.get(\"not\");\n var isRuleGroup = type === \"rule_group\";\n var isRuleGroupArray = isRuleGroup && mode != \"struct\";\n var groupField = isRuleGroupArray ? field : parentField;\n var groupFieldDef = (0, _configUtils.getFieldConfig)(config, groupField) || {};\n var isSpelArray = groupFieldDef.isSpelArray; // check op for reverse\n\n var groupOperator = properties.get(\"operator\");\n\n if (!groupOperator && (!mode || mode == \"some\")) {\n groupOperator = \"some\";\n }\n\n var realGroupOperator = checkOp(config, groupOperator, field);\n var isGroupOpRev = realGroupOperator != groupOperator;\n var realGroupOperatorDefinition = groupOperator && (0, _configUtils.getOperatorConfig)(config, realGroupOperator, field) || null;\n var isGroup0 = isRuleGroup && (!realGroupOperator || realGroupOperatorDefinition.cardinality == 0); // build value for aggregation op\n\n var _formatItemValue3 = formatItemValue(config, properties, meta, realGroupOperator, parentField, null),\n _formatItemValue4 = (0, _slicedToArray2[\"default\"])(_formatItemValue3, 3),\n formattedValue = _formatItemValue4[0],\n valueSrc = _formatItemValue4[1],\n valueType = _formatItemValue4[2]; // build filter in aggregation\n\n\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta, groupField);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n\n if (isRuleGroupArray && !isGroup0) {\n // \"count\" rule can have no \"having\" children, but should have number value\n if (formattedValue == undefined) return undefined;\n } else {\n if (!list.size) return undefined;\n }\n\n var omitBrackets = isRuleGroup;\n var filter = list.size ? conjunctionDefinition.spelFormatConj(list, conjunction, not, omitBrackets) : null; // build result\n\n var ret;\n\n if (isRuleGroupArray) {\n var formattedField = formatField(meta, config, field, parentField);\n var getSize = isSpelArray ? \".length\" : \".size()\";\n var fullSize = \"\".concat(formattedField).concat(getSize); // https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html#expressions-collection-selection\n\n var filteredSize = filter ? \"\".concat(formattedField, \".?[\").concat(filter, \"]\").concat(getSize) : fullSize;\n var groupValue = isGroup0 ? fullSize : formattedValue; // format expression\n\n ret = formatExpression(meta, config, properties, filteredSize, groupValue, realGroupOperator, valueSrc, valueType, isGroupOpRev);\n } else {\n ret = filter;\n }\n\n return ret;\n};\n\nvar buildFnToFormatOp = function buildFnToFormatOp(operator, operatorDefinition) {\n var spelOp = operatorDefinition.spelOp;\n if (!spelOp) return undefined;\n var objectIsFirstArg = spelOp[0] == \"$\";\n var isMethod = spelOp[0] == \".\" || objectIsFirstArg;\n var sop = isMethod ? spelOp.slice(1) : spelOp;\n var fn;\n var cardinality = (0, _stuff.defaultValue)(operatorDefinition.cardinality, 1);\n\n if (cardinality == 0) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n if (isMethod) return \"\".concat(field, \".\").concat(sop, \"()\");else return \"\".concat(field, \" \").concat(sop);\n };\n } else if (cardinality == 1) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n if (objectIsFirstArg) return \"\".concat(values, \".\").concat(sop, \"(\").concat(field, \")\");else if (isMethod) return \"\".concat(field, \".\").concat(sop, \"(\").concat(values, \")\");else return \"\".concat(field, \" \").concat(sop, \" \").concat(values);\n };\n }\n\n return fn;\n};\n\nvar formatExpression = function formatExpression(meta, config, properties, formattedField, formattedValue, operator, valueSrc, valueType) {\n var isRev = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var field = properties.get(\"field\");\n var opDef = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var fieldDef = (0, _configUtils.getFieldConfig)(config, field) || {};\n var operatorOptions = properties.get(\"operatorOptions\"); //find fn to format expr\n\n var fn = opDef.spelFormatOp || buildFnToFormatOp(operator, opDef);\n\n if (!fn) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n } //format expr\n\n\n var args = [formattedField, operator, formattedValue, valueSrc, valueType, (0, _omit[\"default\"])(opDef, [\"formatOp\", \"mongoFormatOp\", \"sqlFormatOp\", \"jsonLogic\", \"spelFormatOp\"]), operatorOptions, fieldDef];\n var ret;\n ret = fn.apply(void 0, args); //rev\n\n if (isRev) {\n ret = config.settings.spelFormatReverse(ret);\n }\n\n if (ret === undefined) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported for value source \").concat(valueSrc));\n }\n\n return ret;\n};\n\nvar checkOp = function checkOp(config, operator, field) {\n if (!operator) return undefined;\n var opDef = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var reversedOp = opDef.reversedOp;\n var revOpDef = (0, _configUtils.getOperatorConfig)(config, reversedOp, field) || {};\n var isRev = false;\n var canFormatOp = opDef.spelOp || opDef.spelFormatOp;\n var canFormatRevOp = revOpDef.spelOp || revOpDef.spelFormatOp;\n\n if (!canFormatOp && !canFormatRevOp) {\n return undefined;\n }\n\n if (!canFormatOp && canFormatRevOp) {\n isRev = true;\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOpDef, opDef];\n opDef = _ref2[0];\n revOpDef = _ref2[1];\n }\n\n return operator;\n};\n\nvar formatRule = function formatRule(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var properties = item.get(\"properties\") || new _immutable.Map();\n var field = properties.get(\"field\");\n var operator = properties.get(\"operator\");\n if (field == null || operator == null) return undefined; // check op for reverse\n\n var realOp = checkOp(config, operator, field);\n\n if (!realOp) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n\n var isRev = realOp != operator; //format value\n\n var _formatItemValue5 = formatItemValue(config, properties, meta, realOp, parentField, null),\n _formatItemValue6 = (0, _slicedToArray2[\"default\"])(_formatItemValue5, 3),\n formattedValue = _formatItemValue6[0],\n valueSrc = _formatItemValue6[1],\n valueType = _formatItemValue6[2];\n\n if (formattedValue === undefined) return undefined; //format field\n\n var formattedField = formatField(meta, config, field, parentField); // format expression\n\n var res = formatExpression(meta, config, properties, formattedField, formattedValue, realOp, valueSrc, valueType, isRev);\n return res;\n};\n\nvar formatItemValue = function formatItemValue(config, properties, meta, operator, parentField) {\n var expectedValueType = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var field = properties.get(\"field\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n\n if (expectedValueType == \"!case_value\" || iValueType && iValueType.get(0) == \"case_value\") {\n field = \"!case_value\";\n }\n\n var fieldDef = (0, _configUtils.getFieldConfig)(config, field) || {};\n var operatorDefinition = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var cardinality = (0, _stuff.defaultValue)(operatorDefinition.cardinality, 1);\n var iValue = properties.get(\"value\");\n var asyncListValues = properties.get(\"asyncListValues\");\n var valueSrcs = [];\n var valueTypes = [];\n var formattedValue;\n\n if (iValue != undefined) {\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = (0, _funcUtils.completeValue)(currentValue, valueSrc, config);\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var fieldWidgetDef = (0, _omit[\"default\"])((0, _configUtils.getFieldWidgetConfig)(config, field, operator, widget, valueSrc), [\"factory\"]);\n var fv = formatValue(meta, config, cValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDefinition, parentField, asyncListValues);\n\n if (fv !== undefined) {\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n\n return fv;\n });\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n\n if (!(fvalue.size < cardinality || hasUndefinedValues)) {\n formattedValue = cardinality > 1 ? fvalue.toArray() : cardinality == 1 ? fvalue.first() : null;\n }\n }\n\n return [formattedValue, valueSrcs.length > 1 ? valueSrcs : valueSrcs[0], valueTypes.length > 1 ? valueTypes : valueTypes[0]];\n};\n\nvar formatValue = function formatValue(meta, config, currentValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDef) {\n var parentField = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : null;\n var asyncListValues = arguments.length > 10 ? arguments[10] : undefined;\n if (currentValue === undefined) return undefined;\n var ret;\n\n if (valueSrc == \"field\") {\n ret = formatField(meta, config, currentValue, parentField);\n } else if (valueSrc == \"func\") {\n ret = formatFunc(meta, config, currentValue, parentField);\n } else {\n if (typeof fieldWidgetDef.spelFormatValue === \"function\") {\n var fn = fieldWidgetDef.spelFormatValue;\n var args = [currentValue, _objectSpread(_objectSpread({}, (0, _pick[\"default\"])(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }), //useful options: valueFormat for date/time\n (0, _omit[\"default\"])(fieldWidgetDef, [\"formatValue\", \"mongoFormatValue\", \"sqlFormatValue\", \"jsonLogic\", \"elasticSearchFormatValue\", \"spelFormatValue\"])];\n\n if (operator) {\n args.push(operator);\n args.push(operatorDef);\n }\n\n if (valueSrc == \"field\") {\n var valFieldDefinition = (0, _configUtils.getFieldConfig)(config, currentValue) || {};\n args.push(valFieldDefinition);\n }\n\n ret = fn.apply(void 0, args);\n } else {\n ret = (0, _export.spelEscape)(currentValue);\n }\n }\n\n return ret;\n};\n\nvar formatField = function formatField(meta, config, field) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n if (!field) return;\n var fieldSeparator = config.settings.fieldSeparator;\n var fieldDefinition = (0, _configUtils.getFieldConfig)(config, field) || {};\n var fieldParts = Array.isArray(field) ? field : field.split(fieldSeparator);\n\n var _fieldKeys = (0, _ruleUtils.getFieldPath)(field, config, parentField);\n\n var fieldPartsConfigs = (0, _ruleUtils.getFieldPartsConfigs)(field, config, parentField);\n var formatFieldFn = config.settings.formatSpelField;\n var fieldName = (0, _ruleUtils.formatFieldName)(field, config, meta);\n\n if (parentField) {\n var parentFieldDef = (0, _configUtils.getFieldConfig)(config, parentField) || {};\n var parentFieldName = parentField;\n\n if (parentFieldDef.fieldName) {\n parentFieldName = parentFieldDef.fieldName;\n }\n\n if (fieldName.indexOf(parentFieldName + fieldSeparator) == 0) {\n fieldName = fieldName.slice((parentFieldName + fieldSeparator).length); // fieldName = \"#this.\" + fieldName;\n } else {\n meta.errors.push(\"Can't cut group \".concat(parentFieldName, \" from field \").concat(fieldName));\n }\n }\n\n var fieldPartsMeta = fieldPartsConfigs.map(function (_ref3) {\n var _ref4 = (0, _slicedToArray2[\"default\"])(_ref3, 3),\n key = _ref4[0],\n cnf = _ref4[1],\n parentCnf = _ref4[2];\n\n var parent;\n\n if (parentCnf) {\n if (parentCnf.type == \"!struct\" || parentCnf.type == \"!group\" && parentCnf.mode == \"struct\") parent = cnf.isSpelMap ? \"map\" : \"class\";else if (parentCnf.type == \"!group\") parent = cnf.isSpelItemMap ? \"[map]\" : \"[class]\";else parent = \"class\";\n }\n\n var isSpelVariable = cnf === null || cnf === void 0 ? void 0 : cnf.isSpelVariable;\n return {\n key: key,\n parent: parent,\n isSpelVariable: isSpelVariable\n };\n });\n var formattedField = formatFieldFn(fieldName, parentField, fieldParts, fieldPartsMeta, fieldDefinition, config);\n return formattedField;\n};\n\nvar formatFunc = function formatFunc(meta, config, currentValue) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var funcKey = currentValue.get(\"func\");\n var args = currentValue.get(\"args\");\n var funcConfig = (0, _configUtils.getFuncConfig)(config, funcKey);\n var funcName = funcConfig.spelFunc || funcKey;\n var formattedArgs = {};\n\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var fieldDef = (0, _configUtils.getFieldConfig)(config, argConfig);\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var argAsyncListValues = argVal ? argVal.get(\"asyncListValues\") : undefined;\n var formattedArgVal = formatValue(meta, config, argValue, argValueSrc, argConfig.type, fieldDef, argConfig, null, null, parentField, argAsyncListValues);\n\n if (argValue != undefined && formattedArgVal === undefined) {\n meta.errors.push(\"Can't format value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n\n if (formattedArgVal !== undefined) {\n // skip optional in the end\n formattedArgs[argKey] = formattedArgVal;\n }\n }\n\n var ret;\n\n if (typeof funcConfig.spelFormatFunc === \"function\") {\n var fn = funcConfig.spelFormatFunc;\n var _args = [formattedArgs];\n ret = fn.apply(void 0, _args);\n } else {\n var _args2 = Object.entries(formattedArgs).map(function (_ref5) {\n var _ref6 = (0, _slicedToArray2[\"default\"])(_ref5, 2),\n k = _ref6[0],\n v = _ref6[1];\n\n return v;\n });\n\n if (funcName[0] == \".\" && _args2.length) {\n var _args3 = (0, _toArray2[\"default\"])(_args2),\n obj = _args3[0],\n params = _args3.slice(1);\n\n ret = \"\".concat(obj).concat(funcName, \"(\").concat(params.join(\", \"), \")\");\n } else {\n ret = \"\".concat(funcName, \"(\").concat(_args2.join(\", \"), \")\");\n }\n }\n\n return ret;\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sqlFormat = exports._sqlFormat = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _omit = _interopRequireDefault(require(\"lodash/omit\"));\n\nvar _pick = _interopRequireDefault(require(\"lodash/pick\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _default = require(\"../config/default\");\n\nvar _funcUtils = require(\"../utils/funcUtils\");\n\nvar _immutable = require(\"immutable\");\n\nvar _export = require(\"../utils/export\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar sqlFormat = function sqlFormat(tree, config) {\n return _sqlFormat(tree, config, false);\n};\n\nexports.sqlFormat = sqlFormat;\n\nvar _sqlFormat = function _sqlFormat(tree, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = {\n errors: []\n };\n var res = formatItem(tree, config, meta);\n\n if (returnErrors) {\n return [res, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while exporting to SQL:\", meta.errors);\n return res;\n }\n};\n\nexports._sqlFormat = _sqlFormat;\n\nvar formatItem = function formatItem(item, config, meta) {\n if (!item) return undefined;\n var type = item.get(\"type\");\n var children = item.get(\"children1\");\n\n if ((type === \"group\" || type === \"rule_group\") && children && children.size) {\n return formatGroup(item, config, meta);\n } else if (type === \"rule\") {\n return formatRule(item, config, meta);\n }\n\n return undefined;\n};\n\nvar formatGroup = function formatGroup(item, config, meta) {\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new _immutable.Map();\n var children = item.get(\"children1\");\n var groupField = type === \"rule_group\" ? properties.get(\"field\") : null;\n var groupFieldDef = (0, _configUtils.getFieldConfig)(config, groupField) || {};\n\n if (groupFieldDef.mode == \"array\") {\n meta.errors.push(\"Aggregation is not supported for \".concat(groupField));\n }\n\n var not = properties.get(\"not\");\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (!list.size) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = (0, _defaultUtils.defaultConjunction)(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n return conjunctionDefinition.sqlFormatConj(list, conjunction, not);\n};\n\nvar buildFnToFormatOp = function buildFnToFormatOp(operator, operatorDefinition) {\n var sqlOp = operatorDefinition.sqlOp || operator;\n var cardinality = (0, _stuff.defaultValue)(operatorDefinition.cardinality, 1);\n var fn;\n\n if (cardinality == 0) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" \").concat(sqlOp);\n };\n } else if (cardinality == 1) {\n fn = function fn(field, op, value, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" \").concat(sqlOp, \" \").concat(value);\n };\n } else if (cardinality == 2) {\n // between\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var valFrom = values.first();\n var valTo = values.get(1);\n return \"\".concat(field, \" \").concat(sqlOp, \" \").concat(valFrom, \" AND \").concat(valTo);\n };\n }\n\n return fn;\n};\n\nvar formatRule = function formatRule(item, config, meta) {\n var properties = item.get(\"properties\") || new _immutable.Map();\n var field = properties.get(\"field\");\n var operator = properties.get(\"operator\");\n var operatorOptions = properties.get(\"operatorOptions\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n var iValue = properties.get(\"value\");\n var asyncListValues = properties.get(\"asyncListValues\");\n if (field == null || operator == null) return undefined;\n var fieldDefinition = (0, _configUtils.getFieldConfig)(config, field) || {};\n var opDef = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var reversedOp = opDef.reversedOp;\n var revOpDef = (0, _configUtils.getOperatorConfig)(config, reversedOp, field) || {};\n var cardinality = (0, _stuff.defaultValue)(opDef.cardinality, 1); // check op\n\n var isRev = false;\n var canFormatOp = opDef.sqlOp || opDef.sqlFormatOp;\n var canFormatRevOp = revOpDef.sqlOp || revOpDef.sqlFormatOp;\n\n if (!canFormatOp && !canFormatRevOp) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n\n if (!canFormatRevOp && canFormatRevOp) {\n isRev = true;\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOpDef, opDef];\n opDef = _ref2[0];\n revOpDef = _ref2[1];\n } //format value\n\n\n var valueSrcs = [];\n var valueTypes = [];\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = (0, _funcUtils.completeValue)(currentValue, valueSrc, config);\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var fieldWidgetDefinition = (0, _omit[\"default\"])((0, _configUtils.getFieldWidgetConfig)(config, field, operator, widget, valueSrc), [\"factory\"]);\n var fv = formatValue(meta, config, cValue, valueSrc, valueType, fieldWidgetDefinition, fieldDefinition, operator, opDef, asyncListValues);\n\n if (fv !== undefined) {\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n\n return fv;\n });\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n if (hasUndefinedValues || fvalue.size < cardinality) return undefined;\n var formattedValue = cardinality == 1 ? fvalue.first() : fvalue; //find fn to format expr\n\n var fn = opDef.sqlFormatOp || buildFnToFormatOp(operator, opDef);\n\n if (!fn) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n } //format field\n\n\n var formattedField = formatField(meta, config, field); //format expr\n\n var args = [formattedField, operator, formattedValue, valueSrcs.length > 1 ? valueSrcs : valueSrcs[0], valueTypes.length > 1 ? valueTypes : valueTypes[0], (0, _omit[\"default\"])(opDef, [\"formatOp\", \"mongoFormatOp\", \"sqlFormatOp\", \"jsonLogic\", \"spelFormatOp\"]), operatorOptions, fieldDefinition];\n var ret;\n ret = fn.apply(void 0, args);\n\n if (isRev) {\n ret = config.settings.sqlFormatReverse(ret);\n }\n\n if (ret === undefined) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported for value source \").concat(valueSrcs.join(\", \")));\n return undefined;\n }\n\n return ret;\n};\n\nvar formatValue = function formatValue(meta, config, currentValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDef, asyncListValues) {\n if (currentValue === undefined) return undefined;\n var ret;\n\n if (valueSrc == \"field\") {\n ret = formatField(meta, config, currentValue);\n } else if (valueSrc == \"func\") {\n ret = formatFunc(meta, config, currentValue);\n } else {\n if (typeof fieldWidgetDef.sqlFormatValue === \"function\") {\n var fn = fieldWidgetDef.sqlFormatValue;\n var args = [currentValue, _objectSpread(_objectSpread({}, (0, _pick[\"default\"])(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }), //useful options: valueFormat for date/time\n (0, _omit[\"default\"])(fieldWidgetDef, [\"formatValue\", \"mongoFormatValue\", \"sqlFormatValue\", \"jsonLogic\", \"elasticSearchFormatValue\", \"spelFormatValue\"])];\n\n if (operator) {\n args.push(operator);\n args.push(operatorDef);\n }\n\n if (valueSrc == \"field\") {\n var valFieldDefinition = (0, _configUtils.getFieldConfig)(config, currentValue) || {};\n args.push(valFieldDefinition);\n }\n\n ret = fn.apply(void 0, args);\n } else {\n if (Array.isArray(currentValue)) {\n ret = currentValue.map(function (v) {\n return _export.SqlString.escape(v);\n });\n } else {\n ret = _export.SqlString.escape(currentValue);\n }\n }\n }\n\n return ret;\n};\n\nvar formatField = function formatField(meta, config, field) {\n if (!field) return;\n var fieldSeparator = config.settings.fieldSeparator;\n var fieldDefinition = (0, _configUtils.getFieldConfig)(config, field) || {};\n var fieldParts = Array.isArray(field) ? field : field.split(fieldSeparator);\n\n var _fieldKeys = (0, _ruleUtils.getFieldPath)(field, config);\n\n var fieldPartsLabels = (0, _ruleUtils.getFieldPathLabels)(field, config);\n var fieldFullLabel = fieldPartsLabels ? fieldPartsLabels.join(fieldSeparator) : null;\n var formatFieldFn = config.settings.formatField || _default.settings.formatField;\n var fieldName = (0, _ruleUtils.formatFieldName)(field, config, meta);\n var formattedField = formatFieldFn(fieldName, fieldParts, fieldFullLabel, fieldDefinition, config);\n return formattedField;\n};\n\nvar formatFunc = function formatFunc(meta, config, currentValue) {\n var funcKey = currentValue.get(\"func\");\n var args = currentValue.get(\"args\");\n var funcConfig = (0, _configUtils.getFuncConfig)(config, funcKey);\n var funcName = funcConfig.sqlFunc || funcKey;\n var formattedArgs = {};\n\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var fieldDef = (0, _configUtils.getFieldConfig)(config, argConfig);\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var argAsyncListValues = argVal ? argVal.get(\"asyncListValues\") : undefined;\n var formattedArgVal = formatValue(meta, config, argValue, argValueSrc, argConfig.type, fieldDef, argConfig, null, null, argAsyncListValues);\n\n if (argValue != undefined && formattedArgVal === undefined) {\n meta.errors.push(\"Can't format value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n\n if (formattedArgVal !== undefined) {\n // skip optional in the end\n formattedArgs[argKey] = formattedArgVal;\n }\n }\n\n var ret;\n\n if (typeof funcConfig.sqlFormatFunc === \"function\") {\n var fn = funcConfig.sqlFormatFunc;\n var _args = [formattedArgs];\n ret = fn.apply(void 0, _args);\n } else {\n var argsStr = Object.entries(formattedArgs).map(function (_ref3) {\n var _ref4 = (0, _slicedToArray2[\"default\"])(_ref3, 2),\n k = _ref4[0],\n v = _ref4[1];\n\n return v;\n }).join(\", \");\n ret = \"\".concat(funcName, \"(\").concat(argsStr, \")\");\n }\n\n return ret;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _tree = require(\"./tree\");\n\nObject.keys(_tree).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _tree[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _tree[key];\n }\n });\n});\n\nvar _jsonLogic = require(\"./jsonLogic\");\n\nObject.keys(_jsonLogic).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _jsonLogic[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _jsonLogic[key];\n }\n });\n});\n\nvar _spel = require(\"./spel\");\n\nObject.keys(_spel).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _spel[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _spel[key];\n }\n });\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loadFromJsonLogic = exports._loadFromJsonLogic = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _toArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _uuid = _interopRequireDefault(require(\"../utils/uuid\"));\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _tree = require(\"./tree\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n// http://jsonlogic.com/\n// helpers\nvar arrayUniq = function arrayUniq(arr) {\n return Array.from(new Set(arr));\n};\n\nvar arrayToObject = function arrayToObject(arr) {\n return arr.reduce(function (acc, _ref) {\n var _ref2 = (0, _slicedToArray2[\"default\"])(_ref, 2),\n f = _ref2[0],\n fc = _ref2[1];\n\n return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2[\"default\"])({}, f, fc));\n }, {});\n};\n\nvar loadFromJsonLogic = function loadFromJsonLogic(logicTree, config) {\n return _loadFromJsonLogic(logicTree, config, false);\n};\n\nexports.loadFromJsonLogic = loadFromJsonLogic;\n\nvar _loadFromJsonLogic = function _loadFromJsonLogic(logicTree, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = {\n errors: []\n };\n var extendedConfig = (0, _configUtils.extendConfig)(config);\n var conv = buildConv(extendedConfig);\n var jsTree = logicTree ? convertFromLogic(logicTree, conv, extendedConfig, \"rule\", meta) : undefined;\n\n if (jsTree && jsTree.type != \"group\") {\n jsTree = wrapInDefaultConj(jsTree, extendedConfig);\n }\n\n var immTree = jsTree ? (0, _tree.loadTree)(jsTree) : undefined;\n\n if (returnErrors) {\n return [immTree, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while importing from JsonLogic:\", meta.errors);\n return immTree;\n }\n};\n\nexports._loadFromJsonLogic = _loadFromJsonLogic;\n\nvar buildConv = function buildConv(config) {\n var operators = {};\n\n for (var opKey in config.operators) {\n var opConfig = config.operators[opKey];\n\n if (typeof opConfig.jsonLogic == \"string\") {\n // example: \"</2\", \"#in/1\"\n var opk = (opConfig._jsonLogicIsRevArgs ? \"#\" : \"\") + opConfig.jsonLogic + \"/\" + (0, _stuff.defaultValue)(opConfig.cardinality, 1);\n if (!operators[opk]) operators[opk] = [];\n operators[opk].push(opKey);\n } else if (typeof opConfig.jsonLogic2 == \"string\") {\n // example: all-in/1\"\n var _opk = opConfig.jsonLogic2 + \"/\" + (0, _stuff.defaultValue)(opConfig.cardinality, 1);\n\n if (!operators[_opk]) operators[_opk] = [];\n\n operators[_opk].push(opKey);\n }\n }\n\n var conjunctions = {};\n\n for (var conjKey in config.conjunctions) {\n var conjunctionDefinition = config.conjunctions[conjKey];\n var ck = conjunctionDefinition.jsonLogicConj || conjKey.toLowerCase();\n conjunctions[ck] = conjKey;\n }\n\n var funcs = {};\n\n for (var funcKey in config.funcs) {\n var funcConfig = config.funcs[funcKey];\n var fk = void 0;\n\n if (funcConfig.jsonLogicIsMethod) {\n fk = \"#\" + funcConfig.jsonLogic;\n } else if (typeof funcConfig.jsonLogic == \"string\") {\n fk = funcConfig.jsonLogic;\n }\n\n if (fk) {\n if (!funcs[fk]) funcs[fk] = [];\n funcs[fk].push(funcKey);\n }\n }\n\n var _config$settings$json = config.settings.jsonLogic,\n groupVarKey = _config$settings$json.groupVarKey,\n altVarKey = _config$settings$json.altVarKey;\n return {\n operators: operators,\n conjunctions: conjunctions,\n funcs: funcs,\n varKeys: [\"var\", groupVarKey, altVarKey]\n };\n};\n\nvar convertFromLogic = function convertFromLogic(logic, conv, config, expectedType, meta) {\n var not = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var fieldConfig = arguments.length > 6 ? arguments[6] : undefined;\n var widget = arguments.length > 7 ? arguments[7] : undefined;\n var parentField = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;\n\n var _isLockedLogic = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n\n var op, vals;\n\n if ((0, _stuff.isJsonLogic)(logic)) {\n op = Object.keys(logic)[0];\n vals = logic[op];\n if (!Array.isArray(vals)) vals = [vals];\n }\n\n var ret;\n var beforeErrorsCnt = meta.errors.length;\n var lockedOp = config.settings.jsonLogic.lockedOp;\n var isEmptyOp = op == \"!\" && vals.length == 1 && vals[0] && (0, _stuff.isJsonLogic)(vals[0]) && conv.varKeys.includes(Object.keys(vals[0])[0]);\n var isRev = op == \"!\" && !isEmptyOp;\n var isLocked = lockedOp && op == lockedOp;\n\n if (isLocked) {\n ret = convertFromLogic(vals[0], conv, config, expectedType, meta, not, fieldConfig, widget, parentField, true);\n } else if (isRev) {\n // reverse with not\n ret = convertFromLogic(vals[0], conv, config, expectedType, meta, !not, fieldConfig, widget, parentField);\n } else if (expectedType == \"val\") {\n // not is not used here\n ret = convertField(op, vals, conv, config, not, meta, parentField) || convertFunc(op, vals, conv, config, not, fieldConfig, meta, parentField) || convertVal(logic, fieldConfig, widget, config, meta);\n } else if (expectedType == \"rule\") {\n ret = convertConj(op, vals, conv, config, not, meta, parentField, false) || convertOp(op, vals, conv, config, not, meta, parentField);\n }\n\n var afterErrorsCnt = meta.errors.length;\n\n if (op != \"!\" && ret === undefined && afterErrorsCnt == beforeErrorsCnt) {\n meta.errors.push(\"Can't parse logic \".concat(JSON.stringify(logic)));\n }\n\n if (isLocked) {\n ret.properties.isLocked = true;\n }\n\n return ret;\n};\n\nvar convertVal = function convertVal(val, fieldConfig, widget, config, meta) {\n if (val === undefined) return undefined;\n var widgetConfig = config.widgets[widget || fieldConfig.mainWidget];\n\n if (!widgetConfig) {\n meta.errors.push(\"No widget for type \".concat(fieldConfig.type));\n return undefined;\n }\n\n if ((0, _stuff.isJsonLogic)(val)) {\n meta.errors.push(\"Unexpected logic in value: \".concat(JSON.stringify(val)));\n return undefined;\n } // number of seconds -> time string\n\n\n if (fieldConfig && fieldConfig.type == \"time\" && typeof val == \"number\") {\n var h = Math.floor(val / 60 / 60) % 24,\n m = Math.floor(val / 60) % 60,\n s = val % 60;\n var valueFormat = widgetConfig.valueFormat;\n\n if (valueFormat) {\n var dateVal = new Date(val);\n dateVal.setMilliseconds(0);\n dateVal.setHours(h);\n dateVal.setMinutes(m);\n dateVal.setSeconds(s);\n val = (0, _moment[\"default\"])(dateVal).format(valueFormat);\n } else {\n val = \"\".concat(h, \":\").concat(m, \":\").concat(s);\n }\n } // \"2020-01-08T22:00:00.000Z\" -> Date object\n\n\n if (fieldConfig && [\"date\", \"datetime\"].includes(fieldConfig.type) && val && !(val instanceof Date)) {\n try {\n var _dateVal = new Date(val);\n\n if (_dateVal instanceof Date && _dateVal.toISOString() === val) {\n val = _dateVal;\n }\n } catch (e) {\n meta.errors.push(\"Can't convert value \".concat(val, \" as Date\"));\n val = undefined;\n }\n } // Date object -> formatted string\n\n\n if (val instanceof Date && fieldConfig) {\n var _valueFormat = widgetConfig.valueFormat;\n\n if (_valueFormat) {\n val = (0, _moment[\"default\"])(val).format(_valueFormat);\n }\n }\n\n var asyncListValues;\n\n if (val && fieldConfig.fieldSettings && fieldConfig.fieldSettings.asyncFetch) {\n var vals = Array.isArray(val) ? val : [val];\n asyncListValues = vals;\n }\n\n return {\n valueSrc: \"value\",\n value: val,\n valueType: widgetConfig.type,\n asyncListValues: asyncListValues\n };\n};\n\nvar convertField = function convertField(op, vals, conv, config, not, meta) {\n var parentField = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n var fieldSeparator = config.settings.fieldSeparator;\n\n if (conv.varKeys.includes(op) && typeof vals[0] == \"string\") {\n var field = vals[0];\n if (parentField) field = [parentField, field].join(fieldSeparator);\n field = (0, _configUtils.normalizeField)(config, field);\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n\n if (!fieldConfig) {\n meta.errors.push(\"No config for field \".concat(field));\n return undefined;\n }\n\n return {\n valueSrc: \"field\",\n value: field,\n valueType: fieldConfig.type\n };\n }\n\n return undefined;\n};\n\nvar convertFunc = function convertFunc(op, vals, conv, config, not, fieldConfig, meta) {\n var parentField = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n if (!op) return undefined;\n var func, argsArr, funcKey;\n var jsonLogicIsMethod = op == \"method\";\n\n if (jsonLogicIsMethod) {\n var obj, opts;\n\n var _vals = (0, _toArray2[\"default\"])(vals);\n\n obj = _vals[0];\n func = _vals[1];\n opts = _vals.slice(2);\n argsArr = [obj].concat((0, _toConsumableArray2[\"default\"])(opts));\n } else {\n func = op;\n argsArr = vals;\n }\n\n var fk = (jsonLogicIsMethod ? \"#\" : \"\") + func;\n var funcKeys = (conv.funcs[fk] || []).filter(function (k) {\n return fieldConfig ? config.funcs[k].returnType == fieldConfig.type : true;\n });\n\n if (funcKeys.length) {\n funcKey = funcKeys[0];\n } else {\n var v = (0, _defineProperty2[\"default\"])({}, op, vals);\n\n for (var _i = 0, _Object$entries = Object.entries(config.funcs || {}); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = (0, _slicedToArray2[\"default\"])(_Object$entries[_i], 2),\n f = _Object$entries$_i[0],\n fc = _Object$entries$_i[1];\n\n if (fc.jsonLogicImport && fc.returnType == fieldConfig.type) {\n var parsed = void 0;\n\n try {\n parsed = fc.jsonLogicImport(v);\n } catch (_e) {// given expression `v` can't be parsed into function\n }\n\n if (parsed) {\n funcKey = f;\n argsArr = parsed;\n }\n }\n }\n }\n\n if (!funcKey) return undefined;\n\n if (funcKey) {\n var funcConfig = config.funcs[funcKey];\n var argKeys = Object.keys(funcConfig.args || {});\n var args = argsArr.reduce(function (acc, val, ind) {\n var argKey = argKeys[ind];\n var argConfig = funcConfig.args[argKey];\n var argVal = convertFromLogic(val, conv, config, \"val\", meta, false, argConfig, null, parentField);\n\n if (argVal === undefined) {\n argVal = argConfig.defaultValue;\n\n if (argVal === undefined) {\n meta.errors.push(\"No value for arg \".concat(argKey, \" of func \").concat(funcKey));\n return undefined;\n }\n }\n\n return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2[\"default\"])({}, argKey, argVal));\n }, {});\n return {\n valueSrc: \"func\",\n value: {\n func: funcKey,\n args: args\n },\n valueType: funcConfig.returnType\n };\n }\n\n return undefined;\n};\n\nvar convertConj = function convertConj(op, vals, conv, config, not, meta) {\n var parentField = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n var isRuleGroup = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n var conjKey = conv.conjunctions[op];\n var fieldSeparator = config.settings.fieldSeparator;\n var parentFieldConfig = parentField ? (0, _configUtils.getFieldConfig)(config, parentField) : null;\n var isParentGroup = (parentFieldConfig === null || parentFieldConfig === void 0 ? void 0 : parentFieldConfig.type) == \"!group\";\n\n if (conjKey) {\n var type = \"group\";\n var children = vals.map(function (v) {\n return convertFromLogic(v, conv, config, \"rule\", meta, false, null, null, parentField);\n }).filter(function (r) {\n return r !== undefined;\n }).reduce(function (acc, r) {\n return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2[\"default\"])({}, r.id, r));\n }, {});\n var complexFields = Object.values(children).map(function (v) {\n var _v$properties;\n\n return v === null || v === void 0 ? void 0 : (_v$properties = v.properties) === null || _v$properties === void 0 ? void 0 : _v$properties.field;\n }).filter(function (f) {\n return f && f.includes(fieldSeparator);\n });\n var complexFieldsGroupAncestors = Object.fromEntries(arrayUniq(complexFields).map(function (f) {\n var parts = f.split(fieldSeparator);\n var ancs = Object.fromEntries(parts.slice(0, -1).map(function (f, i, parts) {\n return [].concat((0, _toConsumableArray2[\"default\"])(parts.slice(0, i)), [f]);\n }).map(function (fp) {\n return [fp.join(fieldSeparator), (0, _configUtils.getFieldConfig)(config, fp)];\n }).filter(function (_ref3) {\n var _ref4 = (0, _slicedToArray2[\"default\"])(_ref3, 2),\n _f = _ref4[0],\n fc = _ref4[1];\n\n return fc.type == \"!group\";\n }));\n return [f, Object.keys(ancs)];\n }));\n var childrenInRuleGroup = Object.values(children).map(function (v) {\n var _v$properties2;\n\n return v === null || v === void 0 ? void 0 : (_v$properties2 = v.properties) === null || _v$properties2 === void 0 ? void 0 : _v$properties2.field;\n }).map(function (f) {\n return complexFieldsGroupAncestors[f];\n }).filter(function (ancs) {\n return ancs && ancs.length;\n });\n var usedRuleGroups = arrayUniq(Object.values(complexFieldsGroupAncestors).flat());\n var usedTopRuleGroups = topLevelFieldsFilter(usedRuleGroups);\n var properties = {\n conjunction: conjKey,\n not: not\n };\n var id = (0, _uuid[\"default\"])();\n var children1 = {};\n var groupToId = {};\n Object.entries(children).map(function (_ref5) {\n var _ref6 = (0, _slicedToArray2[\"default\"])(_ref5, 2),\n k = _ref6[0],\n v = _ref6[1];\n\n if (v.type == \"group\" || v.type == \"rule_group\") {\n // put as-is\n children1[k] = v;\n } else {\n var _v$properties3;\n\n var field = v === null || v === void 0 ? void 0 : (_v$properties3 = v.properties) === null || _v$properties3 === void 0 ? void 0 : _v$properties3.field;\n var groupAncestors = complexFieldsGroupAncestors[field];\n var groupField = groupAncestors === null || groupAncestors === void 0 ? void 0 : groupAncestors.at(-1);\n\n if (!groupField) {\n // not in rule_group (can be simple field or in struct) - put as-is\n children1[k] = v;\n } else {\n // wrap field in rule_group (with creating hierarchy if need)\n var ch = children1;\n var parentFieldParts = parentField ? parentField.split(fieldSeparator) : [];\n var isInParent = (0, _stuff.shallowEqual)(parentFieldParts, groupField.split(fieldSeparator).slice(0, parentFieldParts.length));\n if (!isInParent) parentFieldParts = []; // should not be\n\n var traverseGroupFields = groupField.split(fieldSeparator).slice(parentFieldParts.length).map(function (f, i, parts) {\n return [].concat((0, _toConsumableArray2[\"default\"])(parentFieldParts), (0, _toConsumableArray2[\"default\"])(parts.slice(0, i)), [f]).join(fieldSeparator);\n }).map(function (f) {\n return (0, _configUtils.normalizeField)(config, f);\n }).map(function (f) {\n return {\n f: f,\n fc: (0, _configUtils.getFieldConfig)(config, f) || {}\n };\n }).filter(function (_ref7) {\n var fc = _ref7.fc;\n return fc.type != \"!struct\";\n });\n traverseGroupFields.map(function (_ref8, i) {\n var gf = _ref8.f,\n gfc = _ref8.fc;\n var groupId = groupToId[gf];\n\n if (!groupId) {\n groupId = (0, _uuid[\"default\"])();\n groupToId[gf] = groupId;\n ch[groupId] = {\n type: \"rule_group\",\n id: groupId,\n children1: {},\n properties: {\n conjunction: conjKey,\n not: false,\n field: gf,\n mode: gfc.mode\n }\n };\n }\n\n ch = ch[groupId].children1;\n });\n ch[k] = v;\n }\n }\n }); // tip: for isRuleGroup=true correct type and properties will be set out of this func\n\n return {\n type: type,\n id: id,\n children1: children1,\n properties: properties\n };\n }\n\n return undefined;\n};\n\nvar topLevelFieldsFilter = function topLevelFieldsFilter(fields) {\n var arr = (0, _toConsumableArray2[\"default\"])(fields).sort(function (a, b) {\n return a.length - b.length;\n });\n\n for (var i = 0; i < arr.length; i++) {\n for (var j = i + 1; j < arr.length; j++) {\n if (arr[j].indexOf(arr[i]) == 0) {\n // arr[j] is inside arr[i] (eg. \"a.b\" inside \"a\")\n arr.splice(j, 1);\n j--;\n }\n }\n }\n\n return arr;\n};\n\nvar wrapInDefaultConjRuleGroup = function wrapInDefaultConjRuleGroup(rule, parentField, parentFieldConfig, config, conj) {\n if (!rule) return undefined;\n return {\n type: \"rule_group\",\n id: (0, _uuid[\"default\"])(),\n children1: (0, _defineProperty2[\"default\"])({}, rule.id, rule),\n properties: {\n conjunction: conj || (0, _defaultUtils.defaultGroupConjunction)(config, parentFieldConfig),\n not: false,\n field: parentField\n }\n };\n};\n\nvar wrapInDefaultConj = function wrapInDefaultConj(rule, config) {\n var not = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return {\n type: \"group\",\n id: (0, _uuid[\"default\"])(),\n children1: (0, _defineProperty2[\"default\"])({}, rule.id, rule),\n properties: {\n conjunction: (0, _defaultUtils.defaultConjunction)(config),\n not: not\n }\n };\n};\n\nvar parseRule = function parseRule(op, arity, vals, parentField, conv, config, meta) {\n var errors = [];\n\n var res = _parseRule(op, arity, vals, parentField, conv, config, errors, false) || _parseRule(op, arity, vals, parentField, conv, config, errors, true);\n\n if (!res) {\n meta.errors.push(errors.join(\"; \") || \"Unknown op \".concat(op, \"/\").concat(arity));\n return undefined;\n }\n\n return res;\n};\n\nvar _parseRule = function _parseRule(op, arity, vals, parentField, conv, config, errors, isRevArgs) {\n // config.settings.groupOperators are used for group count (cardinality = 0 is exception)\n // but don't confuse with \"all-in\" for multiselect\n var isAllInForMultiselect = op == \"all\" && (0, _stuff.isJsonLogic)(vals[1]) && Object.keys(vals[1])[0] == \"in\";\n var isGroup0 = !isAllInForMultiselect && config.settings.groupOperators.includes(op);\n var eqOps = [\"==\", \"!=\"];\n var cardinality = isGroup0 ? 0 : arity - 1;\n if (isGroup0) cardinality = 0;else if (eqOps.includes(op) && cardinality == 1 && vals[1] === null) cardinality = 0;\n var opk = op + \"/\" + cardinality;\n var fieldSeparator = config.settings.fieldSeparator;\n var opKeys = conv.operators[(isRevArgs ? \"#\" : \"\") + opk];\n if (!opKeys) return;\n var jlField,\n args = [];\n var rangeOps = [\"<\", \"<=\", \">\", \">=\"];\n\n if (rangeOps.includes(op) && arity == 3) {\n jlField = vals[1];\n args = [vals[0], vals[2]];\n } else if (isRevArgs) {\n jlField = vals[1];\n args = [vals[0]];\n } else {\n var _vals2 = (0, _toArray2[\"default\"])(vals);\n\n jlField = _vals2[0];\n args = _vals2.slice(1);\n }\n\n if (!(0, _stuff.isJsonLogic)(jlField)) {\n errors.push(\"Incorrect operands for \".concat(op, \": \").concat(JSON.stringify(vals)));\n return;\n }\n\n var k = Object.keys(jlField)[0];\n var v = Object.values(jlField)[0];\n var field, having, isGroup;\n\n if (conv.varKeys.includes(k) && typeof v == \"string\") {\n field = v;\n }\n\n if (isGroup0) {\n isGroup = true;\n having = args[0];\n args = [];\n } // reduce/filter for group ext\n\n\n if (k == \"reduce\" && Array.isArray(v) && v.length == 3) {\n var _v2 = v,\n _v3 = (0, _slicedToArray2[\"default\"])(_v2, 3),\n filter = _v3[0],\n acc = _v3[1],\n init = _v3[2];\n\n if ((0, _stuff.isJsonLogic)(filter) && init == 0 && (0, _stuff.isJsonLogic)(acc) && Array.isArray(acc[\"+\"]) && acc[\"+\"][0] == 1 && (0, _stuff.isJsonLogic)(acc[\"+\"][1]) && acc[\"+\"][1][\"var\"] == \"accumulator\") {\n k = Object.keys(filter)[0];\n v = Object.values(filter)[0];\n\n if (k == \"filter\") {\n var _v4 = v,\n _v5 = (0, _slicedToArray2[\"default\"])(_v4, 2),\n group = _v5[0],\n _filter = _v5[1];\n\n if ((0, _stuff.isJsonLogic)(group)) {\n k = Object.keys(group)[0];\n v = Object.values(group)[0];\n\n if (conv.varKeys.includes(k) && typeof v == \"string\") {\n field = v;\n having = _filter;\n isGroup = true;\n }\n }\n } else if (conv.varKeys.includes(k) && typeof v == \"string\") {\n field = v;\n isGroup = true;\n }\n }\n }\n\n if (!field) {\n errors.push(\"Unknown field \".concat(JSON.stringify(jlField)));\n return;\n }\n\n if (parentField) field = [parentField, field].join(fieldSeparator);\n field = (0, _configUtils.normalizeField)(config, field);\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n\n if (!fieldConfig) {\n errors.push(\"No config for field \".concat(field));\n return;\n }\n\n var opKey = opKeys[0];\n\n if (opKeys.length > 1 && fieldConfig && fieldConfig.operators) {\n // eg. for \"equal\" and \"select_equals\"\n opKeys = opKeys.filter(function (k) {\n return fieldConfig.operators.includes(k);\n });\n\n if (opKeys.length == 0) {\n errors.push(\"No corresponding ops for field \".concat(field));\n return;\n }\n\n opKey = opKeys[0];\n }\n\n return {\n field: field,\n fieldConfig: fieldConfig,\n opKey: opKey,\n args: args,\n having: having\n };\n};\n\nvar convertOp = function convertOp(op, vals, conv, config, not, meta) {\n var parentField = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n if (!op) return undefined;\n var arity = vals.length;\n\n if (op == \"all\" && (0, _stuff.isJsonLogic)(vals[1])) {\n // special case for \"all-in\"\n var op2 = Object.keys(vals[1])[0];\n\n if (op2 == \"in\") {\n vals = [vals[0], vals[1][op2][1]];\n op = op + \"-\" + op2; // \"all-in\"\n }\n }\n\n var parseRes = parseRule(op, arity, vals, parentField, conv, config, meta);\n if (!parseRes) return undefined;\n var field = parseRes.field,\n fieldConfig = parseRes.fieldConfig,\n opKey = parseRes.opKey,\n args = parseRes.args,\n having = parseRes.having;\n var opConfig = config.operators[opKey]; // Group component in array mode can show NOT checkbox, so do nothing in this case\n // Otherwise try to revert\n\n var showNot = fieldConfig.showNot !== undefined ? fieldConfig.showNot : config.settings.showNot;\n var canRev = true; // if (fieldConfig.type == \"!group\" && fieldConfig.mode == \"array\" && showNot)\n // canRev = false;\n\n var conj;\n var havingVals;\n\n if (fieldConfig.type == \"!group\" && having) {\n conj = Object.keys(having)[0];\n havingVals = having[conj];\n if (!Array.isArray(havingVals)) havingVals = [havingVals]; // Preprocess \"!\": Try to reverse op in single rule in having\n // Eg. use `not_equal` instead of `not` `equal`\n\n var isEmptyOp = conj == \"!\" && havingVals.length == 1 && havingVals[0] && (0, _stuff.isJsonLogic)(havingVals[0]) && conv.varKeys.includes(Object.keys(havingVals[0])[0]);\n\n if (conj == \"!\" && !isEmptyOp) {\n not = !not;\n having = having[\"!\"];\n conj = Object.keys(having)[0];\n havingVals = having[conj];\n if (!Array.isArray(havingVals)) havingVals = [havingVals];\n }\n } // Use reversed op\n\n\n if (not && canRev && opConfig.reversedOp) {\n not = false;\n opKey = opConfig.reversedOp;\n opConfig = config.operators[opKey];\n }\n\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, opKey);\n var convertedArgs = args.map(function (v) {\n return convertFromLogic(v, conv, config, \"val\", meta, false, fieldConfig, widget, parentField);\n });\n\n if (convertedArgs.filter(function (v) {\n return v === undefined;\n }).length) {\n //meta.errors.push(`Undefined arg for field ${field} and op ${opKey}`);\n return undefined;\n }\n\n var res;\n\n if (fieldConfig.type == \"!group\" && having) {\n if (conv.conjunctions[conj] !== undefined) {\n res = convertConj(conj, havingVals, conv, config, not, meta, field, true);\n not = false; // not was applied to group\n } else {\n var _rule$properties;\n\n // need to be wrapped in `rule_group`\n var rule = convertOp(conj, havingVals, conv, config, not && canRev, meta, field);\n\n if (not && canRev && !(rule !== null && rule !== void 0 && (_rule$properties = rule.properties) !== null && _rule$properties !== void 0 && _rule$properties.not)) {\n not = false; // op was reversed in rule\n }\n\n res = wrapInDefaultConjRuleGroup(rule, field, fieldConfig, config, conv.conjunctions[\"and\"]);\n }\n\n if (!res) return undefined;\n res.type = \"rule_group\";\n\n if (not) {\n Object.assign(res.properties, {\n not: not\n });\n }\n\n Object.assign(res.properties, {\n field: field,\n mode: fieldConfig.mode,\n operator: opKey\n });\n\n if (fieldConfig.mode == \"array\") {\n Object.assign(res.properties, {\n value: convertedArgs.map(function (v) {\n return v.value;\n }),\n valueSrc: convertedArgs.map(function (v) {\n return v.valueSrc;\n }),\n valueType: convertedArgs.map(function (v) {\n return v.valueType;\n })\n });\n }\n } else if (fieldConfig.type == \"!group\" && !having) {\n res = {\n type: \"rule_group\",\n id: (0, _uuid[\"default\"])(),\n children1: {},\n properties: {\n conjunction: (0, _defaultUtils.defaultGroupConjunction)(config, fieldConfig),\n not: not,\n mode: fieldConfig.mode,\n field: field,\n operator: opKey\n }\n };\n\n if (fieldConfig.mode == \"array\") {\n Object.assign(res.properties, {\n value: convertedArgs.map(function (v) {\n return v.value;\n }),\n valueSrc: convertedArgs.map(function (v) {\n return v.valueSrc;\n }),\n valueType: convertedArgs.map(function (v) {\n return v.valueType;\n })\n });\n }\n } else {\n var asyncListValuesArr = convertedArgs.map(function (v) {\n return v.asyncListValues;\n }).filter(function (v) {\n return v != undefined;\n });\n var asyncListValues = asyncListValuesArr.length ? asyncListValuesArr[0] : undefined;\n res = {\n type: \"rule\",\n id: (0, _uuid[\"default\"])(),\n properties: {\n field: field,\n operator: opKey,\n value: convertedArgs.map(function (v) {\n return v.value;\n }),\n valueSrc: convertedArgs.map(function (v) {\n return v.valueSrc;\n }),\n valueType: convertedArgs.map(function (v) {\n return v.valueType;\n }),\n asyncListValues: asyncListValues\n }\n };\n\n if (not) {\n //meta.errors.push(`No rev op for ${opKey}`);\n res = wrapInDefaultConj(res, config, not);\n }\n }\n\n return res;\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loadFromSpel = exports._loadFromSpel = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _spel2js = require(\"spel2js\");\n\nvar _uuid = _interopRequireDefault(require(\"../utils/uuid\"));\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _tree = require(\"./tree\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar loadFromSpel = function loadFromSpel(logicTree, config) {\n return _loadFromSpel(logicTree, config, true);\n};\n\nexports.loadFromSpel = loadFromSpel;\n\nvar _loadFromSpel = function _loadFromSpel(spelStr, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = {\n errors: []\n };\n var extendedConfig = (0, _configUtils.extendConfig)(config);\n var conv = buildConv(extendedConfig);\n var compiledExpression;\n var convertedObj;\n var jsTree = undefined;\n\n try {\n var compileRes = _spel2js.SpelExpressionEvaluator.compile(spelStr);\n\n compiledExpression = compileRes._compiledExpression;\n } catch (e) {\n meta.errors.push(e);\n }\n\n if (compiledExpression) {\n _stuff.logger.debug(\"compiledExpression:\", compiledExpression);\n\n convertedObj = convertCompiled(compiledExpression, meta);\n\n _stuff.logger.debug(\"convertedObj:\", convertedObj, meta);\n\n jsTree = convertToTree(convertedObj, conv, extendedConfig, meta);\n\n if (jsTree && jsTree.type != \"group\" && jsTree.type != \"switch_group\") {\n jsTree = wrapInDefaultConj(jsTree, extendedConfig);\n }\n\n _stuff.logger.debug(\"jsTree:\", jsTree);\n }\n\n var immTree = jsTree ? (0, _tree.loadTree)(jsTree) : undefined;\n\n if (returnErrors) {\n return [immTree, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while importing from SpEL:\", meta.errors);\n return immTree;\n }\n};\n\nexports._loadFromSpel = _loadFromSpel;\n\nvar convertCompiled = function convertCompiled(expr, meta) {\n var parentExpr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var type = expr.getType();\n var children = expr.getChildren().map(function (child) {\n return convertCompiled(child, meta, expr);\n }); // flatize OR/AND\n\n if (type == \"op-or\" || type == \"op-and\") {\n children = children.reduce(function (acc, child) {\n var canFlatize = child.type == type && !child.not;\n var flat = canFlatize ? child.children : [child];\n return [].concat((0, _toConsumableArray2[\"default\"])(acc), (0, _toConsumableArray2[\"default\"])(flat));\n }, []);\n } // unwrap NOT\n\n\n if (type == \"op-not\") {\n if (children.length != 1) {\n meta.errors.push(\"Operator NOT should have 1 child, but got \".concat(children.length, \"}\"));\n }\n\n return _objectSpread(_objectSpread({}, children[0]), {}, {\n not: !(children[0].not || false)\n });\n }\n\n if (type == \"compound\") {\n // remove `.?[true]`\n children = children.filter(function (child) {\n var isListFix = child.type == \"selection\" && child.children.length == 1 && child.children[0].type == \"boolean\" && child.children[0].val == true;\n return !isListFix;\n }); // aggregation\n // eg. `results.?[product == 'abc'].length`\n\n var selection = children.find(function (child) {\n return child.type == \"selection\";\n });\n\n if (selection && selection.children.length != 1) {\n meta.errors.push(\"Selection should have 1 child, but got \".concat(selection.children.length));\n }\n\n var filter = selection ? selection.children[0] : null;\n var lastChild = children[children.length - 1];\n var isSize = lastChild.type == \"method\" && lastChild.val.methodName == \"size\" || lastChild.type == \"!func\" && lastChild.methodName == \"size\";\n var isLength = lastChild.type == \"property\" && lastChild.val == \"length\";\n var sourceParts = children.filter(function (child) {\n return child !== selection && child !== lastChild;\n });\n var source = {\n type: \"compound\",\n children: sourceParts\n };\n\n if (isSize || isLength) {\n return {\n type: \"!aggr\",\n filter: filter,\n source: source\n };\n } // remove `#this`, `#root`\n\n\n children = children.filter(function (child) {\n var isThis = child.type == \"variable\" && child.val == \"this\";\n var isRoot = child.type == \"variable\" && child.val == \"root\";\n return !(isThis || isRoot);\n }); // indexer\n\n children = children.map(function (child) {\n if (child.type == \"indexer\" && child.children.length == 1) {\n return {\n type: \"indexer\",\n val: child.children[0].val,\n itype: child.children[0].type\n };\n } else {\n return child;\n }\n }); // method\n\n if (lastChild.type == \"method\") {\n var obj = children.filter(function (child) {\n return child !== lastChild;\n });\n return {\n type: \"!func\",\n obj: obj,\n methodName: lastChild.val.methodName,\n args: lastChild.val.args\n };\n } // !func\n\n\n if (lastChild.type == \"!func\") {\n var _obj = children.filter(function (child) {\n return child !== lastChild;\n });\n\n return _objectSpread(_objectSpread({}, lastChild), {}, {\n obj: _obj\n });\n }\n } // getRaw || getValue\n\n\n var val;\n\n try {\n if (expr.getRaw) {\n // use my fork\n val = expr.getRaw();\n } else if (expr.getValue.length == 0) {\n // getValue not requires context arg -> can use\n val = expr.getValue();\n }\n } catch (e) {\n _stuff.logger.error(\"[spel2js] Error in getValue()\", e);\n } // ternary\n\n\n if (type == \"ternary\") {\n val = flatizeTernary(children);\n } // convert method/function args\n\n\n if ((0, _typeof2[\"default\"])(val) === \"object\" && val !== null) {\n if (val.methodName || val.functionName) {\n val.args = val.args.map(function (child) {\n return convertCompiled(child, meta, expr);\n });\n }\n } // convert list\n\n\n if (type == \"list\") {\n val = val.map(function (item) {\n return convertCompiled(item, meta, expr);\n }); // fix whole expression wrapped in `{}`\n\n if (!parentExpr && val.length == 1) {\n return val[0];\n }\n } // convert constructor\n\n\n if (type == \"constructorref\") {\n var qid = children.find(function (child) {\n return child.type == \"qualifiedidentifier\";\n });\n var cls = qid === null || qid === void 0 ? void 0 : qid.val;\n\n if (!cls) {\n meta.errors.push(\"Can't find qualifiedidentifier in constructorref children: \".concat(JSON.stringify(children)));\n return undefined;\n }\n\n var args = children.filter(function (child) {\n return child.type != \"qualifiedidentifier\";\n });\n return {\n type: \"!new\",\n cls: cls,\n args: args\n };\n } // convert type\n\n\n if (type == \"typeref\") {\n var _qid = children.find(function (child) {\n return child.type == \"qualifiedidentifier\";\n });\n\n var _cls = _qid === null || _qid === void 0 ? void 0 : _qid.val;\n\n if (!_cls) {\n meta.errors.push(\"Can't find qualifiedidentifier in typeref children: \".concat(JSON.stringify(children)));\n return undefined;\n }\n\n var _args = children.filter(function (child) {\n return child.type != \"qualifiedidentifier\";\n });\n\n return {\n type: \"!type\",\n cls: _cls\n };\n } // convert function/method\n\n\n if (type == \"function\" || type == \"method\") {\n // `foo()` is method, `#foo()` is function\n // let's use common property `methodName` and just add `isVar` for function\n var _val = val,\n functionName = _val.functionName,\n methodName = _val.methodName,\n _args2 = _val.args;\n return {\n type: \"!func\",\n methodName: functionName || methodName,\n isVar: type == \"function\",\n args: _args2\n };\n }\n\n return {\n type: type,\n children: children,\n val: val\n };\n};\n\nvar flatizeTernary = function flatizeTernary(children) {\n var flat = [];\n\n function _processTernaryChildren(tern) {\n var _tern = (0, _slicedToArray2[\"default\"])(tern, 3),\n cond = _tern[0],\n if_val = _tern[1],\n else_val = _tern[2];\n\n flat.push([cond, if_val]);\n\n if ((else_val === null || else_val === void 0 ? void 0 : else_val.type) == \"ternary\") {\n _processTernaryChildren(else_val.children);\n } else {\n flat.push([undefined, else_val]);\n }\n }\n\n _processTernaryChildren(children);\n\n return flat;\n};\n\nvar buildConv = function buildConv(config) {\n var operators = {};\n\n var _loop = function _loop(opKey) {\n var opConfig = config.operators[opKey];\n\n if (opConfig.spelOps) {\n // examples: \"==\", \"eq\", \".contains\", \"matches\" (can be used for starts_with, ends_with)\n opConfig.spelOps.forEach(function (spelOp) {\n var opk = spelOp; // + \"/\" + defaultValue(opConfig.cardinality, 1);\n\n if (!operators[opk]) operators[opk] = [];\n operators[opk].push(opKey);\n });\n } else if (opConfig.spelOp) {\n var opk = opConfig.spelOp; // + \"/\" + defaultValue(opConfig.cardinality, 1);\n\n if (!operators[opk]) operators[opk] = [];\n operators[opk].push(opKey);\n } else {\n _stuff.logger.log(\"[spel] No spelOp for operator \".concat(opKey));\n }\n };\n\n for (var opKey in config.operators) {\n _loop(opKey);\n }\n\n var conjunctions = {};\n\n for (var conjKey in config.conjunctions) {\n var conjunctionDefinition = config.conjunctions[conjKey];\n var ck = conjunctionDefinition.spelConj || conjKey.toLowerCase();\n conjunctions[ck] = conjKey;\n }\n\n var funcs = {};\n\n for (var funcKey in config.funcs) {\n var funcConfig = config.funcs[funcKey];\n var fk = void 0;\n\n if (typeof funcConfig.spelFunc == \"string\") {\n fk = funcConfig.spelFunc;\n }\n\n if (fk) {\n if (!funcs[fk]) funcs[fk] = [];\n funcs[fk].push(funcKey);\n }\n }\n\n return {\n operators: operators,\n conjunctions: conjunctions,\n funcs: funcs\n };\n};\n\nvar convertPath = function convertPath(parts, meta) {\n var isError = false;\n var res = parts.map(function (c) {\n if (c.type == \"variable\" || c.type == \"property\" || c.type == \"indexer\" && c.itype == \"string\") {\n return c.val;\n } else {\n isError = true;\n meta.errors.push(\"Unexpected item in compound: \".concat(JSON.stringify(c)));\n }\n });\n return !isError ? res : undefined;\n};\n\nvar convertArg = function convertArg(spel, conv, config, meta, parentSpel) {\n if (spel == undefined) return undefined;\n var fieldSeparator = config.settings.fieldSeparator;\n var literalTypes = {\n number: \"number\",\n string: \"text\",\n \"boolean\": \"boolean\",\n \"null\": \"null\" // should not be\n\n };\n var groupFieldParts = parentSpel !== null && parentSpel !== void 0 && parentSpel._groupField ? [parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField] : [];\n\n if (spel.type == \"compound\") {\n var _spel$children, _spel$children$;\n\n // complex field\n var parts = convertPath(spel.children, meta);\n\n if (!parts) {\n return undefined;\n }\n\n var fullParts = [].concat(groupFieldParts, (0, _toConsumableArray2[\"default\"])(parts));\n var isVariable = ((_spel$children = spel.children) === null || _spel$children === void 0 ? void 0 : (_spel$children$ = _spel$children[0]) === null || _spel$children$ === void 0 ? void 0 : _spel$children$.type) == \"variable\";\n return {\n valueSrc: \"field\",\n //valueType: todo\n isVariable: isVariable,\n value: fullParts.join(fieldSeparator)\n };\n } else if (spel.type == \"variable\" || spel.type == \"property\") {\n // normal field\n var _fullParts = [].concat(groupFieldParts, [spel.val]);\n\n var _isVariable = spel.type == \"variable\";\n\n return {\n valueSrc: \"field\",\n //valueType: todo\n isVariable: _isVariable,\n value: _fullParts.join(fieldSeparator)\n };\n } else if (literalTypes[spel.type]) {\n var value = spel.val;\n var valueType = literalTypes[spel.type];\n\n if (parentSpel !== null && parentSpel !== void 0 && parentSpel.isUnary) {\n value = -value;\n }\n\n return {\n valueSrc: \"value\",\n valueType: valueType,\n value: value\n };\n } else if (spel.type == \"list\") {\n var _values$;\n\n var values = spel.val.map(function (v) {\n return convertArg(v, conv, config, meta, spel);\n });\n\n var _itemType = values.length ? (_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.valueType : null;\n\n var _value = values.map(function (v) {\n return v === null || v === void 0 ? void 0 : v.value;\n });\n\n var _valueType = \"multiselect\";\n return {\n valueSrc: \"value\",\n valueType: _valueType,\n value: _value\n };\n } else if (spel.type == \"!func\") {\n var _funcToOpMap;\n\n var obj = spel.obj,\n methodName = spel.methodName,\n args = spel.args,\n isVar = spel.isVar; // todo: get from conv\n\n var funcToOpMap = (_funcToOpMap = {}, (0, _defineProperty2[\"default\"])(_funcToOpMap, \".contains\", \"like\"), (0, _defineProperty2[\"default\"])(_funcToOpMap, \".startsWith\", \"starts_with\"), (0, _defineProperty2[\"default\"])(_funcToOpMap, \".endsWith\", \"ends_with\"), (0, _defineProperty2[\"default\"])(_funcToOpMap, \"$contains\", \"select_any_in\"), _funcToOpMap);\n var convertedArgs = args.map(function (v) {\n return convertArg(v, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n }); //todo: make dynamic: use funcToOpMap and check obj type in basic config\n\n if (methodName == \"contains\" && obj && obj[0].type == \"list\") {\n var convertedObj = obj.map(function (v) {\n return convertArg(v, conv, config, meta, spel);\n }); // {'yellow', 'green'}.?[true].contains(color)\n\n if (!(convertedArgs.length == 1 && convertedArgs[0].valueSrc == \"field\")) {\n meta.errors.push(\"Expected arg to method \".concat(methodName, \" to be field but got: \").concat(JSON.stringify(convertedArgs)));\n return undefined;\n }\n\n var field = convertedArgs[0].value;\n\n if (!(convertedObj.length == 1 && convertedObj[0].valueType == \"multiselect\")) {\n meta.errors.push(\"Expected object of method \".concat(methodName, \" to be inline list but got: \").concat(JSON.stringify(convertedObj)));\n return undefined;\n }\n\n var opKey = funcToOpMap[\"$\" + methodName];\n var list = convertedObj[0];\n return buildRule(config, meta, field, opKey, [list]);\n } else if (funcToOpMap[\".\" + methodName]) {\n // user.login.startsWith('gg')\n var _opKey = funcToOpMap[\".\" + methodName];\n\n var _parts = convertPath(obj, meta);\n\n if (_parts && convertedArgs.length == 1) {\n var _fullParts2 = [].concat(groupFieldParts, (0, _toConsumableArray2[\"default\"])(_parts));\n\n var _field = _fullParts2.join(fieldSeparator);\n\n return buildRule(config, meta, _field, _opKey, convertedArgs);\n }\n } else if (methodName == \"parse\" && obj && obj[0].type == \"!new\" && obj[0].cls.at(-1) == \"SimpleDateFormat\") {\n // new java.text.SimpleDateFormat('yyyy-MM-dd').parse('2022-01-15')\n var _args3 = obj[0].args.map(function (v) {\n return convertArg(v, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n });\n\n if (!(_args3.length == 1 && _args3[0].valueType == \"text\")) {\n meta.errors.push(\"Expected args of \".concat(obj[0].cls.join(\".\"), \".\").concat(methodName, \" to be 1 string but got: \").concat(JSON.stringify(_args3)));\n return undefined;\n }\n\n if (!(convertedArgs.length == 1 && convertedArgs[0].valueType == \"text\")) {\n meta.errors.push(\"Expected args of \".concat(obj[0].cls.join(\".\"), \" to be 1 string but got: \").concat(JSON.stringify(convertedArgs)));\n return undefined;\n }\n\n var dateFormat = _args3[0].value;\n var dateString = convertedArgs[0].value;\n\n var _valueType2 = dateFormat.includes(\" \") ? \"datetime\" : \"date\";\n\n var _field2 = null; // todo\n\n var widget = _valueType2;\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, _field2);\n var widgetConfig = config.widgets[widget || (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.mainWidget)];\n var valueFormat = widgetConfig.valueFormat;\n var dateVal = (0, _moment[\"default\"])(dateString, _moment[\"default\"].ISO_8601);\n\n var _value2 = dateVal.isValid() ? dateVal.format(valueFormat) : undefined;\n\n return {\n valueSrc: \"value\",\n valueType: _valueType2,\n value: _value2\n };\n } else if (methodName == \"parse\" && obj && obj[0].type == \"!type\" && obj[0].cls.at(-1) == \"LocalTime\") {\n // time == T(java.time.LocalTime).parse('02:03:00')\n if (!(convertedArgs.length == 1 && convertedArgs[0].valueType == \"text\")) {\n meta.errors.push(\"Expected args of \".concat(obj[0].cls.join(\".\"), \" to be 1 string but got: \").concat(JSON.stringify(convertedArgs)));\n return undefined;\n }\n\n var timeString = convertedArgs[0].value;\n var _valueType3 = \"time\";\n var _field3 = null; // todo\n\n var _widget = _valueType3;\n\n var _fieldConfig = (0, _configUtils.getFieldConfig)(config, _field3);\n\n var _widgetConfig = config.widgets[_widget || (_fieldConfig === null || _fieldConfig === void 0 ? void 0 : _fieldConfig.mainWidget)];\n var _valueFormat = _widgetConfig.valueFormat;\n\n var _dateVal = (0, _moment[\"default\"])(timeString, \"HH:mm:ss\");\n\n var _value3 = _dateVal.isValid() ? _dateVal.format(_valueFormat) : undefined;\n\n return {\n valueSrc: \"value\",\n valueType: _valueType3,\n value: _value3\n };\n } else {\n // todo: conv.funcs\n meta.errors.push(\"Unsupported method \".concat(methodName));\n }\n } else if (spel.type == \"op-plus\" && (parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel.type) == \"ternary\") {\n return buildCaseValueConcat(spel, conv, config, meta);\n } else {\n meta.errors.push(\"Can't convert arg of type \".concat(spel.type));\n }\n\n return undefined;\n};\n\nvar buildRule = function buildRule(config, meta, field, opKey, convertedArgs) {\n if (convertedArgs.filter(function (v) {\n return v === undefined;\n }).length) {\n return undefined;\n }\n\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n\n if (!fieldConfig) {\n meta.errors.push(\"No config for field \".concat(field));\n return undefined;\n }\n\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, opKey);\n var widgetConfig = config.widgets[widget || fieldConfig.mainWidget];\n var asyncListValuesArr = convertedArgs.map(function (v) {\n return v.asyncListValues;\n }).filter(function (v) {\n return v != undefined;\n });\n var asyncListValues = asyncListValuesArr.length ? asyncListValuesArr[0] : undefined;\n var res = {\n type: \"rule\",\n id: (0, _uuid[\"default\"])(),\n properties: {\n field: field,\n operator: opKey,\n value: convertedArgs.map(function (v) {\n return v.value;\n }),\n valueSrc: convertedArgs.map(function (v) {\n return v.valueSrc;\n }),\n valueType: convertedArgs.map(function (v) {\n if (v.valueSrc == \"value\") {\n return (widgetConfig === null || widgetConfig === void 0 ? void 0 : widgetConfig.type) || (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.type) || v.valueType;\n }\n\n return v.valueType;\n }),\n asyncListValues: asyncListValues\n }\n };\n return res;\n};\n\nvar buildRuleGroup = function buildRuleGroup(_ref, opKey, convertedArgs, config, meta) {\n var groupFilter = _ref.groupFilter,\n groupFieldValue = _ref.groupFieldValue;\n if (groupFieldValue.valueSrc != \"field\") throw \"Bad groupFieldValue: \".concat(JSON.stringify(groupFieldValue));\n var groupField = groupFieldValue.value;\n var groupOpRule = buildRule(config, meta, groupField, opKey, convertedArgs);\n if (!groupOpRule) return undefined;\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, groupField);\n var mode = fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.mode;\n\n var res = _objectSpread(_objectSpread({}, groupFilter || {}), {}, {\n type: \"rule_group\",\n properties: _objectSpread(_objectSpread(_objectSpread({}, groupOpRule.properties), (groupFilter === null || groupFilter === void 0 ? void 0 : groupFilter.properties) || {}), {}, {\n mode: mode\n })\n });\n\n if (!res.id) res.id = (0, _uuid[\"default\"])();\n return res;\n};\n\nvar compareArgs = function compareArgs(left, right, spel, conv, config, meta) {\n var parentSpel = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n\n if (left.type == right.type) {\n if (left.type == \"!aggr\") {\n var _map = [left.source, right.source].map(function (v) {\n return convertArg(v, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n }),\n _map2 = (0, _slicedToArray2[\"default\"])(_map, 2),\n leftSource = _map2[0],\n rightSource = _map2[1]; //todo: check same filter\n\n\n return leftSource.value == rightSource.value;\n } else {\n var _map3 = [left, right].map(function (v) {\n return convertArg(v, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n }),\n _map4 = (0, _slicedToArray2[\"default\"])(_map3, 2),\n leftVal = _map4[0],\n rightVal = _map4[1];\n\n return leftVal.value == rightVal.value;\n }\n }\n\n return false;\n};\n\nvar convertToTree = function convertToTree(spel, conv, config, meta) {\n var parentSpel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!spel) return undefined;\n var res;\n\n if (spel.type.indexOf(\"op-\") == 0) {\n var op = spel.type.slice(\"op-\".length); // unary\n\n var isUnary = (op == \"minus\" || op == \"plus\") && spel.children.length == 1;\n\n if (isUnary) {\n spel.isUnary = true;\n return convertToTree(spel.children[0], conv, config, meta, spel);\n } // between\n\n\n var isBetweenNormal = op == \"and\" && spel.children.length == 2 && spel.children[0].type == \"op-ge\" && spel.children[1].type == \"op-le\";\n var isBetweenRev = op == \"or\" && spel.children.length == 2 && spel.children[0].type == \"op-lt\" && spel.children[1].type == \"op-gt\";\n var isBetween = isBetweenNormal || isBetweenRev;\n\n if (isBetween) {\n var _spel$children$0$chil = (0, _slicedToArray2[\"default\"])(spel.children[0].children, 2),\n left = _spel$children$0$chil[0],\n from = _spel$children$0$chil[1];\n\n var _spel$children$1$chil = (0, _slicedToArray2[\"default\"])(spel.children[1].children, 2),\n right = _spel$children$1$chil[0],\n to = _spel$children$1$chil[1];\n\n var isNumbers = from.type == \"number\" && to.type == \"number\";\n var isSameSource = compareArgs(left, right, spel, conv, config, meta, parentSpel);\n\n if (isNumbers && isSameSource) {\n var _fromValue = from.val;\n var _toValue = to.val;\n var oneSpel = {\n type: \"op-between\",\n children: [left, from, to]\n };\n return convertToTree(oneSpel, conv, config, meta, parentSpel);\n }\n } // find op\n\n\n var opKeys = conv.operators[op];\n var opKey; // todo: make dynamic, use basic config\n\n if (op == \"eq\" && spel.children[1].type == \"null\") {\n opKey = \"is_null\";\n } else if (op == \"ne\" && spel.children[1].type == \"null\") {\n opKey = \"is_not_null\";\n } else if (op == \"le\" && spel.children[1].type == \"string\" && spel.children[1].val == \"\") {\n opKey = \"is_empty\";\n opKeys = [\"is_empty\"];\n } else if (op == \"gt\" && spel.children[1].type == \"string\" && spel.children[1].val == \"\") {\n opKey = \"is_not_empty\";\n opKeys = [\"is_not_empty\"];\n } else if (op == \"between\") {\n opKey = \"between\";\n opKeys = [\"between\"];\n } // convert children\n\n\n var convertChildren = function convertChildren() {\n return spel.children.map(function (child) {\n return convertToTree(child, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n });\n };\n\n if (op == \"and\" || op == \"or\") {\n var children1 = {};\n var vals = convertChildren();\n vals.forEach(function (v) {\n if (v) {\n var id = (0, _uuid[\"default\"])();\n v.id = id;\n\n if (v.type != undefined) {\n children1[id] = v;\n } else {\n meta.errors.push(\"Bad item in AND/OR: \".concat(JSON.stringify(v)));\n }\n }\n });\n res = {\n type: \"group\",\n id: (0, _uuid[\"default\"])(),\n children1: children1,\n properties: {\n conjunction: conv.conjunctions[op],\n not: spel.not\n }\n };\n } else if (opKeys) {\n var _vals = convertChildren();\n\n var fieldObj = _vals[0];\n\n var convertedArgs = _vals.slice(1);\n\n opKey = opKeys[0];\n\n if (!fieldObj) {// LHS can't be parsed\n } else if (fieldObj.groupFieldValue) {\n // 1. group\n if (fieldObj.groupFieldValue.valueSrc != \"field\") {\n meta.errors.push(\"Expected group field \".concat(JSON.stringify(fieldObj)));\n }\n\n var groupField = fieldObj.groupFieldValue.value; // some/all/none\n\n var opArg = convertedArgs[0];\n\n if (opArg && opArg.groupFieldValue && opArg.groupFieldValue.valueSrc == \"field\" && opArg.groupFieldValue.value == groupField) {\n // group.?[...].size() == group.size()\n opKey = \"all\";\n convertedArgs = [];\n } else if (opKey == \"equal\" && opArg.valueSrc == \"value\" && opArg.valueType == \"number\" && opArg.value == 0) {\n opKey = \"none\";\n convertedArgs = [];\n } else if (opKey == \"greater\" && opArg.valueSrc == \"value\" && opArg.valueType == \"number\" && opArg.value == 0) {\n opKey = \"some\";\n convertedArgs = [];\n }\n\n res = buildRuleGroup(fieldObj, opKey, convertedArgs, config, meta);\n } else {\n // 2. not group\n if (fieldObj.valueSrc != \"field\") {\n meta.errors.push(\"Expected field \".concat(JSON.stringify(fieldObj)));\n }\n\n var field = fieldObj.value;\n\n if (opKeys.length > 1) {\n _stuff.logger.warn(\"[spel] Spel operator \".concat(op, \" can be mapped to \").concat(opKeys)); //todo: it's naive\n\n\n var widgets = opKeys.map(function (op) {\n return {\n op: op,\n widget: (0, _ruleUtils.getWidgetForFieldOp)(config, field, op)\n };\n });\n\n if (op == \"eq\" || op == \"ne\") {\n var ws = widgets.find(function (_ref2) {\n var op = _ref2.op,\n widget = _ref2.widget;\n return widget && widget != \"field\";\n });\n opKey = ws.op;\n }\n }\n\n res = buildRule(config, meta, field, opKey, convertedArgs);\n }\n } else {\n if (!parentSpel) {\n // try to parse whole `\"str\" + prop + #var` as ternary\n res = buildSimpleSwitch(spel, conv, config, meta);\n }\n\n if (!res) {\n meta.errors.push(\"Can't convert op \".concat(op));\n }\n }\n } else if (spel.type == \"!aggr\") {\n var _groupFilter;\n\n var groupFieldValue = convertToTree(spel.source, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n var groupFilter = convertToTree(spel.filter, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: groupFieldValue === null || groupFieldValue === void 0 ? void 0 : groupFieldValue.value\n }));\n\n if (((_groupFilter = groupFilter) === null || _groupFilter === void 0 ? void 0 : _groupFilter.type) == \"rule\") {\n groupFilter = wrapInDefaultConj(groupFilter, config);\n }\n\n res = {\n groupFilter: groupFilter,\n groupFieldValue: groupFieldValue\n };\n\n if (!parentSpel) {\n // !aggr can't be in root, it should be compared with something\n res = undefined;\n meta.errors.push(\"Unexpected !aggr in root\");\n }\n } else if (spel.type == \"ternary\") {\n var _children = {};\n spel.val.forEach(function (v) {\n var _v = (0, _slicedToArray2[\"default\"])(v, 2),\n cond = _v[0],\n val = _v[1];\n\n var caseI = buildCase(cond, val, conv, config, meta, spel);\n\n if (caseI) {\n _children[caseI.id] = caseI;\n }\n });\n res = {\n type: \"switch_group\",\n id: (0, _uuid[\"default\"])(),\n children1: _children,\n properties: {}\n };\n } else {\n res = convertArg(spel, conv, config, meta, parentSpel);\n\n if (res && !res.type && !parentSpel) {\n // try to parse whole `\"1\"` as ternary\n var sw = buildSimpleSwitch(spel, conv, config, meta);\n\n if (sw) {\n res = sw;\n } else {\n res = undefined;\n meta.errors.push(\"Can't convert rule of type \".concat(spel.type, \", it looks like var/literal\"));\n }\n }\n }\n\n return res;\n};\n\nvar buildSimpleSwitch = function buildSimpleSwitch(val, conv, config, meta) {\n var children1 = {};\n var cond = null;\n var caseI = buildCase(cond, val, conv, config, meta);\n\n if (caseI) {\n children1[caseI.id] = caseI;\n }\n\n var res = {\n type: \"switch_group\",\n id: (0, _uuid[\"default\"])(),\n children1: children1,\n properties: {}\n };\n return res;\n};\n\nvar buildCase = function buildCase(cond, val, conv, config, meta) {\n var spel = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var valProperties = buildCaseValProperties(config, meta, conv, val, spel);\n var caseI;\n\n if (cond) {\n caseI = convertToTree(cond, conv, config, meta, spel);\n\n if (caseI && caseI.type) {\n if (caseI.type != \"group\") {\n caseI = wrapInDefaultConj(caseI, config);\n }\n\n caseI.type = \"case_group\";\n } else {\n meta.errors.push(\"Unexpected case: \".concat(JSON.stringify(caseI)));\n caseI = undefined;\n }\n } else {\n caseI = {\n id: (0, _uuid[\"default\"])(),\n type: \"case_group\",\n properties: {}\n };\n }\n\n if (caseI) {\n caseI.properties = _objectSpread(_objectSpread({}, caseI.properties), valProperties);\n }\n\n return caseI;\n};\n\nvar buildCaseValueConcat = function buildCaseValueConcat(spel, conv, config, meta) {\n var flat = [];\n\n function _processConcatChildren(children) {\n children.map(function (child) {\n if (child.type == \"op-plus\") {\n _processConcatChildren(child.children);\n } else {\n var convertedChild = convertArg(child, conv, config, meta, spel);\n\n if (convertedChild) {\n flat.push(convertedChild);\n } else {\n meta.errors.push(\"Can't convert \".concat(child.type, \" in concatenation\"));\n }\n }\n });\n }\n\n _processConcatChildren(spel.children);\n\n return {\n valueSrc: \"value\",\n valueType: \"case_value\",\n value: flat\n };\n};\n\nvar buildCaseValProperties = function buildCaseValProperties(config, meta, conv, val) {\n var spel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var valProperties = {};\n var convVal;\n\n if ((val === null || val === void 0 ? void 0 : val.type) == \"op-plus\") {\n convVal = buildCaseValueConcat(val, conv, config, meta);\n } else {\n convVal = convertArg(val, conv, config, meta, spel);\n }\n\n var widgetDef = config.widgets[\"case_value\"];\n var importCaseValue = widgetDef === null || widgetDef === void 0 ? void 0 : widgetDef.spelImportValue;\n\n if (importCaseValue) {\n var _importCaseValue = importCaseValue(convVal),\n _importCaseValue2 = (0, _slicedToArray2[\"default\"])(_importCaseValue, 2),\n normVal = _importCaseValue2[0],\n normErrors = _importCaseValue2[1];\n\n normErrors.map(function (e) {\n return meta.errors.push(e);\n });\n\n if (normVal) {\n valProperties = {\n value: [normVal],\n valueSrc: [\"value\"],\n valueType: [\"case_value\"]\n };\n }\n } else {\n meta.errors.push(\"No fucntion to import case value\");\n }\n\n return valProperties;\n};\n\nvar wrapInDefaultConjRuleGroup = function wrapInDefaultConjRuleGroup(rule, parentField, parentFieldConfig, config, conj) {\n if (!rule) return undefined;\n return {\n type: \"rule_group\",\n id: (0, _uuid[\"default\"])(),\n children1: (0, _defineProperty2[\"default\"])({}, rule.id, rule),\n properties: {\n conjunction: conj || (0, _defaultUtils.defaultGroupConjunction)(config, parentFieldConfig),\n not: false,\n field: parentField\n }\n };\n};\n\nvar wrapInDefaultConj = function wrapInDefaultConj(rule, config) {\n var not = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return {\n type: \"group\",\n id: (0, _uuid[\"default\"])(),\n children1: (0, _defineProperty2[\"default\"])({}, rule.id, rule),\n properties: {\n conjunction: (0, _defaultUtils.defaultConjunction)(config),\n not: not\n }\n };\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof3 = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isImmutableTree = exports.getTree = exports.checkTree = void 0;\nObject.defineProperty(exports, \"isJsonLogic\", {\n enumerable: true,\n get: function get() {\n return _stuff.isJsonLogic;\n }\n});\nexports.loadTree = exports.isValidTree = exports.isTree = void 0;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _immutable = _interopRequireWildcard(require(\"immutable\"));\n\nvar _validation = require(\"../utils/validation\");\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _treeUtils = require(\"../utils/treeUtils\");\n\nvar _stuff = require(\"../utils/stuff\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar getTree = function getTree(immutableTree) {\n var light = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var children1AsArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!immutableTree) return undefined;\n var tree = immutableTree;\n tree = tree.toJS();\n if (light) tree = (0, _treeUtils.getLightTree)(tree, children1AsArray);\n return tree;\n};\n\nexports.getTree = getTree;\n\nvar loadTree = function loadTree(serTree) {\n if (isImmutableTree(serTree)) {\n return serTree;\n } else if (isTree(serTree)) {\n return jsTreeToImmutable(serTree);\n } else if (typeof serTree == \"string\" && serTree.startsWith('[\"~#iM\"')) {\n //tip: old versions of RAQB were saving tree with `transit.toJSON()`\n // https://github.com/ukrbublik/react-awesome-query-builder/issues/69\n throw \"You are trying to load query in obsolete serialization format (Immutable string) which is not supported in versions starting from 2.1.17\";\n } else if (typeof serTree == \"string\") {\n return jsTreeToImmutable(JSON.parse(serTree));\n } else throw \"Can't load tree!\";\n};\n\nexports.loadTree = loadTree;\n\nvar checkTree = function checkTree(tree, config) {\n if (!tree) return undefined;\n var extendedConfig = (0, _configUtils.extendConfig)(config);\n return (0, _validation.validateTree)(tree, null, extendedConfig, extendedConfig);\n};\n\nexports.checkTree = checkTree;\n\nvar isValidTree = function isValidTree(tree) {\n return (0, _treeUtils.getTreeBadFields)(tree).length == 0;\n};\n\nexports.isValidTree = isValidTree;\n\nvar isImmutableTree = function isImmutableTree(tree) {\n return _immutable.Map.isMap(tree);\n};\n\nexports.isImmutableTree = isImmutableTree;\n\nvar isTree = function isTree(tree) {\n return (0, _typeof2[\"default\"])(tree) == \"object\" && (tree.type == \"group\" || tree.type == \"switch_group\");\n};\n\nexports.isTree = isTree;\n\nfunction jsTreeToImmutable(tree) {\n return (0, _immutable.fromJS)(tree, function (key, value) {\n var outValue;\n\n if (key == \"properties\") {\n outValue = value.toOrderedMap(); // `value` should be undefined instead of null\n // JSON doesn't support undefined and replaces undefined -> null\n // So fix: null -> undefined\n\n for (var i = 0; i < 2; i++) {\n var _outValue$get;\n\n if (((_outValue$get = outValue.get(\"value\")) === null || _outValue$get === void 0 ? void 0 : _outValue$get.get(i)) === null) {\n outValue = outValue.setIn([\"value\", i], undefined);\n }\n }\n } else if (key == \"value\" && value.get(0) && value.get(0).toJS !== undefined) {\n var valueJs = value.get(0).toJS();\n\n if (valueJs.func) {\n outValue = value.toOrderedMap();\n } else {\n // only for raw values keep JS representation\n outValue = _immutable[\"default\"].List.of(valueJs);\n }\n } else if (key == \"asyncListValues\") {\n // keep in JS format\n outValue = value.toJS();\n } else if (key == \"children1\" && _immutable[\"default\"].Iterable.isIndexed(value)) {\n outValue = new _immutable[\"default\"].OrderedMap(value.map(function (child) {\n return [child.get(\"id\"), child];\n }));\n } else {\n outValue = _immutable[\"default\"].Iterable.isIndexed(value) ? value.toList() : value.toOrderedMap();\n }\n\n return outValue;\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"BasicConfig\", {\n enumerable: true,\n get: function get() {\n return _basic[\"default\"];\n }\n});\nexports.BasicFuncs = void 0;\nObject.defineProperty(exports, \"Builder\", {\n enumerable: true,\n get: function get() {\n return _Builder[\"default\"];\n }\n});\nexports.Operators = exports.Import = exports.Export = void 0;\nObject.defineProperty(exports, \"Query\", {\n enumerable: true,\n get: function get() {\n return _QueryContainer[\"default\"];\n }\n});\nexports.Widgets = exports.Utils = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _QueryContainer = _interopRequireDefault(require(\"./components/QueryContainer\"));\n\nvar _Builder = _interopRequireDefault(require(\"./components/Builder\"));\n\nvar Export = _interopRequireWildcard(require(\"./export\"));\n\nexports.Export = Export;\n\nvar Import = _interopRequireWildcard(require(\"./import\"));\n\nexports.Import = Import;\n\nvar Widgets = _interopRequireWildcard(require(\"./components/widgets/index\"));\n\nexports.Widgets = Widgets;\n\nvar Operators = _interopRequireWildcard(require(\"./components/operators\"));\n\nexports.Operators = Operators;\n\nvar BasicUtils = _interopRequireWildcard(require(\"./utils\"));\n\nvar BasicFuncs = _interopRequireWildcard(require(\"./config/funcs\"));\n\nexports.BasicFuncs = BasicFuncs;\n\nvar _basic = _interopRequireDefault(require(\"./config/basic\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar Utils = _objectSpread(_objectSpread(_objectSpread({}, BasicUtils), Export), Import);\n\nexports.Utils = Utils;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = /*#__PURE__*/_react[\"default\"].createContext();\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _immutable = _interopRequireDefault(require(\"immutable\"));\n\nvar _treeUtils = require(\"../utils/treeUtils\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar constants = _interopRequireWildcard(require(\"../constants\"));\n\nvar _uuid = _interopRequireDefault(require(\"../utils/uuid\"));\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _validation = require(\"../utils/validation\");\n\nvar _omit = _interopRequireDefault(require(\"lodash/omit\"));\n\nvar _mapValues = _interopRequireDefault(require(\"lodash/mapValues\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\nvar addNewGroup = function addNewGroup(state, path, type, groupUuid, properties, config) {\n var children = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n var meta = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : {};\n var shouldCreateEmptyGroup = config.settings.shouldCreateEmptyGroup;\n var groupPath = path.push(groupUuid);\n var canAddNewRule = !shouldCreateEmptyGroup;\n var isDefaultCase = !!(meta !== null && meta !== void 0 && meta.isDefaultCase);\n var origState = state;\n state = addItem(state, path, type, groupUuid, (0, _defaultUtils.defaultGroupProperties)(config).merge(properties || {}), config, children);\n\n if (state !== origState) {\n if (!children && !isDefaultCase) {\n state = state.setIn((0, _treeUtils.expandTreePath)(groupPath, \"children1\"), new _immutable[\"default\"].OrderedMap()); // Add one empty rule into new group\n\n if (canAddNewRule) {\n state = addItem(state, groupPath, \"rule\", (0, _uuid[\"default\"])(), (0, _defaultUtils.defaultRuleProperties)(config), config);\n }\n }\n\n state = (0, _treeUtils.fixPathsInTree)(state);\n }\n\n return state;\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\n\n\nvar removeGroup = function removeGroup(state, path, config) {\n state = removeItem(state, path);\n var canLeaveEmptyGroup = config.settings.canLeaveEmptyGroup;\n var parentPath = path.slice(0, -1);\n var isEmptyParentGroup = !(0, _treeUtils.hasChildren)(state, parentPath);\n\n if (isEmptyParentGroup && !canLeaveEmptyGroup) {\n // check ancestors for emptiness (and delete 'em if empty)\n state = (0, _treeUtils.fixEmptyGroupsInTree)(state);\n\n if ((0, _treeUtils.isEmptyTree)(state) && !canLeaveEmptyGroup) {\n // if whole query is empty, add one empty rule to root\n state = addItem(state, new _immutable[\"default\"].List(), \"rule\", (0, _uuid[\"default\"])(), (0, _defaultUtils.defaultRuleProperties)(config), config);\n }\n }\n\n state = (0, _treeUtils.fixPathsInTree)(state);\n return state;\n};\n/**\n * @param {object} config\n * @param {Immutable.List} path\n */\n\n\nvar removeRule = function removeRule(state, path, config) {\n state = removeItem(state, path);\n var canLeaveEmptyGroup = config.settings.canLeaveEmptyGroup;\n var parentPath = path.pop();\n var parent = state.getIn((0, _treeUtils.expandTreePath)(parentPath));\n var parentField = parent.getIn([\"properties\", \"field\"]);\n var parentOperator = parent.getIn([\"properties\", \"operator\"]);\n var parentValue = parent.getIn([\"properties\", \"value\", 0]);\n var parentFieldConfig = parentField ? (0, _configUtils.getFieldConfig)(config, parentField) : null;\n var parentOperatorConfig = parentOperator ? (0, _configUtils.getOperatorConfig)(config, parentOperator, parentField) : null;\n var hasGroupCountRule = parentField && parentOperator && parentOperatorConfig.cardinality != 0; // && parentValue != undefined;\n\n var isParentRuleGroup = parent.get(\"type\") == \"rule_group\";\n var isEmptyParentGroup = !(0, _treeUtils.hasChildren)(state, parentPath);\n var canLeaveEmpty = isParentRuleGroup ? hasGroupCountRule && parentFieldConfig.initialEmptyWhere : canLeaveEmptyGroup;\n\n if (isEmptyParentGroup && !canLeaveEmpty) {\n if (isParentRuleGroup) {\n // deleted last rule from rule_group, so delete whole rule_group\n state = state.deleteIn((0, _treeUtils.expandTreePath)(parentPath));\n } // check ancestors for emptiness (and delete 'em if empty)\n\n\n state = (0, _treeUtils.fixEmptyGroupsInTree)(state);\n\n if ((0, _treeUtils.isEmptyTree)(state) && !canLeaveEmptyGroup) {\n // if whole query is empty, add one empty rule to root\n state = addItem(state, new _immutable[\"default\"].List(), \"rule\", (0, _uuid[\"default\"])(), (0, _defaultUtils.defaultRuleProperties)(config), config);\n }\n }\n\n state = (0, _treeUtils.fixPathsInTree)(state);\n return state;\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {bool} not\n */\n\n\nvar setNot = function setNot(state, path, not) {\n return state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"not\"), not);\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {bool} lock\n */\n\n\nvar setLock = function setLock(state, path, lock) {\n return (0, _treeUtils.removeIsLockedInTree)(state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"isLocked\"), lock));\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} conjunction\n */\n\n\nvar setConjunction = function setConjunction(state, path, conjunction) {\n return state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"conjunction\"), conjunction);\n}; // convert children deeply from JS to Immutable\n\n\nvar _addChildren1 = function _addChildren1(config, item, children) {\n if (children && Array.isArray(children)) {\n item.children1 = new _immutable[\"default\"].OrderedMap(children.reduce(function (map, it) {\n var id1 = (0, _uuid[\"default\"])();\n\n var it1 = _objectSpread(_objectSpread({}, it), {}, {\n properties: (0, _defaultUtils.defaultItemProperties)(config, it).merge(it.properties || {}),\n id: id1\n });\n\n _addChildren1(config, it1, it1.children1); //todo: guarantee order\n\n\n return _objectSpread(_objectSpread({}, map), {}, (0, _defineProperty2[\"default\"])({}, id1, new _immutable[\"default\"].Map(it1)));\n }, {}));\n }\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} type\n * @param {string} id\n * @param {Immutable.OrderedMap} properties\n * @param {object} config\n */\n\n\nvar addItem = function addItem(state, path, type, id, properties, config) {\n var children = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n if (type == \"switch_group\") throw new Error(\"Can't add switch_group programmatically\");\n var _config$settings = config.settings,\n maxNumberOfCases = _config$settings.maxNumberOfCases,\n maxNumberOfRules = _config$settings.maxNumberOfRules,\n maxNesting = _config$settings.maxNesting;\n var rootType = state.get(\"type\");\n var isTernary = rootType == \"switch_group\";\n var targetItem = state.getIn((0, _treeUtils.expandTreePath)(path));\n var caseGroup = isTernary ? state.getIn((0, _treeUtils.expandTreePath)(path.take(2))) : null;\n var childrenPath = (0, _treeUtils.expandTreePath)(path, \"children1\");\n var targetChildren = state.getIn(childrenPath);\n var hasChildren = !!targetChildren && targetChildren.size;\n var targetChildrenSize = hasChildren ? targetChildren.size : null;\n var currentNumber, maxNumber;\n\n if (type == \"case_group\") {\n currentNumber = targetChildrenSize;\n maxNumber = maxNumberOfCases;\n } else if (type == \"group\") {\n currentNumber = path.size;\n maxNumber = maxNesting;\n } else if ((targetItem === null || targetItem === void 0 ? void 0 : targetItem.get(\"type\")) == \"rule_group\") {// don't restrict\n } else {\n currentNumber = isTernary ? (0, _treeUtils.getTotalRulesCountInTree)(caseGroup) : (0, _treeUtils.getTotalRulesCountInTree)(state);\n maxNumber = maxNumberOfRules;\n }\n\n var canAdd = maxNumber && currentNumber ? currentNumber < maxNumber : true;\n var item = {\n type: type,\n id: id,\n properties: properties\n };\n\n _addChildren1(config, item, children);\n\n var isLastDefaultCase = type == \"case_group\" && hasChildren && targetChildren.last().get(\"children1\") == null;\n\n if (canAdd) {\n var newChildren = new _immutable[\"default\"].OrderedMap((0, _defineProperty2[\"default\"])({}, id, new _immutable[\"default\"].Map(item)));\n\n if (!hasChildren) {\n state = state.setIn(childrenPath, newChildren);\n } else if (isLastDefaultCase) {\n var _Immutable$OrderedMap2;\n\n var last = targetChildren.last();\n var newChildrenWithLast = new _immutable[\"default\"].OrderedMap((_Immutable$OrderedMap2 = {}, (0, _defineProperty2[\"default\"])(_Immutable$OrderedMap2, id, new _immutable[\"default\"].Map(item)), (0, _defineProperty2[\"default\"])(_Immutable$OrderedMap2, last.get(\"id\"), last), _Immutable$OrderedMap2));\n state = state.deleteIn((0, _treeUtils.expandTreePath)(childrenPath, \"children1\", last.get(\"id\")));\n state = state.mergeIn(childrenPath, newChildrenWithLast);\n } else {\n state = state.mergeIn(childrenPath, newChildren);\n }\n\n state = (0, _treeUtils.fixPathsInTree)(state);\n }\n\n return state;\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n */\n\n\nvar removeItem = function removeItem(state, path) {\n state = state.deleteIn((0, _treeUtils.expandTreePath)(path));\n state = (0, _treeUtils.fixPathsInTree)(state);\n return state;\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} fromPath\n * @param {Immutable.List} toPath\n * @param {string} placement, see constants PLACEMENT_*: PLACEMENT_AFTER, PLACEMENT_BEFORE, PLACEMENT_APPEND, PLACEMENT_PREPEND\n * @param {object} config\n */\n\n\nvar moveItem = function moveItem(state, fromPath, toPath, placement, config) {\n var from = (0, _treeUtils.getItemByPath)(state, fromPath);\n var sourcePath = fromPath.pop();\n var source = fromPath.size > 1 ? (0, _treeUtils.getItemByPath)(state, sourcePath) : null;\n var sourceChildren = source ? source.get(\"children1\") : null;\n var to = (0, _treeUtils.getItemByPath)(state, toPath);\n var targetPath = placement == constants.PLACEMENT_APPEND || placement == constants.PLACEMENT_PREPEND ? toPath : toPath.pop();\n var target = placement == constants.PLACEMENT_APPEND || placement == constants.PLACEMENT_PREPEND ? to : toPath.size > 1 ? (0, _treeUtils.getItemByPath)(state, targetPath) : null;\n var targetChildren = target ? target.get(\"children1\") : null;\n if (!source || !target) return state;\n var isSameParent = source.get(\"id\") == target.get(\"id\");\n var isSourceInsideTarget = targetPath.size < sourcePath.size && (0, _stuff.deepEqual)(targetPath.toArray(), sourcePath.toArray().slice(0, targetPath.size));\n var isTargetInsideSource = targetPath.size > sourcePath.size && (0, _stuff.deepEqual)(sourcePath.toArray(), targetPath.toArray().slice(0, sourcePath.size));\n var sourceSubpathFromTarget = null;\n var targetSubpathFromSource = null;\n\n if (isSourceInsideTarget) {\n sourceSubpathFromTarget = _immutable[\"default\"].List(sourcePath.toArray().slice(targetPath.size));\n } else if (isTargetInsideSource) {\n targetSubpathFromSource = _immutable[\"default\"].List(targetPath.toArray().slice(sourcePath.size));\n }\n\n var newTargetChildren = targetChildren,\n newSourceChildren = sourceChildren;\n if (!isTargetInsideSource) newSourceChildren = newSourceChildren[\"delete\"](from.get(\"id\"));\n\n if (isSameParent) {\n newTargetChildren = newSourceChildren;\n } else if (isSourceInsideTarget) {\n newTargetChildren = newTargetChildren.updateIn((0, _treeUtils.expandTreeSubpath)(sourceSubpathFromTarget, \"children1\"), function (_oldChildren) {\n return newSourceChildren;\n });\n }\n\n if (placement == constants.PLACEMENT_BEFORE || placement == constants.PLACEMENT_AFTER) {\n newTargetChildren = _immutable[\"default\"].OrderedMap().withMutations(function (r) {\n var _iterator = _createForOfIteratorHelper(newTargetChildren.entries()),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = (0, _slicedToArray2[\"default\"])(_step.value, 2),\n itemId = _step$value[0],\n item = _step$value[1];\n\n if (itemId == to.get(\"id\") && placement == constants.PLACEMENT_BEFORE) {\n r.set(from.get(\"id\"), from);\n }\n\n r.set(itemId, item);\n\n if (itemId == to.get(\"id\") && placement == constants.PLACEMENT_AFTER) {\n r.set(from.get(\"id\"), from);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n });\n } else if (placement == constants.PLACEMENT_APPEND) {\n newTargetChildren = newTargetChildren.merge((0, _defineProperty2[\"default\"])({}, from.get(\"id\"), from));\n } else if (placement == constants.PLACEMENT_PREPEND) {\n newTargetChildren = _immutable[\"default\"].OrderedMap((0, _defineProperty2[\"default\"])({}, from.get(\"id\"), from)).merge(newTargetChildren);\n }\n\n if (isTargetInsideSource) {\n newSourceChildren = newSourceChildren.updateIn((0, _treeUtils.expandTreeSubpath)(targetSubpathFromSource, \"children1\"), function (_oldChildren) {\n return newTargetChildren;\n });\n newSourceChildren = newSourceChildren[\"delete\"](from.get(\"id\"));\n }\n\n if (!isSameParent && !isSourceInsideTarget) state = state.updateIn((0, _treeUtils.expandTreePath)(sourcePath, \"children1\"), function (_oldChildren) {\n return newSourceChildren;\n });\n if (!isTargetInsideSource) state = state.updateIn((0, _treeUtils.expandTreePath)(targetPath, \"children1\"), function (_oldChildren) {\n return newTargetChildren;\n });\n state = (0, _treeUtils.fixPathsInTree)(state);\n return state;\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} field\n */\n\n\nvar setField = function setField(state, path, newField, config) {\n if (!newField) return removeItem(state, path);\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n setOpOnChangeField = _config$settings2.setOpOnChangeField,\n showErrorMessage = _config$settings2.showErrorMessage;\n if (Array.isArray(newField)) newField = newField.join(fieldSeparator);\n var currentType = state.getIn((0, _treeUtils.expandTreePath)(path, \"type\"));\n var currentProperties = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\"));\n var wasRuleGroup = currentType == \"rule_group\";\n var newFieldConfig = (0, _configUtils.getFieldConfig)(config, newField);\n var isRuleGroup = newFieldConfig.type == \"!group\";\n var isRuleGroupExt = isRuleGroup && newFieldConfig.mode == \"array\";\n var isChangeToAnotherType = wasRuleGroup != isRuleGroup;\n var currentOperator = currentProperties.get(\"operator\");\n var currentOperatorOptions = currentProperties.get(\"operatorOptions\");\n\n var _currentField = currentProperties.get(\"field\");\n\n var _currentValue = currentProperties.get(\"value\");\n\n var _currentValueSrc = currentProperties.get(\"valueSrc\", new _immutable[\"default\"].List());\n\n var _currentValueType = currentProperties.get(\"valueType\", new _immutable[\"default\"].List()); // If the newly selected field supports the same operator the rule currently\n // uses, keep it selected.\n\n\n var lastOp = newFieldConfig && newFieldConfig.operators.indexOf(currentOperator) !== -1 ? currentOperator : null;\n var newOperator = null;\n var availOps = (0, _ruleUtils.getOperatorsForField)(config, newField);\n if (availOps && availOps.length == 1) newOperator = availOps[0];else if (availOps && availOps.length > 1) {\n var _iterator2 = _createForOfIteratorHelper(setOpOnChangeField || []),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var strategy = _step2.value;\n if (strategy == \"keep\" && !isChangeToAnotherType) newOperator = lastOp;else if (strategy == \"default\") newOperator = (0, _defaultUtils.defaultOperator)(config, newField, false);else if (strategy == \"first\") newOperator = (0, _ruleUtils.getFirstOperator)(config, newField);\n if (newOperator) //found op for strategy\n break;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n\n if (!isRuleGroup && !newFieldConfig.operators) {\n console.warn(\"Type \".concat(newFieldConfig.type, \" is not supported\"));\n return state;\n }\n\n if (wasRuleGroup && !isRuleGroup) {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"type\"), \"rule\");\n state = state.deleteIn((0, _treeUtils.expandTreePath)(path, \"children1\"));\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\"), new _immutable[\"default\"].OrderedMap());\n }\n\n if (isRuleGroup) {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"type\"), \"rule_group\");\n\n var _getNewValueForFieldO = (0, _ruleUtils.getNewValueForFieldOp)(config, config, currentProperties, newField, newOperator, \"field\", true),\n canReuseValue = _getNewValueForFieldO.canReuseValue,\n newValue = _getNewValueForFieldO.newValue,\n newValueSrc = _getNewValueForFieldO.newValueSrc,\n newValueType = _getNewValueForFieldO.newValueType,\n operatorCardinality = _getNewValueForFieldO.operatorCardinality;\n\n var groupProperties = (0, _defaultUtils.defaultGroupProperties)(config, newFieldConfig).merge({\n field: newField,\n mode: newFieldConfig.mode\n });\n\n if (isRuleGroupExt) {\n groupProperties = groupProperties.merge({\n operator: newOperator,\n value: newValue,\n valueSrc: newValueSrc,\n valueType: newValueType\n });\n }\n\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"children1\"), new _immutable[\"default\"].OrderedMap());\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\"), groupProperties);\n\n if (newFieldConfig.initialEmptyWhere && operatorCardinality == 1) {// just `COUNT(grp) > 1` without `HAVING ..`\n // no childeren\n } else {\n state = addItem(state, path, \"rule\", (0, _uuid[\"default\"])(), (0, _defaultUtils.defaultRuleProperties)(config, newField), config);\n }\n\n state = (0, _treeUtils.fixPathsInTree)(state);\n return state;\n }\n\n return state.updateIn((0, _treeUtils.expandTreePath)(path, \"properties\"), function (map) {\n return map.withMutations(function (current) {\n var _getNewValueForFieldO2 = (0, _ruleUtils.getNewValueForFieldOp)(config, config, current, newField, newOperator, \"field\", true),\n canReuseValue = _getNewValueForFieldO2.canReuseValue,\n newValue = _getNewValueForFieldO2.newValue,\n newValueSrc = _getNewValueForFieldO2.newValueSrc,\n newValueType = _getNewValueForFieldO2.newValueType,\n newValueError = _getNewValueForFieldO2.newValueError;\n\n if (showErrorMessage) {\n current = current.set(\"valueError\", newValueError);\n }\n\n var newOperatorOptions = canReuseValue ? currentOperatorOptions : (0, _defaultUtils.defaultOperatorOptions)(config, newOperator, newField);\n return current.set(\"field\", newField).set(\"operator\", newOperator).set(\"operatorOptions\", newOperatorOptions).set(\"value\", newValue).set(\"valueSrc\", newValueSrc).set(\"valueType\", newValueType)[\"delete\"](\"asyncListValues\");\n });\n });\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} operator\n */\n\n\nvar setOperator = function setOperator(state, path, newOperator, config) {\n var showErrorMessage = config.settings.showErrorMessage;\n var properties = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\"));\n var children = state.getIn((0, _treeUtils.expandTreePath)(path, \"children1\"));\n var currentField = properties.get(\"field\");\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, currentField);\n var isRuleGroup = fieldConfig.type == \"!group\";\n var operatorConfig = (0, _configUtils.getOperatorConfig)(config, newOperator, currentField);\n var operatorCardinality = operatorConfig ? (0, _stuff.defaultValue)(operatorConfig.cardinality, 1) : null;\n state = state.updateIn((0, _treeUtils.expandTreePath)(path, \"properties\"), function (map) {\n return map.withMutations(function (current) {\n var currentField = current.get(\"field\");\n var currentOperatorOptions = current.get(\"operatorOptions\");\n\n var _currentValue = current.get(\"value\", new _immutable[\"default\"].List());\n\n var _currentValueSrc = current.get(\"valueSrc\", new _immutable[\"default\"].List());\n\n var _currentOperator = current.get(\"operator\");\n\n var _getNewValueForFieldO3 = (0, _ruleUtils.getNewValueForFieldOp)(config, config, current, currentField, newOperator, \"operator\", true),\n canReuseValue = _getNewValueForFieldO3.canReuseValue,\n newValue = _getNewValueForFieldO3.newValue,\n newValueSrc = _getNewValueForFieldO3.newValueSrc,\n newValueType = _getNewValueForFieldO3.newValueType,\n newValueError = _getNewValueForFieldO3.newValueError;\n\n if (showErrorMessage) {\n current = current.set(\"valueError\", newValueError);\n }\n\n var newOperatorOptions = canReuseValue ? currentOperatorOptions : (0, _defaultUtils.defaultOperatorOptions)(config, newOperator, currentField);\n\n if (!canReuseValue) {\n current = current[\"delete\"](\"asyncListValues\");\n }\n\n return current.set(\"operator\", newOperator).set(\"operatorOptions\", newOperatorOptions).set(\"value\", newValue).set(\"valueSrc\", newValueSrc).set(\"valueType\", newValueType);\n });\n });\n\n if (isRuleGroup) {\n if (operatorCardinality == 0 && children.size == 0) {\n state = addItem(state, path, \"rule\", (0, _uuid[\"default\"])(), (0, _defaultUtils.defaultRuleProperties)(config, currentField), config);\n }\n }\n\n return state;\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {integer} delta\n * @param {*} value\n * @param {string} valueType\n * @param {*} asyncListValues\n * @param {boolean} __isInternal\n */\n\n\nvar setValue = function setValue(state, path, delta, value, valueType, config, asyncListValues, __isInternal) {\n var _config$settings3 = config.settings,\n fieldSeparator = _config$settings3.fieldSeparator,\n showErrorMessage = _config$settings3.showErrorMessage;\n var isInternalValueChange;\n var valueSrc = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueSrc\", delta + \"\")) || null;\n if (valueSrc === \"field\" && Array.isArray(value)) value = value.join(fieldSeparator);\n var field = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"field\")) || null;\n var operator = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"operator\")) || null;\n var operatorConfig = (0, _configUtils.getOperatorConfig)(config, operator, field);\n var operatorCardinality = operator ? (0, _stuff.defaultValue)(operatorConfig.cardinality, 1) : null;\n var isEndValue = false;\n var calculatedValueType = valueType || calculateValueType(value, valueSrc, config);\n var canFix = false;\n\n var _validateValue = (0, _validation.validateValue)(config, field, field, operator, value, calculatedValueType, valueSrc, asyncListValues, canFix, isEndValue),\n _validateValue2 = (0, _slicedToArray2[\"default\"])(_validateValue, 2),\n validateError = _validateValue2[0],\n fixedValue = _validateValue2[1];\n\n var isValid = !validateError;\n\n if (fixedValue !== value) {\n // eg, get exact value from listValues (not string)\n value = fixedValue;\n } // Additional validation for range values\n\n\n if (showErrorMessage) {\n var w = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var fieldWidgetDefinition = (0, _configUtils.getFieldWidgetConfig)(config, field, operator, w, valueSrc);\n var valueSrcs = Array.from({\n length: operatorCardinality\n }, function (_, i) {\n return state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueSrc\", i + \"\")) || null;\n });\n\n if (operatorConfig && operatorConfig.validateValues && valueSrcs.filter(function (vs) {\n return vs == \"value\" || vs == null;\n }).length == operatorCardinality) {\n var values = Array.from({\n length: operatorCardinality\n }, function (_, i) {\n return i == delta ? value : state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"value\", i + \"\")) || null;\n });\n var jsValues = fieldWidgetDefinition && fieldWidgetDefinition.toJS ? values.map(function (v) {\n return fieldWidgetDefinition.toJS(v, fieldWidgetDefinition);\n }) : values;\n var rangeValidateError = operatorConfig.validateValues(jsValues);\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueError\", operatorCardinality), rangeValidateError);\n }\n }\n\n var lastValueArr = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"value\"));\n\n if (!lastValueArr) {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"value\"), new _immutable[\"default\"].List(new Array(operatorCardinality))).setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueType\"), new _immutable[\"default\"].List(new Array(operatorCardinality))).setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueError\"), new _immutable[\"default\"].List(new Array(operatorCardinality)));\n }\n\n var lastValue = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"value\", delta + \"\"));\n var lastError = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueError\", delta));\n var isLastEmpty = lastValue == undefined;\n var isLastError = !!lastError;\n\n if (isValid || showErrorMessage) {\n state = state.deleteIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"asyncListValues\")); // set only good value\n\n if (typeof value === \"undefined\") {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"value\", delta + \"\"), undefined);\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueType\", delta + \"\"), null);\n } else {\n if (asyncListValues) {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"asyncListValues\"), asyncListValues);\n }\n\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"value\", delta + \"\"), value);\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueType\", delta + \"\"), calculatedValueType);\n isInternalValueChange = __isInternal && !isLastEmpty && !isLastError;\n }\n }\n\n if (showErrorMessage) {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueError\", delta), validateError);\n }\n\n if (__isInternal && (isValid && isLastError || !isValid && !isLastError)) {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueError\", delta), validateError);\n isInternalValueChange = false;\n }\n\n return {\n tree: state,\n isInternalValueChange: isInternalValueChange\n };\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {integer} delta\n * @param {*} srcKey\n */\n\n\nvar setValueSrc = function setValueSrc(state, path, delta, srcKey, config) {\n var showErrorMessage = config.settings.showErrorMessage;\n var field = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"field\")) || null;\n var operator = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"operator\")) || null;\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"value\", delta + \"\"), undefined);\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueType\", delta + \"\"), null);\n state = state.deleteIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"asyncListValues\"));\n\n if (showErrorMessage) {\n // clear value error\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueError\", delta), null); // if current operator is range, clear possible range error\n\n var operatorConfig = (0, _configUtils.getOperatorConfig)(config, operator, field);\n var operatorCardinality = operator ? (0, _stuff.defaultValue)(operatorConfig.cardinality, 1) : null;\n\n if (operatorConfig.validateValues) {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueError\", operatorCardinality), null);\n }\n } // set valueSrc\n\n\n if (typeof srcKey === \"undefined\") {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueSrc\", delta + \"\"), null);\n } else {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueSrc\", delta + \"\"), srcKey);\n } // maybe set default value\n\n\n if (srcKey) {\n var properties = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\")); // this call should return canReuseValue = false and provide default value\n\n var _getNewValueForFieldO4 = (0, _ruleUtils.getNewValueForFieldOp)(config, config, properties, field, operator, \"valueSrc\", true),\n canReuseValue = _getNewValueForFieldO4.canReuseValue,\n newValue = _getNewValueForFieldO4.newValue,\n newValueSrc = _getNewValueForFieldO4.newValueSrc,\n newValueType = _getNewValueForFieldO4.newValueType,\n newValueError = _getNewValueForFieldO4.newValueError;\n\n if (!canReuseValue && newValueSrc.get(delta) == srcKey) {\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"value\", delta + \"\"), newValue.get(delta));\n state = state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"valueType\", delta + \"\"), newValueType.get(delta));\n }\n }\n\n return state;\n};\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} name\n * @param {*} value\n */\n\n\nvar setOperatorOption = function setOperatorOption(state, path, name, value) {\n return state.setIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"operatorOptions\", name), value);\n};\n/**\n * @param {Immutable.Map} state\n */\n\n\nvar checkEmptyGroups = function checkEmptyGroups(state, config) {\n var canLeaveEmptyGroup = config.settings.canLeaveEmptyGroup;\n\n if (!canLeaveEmptyGroup) {\n state = (0, _treeUtils.fixEmptyGroupsInTree)(state);\n }\n\n return state;\n};\n/**\n * \n */\n\n\nvar calculateValueType = function calculateValueType(value, valueSrc, config) {\n var calculatedValueType = null;\n\n if (value) {\n if (valueSrc === \"field\") {\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, value);\n\n if (fieldConfig) {\n calculatedValueType = fieldConfig.type;\n }\n } else if (valueSrc === \"func\") {\n var funcKey = value.get(\"func\");\n\n if (funcKey) {\n var funcConfig = (0, _configUtils.getFuncConfig)(config, funcKey);\n\n if (funcConfig) {\n calculatedValueType = funcConfig.returnType;\n }\n }\n }\n }\n\n return calculatedValueType;\n};\n\nvar getField = function getField(state, path) {\n var field = state.getIn((0, _treeUtils.expandTreePath)(path, \"properties\", \"field\")) || null;\n return field;\n};\n\nvar emptyDrag = {\n dragging: {\n id: null,\n x: null,\n y: null,\n w: null,\n h: null\n },\n mousePos: {},\n dragStart: {\n id: null\n }\n};\n\nvar getActionMeta = function getActionMeta(action, state) {\n var actionKeysToOmit = [\"config\", \"asyncListValues\", \"__isInternal\"];\n var actionTypesToIgnore = [constants.SET_TREE, constants.SET_DRAG_START, constants.SET_DRAG_PROGRESS, constants.SET_DRAG_END];\n var meta = (0, _mapValues[\"default\"])((0, _omit[\"default\"])(action, actionKeysToOmit), _stuff.applyToJS);\n var affectedField = action.path && getField(state.tree, action.path) || action.field;\n if (affectedField) meta.affectedField = affectedField;\n if (actionTypesToIgnore.includes(action.type) || action.type.indexOf(\"@@redux\") == 0) meta = null;\n return meta;\n};\n/**\n * @param {Immutable.Map} state\n * @param {object} action\n */\n\n\nvar _default = function _default(config, tree, getMemoizedTree) {\n var emptyTree = (0, _defaultUtils.defaultRoot)(config);\n var initTree = tree || emptyTree;\n\n var emptyState = _objectSpread({\n tree: initTree\n }, emptyDrag);\n\n return function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var unset = {\n __isInternalValueChange: undefined,\n __lastAction: undefined\n };\n var set = {};\n var actionMeta = getActionMeta(action, state);\n\n switch (action.type) {\n case constants.SET_TREE:\n {\n var validatedTree = getMemoizedTree(action.config, action.tree);\n set.tree = validatedTree;\n break;\n }\n\n case constants.ADD_CASE_GROUP:\n {\n set.tree = addNewGroup(state.tree, action.path, \"case_group\", action.id, action.properties, action.config, action.children, action.meta);\n break;\n }\n\n case constants.ADD_GROUP:\n {\n set.tree = addNewGroup(state.tree, action.path, \"group\", action.id, action.properties, action.config, action.children, action.meta);\n break;\n }\n\n case constants.REMOVE_GROUP:\n {\n set.tree = removeGroup(state.tree, action.path, action.config);\n break;\n }\n\n case constants.ADD_RULE:\n {\n set.tree = addItem(state.tree, action.path, action.ruleType, action.id, action.properties, action.config, action.children);\n break;\n }\n\n case constants.REMOVE_RULE:\n {\n set.tree = removeRule(state.tree, action.path, action.config);\n break;\n }\n\n case constants.SET_CONJUNCTION:\n {\n set.tree = setConjunction(state.tree, action.path, action.conjunction);\n break;\n }\n\n case constants.SET_NOT:\n {\n set.tree = setNot(state.tree, action.path, action.not);\n break;\n }\n\n case constants.SET_FIELD:\n {\n set.tree = setField(state.tree, action.path, action.field, action.config);\n break;\n }\n\n case constants.SET_LOCK:\n {\n set.tree = setLock(state.tree, action.path, action.lock);\n break;\n }\n\n case constants.SET_OPERATOR:\n {\n set.tree = setOperator(state.tree, action.path, action.operator, action.config);\n break;\n }\n\n case constants.SET_VALUE:\n {\n var _setValue = setValue(state.tree, action.path, action.delta, action.value, action.valueType, action.config, action.asyncListValues, action.__isInternal),\n _tree = _setValue.tree,\n isInternalValueChange = _setValue.isInternalValueChange;\n\n set.__isInternalValueChange = isInternalValueChange;\n set.tree = _tree;\n break;\n }\n\n case constants.SET_VALUE_SRC:\n {\n set.tree = setValueSrc(state.tree, action.path, action.delta, action.srcKey, action.config);\n break;\n }\n\n case constants.SET_OPERATOR_OPTION:\n {\n set.tree = setOperatorOption(state.tree, action.path, action.name, action.value);\n break;\n }\n\n case constants.MOVE_ITEM:\n {\n set.tree = moveItem(state.tree, action.fromPath, action.toPath, action.placement, action.config);\n break;\n }\n\n case constants.SET_DRAG_START:\n {\n set.dragStart = action.dragStart;\n set.dragging = action.dragging;\n set.mousePos = action.mousePos;\n break;\n }\n\n case constants.SET_DRAG_PROGRESS:\n {\n set.mousePos = action.mousePos;\n set.dragging = action.dragging;\n break;\n }\n\n case constants.SET_DRAG_END:\n {\n set.tree = checkEmptyGroups(state.tree, config);\n set = _objectSpread(_objectSpread({}, set), emptyDrag);\n break;\n }\n\n default:\n {\n break;\n }\n }\n\n if (actionMeta) {\n set.__lastAction = actionMeta;\n }\n\n return _objectSpread(_objectSpread(_objectSpread({}, state), unset), set);\n };\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.simulateAsyncFetch = exports.mergeListValues = exports.listValueToOption = exports.getListValue = void 0;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _stuff = require(\"./stuff\");\n\nvar simulateAsyncFetch = function simulateAsyncFetch(all) {\n var cPageSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n return /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(search, offset, meta) {\n var pageSize, filtered, pages, currentOffset, currentPage, values, newOffset, hasMore;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n pageSize = meta.pageSize != undefined ? meta.pageSize : cPageSize;\n filtered = (0, _stuff.listValuesToArray)(all).filter(function (_ref2) {\n var title = _ref2.title;\n return search == null ? true : title.toUpperCase().indexOf(search.toUpperCase()) != -1;\n });\n pages = pageSize ? Math.ceil(filtered.length / pageSize) : 0;\n currentOffset = offset || 0;\n currentPage = pageSize ? Math.ceil(currentOffset / pageSize) : null;\n values = pageSize ? filtered.slice(currentOffset, currentOffset + pageSize) : filtered;\n newOffset = pageSize ? currentOffset + values.length : null;\n hasMore = pageSize ? newOffset < filtered.length : false;\n console.debug(\"simulateAsyncFetch\", {\n search: search,\n offset: offset,\n values: values,\n hasMore: hasMore,\n filtered: filtered\n });\n _context.next = 11;\n return (0, _stuff.sleep)(delay);\n\n case 11:\n return _context.abrupt(\"return\", {\n values: values,\n hasMore: hasMore\n });\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n};\n\nexports.simulateAsyncFetch = simulateAsyncFetch;\n\nvar mergeListValues = function mergeListValues(values, newValues) {\n var toStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!newValues) return values;\n var old = values || [];\n var newFiltered = newValues.filter(function (v) {\n return old.find(function (av) {\n return av.value == v.value;\n }) == undefined;\n });\n var merged = toStart ? [].concat((0, _toConsumableArray2[\"default\"])(newFiltered), (0, _toConsumableArray2[\"default\"])(old)) : [].concat((0, _toConsumableArray2[\"default\"])(old), (0, _toConsumableArray2[\"default\"])(newFiltered));\n return merged;\n};\n\nexports.mergeListValues = mergeListValues;\n\nvar listValueToOption = function listValueToOption(lv) {\n if (lv == null) return null;\n var title = lv.title,\n value = lv.value,\n disabled = lv.disabled,\n groupTitle = lv.groupTitle,\n renderTitle = lv.renderTitle;\n var option = {\n title: title,\n value: value\n };\n if (disabled) option.disabled = disabled;\n if (groupTitle) option.groupTitle = groupTitle;\n if (renderTitle) option.renderTitle = renderTitle;\n return option;\n};\n\nexports.listValueToOption = listValueToOption;\n\nvar getListValue = function getListValue(selectedValue, listValues) {\n return (0, _stuff.mapListValues)(listValues, function (lv) {\n return lv.value === selectedValue ? lv : null;\n }).filter(function (v) {\n return v !== null;\n }).shift();\n};\n\nexports.getListValue = getListValue;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.normalizeField = exports.getOperatorConfig = exports.getFuncConfig = exports.getFuncArgConfig = exports.getFieldWidgetConfig = exports.getFieldRawConfig = exports.getFieldConfig = exports.extendConfig = exports.createConfigMemo = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _merge = _interopRequireDefault(require(\"lodash/merge\"));\n\nvar _uuid = _interopRequireDefault(require(\"../utils/uuid\"));\n\nvar _mergeWith = _interopRequireDefault(require(\"lodash/mergeWith\"));\n\nvar _default = require(\"../config/default\");\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nvar _stuff = require(\"./stuff\");\n\nvar _ruleUtils = require(\"./ruleUtils\");\n\nvar _clone = _interopRequireDefault(require(\"clone\"));\n\nvar _pick = _interopRequireDefault(require(\"lodash/pick\"));\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar configKeys = [\"conjunctions\", \"fields\", \"types\", \"operators\", \"widgets\", \"settings\", \"funcs\"];\n\nvar pickConfig = function pickConfig(props) {\n return (0, _pick[\"default\"])(props, configKeys);\n};\n\nvar createConfigMemo = function createConfigMemo() {\n var configStore = new Map();\n var maxSize = 2; // current and prev\n\n var configId = 0;\n\n var extendAndStore = function extendAndStore(config) {\n var extendedConfig = extendConfig(config, ++configId);\n\n if (configStore.size + 1 > maxSize) {\n configStore[\"delete\"](configStore.keys()[0]);\n }\n\n configStore.set(config, extendedConfig);\n return extendedConfig;\n };\n\n var findExtended = function findExtended(findConfig) {\n // strict find:\n // return configStore.get(findConfig) || configStore.values().find(ec => ec === findConfig);\n var _iterator = _createForOfIteratorHelper(configStore.keys()),\n _step;\n\n try {\n var _loop = function _loop() {\n var savedConfig = _step.value;\n var found = configKeys.map(function (k) {\n return savedConfig[k] === findConfig[k];\n }).filter(function (v) {\n return !v;\n }).length === 0;\n\n if (found) {\n return {\n v: configStore.get(savedConfig)\n };\n }\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n\n if ((0, _typeof2[\"default\"])(_ret) === \"object\") return _ret.v;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var _iterator2 = _createForOfIteratorHelper(configStore.values()),\n _step2;\n\n try {\n var _loop2 = function _loop2() {\n var extendedConfig = _step2.value;\n var found = configKeys.map(function (k) {\n return extendedConfig[k] === findConfig[k];\n }).filter(function (v) {\n return !v;\n }).length === 0;\n\n if (found) {\n return {\n v: extendedConfig\n };\n }\n };\n\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _ret2 = _loop2();\n\n if ((0, _typeof2[\"default\"])(_ret2) === \"object\") return _ret2.v;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return null;\n };\n\n var findOrExtend = function findOrExtend(config) {\n return findExtended(config) || extendAndStore(config);\n };\n\n return function (props) {\n return findOrExtend(pickConfig(props));\n };\n};\n\nexports.createConfigMemo = createConfigMemo;\n\nvar extendConfig = function extendConfig(config, configId) {\n //operators, defaultOperator - merge\n //widgetProps (including valueLabel, valuePlaceholder, hideOperator, operatorInlineLabel) - concrete by widget\n if (config.__configId) {\n return config;\n }\n\n config = _objectSpread({}, config);\n config.settings = (0, _merge[\"default\"])({}, _default.settings, config.settings);\n config._fieldsCntByType = {};\n config._funcsCntByType = {};\n config.types = (0, _clone[\"default\"])(config.types);\n\n _extendTypesConfig(config.types, config);\n\n config.fields = (0, _clone[\"default\"])(config.fields);\n config.__fieldNames = {};\n\n _extendFieldsConfig(config.fields, config);\n\n config.funcs = (0, _clone[\"default\"])(config.funcs);\n\n _extendFuncArgsConfig(config.funcs, config);\n\n _moment[\"default\"].locale(config.settings.locale.moment);\n\n Object.defineProperty(config, \"__configId\", {\n enumerable: false,\n writable: false,\n value: configId || (0, _uuid[\"default\"])()\n });\n return config;\n};\n\nexports.extendConfig = extendConfig;\n\nfunction _extendTypesConfig(typesConfig, config) {\n for (var type in typesConfig) {\n var typeConfig = typesConfig[type];\n\n _extendTypeConfig(type, typeConfig, config);\n }\n}\n\nfunction _extendTypeConfig(type, typeConfig, config) {\n var operators = null,\n defaultOperator = null;\n typeConfig.mainWidget = typeConfig.mainWidget || Object.keys(typeConfig.widgets).filter(function (w) {\n return w != \"field\" && w != \"func\";\n })[0];\n\n for (var widget in typeConfig.widgets) {\n var typeWidgetConfig = typeConfig.widgets[widget];\n\n if (typeWidgetConfig.operators) {\n var typeWidgetOperators = typeWidgetConfig.operators;\n\n if (typeConfig.excludeOperators) {\n typeWidgetOperators = typeWidgetOperators.filter(function (op) {\n return !typeConfig.excludeOperators.includes(op);\n });\n }\n\n operators = (0, _stuff.mergeArraysSmart)(operators, typeWidgetOperators);\n }\n\n if (typeWidgetConfig.defaultOperator) defaultOperator = typeWidgetConfig.defaultOperator;\n\n if (widget == typeConfig.mainWidget) {\n typeWidgetConfig = (0, _merge[\"default\"])({}, {\n widgetProps: typeConfig.mainWidgetProps || {}\n }, typeWidgetConfig);\n }\n\n typeConfig.widgets[widget] = typeWidgetConfig;\n }\n\n if (!typeConfig.valueSources) typeConfig.valueSources = Object.keys(config.settings.valueSourcesInfo);\n\n var _iterator3 = _createForOfIteratorHelper(typeConfig.valueSources),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var valueSrc = _step3.value;\n\n if (valueSrc != \"value\" && !typeConfig.widgets[valueSrc]) {\n typeConfig.widgets[valueSrc] = {};\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n if (!typeConfig.operators && operators) typeConfig.operators = Array.from(new Set(operators)); //unique\n\n if (!typeConfig.defaultOperator && defaultOperator) typeConfig.defaultOperator = defaultOperator;\n}\n\nfunction _extendFieldsConfig(subconfig, config) {\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n for (var field in subconfig) {\n _extendFieldConfig(subconfig[field], config, [].concat((0, _toConsumableArray2[\"default\"])(path), [field]));\n\n if (subconfig[field].subfields) {\n _extendFieldsConfig(subconfig[field].subfields, config, [].concat((0, _toConsumableArray2[\"default\"])(path), [field]));\n }\n }\n}\n\nfunction _extendFuncArgsConfig(subconfig, config) {\n if (!subconfig) return;\n\n for (var funcKey in subconfig) {\n var funcDef = subconfig[funcKey];\n\n if (funcDef.returnType) {\n if (!config._funcsCntByType[funcDef.returnType]) config._funcsCntByType[funcDef.returnType] = 0;\n config._funcsCntByType[funcDef.returnType]++;\n }\n\n for (var argKey in funcDef.args) {\n _extendFieldConfig(funcDef.args[argKey], config, null, true);\n } // isOptional can be only in the end\n\n\n if (funcDef.args) {\n var argKeys = Object.keys(funcDef.args);\n var tmpIsOptional = true;\n\n var _iterator4 = _createForOfIteratorHelper(argKeys.reverse()),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _argKey = _step4.value;\n var argDef = funcDef.args[_argKey];\n\n if (!tmpIsOptional && argDef.isOptional) {\n delete argDef.isOptional;\n }\n\n if (!argDef.isOptional) tmpIsOptional = false;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n\n if (funcDef.subfields) {\n _extendFuncArgsConfig(funcDef.subfields, config);\n }\n }\n}\n\nfunction _extendFieldConfig(fieldConfig, config) {\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var isFuncArg = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var operators = null,\n defaultOperator = null;\n var typeConfig = config.types[fieldConfig.type];\n var excludeOperatorsForField = fieldConfig.excludeOperators || [];\n\n if (fieldConfig.type != \"!struct\" && fieldConfig.type != \"!group\") {\n var keysToPutInFieldSettings = [\"listValues\", \"allowCustomValues\", \"validateValue\"];\n if (!fieldConfig.fieldSettings) fieldConfig.fieldSettings = {};\n\n for (var _i = 0, _keysToPutInFieldSett = keysToPutInFieldSettings; _i < _keysToPutInFieldSett.length; _i++) {\n var k = _keysToPutInFieldSett[_i];\n\n if (fieldConfig[k]) {\n fieldConfig.fieldSettings[k] = fieldConfig[k];\n delete fieldConfig[k];\n }\n }\n\n if (fieldConfig.fieldSettings.listValues) {\n fieldConfig.fieldSettings.listValues = (0, _stuff.normalizeListValues)(fieldConfig.fieldSettings.listValues, fieldConfig.type, fieldConfig.fieldSettings);\n }\n\n if (!typeConfig) {\n //console.warn(`No type config for ${fieldConfig.type}`);\n fieldConfig.disabled = true;\n return;\n }\n\n if (!isFuncArg) {\n if (!config._fieldsCntByType[fieldConfig.type]) config._fieldsCntByType[fieldConfig.type] = 0;\n config._fieldsCntByType[fieldConfig.type]++;\n }\n\n if (!fieldConfig.widgets) fieldConfig.widgets = {};\n if (isFuncArg) fieldConfig._isFuncArg = true;\n fieldConfig.mainWidget = fieldConfig.mainWidget || typeConfig.mainWidget;\n fieldConfig.valueSources = fieldConfig.valueSources || typeConfig.valueSources;\n var excludeOperatorsForType = typeConfig.excludeOperators || [];\n\n for (var widget in typeConfig.widgets) {\n var fieldWidgetConfig = fieldConfig.widgets[widget] || {};\n var typeWidgetConfig = typeConfig.widgets[widget] || {};\n\n if (!isFuncArg) {\n (function () {\n //todo: why I've excluded isFuncArg ?\n var excludeOperators = [].concat((0, _toConsumableArray2[\"default\"])(excludeOperatorsForField), (0, _toConsumableArray2[\"default\"])(excludeOperatorsForType));\n var shouldIncludeOperators = fieldConfig.preferWidgets && (widget == \"field\" || fieldConfig.preferWidgets.includes(widget)) || excludeOperators.length > 0;\n\n if (fieldWidgetConfig.operators) {\n var addOperators = fieldWidgetConfig.operators.filter(function (o) {\n return !excludeOperators.includes(o);\n });\n operators = [].concat((0, _toConsumableArray2[\"default\"])(operators || []), (0, _toConsumableArray2[\"default\"])(addOperators));\n } else if (shouldIncludeOperators && typeWidgetConfig.operators) {\n var _addOperators = typeWidgetConfig.operators.filter(function (o) {\n return !excludeOperators.includes(o);\n });\n\n operators = [].concat((0, _toConsumableArray2[\"default\"])(operators || []), (0, _toConsumableArray2[\"default\"])(_addOperators));\n }\n\n if (fieldWidgetConfig.defaultOperator) defaultOperator = fieldWidgetConfig.defaultOperator;\n })();\n }\n\n if (widget == fieldConfig.mainWidget) {\n fieldWidgetConfig = (0, _merge[\"default\"])({}, {\n widgetProps: fieldConfig.mainWidgetProps || {}\n }, fieldWidgetConfig);\n }\n\n fieldConfig.widgets[widget] = fieldWidgetConfig;\n }\n\n if (!isFuncArg) {\n if (!fieldConfig.operators && operators) fieldConfig.operators = Array.from(new Set(operators));\n if (!fieldConfig.defaultOperator && defaultOperator) fieldConfig.defaultOperator = defaultOperator;\n }\n }\n\n var computedFieldName = computeFieldName(config, path);\n\n if (computedFieldName) {\n fieldConfig.fieldName = computedFieldName;\n }\n\n if (path && fieldConfig.fieldName) {\n config.__fieldNames[fieldConfig.fieldName] = path;\n }\n}\n\nvar getFieldRawConfig = function getFieldRawConfig(config, field) {\n var fieldsKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"fields\";\n var subfieldsKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"subfields\";\n if (!field) return null;\n\n if (field == \"!case_value\") {\n return {\n type: \"case_value\",\n mainWidget: \"case_value\",\n widgets: {\n \"case_value\": config.widgets[\"case_value\"]\n }\n };\n }\n\n var fieldSeparator = config.settings.fieldSeparator; //field = normalizeField(config, field);\n\n var parts = Array.isArray(field) ? field : field.split(fieldSeparator);\n var targetFields = config[fieldsKey];\n if (!targetFields) return null;\n var fields = targetFields;\n var fieldConfig = null;\n var path = [];\n\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n path.push(part);\n var pathKey = path.join(fieldSeparator);\n fieldConfig = fields[pathKey];\n\n if (i < parts.length - 1) {\n if (fieldConfig && fieldConfig[subfieldsKey]) {\n fields = fieldConfig[subfieldsKey];\n path = [];\n } else {\n fieldConfig = null;\n }\n }\n }\n\n return fieldConfig;\n};\n\nexports.getFieldRawConfig = getFieldRawConfig;\n\nvar computeFieldName = function computeFieldName(config, path) {\n if (!path) return null;\n var fieldSeparator = config.settings.fieldSeparator;\n var l = (0, _toConsumableArray2[\"default\"])(path),\n r = [],\n f,\n fConfig;\n\n while ((f = l.pop()) !== undefined && l.length > 0) {\n r.unshift(f);\n fConfig = getFieldRawConfig(config, l);\n\n if (fConfig.fieldName) {\n return [fConfig.fieldName].concat(r).join(fieldSeparator);\n }\n }\n\n return null;\n};\n\nvar normalizeField = function normalizeField(config, field) {\n var fieldSeparator = config.settings.fieldSeparator;\n var fieldStr = Array.isArray(field) ? field.join(fieldSeparator) : field;\n\n if (config.__fieldNames[fieldStr]) {\n return config.__fieldNames[fieldStr].join(fieldSeparator);\n }\n\n return fieldStr;\n};\n\nexports.normalizeField = normalizeField;\n\nvar getFuncConfig = function getFuncConfig(config, func) {\n if (!func) return null;\n var funcConfig = getFieldRawConfig(config, func, \"funcs\", \"subfields\");\n if (!funcConfig) return null; //throw new Error(\"Can't find func \" + func + \", please check your config\");\n\n return funcConfig;\n};\n\nexports.getFuncConfig = getFuncConfig;\n\nvar getFuncArgConfig = function getFuncArgConfig(config, funcKey, argKey) {\n var funcConfig = getFuncConfig(config, funcKey);\n if (!funcConfig) return null; //throw new Error(`Can't find func ${funcKey}, please check your config`);\n\n var argConfig = funcConfig.args && funcConfig.args[argKey] || null;\n if (!argConfig) return null; //throw new Error(`Can't find arg ${argKey} for func ${funcKey}, please check your config`);\n //merge, but don't merge operators (rewrite instead)\n\n var typeConfig = config.types[argConfig.type] || {};\n var ret = (0, _mergeWith[\"default\"])({}, typeConfig, argConfig || {}, function (objValue, srcValue, _key, _object, _source, _stack) {\n if (Array.isArray(objValue)) {\n return srcValue;\n }\n });\n return ret;\n};\n\nexports.getFuncArgConfig = getFuncArgConfig;\n\nvar getFieldConfig = function getFieldConfig(config, field) {\n if (!field) return null;\n if ((0, _typeof2[\"default\"])(field) == \"object\" && !field.func && !!field.type) return field;\n if ((0, _typeof2[\"default\"])(field) == \"object\" && field.func && field.arg) return getFuncArgConfig(config, field.func, field.arg);\n var fieldConfig = getFieldRawConfig(config, field);\n if (!fieldConfig) return null; //throw new Error(\"Can't find field \" + field + \", please check your config\");\n //merge, but don't merge operators (rewrite instead)\n\n var typeConfig = config.types[fieldConfig.type] || {};\n var ret = (0, _mergeWith[\"default\"])({}, typeConfig, fieldConfig || {}, function (objValue, srcValue, _key, _object, _source, _stack) {\n if (Array.isArray(objValue)) {\n return srcValue;\n }\n });\n return ret;\n};\n\nexports.getFieldConfig = getFieldConfig;\n\nvar getOperatorConfig = function getOperatorConfig(config, operator) {\n var field = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (!operator) return null;\n var opConfig = config.operators[operator];\n\n if (field) {\n var fieldConfig = getFieldConfig(config, field);\n var widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator);\n var widgetConfig = config.widgets[widget] || {};\n var fieldWidgetConfig = (fieldConfig && fieldConfig.widgets ? fieldConfig.widgets[widget] : {}) || {};\n var widgetOpProps = (widgetConfig.opProps || {})[operator];\n var fieldWidgetOpProps = (fieldWidgetConfig.opProps || {})[operator];\n var mergedOpConfig = (0, _merge[\"default\"])({}, opConfig, widgetOpProps, fieldWidgetOpProps);\n return mergedOpConfig;\n } else {\n return opConfig;\n }\n};\n\nexports.getOperatorConfig = getOperatorConfig;\n\nvar getFieldWidgetConfig = function getFieldWidgetConfig(config, field, operator) {\n var widget = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var valueSrc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!field) return null;\n if (!(operator || widget) && valueSrc != \"const\" && field != \"!case_value\") return null;\n var fieldConfig = getFieldConfig(config, field);\n if (!widget) widget = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var widgetConfig = config.widgets[widget] || {};\n var fieldWidgetConfig = (fieldConfig && fieldConfig.widgets ? fieldConfig.widgets[widget] : {}) || {};\n var fieldWidgetProps = fieldWidgetConfig.widgetProps || {};\n var valueFieldSettings = (valueSrc == \"value\" || !valueSrc) && fieldConfig && fieldConfig.fieldSettings || {}; // useful to take 'validateValue'\n\n var mergedConfig = (0, _merge[\"default\"])({}, widgetConfig, fieldWidgetProps, valueFieldSettings);\n return mergedConfig;\n};\n\nexports.getFieldWidgetConfig = getFieldWidgetConfig;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.defaultRuleProperties = exports.defaultRule = exports.defaultRoot = exports.defaultOperatorOptions = exports.defaultOperator = exports.defaultItemProperties = exports.defaultGroupProperties = exports.defaultGroupConjunction = exports.defaultField = exports.defaultConjunction = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _immutable = _interopRequireDefault(require(\"immutable\"));\n\nvar _uuid = _interopRequireDefault(require(\"./uuid\"));\n\nvar _configUtils = require(\"./configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar defaultField = function defaultField(config) {\n var canGetFirst = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var parentRuleGroupPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n return typeof config.settings.defaultField === \"function\" ? config.settings.defaultField(parentRuleGroupPath) : config.settings.defaultField || (canGetFirst ? (0, _ruleUtils.getFirstField)(config, parentRuleGroupPath) : null);\n};\n\nexports.defaultField = defaultField;\n\nvar defaultOperator = function defaultOperator(config, field) {\n var canGetFirst = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n var fieldOperators = fieldConfig && fieldConfig.operators || [];\n var fieldDefaultOperator = fieldConfig && fieldConfig.defaultOperator;\n if (!fieldOperators.includes(fieldDefaultOperator)) fieldDefaultOperator = null;\n if (!fieldDefaultOperator && canGetFirst) fieldDefaultOperator = (0, _ruleUtils.getFirstOperator)(config, field);\n var op = typeof config.settings.defaultOperator === \"function\" ? config.settings.defaultOperator(field, fieldConfig) : fieldDefaultOperator;\n return op;\n}; //used for complex operators like proximity\n\n\nexports.defaultOperator = defaultOperator;\n\nvar defaultOperatorOptions = function defaultOperatorOptions(config, operator, field) {\n var operatorConfig = operator ? (0, _configUtils.getOperatorConfig)(config, operator, field) : null;\n if (!operatorConfig) return null; //new Immutable.Map();\n\n return operatorConfig.options ? new _immutable[\"default\"].Map(operatorConfig.options && operatorConfig.options.defaults || {}) : null;\n};\n\nexports.defaultOperatorOptions = defaultOperatorOptions;\n\nvar defaultRuleProperties = function defaultRuleProperties(config) {\n var parentRuleGroupPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var item = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var field = null,\n operator = null;\n var _config$settings = config.settings,\n setDefaultFieldAndOp = _config$settings.setDefaultFieldAndOp,\n showErrorMessage = _config$settings.showErrorMessage;\n\n if (item) {\n var _item$properties, _item$properties2;\n\n field = item === null || item === void 0 ? void 0 : (_item$properties = item.properties) === null || _item$properties === void 0 ? void 0 : _item$properties.field;\n operator = item === null || item === void 0 ? void 0 : (_item$properties2 = item.properties) === null || _item$properties2 === void 0 ? void 0 : _item$properties2.operator;\n } else if (setDefaultFieldAndOp) {\n field = defaultField(config, true, parentRuleGroupPath);\n operator = defaultOperator(config, field);\n }\n\n var current = new _immutable[\"default\"].Map({\n field: field,\n operator: operator,\n value: new _immutable[\"default\"].List(),\n valueSrc: new _immutable[\"default\"].List(),\n //used for complex operators like proximity\n operatorOptions: defaultOperatorOptions(config, operator, field)\n });\n\n if (showErrorMessage) {\n current = current.set(\"valueError\", new _immutable[\"default\"].List());\n }\n\n if (field && operator) {\n var _getNewValueForFieldO = (0, _ruleUtils.getNewValueForFieldOp)(config, config, current, field, operator, \"operator\", false),\n newValue = _getNewValueForFieldO.newValue,\n newValueSrc = _getNewValueForFieldO.newValueSrc,\n newValueType = _getNewValueForFieldO.newValueType,\n newValueError = _getNewValueForFieldO.newValueError;\n\n current = current.set(\"value\", newValue).set(\"valueSrc\", newValueSrc).set(\"valueType\", newValueType);\n\n if (showErrorMessage) {\n current = current.set(\"valueError\", newValueError);\n }\n }\n\n return current;\n};\n\nexports.defaultRuleProperties = defaultRuleProperties;\n\nvar defaultGroupConjunction = function defaultGroupConjunction(config) {\n var fieldConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n fieldConfig = (0, _configUtils.getFieldConfig)(config, fieldConfig); // if `fieldConfig` is field name, not config\n\n var conjs = fieldConfig && fieldConfig.conjunctions || Object.keys(config.conjunctions);\n if (conjs.length == 1) return conjs[0];\n return config.settings.defaultGroupConjunction || config.settings.defaultConjunction || conjs[0];\n};\n\nexports.defaultGroupConjunction = defaultGroupConjunction;\n\nvar defaultConjunction = function defaultConjunction(config) {\n return config.settings.defaultConjunction || Object.keys(config.conjunctions)[0];\n};\n\nexports.defaultConjunction = defaultConjunction;\n\nvar defaultGroupProperties = function defaultGroupProperties(config) {\n var fieldConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return new _immutable[\"default\"].Map({\n conjunction: defaultGroupConjunction(config, fieldConfig),\n not: false\n });\n};\n\nexports.defaultGroupProperties = defaultGroupProperties;\n\nvar defaultItemProperties = function defaultItemProperties(config, item) {\n var _item$properties3;\n\n return item && item.type == \"group\" ? defaultGroupProperties(config, item === null || item === void 0 ? void 0 : (_item$properties3 = item.properties) === null || _item$properties3 === void 0 ? void 0 : _item$properties3.field) : defaultRuleProperties(config, null, item);\n};\n\nexports.defaultItemProperties = defaultItemProperties;\n\nvar defaultRule = function defaultRule(id, config) {\n return (0, _defineProperty2[\"default\"])({}, id, new _immutable[\"default\"].Map({\n type: \"rule\",\n id: id,\n properties: defaultRuleProperties(config)\n }));\n};\n\nexports.defaultRule = defaultRule;\n\nvar defaultRoot = function defaultRoot(config) {\n return new _immutable[\"default\"].Map({\n type: \"group\",\n id: (0, _uuid[\"default\"])(),\n children1: new _immutable[\"default\"].OrderedMap(_objectSpread({}, defaultRule((0, _uuid[\"default\"])(), config))),\n properties: defaultGroupProperties(config)\n });\n};\n\nexports.defaultRoot = defaultRoot;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sqlEmptyValue = exports.spelImportConcat = exports.spelFormatConcat = exports.spelFixList = exports.spelEscape = exports.mongoEmptyValue = exports.SqlString = void 0;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar SqlString = require(\"sqlstring\");\n\nexports.SqlString = SqlString;\n\nSqlString.trim = function (val) {\n if (val.charAt(0) == \"'\") return val.substring(1, val.length - 1);else return val;\n};\n\nSqlString.escapeLike = function (val) {\n var any_start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var any_end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // normal escape\n var res = SqlString.escape(val); // unwrap ''\n\n res = SqlString.trim(res); // escape % and _\n\n res = res.replace(/[%_]/g, \"\\\\$&\"); // wrap with % for LIKE\n\n res = (any_start ? \"%\" : \"\") + res + (any_end ? \"%\" : \"\"); // wrap ''\n\n res = \"'\" + res + \"'\";\n return res;\n};\n\nvar sqlEmptyValue = function sqlEmptyValue(fieldDef) {\n var v = \"''\";\n var type = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.type;\n\n if (type == \"date\") {\n //todo: support other SQL dialects? 0001-01-01 for oracle, 1970-01-01 for timestamp\n v = \"'0000-00-00'\";\n } else if (type == \"datetime\") {\n v = \"'0000-00-00 00:00'\";\n } else if (type == \"time\") {\n v = \"'00:00'\";\n } else if (type == \"number\") {\n v = \"0\";\n }\n\n return v;\n};\n\nexports.sqlEmptyValue = sqlEmptyValue;\n\nvar mongoEmptyValue = function mongoEmptyValue(fieldDef) {\n var v = \"\";\n var type = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.type;\n\n if (type == \"number\") {\n v = 0;\n }\n\n return v;\n};\n\nexports.mongoEmptyValue = mongoEmptyValue;\n\nvar spelEscapeString = function spelEscapeString(val) {\n // Strings are delimited by single quotes. To put a single quote itself in a string, use two single quote characters. \n return \"'\" + val.replace(/'/g, \"''\") + \"'\";\n};\n\nvar spelInlineList = function spelInlineList(vals) {\n var toArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // find java type of values\n var javaType;\n var jt;\n var numberJavaTypes = [\"int\", \"float\"];\n vals.map(function (v) {\n if (v !== undefined && v !== null) {\n if (typeof v === \"string\") {\n jt = \"String\";\n } else if (typeof v === \"number\") {\n jt = Number.isInteger(v) ? \"int\" : \"float\";\n } else throw new Error(\"spelEscape: Can't use value \".concat(v, \" in array\"));\n\n if (!javaType) {\n javaType = jt;\n } else if (javaType != jt) {\n if (numberJavaTypes.includes(javaType) && numberJavaTypes.includes(jt)) {\n // found int and float in collecton - use float\n javaType = \"float\";\n } else throw new Error(\"spelEscape: Can't use different types in array: found \".concat(javaType, \" and \").concat(jt));\n }\n }\n });\n\n if (!javaType) {\n javaType = \"String\"; //default if empty array\n } // for floats we should add 'f' to all items\n\n\n var escapedVals;\n\n if (javaType == \"float\") {\n escapedVals = vals.map(function (v) {\n return spelEscape(v, true);\n });\n } else {\n escapedVals = vals.map(function (v) {\n return spelEscape(v);\n });\n } // build inline list or array\n\n\n var res;\n\n if (toArray) {\n res = \"new \".concat(javaType, \"[]{\").concat(escapedVals.join(\", \"), \"}\");\n } else {\n res = \"{\".concat(escapedVals.join(\", \"), \"}\");\n }\n\n return res;\n};\n\nvar spelFixList = function spelFixList(val) {\n // `{1,2}.contains(1)` NOT works\n // `{1,2}.?[true].contains(1)` works\n return \"\".concat(val, \".?[true]\");\n};\n\nexports.spelFixList = spelFixList;\n\nvar spelEscape = function spelEscape(val) {\n var numberToFloat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var arrayToArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n // https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html#expressions-ref-literal\n if (val === undefined || val === null) {\n return \"null\";\n }\n\n switch ((0, _typeof2[\"default\"])(val)) {\n case \"boolean\":\n return val ? \"true\" : \"false\";\n\n case \"number\":\n if (!Number.isFinite(val) || isNaN(val)) return undefined;\n return val + (!Number.isInteger(val) || numberToFloat ? \"f\" : \"\");\n\n case \"object\":\n if (Array.isArray(val)) {\n return spelInlineList(val, arrayToArray);\n } else {\n // see `spelFormatValue` for Date, LocalTime\n throw new Error(\"spelEscape: Object is not supported\");\n }\n\n default:\n return spelEscapeString(val);\n }\n};\n\nexports.spelEscape = spelEscape;\n\nvar spelFormatConcat = function spelFormatConcat(parts) {\n if (parts && Array.isArray(parts) && parts.length) {\n return parts.map(function (part) {\n if (part.type == \"const\") {\n return spelEscape(part.value);\n } else if (part.type == \"property\") {\n return \"\" + part.value;\n } else if (part.type == \"variable\") {\n return \"#\" + part.value;\n }\n\n return undefined;\n }).filter(function (r) {\n return r != undefined;\n }).join(\" + \");\n } else {\n return \"null\";\n }\n}; // `val` is {value, valueType, valueSrc}\n// If `valueType` == \"case_value\", `value` is array of such items (to be considered as concatenation)\n\n\nexports.spelFormatConcat = spelFormatConcat;\n\nvar spelImportConcat = function spelImportConcat(val) {\n if (val == undefined) return [undefined, []];\n var errors = [];\n var parts = val.valueType == \"case_value\" ? val.value : [val];\n var res = parts.map(function (child) {\n if (child.valueSrc == \"value\") {\n if (child.value === null) {\n return undefined;\n } else {\n return {\n type: \"const\",\n value: child.value\n };\n }\n } else if (child.valueSrc == \"field\") {\n return {\n type: child.isVariable ? \"variable\" : \"property\",\n value: child.value\n };\n } else {\n errors.push(\"Unsupported valueSrc \".concat(child.valueSrc, \" in concatenation\"));\n }\n }).filter(function (v) {\n return v != undefined;\n });\n return [res, errors];\n};\n\nexports.spelImportConcat = spelImportConcat;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setFunc = exports.setArgValueSrc = exports.setArgValue = exports.completeValue = exports.completeFuncValue = void 0;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _configUtils = require(\"../utils/configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _immutable = _interopRequireDefault(require(\"immutable\"));\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// helpers\nvar isObject = function isObject(v) {\n return (0, _typeof2[\"default\"])(v) == \"object\" && v !== null && !Array.isArray(v);\n};\n/**\n * @param {*} value\n * @param {string} valueSrc - 'value' | 'field' | 'func'\n * @param {object} config\n * @return {* | undefined} - undefined if func value is not complete (missing required arg vals); can return completed value != value\n */\n\n\nvar completeValue = function completeValue(value, valueSrc, config) {\n if (valueSrc == \"func\") return completeFuncValue(value, config);else return value;\n};\n/**\n * @param {Immutable.Map} value\n * @param {object} config\n * @return {Immutable.Map | undefined} - undefined if func value is not complete (missing required arg vals); can return completed value != value\n */\n\n\nexports.completeValue = completeValue;\n\nvar completeFuncValue = function completeFuncValue(value, config) {\n var _checkFuncValue = function _checkFuncValue(value) {\n if (!value) return undefined;\n var funcKey = value.get(\"func\");\n var funcConfig = funcKey && (0, _configUtils.getFuncConfig)(config, funcKey);\n if (!funcConfig) return undefined;\n var complValue = value;\n var tmpHasOptional = false;\n\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var valueSources = argConfig.valueSources,\n isOptional = argConfig.isOptional,\n defaultValue = argConfig.defaultValue;\n var filteredValueSources = (0, _ruleUtils.filterValueSourcesForField)(config, valueSources, argConfig);\n var args = complValue.get(\"args\");\n var argDefaultValueSrc = filteredValueSources.length == 1 ? filteredValueSources[0] : undefined;\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = (argVal ? argVal.get(\"valueSrc\") : undefined) || argDefaultValueSrc;\n\n if (argValue !== undefined) {\n var completeArgValue = completeValue(argValue, argValueSrc, config);\n\n if (completeArgValue === undefined) {\n return undefined;\n } else if (completeArgValue !== argValue) {\n complValue = complValue.setIn([\"args\", argKey, \"value\"], completeArgValue);\n }\n\n if (tmpHasOptional) {\n // has gap\n return undefined;\n }\n } else if (defaultValue !== undefined && !isObject(defaultValue)) {\n complValue = complValue.setIn([\"args\", argKey, \"value\"], getDefaultArgValue(argConfig));\n complValue = complValue.setIn([\"args\", argKey, \"valueSrc\"], \"value\");\n } else if (isOptional) {\n // optional\n tmpHasOptional = true;\n } else {\n // missing value\n return undefined;\n }\n }\n\n return complValue;\n };\n\n return _checkFuncValue(value);\n};\n/**\n * @param {Immutable.Map} value \n * @return {array} - [usedFields, badFields]\n */\n\n\nexports.completeFuncValue = completeFuncValue;\n\nvar getUsedFieldsInFuncValue = function getUsedFieldsInFuncValue(value, config) {\n var usedFields = [];\n var badFields = [];\n\n var _traverse = function _traverse(value) {\n var args = value && value.get(\"args\");\n if (!args) return;\n\n var _iterator = _createForOfIteratorHelper(args.values()),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var arg = _step.value;\n\n if (arg.get(\"valueSrc\") == \"field\") {\n var rightField = arg.get(\"value\");\n\n if (rightField) {\n var rightFieldDefinition = config ? (0, _configUtils.getFieldConfig)(config, rightField) : undefined;\n if (config && !rightFieldDefinition) badFields.push(rightField);else usedFields.push(rightField);\n }\n } else if (arg.get(\"valueSrc\") == \"func\") {\n _traverse(arg.get(\"value\"));\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n };\n\n _traverse(value);\n\n return [usedFields, badFields];\n};\n/**\n * Used @ FuncWidget\n * @param {Immutable.Map} value \n * @param {string} funcKey \n * @param {object} config \n */\n\n\nvar setFunc = function setFunc(value, funcKey, config) {\n var fieldSeparator = config.settings.fieldSeparator;\n value = value || new _immutable[\"default\"].Map();\n\n if (Array.isArray(funcKey)) {\n // fix for cascader\n funcKey = funcKey.join(fieldSeparator);\n }\n\n value = value.set(\"func\", funcKey);\n value = value.set(\"args\", new _immutable[\"default\"].Map()); // defaults\n\n var funcConfig = funcKey && (0, _configUtils.getFuncConfig)(config, funcKey);\n\n if (funcConfig) {\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var valueSources = argConfig.valueSources,\n defaultValue = argConfig.defaultValue;\n var filteredValueSources = (0, _ruleUtils.filterValueSourcesForField)(config, valueSources, argConfig);\n var firstValueSrc = filteredValueSources.length ? filteredValueSources[0] : undefined;\n var defaultValueSrc = defaultValue ? isObject(defaultValue) && !!defaultValue.func ? \"func\" : \"value\" : undefined;\n var argDefaultValueSrc = defaultValueSrc || firstValueSrc;\n\n if (defaultValue !== undefined) {\n value = value.setIn([\"args\", argKey, \"value\"], getDefaultArgValue(argConfig));\n }\n\n if (argDefaultValueSrc) {\n value = value.setIn([\"args\", argKey, \"valueSrc\"], argDefaultValueSrc);\n }\n }\n }\n\n return value;\n};\n\nexports.setFunc = setFunc;\n\nvar getDefaultArgValue = function getDefaultArgValue(_ref) {\n var value = _ref.defaultValue;\n\n if (isObject(value) && !_immutable[\"default\"].Map.isMap(value) && value.func) {\n return _immutable[\"default\"].fromJS(value, function (k, v) {\n return _immutable[\"default\"].Iterable.isIndexed(v) ? v.toList() : v.toOrderedMap();\n });\n }\n\n return value;\n};\n/**\n* Used @ FuncWidget\n* @param {Immutable.Map} value \n* @param {string} argKey \n* @param {*} argVal \n* @param {object} argConfig \n*/\n\n\nvar setArgValue = function setArgValue(value, argKey, argVal, argConfig, config) {\n if (value && value.get(\"func\")) {\n value = value.setIn([\"args\", argKey, \"value\"], argVal); // set default arg value sorce\n\n var valueSources = argConfig.valueSources;\n var filteredValueSources = (0, _ruleUtils.filterValueSourcesForField)(config, valueSources, argConfig);\n var argDefaultValueSrc = filteredValueSources.length == 1 ? filteredValueSources[0] : undefined;\n\n if (argDefaultValueSrc) {\n value = value.setIn([\"args\", argKey, \"valueSrc\"], argDefaultValueSrc);\n }\n }\n\n return value;\n};\n/**\n* Used @ FuncWidget\n* @param {Immutable.Map} value \n* @param {string} argKey \n* @param {string} argValSrc \n* @param {object} argConfig \n*/\n\n\nexports.setArgValue = setArgValue;\n\nvar setArgValueSrc = function setArgValueSrc(value, argKey, argValSrc, _argConfig, _config) {\n if (value && value.get(\"func\")) {\n value = value.setIn([\"args\", argKey], new _immutable[\"default\"].Map({\n valueSrc: argValSrc\n }));\n }\n\n return value;\n};\n\nexports.setArgValueSrc = setArgValueSrc;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TreeUtils = exports.ExportUtils = exports.DefaultUtils = exports.ConfigUtils = void 0;\nObject.defineProperty(exports, \"getSwitchValues\", {\n enumerable: true,\n get: function get() {\n return _TreeUtils.getSwitchValues;\n }\n});\nObject.defineProperty(exports, \"simulateAsyncFetch\", {\n enumerable: true,\n get: function get() {\n return _autocomplete.simulateAsyncFetch;\n }\n});\nObject.defineProperty(exports, \"uuid\", {\n enumerable: true,\n get: function get() {\n return _uuid[\"default\"];\n }\n});\nObject.defineProperty(exports, \"validateTree\", {\n enumerable: true,\n get: function get() {\n return _validation.validateTree;\n }\n});\n\nvar _validation = require(\"./validation\");\n\nvar _autocomplete = require(\"./autocomplete\");\n\nvar _uuid = _interopRequireDefault(require(\"./uuid\"));\n\nvar _ConfigUtils = _interopRequireWildcard(require(\"./configUtils\"));\n\nexports.ConfigUtils = _ConfigUtils;\n\nvar _DefaultUtils = _interopRequireWildcard(require(\"./defaultUtils\"));\n\nexports.DefaultUtils = _DefaultUtils;\n\nvar _TreeUtils = _interopRequireWildcard(require(\"./treeUtils\"));\n\nexports.TreeUtils = _TreeUtils;\n\nvar _ExportUtils = _interopRequireWildcard(require(\"./export\"));\n\nexports.ExportUtils = _ExportUtils;\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useOnPropsChanged = exports.pureShouldComponentUpdate = exports.liteShouldComponentUpdate = exports.bindActionCreators = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _mapValues = _interopRequireDefault(require(\"lodash/mapValues\"));\n\nvar _stuff = require(\"./stuff\");\n\nvar liteShouldComponentUpdate = function liteShouldComponentUpdate(self, config) {\n return function (nextProps, nextState) {\n var prevProps = self.props;\n var prevState = self.state;\n var should = nextProps != prevProps || nextState != prevState;\n\n if (should) {\n if (prevState == nextState && prevProps != nextProps) {\n var chs = [];\n\n for (var k in nextProps) {\n var changed = nextProps[k] != prevProps[k];\n\n if (changed) {\n if (config[k] == \"ignore\") changed = false;else if (config[k] == \"shallow_deep\") changed = !(0, _stuff.shallowEqual)(nextProps[k], prevProps[k], true);else if (config[k] == \"shallow\") changed = !(0, _stuff.shallowEqual)(nextProps[k], prevProps[k]);else if (typeof config[k] == \"function\") changed = config[k](nextProps[k], prevProps[k], nextState);\n }\n\n if (changed) chs.push(k);\n }\n\n if (!chs.length) should = false;\n }\n }\n\n return should;\n };\n};\n\nexports.liteShouldComponentUpdate = liteShouldComponentUpdate;\n\nvar pureShouldComponentUpdate = function pureShouldComponentUpdate(self) {\n return function (nextProps, nextState) {\n return !(0, _stuff.shallowEqual)(self.props, nextProps) || !(0, _stuff.shallowEqual)(self.state, nextState);\n };\n};\n\nexports.pureShouldComponentUpdate = pureShouldComponentUpdate;\n\nvar canUseUnsafe = function canUseUnsafe() {\n var v = _react[\"default\"].version.split(\".\").map(parseInt.bind(null, 10));\n\n return v[0] == 16 && v[1] >= 3 || v[0] > 16;\n};\n\nvar useOnPropsChanged = function useOnPropsChanged(obj) {\n if (canUseUnsafe) {\n obj.UNSAFE_componentWillReceiveProps = function (nextProps) {\n obj.onPropsChanged(nextProps);\n };\n } else {\n obj.componentWillReceiveProps = function (nextProps) {\n obj.onPropsChanged(nextProps);\n };\n }\n};\n\nexports.useOnPropsChanged = useOnPropsChanged;\n\nvar bindActionCreators = function bindActionCreators(actionCreators, config, dispatch) {\n return (0, _mapValues[\"default\"])(actionCreators, function (actionCreator) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return dispatch(actionCreator.apply(void 0, [config].concat(args)));\n };\n });\n};\n\nexports.bindActionCreators = bindActionCreators;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getWidgetsForFieldOp = exports.getWidgetForFieldOp = exports.getValueSourcesForFieldOp = exports.getValueLabel = exports.getOperatorsForField = exports.getNewValueForFieldOp = exports.getFuncPathLabels = exports.getFirstOperator = exports.getFirstField = exports.getFieldPathLabels = exports.getFieldPath = exports.getFieldPartsConfigs = exports.formatFieldName = exports.filterValueSourcesForField = void 0;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _configUtils = require(\"./configUtils\");\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _immutable = _interopRequireDefault(require(\"immutable\"));\n\nvar _validation = require(\"../utils/validation\");\n\nvar _last = _interopRequireDefault(require(\"lodash/last\"));\n\nvar selectTypes = [\"select\", \"multiselect\", \"treeselect\", \"treemultiselect\"];\n/**\n * @param {object} config\n * @param {object} oldConfig\n * @param {Immutable.Map} current\n * @param {string} newField\n * @param {string} newOperator\n * @param {string} changedProp\n * @return {object} - {canReuseValue, newValue, newValueSrc, newValueType, newValueError}\n */\n\nvar getNewValueForFieldOp = function getNewValueForFieldOp(config) {\n var oldConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var current = arguments.length > 2 ? arguments[2] : undefined;\n var newField = arguments.length > 3 ? arguments[3] : undefined;\n var newOperator = arguments.length > 4 ? arguments[4] : undefined;\n var changedProp = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var canFix = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;\n var isEndValue = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n if (!oldConfig) oldConfig = config;\n var currentField = current.get(\"field\");\n var currentOperator = current.get(\"operator\");\n var currentValue = current.get(\"value\");\n var currentValueSrc = current.get(\"valueSrc\", new _immutable[\"default\"].List());\n var currentValueType = current.get(\"valueType\", new _immutable[\"default\"].List());\n var currentAsyncListValues = current.get(\"asyncListValues\"); //const isValidatingTree = (changedProp === null);\n\n var _config$settings = config.settings,\n convertableWidgets = _config$settings.convertableWidgets,\n clearValueOnChangeField = _config$settings.clearValueOnChangeField,\n clearValueOnChangeOp = _config$settings.clearValueOnChangeOp,\n showErrorMessage = _config$settings.showErrorMessage; //const currentOperatorConfig = getOperatorConfig(oldConfig, currentOperator, currentField);\n\n var newOperatorConfig = (0, _configUtils.getOperatorConfig)(config, newOperator, newField); //const currentOperatorCardinality = currentOperator ? defaultValue(currentOperatorConfig.cardinality, 1) : null;\n\n var operatorCardinality = newOperator ? (0, _stuff.defaultValue)(newOperatorConfig.cardinality, 1) : null;\n var currentFieldConfig = (0, _configUtils.getFieldConfig)(oldConfig, currentField);\n var newFieldConfig = (0, _configUtils.getFieldConfig)(config, newField);\n var canReuseValue = currentField && currentOperator && newOperator && currentValue != undefined && (!changedProp || changedProp == \"field\" && !clearValueOnChangeField || changedProp == \"operator\" && !clearValueOnChangeOp) && currentFieldConfig && newFieldConfig && currentFieldConfig.type == newFieldConfig.type;\n\n if (canReuseValue && selectTypes.includes(currentFieldConfig.type) && changedProp == \"field\") {\n // different fields of select types has different listValues\n canReuseValue = false;\n } // compare old & new widgets\n\n\n for (var i = 0; i < operatorCardinality; i++) {\n var vs = currentValueSrc.get(i) || null;\n var currentWidget = getWidgetForFieldOp(oldConfig, currentField, currentOperator, vs);\n var newWidget = getWidgetForFieldOp(config, newField, newOperator, vs); // need to also check value widgets if we changed operator and current value source was 'field'\n // cause for select type op '=' requires single value and op 'in' requires array value\n\n var currentValueWidget = vs == \"value\" ? currentWidget : getWidgetForFieldOp(oldConfig, currentField, currentOperator, \"value\");\n var newValueWidget = vs == \"value\" ? newWidget : getWidgetForFieldOp(config, newField, newOperator, \"value\");\n var canReuseWidget = newValueWidget == currentValueWidget || (convertableWidgets[currentValueWidget] || []).includes(newValueWidget);\n if (!canReuseWidget) canReuseValue = false;\n }\n\n if (currentOperator != newOperator && [currentOperator, newOperator].includes(\"proximity\")) canReuseValue = false;\n var firstWidgetConfig = (0, _configUtils.getFieldWidgetConfig)(config, newField, newOperator, null, currentValueSrc.first());\n var valueSources = getValueSourcesForFieldOp(config, newField, newOperator);\n var valueFixes = {};\n var valueErrors = Array.from({\n length: operatorCardinality\n }, function () {\n return null;\n });\n\n if (canReuseValue) {\n var _loop = function _loop(_i) {\n var v = currentValue.get(_i);\n var vType = currentValueType.get(_i) || null;\n var vSrc = currentValueSrc.get(_i) || null;\n var isValidSrc = valueSources.find(function (v) {\n return v == vSrc;\n }) != null;\n if (!isValidSrc && _i > 0 && vSrc == null) isValidSrc = true; // make exception for range widgets (when changing op from '==' to 'between')\n\n var asyncListValues = currentAsyncListValues;\n\n var _validateValue = (0, _validation.validateValue)(config, newField, newField, newOperator, v, vType, vSrc, asyncListValues, canFix, isEndValue),\n _validateValue2 = (0, _slicedToArray2[\"default\"])(_validateValue, 2),\n validateError = _validateValue2[0],\n fixedValue = _validateValue2[1];\n\n var isValid = !validateError; // Allow bad value with error message\n // But not on field change - in that case just drop bad value that can't be reused\n // ? Maybe we should also drop bad value on op change?\n // For bad multiselect value we have both error message + fixed value.\n // If we show error message, it will gone on next tree validation\n\n var fixValue = fixedValue !== v;\n var dropValue = !isValidSrc || !isValid && (changedProp == \"field\" || !showErrorMessage && !fixValue);\n var showValueError = !!validateError && showErrorMessage && !dropValue && !fixValue;\n\n if (showValueError) {\n valueErrors[_i] = validateError;\n }\n\n if (fixValue) {\n valueFixes[_i] = fixedValue;\n }\n\n if (dropValue) {\n canReuseValue = false;\n return \"break\";\n }\n };\n\n for (var _i = 0; _i < operatorCardinality; _i++) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n } // reuse value OR get defaultValue for cardinality 1 (it means default range values is not supported yet, todo)\n\n\n var newValue = null,\n newValueSrc = null,\n newValueType = null,\n newValueError = null;\n newValue = new _immutable[\"default\"].List(Array.from({\n length: operatorCardinality\n }, function (_ignore, i) {\n var v = undefined;\n\n if (canReuseValue) {\n if (i < currentValue.size) {\n v = currentValue.get(i);\n\n if (valueFixes[i] !== undefined) {\n v = valueFixes[i];\n }\n }\n } else if (operatorCardinality == 1) {\n var _newFieldConfig$field;\n\n v = (0, _stuff.getFirstDefined)([newFieldConfig === null || newFieldConfig === void 0 ? void 0 : newFieldConfig.defaultValue, newFieldConfig === null || newFieldConfig === void 0 ? void 0 : (_newFieldConfig$field = newFieldConfig.fieldSettings) === null || _newFieldConfig$field === void 0 ? void 0 : _newFieldConfig$field.defaultValue, firstWidgetConfig === null || firstWidgetConfig === void 0 ? void 0 : firstWidgetConfig.defaultValue]);\n }\n\n return v;\n }));\n newValueSrc = new _immutable[\"default\"].List(Array.from({\n length: operatorCardinality\n }, function (_ignore, i) {\n var vs = null;\n\n if (canReuseValue) {\n if (i < currentValueSrc.size) vs = currentValueSrc.get(i);\n } else if (valueSources.length == 1) {\n vs = valueSources[0];\n } else if (valueSources.length > 1) {\n vs = valueSources[0];\n }\n\n return vs;\n }));\n\n if (showErrorMessage) {\n if (newOperatorConfig && newOperatorConfig.validateValues && newValueSrc.toJS().filter(function (vs) {\n return vs == \"value\" || vs == null;\n }).length == operatorCardinality) {\n // last element in `valueError` list is for range validation error\n var jsValues = firstWidgetConfig && firstWidgetConfig.toJS ? newValue.toJS().map(function (v) {\n return firstWidgetConfig.toJS(v, firstWidgetConfig);\n }) : newValue.toJS();\n var rangeValidateError = newOperatorConfig.validateValues(jsValues);\n\n if (showErrorMessage) {\n valueErrors.push(rangeValidateError);\n }\n }\n\n newValueError = new _immutable[\"default\"].List(valueErrors);\n }\n\n newValueType = new _immutable[\"default\"].List(Array.from({\n length: operatorCardinality\n }, function (_ignore, i) {\n var vt = null;\n\n if (canReuseValue) {\n if (i < currentValueType.size) vt = currentValueType.get(i);\n } else if (operatorCardinality == 1 && firstWidgetConfig && firstWidgetConfig.type !== undefined) {\n vt = firstWidgetConfig.type;\n } else if (operatorCardinality == 1 && newFieldConfig && newFieldConfig.type !== undefined) {\n vt = newFieldConfig.type == \"!group\" ? \"number\" : newFieldConfig.type;\n }\n\n return vt;\n }));\n return {\n canReuseValue: canReuseValue,\n newValue: newValue,\n newValueSrc: newValueSrc,\n newValueType: newValueType,\n newValueError: newValueError,\n operatorCardinality: operatorCardinality\n };\n};\n\nexports.getNewValueForFieldOp = getNewValueForFieldOp;\n\nvar getFirstField = function getFirstField(config) {\n var parentRuleGroupPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var fieldSeparator = config.settings.fieldSeparator;\n var parentPathArr = typeof parentRuleGroupPath == \"string\" ? parentRuleGroupPath.split(fieldSeparator) : parentRuleGroupPath;\n var parentField = parentRuleGroupPath ? (0, _configUtils.getFieldRawConfig)(config, parentRuleGroupPath) : config;\n var firstField = parentField,\n key = null,\n keysPath = [];\n\n do {\n var subfields = firstField === config ? config.fields : firstField.subfields;\n\n if (!subfields || !Object.keys(subfields).length) {\n firstField = key = null;\n break;\n }\n\n key = Object.keys(subfields)[0];\n keysPath.push(key);\n firstField = subfields[key];\n } while (firstField.type == \"!struct\" || firstField.type == \"!group\");\n\n return (parentPathArr || []).concat(keysPath).join(fieldSeparator);\n};\n\nexports.getFirstField = getFirstField;\n\nvar getOperatorsForField = function getOperatorsForField(config, field) {\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n var fieldOps = fieldConfig ? fieldConfig.operators : [];\n return fieldOps;\n};\n\nexports.getOperatorsForField = getOperatorsForField;\n\nvar getFirstOperator = function getFirstOperator(config, field) {\n var fieldOps = getOperatorsForField(config, field);\n return fieldOps ? fieldOps[0] : null;\n};\n\nexports.getFirstOperator = getFirstOperator;\n\nvar getFieldPath = function getFieldPath(field, config) {\n var onlyKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!field) return null;\n var fieldSeparator = config.settings.fieldSeparator;\n var parts = Array.isArray(field) ? field : field.split(fieldSeparator);\n if (onlyKeys) return parts;else return parts.map(function (_curr, ind, arr) {\n return arr.slice(0, ind + 1);\n }).map(function (parts) {\n return parts.join(fieldSeparator);\n });\n};\n\nexports.getFieldPath = getFieldPath;\n\nvar getFuncPathLabels = function getFuncPathLabels(field, config) {\n var parentField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n return getFieldPathLabels(field, config, parentField, \"funcs\", \"subfields\");\n};\n\nexports.getFuncPathLabels = getFuncPathLabels;\n\nvar getFieldPathLabels = function getFieldPathLabels(field, config) {\n var parentField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var fieldsKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"fields\";\n var subfieldsKey = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : \"subfields\";\n if (!field) return null;\n var fieldSeparator = config.settings.fieldSeparator;\n var parts = Array.isArray(field) ? field : field.split(fieldSeparator);\n var parentParts = parentField ? Array.isArray(parentField) ? parentField : parentField.split(fieldSeparator) : [];\n return parts.slice(parentParts.length).map(function (_curr, ind, arr) {\n return arr.slice(0, ind + 1);\n }).map(function (parts) {\n return [].concat((0, _toConsumableArray2[\"default\"])(parentParts), (0, _toConsumableArray2[\"default\"])(parts)).join(fieldSeparator);\n }).map(function (part) {\n var cnf = (0, _configUtils.getFieldRawConfig)(config, part, fieldsKey, subfieldsKey);\n return cnf && cnf.label || cnf && (0, _last[\"default\"])(part.split(fieldSeparator));\n }).filter(function (label) {\n return label != null;\n });\n};\n\nexports.getFieldPathLabels = getFieldPathLabels;\n\nvar getFieldPartsConfigs = function getFieldPartsConfigs(field, config) {\n var parentField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (!field) return null;\n var parentFieldDef = parentField && (0, _configUtils.getFieldRawConfig)(config, parentField) || null;\n var fieldSeparator = config.settings.fieldSeparator;\n var parts = Array.isArray(field) ? field : field.split(fieldSeparator);\n var parentParts = parentField ? Array.isArray(parentField) ? parentField : parentField.split(fieldSeparator) : [];\n return parts.slice(parentParts.length).map(function (_curr, ind, arr) {\n return arr.slice(0, ind + 1);\n }).map(function (parts) {\n return {\n part: [].concat((0, _toConsumableArray2[\"default\"])(parentParts), (0, _toConsumableArray2[\"default\"])(parts)).join(fieldSeparator),\n key: parts[parts.length - 1]\n };\n }).map(function (_ref) {\n var part = _ref.part,\n key = _ref.key;\n var cnf = (0, _configUtils.getFieldRawConfig)(config, part);\n return {\n key: key,\n cnf: cnf\n };\n }).map(function (_ref2, ind, arr) {\n var key = _ref2.key,\n cnf = _ref2.cnf;\n var parentCnf = ind > 0 ? arr[ind - 1].cnf : parentFieldDef;\n return [key, cnf, parentCnf];\n });\n};\n\nexports.getFieldPartsConfigs = getFieldPartsConfigs;\n\nvar getValueLabel = function getValueLabel(config, field, operator, delta) {\n var valueSrc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var isSpecialRange = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var isFuncArg = field && (0, _typeof2[\"default\"])(field) == \"object\" && !!field.func && !!field.arg;\n var showLabels = config.settings.showLabels;\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n var fieldWidgetConfig = (0, _configUtils.getFieldWidgetConfig)(config, field, operator, null, valueSrc) || {};\n var mergedOpConfig = (0, _configUtils.getOperatorConfig)(config, operator, field) || {};\n var cardinality = isSpecialRange ? 1 : mergedOpConfig.cardinality;\n var ret = null;\n\n if (cardinality > 1) {\n var valueLabels = fieldWidgetConfig.valueLabels || mergedOpConfig.valueLabels;\n if (valueLabels) ret = valueLabels[delta];\n\n if (ret && (0, _typeof2[\"default\"])(ret) != \"object\") {\n ret = {\n label: ret,\n placeholder: ret\n };\n }\n\n if (!ret) {\n ret = {\n label: config.settings.valueLabel + \" \" + (delta + 1),\n placeholder: config.settings.valuePlaceholder + \" \" + (delta + 1)\n };\n }\n } else {\n var label = fieldWidgetConfig.valueLabel;\n var placeholder = fieldWidgetConfig.valuePlaceholder;\n\n if (isFuncArg) {\n if (!label) label = fieldConfig.label || field.arg;\n if (!placeholder && !showLabels) placeholder = fieldConfig.label || field.arg;\n }\n\n ret = {\n label: label || config.settings.valueLabel,\n placeholder: placeholder || config.settings.valuePlaceholder\n };\n }\n\n return ret;\n};\n\nexports.getValueLabel = getValueLabel;\n\nfunction _getWidgetsAndSrcsForFieldOp(config, field) {\n var operator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var valueSrc = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var widgets = [];\n var valueSrcs = [];\n if (!field) return {\n widgets: widgets,\n valueSrcs: valueSrcs\n };\n\n var isFuncArg = (0, _typeof2[\"default\"])(field) == \"object\" && (!!field.func && !!field.arg || field._isFuncArg);\n\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n var opConfig = operator ? config.operators[operator] : null;\n\n if (fieldConfig && fieldConfig.widgets) {\n var _loop2 = function _loop2(widget) {\n var widgetConfig = fieldConfig.widgets[widget]; // if (!config.widgets[widget]) {\n // continue;\n // }\n\n var widgetValueSrc = config.widgets[widget].valueSrc || \"value\";\n var canAdd = true;\n\n if (widget == \"field\") {\n canAdd = canAdd && filterValueSourcesForField(config, [\"field\"], fieldConfig).length > 0;\n }\n\n if (widget == \"func\") {\n canAdd = canAdd && filterValueSourcesForField(config, [\"func\"], fieldConfig).length > 0;\n } // If can't check operators, don't add\n // Func args don't have operators\n\n\n if (valueSrc == \"value\" && !widgetConfig.operators && !isFuncArg && field != \"!case_value\") canAdd = false;\n if (widgetConfig.operators && operator) canAdd = canAdd && widgetConfig.operators.indexOf(operator) != -1;\n if (valueSrc && valueSrc != widgetValueSrc && valueSrc != \"const\") canAdd = false;\n if (opConfig && opConfig.cardinality == 0 && widgetValueSrc != \"value\") canAdd = false;\n\n if (canAdd) {\n widgets.push(widget);\n var canAddValueSrc = fieldConfig.valueSources && fieldConfig.valueSources.indexOf(widgetValueSrc) != -1;\n if (opConfig && opConfig.valueSources && opConfig.valueSources.indexOf(widgetValueSrc) == -1) canAddValueSrc = false;\n if (canAddValueSrc && !valueSrcs.find(function (v) {\n return v == widgetValueSrc;\n })) valueSrcs.push(widgetValueSrc);\n }\n };\n\n for (var widget in fieldConfig.widgets) {\n _loop2(widget);\n }\n }\n\n var widgetWeight = function widgetWeight(w) {\n var wg = 0;\n\n if (fieldConfig.preferWidgets) {\n if (fieldConfig.preferWidgets.includes(w)) wg += 10 - fieldConfig.preferWidgets.indexOf(w);\n } else if (w == fieldConfig.mainWidget) {\n wg += 100;\n }\n\n if (w == \"field\") {\n wg -= 1;\n }\n\n if (w == \"func\") {\n wg -= 2;\n }\n\n return wg;\n };\n\n widgets.sort(function (w1, w2) {\n return widgetWeight(w2) - widgetWeight(w1);\n });\n return {\n widgets: widgets,\n valueSrcs: valueSrcs\n };\n}\n\nvar getWidgetsForFieldOp = function getWidgetsForFieldOp(config, field, operator) {\n var valueSrc = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var _getWidgetsAndSrcsFor = _getWidgetsAndSrcsForFieldOp(config, field, operator, valueSrc),\n widgets = _getWidgetsAndSrcsFor.widgets;\n\n return widgets;\n};\n\nexports.getWidgetsForFieldOp = getWidgetsForFieldOp;\n\nvar filterValueSourcesForField = function filterValueSourcesForField(config, valueSrcs, fieldDefinition) {\n if (!fieldDefinition) return valueSrcs;\n return valueSrcs.filter(function (vs) {\n var canAdd = true;\n\n if (vs == \"field\") {\n if (config._fieldsCntByType) {\n // tip: LHS field can be used as arg in RHS function\n var minCnt = fieldDefinition._isFuncArg ? 0 : 1;\n canAdd = canAdd && config._fieldsCntByType[fieldDefinition.type] > minCnt;\n }\n }\n\n if (vs == \"func\") {\n if (config._funcsCntByType) canAdd = canAdd && !!config._funcsCntByType[fieldDefinition.type];\n if (fieldDefinition.funcs) canAdd = canAdd && fieldDefinition.funcs.length > 0;\n }\n\n return canAdd;\n });\n};\n\nexports.filterValueSourcesForField = filterValueSourcesForField;\n\nvar getValueSourcesForFieldOp = function getValueSourcesForFieldOp(config, field, operator) {\n var fieldDefinition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var leftFieldForFunc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n\n var _getWidgetsAndSrcsFor2 = _getWidgetsAndSrcsForFieldOp(config, field, operator, null),\n valueSrcs = _getWidgetsAndSrcsFor2.valueSrcs;\n\n var filteredValueSrcs = filterValueSourcesForField(config, valueSrcs, fieldDefinition);\n return filteredValueSrcs;\n};\n\nexports.getValueSourcesForFieldOp = getValueSourcesForFieldOp;\n\nvar getWidgetForFieldOp = function getWidgetForFieldOp(config, field, operator) {\n var valueSrc = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var _getWidgetsAndSrcsFor3 = _getWidgetsAndSrcsForFieldOp(config, field, operator, valueSrc),\n widgets = _getWidgetsAndSrcsFor3.widgets;\n\n var widget = null;\n if (widgets.length) widget = widgets[0];\n return widget;\n};\n\nexports.getWidgetForFieldOp = getWidgetForFieldOp;\n\nvar formatFieldName = function formatFieldName(field, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n if (!field) return;\n var fieldDef = (0, _configUtils.getFieldConfig)(config, field) || {};\n var fieldSeparator = config.settings.fieldSeparator;\n var fieldParts = Array.isArray(field) ? field : field.split(fieldSeparator);\n var fieldName = Array.isArray(field) ? field.join(fieldSeparator) : field;\n\n if (fieldDef.tableName) {\n // legacy\n var fieldPartsCopy = (0, _toConsumableArray2[\"default\"])(fieldParts);\n fieldPartsCopy[0] = fieldDef.tableName;\n fieldName = fieldPartsCopy.join(fieldSeparator);\n }\n\n if (fieldDef.fieldName) {\n fieldName = fieldDef.fieldName;\n }\n\n if (parentField) {\n var parentFieldDef = (0, _configUtils.getFieldConfig)(config, parentField) || {};\n var parentFieldName = parentField;\n\n if (parentFieldDef.fieldName) {\n parentFieldName = parentFieldDef.fieldName;\n }\n\n if (fieldName.indexOf(parentFieldName + fieldSeparator) == 0) {\n fieldName = fieldName.slice((parentFieldName + fieldSeparator).length);\n } else {\n meta.errors.push(\"Can't cut group \".concat(parentFieldName, \" from field \").concat(fieldName));\n }\n }\n\n return fieldName;\n};\n\nexports.formatFieldName = formatFieldName;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof3 = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.applyToJS = applyToJS;\nexports.mapListValues = exports.logger = exports.listValuesToArray = exports.isJsonLogic = exports.isImmutable = exports.immutableEqual = exports.getValueInListValues = exports.getTitleInListValues = exports.getLogger = exports.getItemInListValues = exports.getFirstDefined = exports.flatizeTreeData = exports.escapeRegExp = exports.eqSet = exports.eqArrSet = exports.defaultValue = exports.defaultTreeDataMap = exports.deepEqual = void 0;\nexports.mergeArraysSmart = mergeArraysSmart;\nexports.shallowEqual = exports.removePrefixPath = exports.normalizeListValues = void 0;\nexports.sleep = sleep;\nexports.toImmutableList = toImmutableList;\nexports.truncateString = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _immutable = _interopRequireWildcard(require(\"immutable\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// RegExp.quote = function (str) {\n// return str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n// };\nvar defaultValue = function defaultValue(value, _default) {\n return typeof value === \"undefined\" ? _default : value;\n};\n\nexports.defaultValue = defaultValue;\n\nvar truncateString = function truncateString(str, n, useWordBoundary) {\n if (!n || str.length <= n) {\n return str;\n }\n\n var subString = str.substr(0, n - 1);\n return (useWordBoundary ? subString.substr(0, subString.lastIndexOf(\" \")) : subString) + \"...\";\n};\n\nexports.truncateString = truncateString;\n\nvar immutableEqual = function immutableEqual(v1, v2) {\n if (v1 === v2) {\n return true;\n } else {\n return v1.equals(v2);\n }\n};\n\nexports.immutableEqual = immutableEqual;\n\nvar deepEqual = function deepEqual(v1, v2) {\n if (v1 === v2) {\n return true;\n } else if (_immutable.Map.isMap(v1)) {\n return v1.equals(v2);\n } else {\n return JSON.stringify(v1) == JSON.stringify(v2);\n }\n}; //Do sets have same values?\n\n\nexports.deepEqual = deepEqual;\n\nvar eqSet = function eqSet(as, bs) {\n if (as.size !== bs.size) return false;\n\n var _iterator = _createForOfIteratorHelper(as),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var a = _step.value;\n if (!bs.has(a)) return false;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return true;\n}; //Do arrays have same values?\n\n\nexports.eqSet = eqSet;\n\nvar eqArrSet = function eqArrSet(arr1, arr2) {\n return eqSet(new Set(arr1), new Set(arr2));\n};\n\nexports.eqArrSet = eqArrSet;\n\nvar shallowEqual = function shallowEqual(a, b) {\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (a === b) {\n return true;\n } else if (Array.isArray(a)) return shallowEqualArrays(a, b, deep);else if (_immutable.Map.isMap(a)) return a.equals(b);else if ((0, _typeof2[\"default\"])(a) == \"object\") return shallowEqualObjects(a, b, deep);else return a === b;\n};\n\nexports.shallowEqual = shallowEqual;\n\nfunction shallowEqualArrays(arrA, arrB) {\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var isEqual = deep ? shallowEqual(arrA[i], arrB[i], deep) : arrA[i] === arrB[i];\n\n if (!isEqual) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction shallowEqualObjects(objA, objB) {\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (objA === objB) {\n return true;\n }\n\n if (!objA || !objB) {\n return false;\n }\n\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n var len = aKeys.length;\n\n if (bKeys.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n var isEqual = deep ? shallowEqual(objA[key], objB[key], deep) : objA[key] === objB[key];\n\n if (!isEqual) {\n return false;\n }\n }\n\n return true;\n}\n\nvar escapeRegExp = function escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\/]/g, \"\\\\$&\"); // $& means the whole matched string\n};\n\nexports.escapeRegExp = escapeRegExp;\n\nvar isObject = function isObject(v) {\n return (0, _typeof2[\"default\"])(v) == \"object\" && v !== null;\n}; // object or array\n\n\nvar listValue = function listValue(v, title) {\n return isObject(v) ? v : {\n value: v,\n title: title !== undefined ? title : v\n };\n}; // convert {<value>: <title>, ..} or [value, ..] to normal [{value, title}, ..]\n\n\nvar listValuesToArray = function listValuesToArray(listValuesObj) {\n if (!isObject(listValuesObj)) return listValuesObj;\n if (Array.isArray(listValuesObj)) return listValuesObj.map(function (v) {\n return listValue(v);\n });\n var listValuesArr = [];\n\n for (var v in listValuesObj) {\n var title = listValuesObj[v];\n listValuesArr.push(listValue(v, title));\n }\n\n return listValuesArr;\n}; // listValues can be {<value>: <title>, ..} or [{value, title}, ..] or [value, ..]\n\n\nexports.listValuesToArray = listValuesToArray;\n\nvar getItemInListValues = function getItemInListValues(listValues, value) {\n if (Array.isArray(listValues)) {\n var values = listValues.map(function (v) {\n return listValue(v);\n });\n return values.find(function (v) {\n return v.value === value;\n }) || values.find(function (v) {\n return \"\".concat(v.value) === value;\n });\n } else {\n return listValues[value] !== undefined ? listValue(value, listValues[value]) : undefined;\n }\n};\n\nexports.getItemInListValues = getItemInListValues;\n\nvar getTitleInListValues = function getTitleInListValues(listValues, value) {\n if (listValues == undefined) return value;\n var it = getItemInListValues(listValues, value);\n return it !== undefined ? it.title : value;\n};\n\nexports.getTitleInListValues = getTitleInListValues;\n\nvar getValueInListValues = function getValueInListValues(listValues, value) {\n if (listValues == undefined) return value;\n var it = getItemInListValues(listValues, value);\n return it !== undefined ? it.value : value;\n};\n\nexports.getValueInListValues = getValueInListValues;\n\nvar mapListValues = function mapListValues(listValues, mapFn) {\n var ret = [];\n\n if (Array.isArray(listValues)) {\n var _iterator2 = _createForOfIteratorHelper(listValues),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var v = _step2.value;\n var lv = mapFn(listValue(v));\n if (lv != null) ret.push(lv);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n for (var value in listValues) {\n var _lv = mapFn(listValue(value, listValues[value]));\n\n if (_lv != null) ret.push(_lv);\n }\n }\n\n return ret;\n};\n\nexports.mapListValues = mapListValues;\nvar defaultTreeDataMap = {\n id: \"value\",\n pId: \"parent\",\n rootPId: undefined\n}; // converts from treeData to treeDataSimpleMode format (https://ant.design/components/tree-select/)\n// ! modifies value of `treeData`\n\nexports.defaultTreeDataMap = defaultTreeDataMap;\n\nvar flatizeTreeData = function flatizeTreeData(treeData) {\n var tdm = defaultTreeDataMap;\n var rind;\n var len;\n\n var _flatize = function _flatize(node, root, lev) {\n if (node.children) {\n if (lev == 1) node[tdm.pId] = tdm.rootPId; //optional?\n\n var childrenCount = node.children.length;\n\n var _iterator3 = _createForOfIteratorHelper(node.children),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var c = _step3.value;\n c[tdm.pId] = node[tdm.id];\n rind++;\n root.splice(rind, 0, c); //instead of just push\n\n len++;\n\n _flatize(c, root, lev + 1);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n delete node.children;\n\n if (childrenCount == 0) {\n root.splice(rind, 1);\n rind--;\n len--;\n }\n }\n };\n\n if (Array.isArray(treeData)) {\n len = treeData.length;\n\n for (rind = 0; rind < len; rind++) {\n var c = treeData[rind];\n if (!isObject(c)) continue;\n if (c[tdm.pId] !== undefined && c[tdm.pId] != tdm.rootPId) continue; //not lev 1\n\n _flatize(c, treeData, 1);\n }\n }\n\n return treeData;\n};\n\nexports.flatizeTreeData = flatizeTreeData;\n\nvar getPathInListValues = function getPathInListValues(listValues, value) {\n var tdm = defaultTreeDataMap;\n var it = getItemInListValues(listValues, value);\n var parentId = it ? it[tdm.pId] : undefined;\n var parent = parentId ? listValues.find(function (v) {\n return v[tdm.id] === parentId;\n }) : undefined;\n return parent ? [parent.value].concat((0, _toConsumableArray2[\"default\"])(getPathInListValues(listValues, parent.value))) : [];\n};\n\nvar getChildrenInListValues = function getChildrenInListValues(listValues, value) {\n var tdm = defaultTreeDataMap;\n var it = getItemInListValues(listValues, value);\n return it ? listValues.filter(function (v) {\n return v[tdm.pId] === it[tdm.id];\n }).map(function (v) {\n return v.value;\n }) : [];\n}; // ! modifies value of `treeData`\n\n\nvar extendTreeData = function extendTreeData(treeData, fieldSettings, isMulti) {\n var _iterator4 = _createForOfIteratorHelper(treeData),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var node = _step4.value;\n node.path = getPathInListValues(treeData, node.value);\n\n if (fieldSettings.treeSelectOnlyLeafs != false) {\n var childrenValues = getChildrenInListValues(treeData, node.value);\n\n if (!isMulti) {\n node.selectable = childrenValues.length == 0;\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return treeData;\n};\n\nvar normalizeListValues = function normalizeListValues(listValues, type, fieldSettings) {\n var isTree = [\"treeselect\", \"treemultiselect\"].includes(type);\n var isMulti = [\"multiselect\", \"treemultiselect\"].includes(type);\n\n if (isTree) {\n listValues = listValuesToArray(listValues);\n listValues = flatizeTreeData(listValues);\n listValues = extendTreeData(listValues, fieldSettings, isMulti);\n }\n\n return listValues;\n};\n\nexports.normalizeListValues = normalizeListValues;\n\nvar removePrefixPath = function removePrefixPath(selectedPath, parentPath) {\n if (!selectedPath) return selectedPath;\n var isPrefix = true;\n\n for (var i = 0; i < parentPath.length; i++) {\n var part = parentPath[i];\n\n if (selectedPath[i] !== undefined && part == selectedPath[i]) {//ok\n } else {\n isPrefix = false;\n break;\n }\n }\n\n return isPrefix ? selectedPath.slice(parentPath.length) : selectedPath;\n};\n\nexports.removePrefixPath = removePrefixPath;\n\nvar isJsonLogic = function isJsonLogic(logic) {\n return (0, _typeof2[\"default\"])(logic) === \"object\" // An object\n && logic !== null // but not null\n && !Array.isArray(logic) // and not an array\n && Object.keys(logic).length === 1 // with exactly one key\n ;\n};\n\nexports.isJsonLogic = isJsonLogic;\n\nfunction sleep(delay) {\n return new Promise(function (resolve) {\n setTimeout(resolve, delay);\n });\n}\n\nvar isImmutable = function isImmutable(v) {\n return (0, _typeof2[\"default\"])(v) === \"object\" && v !== null && typeof v.toJS === \"function\";\n};\n\nexports.isImmutable = isImmutable;\n\nfunction applyToJS(v) {\n return isImmutable(v) ? v.toJS() : v;\n}\n\nfunction toImmutableList(v) {\n return isImmutable(v) ? v : new _immutable[\"default\"].List(v);\n} // [1, 4, 9] + [1, 5, 9] => [1, 4, 5, 9]\n// Used for merging arrays of operators for different widgets of 1 type\n\n\nfunction mergeArraysSmart(arr1, arr2) {\n if (!arr1) arr1 = [];\n if (!arr2) arr2 = [];\n return arr2.map(function (op) {\n return [op, arr1.indexOf(op)];\n }).map(function (_ref, i, orig) {\n var _ref2 = (0, _slicedToArray2[\"default\"])(_ref, 2),\n op = _ref2[0],\n ind = _ref2[1];\n\n if (ind == -1) {\n var next = orig.slice(i + 1);\n var prev = orig.slice(0, i);\n var after = prev.reverse().find(function (_ref3) {\n var _ref4 = (0, _slicedToArray2[\"default\"])(_ref3, 2),\n _cop = _ref4[0],\n ci = _ref4[1];\n\n return ci != -1;\n });\n var before = next.find(function (_ref5) {\n var _ref6 = (0, _slicedToArray2[\"default\"])(_ref5, 2),\n _cop = _ref6[0],\n ci = _ref6[1];\n\n return ci != -1;\n });\n if (before) return [op, \"before\", before[0]];else if (after) return [op, \"after\", after[0]];else return [op, \"append\", null];\n } else {\n // already exists\n return null;\n }\n }).filter(function (x) {\n return x !== null;\n }).reduce(function (acc, _ref7) {\n var _ref8 = (0, _slicedToArray2[\"default\"])(_ref7, 3),\n newOp = _ref8[0],\n rel = _ref8[1],\n relOp = _ref8[2];\n\n var ind = acc.indexOf(relOp);\n\n if (acc.indexOf(newOp) == -1) {\n if (ind > -1) {\n // insert after or before\n acc.splice(ind + (rel == \"after\" ? 1 : 0), 0, newOp);\n } else {\n // insert to end or start\n acc.splice(rel == \"append\" ? Infinity : 0, 0, newOp);\n }\n }\n\n return acc;\n }, arr1.slice());\n}\n\nvar isDev = function isDev() {\n return typeof process !== \"undefined\" && process.env && process.env.NODE_ENV == \"development\";\n};\n\nvar getLogger = function getLogger() {\n var devMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var verbose = devMode != undefined ? devMode : isDev();\n return verbose ? console : {\n error: function error() {},\n log: function log() {},\n warn: function warn() {},\n debug: function debug() {},\n info: function info() {}\n };\n};\n\nexports.getLogger = getLogger;\n\nvar getFirstDefined = function getFirstDefined() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var ret;\n\n for (var i = 0; i < arr.length; i++) {\n var v = arr[i];\n\n if (v !== undefined) {\n ret = v;\n break;\n }\n }\n\n return ret;\n};\n\nexports.getFirstDefined = getFirstDefined;\nvar logger = getLogger();\nexports.logger = logger;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.removePathsInTree = exports.removeIsLockedInTree = exports.isEmptyTree = exports.hasChildren = exports.getTreeBadFields = exports.getTotalRulesCountInTree = exports.getTotalReordableNodesCountInTree = exports.getSwitchValues = exports.getLightTree = exports.getItemByPath = exports.getFlatTree = exports.fixPathsInTree = exports.fixEmptyGroupsInTree = exports.expandTreeSubpath = exports.expandTreePath = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _immutable = _interopRequireDefault(require(\"immutable\"));\n\n/**\n * @param {Immutable.List} path\n * @param {...string} suffix\n * @return {Immutable.List}\n */\nvar expandTreePath = function expandTreePath(path) {\n for (var _len = arguments.length, suffix = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n suffix[_key - 1] = arguments[_key];\n }\n\n return path.interpose(\"children1\").withMutations(function (list) {\n list.skip(1);\n list.push.apply(list, suffix);\n return list;\n });\n};\n/**\n * @param {Immutable.List} path\n * @param {...string} suffix\n * @return {Immutable.List}\n */\n\n\nexports.expandTreePath = expandTreePath;\n\nvar expandTreeSubpath = function expandTreeSubpath(path) {\n for (var _len2 = arguments.length, suffix = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n suffix[_key2 - 1] = arguments[_key2];\n }\n\n return path.interpose(\"children1\").withMutations(function (list) {\n list.push.apply(list, suffix);\n return list;\n });\n};\n/**\n * @param {Immutable.Map} path\n * @param {Immutable.List} path\n * @return {Immutable.Map}\n */\n\n\nexports.expandTreeSubpath = expandTreeSubpath;\n\nvar getItemByPath = function getItemByPath(tree, path) {\n var children = new _immutable[\"default\"].OrderedMap((0, _defineProperty2[\"default\"])({}, tree.get(\"id\"), tree));\n var res = tree;\n path.forEach(function (id) {\n res = children.get(id);\n children = res.get(\"children1\");\n });\n return res;\n};\n/**\n * Remove `path` in every item\n * @param {Immutable.Map} tree\n * @return {Immutable.Map} tree\n */\n\n\nexports.getItemByPath = getItemByPath;\n\nvar removePathsInTree = function removePathsInTree(tree) {\n var newTree = tree;\n\n function _processNode(item, path) {\n var itemPath = path.push(item.get(\"id\"));\n\n if (item.get(\"path\")) {\n newTree = newTree.removeIn(expandTreePath(itemPath, \"path\"));\n }\n\n var children = item.get(\"children1\");\n\n if (children) {\n children.map(function (child, _childId) {\n _processNode(child, itemPath);\n });\n }\n }\n\n _processNode(tree, new _immutable[\"default\"].List());\n\n return newTree;\n};\n/**\n * Remove `isLocked` in items that inherit parent's `isLocked`\n * @param {Immutable.Map} tree\n * @return {Immutable.Map} tree\n */\n\n\nexports.removePathsInTree = removePathsInTree;\n\nvar removeIsLockedInTree = function removeIsLockedInTree(tree) {\n var newTree = tree;\n\n function _processNode(item, path) {\n var isParentLocked = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var itemPath = path.push(item.get(\"id\"));\n var isLocked = item.getIn([\"properties\", \"isLocked\"]);\n\n if (isParentLocked && isLocked) {\n newTree = newTree.deleteIn(expandTreePath(itemPath, \"properties\", \"isLocked\"));\n }\n\n var children = item.get(\"children1\");\n\n if (children) {\n children.map(function (child, _childId) {\n _processNode(child, itemPath, isLocked || isParentLocked);\n });\n }\n }\n\n _processNode(tree, new _immutable[\"default\"].List());\n\n return newTree;\n};\n/**\n * Set correct `path` and `id` in every item\n * @param {Immutable.Map} tree\n * @return {Immutable.Map} tree\n */\n\n\nexports.removeIsLockedInTree = removeIsLockedInTree;\n\nvar fixPathsInTree = function fixPathsInTree(tree) {\n var newTree = tree;\n\n function _processNode(item, path, lev, nodeId) {\n if (!item) return;\n var currPath = item.get(\"path\");\n var currId = item.get(\"id\");\n var itemId = currId || nodeId;\n var itemPath = path.push(itemId);\n\n if (!currPath || !currPath.equals(itemPath)) {\n newTree = newTree.setIn(expandTreePath(itemPath, \"path\"), itemPath);\n }\n\n if (!currId) {\n newTree = newTree.setIn(expandTreePath(itemPath, \"id\"), itemId);\n }\n\n var children = item.get(\"children1\");\n\n if (children) {\n if (children.constructor.name == \"Map\") {\n // protect: should me OrderedMap, not Map (issue #501)\n newTree = newTree.setIn(expandTreePath(itemPath, \"children1\"), new _immutable[\"default\"].OrderedMap(children));\n }\n\n children.map(function (child, childId) {\n _processNode(child, itemPath, lev + 1, childId);\n });\n }\n }\n\n _processNode(tree, new _immutable[\"default\"].List(), 0);\n\n return newTree;\n};\n\nexports.fixPathsInTree = fixPathsInTree;\n\nvar fixEmptyGroupsInTree = function fixEmptyGroupsInTree(tree) {\n var newTree = tree;\n\n function _processNode(item, path, lev, nodeId) {\n if (!item) return false;\n var itemId = item.get(\"id\") || nodeId;\n var itemPath = path.push(itemId);\n var children = item.get(\"children1\");\n\n if (children) {\n var allChildrenGone = children.map(function (child, childId) {\n return _processNode(child, itemPath, lev + 1, childId);\n }).reduce(function (curr, v) {\n return curr && v;\n }, true);\n\n if ((children.size == 0 || allChildrenGone) && lev > 0) {\n newTree = newTree.deleteIn(expandTreePath(itemPath));\n return true;\n }\n }\n\n return false;\n }\n\n _processNode(tree, new _immutable[\"default\"].List(), 0);\n\n return newTree;\n};\n/**\n * @param {Immutable.Map} tree\n * @return {Object} {flat, items}\n */\n\n\nexports.fixEmptyGroupsInTree = fixEmptyGroupsInTree;\n\nvar getFlatTree = function getFlatTree(tree) {\n var flat = [];\n var items = {};\n var realHeight = 0;\n\n function _flatizeTree(item, path, insideCollapsed, insideLocked, insideRuleGroup, lev, info, parentType, caseId) {\n var type = item.get(\"type\");\n var collapsed = item.get(\"collapsed\");\n var id = item.get(\"id\");\n var children = item.get(\"children1\");\n var isLocked = item.getIn([\"properties\", \"isLocked\"]);\n var childrenIds = children ? children.map(function (_child, childId) {\n return childId;\n }) : null;\n var isRuleGroup = type == \"rule_group\"; // tip: count rule_group as 1 rule\n\n var isLeaf = !insideRuleGroup && (!children || isRuleGroup);\n var itemsBefore = flat.length;\n var top = realHeight;\n flat.push(id);\n if (!insideCollapsed) realHeight += 1;\n info.height = (info.height || 0) + 1;\n items[id] = {\n type: type,\n parent: path.length ? path[path.length - 1] : null,\n parentType: parentType,\n caseId: type == \"case_group\" ? id : caseId,\n isDefaultCase: type == \"case_group\" && !children,\n path: path.concat(id),\n lev: lev,\n leaf: !children,\n index: itemsBefore,\n id: id,\n children: childrenIds,\n leafsCount: 0,\n _top: itemsBefore,\n _height: itemsAfter - itemsBefore,\n top: insideCollapsed ? null : top,\n height: height,\n bottom: (insideCollapsed ? null : top) + height,\n collapsed: collapsed,\n node: item,\n isLocked: isLocked || insideLocked\n };\n\n if (children) {\n var subinfo = {};\n children.map(function (child, _childId) {\n _flatizeTree(child, path.concat(id), insideCollapsed || collapsed, insideLocked || isLocked, insideRuleGroup || isRuleGroup, lev + 1, subinfo, type, type == \"case_group\" ? id : caseId);\n });\n\n if (!collapsed) {\n info.height = (info.height || 0) + (subinfo.height || 0);\n }\n }\n\n if (caseId && isLeaf) {\n items[caseId].leafsCount++;\n }\n\n var itemsAfter = flat.length;\n var _bottom = realHeight;\n var height = info.height;\n Object.assign(items[id], {\n _height: itemsAfter - itemsBefore,\n height: height,\n bottom: (insideCollapsed ? null : top) + height\n });\n }\n\n _flatizeTree(tree, [], false, false, false, 0, {}, null, null);\n\n for (var i = 0; i < flat.length; i++) {\n var prevId = i > 0 ? flat[i - 1] : null;\n var nextId = i < flat.length - 1 ? flat[i + 1] : null;\n var item = items[flat[i]];\n item.prev = prevId;\n item.next = nextId;\n }\n\n return {\n flat: flat,\n items: items\n };\n};\n/**\n * Returns count of reorderable(!) nodes\n * @param {Immutable.Map} tree\n * @return {Integer}\n */\n\n\nexports.getFlatTree = getFlatTree;\n\nvar getTotalReordableNodesCountInTree = function getTotalReordableNodesCountInTree(tree) {\n if (!tree) return -1;\n var cnt = 0;\n\n function _processNode(item, path, lev) {\n var id, children, type;\n\n if (typeof item.get === \"function\") {\n id = item.get(\"id\");\n children = item.get(\"children1\");\n type = item.get(\"type\");\n } else {\n id = item.id;\n children = item.children1;\n type = item.type;\n }\n\n var isRuleGroup = type == \"rule_group\";\n cnt++; //tip: rules in rule-group can be reordered only inside\n\n if (children && !isRuleGroup) {\n children.map(function (child, _childId) {\n _processNode(child, path.concat(id), lev + 1);\n });\n }\n }\n\n _processNode(tree, [], 0);\n\n return cnt - 1; // -1 for root\n};\n/**\n * Returns count of rules (leafs, i.e. don't count groups)\n * @param {Immutable.Map} tree\n * @return {Integer}\n */\n\n\nexports.getTotalReordableNodesCountInTree = getTotalReordableNodesCountInTree;\n\nvar getTotalRulesCountInTree = function getTotalRulesCountInTree(tree) {\n if (!tree) return -1;\n var cnt = 0;\n\n function _processNode(item, path, lev) {\n var id, children, type;\n\n if (typeof item.get === \"function\") {\n id = item.get(\"id\");\n children = item.get(\"children1\");\n type = item.get(\"type\");\n } else {\n id = item.id;\n children = item.children1;\n type = item.type;\n }\n\n if (type == \"rule\" || type == \"rule_group\") {\n // tip: count rule_group as 1 rule\n cnt++;\n } else if (children) {\n children.map(function (child, _childId) {\n _processNode(child, path.concat(id), lev + 1);\n });\n }\n }\n\n _processNode(tree, [], 0);\n\n return cnt;\n};\n\nexports.getTotalRulesCountInTree = getTotalRulesCountInTree;\n\nvar getTreeBadFields = function getTreeBadFields(tree) {\n var badFields = [];\n\n function _processNode(item, path, lev) {\n var id = item.get(\"id\");\n var children = item.get(\"children1\");\n var valueError = item.getIn([\"properties\", \"valueError\"]);\n var field = item.getIn([\"properties\", \"field\"]);\n\n if (valueError && valueError.size > 0 && valueError.filter(function (v) {\n return v != null;\n }).size > 0) {\n badFields.push(field);\n }\n\n if (children) {\n children.map(function (child, _childId) {\n _processNode(child, path.concat(id), lev + 1);\n });\n }\n }\n\n if (tree) _processNode(tree, [], 0);\n return Array.from(new Set(badFields));\n}; // Remove fields that can be calced: \"id\", \"path\"\n// Remove empty fields: \"operatorOptions\"\n\n\nexports.getTreeBadFields = getTreeBadFields;\n\nvar getLightTree = function getLightTree(tree) {\n var children1AsArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var newTree = tree;\n\n function _processNode(item, itemId) {\n if (item.path) delete item.path;\n if (!children1AsArray && itemId) delete item.id;\n var properties = item.properties;\n\n if (properties) {\n if (properties.operatorOptions == null) delete properties.operatorOptions;\n }\n\n var children = item.children1;\n\n if (children) {\n for (var id in children) {\n _processNode(children[id], id);\n }\n\n if (children1AsArray) {\n item.children1 = Object.values(children);\n }\n }\n }\n\n _processNode(tree, null);\n\n return newTree;\n};\n\nexports.getLightTree = getLightTree;\n\nvar getSwitchValues = function getSwitchValues(tree) {\n var vals = [];\n var children = tree.get(\"children1\");\n\n if (children) {\n children.map(function (child) {\n var value = child.getIn([\"properties\", \"value\"]);\n var caseValue;\n\n if (value && value.size == 1) {\n caseValue = value.get(0);\n\n if (Array.isArray(caseValue) && caseValue.length == 0) {\n caseValue = null;\n }\n } else {\n caseValue = null;\n }\n\n vals = [].concat((0, _toConsumableArray2[\"default\"])(vals), [caseValue]);\n });\n }\n\n return vals;\n};\n\nexports.getSwitchValues = getSwitchValues;\n\nvar isEmptyTree = function isEmptyTree(tree) {\n return !tree.get(\"children1\") || tree.get(\"children1\").size == 0;\n};\n\nexports.isEmptyTree = isEmptyTree;\n\nvar hasChildren = function hasChildren(tree, path) {\n return tree.getIn(expandTreePath(path, \"children1\")).size > 0;\n};\n\nexports.hasChildren = hasChildren;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n// Had to make uuid use a constant seed so it would generate same sequence across runs. This was needed\n// so server side rendering and client side rendering yield same results (e.g. the uuid is used when rendering\n// the concunctions with their name and id)\nvar query_builder_seed = 0;\n\nvar _default = function _default() {\n // Generate a random GUID http://stackoverflow.com/a/2117523.\n var timePart = (new Date().getTime().toString(16) + \"FF\").substr(0, 11);\n var s = \"ssssssss-xxxx-4xxx-yxxx-x\".replace(/[xys]/g, function (c) {\n var r = c === \"s\" ? Math.floor(Math.random() * 16) : query_builder_seed++ & 0xf;\n var v = c === \"x\" ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n return s + timePart;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateValue = exports.validateTree = exports.validateAndFixTree = exports.createValidationMemo = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _configUtils = require(\"./configUtils\");\n\nvar _ruleUtils = require(\"../utils/ruleUtils\");\n\nvar _stuff = require(\"../utils/stuff\");\n\nvar _defaultUtils = require(\"../utils/defaultUtils\");\n\nvar _treeUtils = require(\"../utils/treeUtils\");\n\nvar _omit = _interopRequireDefault(require(\"lodash/omit\"));\n\nvar _immutable = require(\"immutable\");\n\nvar typeOf = function typeOf(v) {\n if ((0, _typeof2[\"default\"])(v) == \"object\" && v !== null && Array.isArray(v)) return \"array\";else return (0, _typeof2[\"default\"])(v);\n};\n\nvar isTypeOf = function isTypeOf(v, type) {\n if (typeOf(v) == type) return true;\n if (type == \"number\" && !isNaN(v)) return true; //can be casted\n\n return false;\n};\n\nvar createValidationMemo = function createValidationMemo() {\n var originalTree;\n var validatedTree;\n var configId;\n return function (config, tree, oldConfig) {\n if (!tree) {\n return null;\n }\n\n if (config.__configId === configId && ((0, _stuff.immutableEqual)(tree, originalTree) || (0, _stuff.immutableEqual)(tree, validatedTree))) {\n return validatedTree;\n } else {\n configId = config.__configId;\n originalTree = tree;\n validatedTree = validateAndFixTree(tree, null, config, oldConfig || config);\n return validatedTree;\n }\n };\n};\n\nexports.createValidationMemo = createValidationMemo;\n\nvar validateAndFixTree = function validateAndFixTree(newTree, _oldTree, newConfig, oldConfig) {\n var tree = validateTree(newTree, _oldTree, newConfig, oldConfig);\n tree = (0, _treeUtils.fixPathsInTree)(tree);\n return tree;\n};\n\nexports.validateAndFixTree = validateAndFixTree;\n\nvar validateTree = function validateTree(tree, _oldTree, config, oldConfig, removeEmptyGroups, removeIncompleteRules) {\n if (removeEmptyGroups === undefined) {\n removeEmptyGroups = config.settings.removeEmptyGroupsOnLoad;\n }\n\n if (removeIncompleteRules === undefined) {\n removeIncompleteRules = config.settings.removeIncompleteRulesOnLoad;\n }\n\n var c = {\n config: config,\n oldConfig: oldConfig,\n removeEmptyGroups: removeEmptyGroups,\n removeIncompleteRules: removeIncompleteRules\n };\n return validateItem(tree, [], null, {}, c);\n};\n\nexports.validateTree = validateTree;\n\nfunction validateItem(item, path, itemId, meta, c) {\n var type = item.get(\"type\");\n var children = item.get(\"children1\");\n\n if ((type === \"group\" || type === \"rule_group\" || type == \"case_group\" || type == \"switch_group\") && children && children.size) {\n return validateGroup(item, path, itemId, meta, c);\n } else if (type === \"rule\") {\n return validateRule(item, path, itemId, meta, c);\n } else {\n return item;\n }\n}\n\nfunction validateGroup(item, path, itemId, meta, c) {\n var removeEmptyGroups = c.removeEmptyGroups;\n var id = item.get(\"id\");\n var children = item.get(\"children1\");\n var oldChildren = children;\n\n if (!id && itemId) {\n id = itemId;\n item = item.set(\"id\", id);\n meta.sanitized = true;\n } //validate children\n\n\n var submeta = {};\n children = children.map(function (currentChild, childId) {\n return validateItem(currentChild, path.concat(id), childId, submeta, c);\n });\n if (removeEmptyGroups) children = children.filter(function (currentChild) {\n return currentChild != undefined;\n });\n var sanitized = submeta.sanitized || oldChildren.size != children.size;\n\n if (!children.size && removeEmptyGroups && path.length) {\n sanitized = true;\n item = undefined;\n }\n\n if (sanitized) meta.sanitized = true;\n if (sanitized && item) item = item.set(\"children1\", children);\n return item;\n}\n\nfunction validateRule(item, path, itemId, meta, c) {\n var removeIncompleteRules = c.removeIncompleteRules,\n config = c.config,\n oldConfig = c.oldConfig;\n var showErrorMessage = config.settings.showErrorMessage;\n var id = item.get(\"id\");\n var properties = item.get(\"properties\");\n var field = properties.get(\"field\") || null;\n var operator = properties.get(\"operator\") || null;\n var operatorOptions = properties.get(\"operatorOptions\");\n var valueSrc = properties.get(\"valueSrc\");\n var value = properties.get(\"value\");\n var valueError = properties.get(\"valueError\");\n var oldSerialized = {\n field: field,\n operator: operator,\n operatorOptions: operatorOptions ? operatorOptions.toJS() : {},\n valueSrc: valueSrc ? valueSrc.toJS() : null,\n value: value ? value.toJS() : null,\n valueError: valueError ? valueError.toJS() : null\n };\n\n var _wasValid = field && operator && value && !value.includes(undefined);\n\n if (!id && itemId) {\n id = itemId;\n item = item.set(\"id\", id);\n meta.sanitized = true;\n } //validate field\n\n\n var fieldDefinition = field ? (0, _configUtils.getFieldConfig)(config, field) : null;\n\n if (field && !fieldDefinition) {\n _stuff.logger.warn(\"No config for field \".concat(field));\n\n field = null;\n }\n\n if (field == null) {\n properties = [\"operator\", \"operatorOptions\", \"valueSrc\", \"value\"].reduce(function (map, key) {\n return map[\"delete\"](key);\n }, properties);\n operator = null;\n } //validate operator\n // Backward compatibility: obsolete operator range_between\n\n\n if (operator == \"range_between\" || operator == \"range_not_between\") {\n operator = operator == \"range_between\" ? \"between\" : \"not_between\";\n console.info(\"Fixed operator \".concat(properties.get(\"operator\"), \" to \").concat(operator));\n properties = properties.set(\"operator\", operator);\n }\n\n var operatorDefinition = operator ? (0, _configUtils.getOperatorConfig)(config, operator, field) : null;\n\n if (operator && !operatorDefinition) {\n console.warn(\"No config for operator \".concat(operator));\n operator = null;\n }\n\n var availOps = field ? (0, _ruleUtils.getOperatorsForField)(config, field) : [];\n\n if (!availOps) {\n console.warn(\"Type of field \".concat(field, \" is not supported\"));\n operator = null;\n } else if (operator && availOps.indexOf(operator) == -1) {\n if (operator == \"is_empty\" || operator == \"is_not_empty\") {\n // Backward compatibility: is_empty #494\n operator = operator == \"is_empty\" ? \"is_null\" : \"is_not_null\";\n console.info(\"Fixed operator \".concat(properties.get(\"operator\"), \" to \").concat(operator, \" for \").concat(field));\n properties = properties.set(\"operator\", operator);\n } else {\n console.warn(\"Operator \".concat(operator, \" is not supported for field \").concat(field));\n operator = null;\n }\n }\n\n if (operator == null) {\n properties = properties[\"delete\"](\"operatorOptions\");\n properties = properties[\"delete\"](\"valueSrc\");\n properties = properties[\"delete\"](\"value\");\n } //validate operator options\n\n\n operatorOptions = properties.get(\"operatorOptions\");\n\n var _operatorCardinality = operator ? (0, _stuff.defaultValue)(operatorDefinition.cardinality, 1) : null;\n\n if (!operator || operatorOptions && !operatorDefinition.options) {\n operatorOptions = null;\n properties = properties[\"delete\"](\"operatorOptions\");\n } else if (operator && !operatorOptions && operatorDefinition.options) {\n operatorOptions = (0, _defaultUtils.defaultOperatorOptions)(config, operator, field);\n properties = properties.set(\"operatorOptions\", operatorOptions);\n } //validate values\n\n\n valueSrc = properties.get(\"valueSrc\");\n value = properties.get(\"value\");\n var canFix = !showErrorMessage;\n var isEndValue = true;\n\n var _getNewValueForFieldO = (0, _ruleUtils.getNewValueForFieldOp)(config, oldConfig, properties, field, operator, null, canFix, isEndValue),\n newValue = _getNewValueForFieldO.newValue,\n newValueSrc = _getNewValueForFieldO.newValueSrc,\n newValueError = _getNewValueForFieldO.newValueError;\n\n value = newValue;\n valueSrc = newValueSrc;\n valueError = newValueError;\n properties = properties.set(\"value\", value);\n properties = properties.set(\"valueSrc\", valueSrc);\n\n if (showErrorMessage) {\n properties = properties.set(\"valueError\", valueError);\n }\n\n var newSerialized = {\n field: field,\n operator: operator,\n operatorOptions: operatorOptions ? operatorOptions.toJS() : {},\n valueSrc: valueSrc ? valueSrc.toJS() : null,\n value: value ? value.toJS() : null,\n valueError: valueError ? valueError.toJS() : null\n };\n var sanitized = !(0, _stuff.deepEqual)(oldSerialized, newSerialized);\n var isComplete = field && operator && value && !value.includes(undefined);\n if (sanitized) meta.sanitized = true;\n if (!isComplete && removeIncompleteRules) item = undefined;else if (sanitized) item = item.set(\"properties\", properties);\n return item;\n}\n/**\n * \n * @param {bool} canFix true is useful for func values to remove bad args\n * @param {bool} isEndValue false if value is in process of editing by user\n * @param {bool} isRawValue false is used only internally from validateFuncValue\n * @return {array} [validError, fixedValue] - if validError === null and canFix == true, fixedValue can differ from value if was fixed\n */\n\n\nvar validateValue = function validateValue(config, leftField, field, operator, value, valueType, valueSrc, asyncListValues) {\n var canFix = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var isEndValue = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n var isRawValue = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : true;\n var validError = null;\n var fixedValue = value;\n\n if (value != null) {\n if (valueSrc == \"field\") {\n var _validateFieldValue = validateFieldValue(leftField, field, value, valueSrc, valueType, asyncListValues, config, operator, isEndValue, canFix);\n\n var _validateFieldValue2 = (0, _slicedToArray2[\"default\"])(_validateFieldValue, 2);\n\n validError = _validateFieldValue2[0];\n fixedValue = _validateFieldValue2[1];\n } else if (valueSrc == \"func\") {\n var _validateFuncValue = validateFuncValue(leftField, field, value, valueSrc, valueType, asyncListValues, config, operator, isEndValue, canFix);\n\n var _validateFuncValue2 = (0, _slicedToArray2[\"default\"])(_validateFuncValue, 2);\n\n validError = _validateFuncValue2[0];\n fixedValue = _validateFuncValue2[1];\n } else if (valueSrc == \"value\" || !valueSrc) {\n var _validateNormalValue = validateNormalValue(leftField, field, value, valueSrc, valueType, asyncListValues, config, operator, isEndValue, canFix);\n\n var _validateNormalValue2 = (0, _slicedToArray2[\"default\"])(_validateNormalValue, 2);\n\n validError = _validateNormalValue2[0];\n fixedValue = _validateNormalValue2[1];\n }\n\n if (!validError) {\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n var w = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var operatorDefinition = operator ? (0, _configUtils.getOperatorConfig)(config, operator, field) : null;\n var fieldWidgetDefinition = (0, _omit[\"default\"])((0, _configUtils.getFieldWidgetConfig)(config, field, operator, w, valueSrc), [\"factory\"]);\n var rightFieldDefinition = valueSrc == \"field\" ? (0, _configUtils.getFieldConfig)(config, value) : null;\n var fieldSettings = fieldWidgetDefinition; // widget definition merged with fieldSettings\n\n var fn = fieldWidgetDefinition.validateValue;\n\n if (typeof fn == \"function\") {\n var args = [fixedValue, fieldSettings, operator, operatorDefinition];\n if (valueSrc == \"field\") args.push(rightFieldDefinition);\n var validResult = fn.apply(void 0, args);\n\n if (typeof validResult == \"boolean\") {\n if (validResult == false) validError = \"Invalid value\";\n } else {\n validError = validResult;\n }\n }\n }\n }\n\n if (isRawValue && validError) {\n console.warn(\"[RAQB validate]\", \"Field \".concat(field, \": \").concat(validError));\n }\n\n return [validError, fixedValue];\n};\n\nexports.validateValue = validateValue;\n\nvar validateValueInList = function validateValueInList(value, listValues, canFix, isEndValue, removeInvalidMultiSelectValuesOnLoad) {\n var values = _immutable.List.isList(value) ? value.toJS() : value instanceof Array ? (0, _toConsumableArray2[\"default\"])(value) : undefined;\n\n if (values) {\n var _values$reduce = values.reduce(function (_ref, val) {\n var _ref2 = (0, _slicedToArray2[\"default\"])(_ref, 2),\n goodVals = _ref2[0],\n badVals = _ref2[1];\n\n var vv = (0, _stuff.getItemInListValues)(listValues, val);\n\n if (vv == undefined) {\n return [goodVals, [].concat((0, _toConsumableArray2[\"default\"])(badVals), [val])];\n } else {\n return [[].concat((0, _toConsumableArray2[\"default\"])(goodVals), [vv.value]), badVals];\n }\n }, [[], []]),\n _values$reduce2 = (0, _slicedToArray2[\"default\"])(_values$reduce, 2),\n goodValues = _values$reduce2[0],\n badValues = _values$reduce2[1];\n\n var plural = badValues.length > 1;\n var err = badValues.length ? \"\".concat(plural ? \"Values\" : \"Value\", \" \").concat(badValues.join(\", \"), \" \").concat(plural ? \"are\" : \"is\", \" not in list of values\") : null; // always remove bad values at tree validation as user can't unselect them (except AntDesign widget)\n\n if (removeInvalidMultiSelectValuesOnLoad !== undefined) {\n canFix = removeInvalidMultiSelectValuesOnLoad;\n } else {\n canFix = canFix || isEndValue;\n }\n\n return [err, canFix ? goodValues : value];\n } else {\n var vv = (0, _stuff.getItemInListValues)(listValues, value);\n\n if (vv == undefined) {\n return [\"Value \".concat(value, \" is not in list of values\"), value];\n } else {\n value = vv.value;\n }\n\n return [null, value];\n }\n};\n/**\n* \n*/\n\n\nvar validateNormalValue = function validateNormalValue(leftField, field, value, valueSrc, valueType, asyncListValues, config) {\n var operator = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n var isEndValue = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var canFix = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n\n if (field) {\n var fieldConfig = (0, _configUtils.getFieldConfig)(config, field);\n var w = (0, _ruleUtils.getWidgetForFieldOp)(config, field, operator, valueSrc);\n var wConfig = config.widgets[w];\n var wType = wConfig.type;\n var jsType = wConfig.jsType;\n var fieldSettings = fieldConfig.fieldSettings;\n if (valueType != wType) return [\"Value should have type \".concat(wType, \", but got value of type \").concat(valueType), value];\n\n if (jsType && !isTypeOf(value, jsType) && !fieldSettings.listValues) {\n //tip: can skip tye check for listValues\n return [\"Value should have JS type \".concat(jsType, \", but got value of type \").concat((0, _typeof2[\"default\"])(value)), value];\n }\n\n if (fieldSettings) {\n var listValues = asyncListValues || fieldSettings.listValues;\n\n if (listValues && !fieldSettings.allowCustomValues) {\n return validateValueInList(value, listValues, canFix, isEndValue, config.settings.removeInvalidMultiSelectValuesOnLoad);\n }\n\n if (fieldSettings.min != null && value < fieldSettings.min) {\n return [\"Value \".concat(value, \" < min \").concat(fieldSettings.min), canFix ? fieldSettings.min : value];\n }\n\n if (fieldSettings.max != null && value > fieldSettings.max) {\n return [\"Value \".concat(value, \" > max \").concat(fieldSettings.max), canFix ? fieldSettings.max : value];\n }\n }\n }\n\n return [null, value];\n};\n/**\n* \n*/\n\n\nvar validateFieldValue = function validateFieldValue(leftField, field, value, _valueSrc, valueType, asyncListValues, config) {\n var operator = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n var isEndValue = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var canFix = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n var fieldSeparator = config.settings.fieldSeparator;\n var isFuncArg = (0, _typeof2[\"default\"])(field) == \"object\" && (field === null || field === void 0 ? void 0 : field._isFuncArg);\n var leftFieldStr = Array.isArray(leftField) ? leftField.join(fieldSeparator) : leftField;\n var rightFieldStr = Array.isArray(value) ? value.join(fieldSeparator) : value;\n var rightFieldDefinition = (0, _configUtils.getFieldConfig)(config, value);\n if (!rightFieldDefinition) return [\"Unknown field \".concat(value), value];\n if (rightFieldStr == leftFieldStr && !isFuncArg) return [\"Can't compare field \".concat(leftField, \" with itself\"), value];\n if (valueType && valueType != rightFieldDefinition.type) return [\"Field \".concat(value, \" is of type \").concat(rightFieldDefinition.type, \", but expected \").concat(valueType), value];\n return [null, value];\n};\n/**\n* \n*/\n\n\nvar validateFuncValue = function validateFuncValue(leftField, field, value, _valueSrc, valueType, asyncListValues, config) {\n var operator = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n var isEndValue = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var canFix = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n var fixedValue = value;\n\n if (value) {\n var funcKey = value.get(\"func\");\n\n if (funcKey) {\n var funcConfig = (0, _configUtils.getFuncConfig)(config, funcKey);\n\n if (funcConfig) {\n if (valueType && funcConfig.returnType != valueType) return [\"Function \".concat(funcKey, \" should return value of type \").concat(funcConfig.returnType, \", but got \").concat(valueType), value];\n\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var args = fixedValue.get(\"args\");\n var argVal = args ? args.get(argKey) : undefined;\n var fieldDef = (0, _configUtils.getFieldConfig)(config, argConfig);\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n\n if (argValue !== undefined) {\n var _validateValue = validateValue(config, leftField, fieldDef, operator, argValue, argConfig.type, argValueSrc, asyncListValues, canFix, isEndValue, false),\n _validateValue2 = (0, _slicedToArray2[\"default\"])(_validateValue, 2),\n argValidError = _validateValue2[0],\n fixedArgVal = _validateValue2[1];\n\n if (argValidError !== null) {\n if (canFix) {\n fixedValue = fixedValue.deleteIn([\"args\", argKey]);\n\n if (argConfig.defaultValue !== undefined) {\n fixedValue = fixedValue.setIn([\"args\", argKey, \"value\"], argConfig.defaultValue);\n fixedValue = fixedValue.setIn([\"args\", argKey, \"valueSrc\"], \"value\");\n }\n } else {\n return [\"Invalid value of arg \".concat(argKey, \" for func \").concat(funcKey, \": \").concat(argValidError), value];\n }\n } else if (fixedArgVal !== argValue) {\n fixedValue = fixedValue.setIn([\"args\", argKey, \"value\"], fixedArgVal);\n }\n } else if (isEndValue && argConfig.defaultValue === undefined && !canFix) {\n return [\"Value of arg \".concat(argKey, \" for func \").concat(funcKey, \" is required\"), value];\n }\n }\n } else return [\"Unknown function \".concat(funcKey), value];\n } // else it's not function value\n\n } // empty value\n\n\n return [null, fixedValue];\n};","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useTimeoutFn_1 = tslib_1.__importDefault(require(\"./useTimeoutFn\"));\nfunction useDebounce(fn, ms, deps) {\n if (ms === void 0) { ms = 0; }\n if (deps === void 0) { deps = []; }\n var _a = useTimeoutFn_1.default(fn, ms), isReady = _a[0], cancel = _a[1], reset = _a[2];\n react_1.useEffect(reset, deps);\n return [isReady, cancel];\n}\nexports.default = useDebounce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nfunction useTimeoutFn(fn, ms) {\n if (ms === void 0) { ms = 0; }\n var ready = react_1.useRef(false);\n var timeout = react_1.useRef();\n var callback = react_1.useRef(fn);\n var isReady = react_1.useCallback(function () { return ready.current; }, []);\n var set = react_1.useCallback(function () {\n ready.current = false;\n timeout.current && clearTimeout(timeout.current);\n timeout.current = setTimeout(function () {\n ready.current = true;\n callback.current();\n }, ms);\n }, [ms]);\n var clear = react_1.useCallback(function () {\n ready.current = null;\n timeout.current && clearTimeout(timeout.current);\n }, []);\n // update ref when function changes\n react_1.useEffect(function () {\n callback.current = fn;\n }, [fn]);\n // set on mount, clear on unmount\n react_1.useEffect(function () {\n set();\n return clear;\n }, [ms]);\n return [isReady, clear, set];\n}\nexports.default = useTimeoutFn;\n","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n}\n\nmodule.exports = baseRepeat;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var baseRepeat = require('./_baseRepeat'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\n\n/**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\nfunction repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n}\n\nmodule.exports = repeat;\n","var baseClamp = require('./_baseClamp'),\n baseToString = require('./_baseToString'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\n\n/**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\nfunction startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n}\n\nmodule.exports = startsWith;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"spel2js\"] = factory();\n\telse\n\t\troot[\"spel2js\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The common supertype of all AST nodes in a parsed Spring Expression Language\n * format expression.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createSpelNode(nodeType, position) {\n var node = {},\n type = nodeType || 'Abstract',\n children = [],\n parent = null,\n activeContext;\n\n node._type = type;\n\n node.getType = function () {\n return type;\n };\n node.setType = function (nodeType) {\n type = nodeType;\n };\n\n node.getChildren = function () {\n return children;\n };\n node.addChild = function (childNode) {\n if (!childNode) {\n // See OpMinus and OpPlus: right node can be null for unary mode\n return;\n }\n if (!childNode.setParent) {\n throw {\n name: 'Error',\n message: 'Trying to add a child which is not a node: ' + JSON.stringify(childNode)\n };\n }\n childNode.setParent(node);\n children.push(childNode);\n };\n\n node.getParent = function () {\n return parent;\n };\n node.setParent = function (parentNode) {\n parent = parentNode;\n };\n\n node.getContext = function (state) {\n return activeContext || state.activeContext.peek();\n };\n node.setContext = function (nodeContext) {\n activeContext = nodeContext;\n };\n\n node.getStartPosition = function () {\n return position >> 16;\n };\n\n node.getEndPosition = function () {\n return position & 0xffff;\n };\n\n //must override\n node.getValue = function () {\n throw {\n name: 'MethodNotImplementedException',\n message: 'SpelNode#getValue() must be overridden.'\n };\n };\n\n node.toString = function () {\n var s = 'Kind: ' + node.getType();\n //s += ', Value: ' + node.getValue();\n s += ', Children: [';\n for (var i = 0, l = node.getChildren().length; i < l; i += 1) {\n s += '{' + node.getChildren()[i] + '}, ';\n }\n s += ']';\n return s;\n };\n\n //constructor\n if (position === 0) {\n throw {\n name: 'Error',\n message: 'Position cannot be 0'\n };\n }\n\n for (var _len = arguments.length, operands = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n operands[_key - 2] = arguments[_key];\n }\n\n if (operands) {\n operands.forEach(function (operand) {\n node.addChild(operand);\n });\n }\n\n return node;\n}\n\nvar SpelNode = exports.SpelNode = {\n create: createSpelNode\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Stack = Stack;\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction Stack(startingElements) {\n this.elements = startingElements || [];\n}\n\nStack.prototype.push = function (el) {\n this.elements.push(el);\n return el;\n};\n\nStack.prototype.pop = function () {\n return this.elements.pop();\n};\n\nStack.prototype.peek = function () {\n return this.elements[this.elements.length - 1];\n};\n\nStack.prototype.empty = function () {\n return this.elements.length > 0;\n};\n\nStack.prototype.search = function (el) {\n return this.elements.length - this.elements.indexOf(el);\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nvar types = {\n\n LITERAL_INT: 1, //tested\n\n LITERAL_LONG: 2, //tested\n\n LITERAL_HEXINT: 3, //tested\n\n LITERAL_HEXLONG: 4, //tested\n\n LITERAL_STRING: 5, //tested\n\n LITERAL_REAL: 6, //tested\n\n LITERAL_REAL_FLOAT: 7, //tested\n\n LPAREN: '(', //tested\n\n RPAREN: ')', //tested\n\n COMMA: ',', //tested\n\n IDENTIFIER: 0, //tested\n\n COLON: ':', //tested\n\n HASH: '#', //tested\n\n RSQUARE: ']', //tested\n\n LSQUARE: '[', //tested\n\n LCURLY: '{', //tested\n\n RCURLY: '}', //tested\n\n DOT: '.', //tested\n\n PLUS: '+', //tested\n\n STAR: '*', //tested\n\n MINUS: '-', //tested\n\n SELECT_FIRST: '^[', //tested\n\n SELECT_LAST: '$[', //tested\n\n QMARK: '?', //tested\n\n PROJECT: '![', //tested\n\n DIV: '/', //tested\n\n GE: '>=', //tested\n\n GT: '>', //tested\n\n LE: '<=', //tested\n\n LT: '<', //tested\n\n EQ: '==', //tested\n\n NE: '!=', //tested\n\n MOD: '%', //tested\n\n NOT: '!', //tested\n\n ASSIGN: '=', //tested\n\n INSTANCEOF: 'instanceof', //test fails\n\n MATCHES: 'matches', //test fails\n\n BETWEEN: 'between', //test fails\n\n SELECT: '?[', //tested\n\n POWER: '^', //tested\n\n ELVIS: '?:', //tested\n\n SAFE_NAVI: '?.', //tested\n\n BEAN_REF: '@', //tested\n\n SYMBOLIC_OR: '||', //tested\n\n SYMBOLIC_AND: '&&', //tested\n\n INC: '++', //tested\n\n DEC: '--' //tested\n};\n\nfunction TokenKind(type) {\n this.type = type;\n this.tokenChars = types[type];\n this._hasPayload = typeof types[type] !== 'string';\n if (typeof types[type] === 'number') {\n this._ordinal = types[type];\n }\n}\n\n//create enum\nfor (var t in types) {\n if (types.hasOwnProperty(t)) {\n TokenKind[t] = new TokenKind(t);\n }\n}\n\nTokenKind.prototype.toString = function () {\n return this.type + (this.tokenChars.length !== 0 ? '(' + this.tokenChars + ')' : '');\n};\n\nTokenKind.prototype.getLength = function () {\n return this.tokenChars.length;\n};\n\nTokenKind.prototype.hasPayload = function () {\n return this._hasPayload;\n};\n\nTokenKind.prototype.valueOf = function (id) {\n for (var t in types) {\n if (types.hasOwnProperty(t) && types[t] === id) {\n return TokenKind[t];\n }\n }\n};\n\nTokenKind.prototype.ordinal = function () {\n return this._ordinal;\n};\n\nexports.TokenKind = TokenKind;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StandardContext = exports.SpelExpressionEvaluator = undefined;\n\nvar _SpelExpressionEvaluator = __webpack_require__(4);\n\nvar _StandardContext = __webpack_require__(50);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nexports.SpelExpressionEvaluator = _SpelExpressionEvaluator.SpelExpressionEvaluator;\nexports.StandardContext = _StandardContext.StandardContext;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SpelExpressionEvaluator = undefined;\n\nvar _SpelExpressionParser = __webpack_require__(5);\n\nvar _Stack = __webpack_require__(1);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nvar spelExpressionEvaluator = {};\n\nfunction evalCompiled(compiledExpression, context, locals) {\n var activeContext = new _Stack.Stack(),\n state;\n\n if (!context) {\n context = {};\n }\n\n activeContext.push(context);\n\n state = {\n rootContext: context,\n activeContext: activeContext,\n locals: locals\n };\n return compiledExpression.getValue(state);\n}\n\nspelExpressionEvaluator.compile = function (expression) {\n var compiledExpression = (0, _SpelExpressionParser.SpelExpressionParser)().parse(expression);\n return {\n eval: function _eval(context, locals) {\n return evalCompiled(compiledExpression, context, locals);\n },\n _compiledExpression: compiledExpression\n };\n};\n\nspelExpressionEvaluator.eval = function (expression, context, locals) {\n return spelExpressionEvaluator.compile(expression).eval(context, locals);\n};\n\nexports.SpelExpressionEvaluator = spelExpressionEvaluator;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SpelExpressionParser = undefined;\n\nvar _TokenKind = __webpack_require__(2);\n\nvar _Tokenizer = __webpack_require__(6);\n\nvar _BooleanLiteral = __webpack_require__(8);\n\nvar _NumberLiteral = __webpack_require__(9);\n\nvar _StringLiteral = __webpack_require__(10);\n\nvar _NullLiteral = __webpack_require__(11);\n\nvar _FunctionReference = __webpack_require__(12);\n\nvar _MethodReference = __webpack_require__(13);\n\nvar _PropertyReference = __webpack_require__(14);\n\nvar _VariableReference = __webpack_require__(15);\n\nvar _CompoundExpression = __webpack_require__(16);\n\nvar _Indexer = __webpack_require__(17);\n\nvar _Assign = __webpack_require__(18);\n\nvar _OpEQ = __webpack_require__(19);\n\nvar _OpNE = __webpack_require__(20);\n\nvar _OpGE = __webpack_require__(21);\n\nvar _OpGT = __webpack_require__(22);\n\nvar _OpLE = __webpack_require__(23);\n\nvar _OpLT = __webpack_require__(24);\n\nvar _OpPlus = __webpack_require__(25);\n\nvar _OpMinus = __webpack_require__(26);\n\nvar _OpMultiply = __webpack_require__(27);\n\nvar _OpDivide = __webpack_require__(28);\n\nvar _OpModulus = __webpack_require__(29);\n\nvar _OpPower = __webpack_require__(30);\n\nvar _OpInc = __webpack_require__(31);\n\nvar _OpDec = __webpack_require__(32);\n\nvar _OpNot = __webpack_require__(33);\n\nvar _OpAnd = __webpack_require__(34);\n\nvar _OpOr = __webpack_require__(35);\n\nvar _OpMatches = __webpack_require__(36);\n\nvar _Ternary = __webpack_require__(37);\n\nvar _Elvis = __webpack_require__(38);\n\nvar _InlineList = __webpack_require__(39);\n\nvar _InlineMap = __webpack_require__(40);\n\nvar _Selection = __webpack_require__(41);\n\nvar _Projection = __webpack_require__(42);\n\nvar _OpInstanceof = __webpack_require__(43);\n\nvar _OpBetween = __webpack_require__(44);\n\nvar _TypeReference = __webpack_require__(45);\n\nvar _BeanReference = __webpack_require__(46);\n\nvar _Identifier = __webpack_require__(47);\n\nvar _QualifiedIdentifier = __webpack_require__(48);\n\nvar _ConstructorReference = __webpack_require__(49);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n *\n */\n\nvar SpelExpressionParser = exports.SpelExpressionParser = function SpelExpressionParser() {\n\n var VALID_QUALIFIED_ID_PATTERN = new RegExp('[\\\\p{L}\\\\p{N}_$]+');\n\n var configuration;\n\n // For rules that build nodes, they are stacked here for return\n var constructedNodes = [];\n\n // The expression being parsed\n var expressionString;\n\n // The token stream constructed from that expression string\n var tokenStream;\n\n // length of a populated token stream\n var tokenStreamLength;\n\n // Current location in the token stream when processing tokens\n var tokenStreamPointer;\n\n /**\n * Create a parser with some configured behavior.\n * @param config custom configuration options\n */\n function setConfiguration(config) {\n configuration = config;\n }\n\n function parse(expression, context) {\n try {\n expressionString = expression;\n tokenStream = _Tokenizer.Tokenizer.tokenize(expression);\n tokenStreamLength = tokenStream.length;\n tokenStreamPointer = 0;\n constructedNodes = [];\n var ast = eatExpression();\n if (moreTokens()) {\n raiseInternalException(peekToken().startPos, 'MORE_INPUT', nextToken().toString());\n }\n //Assert.isTrue(this.constructedNodes.isEmpty());\n return ast;\n } catch (e) {\n throw e.message;\n }\n }\n\n //\texpression\n // : logicalOrExpression\n // ( (ASSIGN^ logicalOrExpression)\n //\t | (DEFAULT^ logicalOrExpression)\n //\t | (QMARK^ expression COLON! expression)\n // | (ELVIS^ expression))?;\n function eatExpression() {\n var expr = eatLogicalOrExpression();\n if (moreTokens()) {\n var token = peekToken();\n if (token.getKind() === _TokenKind.TokenKind.ASSIGN) {\n // a=b\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));\n }\n nextToken();\n var assignedValue = eatLogicalOrExpression();\n return _Assign.Assign.create(toPosToken(token), expr, assignedValue);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.ELVIS) {\n // a?:b (a if it isn't null, otherwise b)\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 2));\n }\n nextToken(); // elvis has left the building\n var valueIfNull = eatExpression();\n if (valueIfNull === null) {\n valueIfNull = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos + 1, token.endPos + 1));\n }\n return _Elvis.Elvis.create(toPosToken(token), expr, valueIfNull);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.QMARK) {\n // a?b:c\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));\n }\n nextToken();\n var ifTrueExprValue = eatExpression();\n eatToken(_TokenKind.TokenKind.COLON);\n var ifFalseExprValue = eatExpression();\n return _Ternary.Ternary.create(toPosToken(token), expr, ifTrueExprValue, ifFalseExprValue);\n }\n }\n return expr;\n }\n\n //logicalOrExpression : logicalAndExpression (OR^ logicalAndExpression)*;\n function eatLogicalOrExpression() {\n var expr = eatLogicalAndExpression();\n while (peekIdentifierToken('or') || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_OR)) {\n var token = nextToken(); //consume OR\n var rhExpr = eatLogicalAndExpression();\n checkOperands(token, expr, rhExpr);\n expr = _OpOr.OpOr.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n // logicalAndExpression : relationalExpression (AND^ relationalExpression)*;\n function eatLogicalAndExpression() {\n var expr = eatRelationalExpression();\n while (peekIdentifierToken('and') || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_AND)) {\n var token = nextToken(); // consume 'AND'\n var rhExpr = eatRelationalExpression();\n checkOperands(token, expr, rhExpr);\n expr = _OpAnd.OpAnd.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n // relationalExpression : sumExpression (relationalOperator^ sumExpression)?;\n function eatRelationalExpression() {\n var expr = eatSumExpression();\n var relationalOperatorToken = maybeEatRelationalOperator();\n if (relationalOperatorToken !== null) {\n var token = nextToken(); // consume relational operator token\n var rhExpr = eatSumExpression();\n checkOperands(token, expr, rhExpr);\n var tk = relationalOperatorToken.kind;\n\n if (relationalOperatorToken.isNumericRelationalOperator()) {\n var pos = toPosToken(token);\n if (tk === _TokenKind.TokenKind.GT) {\n return _OpGT.OpGT.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.LT) {\n return _OpLT.OpLT.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.LE) {\n return _OpLE.OpLE.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.GE) {\n return _OpGE.OpGE.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.EQ) {\n return _OpEQ.OpEQ.create(pos, expr, rhExpr);\n }\n //Assert.isTrue(tk === TokenKind.NE);\n return _OpNE.OpNE.create(pos, expr, rhExpr);\n }\n\n if (tk === _TokenKind.TokenKind.INSTANCEOF) {\n return _OpInstanceof.OpInstanceof.create(toPosToken(token), expr, rhExpr);\n }\n\n if (tk === _TokenKind.TokenKind.MATCHES) {\n return _OpMatches.OpMatches.create(toPosToken(token), expr, rhExpr);\n }\n\n //Assert.isTrue(tk === TokenKind.BETWEEN);\n return _OpBetween.OpBetween.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n //sumExpression: productExpression ( (PLUS^ | MINUS^) productExpression)*;\n function eatSumExpression() {\n var expr = eatProductExpression();\n while (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.INC)) {\n var token = nextToken(); //consume PLUS or MINUS or INC\n var rhExpr = eatProductExpression();\n checkRightOperand(token, rhExpr);\n if (token.getKind() === _TokenKind.TokenKind.PLUS) {\n expr = _OpPlus.OpPlus.create(toPosToken(token), expr, rhExpr);\n } else if (token.getKind() === _TokenKind.TokenKind.MINUS) {\n expr = _OpMinus.OpMinus.create(toPosToken(token), expr, rhExpr);\n }\n }\n return expr;\n }\n\n // productExpression: powerExpr ((STAR^ | DIV^| MOD^) powerExpr)* ;\n function eatProductExpression() {\n var expr = eatPowerIncDecExpression();\n while (peekTokenAny(_TokenKind.TokenKind.STAR, _TokenKind.TokenKind.DIV, _TokenKind.TokenKind.MOD)) {\n var token = nextToken(); // consume STAR/DIV/MOD\n var rhExpr = eatPowerIncDecExpression();\n checkOperands(token, expr, rhExpr);\n if (token.getKind() === _TokenKind.TokenKind.STAR) {\n expr = _OpMultiply.OpMultiply.create(toPosToken(token), expr, rhExpr);\n } else if (token.getKind() === _TokenKind.TokenKind.DIV) {\n expr = _OpDivide.OpDivide.create(toPosToken(token), expr, rhExpr);\n } else {\n //Assert.isTrue(token.getKind() === TokenKind.MOD);\n expr = _OpModulus.OpModulus.create(toPosToken(token), expr, rhExpr);\n }\n }\n return expr;\n }\n\n // powerExpr : unaryExpression (POWER^ unaryExpression)? (INC || DEC) ;\n function eatPowerIncDecExpression() {\n var expr = eatUnaryExpression(),\n token;\n\n if (peekTokenOne(_TokenKind.TokenKind.POWER)) {\n token = nextToken(); //consume POWER\n var rhExpr = eatUnaryExpression();\n checkRightOperand(token, rhExpr);\n return _OpPower.OpPower.create(toPosToken(token), expr, rhExpr);\n }\n\n if (expr !== null && peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {\n token = nextToken(); //consume INC/DEC\n if (token.getKind() === _TokenKind.TokenKind.INC) {\n return _OpInc.OpInc.create(toPosToken(token), true, expr);\n }\n return _OpDec.OpDec.create(toPosToken(token), true, expr);\n }\n\n return expr;\n }\n\n // unaryExpression: (PLUS^ | MINUS^ | BANG^ | INC^ | DEC^) unaryExpression | primaryExpression ;\n function eatUnaryExpression() {\n var token, expr;\n\n if (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.NOT)) {\n token = nextToken();\n expr = eatUnaryExpression();\n if (token.getKind() === _TokenKind.TokenKind.NOT) {\n return _OpNot.OpNot.create(toPosToken(token), expr);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.PLUS) {\n return _OpPlus.OpPlus.create(toPosToken(token), expr);\n }\n //Assert.isTrue(token.getKind() === TokenKind.MINUS);\n return _OpMinus.OpMinus.create(toPosToken(token), expr);\n }\n if (peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {\n token = nextToken();\n expr = eatUnaryExpression();\n if (token.getKind() === _TokenKind.TokenKind.INC) {\n return _OpInc.OpInc.create(toPosToken(token), false, expr);\n }\n return _OpDec.OpDec.create(toPosToken(token), false, expr);\n }\n\n return eatPrimaryExpression();\n }\n\n // primaryExpression : startNode (node)? -> ^(EXPRESSION startNode (node)?);\n function eatPrimaryExpression() {\n var nodes = [];\n var start = eatStartNode(); // always a start node\n nodes.push(start);\n while (maybeEatNode()) {\n nodes.push(pop());\n }\n if (nodes.length === 1) {\n return nodes[0];\n }\n return _CompoundExpression.CompoundExpression.create(toPosBounds(start.getStartPosition(), nodes[nodes.length - 1].getEndPosition()), nodes);\n }\n\n // node : ((DOT dottedNode) | (SAFE_NAVI dottedNode) | nonDottedNode)+;\n function maybeEatNode() {\n var expr = null;\n if (peekTokenAny(_TokenKind.TokenKind.DOT, _TokenKind.TokenKind.SAFE_NAVI)) {\n expr = eatDottedNode();\n } else {\n expr = maybeEatNonDottedNode();\n }\n\n if (expr === null) {\n return false;\n } else {\n push(expr);\n return true;\n }\n }\n\n // nonDottedNode: indexer;\n function maybeEatNonDottedNode() {\n if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {\n if (maybeEatIndexer()) {\n return pop();\n }\n }\n return null;\n }\n\n //dottedNode\n // : ((methodOrProperty\n //\t | functionOrVar\n // | projection\n // | selection\n // | firstSelection\n // | lastSelection\n // ))\n //\t;\n function eatDottedNode() {\n var token = nextToken(); // it was a '.' or a '?.'\n var nullSafeNavigation = token.getKind() === _TokenKind.TokenKind.SAFE_NAVI;\n if (maybeEatMethodOrProperty(nullSafeNavigation) || maybeEatFunctionOrVar() || maybeEatProjection(nullSafeNavigation) || maybeEatSelection(nullSafeNavigation)) {\n return pop();\n }\n if (peekToken() === null) {\n // unexpectedly ran out of data\n raiseInternalException(token.startPos, 'OOD');\n } else {\n raiseInternalException(token.startPos, 'UNEXPECTED_DATA_AFTER_DOT', toString(peekToken()));\n }\n return null;\n }\n\n // functionOrVar\n // : (POUND ID LPAREN) => function\n // | var\n //\n // function : POUND id=ID methodArgs -> ^(FUNCTIONREF[$id] methodArgs);\n // var : POUND id=ID -> ^(VARIABLEREF[$id]);\n function maybeEatFunctionOrVar() {\n if (!peekTokenOne(_TokenKind.TokenKind.HASH)) {\n return false;\n }\n var token = nextToken();\n var functionOrVariableName = eatToken(_TokenKind.TokenKind.IDENTIFIER);\n var args = maybeEatMethodArgs();\n if (args === null) {\n push(_VariableReference.VariableReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos)));\n return true;\n }\n\n push(_FunctionReference.FunctionReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos), args));\n return true;\n }\n\n // methodArgs : LPAREN! (argument (COMMA! argument)* (COMMA!)?)? RPAREN!;\n function maybeEatMethodArgs() {\n if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n return null;\n }\n var args = [];\n consumeArguments(args);\n eatToken(_TokenKind.TokenKind.RPAREN);\n return args;\n }\n\n function eatConstructorArgs(accumulatedArguments) {\n if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n raiseInternalException(toPosToken(peekToken()), 'MISSING_CONSTRUCTOR_ARGS');\n }\n consumeArguments(accumulatedArguments);\n eatToken(_TokenKind.TokenKind.RPAREN);\n }\n\n /**\n * Used for consuming arguments for either a method or a constructor call\n */\n function consumeArguments(accumulatedArguments) {\n var pos = peekToken().startPos;\n var next;\n do {\n nextToken(); // consume ( (first time through) or comma (subsequent times)\n var token = peekToken();\n if (token === null) {\n raiseInternalException(pos, 'RUN_OUT_OF_ARGUMENTS');\n }\n if (token.getKind() !== _TokenKind.TokenKind.RPAREN) {\n accumulatedArguments.push(eatExpression());\n }\n next = peekToken();\n } while (next !== null && next.kind === _TokenKind.TokenKind.COMMA);\n\n if (next === null) {\n raiseInternalException(pos, 'RUN_OUT_OF_ARGUMENTS');\n }\n }\n\n function positionOf(token) {\n if (token === null) {\n // if null assume the problem is because the right token was\n // not found at the end of the expression\n return expressionString.length;\n }\n return token.startPos;\n }\n\n //startNode\n // : parenExpr | literal\n //\t | type\n //\t | methodOrProperty\n //\t | functionOrVar\n //\t | projection\n //\t | selection\n //\t | firstSelection\n //\t | lastSelection\n //\t | indexer\n //\t | constructor\n function eatStartNode() {\n if (maybeEatLiteral()) {\n return pop();\n } else if (maybeEatParenExpression()) {\n return pop();\n } else if (maybeEatTypeReference() || maybeEatNullReference() || maybeEatConstructorReference() || maybeEatMethodOrProperty(false) || maybeEatFunctionOrVar()) {\n return pop();\n } else if (maybeEatBeanReference()) {\n return pop();\n } else if (maybeEatProjection(false) || maybeEatSelection(false) || maybeEatIndexer()) {\n return pop();\n } else if (maybeEatInlineListOrMap()) {\n return pop();\n } else {\n return null;\n }\n }\n\n // parse: @beanname @'bean.name'\n // quoted if dotted\n function maybeEatBeanReference() {\n if (peekTokenOne(_TokenKind.TokenKind.BEAN_REF)) {\n var beanRefToken = nextToken();\n var beanNameToken = null;\n var beanName = null;\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n beanNameToken = eatToken(_TokenKind.TokenKind.IDENTIFIER);\n beanName = beanNameToken.data;\n } else if (peekTokenOne(_TokenKind.TokenKind.LITERAL_STRING)) {\n beanNameToken = eatToken(_TokenKind.TokenKind.LITERAL_STRING);\n beanName = beanNameToken.stringValue();\n beanName = beanName.substring(1, beanName.length() - 1);\n } else {\n raiseInternalException(beanRefToken.startPos, 'INVALID_BEAN_REFERENCE');\n }\n\n var beanReference = _BeanReference.BeanReference.create(toPosToken(beanNameToken), beanName);\n push(beanReference);\n return true;\n }\n return false;\n }\n\n function maybeEatTypeReference() {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var typeName = peekToken();\n if (typeName.stringValue() !== 'T') {\n return false;\n }\n // It looks like a type reference but is T being used as a map key?\n var token = nextToken();\n if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n // looks like 'T]' (T is map key)\n push(_PropertyReference.PropertyReference.create(token.stringValue(), toPosToken(token)));\n return true;\n }\n eatToken(_TokenKind.TokenKind.LPAREN);\n var node = eatPossiblyQualifiedId();\n // dotted qualified id\n // Are there array dimensions?\n var dims = 0;\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n eatToken(_TokenKind.TokenKind.RSQUARE);\n dims++;\n }\n eatToken(_TokenKind.TokenKind.RPAREN);\n push(_TypeReference.TypeReference.create(toPosToken(typeName), node, dims));\n return true;\n }\n return false;\n }\n\n function maybeEatNullReference() {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var nullToken = peekToken();\n if (nullToken.stringValue().toLowerCase() !== 'null') {\n return false;\n }\n nextToken();\n push(_NullLiteral.NullLiteral.create(toPosToken(nullToken)));\n return true;\n }\n return false;\n }\n\n //projection: PROJECT^ expression RCURLY!;\n function maybeEatProjection(nullSafeNavigation) {\n var token = peekToken();\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.PROJECT, true)) {\n return false;\n }\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RSQUARE);\n push(_Projection.Projection.create(nullSafeNavigation, toPosToken(token), expr));\n return true;\n }\n\n // list = LCURLY (element (COMMA element)*) RCURLY\n // map = LCURLY (key ':' value (COMMA key ':' value)*) RCURLY\n function maybeEatInlineListOrMap() {\n var token = peekToken(),\n listElements = [];\n\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LCURLY, true)) {\n return false;\n }\n var expr = null;\n var closingCurly = peekToken();\n if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.RCURLY, true)) {\n // empty list '{}'\n expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos));\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n // empty map '{:}'\n expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos));\n } else {\n var firstExpression = eatExpression();\n // Next is either:\n // '}' - end of list\n // ',' - more expressions in this list\n // ':' - this is a map!\n\n if (peekTokenOne(_TokenKind.TokenKind.RCURLY)) {\n // list with one item in it\n listElements.push(firstExpression);\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos), listElements);\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {\n // multi item list\n listElements.push(firstExpression);\n do {\n listElements.push(eatExpression());\n } while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true));\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineList.InlineList.create(toPosToken(token.startPos, closingCurly.endPos), listElements);\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {\n // map!\n var mapElements = [];\n mapElements.push(firstExpression);\n mapElements.push(eatExpression());\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {\n mapElements.push(eatExpression());\n eatToken(_TokenKind.TokenKind.COLON);\n mapElements.push(eatExpression());\n }\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos), mapElements);\n } else {\n raiseInternalException(token.startPos, 'OOD');\n }\n }\n push(expr);\n return true;\n }\n\n function maybeEatIndexer() {\n var token = peekToken();\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n return false;\n }\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RSQUARE);\n push(_Indexer.Indexer.create(toPosToken(token), expr));\n return true;\n }\n\n function maybeEatSelection(nullSafeNavigation) {\n var token = peekToken();\n if (!peekSelectToken()) {\n return false;\n }\n nextToken();\n var expr = eatExpression();\n if (expr === null) {\n raiseInternalException(toPosToken(token), 'MISSING_SELECTION_EXPRESSION');\n }\n eatToken(_TokenKind.TokenKind.RSQUARE);\n if (token.getKind() === _TokenKind.TokenKind.SELECT_FIRST) {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.FIRST, toPosToken(token), expr));\n } else if (token.getKind() === _TokenKind.TokenKind.SELECT_LAST) {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.LAST, toPosToken(token), expr));\n } else {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.ALL, toPosToken(token), expr));\n }\n return true;\n }\n\n /**\n * Eat an identifier, possibly qualified (meaning that it is dotted).\n * TODO AndyC Could create complete identifiers (a.b.c) here rather than a sequence of them? (a, b, c)\n */\n function eatPossiblyQualifiedId() {\n var qualifiedIdPieces = [];\n var node = peekToken();\n while (isValidQualifiedId(node)) {\n nextToken();\n if (node.kind !== _TokenKind.TokenKind.DOT) {\n qualifiedIdPieces.push(_Identifier.Identifier.create(node.stringValue(), toPosToken(node)));\n }\n node = peekToken();\n }\n if (!qualifiedIdPieces.length) {\n if (node === null) {\n raiseInternalException(expressionString.length(), 'OOD');\n }\n raiseInternalException(node.startPos, 'NOT_EXPECTED_TOKEN', 'qualified ID', node.getKind().toString().toLowerCase());\n }\n var pos = toPosBounds(qualifiedIdPieces[0].getStartPosition(), qualifiedIdPieces[qualifiedIdPieces.length - 1].getEndPosition());\n return _QualifiedIdentifier.QualifiedIdentifier.create(pos, qualifiedIdPieces);\n }\n\n function isValidQualifiedId(node) {\n if (node === null || node.kind === _TokenKind.TokenKind.LITERAL_STRING) {\n return false;\n }\n if (node.kind === _TokenKind.TokenKind.DOT || node.kind === _TokenKind.TokenKind.IDENTIFIER) {\n return true;\n }\n var value = node.stringValue();\n return value && value.length && VALID_QUALIFIED_ID_PATTERN.test(value);\n }\n\n // This is complicated due to the support for dollars in identifiers. Dollars are normally separate tokens but\n // there we want to combine a series of identifiers and dollars into a single identifier\n function maybeEatMethodOrProperty(nullSafeNavigation) {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var methodOrPropertyName = nextToken();\n var args = maybeEatMethodArgs();\n if (args === null) {\n // property\n push(_PropertyReference.PropertyReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName)));\n return true;\n }\n // methodreference\n push(_MethodReference.MethodReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName), args));\n // TODO what is the end position for a method reference? the name or the last arg?\n return true;\n }\n return false;\n }\n\n //constructor\n //:\t('new' qualifiedId LPAREN) => 'new' qualifiedId ctorArgs -> ^(CONSTRUCTOR qualifiedId ctorArgs)\n function maybeEatConstructorReference() {\n if (peekIdentifierToken('new')) {\n var newToken = nextToken();\n // It looks like a constructor reference but is NEW being used as a map key?\n if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n // looks like 'NEW]' (so NEW used as map key)\n push(_PropertyReference.PropertyReference.create(newToken.stringValue(), toPosToken(newToken)));\n return true;\n }\n var possiblyQualifiedConstructorName = eatPossiblyQualifiedId();\n var nodes = [];\n nodes.push(possiblyQualifiedConstructorName);\n if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {\n // array initializer\n var dimensions = [];\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n if (!peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n dimensions.push(eatExpression());\n } else {\n dimensions.push(null);\n }\n eatToken(_TokenKind.TokenKind.RSQUARE);\n }\n if (maybeEatInlineListOrMap()) {\n nodes.push(pop());\n }\n push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), dimensions, nodes));\n } else {\n // regular constructor invocation\n eatConstructorArgs(nodes);\n // TODO correct end position?\n push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), nodes));\n }\n return true;\n }\n return false;\n }\n\n function push(newNode) {\n constructedNodes.push(newNode);\n }\n\n function pop() {\n return constructedNodes.pop();\n }\n\n //\tliteral\n // : INTEGER_LITERAL\n //\t| boolLiteral\n //\t| STRING_LITERAL\n // | HEXADECIMAL_INTEGER_LITERAL\n // | REAL_LITERAL\n //\t| DQ_STRING_LITERAL\n //\t| NULL_LITERAL\n function maybeEatLiteral() {\n var token = peekToken();\n if (token === null) {\n return false;\n }\n if (token.getKind() === _TokenKind.TokenKind.LITERAL_INT || token.getKind() === _TokenKind.TokenKind.LITERAL_LONG) {\n push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 10), toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_REAL || token.getKind() === _TokenKind.TokenKind.LITERAL_REAL_FLOAT) {\n push(_NumberLiteral.NumberLiteral.create(parseFloat(token.stringValue()), toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_HEXINT || token.getKind() === _TokenKind.TokenKind.LITERAL_HEXLONG) {\n push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 16), toPosToken(token)));\n } else if (peekIdentifierToken('true')) {\n push(_BooleanLiteral.BooleanLiteral.create(true, toPosToken(token)));\n } else if (peekIdentifierToken('false')) {\n push(_BooleanLiteral.BooleanLiteral.create(false, toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_STRING) {\n push(_StringLiteral.StringLiteral.create(token.stringValue(), toPosToken(token)));\n } else {\n return false;\n }\n nextToken();\n return true;\n }\n\n //parenExpr : LPAREN! expression RPAREN!;\n function maybeEatParenExpression() {\n if (peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n nextToken();\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RPAREN);\n push(expr);\n return true;\n } else {\n return false;\n }\n }\n\n // relationalOperator\n // : EQUAL | NOT_EQUAL | LESS_THAN | LESS_THAN_OR_EQUAL | GREATER_THAN\n // | GREATER_THAN_OR_EQUAL | INSTANCEOF | BETWEEN | MATCHES\n function maybeEatRelationalOperator() {\n var token = peekToken();\n if (token === null) {\n return null;\n }\n if (token.isNumericRelationalOperator()) {\n return token;\n }\n if (token.isIdentifier()) {\n var idString = token.stringValue();\n if (idString.toLowerCase() === 'instanceof') {\n return token.asInstanceOfToken();\n }\n if (idString.toLowerCase() === 'matches') {\n return token.asMatchesToken();\n }\n if (idString.toLowerCase() === 'between') {\n return token.asBetweenToken();\n }\n }\n return null;\n }\n\n function eatToken(expectedKind) {\n var token = nextToken();\n if (token === null) {\n raiseInternalException(expressionString.length, 'OOD');\n }\n if (token.getKind() !== expectedKind) {\n raiseInternalException(token.startPos, 'NOT_EXPECTED_TOKEN', expectedKind.toString().toLowerCase(), token.getKind().toString().toLowerCase());\n }\n return token;\n }\n\n function peekTokenOne(desiredTokenKind) {\n return peekTokenConsumeIfMatched(desiredTokenKind, false);\n }\n\n function peekTokenConsumeIfMatched(desiredTokenKind, consumeIfMatched) {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n if (token.getKind() === desiredTokenKind) {\n if (consumeIfMatched) {\n tokenStreamPointer++;\n }\n return true;\n }\n\n if (desiredTokenKind === _TokenKind.TokenKind.IDENTIFIER) {\n // might be one of the textual forms of the operators (e.g. NE for !== ) - in which case we can treat it as an identifier\n // The list is represented here: Tokenizer.alternativeOperatorNames and those ones are in order in the TokenKind enum\n if (token.getKind().ordinal() >= _TokenKind.TokenKind.DIV.ordinal() && token.getKind().ordinal() <= _TokenKind.TokenKind.NOT.ordinal() && token.data !== null) {\n // if token.data were null, we'd know it wasn'token the textual form, it was the symbol form\n return true;\n }\n }\n return false;\n }\n\n function peekTokenAny() {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n var args = Array.prototype.slice.call(arguments);\n for (var i = 0, l = args.length; i < l; i += 1) {\n if (token.getKind() === args[i]) {\n return true;\n }\n }\n return false;\n }\n\n function peekIdentifierToken(identifierString) {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n return token.getKind() === _TokenKind.TokenKind.IDENTIFIER && token.stringValue().toLowerCase() === identifierString.toLowerCase();\n }\n\n function peekSelectToken() {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n return token.getKind() === _TokenKind.TokenKind.SELECT || token.getKind() === _TokenKind.TokenKind.SELECT_FIRST || token.getKind() === _TokenKind.TokenKind.SELECT_LAST;\n }\n\n function moreTokens() {\n return tokenStreamPointer < tokenStream.length;\n }\n\n function nextToken() {\n if (tokenStreamPointer >= tokenStreamLength) {\n return null;\n }\n return tokenStream[tokenStreamPointer++];\n }\n\n function peekToken() {\n if (tokenStreamPointer >= tokenStreamLength) {\n return null;\n }\n return tokenStream[tokenStreamPointer];\n }\n\n function raiseInternalException(pos, message, expected, actual) {\n if (expected) {\n message += '\\nExpected: ' + expected;\n }\n if (actual) {\n message += '\\nActual: ' + actual;\n }\n throw {\n name: 'InternalParseException',\n message: 'Error occurred while attempting to parse expression \\'' + expressionString + '\\' at position ' + pos + '. Message: ' + message\n };\n }\n\n function toString(token) {\n if (token.getKind().hasPayload()) {\n return token.stringValue();\n }\n return token.getKind().toString().toLowerCase();\n }\n\n function checkOperands(token, left, right) {\n checkLeftOperand(token, left);\n checkRightOperand(token, right);\n }\n\n function checkLeftOperand(token, operandExpression) {\n if (operandExpression === null) {\n raiseInternalException(token.startPos, 'LEFT_OPERAND_PROBLEM');\n }\n }\n\n function checkRightOperand(token, operandExpression) {\n if (operandExpression === null) {\n raiseInternalException(token.startPos, 'RIGHT_OPERAND_PROBLEM');\n }\n }\n\n /**\n * Compress the start and end of a token into a single int.\n */\n function toPosToken(token) {\n return (token.startPos << 16) + token.endPos;\n }\n\n function toPosBounds(start, end) {\n return (start << 16) + end;\n }\n\n return {\n setConfiguration: setConfiguration,\n parse: parse\n };\n};\n\n//not yet implemented\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Tokenizer = undefined;\n\nvar _Token = __webpack_require__(7);\n\nvar _TokenKind = __webpack_require__(2);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Phillip Webb\n * @author Ben March\n * @since 0.2.0\n */\n\nvar ALTERNATIVE_OPERATOR_NAMES = ['DIV', 'EQ', 'GE', 'GT', 'LE', 'LT', 'MOD', 'NE', 'NOT'],\n FLAGS = [],\n IS_DIGIT = 1,\n IS_HEXDIGIT = 2,\n IS_ALPHA = 4;\n\nfunction init() {\n var ch;\n\n for (ch = '0'.charCodeAt(0); ch <= '9'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_DIGIT | IS_HEXDIGIT;\n }\n for (ch = 'A'.charCodeAt(0); ch <= 'F'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_HEXDIGIT;\n }\n for (ch = 'a'.charCodeAt(0); ch <= 'f'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_HEXDIGIT;\n }\n for (ch = 'A'.charCodeAt(0); ch <= 'Z'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_ALPHA;\n }\n for (ch = 'a'.charCodeAt(0); ch <= 'z'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_ALPHA;\n }\n}\n\ninit();\n\nfunction tokenize(inputData) {\n var expressionString = inputData,\n toProcess = inputData + '\\0',\n max = toProcess.length,\n pos = 0,\n tokens = [];\n\n function process() {\n var ch;\n\n while (pos < max) {\n ch = toProcess[pos];\n if (isAlphabetic(ch)) {\n lexIdentifier();\n } else {\n switch (ch) {\n case '+':\n if (isTwoCharToken(_TokenKind.TokenKind.INC)) {\n pushPairToken(_TokenKind.TokenKind.INC);\n } else {\n pushCharToken(_TokenKind.TokenKind.PLUS);\n }\n break;\n case '_':\n // the other way to start an identifier\n lexIdentifier();\n break;\n case '-':\n if (isTwoCharToken(_TokenKind.TokenKind.DEC)) {\n pushPairToken(_TokenKind.TokenKind.DEC);\n } else {\n pushCharToken(_TokenKind.TokenKind.MINUS);\n }\n break;\n case ':':\n pushCharToken(_TokenKind.TokenKind.COLON);\n break;\n case '.':\n pushCharToken(_TokenKind.TokenKind.DOT);\n break;\n case ',':\n pushCharToken(_TokenKind.TokenKind.COMMA);\n break;\n case '*':\n pushCharToken(_TokenKind.TokenKind.STAR);\n break;\n case '/':\n pushCharToken(_TokenKind.TokenKind.DIV);\n break;\n case '%':\n pushCharToken(_TokenKind.TokenKind.MOD);\n break;\n case '(':\n pushCharToken(_TokenKind.TokenKind.LPAREN);\n break;\n case ')':\n pushCharToken(_TokenKind.TokenKind.RPAREN);\n break;\n case '[':\n pushCharToken(_TokenKind.TokenKind.LSQUARE);\n break;\n case '#':\n pushCharToken(_TokenKind.TokenKind.HASH);\n break;\n case ']':\n pushCharToken(_TokenKind.TokenKind.RSQUARE);\n break;\n case '{':\n pushCharToken(_TokenKind.TokenKind.LCURLY);\n break;\n case '}':\n pushCharToken(_TokenKind.TokenKind.RCURLY);\n break;\n case '@':\n pushCharToken(_TokenKind.TokenKind.BEAN_REF);\n break;\n case '^':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT_FIRST)) {\n pushPairToken(_TokenKind.TokenKind.SELECT_FIRST);\n } else {\n pushCharToken(_TokenKind.TokenKind.POWER);\n }\n break;\n case '!':\n if (isTwoCharToken(_TokenKind.TokenKind.NE)) {\n pushPairToken(_TokenKind.TokenKind.NE);\n } else if (isTwoCharToken(_TokenKind.TokenKind.PROJECT)) {\n pushPairToken(_TokenKind.TokenKind.PROJECT);\n } else {\n pushCharToken(_TokenKind.TokenKind.NOT);\n }\n break;\n case '=':\n if (isTwoCharToken(_TokenKind.TokenKind.EQ)) {\n pushPairToken(_TokenKind.TokenKind.EQ);\n } else {\n pushCharToken(_TokenKind.TokenKind.ASSIGN);\n }\n break;\n case '&':\n if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_AND)) {\n throw {\n name: 'SpelParseException',\n message: 'Missing character \\'&\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushPairToken(_TokenKind.TokenKind.SYMBOLIC_AND);\n break;\n case '|':\n if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_OR)) {\n throw {\n name: 'SpelParseException',\n message: 'Missing character \\'|\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushPairToken(_TokenKind.TokenKind.SYMBOLIC_OR);\n break;\n case '?':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT)) {\n pushPairToken(_TokenKind.TokenKind.SELECT);\n } else if (isTwoCharToken(_TokenKind.TokenKind.ELVIS)) {\n pushPairToken(_TokenKind.TokenKind.ELVIS);\n } else if (isTwoCharToken(_TokenKind.TokenKind.SAFE_NAVI)) {\n pushPairToken(_TokenKind.TokenKind.SAFE_NAVI);\n } else {\n pushCharToken(_TokenKind.TokenKind.QMARK);\n }\n break;\n case '$':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT_LAST)) {\n pushPairToken(_TokenKind.TokenKind.SELECT_LAST);\n } else {\n lexIdentifier();\n }\n break;\n case '>':\n if (isTwoCharToken(_TokenKind.TokenKind.GE)) {\n pushPairToken(_TokenKind.TokenKind.GE);\n } else {\n pushCharToken(_TokenKind.TokenKind.GT);\n }\n break;\n case '<':\n if (isTwoCharToken(_TokenKind.TokenKind.LE)) {\n pushPairToken(_TokenKind.TokenKind.LE);\n } else {\n pushCharToken(_TokenKind.TokenKind.LT);\n }\n break;\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n lexNumericLiteral(ch === '0');\n break;\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n // drift over white space\n pos += 1;\n break;\n case '\\'':\n lexQuotedStringLiteral();\n break;\n case '\"':\n lexDoubleQuotedStringLiteral();\n break;\n case '\\0':\n // hit sentinel at end of value\n pos += 1; // will take us to the end\n break;\n case '\\\\':\n throw {\n name: 'SpelParseException',\n message: 'Unexpected escape character in expression (' + expressionString + ') at position ' + pos\n };\n default:\n throw {\n name: 'SpelParseException',\n message: 'Cannot handle character \\'' + ch + '\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n }\n }\n\n function lexQuotedStringLiteral() {\n var start = pos,\n terminated = false,\n ch;\n\n while (!terminated) {\n pos += 1;\n ch = toProcess[pos];\n if (ch === '\\'') {\n // may not be the end if the char after is also a '\n if (toProcess[pos + 1] === '\\'') {\n pos += 1; // skip over that too, and continue\n } else {\n terminated = true;\n }\n }\n if (ch.charCodeAt(0) === 0) {\n throw {\n name: 'SpelParseException',\n message: 'Non-terminating quoted string in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n pos += 1;\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));\n }\n function lexDoubleQuotedStringLiteral() {\n var start = pos,\n terminated = false,\n ch;\n\n while (!terminated) {\n pos += 1;\n ch = toProcess[pos];\n if (ch === '\"') {\n // may not be the end if the char after is also a '\n if (toProcess[pos + 1] === '\"') {\n pos += 1; // skip over that too, and continue\n } else {\n terminated = true;\n }\n }\n if (ch.charCodeAt(0) === 0) {\n throw {\n name: 'SpelParseException',\n message: 'Non-terminating double-quoted string in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n pos += 1;\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));\n }\n\n // REAL_LITERAL :\n // ('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX));\n // fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' );\n // fragment HEX_DIGIT :\n // '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f';\n //\n // fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)*\n // (DECIMAL_DIGIT)+ ;\n // fragment SIGN : '+' | '-' ;\n // fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd';\n // INTEGER_LITERAL\n // : (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;\n\n function lexNumericLiteral(firstCharIsZero) {\n var isReal = false,\n start = pos,\n ch = toProcess[pos + 1],\n isHex = ch === 'x' || ch === 'X',\n dotpos,\n endOfNumber,\n possibleSign,\n isFloat;\n\n // deal with hexadecimal\n if (firstCharIsZero && isHex) {\n pos = pos + 1;\n do {\n pos += 1;\n } while (isHexadecimalDigit(toProcess[pos]));\n if (isChar('L', 'l')) {\n pushHexIntToken(subarray(start + 2, pos), true, start, pos);\n pos += 1;\n } else {\n pushHexIntToken(subarray(start + 2, pos), false, start, pos);\n }\n return;\n }\n\n // real numbers must have leading digits\n\n // Consume first part of number\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n\n // a '.' indicates this number is a real\n ch = toProcess[pos];\n if (ch === '.') {\n isReal = true;\n dotpos = pos;\n // carry on consuming digits\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n if (pos === dotpos + 1) {\n // the number is something like '3.'. It is really an int but may be\n // part of something like '3.toString()'. In this case process it as\n // an int and leave the dot as a separate token.\n pos = dotpos;\n pushIntToken(subarray(start, pos), false, start, pos);\n return;\n }\n }\n\n endOfNumber = pos;\n\n // Now there may or may not be an exponent\n\n // is it a long ?\n if (isChar('L', 'l')) {\n if (isReal) {\n // 3.4L - not allowed\n throw {\n name: 'SpelParseException',\n message: 'Real cannot be long in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushIntToken(subarray(start, endOfNumber), true, start, endOfNumber);\n pos += 1;\n } else if (isExponentChar(toProcess[pos])) {\n isReal = true; // if it wasn't before, it is now\n pos += 1;\n possibleSign = toProcess[pos];\n if (isSign(possibleSign)) {\n pos += 1;\n }\n\n // exponent digits\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n isFloat = false;\n if (isFloatSuffix(toProcess[pos])) {\n isFloat = true;\n pos += 1;\n endOfNumber = pos;\n } else if (isDoubleSuffix(toProcess[pos])) {\n pos += 1;\n endOfNumber = pos;\n }\n pushRealToken(subarray(start, pos), isFloat, start, pos);\n } else {\n ch = toProcess[pos];\n isFloat = false;\n if (isFloatSuffix(ch)) {\n isReal = true;\n isFloat = true;\n pos += 1;\n endOfNumber = pos;\n } else if (isDoubleSuffix(ch)) {\n isReal = true;\n pos += 1;\n endOfNumber = pos;\n }\n if (isReal) {\n pushRealToken(subarray(start, endOfNumber), isFloat, start, endOfNumber);\n } else {\n pushIntToken(subarray(start, endOfNumber), false, start, endOfNumber);\n }\n }\n }\n\n function lexIdentifier() {\n var start = pos,\n substring,\n asString,\n idx;\n do {\n pos += 1;\n } while (isIdentifier(toProcess[pos]));\n substring = subarray(start, pos);\n\n // Check if this is the alternative (textual) representation of an operator (see\n // alternativeOperatorNames)\n if (pos - start === 2 || pos - start === 3) {\n asString = substring.toUpperCase();\n idx = ALTERNATIVE_OPERATOR_NAMES.indexOf(asString);\n if (idx >= 0) {\n pushOneCharOrTwoCharToken(_TokenKind.TokenKind.valueOf(asString), start, substring);\n return;\n }\n }\n tokens.push(new _Token.Token(_TokenKind.TokenKind.IDENTIFIER, substring.replace('\\0', ''), start, pos));\n }\n\n function pushIntToken(data, isLong, start, end) {\n if (isLong) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_LONG, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_INT, data, start, end));\n }\n }\n\n function pushHexIntToken(data, isLong, start, end) {\n if (data.length === 0) {\n if (isLong) {\n throw {\n name: 'SpelParseException',\n message: 'Not a long in expression (' + expressionString + ') at position ' + pos\n };\n } else {\n throw {\n name: 'SpelParseException',\n message: 'Not an int in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n if (isLong) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXLONG, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXINT, data, start, end));\n }\n }\n\n function pushRealToken(data, isFloat, start, end) {\n if (isFloat) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL_FLOAT, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL, data, start, end));\n }\n }\n\n function subarray(start, end) {\n return toProcess.substring(start, end);\n }\n\n /**\n * Check if this might be a two character token.\n */\n function isTwoCharToken(kind) {\n if (kind.tokenChars.length === 2 && toProcess[pos] === kind.tokenChars[0]) {\n return toProcess[pos + 1] === kind.tokenChars[1];\n }\n return false;\n }\n\n /**\n * Push a token of just one character in length.\n */\n function pushCharToken(kind) {\n tokens.push(new _Token.Token(kind, null, pos, pos + 1));\n pos += 1;\n }\n\n /**\n * Push a token of two characters in length.\n */\n function pushPairToken(kind) {\n tokens.push(new _Token.Token(kind, null, pos, pos + 2));\n pos += 2;\n }\n\n function pushOneCharOrTwoCharToken(kind, pos, data) {\n tokens.push(new _Token.Token(kind, data, pos, pos + kind.getLength()));\n }\n\n // ID: ('a'..'z'|'A'..'Z'|'_'|'$') ('a'..'z'|'A'..'Z'|'_'|'$'|'0'..'9'|DOT_ESCAPED)*;\n function isIdentifier(ch) {\n return isAlphabetic(ch) || isDigit(ch) || ch === '_' || ch === '$';\n }\n\n function isChar(a, b) {\n var ch = toProcess[pos];\n return ch === a || ch === b;\n }\n\n function isExponentChar(ch) {\n return ch === 'e' || ch === 'E';\n }\n\n function isFloatSuffix(ch) {\n return ch === 'f' || ch === 'F';\n }\n\n function isDoubleSuffix(ch) {\n return ch === 'd' || ch === 'D';\n }\n\n function isSign(ch) {\n return ch === '+' || ch === '-';\n }\n\n function isDigit(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_DIGIT) !== 0;\n }\n\n function isAlphabetic(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_ALPHA) !== 0;\n }\n\n function isHexadecimalDigit(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_HEXDIGIT) !== 0;\n }\n\n process();\n\n return tokens;\n}\n\nvar Tokenizer = exports.Tokenizer = {\n tokenize: tokenize\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Token = undefined;\n\nvar _TokenKind = __webpack_require__(2);\n\nfunction Token(tokenKind, tokenData, startPos, endPos) {\n this.kind = tokenKind;\n this.startPos = startPos;\n this.endPos = endPos;\n if (tokenData) {\n this.data = tokenData;\n }\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nToken.prototype.getKind = function () {\n return this.kind;\n};\n\nToken.prototype.toString = function () {\n var s = '[';\n s += this.kind.toString();\n if (this.kind.hasPayload()) {\n s += ':' + this.data;\n }\n s += ']';\n s += '(' + this.startPos + ',' + this.endPos + ')';\n return s;\n};\n\nToken.prototype.isIdentifier = function () {\n return this.kind === _TokenKind.TokenKind.IDENTIFIER;\n};\n\nToken.prototype.isNumericRelationalOperator = function () {\n return this.kind === _TokenKind.TokenKind.GT || this.kind === _TokenKind.TokenKind.GE || this.kind === _TokenKind.TokenKind.LT || this.kind === _TokenKind.TokenKind.LE || this.kind === _TokenKind.TokenKind.EQ || this.kind === _TokenKind.TokenKind.NE;\n};\n\nToken.prototype.stringValue = function () {\n return this.data;\n};\n\nToken.prototype.asInstanceOfToken = function () {\n return new Token(_TokenKind.TokenKind.INSTANCEOF, this.startPos, this.endPos);\n};\n\nToken.prototype.asMatchesToken = function () {\n return new Token(_TokenKind.TokenKind.MATCHES, this.startPos, this.endPos);\n};\n\nToken.prototype.asBetweenToken = function () {\n return new Token(_TokenKind.TokenKind.BETWEEN, this.startPos, this.endPos);\n};\n\nToken.prototype.getStartPosition = function () {\n return this.startPos;\n};\n\nToken.prototype.getEndPosition = function () {\n return this.endPos;\n};\n\nexports.Token = Token;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BooleanLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the literal values TRUE and FALSE.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('boolean', position);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar BooleanLiteral = exports.BooleanLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NumberLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents a literal number of any kind (since JavaScript only supports doubles anyway)\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('number', position);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar NumberLiteral = exports.NumberLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StringLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents a string literal.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('string', position);\n\n function stripQuotes(value) {\n if (value[0] === '\\'' && value[value.length - 1] === '\\'' || value[0] === '\"' && value[value.length - 1] === '\"') {\n value = value.substring(1, value.length - 1);\n }\n\n return value.replace(/''/g, '\\'').replace(/\"\"/g, '\"');\n }\n\n //value cannot be null so no check\n value = stripQuotes(value);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar StringLiteral = exports.StringLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NullLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents null.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('null', position);\n\n node.getValue = function () {\n return null;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar NullLiteral = exports.NullLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FunctionReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * A function reference is of the form \"#someFunction(a,b,c)\". Functions may be defined in\n * the context prior to the expression being evaluated or within the expression itself\n * using a lambda function definition. For example: Lambda function definition in an\n * expression: \"(#max = {|x,y|$x>$y?$x:$y};max(2,3))\" Calling context defined function:\n * \"#isEven(37)\". Functions may also be static java methods, registered in the context\n * prior to invocation of the expression.\n *\n * <p>Functions are very simplistic, the arguments are not part of the definition (right\n * now), so the names must be unique.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(functionName, position, args) {\n var node = _SpelNode.SpelNode.create('function', position);\n\n node.getRaw = function () {\n return {\n functionName: functionName,\n args: args\n };\n };\n\n node.getValue = function (state) {\n var locals = state.locals || {},\n context = state.rootContext,\n compiledArgs = [];\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n if (locals[functionName]) {\n return locals[functionName].apply(context, compiledArgs);\n }\n\n throw {\n name: 'FunctionDoesNotExistException',\n message: 'Function \\'' + functionName + '\\' does not exist.'\n };\n };\n\n return node;\n}\n\nvar FunctionReference = exports.FunctionReference = {\n create: createNode\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MethodReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * Expression language AST node that represents a method reference.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(nullSafeNavigation, methodName, position, args) {\n var node = _SpelNode.SpelNode.create('method', position);\n\n node.getRaw = function () {\n return {\n methodName: methodName,\n args: args\n };\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n compiledArgs = [],\n method;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up property \\'' + methodName + '\\' for an undefined context.'\n };\n }\n\n //handle safe navigation\n function maybeHandleNullSafeNavigation(member) {\n if (member === undefined || member === null) {\n if (nullSafeNavigation) {\n return null;\n }\n\n throw {\n name: 'NullPointerException',\n message: 'Method ' + methodName + ' does not exist.'\n };\n }\n\n return member;\n }\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n //accessors might not be available\n if (methodName.substr(0, 3) === 'get' && !context[methodName]) {\n return maybeHandleNullSafeNavigation(context[methodName.charAt(3).toLowerCase() + methodName.substring(4)]);\n }\n if (methodName.substr(0, 3) === 'set' && !context[methodName]) {\n /*jshint -W093 */\n return context[methodName.charAt(3).toLowerCase() + methodName.substring(4)] = compiledArgs[0];\n /*jshint +W093 */\n }\n\n //array methods\n if (Array.isArray(context)) {\n //size() -> length\n if (methodName === 'size') {\n return context.length;\n }\n\n if (methodName === 'contains') {\n return context.includes(compiledArgs[0]);\n }\n }\n\n method = maybeHandleNullSafeNavigation(context[methodName]);\n if (method) {\n return method.apply(context, compiledArgs);\n }\n return null;\n };\n\n return node;\n}\n\nvar MethodReference = exports.MethodReference = {\n create: createNode\n};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PropertyReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a simple property or field reference.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Clark Duplichien\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(nullSafeNavigation, propertyName, position) {\n var node = _SpelNode.SpelNode.create('property', position);\n\n node.getRaw = function () {\n return propertyName;\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n if (nullSafeNavigation) {\n return null;\n }\n\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up property \\'' + propertyName + '\\' for an undefined context.'\n };\n }\n\n if (context[propertyName] === undefined || context[propertyName] === null) {\n //handle safe navigation\n if (nullSafeNavigation) {\n return null;\n }\n\n //handle conversion of Java properties to JavaScript properties\n if (propertyName === 'size' && Array.isArray(context)) {\n return context.length;\n }\n\n throw {\n name: 'NullPointerException',\n message: 'Property \\'' + propertyName + '\\' does not exist.'\n };\n }\n\n return context[propertyName];\n };\n\n node.setValue = function (value, state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to assign property \\'' + propertyName + '\\' for an undefined context.'\n };\n }\n\n /*jshint -W093 */\n return context[propertyName] = value;\n /*jshint +W093 */\n };\n\n node.getName = function () {\n return propertyName;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar PropertyReference = exports.PropertyReference = {\n create: createNode\n};\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VariableReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a variable reference, eg. #someVar. Note this is different to a *local*\n * variable like $someVar\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(variableName, position) {\n var node = _SpelNode.SpelNode.create('variable', position);\n\n node.getRaw = function () {\n return variableName;\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n locals = state.locals;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up variable \\'' + variableName + '\\' for an undefined context.'\n };\n }\n\n //there are 2 keywords (root, this) that need to be dealt with\n if (variableName === 'this') {\n return context;\n }\n if (variableName === 'root') {\n return state.rootContext;\n }\n\n return locals[variableName];\n };\n\n node.setValue = function (value, state) {\n var locals = state.locals;\n\n /*jshint -W093 */\n return locals[variableName] = value;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar VariableReference = exports.VariableReference = {\n create: createNode\n};\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CompoundExpression = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a DOT separated expression sequence, such as 'property1.property2.methodOne()'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expressionComponents) {\n var node = _SpelNode.SpelNode.create.apply(null, ['compound', position].concat(expressionComponents));\n\n function buildContextStack(state) {\n var childrenCount = node.getChildren().length,\n i;\n\n for (i = 0; i < childrenCount; i += 1) {\n if (node.getChildren()[i].getType() === 'indexer') {\n state.activeContext.push(state.activeContext.peek()[node.getChildren()[i].getValue(state)]);\n } else {\n state.activeContext.push(node.getChildren()[i].getValue(state));\n }\n }\n\n return function unbuildContextStack() {\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.pop();\n }\n };\n }\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n value;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to evaluate compound expression with an undefined context.'\n };\n }\n\n var unbuildContextStack = buildContextStack(state);\n\n value = state.activeContext.peek();\n\n unbuildContextStack();\n\n return value;\n };\n\n node.setValue = function (value, state) {\n var unbuildContextStack = buildContextStack(state),\n childCount = node.getChildren().length;\n\n state.activeContext.pop();\n\n value = node.getChildren()[childCount - 1].setValue(value, state);\n\n state.activeContext.push(null);\n\n unbuildContextStack();\n\n return value;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar CompoundExpression = exports.CompoundExpression = {\n create: createNode\n};\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Indexer = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * An Indexer can index into some proceeding structure to access a particular piece of it.\n * Supported structures are: strings / collections (lists/sets) / arrays.\n *\n * @author Andy Clement\n * @author Phillip Webb\n * @author Stephane Nicoll\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(position, expressionComponents) {\n var node = _SpelNode.SpelNode.create.apply(null, ['indexer', position].concat(expressionComponents));\n\n node.getValue = function (state) {\n var activeContext = state.activeContext,\n context,\n childrenCount = node.getChildren().length,\n i,\n value;\n\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to evaluate compound expression with an undefined context.'\n };\n }\n\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.push(node.getChildren()[i].getValue(state));\n }\n\n value = state.activeContext.peek();\n\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.pop();\n }\n\n state.activeContext = activeContext;\n\n return value;\n };\n\n //node.setContext(node.getValue());\n\n return node;\n}\n\nvar Indexer = exports.Indexer = {\n create: createNode\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Assign = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents assignment. An alternative to calling setValue() for an expression is to use\n * an assign.\n *\n * <p>Example: 'someNumberProperty=42'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, property, assignedValue) {\n var node = _SpelNode.SpelNode.create('assign', position, property, assignedValue);\n\n node.getValue = function (state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to assign property \\'' + property.getValue(state) + '\\' for an undefined context.'\n };\n }\n\n return property.setValue(assignedValue.getValue(state), state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Assign = exports.Assign = {\n create: createNode\n};\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpEQ = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the equality operator.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-eq', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) === right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpEQ = exports.OpEQ = {\n create: createNode\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpNE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the not-equal operator.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-ne', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) !== right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpNE = exports.OpNE = {\n create: createNode\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpGE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements greater-than-or-equal operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-ge', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) >= right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpGE = exports.OpGE = {\n create: createNode\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpGT = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the greater-than operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-gt', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) > right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpGT = exports.OpGT = {\n create: createNode\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpLE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the less-than-or-equal operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-le', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) <= right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpLE = exports.OpLE = {\n create: createNode\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpLT = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the less-than operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-lt', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) < right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpLT = exports.OpLT = {\n create: createNode\n};\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpPlus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The plus operator will:\n * <ul>\n * <li>add numbers\n * <li>concatenate strings\n * </ul>\n *\n * <p>It can be used as a unary operator for numbers.\n * The standard promotions are performed when the operand types vary (double+int=double).\n * For other options it defers to the registered overloader.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ivo Smid\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-plus', position, left, right);\n\n node.getValue = function (state) {\n if (!right) {\n return +left.getValue(state);\n }\n //javascript will handle string concatenation or addition depending on types\n return left.getValue(state) + right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpPlus = exports.OpPlus = {\n create: createNode\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMinus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The minus operator supports:\n * <ul>\n * <li>subtraction of numbers\n * <li>subtraction of an int from a string of one character\n * (effectively decreasing that character), so 'd'-3='a'\n * </ul>\n *\n * <p>It can be used as a unary operator for numbers.\n * The standard promotions are performed when the operand types vary (double-int=double).\n * For other options it defers to the registered overloader.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-minus', position, left, right);\n\n node.getValue = function (state) {\n if (!right) {\n return -left.getValue(state);\n }\n return left.getValue(state) - right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMinus = exports.OpMinus = {\n create: createNode\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMultiply = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the {@code multiply} operator.\n *\n * <p>Conversions and promotions are handled as defined in\n * <a href=\"http://java.sun.com/docs/books/jls/third_edition/html/conversions.html\">Section 5.6.2 of the\n * Java Language Specification</a>, with the addiction of {@code BigDecimal}/{@code BigInteger} management:\n *\n * <p>If any of the operands is of a reference type, unboxing conversion (Section 5.1.8)\n * is performed. Then:<br>\n * If either operand is of type {@code BigDecimal}, the other is converted to {@code BigDecimal}.<br>\n * If either operand is of type double, the other is converted to double.<br>\n * Otherwise, if either operand is of type float, the other is converted to float.<br>\n * If either operand is of type {@code BigInteger}, the other is converted to {@code BigInteger}.<br>\n * Otherwise, if either operand is of type long, the other is converted to long.<br>\n * Otherwise, both operands are converted to type int.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Sam Brannen\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-multiply', position, left, right);\n\n node.getValue = function (state) {\n var leftValue = left.getValue(state),\n rightValue = right.getValue(state);\n\n if (typeof leftValue === 'number' && typeof rightValue === 'number') {\n return leftValue * rightValue;\n }\n\n //repeats (ex. 'abc' * 2 = 'abcabc')\n if (typeof leftValue === 'string' && typeof rightValue === 'number') {\n var s = '',\n i = 0;\n for (; i < rightValue; i += 1) {\n s += leftValue;\n }\n return s;\n }\n\n return null;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMultiply = exports.OpMultiply = {\n create: createNode\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpDivide = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements division operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-divide', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) / right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpDivide = exports.OpDivide = {\n create: createNode\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpModulus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the modulus operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-modulus', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) % right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpModulus = exports.OpModulus = {\n create: createNode\n};\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpPower = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The power operator.\n *\n * @author Andy Clement\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, base, exp) {\n var node = _SpelNode.SpelNode.create('op-power', position, base, exp);\n\n node.getValue = function (state) {\n return Math.pow(base.getValue(state), exp.getValue(state));\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpPower = exports.OpPower = {\n create: createNode\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpInc = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Increment operator. Can be used in a prefix or postfix form. This will throw\n * appropriate exceptions if the operand in question does not support increment.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, postfix, int) {\n var node = _SpelNode.SpelNode.create('op-inc', position, int);\n\n node.getValue = function (state) {\n var cur = int.getValue(state);\n int.setValue(cur + 1, state);\n if (postfix) {\n return cur;\n }\n return cur + 1;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpInc = exports.OpInc = {\n create: createNode\n};\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpDec = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Decrement operator. Can be used in a prefix or postfix form. This will throw\n * appropriate exceptions if the operand in question does not support decrement.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, postfix, int) {\n var node = _SpelNode.SpelNode.create('op-dec', position, int);\n\n node.getValue = function (state) {\n var cur = int.getValue(state);\n int.setValue(cur - 1, state);\n if (postfix) {\n return cur;\n }\n return cur - 1;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpDec = exports.OpDec = {\n create: createNode\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpNot = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a NOT operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expr) {\n var node = _SpelNode.SpelNode.create('op-not', position, expr);\n\n node.getValue = function (state) {\n return !expr.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpNot = exports.OpNot = {\n create: createNode\n};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpAnd = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the boolean AND operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-and', position, left, right);\n\n node.getValue = function (state) {\n //double bang for javascript\n return !!left.getValue(state) && !!right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpAnd = exports.OpAnd = {\n create: createNode\n};\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpOr = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the boolean OR operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-or', position, left, right);\n\n node.getValue = function (state) {\n //double bang for javascript\n return !!left.getValue(state) || !!right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpOr = exports.OpOr = {\n create: createNode\n};\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMatches = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the matches operator. Matches takes two operands:\n * The first is a String and the second is a Java regex.\n * It will return {@code true} when {@link #getValue} is called\n * if the first operand matches the regex.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Chris Thielen\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('matches', position, left, right);\n\n /**\n * Check the first operand matches the regex specified as the second operand.\n * @param state the expression state\n * @return {@code true} if the first operand matches the regex specified as the\n * second operand, otherwise {@code false}\n * @throws EvaluationException if there is a problem evaluating the expression\n * (e.g. the regex is invalid)\n */\n node.getValue = function (state) {\n var data = left.getValue(state);\n var regexpString = right.getValue(state);\n\n try {\n var regexp = new RegExp(regexpString);\n return !!regexp.exec(data);\n } catch (error) {\n throw {\n name: 'EvaluationException',\n message: error.toString()\n };\n }\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMatches = exports.OpMatches = {\n create: createNode\n};\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Ternary = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a ternary expression, for example: \"someCheck()?true:false\".\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expression, ifTrue, ifFalse) {\n var node = _SpelNode.SpelNode.create('ternary', position, expression, ifTrue, ifFalse);\n\n node.getValue = function (state) {\n return expression.getValue(state) ? ifTrue.getValue(state) : ifFalse.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Ternary = exports.Ternary = {\n create: createNode\n};\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Elvis = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the elvis operator ?:. For an expression \"a?:b\" if a is not null, the value\n * of the expression is \"a\", if a is null then the value of the expression is \"b\".\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expression, ifFalse) {\n var node = _SpelNode.SpelNode.create('elvis', position, expression, ifFalse);\n\n node.getValue = function (state) {\n return expression.getValue(state) !== null ? expression.getValue(state) : ifFalse.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Elvis = exports.Elvis = {\n create: createNode\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InlineList = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represent a list in an expression, e.g. '{1,2,3}'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, elements) {\n var node = _SpelNode.SpelNode.create('list', position),\n list = [].concat(elements || []);\n\n node.getRaw = function () {\n return list;\n };\n\n node.getValue = function (state) {\n return list.map(function (element) {\n return element.getValue(state);\n });\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar InlineList = exports.InlineList = {\n create: createNode\n};\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InlineMap = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represent a map in an expression, e.g. '{name:'foo',age:12}'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, elements) {\n var node = _SpelNode.SpelNode.create('map', position),\n mapPieces = [].concat(elements || []);\n\n node.getValue = function (state) {\n var key = true,\n keyValue = null,\n map = {};\n\n mapPieces.forEach(function (piece) {\n if (key) {\n //unquoted property names come as type \"property\" but should be treated as strings\n if (piece.getType() === 'property') {\n keyValue = piece.getName();\n } else {\n keyValue = piece.getValue(state);\n }\n } else {\n map[keyValue] = piece.getValue(state);\n }\n key = !key;\n });\n\n return map;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar InlineMap = exports.InlineMap = {\n create: createNode\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Selection = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents selection over a map or collection.\n * For example: {1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'} returns [2, 4, 6, 8, 10]\n *\n * <p>Basically a subset of the input data is returned based on the\n * evaluation of the expression supplied as selection criteria.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Sam Brannen\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction matches(element, expr, state) {\n var doesMatch = false;\n state.activeContext.push(element);\n doesMatch = expr.getValue(state);\n state.activeContext.pop();\n return doesMatch;\n}\n\nfunction selectFromArray(collection, whichElement, expr, state) {\n var newCollection = collection.filter(function (element) {\n return matches(element, expr, state);\n });\n\n switch (whichElement) {\n case 'ALL':\n return newCollection;\n case 'FIRST':\n return newCollection[0] || null;\n case 'LAST':\n if (newCollection.length) {\n return newCollection[newCollection.length - 1];\n }\n return null;\n }\n}\n\nfunction selectFromMap(collection, whichElement, expr, state) {\n var newCollection = {},\n entry,\n key,\n entries = [],\n returnValue = {};\n\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n entry = {\n key: key,\n value: collection[key]\n };\n if (matches(entry, expr, state)) {\n entries.push(entry);\n }\n }\n }\n\n switch (whichElement) {\n case 'ALL':\n entries.forEach(function (entry) {\n newCollection[entry.key] = entry.value;\n });\n return newCollection;\n case 'FIRST':\n if (entries.length) {\n returnValue[entries[0].key] = entries[0].value;\n return returnValue;\n }\n return null;\n case 'LAST':\n if (entries.length) {\n returnValue[entries[entries.length - 1].key] = entries[entries.length - 1].value;\n return returnValue;\n }\n return null;\n }\n\n entries.forEach(function (entry) {\n newCollection[entry.key] = entry.value;\n });\n}\n\nfunction createNode(nullSafeNavigation, whichElement, position, expr) {\n var node = _SpelNode.SpelNode.create('selection', position, expr);\n\n node.getValue = function (state) {\n var collection = state.activeContext.peek();\n\n if (collection) {\n if (Array.isArray(collection)) {\n return selectFromArray(collection, whichElement, expr, state);\n } else if ((typeof collection === 'undefined' ? 'undefined' : _typeof(collection)) === 'object') {\n return selectFromMap(collection, whichElement, expr, state);\n }\n }\n\n return null;\n };\n\n return node;\n}\n\nvar Selection = exports.Selection = {\n create: createNode,\n FIRST: 'FIRST',\n LAST: 'LAST',\n ALL: 'ALL'\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Projection = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents projection, where a given operation is performed on all elements in some\n * input sequence, returning a new sequence of the same size. For example:\n * \"{1,2,3,4,5,6,7,8,9,10}.!{#isEven(#this)}\" returns \"[n, y, n, y, n, y, n, y, n, y]\"\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction projectCollection(collection, expr, state) {\n return collection.map(function (element) {\n var matches;\n state.activeContext.push(element);\n matches = expr.getValue(state);\n state.activeContext.pop();\n return matches;\n });\n}\n\nfunction createNode(nullSafeNavigation, position, expr) {\n var node = _SpelNode.SpelNode.create('projection', position, expr);\n\n node.getValue = function (state) {\n var collection = state.activeContext.peek(),\n entries = [],\n key;\n\n if (Array.isArray(collection)) {\n return projectCollection(collection, expr, state);\n } else if ((typeof collection === 'undefined' ? 'undefined' : _typeof(collection)) === 'object') {\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n entries.push(collection[key]);\n }\n }\n return projectCollection(entries, expr, state);\n }\n\n return null;\n };\n\n return node;\n}\n\nvar Projection = exports.Projection = {\n create: createNode\n};\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpInstanceof = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The operator 'instanceof' checks if an object is of the class specified in the right\n * hand operand, in the same way that {@code instanceof} does in Java.\n *\n * THIS OPERATOR IS NOT IMPLEMENTED AND WILL THROW AN EXCEPTION\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('instanceof', position, left, right);\n\n /**\n * Compare the left operand to see it is an instance of the type specified as the\n * right operand. The right operand must be a class.\n * @param state the expression state\n * @return {@code true} if the left operand is an instanceof of the right operand,\n * otherwise {@code false}\n * @throws EvaluationException if there is a problem evaluating the expression\n */\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'OpInstanceOf: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpInstanceof = exports.OpInstanceof = {\n create: createNode\n};\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpBetween = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the between operator. The left operand to between must be a single value and\n * the right operand must be a list - this operator returns true if the left operand is\n * between (using the registered comparator) the two elements in the list. The definition\n * of between being inclusive follows the SQL BETWEEN definition.\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('between', position, left, right);\n\n /**\n * Returns a boolean based on whether a value is in the range expressed. The first\n * operand is any value whilst the second is a list of two values - those two values\n * being the bounds allowed for the first operand (inclusive).\n * @param state the expression state\n * @return true if the left operand is in the range specified, false otherwise\n * @throws EvaluationException if there is a problem evaluating the expression\n */\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'OpBetween: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpBetween = exports.OpBetween = {\n create: createNode\n};\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TypeReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a reference to a type, for example\n * {@code \"T(String)\" or \"T(com.somewhere.Foo)\"}.\n *\n * @author Andy Clement\n */\nfunction createNode(position, node, _dims) {\n var node = _SpelNode.SpelNode.create('typeref', position, node);\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'TypeReference: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar TypeReference = exports.TypeReference = {\n create: createNode\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BeanReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a bean reference to a type, for example <tt>@foo</tt> or <tt>@'foo.bar'</tt>.\n * For a FactoryBean the syntax <tt>&foo</tt> can be used to access the factory itself.\n *\n * @author Andy Clement\n */\nfunction createNode(position, beanName) {\n var node = _SpelNode.SpelNode.create('beanref', position);\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'BeanReference: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar BeanReference = exports.BeanReference = {\n create: createNode\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Identifier = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * An 'identifier' {@link SpelNode}.\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(identifierName, position) {\n var node = _SpelNode.SpelNode.create('identifier', position);\n\n node.getRaw = function () {\n return identifierName;\n };\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'Identifier: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Identifier = exports.Identifier = {\n create: createNode\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.QualifiedIdentifier = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents a dot separated sequence of strings that indicate a package qualified type\n * reference.\n *\n * <p>Example: \"java.lang.String\" as in the expression \"new java.lang.String('hello')\"\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, pieces) {\n var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ['qualifiedidentifier', position].concat(_toConsumableArray(pieces)));\n\n node.getRaw = function () {\n return pieces.map(function (p) {\n return p.getRaw();\n });\n };\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'QualifiedIdentifier: Not implemented'\n };\n };\n\n return node;\n}\n\nvar QualifiedIdentifier = exports.QualifiedIdentifier = {\n create: createNode\n};\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ConstructorReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); } /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the invocation of a constructor. Either a constructor on a regular type or\n * construction of an array. When an array is constructed, an initializer can be specified.\n *\n * <p>Examples:<br>\n * new String('hello world')<br>\n * new int[]{1,2,3,4}<br>\n * new int[3] new int[3]{1,2,3}\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @since 3.0\n */\nfunction createNode(position, dimensions, nodes) {\n var isArray = nodes !== undefined;\n var dimension;\n if (isArray) {\n dimension = dimensions.length && dimensions[0] && dimensions[0].getType() === 'number' ? dimensions[0].getValue() : null;\n } else {\n nodes = dimensions;\n dimensions = undefined;\n }\n\n var _nodes = nodes,\n _nodes2 = _toArray(_nodes),\n _qualifiedIdentifier = _nodes2[0],\n args = _nodes2.slice(1);\n\n var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ['constructorref', position].concat(_toConsumableArray(nodes)));\n\n node.getRaw = function () {\n return dimension;\n };\n\n node.getValue = function (state) {\n if (isArray && args.length <= 1) {\n var compiledArgs = [];\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n if (args.length === 1) {\n return compiledArgs[0];\n } else {\n return dimension ? new Array(dimension) : [];\n }\n }\n\n throw {\n name: 'MethodNotImplementedException',\n message: 'ConstructorReference: Not implemented'\n };\n };\n\n return node;\n}\n\nvar ConstructorReference = exports.ConstructorReference = {\n create: createNode\n};\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction create(authentication, principal) {\n var context = {};\n\n context.authentication = authentication || {};\n context.principal = principal || {};\n\n context.hasRole = function (role) {\n var hasRole = false;\n\n if (!role) {\n return false;\n }\n if (!context.authentication && !Array.isArray(context.authentication.authorities)) {\n return false;\n }\n\n context.authentication.authorities.forEach(function (grantedAuthority) {\n if (grantedAuthority.authority.toLowerCase() === role.toLowerCase()) {\n hasRole = true;\n }\n });\n\n return hasRole;\n };\n\n context.hasPermission = function () /*variable arguments*/{\n var args = Array.prototype.slice.call(arguments);\n\n if (args.length === 1) {\n return context.hasRole(args[0]);\n }\n };\n\n return context;\n}\n\nvar StandardContext = exports.StandardContext = {\n create: create\n};\n\n/***/ })\n/******/ ]);\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _includes = _interopRequireDefault(require(\"lodash/includes\"));\n\nvar _tokenTypes = _interopRequireDefault(require(\"./tokenTypes\"));\n\nvar _Indentation = _interopRequireDefault(require(\"./Indentation\"));\n\nvar _InlineBlock = _interopRequireDefault(require(\"./InlineBlock\"));\n\nvar _Params = _interopRequireDefault(require(\"./Params\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar trimSpacesEnd = function trimSpacesEnd(str) {\n return str.replace(/[\\t ]+$/, '');\n};\n\nvar Formatter =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @param {Object} cfg\r\n * @param {String} cfg.language\r\n * @param {String} cfg.indent\r\n * @param {Bool} cfg.uppercase\r\n * @param {Integer} cfg.linesBetweenQueries\r\n * @param {Object} cfg.params\r\n * @param {Tokenizer} tokenizer\r\n */\n function Formatter(cfg, tokenizer, tokenOverride) {\n _classCallCheck(this, Formatter);\n\n this.cfg = cfg || {};\n this.indentation = new _Indentation[\"default\"](this.cfg.indent);\n this.inlineBlock = new _InlineBlock[\"default\"]();\n this.params = new _Params[\"default\"](this.cfg.params);\n this.tokenizer = tokenizer;\n this.tokenOverride = tokenOverride;\n this.previousReservedWord = {};\n this.tokens = [];\n this.index = 0;\n }\n /**\r\n * Formats whitespace in a SQL string to make it easier to read.\r\n *\r\n * @param {String} query The SQL query string\r\n * @return {String} formatted query\r\n */\n\n\n _createClass(Formatter, [{\n key: \"format\",\n value: function format(query) {\n this.tokens = this.tokenizer.tokenize(query);\n var formattedQuery = this.getFormattedQueryFromTokens();\n return formattedQuery.trim();\n }\n }, {\n key: \"getFormattedQueryFromTokens\",\n value: function getFormattedQueryFromTokens() {\n var _this = this;\n\n var formattedQuery = '';\n this.tokens.forEach(function (token, index) {\n _this.index = index;\n if (_this.tokenOverride) token = _this.tokenOverride(token, _this.previousReservedWord) || token;\n\n if (token.type === _tokenTypes[\"default\"].WHITESPACE) {// ignore (we do our own whitespace formatting)\n } else if (token.type === _tokenTypes[\"default\"].LINE_COMMENT) {\n formattedQuery = _this.formatLineComment(token, formattedQuery);\n } else if (token.type === _tokenTypes[\"default\"].BLOCK_COMMENT) {\n formattedQuery = _this.formatBlockComment(token, formattedQuery);\n } else if (token.type === _tokenTypes[\"default\"].RESERVED_TOP_LEVEL) {\n formattedQuery = _this.formatTopLevelReservedWord(token, formattedQuery);\n _this.previousReservedWord = token;\n } else if (token.type === _tokenTypes[\"default\"].RESERVED_TOP_LEVEL_NO_INDENT) {\n formattedQuery = _this.formatTopLevelReservedWordNoIndent(token, formattedQuery);\n _this.previousReservedWord = token;\n } else if (token.type === _tokenTypes[\"default\"].RESERVED_NEWLINE) {\n formattedQuery = _this.formatNewlineReservedWord(token, formattedQuery);\n _this.previousReservedWord = token;\n } else if (token.type === _tokenTypes[\"default\"].RESERVED) {\n formattedQuery = _this.formatWithSpaces(token, formattedQuery);\n _this.previousReservedWord = token;\n } else if (token.type === _tokenTypes[\"default\"].OPEN_PAREN) {\n formattedQuery = _this.formatOpeningParentheses(token, formattedQuery);\n } else if (token.type === _tokenTypes[\"default\"].CLOSE_PAREN) {\n formattedQuery = _this.formatClosingParentheses(token, formattedQuery);\n } else if (token.type === _tokenTypes[\"default\"].PLACEHOLDER) {\n formattedQuery = _this.formatPlaceholder(token, formattedQuery);\n } else if (token.value === ',') {\n formattedQuery = _this.formatComma(token, formattedQuery);\n } else if (token.value === ':') {\n formattedQuery = _this.formatWithSpaceAfter(token, formattedQuery);\n } else if (token.value === '.') {\n formattedQuery = _this.formatWithoutSpaces(token, formattedQuery);\n } else if (token.value === ';') {\n formattedQuery = _this.formatQuerySeparator(token, formattedQuery);\n } else {\n formattedQuery = _this.formatWithSpaces(token, formattedQuery);\n }\n });\n return formattedQuery;\n }\n }, {\n key: \"formatLineComment\",\n value: function formatLineComment(token, query) {\n return this.addNewline(query + token.value);\n }\n }, {\n key: \"formatBlockComment\",\n value: function formatBlockComment(token, query) {\n return this.addNewline(this.addNewline(query) + this.indentComment(token.value));\n }\n }, {\n key: \"indentComment\",\n value: function indentComment(comment) {\n return comment.replace(/\\n[\\t ]*/g, '\\n' + this.indentation.getIndent() + ' ');\n }\n }, {\n key: \"formatTopLevelReservedWordNoIndent\",\n value: function formatTopLevelReservedWordNoIndent(token, query) {\n this.indentation.decreaseTopLevel();\n query = this.addNewline(query) + this.equalizeWhitespace(this.formatReservedWord(token.value));\n return this.addNewline(query);\n }\n }, {\n key: \"formatTopLevelReservedWord\",\n value: function formatTopLevelReservedWord(token, query) {\n this.indentation.decreaseTopLevel();\n query = this.addNewline(query);\n this.indentation.increaseTopLevel();\n query += this.equalizeWhitespace(this.formatReservedWord(token.value));\n return this.addNewline(query);\n }\n }, {\n key: \"formatNewlineReservedWord\",\n value: function formatNewlineReservedWord(token, query) {\n return this.addNewline(query) + this.equalizeWhitespace(this.formatReservedWord(token.value)) + ' ';\n } // Replace any sequence of whitespace characters with single space\n\n }, {\n key: \"equalizeWhitespace\",\n value: function equalizeWhitespace(string) {\n return string.replace(/[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]+/g, ' ');\n } // Opening parentheses increase the block indent level and start a new line\n\n }, {\n key: \"formatOpeningParentheses\",\n value: function formatOpeningParentheses(token, query) {\n // Take out the preceding space unless there was whitespace there in the original query\n // or another opening parens or line comment\n var preserveWhitespaceFor = [_tokenTypes[\"default\"].WHITESPACE, _tokenTypes[\"default\"].OPEN_PAREN, _tokenTypes[\"default\"].LINE_COMMENT];\n\n if (!(0, _includes[\"default\"])(preserveWhitespaceFor, this.previousToken().type)) {\n query = trimSpacesEnd(query);\n }\n\n query += this.cfg.uppercase ? token.value.toUpperCase() : token.value;\n this.inlineBlock.beginIfPossible(this.tokens, this.index);\n\n if (!this.inlineBlock.isActive()) {\n this.indentation.increaseBlockLevel();\n query = this.addNewline(query);\n }\n\n return query;\n } // Closing parentheses decrease the block indent level\n\n }, {\n key: \"formatClosingParentheses\",\n value: function formatClosingParentheses(token, query) {\n token.value = this.cfg.uppercase ? token.value.toUpperCase() : token.value;\n\n if (this.inlineBlock.isActive()) {\n this.inlineBlock.end();\n return this.formatWithSpaceAfter(token, query);\n } else {\n this.indentation.decreaseBlockLevel();\n return this.formatWithSpaces(token, this.addNewline(query));\n }\n }\n }, {\n key: \"formatPlaceholder\",\n value: function formatPlaceholder(token, query) {\n return query + this.params.get(token) + ' ';\n } // Commas start a new line (unless within inline parentheses or SQL \"LIMIT\" clause)\n\n }, {\n key: \"formatComma\",\n value: function formatComma(token, query) {\n query = trimSpacesEnd(query) + token.value + ' ';\n\n if (this.inlineBlock.isActive()) {\n return query;\n } else if (/^LIMIT$/i.test(this.previousReservedWord.value)) {\n return query;\n } else {\n return this.addNewline(query);\n }\n }\n }, {\n key: \"formatWithSpaceAfter\",\n value: function formatWithSpaceAfter(token, query) {\n return trimSpacesEnd(query) + token.value + ' ';\n }\n }, {\n key: \"formatWithoutSpaces\",\n value: function formatWithoutSpaces(token, query) {\n return trimSpacesEnd(query) + token.value;\n }\n }, {\n key: \"formatWithSpaces\",\n value: function formatWithSpaces(token, query) {\n var value = token.type === 'reserved' ? this.formatReservedWord(token.value) : token.value;\n return query + value + ' ';\n }\n }, {\n key: \"formatReservedWord\",\n value: function formatReservedWord(value) {\n return this.cfg.uppercase ? value.toUpperCase() : value;\n }\n }, {\n key: \"formatQuerySeparator\",\n value: function formatQuerySeparator(token, query) {\n this.indentation.resetIndentation();\n return trimSpacesEnd(query) + token.value + '\\n'.repeat(this.cfg.linesBetweenQueries || 1);\n }\n }, {\n key: \"addNewline\",\n value: function addNewline(query) {\n query = trimSpacesEnd(query);\n if (!query.endsWith('\\n')) query += '\\n';\n return query + this.indentation.getIndent();\n }\n }, {\n key: \"previousToken\",\n value: function previousToken() {\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n return this.tokens[this.index - offset] || {};\n }\n }]);\n\n return Formatter;\n}();\n\nexports[\"default\"] = Formatter;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _repeat = _interopRequireDefault(require(\"lodash/repeat\"));\n\nvar _last = _interopRequireDefault(require(\"lodash/last\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar INDENT_TYPE_TOP_LEVEL = 'top-level';\nvar INDENT_TYPE_BLOCK_LEVEL = 'block-level';\n/**\r\n * Manages indentation levels.\r\n *\r\n * There are two types of indentation levels:\r\n *\r\n * - BLOCK_LEVEL : increased by open-parenthesis\r\n * - TOP_LEVEL : increased by RESERVED_TOP_LEVEL words\r\n */\n\nvar Indentation =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @param {String} indent Indent value, default is \" \" (2 spaces)\r\n */\n function Indentation(indent) {\n _classCallCheck(this, Indentation);\n\n this.indent = indent || ' ';\n this.indentTypes = [];\n }\n /**\r\n * Returns current indentation string.\r\n * @return {String}\r\n */\n\n\n _createClass(Indentation, [{\n key: \"getIndent\",\n value: function getIndent() {\n return (0, _repeat[\"default\"])(this.indent, this.indentTypes.length);\n }\n /**\r\n * Increases indentation by one top-level indent.\r\n */\n\n }, {\n key: \"increaseTopLevel\",\n value: function increaseTopLevel() {\n this.indentTypes.push(INDENT_TYPE_TOP_LEVEL);\n }\n /**\r\n * Increases indentation by one block-level indent.\r\n */\n\n }, {\n key: \"increaseBlockLevel\",\n value: function increaseBlockLevel() {\n this.indentTypes.push(INDENT_TYPE_BLOCK_LEVEL);\n }\n /**\r\n * Decreases indentation by one top-level indent.\r\n * Does nothing when the previous indent is not top-level.\r\n */\n\n }, {\n key: \"decreaseTopLevel\",\n value: function decreaseTopLevel() {\n if ((0, _last[\"default\"])(this.indentTypes) === INDENT_TYPE_TOP_LEVEL) {\n this.indentTypes.pop();\n }\n }\n /**\r\n * Decreases indentation by one block-level indent.\r\n * If there are top-level indents within the block-level indent,\r\n * throws away these as well.\r\n */\n\n }, {\n key: \"decreaseBlockLevel\",\n value: function decreaseBlockLevel() {\n while (this.indentTypes.length > 0) {\n var type = this.indentTypes.pop();\n\n if (type !== INDENT_TYPE_TOP_LEVEL) {\n break;\n }\n }\n }\n }, {\n key: \"resetIndentation\",\n value: function resetIndentation() {\n this.indentTypes = [];\n }\n }]);\n\n return Indentation;\n}();\n\nexports[\"default\"] = Indentation;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _tokenTypes = _interopRequireDefault(require(\"./tokenTypes\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar INLINE_MAX_LENGTH = 50;\n/**\r\n * Bookkeeper for inline blocks.\r\n *\r\n * Inline blocks are parenthesized expressions that are shorter than INLINE_MAX_LENGTH.\r\n * These blocks are formatted on a single line, unlike longer parenthesized\r\n * expressions where open-parenthesis causes newline and increase of indentation.\r\n */\n\nvar InlineBlock =\n/*#__PURE__*/\nfunction () {\n function InlineBlock() {\n _classCallCheck(this, InlineBlock);\n\n this.level = 0;\n }\n /**\r\n * Begins inline block when lookahead through upcoming tokens determines\r\n * that the block would be smaller than INLINE_MAX_LENGTH.\r\n * @param {Object[]} tokens Array of all tokens\r\n * @param {Number} index Current token position\r\n */\n\n\n _createClass(InlineBlock, [{\n key: \"beginIfPossible\",\n value: function beginIfPossible(tokens, index) {\n if (this.level === 0 && this.isInlineBlock(tokens, index)) {\n this.level = 1;\n } else if (this.level > 0) {\n this.level++;\n } else {\n this.level = 0;\n }\n }\n /**\r\n * Finishes current inline block.\r\n * There might be several nested ones.\r\n */\n\n }, {\n key: \"end\",\n value: function end() {\n this.level--;\n }\n /**\r\n * True when inside an inline block\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isActive\",\n value: function isActive() {\n return this.level > 0;\n } // Check if this should be an inline parentheses block\n // Examples are \"NOW()\", \"COUNT(*)\", \"int(10)\", key(`some_column`), DECIMAL(7,2)\n\n }, {\n key: \"isInlineBlock\",\n value: function isInlineBlock(tokens, index) {\n var length = 0;\n var level = 0;\n\n for (var i = index; i < tokens.length; i++) {\n var token = tokens[i];\n length += token.value.length; // Overran max length\n\n if (length > INLINE_MAX_LENGTH) {\n return false;\n }\n\n if (token.type === _tokenTypes[\"default\"].OPEN_PAREN) {\n level++;\n } else if (token.type === _tokenTypes[\"default\"].CLOSE_PAREN) {\n level--;\n\n if (level === 0) {\n return true;\n }\n }\n\n if (this.isForbiddenToken(token)) {\n return false;\n }\n }\n\n return false;\n } // Reserved words that cause newlines, comments and semicolons\n // are not allowed inside inline parentheses block\n\n }, {\n key: \"isForbiddenToken\",\n value: function isForbiddenToken(_ref) {\n var type = _ref.type,\n value = _ref.value;\n return type === _tokenTypes[\"default\"].RESERVED_TOP_LEVEL || type === _tokenTypes[\"default\"].RESERVED_NEWLINE || type === _tokenTypes[\"default\"].COMMENT || type === _tokenTypes[\"default\"].BLOCK_COMMENT || value === ';';\n }\n }]);\n\n return InlineBlock;\n}();\n\nexports[\"default\"] = InlineBlock;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\r\n * Handles placeholder replacement with given params.\r\n */\nvar Params =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @param {Object} params\r\n */\n function Params(params) {\n _classCallCheck(this, Params);\n\n this.params = params;\n this.index = 0;\n }\n /**\r\n * Returns param value that matches given placeholder with param key.\r\n * @param {Object} token\r\n * @param {String} token.key Placeholder key\r\n * @param {String} token.value Placeholder value\r\n * @return {String} param or token.value when params are missing\r\n */\n\n\n _createClass(Params, [{\n key: \"get\",\n value: function get(_ref) {\n var key = _ref.key,\n value = _ref.value;\n\n if (!this.params) {\n return value;\n }\n\n if (key) {\n return this.params[key];\n }\n\n return this.params[this.index++];\n }\n }]);\n\n return Params;\n}();\n\nexports[\"default\"] = Params;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _isEmpty = _interopRequireDefault(require(\"lodash/isEmpty\"));\n\nvar _escapeRegExp = _interopRequireDefault(require(\"lodash/escapeRegExp\"));\n\nvar _tokenTypes = _interopRequireDefault(require(\"./tokenTypes\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Tokenizer =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @param {Object} cfg\r\n * @param {String[]} cfg.reservedWords Reserved words in SQL\r\n * @param {String[]} cfg.reservedTopLevelWords Words that are set to new line separately\r\n * @param {String[]} cfg.reservedNewlineWords Words that are set to newline\r\n * @param {String[]} cfg.reservedTopLevelWordsNoIndent Words that are top level but have no indentation\r\n * @param {String[]} cfg.stringTypes String types to enable: \"\", '', ``, [], N''\r\n * @param {String[]} cfg.openParens Opening parentheses to enable, like (, [\r\n * @param {String[]} cfg.closeParens Closing parentheses to enable, like ), ]\r\n * @param {String[]} cfg.indexedPlaceholderTypes Prefixes for indexed placeholders, like ?\r\n * @param {String[]} cfg.namedPlaceholderTypes Prefixes for named placeholders, like @ and :\r\n * @param {String[]} cfg.lineCommentTypes Line comments to enable, like # and --\r\n * @param {String[]} cfg.specialWordChars Special chars that can be found inside of words, like @ and #\r\n */\n function Tokenizer(cfg) {\n _classCallCheck(this, Tokenizer);\n\n this.WHITESPACE_REGEX = /^([\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]+)/;\n this.NUMBER_REGEX = /^((\\x2D[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*)?[0-9]+(\\.[0-9]+)?|0x[0-9A-Fa-f]+|0b[01]+)\\b/;\n this.OPERATOR_REGEX = /^(!=|<>|==|<=|>=|!<|!>|\\|\\||::|\\x2D>>|\\x2D>|~~\\*|~~|!~~\\*|!~~|~\\*|!~\\*|!~|:=|(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]))/;\n this.BLOCK_COMMENT_REGEX = /^(\\/\\*(?:[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?(?:\\*\\/|$))/;\n this.LINE_COMMENT_REGEX = this.createLineCommentRegex(cfg.lineCommentTypes);\n this.RESERVED_TOP_LEVEL_REGEX = this.createReservedWordRegex(cfg.reservedTopLevelWords);\n this.RESERVED_TOP_LEVEL_NO_INDENT_REGEX = this.createReservedWordRegex(cfg.reservedTopLevelWordsNoIndent);\n this.RESERVED_NEWLINE_REGEX = this.createReservedWordRegex(cfg.reservedNewlineWords);\n this.RESERVED_PLAIN_REGEX = this.createReservedWordRegex(cfg.reservedWords);\n this.WORD_REGEX = this.createWordRegex(cfg.specialWordChars);\n this.STRING_REGEX = this.createStringRegex(cfg.stringTypes);\n this.OPEN_PAREN_REGEX = this.createParenRegex(cfg.openParens);\n this.CLOSE_PAREN_REGEX = this.createParenRegex(cfg.closeParens);\n this.INDEXED_PLACEHOLDER_REGEX = this.createPlaceholderRegex(cfg.indexedPlaceholderTypes, '[0-9]*');\n this.IDENT_NAMED_PLACEHOLDER_REGEX = this.createPlaceholderRegex(cfg.namedPlaceholderTypes, '[a-zA-Z0-9._$]+');\n this.STRING_NAMED_PLACEHOLDER_REGEX = this.createPlaceholderRegex(cfg.namedPlaceholderTypes, this.createStringPattern(cfg.stringTypes));\n }\n\n _createClass(Tokenizer, [{\n key: \"createLineCommentRegex\",\n value: function createLineCommentRegex(lineCommentTypes) {\n return new RegExp(\"^((?:\".concat(lineCommentTypes.map(function (c) {\n return (0, _escapeRegExp[\"default\"])(c);\n }).join('|'), \").*?(?:\\r\\n|\\r|\\n|$))\"), 'u');\n }\n }, {\n key: \"createReservedWordRegex\",\n value: function createReservedWordRegex(reservedWords) {\n var reservedWordsPattern = reservedWords.join('|').replace(/ /g, '\\\\s+');\n return new RegExp(\"^(\".concat(reservedWordsPattern, \")\\\\b\"), 'iu');\n }\n }, {\n key: \"createWordRegex\",\n value: function createWordRegex() {\n var specialChars = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return new RegExp(\"^([\\\\p{Alphabetic}\\\\p{Mark}\\\\p{Decimal_Number}\\\\p{Connector_Punctuation}\\\\p{Join_Control}\".concat(specialChars.join(''), \"]+)\"), 'u');\n }\n }, {\n key: \"createStringRegex\",\n value: function createStringRegex(stringTypes) {\n return new RegExp('^(' + this.createStringPattern(stringTypes) + ')', 'u');\n } // This enables the following string patterns:\n // 1. backtick quoted string using `` to escape\n // 2. square bracket quoted string (SQL Server) using ]] to escape\n // 3. double quoted string using \"\" or \\\" to escape\n // 4. single quoted string using '' or \\' to escape\n // 5. national character quoted string using N'' or N\\' to escape\n\n }, {\n key: \"createStringPattern\",\n value: function createStringPattern(stringTypes) {\n var patterns = {\n '``': '((`[^`]*($|`))+)',\n '[]': '((\\\\[[^\\\\]]*($|\\\\]))(\\\\][^\\\\]]*($|\\\\]))*)',\n '\"\"': '((\"[^\"\\\\\\\\]*(?:\\\\\\\\.[^\"\\\\\\\\]*)*(\"|$))+)',\n \"''\": \"(('[^'\\\\\\\\]*(?:\\\\\\\\.[^'\\\\\\\\]*)*('|$))+)\",\n \"N''\": \"((N'[^N'\\\\\\\\]*(?:\\\\\\\\.[^N'\\\\\\\\]*)*('|$))+)\"\n };\n return stringTypes.map(function (t) {\n return patterns[t];\n }).join('|');\n }\n }, {\n key: \"createParenRegex\",\n value: function createParenRegex(parens) {\n var _this = this;\n\n return new RegExp('^(' + parens.map(function (p) {\n return _this.escapeParen(p);\n }).join('|') + ')', 'iu');\n }\n }, {\n key: \"escapeParen\",\n value: function escapeParen(paren) {\n if (paren.length === 1) {\n // A single punctuation character\n return (0, _escapeRegExp[\"default\"])(paren);\n } else {\n // longer word\n return '\\\\b' + paren + '\\\\b';\n }\n }\n }, {\n key: \"createPlaceholderRegex\",\n value: function createPlaceholderRegex(types, pattern) {\n if ((0, _isEmpty[\"default\"])(types)) {\n return false;\n }\n\n var typesRegex = types.map(_escapeRegExp[\"default\"]).join('|');\n return new RegExp(\"^((?:\".concat(typesRegex, \")(?:\").concat(pattern, \"))\"), 'u');\n }\n /**\r\n * Takes a SQL string and breaks it into tokens.\r\n * Each token is an object with type and value.\r\n *\r\n * @param {String} input The SQL string\r\n * @return {Object[]} tokens An array of tokens.\r\n * @return {String} token.type\r\n * @return {String} token.value\r\n */\n\n }, {\n key: \"tokenize\",\n value: function tokenize(input) {\n if (!input) return [];\n var tokens = [];\n var token; // Keep processing the string until it is empty\n\n while (input.length) {\n // Get the next token and the token type\n token = this.getNextToken(input, token); // Advance the string\n\n input = input.substring(token.value.length);\n tokens.push(token);\n }\n\n return tokens;\n }\n }, {\n key: \"getNextToken\",\n value: function getNextToken(input, previousToken) {\n return this.getWhitespaceToken(input) || this.getCommentToken(input) || this.getStringToken(input) || this.getOpenParenToken(input) || this.getCloseParenToken(input) || this.getPlaceholderToken(input) || this.getNumberToken(input) || this.getReservedWordToken(input, previousToken) || this.getWordToken(input) || this.getOperatorToken(input);\n }\n }, {\n key: \"getWhitespaceToken\",\n value: function getWhitespaceToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].WHITESPACE,\n regex: this.WHITESPACE_REGEX\n });\n }\n }, {\n key: \"getCommentToken\",\n value: function getCommentToken(input) {\n return this.getLineCommentToken(input) || this.getBlockCommentToken(input);\n }\n }, {\n key: \"getLineCommentToken\",\n value: function getLineCommentToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].LINE_COMMENT,\n regex: this.LINE_COMMENT_REGEX\n });\n }\n }, {\n key: \"getBlockCommentToken\",\n value: function getBlockCommentToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].BLOCK_COMMENT,\n regex: this.BLOCK_COMMENT_REGEX\n });\n }\n }, {\n key: \"getStringToken\",\n value: function getStringToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].STRING,\n regex: this.STRING_REGEX\n });\n }\n }, {\n key: \"getOpenParenToken\",\n value: function getOpenParenToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].OPEN_PAREN,\n regex: this.OPEN_PAREN_REGEX\n });\n }\n }, {\n key: \"getCloseParenToken\",\n value: function getCloseParenToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].CLOSE_PAREN,\n regex: this.CLOSE_PAREN_REGEX\n });\n }\n }, {\n key: \"getPlaceholderToken\",\n value: function getPlaceholderToken(input) {\n return this.getIdentNamedPlaceholderToken(input) || this.getStringNamedPlaceholderToken(input) || this.getIndexedPlaceholderToken(input);\n }\n }, {\n key: \"getIdentNamedPlaceholderToken\",\n value: function getIdentNamedPlaceholderToken(input) {\n return this.getPlaceholderTokenWithKey({\n input: input,\n regex: this.IDENT_NAMED_PLACEHOLDER_REGEX,\n parseKey: function parseKey(v) {\n return v.slice(1);\n }\n });\n }\n }, {\n key: \"getStringNamedPlaceholderToken\",\n value: function getStringNamedPlaceholderToken(input) {\n var _this2 = this;\n\n return this.getPlaceholderTokenWithKey({\n input: input,\n regex: this.STRING_NAMED_PLACEHOLDER_REGEX,\n parseKey: function parseKey(v) {\n return _this2.getEscapedPlaceholderKey({\n key: v.slice(2, -1),\n quoteChar: v.slice(-1)\n });\n }\n });\n }\n }, {\n key: \"getIndexedPlaceholderToken\",\n value: function getIndexedPlaceholderToken(input) {\n return this.getPlaceholderTokenWithKey({\n input: input,\n regex: this.INDEXED_PLACEHOLDER_REGEX,\n parseKey: function parseKey(v) {\n return v.slice(1);\n }\n });\n }\n }, {\n key: \"getPlaceholderTokenWithKey\",\n value: function getPlaceholderTokenWithKey(_ref) {\n var input = _ref.input,\n regex = _ref.regex,\n parseKey = _ref.parseKey;\n var token = this.getTokenOnFirstMatch({\n input: input,\n regex: regex,\n type: _tokenTypes[\"default\"].PLACEHOLDER\n });\n\n if (token) {\n token.key = parseKey(token.value);\n }\n\n return token;\n }\n }, {\n key: \"getEscapedPlaceholderKey\",\n value: function getEscapedPlaceholderKey(_ref2) {\n var key = _ref2.key,\n quoteChar = _ref2.quoteChar;\n return key.replace(new RegExp((0, _escapeRegExp[\"default\"])('\\\\' + quoteChar), 'gu'), quoteChar);\n } // Decimal, binary, or hex numbers\n\n }, {\n key: \"getNumberToken\",\n value: function getNumberToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].NUMBER,\n regex: this.NUMBER_REGEX\n });\n } // Punctuation and symbols\n\n }, {\n key: \"getOperatorToken\",\n value: function getOperatorToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].OPERATOR,\n regex: this.OPERATOR_REGEX\n });\n }\n }, {\n key: \"getReservedWordToken\",\n value: function getReservedWordToken(input, previousToken) {\n // A reserved word cannot be preceded by a \".\"\n // this makes it so in \"my_table.from\", \"from\" is not considered a reserved word\n if (previousToken && previousToken.value && previousToken.value === '.') {\n return;\n }\n\n return this.getTopLevelReservedToken(input) || this.getNewlineReservedToken(input) || this.getTopLevelReservedTokenNoIndent(input) || this.getPlainReservedToken(input);\n }\n }, {\n key: \"getTopLevelReservedToken\",\n value: function getTopLevelReservedToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].RESERVED_TOP_LEVEL,\n regex: this.RESERVED_TOP_LEVEL_REGEX\n });\n }\n }, {\n key: \"getNewlineReservedToken\",\n value: function getNewlineReservedToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].RESERVED_NEWLINE,\n regex: this.RESERVED_NEWLINE_REGEX\n });\n }\n }, {\n key: \"getTopLevelReservedTokenNoIndent\",\n value: function getTopLevelReservedTokenNoIndent(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].RESERVED_TOP_LEVEL_NO_INDENT,\n regex: this.RESERVED_TOP_LEVEL_NO_INDENT_REGEX\n });\n }\n }, {\n key: \"getPlainReservedToken\",\n value: function getPlainReservedToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].RESERVED,\n regex: this.RESERVED_PLAIN_REGEX\n });\n }\n }, {\n key: \"getWordToken\",\n value: function getWordToken(input) {\n return this.getTokenOnFirstMatch({\n input: input,\n type: _tokenTypes[\"default\"].WORD,\n regex: this.WORD_REGEX\n });\n }\n }, {\n key: \"getTokenOnFirstMatch\",\n value: function getTokenOnFirstMatch(_ref3) {\n var input = _ref3.input,\n type = _ref3.type,\n regex = _ref3.regex;\n var matches = input.match(regex);\n\n if (matches) {\n return {\n type: type,\n value: matches[1]\n };\n }\n }\n }]);\n\n return Tokenizer;\n}();\n\nexports[\"default\"] = Tokenizer;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\n/**\r\n * Constants for token types\r\n */\nvar _default = {\n WHITESPACE: 'whitespace',\n WORD: 'word',\n STRING: 'string',\n RESERVED: 'reserved',\n RESERVED_TOP_LEVEL: 'reserved-top-level',\n RESERVED_TOP_LEVEL_NO_INDENT: 'reserved-top-level-no-indent',\n RESERVED_NEWLINE: 'reserved-newline',\n OPERATOR: 'operator',\n OPEN_PAREN: 'open-paren',\n CLOSE_PAREN: 'close-paren',\n LINE_COMMENT: 'line-comment',\n BLOCK_COMMENT: 'block-comment',\n NUMBER: 'number',\n PLACEHOLDER: 'placeholder'\n};\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _Formatter = _interopRequireDefault(require(\"../core/Formatter\"));\n\nvar _Tokenizer = _interopRequireDefault(require(\"../core/Tokenizer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar reservedWords = ['ABS', 'ACTIVATE', 'ALIAS', 'ALL', 'ALLOCATE', 'ALLOW', 'ALTER', 'ANY', 'ARE', 'ARRAY', 'AS', 'ASC', 'ASENSITIVE', 'ASSOCIATE', 'ASUTIME', 'ASYMMETRIC', 'AT', 'ATOMIC', 'ATTRIBUTES', 'AUDIT', 'AUTHORIZATION', 'AUX', 'AUXILIARY', 'AVG', 'BEFORE', 'BEGIN', 'BETWEEN', 'BIGINT', 'BINARY', 'BLOB', 'BOOLEAN', 'BOTH', 'BUFFERPOOL', 'BY', 'CACHE', 'CALL', 'CALLED', 'CAPTURE', 'CARDINALITY', 'CASCADED', 'CASE', 'CAST', 'CCSID', 'CEIL', 'CEILING', 'CHAR', 'CHARACTER', 'CHARACTER_LENGTH', 'CHAR_LENGTH', 'CHECK', 'CLOB', 'CLONE', 'CLOSE', 'CLUSTER', 'COALESCE', 'COLLATE', 'COLLECT', 'COLLECTION', 'COLLID', 'COLUMN', 'COMMENT', 'COMMIT', 'CONCAT', 'CONDITION', 'CONNECT', 'CONNECTION', 'CONSTRAINT', 'CONTAINS', 'CONTINUE', 'CONVERT', 'CORR', 'CORRESPONDING', 'COUNT', 'COUNT_BIG', 'COVAR_POP', 'COVAR_SAMP', 'CREATE', 'CROSS', 'CUBE', 'CUME_DIST', 'CURRENT', 'CURRENT_DATE', 'CURRENT_DEFAULT_TRANSFORM_GROUP', 'CURRENT_LC_CTYPE', 'CURRENT_PATH', 'CURRENT_ROLE', 'CURRENT_SCHEMA', 'CURRENT_SERVER', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_TIMEZONE', 'CURRENT_TRANSFORM_GROUP_FOR_TYPE', 'CURRENT_USER', 'CURSOR', 'CYCLE', 'DATA', 'DATABASE', 'DATAPARTITIONNAME', 'DATAPARTITIONNUM', 'DATE', 'DAY', 'DAYS', 'DB2GENERAL', 'DB2GENRL', 'DB2SQL', 'DBINFO', 'DBPARTITIONNAME', 'DBPARTITIONNUM', 'DEALLOCATE', 'DEC', 'DECIMAL', 'DECLARE', 'DEFAULT', 'DEFAULTS', 'DEFINITION', 'DELETE', 'DENSERANK', 'DENSE_RANK', 'DEREF', 'DESCRIBE', 'DESCRIPTOR', 'DETERMINISTIC', 'DIAGNOSTICS', 'DISABLE', 'DISALLOW', 'DISCONNECT', 'DISTINCT', 'DO', 'DOCUMENT', 'DOUBLE', 'DROP', 'DSSIZE', 'DYNAMIC', 'EACH', 'EDITPROC', 'ELEMENT', 'ELSE', 'ELSEIF', 'ENABLE', 'ENCODING', 'ENCRYPTION', 'END', 'END-EXEC', 'ENDING', 'ERASE', 'ESCAPE', 'EVERY', 'EXCEPTION', 'EXCLUDING', 'EXCLUSIVE', 'EXEC', 'EXECUTE', 'EXISTS', 'EXIT', 'EXP', 'EXPLAIN', 'EXTENDED', 'EXTERNAL', 'EXTRACT', 'FALSE', 'FENCED', 'FETCH', 'FIELDPROC', 'FILE', 'FILTER', 'FINAL', 'FIRST', 'FLOAT', 'FLOOR', 'FOR', 'FOREIGN', 'FREE', 'FULL', 'FUNCTION', 'FUSION', 'GENERAL', 'GENERATED', 'GET', 'GLOBAL', 'GOTO', 'GRANT', 'GRAPHIC', 'GROUP', 'GROUPING', 'HANDLER', 'HASH', 'HASHED_VALUE', 'HINT', 'HOLD', 'HOUR', 'HOURS', 'IDENTITY', 'IF', 'IMMEDIATE', 'IN', 'INCLUDING', 'INCLUSIVE', 'INCREMENT', 'INDEX', 'INDICATOR', 'INDICATORS', 'INF', 'INFINITY', 'INHERIT', 'INNER', 'INOUT', 'INSENSITIVE', 'INSERT', 'INT', 'INTEGER', 'INTEGRITY', 'INTERSECTION', 'INTERVAL', 'INTO', 'IS', 'ISOBID', 'ISOLATION', 'ITERATE', 'JAR', 'JAVA', 'KEEP', 'KEY', 'LABEL', 'LANGUAGE', 'LARGE', 'LATERAL', 'LC_CTYPE', 'LEADING', 'LEAVE', 'LEFT', 'LIKE', 'LINKTYPE', 'LN', 'LOCAL', 'LOCALDATE', 'LOCALE', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCATOR', 'LOCATORS', 'LOCK', 'LOCKMAX', 'LOCKSIZE', 'LONG', 'LOOP', 'LOWER', 'MAINTAINED', 'MATCH', 'MATERIALIZED', 'MAX', 'MAXVALUE', 'MEMBER', 'MERGE', 'METHOD', 'MICROSECOND', 'MICROSECONDS', 'MIN', 'MINUTE', 'MINUTES', 'MINVALUE', 'MOD', 'MODE', 'MODIFIES', 'MODULE', 'MONTH', 'MONTHS', 'MULTISET', 'NAN', 'NATIONAL', 'NATURAL', 'NCHAR', 'NCLOB', 'NEW', 'NEW_TABLE', 'NEXTVAL', 'NO', 'NOCACHE', 'NOCYCLE', 'NODENAME', 'NODENUMBER', 'NOMAXVALUE', 'NOMINVALUE', 'NONE', 'NOORDER', 'NORMALIZE', 'NORMALIZED', 'NOT', 'NULL', 'NULLIF', 'NULLS', 'NUMERIC', 'NUMPARTS', 'OBID', 'OCTET_LENGTH', 'OF', 'OFFSET', 'OLD', 'OLD_TABLE', 'ON', 'ONLY', 'OPEN', 'OPTIMIZATION', 'OPTIMIZE', 'OPTION', 'ORDER', 'OUT', 'OUTER', 'OVER', 'OVERLAPS', 'OVERLAY', 'OVERRIDING', 'PACKAGE', 'PADDED', 'PAGESIZE', 'PARAMETER', 'PART', 'PARTITION', 'PARTITIONED', 'PARTITIONING', 'PARTITIONS', 'PASSWORD', 'PATH', 'PERCENTILE_CONT', 'PERCENTILE_DISC', 'PERCENT_RANK', 'PIECESIZE', 'PLAN', 'POSITION', 'POWER', 'PRECISION', 'PREPARE', 'PREVVAL', 'PRIMARY', 'PRIQTY', 'PRIVILEGES', 'PROCEDURE', 'PROGRAM', 'PSID', 'PUBLIC', 'QUERY', 'QUERYNO', 'RANGE', 'RANK', 'READ', 'READS', 'REAL', 'RECOVERY', 'RECURSIVE', 'REF', 'REFERENCES', 'REFERENCING', 'REFRESH', 'REGR_AVGX', 'REGR_AVGY', 'REGR_COUNT', 'REGR_INTERCEPT', 'REGR_R2', 'REGR_SLOPE', 'REGR_SXX', 'REGR_SXY', 'REGR_SYY', 'RELEASE', 'RENAME', 'REPEAT', 'RESET', 'RESIGNAL', 'RESTART', 'RESTRICT', 'RESULT', 'RESULT_SET_LOCATOR', 'RETURN', 'RETURNS', 'REVOKE', 'RIGHT', 'ROLE', 'ROLLBACK', 'ROLLUP', 'ROUND_CEILING', 'ROUND_DOWN', 'ROUND_FLOOR', 'ROUND_HALF_DOWN', 'ROUND_HALF_EVEN', 'ROUND_HALF_UP', 'ROUND_UP', 'ROUTINE', 'ROW', 'ROWNUMBER', 'ROWS', 'ROWSET', 'ROW_NUMBER', 'RRN', 'RUN', 'SAVEPOINT', 'SCHEMA', 'SCOPE', 'SCRATCHPAD', 'SCROLL', 'SEARCH', 'SECOND', 'SECONDS', 'SECQTY', 'SECURITY', 'SENSITIVE', 'SEQUENCE', 'SESSION', 'SESSION_USER', 'SIGNAL', 'SIMILAR', 'SIMPLE', 'SMALLINT', 'SNAN', 'SOME', 'SOURCE', 'SPECIFIC', 'SPECIFICTYPE', 'SQL', 'SQLEXCEPTION', 'SQLID', 'SQLSTATE', 'SQLWARNING', 'SQRT', 'STACKED', 'STANDARD', 'START', 'STARTING', 'STATEMENT', 'STATIC', 'STATMENT', 'STAY', 'STDDEV_POP', 'STDDEV_SAMP', 'STOGROUP', 'STORES', 'STYLE', 'SUBMULTISET', 'SUBSTRING', 'SUM', 'SUMMARY', 'SYMMETRIC', 'SYNONYM', 'SYSFUN', 'SYSIBM', 'SYSPROC', 'SYSTEM', 'SYSTEM_USER', 'TABLE', 'TABLESAMPLE', 'TABLESPACE', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_HOUR', 'TIMEZONE_MINUTE', 'TO', 'TRAILING', 'TRANSACTION', 'TRANSLATE', 'TRANSLATION', 'TREAT', 'TRIGGER', 'TRIM', 'TRUE', 'TRUNCATE', 'TYPE', 'UESCAPE', 'UNDO', 'UNIQUE', 'UNKNOWN', 'UNNEST', 'UNTIL', 'UPPER', 'USAGE', 'USER', 'USING', 'VALIDPROC', 'VALUE', 'VARCHAR', 'VARIABLE', 'VARIANT', 'VARYING', 'VAR_POP', 'VAR_SAMP', 'VCAT', 'VERSION', 'VIEW', 'VOLATILE', 'VOLUMES', 'WHEN', 'WHENEVER', 'WHILE', 'WIDTH_BUCKET', 'WINDOW', 'WITH', 'WITHIN', 'WITHOUT', 'WLM', 'WRITE', 'XMLELEMENT', 'XMLEXISTS', 'XMLNAMESPACES', 'YEAR', 'YEARS'];\nvar reservedTopLevelWords = ['ADD', 'AFTER', 'ALTER COLUMN', 'ALTER TABLE', 'DELETE FROM', 'EXCEPT', 'FETCH FIRST', 'FROM', 'GROUP BY', 'GO', 'HAVING', 'INSERT INTO', 'INTERSECT', 'LIMIT', 'ORDER BY', 'SELECT', 'SET CURRENT SCHEMA', 'SET SCHEMA', 'SET', 'UPDATE', 'VALUES', 'WHERE'];\nvar reservedTopLevelWordsNoIndent = ['INTERSECT', 'INTERSECT ALL', 'MINUS', 'UNION', 'UNION ALL'];\nvar reservedNewlineWords = ['AND', 'CROSS JOIN', 'INNER JOIN', 'JOIN', 'LEFT JOIN', 'LEFT OUTER JOIN', 'OR', 'OUTER JOIN', 'RIGHT JOIN', 'RIGHT OUTER JOIN'];\nvar tokenizer;\n\nvar Db2Formatter =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @param {Object} cfg Different set of configurations\r\n */\n function Db2Formatter(cfg) {\n _classCallCheck(this, Db2Formatter);\n\n this.cfg = cfg;\n }\n /**\r\n * Formats DB2 query to make it easier to read\r\n *\r\n * @param {String} query The DB2 query string\r\n * @return {String} formatted string\r\n */\n\n\n _createClass(Db2Formatter, [{\n key: \"format\",\n value: function format(query) {\n if (!tokenizer) {\n tokenizer = new _Tokenizer[\"default\"]({\n reservedWords: reservedWords,\n reservedTopLevelWords: reservedTopLevelWords,\n reservedNewlineWords: reservedNewlineWords,\n reservedTopLevelWordsNoIndent: reservedTopLevelWordsNoIndent,\n stringTypes: [\"\\\"\\\"\", \"''\", '``', '[]'],\n openParens: ['('],\n closeParens: [')'],\n indexedPlaceholderTypes: ['?'],\n namedPlaceholderTypes: [':'],\n lineCommentTypes: ['--'],\n specialWordChars: ['#', '@']\n });\n }\n\n return new _Formatter[\"default\"](this.cfg, tokenizer).format(query);\n }\n }]);\n\n return Db2Formatter;\n}();\n\nexports[\"default\"] = Db2Formatter;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _Formatter = _interopRequireDefault(require(\"../core/Formatter\"));\n\nvar _Tokenizer = _interopRequireDefault(require(\"../core/Tokenizer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar reservedWords = ['ALL', 'ALTER', 'ANALYZE', 'AND', 'ANY', 'ARRAY', 'AS', 'ASC', 'BEGIN', 'BETWEEN', 'BINARY', 'BOOLEAN', 'BREAK', 'BUCKET', 'BUILD', 'BY', 'CALL', 'CASE', 'CAST', 'CLUSTER', 'COLLATE', 'COLLECTION', 'COMMIT', 'CONNECT', 'CONTINUE', 'CORRELATE', 'COVER', 'CREATE', 'DATABASE', 'DATASET', 'DATASTORE', 'DECLARE', 'DECREMENT', 'DELETE', 'DERIVED', 'DESC', 'DESCRIBE', 'DISTINCT', 'DO', 'DROP', 'EACH', 'ELEMENT', 'ELSE', 'END', 'EVERY', 'EXCEPT', 'EXCLUDE', 'EXECUTE', 'EXISTS', 'EXPLAIN', 'FALSE', 'FETCH', 'FIRST', 'FLATTEN', 'FOR', 'FORCE', 'FROM', 'FUNCTION', 'GRANT', 'GROUP', 'GSI', 'HAVING', 'IF', 'IGNORE', 'ILIKE', 'IN', 'INCLUDE', 'INCREMENT', 'INDEX', 'INFER', 'INLINE', 'INNER', 'INSERT', 'INTERSECT', 'INTO', 'IS', 'JOIN', 'KEY', 'KEYS', 'KEYSPACE', 'KNOWN', 'LAST', 'LEFT', 'LET', 'LETTING', 'LIKE', 'LIMIT', 'LSM', 'MAP', 'MAPPING', 'MATCHED', 'MATERIALIZED', 'MERGE', 'MISSING', 'NAMESPACE', 'NEST', 'NOT', 'NULL', 'NUMBER', 'OBJECT', 'OFFSET', 'ON', 'OPTION', 'OR', 'ORDER', 'OUTER', 'OVER', 'PARSE', 'PARTITION', 'PASSWORD', 'PATH', 'POOL', 'PREPARE', 'PRIMARY', 'PRIVATE', 'PRIVILEGE', 'PROCEDURE', 'PUBLIC', 'RAW', 'REALM', 'REDUCE', 'RENAME', 'RETURN', 'RETURNING', 'REVOKE', 'RIGHT', 'ROLE', 'ROLLBACK', 'SATISFIES', 'SCHEMA', 'SELECT', 'SELF', 'SEMI', 'SET', 'SHOW', 'SOME', 'START', 'STATISTICS', 'STRING', 'SYSTEM', 'THEN', 'TO', 'TRANSACTION', 'TRIGGER', 'TRUE', 'TRUNCATE', 'UNDER', 'UNION', 'UNIQUE', 'UNKNOWN', 'UNNEST', 'UNSET', 'UPDATE', 'UPSERT', 'USE', 'USER', 'USING', 'VALIDATE', 'VALUE', 'VALUED', 'VALUES', 'VIA', 'VIEW', 'WHEN', 'WHERE', 'WHILE', 'WITH', 'WITHIN', 'WORK', 'XOR'];\nvar reservedTopLevelWords = ['DELETE FROM', 'EXCEPT ALL', 'EXCEPT', 'EXPLAIN DELETE FROM', 'EXPLAIN UPDATE', 'EXPLAIN UPSERT', 'FROM', 'GROUP BY', 'HAVING', 'INFER', 'INSERT INTO', 'LET', 'LIMIT', 'MERGE', 'NEST', 'ORDER BY', 'PREPARE', 'SELECT', 'SET CURRENT SCHEMA', 'SET SCHEMA', 'SET', 'UNNEST', 'UPDATE', 'UPSERT', 'USE KEYS', 'VALUES', 'WHERE'];\nvar reservedTopLevelWordsNoIndent = ['INTERSECT', 'INTERSECT ALL', 'MINUS', 'UNION', 'UNION ALL'];\nvar reservedNewlineWords = ['AND', 'INNER JOIN', 'JOIN', 'LEFT JOIN', 'LEFT OUTER JOIN', 'OR', 'OUTER JOIN', 'RIGHT JOIN', 'RIGHT OUTER JOIN', 'XOR'];\nvar tokenizer;\n\nvar N1qlFormatter =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @param {Object} cfg Different set of configurations\r\n */\n function N1qlFormatter(cfg) {\n _classCallCheck(this, N1qlFormatter);\n\n this.cfg = cfg;\n }\n /**\r\n * Format the whitespace in a N1QL string to make it easier to read\r\n *\r\n * @param {String} query The N1QL string\r\n * @return {String} formatted string\r\n */\n\n\n _createClass(N1qlFormatter, [{\n key: \"format\",\n value: function format(query) {\n if (!tokenizer) {\n tokenizer = new _Tokenizer[\"default\"]({\n reservedWords: reservedWords,\n reservedTopLevelWords: reservedTopLevelWords,\n reservedNewlineWords: reservedNewlineWords,\n reservedTopLevelWordsNoIndent: reservedTopLevelWordsNoIndent,\n stringTypes: [\"\\\"\\\"\", \"''\", '``'],\n openParens: ['(', '[', '{'],\n closeParens: [')', ']', '}'],\n namedPlaceholderTypes: ['$'],\n lineCommentTypes: ['#', '--']\n });\n }\n\n return new _Formatter[\"default\"](this.cfg, tokenizer).format(query);\n }\n }]);\n\n return N1qlFormatter;\n}();\n\nexports[\"default\"] = N1qlFormatter;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _Formatter = _interopRequireDefault(require(\"../core/Formatter\"));\n\nvar _Tokenizer = _interopRequireDefault(require(\"../core/Tokenizer\"));\n\nvar _tokenTypes = _interopRequireDefault(require(\"../core/tokenTypes\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar reservedWords = ['A', 'ACCESSIBLE', 'AGENT', 'AGGREGATE', 'ALL', 'ALTER', 'ANY', 'ARRAY', 'AS', 'ASC', 'AT', 'ATTRIBUTE', 'AUTHID', 'AVG', 'BETWEEN', 'BFILE_BASE', 'BINARY_INTEGER', 'BINARY', 'BLOB_BASE', 'BLOCK', 'BODY', 'BOOLEAN', 'BOTH', 'BOUND', 'BREADTH', 'BULK', 'BY', 'BYTE', 'C', 'CALL', 'CALLING', 'CASCADE', 'CASE', 'CHAR_BASE', 'CHAR', 'CHARACTER', 'CHARSET', 'CHARSETFORM', 'CHARSETID', 'CHECK', 'CLOB_BASE', 'CLONE', 'CLOSE', 'CLUSTER', 'CLUSTERS', 'COALESCE', 'COLAUTH', 'COLLECT', 'COLUMNS', 'COMMENT', 'COMMIT', 'COMMITTED', 'COMPILED', 'COMPRESS', 'CONNECT', 'CONSTANT', 'CONSTRUCTOR', 'CONTEXT', 'CONTINUE', 'CONVERT', 'COUNT', 'CRASH', 'CREATE', 'CREDENTIAL', 'CURRENT', 'CURRVAL', 'CURSOR', 'CUSTOMDATUM', 'DANGLING', 'DATA', 'DATE_BASE', 'DATE', 'DAY', 'DECIMAL', 'DEFAULT', 'DEFINE', 'DELETE', 'DEPTH', 'DESC', 'DETERMINISTIC', 'DIRECTORY', 'DISTINCT', 'DO', 'DOUBLE', 'DROP', 'DURATION', 'ELEMENT', 'ELSIF', 'EMPTY', 'END', 'ESCAPE', 'EXCEPTIONS', 'EXCLUSIVE', 'EXECUTE', 'EXISTS', 'EXIT', 'EXTENDS', 'EXTERNAL', 'EXTRACT', 'FALSE', 'FETCH', 'FINAL', 'FIRST', 'FIXED', 'FLOAT', 'FOR', 'FORALL', 'FORCE', 'FROM', 'FUNCTION', 'GENERAL', 'GOTO', 'GRANT', 'GROUP', 'HASH', 'HEAP', 'HIDDEN', 'HOUR', 'IDENTIFIED', 'IF', 'IMMEDIATE', 'IN', 'INCLUDING', 'INDEX', 'INDEXES', 'INDICATOR', 'INDICES', 'INFINITE', 'INSTANTIABLE', 'INT', 'INTEGER', 'INTERFACE', 'INTERVAL', 'INTO', 'INVALIDATE', 'IS', 'ISOLATION', 'JAVA', 'LANGUAGE', 'LARGE', 'LEADING', 'LENGTH', 'LEVEL', 'LIBRARY', 'LIKE', 'LIKE2', 'LIKE4', 'LIKEC', 'LIMITED', 'LOCAL', 'LOCK', 'LONG', 'MAP', 'MAX', 'MAXLEN', 'MEMBER', 'MERGE', 'MIN', 'MINUTE', 'MLSLABEL', 'MOD', 'MODE', 'MONTH', 'MULTISET', 'NAME', 'NAN', 'NATIONAL', 'NATIVE', 'NATURAL', 'NATURALN', 'NCHAR', 'NEW', 'NEXTVAL', 'NOCOMPRESS', 'NOCOPY', 'NOT', 'NOWAIT', 'NULL', 'NULLIF', 'NUMBER_BASE', 'NUMBER', 'OBJECT', 'OCICOLL', 'OCIDATE', 'OCIDATETIME', 'OCIDURATION', 'OCIINTERVAL', 'OCILOBLOCATOR', 'OCINUMBER', 'OCIRAW', 'OCIREF', 'OCIREFCURSOR', 'OCIROWID', 'OCISTRING', 'OCITYPE', 'OF', 'OLD', 'ON', 'ONLY', 'OPAQUE', 'OPEN', 'OPERATOR', 'OPTION', 'ORACLE', 'ORADATA', 'ORDER', 'ORGANIZATION', 'ORLANY', 'ORLVARY', 'OTHERS', 'OUT', 'OVERLAPS', 'OVERRIDING', 'PACKAGE', 'PARALLEL_ENABLE', 'PARAMETER', 'PARAMETERS', 'PARENT', 'PARTITION', 'PASCAL', 'PCTFREE', 'PIPE', 'PIPELINED', 'PLS_INTEGER', 'PLUGGABLE', 'POSITIVE', 'POSITIVEN', 'PRAGMA', 'PRECISION', 'PRIOR', 'PRIVATE', 'PROCEDURE', 'PUBLIC', 'RAISE', 'RANGE', 'RAW', 'READ', 'REAL', 'RECORD', 'REF', 'REFERENCE', 'RELEASE', 'RELIES_ON', 'REM', 'REMAINDER', 'RENAME', 'RESOURCE', 'RESULT_CACHE', 'RESULT', 'RETURN', 'RETURNING', 'REVERSE', 'REVOKE', 'ROLLBACK', 'ROW', 'ROWID', 'ROWNUM', 'ROWTYPE', 'SAMPLE', 'SAVE', 'SAVEPOINT', 'SB1', 'SB2', 'SB4', 'SEARCH', 'SECOND', 'SEGMENT', 'SELF', 'SEPARATE', 'SEQUENCE', 'SERIALIZABLE', 'SHARE', 'SHORT', 'SIZE_T', 'SIZE', 'SMALLINT', 'SOME', 'SPACE', 'SPARSE', 'SQL', 'SQLCODE', 'SQLDATA', 'SQLERRM', 'SQLNAME', 'SQLSTATE', 'STANDARD', 'START', 'STATIC', 'STDDEV', 'STORED', 'STRING', 'STRUCT', 'STYLE', 'SUBMULTISET', 'SUBPARTITION', 'SUBSTITUTABLE', 'SUBTYPE', 'SUCCESSFUL', 'SUM', 'SYNONYM', 'SYSDATE', 'TABAUTH', 'TABLE', 'TDO', 'THE', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_ABBR', 'TIMEZONE_HOUR', 'TIMEZONE_MINUTE', 'TIMEZONE_REGION', 'TO', 'TRAILING', 'TRANSACTION', 'TRANSACTIONAL', 'TRIGGER', 'TRUE', 'TRUSTED', 'TYPE', 'UB1', 'UB2', 'UB4', 'UID', 'UNDER', 'UNIQUE', 'UNPLUG', 'UNSIGNED', 'UNTRUSTED', 'USE', 'USER', 'USING', 'VALIDATE', 'VALIST', 'VALUE', 'VARCHAR', 'VARCHAR2', 'VARIABLE', 'VARIANCE', 'VARRAY', 'VARYING', 'VIEW', 'VIEWS', 'VOID', 'WHENEVER', 'WHILE', 'WITH', 'WORK', 'WRAPPED', 'WRITE', 'YEAR', 'ZONE'];\nvar reservedTopLevelWords = ['ADD', 'ALTER COLUMN', 'ALTER TABLE', 'BEGIN', 'CONNECT BY', 'DECLARE', 'DELETE FROM', 'DELETE', 'END', 'EXCEPT', 'EXCEPTION', 'FETCH FIRST', 'FROM', 'GROUP BY', 'HAVING', 'INSERT INTO', 'INSERT', 'LIMIT', 'LOOP', 'MODIFY', 'ORDER BY', 'SELECT', 'SET CURRENT SCHEMA', 'SET SCHEMA', 'SET', 'START WITH', 'UPDATE', 'VALUES', 'WHERE'];\nvar reservedTopLevelWordsNoIndent = ['INTERSECT', 'INTERSECT ALL', 'MINUS', 'UNION', 'UNION ALL'];\nvar reservedNewlineWords = ['AND', 'CROSS APPLY', 'CROSS JOIN', 'ELSE', 'END', 'INNER JOIN', 'JOIN', 'LEFT JOIN', 'LEFT OUTER JOIN', 'OR', 'OUTER APPLY', 'OUTER JOIN', 'RIGHT JOIN', 'RIGHT OUTER JOIN', 'WHEN', 'XOR'];\n\nvar tokenOverride = function tokenOverride(token, previousReservedToken) {\n if (token.type === _tokenTypes[\"default\"].RESERVED_TOP_LEVEL && token.value === 'SET' && previousReservedToken.value === 'BY') {\n token.type = _tokenTypes[\"default\"].RESERVED;\n return token;\n }\n};\n\nvar tokenizer;\n\nvar PlSqlFormatter =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @param {Object} cfg Different set of configurations\r\n */\n function PlSqlFormatter(cfg) {\n _classCallCheck(this, PlSqlFormatter);\n\n this.cfg = cfg;\n }\n /**\r\n * Format the whitespace in a PL/SQL string to make it easier to read\r\n *\r\n * @param {String} query The PL/SQL string\r\n * @return {String} formatted string\r\n */\n\n\n _createClass(PlSqlFormatter, [{\n key: \"format\",\n value: function format(query) {\n if (!tokenizer) {\n tokenizer = new _Tokenizer[\"default\"]({\n reservedWords: reservedWords,\n reservedTopLevelWords: reservedTopLevelWords,\n reservedNewlineWords: reservedNewlineWords,\n reservedTopLevelWordsNoIndent: reservedTopLevelWordsNoIndent,\n stringTypes: [\"\\\"\\\"\", \"N''\", \"''\", '``'],\n openParens: ['(', 'CASE', 'BEGIN'],\n closeParens: [')', 'END'],\n indexedPlaceholderTypes: ['?'],\n namedPlaceholderTypes: [':'],\n lineCommentTypes: ['--'],\n specialWordChars: ['_', '$', '#', '.', '@']\n });\n }\n\n return new _Formatter[\"default\"](this.cfg, tokenizer, tokenOverride).format(query);\n }\n }]);\n\n return PlSqlFormatter;\n}();\n\nexports[\"default\"] = PlSqlFormatter;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _Formatter = _interopRequireDefault(require(\"../core/Formatter\"));\n\nvar _Tokenizer = _interopRequireDefault(require(\"../core/Tokenizer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar reservedWords = ['ACCESSIBLE', 'ACTION', 'AGAINST', 'AGGREGATE', 'ALGORITHM', 'ALL', 'ALTER', 'ANALYSE', 'ANALYZE', 'AS', 'ASC', 'AUTOCOMMIT', 'AUTO_INCREMENT', 'BACKUP', 'BEGIN', 'BETWEEN', 'BINLOG', 'BOTH', 'CASCADE', 'CASE', 'CHANGE', 'CHANGED', 'CHARACTER SET', 'CHARSET', 'CHECK', 'CHECKSUM', 'COLLATE', 'COLLATION', 'COLUMN', 'COLUMNS', 'COMMENT', 'COMMIT', 'COMMITTED', 'COMPRESSED', 'CONCURRENT', 'CONSTRAINT', 'CONTAINS', 'CONVERT', 'CREATE', 'CROSS', 'CURRENT_TIMESTAMP', 'DATABASE', 'DATABASES', 'DAY', 'DAY_HOUR', 'DAY_MINUTE', 'DAY_SECOND', 'DEFAULT', 'DEFINER', 'DELAYED', 'DELETE', 'DESC', 'DESCRIBE', 'DETERMINISTIC', 'DISTINCT', 'DISTINCTROW', 'DIV', 'DO', 'DROP', 'DUMPFILE', 'DUPLICATE', 'DYNAMIC', 'ELSE', 'ENCLOSED', 'END', 'ENGINE', 'ENGINES', 'ENGINE_TYPE', 'ESCAPE', 'ESCAPED', 'EVENTS', 'EXEC', 'EXECUTE', 'EXISTS', 'EXPLAIN', 'EXTENDED', 'FAST', 'FETCH', 'FIELDS', 'FILE', 'FIRST', 'FIXED', 'FLUSH', 'FOR', 'FORCE', 'FOREIGN', 'FULL', 'FULLTEXT', 'FUNCTION', 'GLOBAL', 'GRANT', 'GRANTS', 'GROUP_CONCAT', 'HEAP', 'HIGH_PRIORITY', 'HOSTS', 'HOUR', 'HOUR_MINUTE', 'HOUR_SECOND', 'IDENTIFIED', 'IF', 'IFNULL', 'IGNORE', 'IN', 'INDEX', 'INDEXES', 'INFILE', 'INSERT', 'INSERT_ID', 'INSERT_METHOD', 'INTERVAL', 'INTO', 'INVOKER', 'IS', 'ISOLATION', 'KEY', 'KEYS', 'KILL', 'LAST_INSERT_ID', 'LEADING', 'LEVEL', 'LIKE', 'LINEAR', 'LINES', 'LOAD', 'LOCAL', 'LOCK', 'LOCKS', 'LOGS', 'LOW_PRIORITY', 'MARIA', 'MASTER', 'MASTER_CONNECT_RETRY', 'MASTER_HOST', 'MASTER_LOG_FILE', 'MATCH', 'MAX_CONNECTIONS_PER_HOUR', 'MAX_QUERIES_PER_HOUR', 'MAX_ROWS', 'MAX_UPDATES_PER_HOUR', 'MAX_USER_CONNECTIONS', 'MEDIUM', 'MERGE', 'MINUTE', 'MINUTE_SECOND', 'MIN_ROWS', 'MODE', 'MODIFY', 'MONTH', 'MRG_MYISAM', 'MYISAM', 'NAMES', 'NATURAL', 'NOT', 'NOW()', 'NULL', 'OFFSET', 'ON DELETE', 'ON UPDATE', 'ON', 'ONLY', 'OPEN', 'OPTIMIZE', 'OPTION', 'OPTIONALLY', 'OUTFILE', 'PACK_KEYS', 'PAGE', 'PARTIAL', 'PARTITION', 'PARTITIONS', 'PASSWORD', 'PRIMARY', 'PRIVILEGES', 'PROCEDURE', 'PROCESS', 'PROCESSLIST', 'PURGE', 'QUICK', 'RAID0', 'RAID_CHUNKS', 'RAID_CHUNKSIZE', 'RAID_TYPE', 'RANGE', 'READ', 'READ_ONLY', 'READ_WRITE', 'REFERENCES', 'REGEXP', 'RELOAD', 'RENAME', 'REPAIR', 'REPEATABLE', 'REPLACE', 'REPLICATION', 'RESET', 'RESTORE', 'RESTRICT', 'RETURN', 'RETURNS', 'REVOKE', 'RLIKE', 'ROLLBACK', 'ROW', 'ROWS', 'ROW_FORMAT', 'SECOND', 'SECURITY', 'SEPARATOR', 'SERIALIZABLE', 'SESSION', 'SHARE', 'SHOW', 'SHUTDOWN', 'SLAVE', 'SONAME', 'SOUNDS', 'SQL', 'SQL_AUTO_IS_NULL', 'SQL_BIG_RESULT', 'SQL_BIG_SELECTS', 'SQL_BIG_TABLES', 'SQL_BUFFER_RESULT', 'SQL_CACHE', 'SQL_CALC_FOUND_ROWS', 'SQL_LOG_BIN', 'SQL_LOG_OFF', 'SQL_LOG_UPDATE', 'SQL_LOW_PRIORITY_UPDATES', 'SQL_MAX_JOIN_SIZE', 'SQL_NO_CACHE', 'SQL_QUOTE_SHOW_CREATE', 'SQL_SAFE_UPDATES', 'SQL_SELECT_LIMIT', 'SQL_SLAVE_SKIP_COUNTER', 'SQL_SMALL_RESULT', 'SQL_WARNINGS', 'START', 'STARTING', 'STATUS', 'STOP', 'STORAGE', 'STRAIGHT_JOIN', 'STRING', 'STRIPED', 'SUPER', 'TABLE', 'TABLES', 'TEMPORARY', 'TERMINATED', 'THEN', 'TO', 'TRAILING', 'TRANSACTIONAL', 'TRUE', 'TRUNCATE', 'TYPE', 'TYPES', 'UNCOMMITTED', 'UNIQUE', 'UNLOCK', 'UNSIGNED', 'USAGE', 'USE', 'USING', 'VARIABLES', 'VIEW', 'WHEN', 'WITH', 'WORK', 'WRITE', 'YEAR_MONTH'];\nvar reservedTopLevelWords = ['ADD', 'AFTER', 'ALTER COLUMN', 'ALTER TABLE', 'DELETE FROM', 'EXCEPT', 'FETCH FIRST', 'FROM', 'GROUP BY', 'GO', 'HAVING', 'INSERT INTO', 'INSERT', 'LIMIT', 'MODIFY', 'ORDER BY', 'SELECT', 'SET CURRENT SCHEMA', 'SET SCHEMA', 'SET', 'UPDATE', 'VALUES', 'WHERE'];\nvar reservedTopLevelWordsNoIndent = ['INTERSECT', 'INTERSECT ALL', 'MINUS', 'UNION', 'UNION ALL'];\nvar reservedNewlineWords = ['AND', 'CROSS APPLY', 'CROSS JOIN', 'ELSE', 'INNER JOIN', 'JOIN', 'LEFT JOIN', 'LEFT OUTER JOIN', 'OR', 'OUTER APPLY', 'OUTER JOIN', 'RIGHT JOIN', 'RIGHT OUTER JOIN', 'WHEN', 'XOR'];\nvar tokenizer;\n\nvar StandardSqlFormatter =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @param {Object} cfg Different set of configurations\r\n */\n function StandardSqlFormatter(cfg) {\n _classCallCheck(this, StandardSqlFormatter);\n\n this.cfg = cfg;\n }\n /**\r\n * Format the whitespace in a Standard SQL string to make it easier to read\r\n *\r\n * @param {String} query The Standard SQL string\r\n * @return {String} formatted string\r\n */\n\n\n _createClass(StandardSqlFormatter, [{\n key: \"format\",\n value: function format(query) {\n if (!tokenizer) {\n tokenizer = new _Tokenizer[\"default\"]({\n reservedWords: reservedWords,\n reservedTopLevelWords: reservedTopLevelWords,\n reservedNewlineWords: reservedNewlineWords,\n reservedTopLevelWordsNoIndent: reservedTopLevelWordsNoIndent,\n stringTypes: [\"\\\"\\\"\", \"N''\", \"''\", '``', '[]'],\n openParens: ['(', 'CASE'],\n closeParens: [')', 'END'],\n indexedPlaceholderTypes: ['?'],\n namedPlaceholderTypes: ['@', ':'],\n lineCommentTypes: ['#', '--']\n });\n }\n\n return new _Formatter[\"default\"](this.cfg, tokenizer).format(query);\n }\n }]);\n\n return StandardSqlFormatter;\n}();\n\nexports[\"default\"] = StandardSqlFormatter;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.format = void 0;\n\nvar _Db2Formatter = _interopRequireDefault(require(\"./languages/Db2Formatter\"));\n\nvar _N1qlFormatter = _interopRequireDefault(require(\"./languages/N1qlFormatter\"));\n\nvar _PlSqlFormatter = _interopRequireDefault(require(\"./languages/PlSqlFormatter\"));\n\nvar _StandardSqlFormatter = _interopRequireDefault(require(\"./languages/StandardSqlFormatter\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\r\n * Format whitespace in a query to make it easier to read.\r\n *\r\n * @param {String} query\r\n * @param {Object} cfg\r\n * @param {String} cfg.language Query language, default is Standard SQL\r\n * @param {String} cfg.indent Characters used for indentation, default is \" \" (2 spaces)\r\n * @param {Bool} cfg.uppercase Converts keywords to uppercase\r\n * @param {Integer} cfg.linesBetweenQueries How many line breaks between queries\r\n * @param {Object} cfg.params Collection of params for placeholder replacement\r\n * @return {String}\r\n */\nvar format = function format(query) {\n var cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n switch (cfg.language) {\n case 'db2':\n return new _Db2Formatter[\"default\"](cfg).format(query);\n\n case 'n1ql':\n return new _N1qlFormatter[\"default\"](cfg).format(query);\n\n case 'pl/sql':\n return new _PlSqlFormatter[\"default\"](cfg).format(query);\n\n case 'sql':\n case undefined:\n return new _StandardSqlFormatter[\"default\"](cfg).format(query);\n\n default:\n throw Error(\"Unsupported SQL dialect: \".concat(cfg.language));\n }\n};\n\nexports.format = format;\nvar _default = {\n format: format\n};\nexports[\"default\"] = _default;","module.exports = require('./lib/SqlString');\n","var SqlString = exports;\n\nvar ID_GLOBAL_REGEXP = /`/g;\nvar QUAL_GLOBAL_REGEXP = /\\./g;\nvar CHARS_GLOBAL_REGEXP = /[\\0\\b\\t\\n\\r\\x1a\\\"\\'\\\\]/g; // eslint-disable-line no-control-regex\nvar CHARS_ESCAPE_MAP = {\n '\\0' : '\\\\0',\n '\\b' : '\\\\b',\n '\\t' : '\\\\t',\n '\\n' : '\\\\n',\n '\\r' : '\\\\r',\n '\\x1a' : '\\\\Z',\n '\"' : '\\\\\"',\n '\\'' : '\\\\\\'',\n '\\\\' : '\\\\\\\\'\n};\n\nSqlString.escapeId = function escapeId(val, forbidQualified) {\n if (Array.isArray(val)) {\n var sql = '';\n\n for (var i = 0; i < val.length; i++) {\n sql += (i === 0 ? '' : ', ') + SqlString.escapeId(val[i], forbidQualified);\n }\n\n return sql;\n } else if (forbidQualified) {\n return '`' + String(val).replace(ID_GLOBAL_REGEXP, '``') + '`';\n } else {\n return '`' + String(val).replace(ID_GLOBAL_REGEXP, '``').replace(QUAL_GLOBAL_REGEXP, '`.`') + '`';\n }\n};\n\nSqlString.escape = function escape(val, stringifyObjects, timeZone) {\n if (val === undefined || val === null) {\n return 'NULL';\n }\n\n switch (typeof val) {\n case 'boolean': return (val) ? 'true' : 'false';\n case 'number': return val + '';\n case 'object':\n if (Object.prototype.toString.call(val) === '[object Date]') {\n return SqlString.dateToString(val, timeZone || 'local');\n } else if (Array.isArray(val)) {\n return SqlString.arrayToList(val, timeZone);\n } else if (Buffer.isBuffer(val)) {\n return SqlString.bufferToString(val);\n } else if (typeof val.toSqlString === 'function') {\n return String(val.toSqlString());\n } else if (stringifyObjects) {\n return escapeString(val.toString());\n } else {\n return SqlString.objectToValues(val, timeZone);\n }\n default: return escapeString(val);\n }\n};\n\nSqlString.arrayToList = function arrayToList(array, timeZone) {\n var sql = '';\n\n for (var i = 0; i < array.length; i++) {\n var val = array[i];\n\n if (Array.isArray(val)) {\n sql += (i === 0 ? '' : ', ') + '(' + SqlString.arrayToList(val, timeZone) + ')';\n } else {\n sql += (i === 0 ? '' : ', ') + SqlString.escape(val, true, timeZone);\n }\n }\n\n return sql;\n};\n\nSqlString.format = function format(sql, values, stringifyObjects, timeZone) {\n if (values == null) {\n return sql;\n }\n\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n var chunkIndex = 0;\n var placeholdersRegex = /\\?+/g;\n var result = '';\n var valuesIndex = 0;\n var match;\n\n while (valuesIndex < values.length && (match = placeholdersRegex.exec(sql))) {\n var len = match[0].length;\n\n if (len > 2) {\n continue;\n }\n\n var value = len === 2\n ? SqlString.escapeId(values[valuesIndex])\n : SqlString.escape(values[valuesIndex], stringifyObjects, timeZone);\n\n result += sql.slice(chunkIndex, match.index) + value;\n chunkIndex = placeholdersRegex.lastIndex;\n valuesIndex++;\n }\n\n if (chunkIndex === 0) {\n // Nothing was replaced\n return sql;\n }\n\n if (chunkIndex < sql.length) {\n return result + sql.slice(chunkIndex);\n }\n\n return result;\n};\n\nSqlString.dateToString = function dateToString(date, timeZone) {\n var dt = new Date(date);\n\n if (isNaN(dt.getTime())) {\n return 'NULL';\n }\n\n var year;\n var month;\n var day;\n var hour;\n var minute;\n var second;\n var millisecond;\n\n if (timeZone === 'local') {\n year = dt.getFullYear();\n month = dt.getMonth() + 1;\n day = dt.getDate();\n hour = dt.getHours();\n minute = dt.getMinutes();\n second = dt.getSeconds();\n millisecond = dt.getMilliseconds();\n } else {\n var tz = convertTimezone(timeZone);\n\n if (tz !== false && tz !== 0) {\n dt.setTime(dt.getTime() + (tz * 60000));\n }\n\n year = dt.getUTCFullYear();\n month = dt.getUTCMonth() + 1;\n day = dt.getUTCDate();\n hour = dt.getUTCHours();\n minute = dt.getUTCMinutes();\n second = dt.getUTCSeconds();\n millisecond = dt.getUTCMilliseconds();\n }\n\n // YYYY-MM-DD HH:mm:ss.mmm\n var str = zeroPad(year, 4) + '-' + zeroPad(month, 2) + '-' + zeroPad(day, 2) + ' ' +\n zeroPad(hour, 2) + ':' + zeroPad(minute, 2) + ':' + zeroPad(second, 2) + '.' +\n zeroPad(millisecond, 3);\n\n return escapeString(str);\n};\n\nSqlString.bufferToString = function bufferToString(buffer) {\n return 'X' + escapeString(buffer.toString('hex'));\n};\n\nSqlString.objectToValues = function objectToValues(object, timeZone) {\n var sql = '';\n\n for (var key in object) {\n var val = object[key];\n\n if (typeof val === 'function') {\n continue;\n }\n\n sql += (sql.length === 0 ? '' : ', ') + SqlString.escapeId(key) + ' = ' + SqlString.escape(val, true, timeZone);\n }\n\n return sql;\n};\n\nSqlString.raw = function raw(sql) {\n if (typeof sql !== 'string') {\n throw new TypeError('argument sql must be a string');\n }\n\n return {\n toSqlString: function toSqlString() { return sql; }\n };\n};\n\nfunction escapeString(val) {\n var chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex = 0;\n var escapedVal = '';\n var match;\n\n while ((match = CHARS_GLOBAL_REGEXP.exec(val))) {\n escapedVal += val.slice(chunkIndex, match.index) + CHARS_ESCAPE_MAP[match[0]];\n chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex;\n }\n\n if (chunkIndex === 0) {\n // Nothing was escaped\n return \"'\" + val + \"'\";\n }\n\n if (chunkIndex < val.length) {\n return \"'\" + escapedVal + val.slice(chunkIndex) + \"'\";\n }\n\n return \"'\" + escapedVal + \"'\";\n}\n\nfunction zeroPad(number, length) {\n number = number.toString();\n while (number.length < length) {\n number = '0' + number;\n }\n\n return number;\n}\n\nfunction convertTimezone(tz) {\n if (tz === 'Z') {\n return 0;\n }\n\n var m = tz.match(/([\\+\\-\\s])(\\d\\d):?(\\d\\d)?/);\n if (m) {\n return (m[1] === '-' ? -1 : 1) * (parseInt(m[2], 10) + ((m[3] ? parseInt(m[3], 10) : 0) / 60)) * 60;\n }\n return false;\n}\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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 return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _get.apply(this, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\nmodule.exports = _toArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n"],"names":["initialState","_a","useState","state","set","useCallback","patch","prevState","Object","assign","Function","isMounted","useMountedState","value","undefined","error","noUserInteraction","setState","normalizedValue","Error","toString","ConfirmModal","isOpen","onCancel","onDiscard","onCopy","buttonRef","useRef","useEffect","current","focus","Modal","title","className","Icon","name","size","onDismiss","Button","type","variant","onClick","fill","ref","DatasetSelector","db","onChange","disabled","applyDefault","useAsync","async","datasets","map","toOption","find","v","length","Select","options","isLoading","loading","menuShouldPortal","ErrorBoundary","React","constructor","props","super","this","hasError","static","render","fallBackComponent","children","TableSelector","query","forceFetch","dataset","tables","placeholder","editorModes","label","EditorMode","QueryHeader","queryRowFilter","onRunQuery","onQueryRowChange","isQueryRunnable","isDatasetSelectorHidden","editorMode","_","copyToClipboard","useCopyToClipboard","showConfirm","setShowConfirm","toRawSql","defaultToRawSql","onEditorModeChange","newEditorMode","onFormatChange","e","next","format","QueryFormat","EditorHeader","InlineField","labelWidth","QUERY_FORMAT_OPTIONS","InlineSelect","id","transparent","showLabel","filter","ev","target","HTMLInputElement","checked","group","order","preview","FlexItem","grow","icon","Tooltip","theme","content","placement","RadioButtonGroup","rawSql","Space","EditorRow","EditorField","width","table","sql","QueryEditorRaw","height","editorLanguageDefinition","queryRef","onRawQueryChange","processQuery","newQuery","rawQuery","SQLEditor","language","QueryValidator","onValidate","range","validationResult","setValidationResult","useTheme2","valueFormatter","useMemo","getValueFormat","styles","css","colors","text","typography","bodySmall","fontSize","fontFamilyMonospace","valid","success","info","secondary","validateQuery","useAsyncFn","q","trim","useDebounce","result","isError","isValid","splat","split","slice","join","processErrorMessage","Spinner","inline","statistics","formattedValueToString","TotalBytesProcessed","QueryToolbox","showTools","onFormatCode","onExpand","isExpanded","validatorProps","container","border","medium","spacing","hint","style","padding","visibility","IconButton","tooltip","RawEditor","queryToValidate","useStyles2","getStyles","setIsExpanded","toolboxRef","toolboxMeasure","useMeasure","editorRef","editorMeasure","getEditorLanguageDefinition","renderQueryEditor","formatQuery","renderEditor","standalone","background","primary","display","alignItems","justifyContent","refId","closeOnBackdropClick","closeOnEscape","modal","contentClassName","modalContent","Preview","labelElement","labelWrapper","Field","CodeEditor","formatSQL","monacoOptions","scrollbar","vertical","scrollBeyondLastLine","readOnly","showMiniMap","flexGrow","fontWeight","fontWeightMedium","paddingBottom","useSqlChange","onQueryChange","onSqlChange","GroupByRow","columns","onGroupByChange","item","cleaned","setGroupByField","property","newSql","groupBy","EditorList","items","renderItem","makeRenderColumn","onChangeItem","onDeleteItem","InputGroup","AccessoryButton","SQLGroupByRow","fields","sortOrderOptions","description","OrderByRow","showOffset","onSortOrderChange","orderByDirection","onLimitChange","event","limit","Number","parseInt","currentTarget","onOffsetChange","offset","onOrderByChange","orderBy","setPropertyField","isClearable","h","optional","Input","I","min","uniqueId","SQLOrderByRow","columnsWithIndices","c","i","parameters","p","expanded","asteriskValue","SelectRow","functions","columnsWithAsterisk","timeSeriesAliasOpts","push","onColumnChange","index","column","modifiedItem","QueryEditorExpressionType","onAggregationChange","aggregation","newItem","onAliasChange","alias","removeColumn","clone","splice","addColumn","createFunctionField","Stack","gap","wrap","direction","getColumnValue","inputId","allowCustomValue","addButton","alignSelf","SQLSelectRow","COMMON_AGGREGATE_FNS","buttonLabels","emptyInitTree","Utils","children1","properties","field","operator","valueSrc","widgets","BasicConfig","factory","setValue","number","datetime","DateTimePicker","date","dateTime","utc","settings","canRegroup","maxNesting","canReorder","showNot","addRuleLabel","deleteLabel","renderConjs","conjProps","conjunctionOptions","keys","selectedConjunction","val","setConjunction","renderField","fieldProps","config","f","key","mainWidgetProps","customProps","selectedKey","setField","renderButton","buttonProps","renderOperator","operatorProps","op","Op","customOperators","operators","supportedOperators","noop","sqlFormatInOp","IN","sqlFormatOp","sqlFormatNotInOp","NOT_IN","valueType","opDef","operatorOptions","fieldDef","splitIfString","getCustomOperators","textWidget","opers","customTextWidget","customTypes","raqbConfig","types","isString","WhereRow","tree","setTree","configWithDefaults","initTree","whereJsonTree","onTreeChange","changedTree","whereString","renderBuilder","flex","SQLWhereRow","col","raqbFieldType","valueSources","mapFieldsToTypes","JSON","stringify","injectGlobal","VisualEditor","EditorRows","SqlQueryEditor","datasource","queryHeaderProps","setIsQueryRunnable","getDB","init","queryWithDefaults","applyQueryDefaults","setQueryRowFilter","setQueryToValidate","dispose","isQueryValid","process","haveColumns","some","Boolean","ConnectionLimits","onPropertyChanged","jsonData","onJSONDataNumberChanged","maxOpenConns","maxIdleConns","connMaxLifetime","MACRO_NAMES","ResponseParser","transformMetricFindResponse","frame","values","textField","valueField","get","flatMap","toArray","uniqBy","migrateAnnotation","annotation","oldQuery","workspace","subscription","queryType","SqlDatasource","DataSourceWithBackend","instanceSettings","templateSrv","getTemplateSrv","variable","multi","includeAll","getQueryModel","quoteLiteral","String","replace","Array","isArray","responseParser","settingsData","interval","timeInterval","annotations","prepareAnnotation","QueryEditor","getResponseParser","interpolateVariablesInQueries","queries","scopedVars","expandedQueries","getRef","interpolateVariable","filterQuery","hide","applyTemplateVariables","optionalOptions","getSearchFilterScopedVar","wildcardChar","interpolatedQuery","response","runMetaQuery","DataFrameView","request","getTimeSrv","timeRange","lastValueFrom","getBackendSrv","fetch","url","method","headers","getRequestHeaders","data","from","valueOf","to","requestId","pipe","res","toDataQueryResponse","testDatasource","intervalMs","maxDataPoints","datasourceId","r","results","status","message","catchError","err","of","toTestingStatus","targetContainsTemplate","queryWithoutMacros","containsTemplate","QueryEditorPropertyType","Timeseries","Table","toOptionFromData","sqlFormatter","m","rawColumn","g","isEmpty","haveColumn","haveFunction","functionName","_typeof","defineProperty","exports","setDragStart","setDragProgress","setDragEnd","constants","obj","nodeInterop","__esModule","cache","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","prototype","hasOwnProperty","call","desc","_interopRequireWildcard","WeakMap","cacheBabelInterop","cacheNodeInterop","mousePos","dragging","SET_DRAG_PROGRESS","dragStart","SET_DRAG_START","SET_DRAG_END","setNot","setLock","_stuff","path","conjunction","SET_CONJUNCTION","toImmutableList","not","SET_NOT","lock","SET_LOCK","rule","drag","setValueSrc","setOperatorOption","setOperator","SET_FIELD","SET_OPERATOR","delta","asyncListValues","__isInternal","SET_VALUE","srcKey","SET_VALUE_SRC","SET_OPERATOR_OPTION","_interopRequireDefault","removeRule","removeGroup","moveItem","addRule","addGroup","addDefaultCaseGroup","addCaseGroup","_uuid","_defaultUtils","SET_TREE","ruleType","arguments","ADD_RULE","defaultRuleProperties","merge","REMOVE_RULE","ADD_CASE_GROUP","defaultGroupProperties","meta","isDefaultCase","ADD_GROUP","REMOVE_GROUP","fromPath","toPath","MOVE_ITEM","_class","_class2","_classCallCheck2","_createClass2","_inherits2","_possibleConstructorReturn2","_getPrototypeOf2","_react","_propTypes","_immutable","_Item","_SortableContainer","_treeUtils","_reactUtils","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","apply","Builder","_Component","_super","_this","_updPath","nextProps","nextState","prevProps","should","pureShouldComponentUpdate","chs","k","__isInternalValueChange","List","rootType","isTernary","reordableNodesCnt","getTotalReordableNodesCountInTree","totalRulesCnt","getTotalRulesCountInTree","createElement","Item","Map","actions","parentReordableNodesCnt","onDragStart","Component","propTypes","any","isRequired","object","func","_defineProperty2","_assertThisInitialized2","_reactRedux","_context","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","enumerable","_objectSpread","source","forEach","getOwnPropertyDescriptors","defineProperties","Query","shouldComponentUpdate","liteShouldComponentUpdate","nextValue","oldValidatedTree","validatedTree","useOnPropsChanged","_updateActions","getMemoizedTree","dispatch","bindActionCreators","oldConfig","newTree","newConfig","immutableEqual","__lastAction","_this$props","ConnectedQuery","connect","context","displayName","_default","_tree","_redux","_configUtils","_validation","_Query","QueryContainer","prevValue","getMemoizedConfig","createConfigMemo","createValidationMemo","reducer","store","createStore","_this2","nextConfig","isConfigChanged","storeValue","getState","isTreeChanged","currentTree","defaultRoot","Promise","resolve","then","get_children","_this$state","QueryWrapper","renderProvider","Provider","conjunctions","_extends2","_objectWithoutProperties2","_excluded","classNames","GroupOrRule","_PureComponent","Draggable","handleDraggerMouseDown","nodeId","dom","wrapper","createRef","isDraggingTempo","isDraggingMe","otherProps","isTrueLocked","top","y","left","x","w","cn","PureComponent","bool","isLocked","_mapValues","Group","ConnectedGroupContainer","GroupContainer","_props","_selectedConjunction","defaultGroupConjunction","conj","dummyFn","removeSelf","_getConjunctionOptions","isDummyFn","changed","oldConjunction","concat","currentNesting","isInDraggingTempo","allowFurtherNesting","isRoot","groupId","selectedField","parentField","selectedOperator","string","createGroupContainer","Rule","ConnectedRuleContainer","RuleContainer","fieldConfig","getFieldConfig","showErrorMessage","valueError","shift","array","createRuleContainer","_toConsumableArray2","_clone","createSortableContainer","CanMoveFn","SortableContainer","_getEventTarget","__mocked_window","document","body","window","treeEl","closest","classList","add","groupPadding","treeElContainer","scrollTop","_getScrollParent","tmpAllGroups","_getDraggableNodeEl","_getPlaceholderNodeEl","querySelectorAll","anyGroup","getComputedStyle","getPropertyValue","offsetLeft","offsetTop","offsetWidth","offsetHeight","itemInfo","paddingLeft","clientX","clientY","eventTarget","addEventListener","onDrag","onDragEnd","doHandleDrag","startDragging","startMousePos","__mock_dom","dragEl","plhEl","plX","_treeEl","_plhEl2","getBoundingClientRect","scrollX","plY","scrollY","startX","startY","startClientX","startClientY","startScrollTop","pos","moved","handleDrag","preventDefault","remove","_cacheEls","removeEventListener","onPropsChanged","getFlatTree","_prevProps","_prevState","parent","oldPlX","oldPlY","indexId","ignoreCache","el","contains","querySelector","els","getElementsByClassName","node","overflowY","scrollHeight","_isScrollable","parentNode","dragInfo","canMoveFn","dragRect","plhRect","hovRect","treeRect","moveInfo","dragId","dragDirs","hrz","vrt","bottom","hovCNodeEl","trgCoord","right","__mocked_hov_container","hovNodeEl","elementFromPoint","_hovNodeEl$firstChild","rootGroupContainer","firstChild","isGroup","hovNodeId","getAttribute","hovEl","doAppend","doPrepend","hovHeight","hovII","trgRect","trgEl","trgII","altII","hovInnerEl","hovEl2","hovRect2","hovHeight2","lev","isSamePos","dragLeftOffset","dragLev","Math","max","round","availMoves","altMoves","PLACEMENT_APPEND","PLACEMENT_PREPEND","isToRoot","isToCase","prevCaseId","prev","caseId","nextCaseId","prevCase","nextCase","PLACEMENT_AFTER","PLACEMENT_BEFORE","addCaseII","am","toII","fromCaseII","toCaseII","bestMode","filteredMoves","trg","collapsed","isInside","tmp","toParentII","canMove","levs","curLev","allLevs","closestDragLev","indexOf","logger","log","move","fromII","_this$props$config$se","canRegroupCases","maxNumberOfRules","canLeaveEmptyCase","newLev","isBeforeAfter","isPend","isLev1","isParentChange","isStructChange","isForbiddenStructChange","parentType","isLockedChange","isLastFromCase","_height","newRulesInTargetCase","leafsCount","toJS","ConnectedSortableContainer","_dec","_get2","_GroupContainer","_Draggable","_Group","_GroupActions","_utils","_Widget","ConfirmFn","_BasicGroup","CaseGroup","childrenClassName","renderFooterWrapper","_item","isOneChild","showDragIcon","showConjs","renderHeaderLeft","renderHeaderCenter","renderActions","renderCondition","renderValue","defaultCaseLabel","renderDrag","immutableValuesMode","widget","isCaseValue","readonly","Col","_this$props2","GroupActions","canAddRule","canAddGroup","canDeleteGroup","oneValue","hasValue","BasicGroup","_startsWith","renderBeforeActions","BeforeActions","renderAfterActions","AfterActions","bind","groupActionsPosition","confirmFn","renderConfirm","confirmOptions","removeGroupConfirmOptions","doRemove","isEmptyCurrentGroup","onOk","first","isEmptyGroup","isEmptyRule","Fragment","renderHeaderWrapper","renderChildrenWrapper","renderChildren","isGroupTopPosition","renderHeader","toList","getIn","extraPropsForItem","reordableNodesCntForItem","totalRulesCntForItem","isParentLocked","_this$props3","onMouseDown","DragIcon","_this$props4","_config$settings","immutableGroupsMode","Conjs","notLabel","renderProps","groupActionsPositionList","topLeft","topCenter","topRight","bottomLeft","bottomCenter","bottomRight","addGroupLabel","delGroupLabel","Btn","Switch","renderSwitch","BtnGrp","renderButtonGroup","lockLabel","lockedLabel","showLock","canDeleteLocked","position","setLockSwitch","checkedLabel","addRuleBtn","addGroupBtn","delGroupBtn","_Rule","_RuleGroup","_RuleGroupExt","_SwitchGroup","_CaseGroup","getProperties","toObject","typeMap","rule_group","rule_group_ext","switch_group","case_group","postfix","Cmp","itemComponent","oneOf","_RuleContainer","_OperatorWrapper","_FieldWrapper","_OperatorOptions","_ruleUtils","ch","getMeta","_ref","selectedFieldPartsLabels","getFieldPathLabels","selectedFieldConfig","isSelectedGroup","isFieldAndOpSelected","selectedOperatorConfig","getOperatorConfig","selectedOperatorHasOptions","selectedFieldWidgetConfig","getFieldWidgetConfig","hideOperator","showOperator","showOperatorLabel","operatorInlineLabel","showWidget","showOperatorOptions","removeRuleConfirmOptions","isEmptyCurrentRule","immutableFieldsMode","classname","_this$meta","immutableOpsMode","opOpts","renderBeforeWidget","renderAfterWidget","_config$settings2","renderRuleError","oneValueError","_this$props5","_config$settings3","_this$props6","_config$settings4","hideLabel","_this$meta2","_this$props7","canShrinkValue","fullWidth","parts","renderWidget","renderOperatorOptions","renderError","renderLock","del","renderDel","_RuleGroupActions","RuleGroup","RuleGroupActions","_RuleGroupExtActions","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","minLen","_arrayLikeToArray","n","test","_unsupportedIterableToArray","F","s","done","_e","TypeError","normalCompletion","didErr","step","_e2","arr","len","arr2","RuleGroupExt","renderGroupField","_step","filtered","_iterator","isForRuleGruop","RuleGroupExtActions","addSubRuleLabel","_SwitchGroupActions","SwitchGroup","hasDefaultCase","maxNumberOfCases","totalCasesCnt","casesToReorder","cnt","renderSwitchPrefix","SwitchGroupActions","canAddDefault","addCaseLabel","addDefaultCaseLabel","addCaseGroupBtn","addDefaultCaseGroupBtn","_range","Proximity","_len","args","_key","handleChange","setOption","defaults","optionLabel","optionPlaceholder","minProximity","maxProximity","optionTextBefore","defaultProximity","proximity","showLabels","selectedProximity","proxValues","select","listValues","defaultProps","_Proximity","_last","_keys","maxLabelsLength","fieldSeparatorDisplay","fieldPlaceholder","fieldSeparator","isFieldSelected","truncateString","currField","selectedOpts","selectedKeys","getFieldPath","selectedPath","selectedLabel","getFieldLabel","partsLabels","selectedFullLabel","selectedAltLabel","label2","parentFieldPath","parentFieldConfig","sourceFields","subfields","buildOptions","fieldOpts","fieldKey","fieldParts","optGroupLabel","prefix","fullLabel","altLabel","subpath","hideForSelect","grouplabel","_Field","FieldWrapper","fieldLabel","customFieldSelectProps","_slicedToArray2","FuncSelect","needUpdateItems","getItems","parentFuncs","fieldDefinition","isFuncArg","canUseFuncForField","filteredFuncs","filterFuncs","funcs","_ref2","funcPlaceholder","selectedFuncKey","isFuncSelected","leftFieldWidgetField","widgetProps","currFunc","getFuncConfig","getFuncLabel","getFuncPathLabels","leftFieldFullkey","expectedType","leftFieldConfig","targetDefinition","getWidgetForFieldOp","widgetType","_filter","list","funcKey","funcFullkey","funcConfig","canUse","returnType","includes","allowSelfNesting","_ref3","_ref4","funcOpts","funcParts","renderFunc","_FuncSelect","_funcUtils","FuncWidget","setFunc","setArgValue","argKey","argVal","argDefinition","funcDefinition","setArgValueSrc","argValSrc","renderFuncSelect","selectProps","funcLabel","widgetLabel","renderArgLabel","showPrefix","isConst","renderArgLabelSep","renderArgVal","arg","defaultValueSource","fieldFunc","fieldArg","leftField","ArgWidget","renderArgSep","argIndex","renderSeps","renderBracketBefore","renderBrackets","renderBracketAfter","renderFuncArgs","_PureComponent2","_super2","_delta","_widgetType","_this2$props","_this2$props2","_pickBy","Operator","_opts","isOpSelected","operatorPlaceholder","ops","sort","a","b","OperatorOptions","operatorDefinitions","_operatorDefinitions$","optionsFactory","basicOptionsProps","optionsCmp","toUpperCase","_Operator","OperatorWrapper","operatorLabel","ValueField","needUpdateMeta","canCompareFieldWithField","filteredFields","filterFields","customPlaceholder","leftFieldWidgetFieldProps","valuePlaceholder","rightFieldKey","rightFieldFullkey","rightFieldConfig","fn","hideForCompare","_pick","_WidgetFactory","funcArgDummyOpDef","cardinality","Widget","_setValue","isSpecialRange","oldRange","_onChangeValueSrc","iValues","aField","_widgets$delta","valueLabel","renderValueSources","_widgets$delta2","setValueSrcHandler","valueSourcesInfo","ValueSources","valueSourcesOptions","sourceLabel","valueSourcesPopupTitle","renderSep","sepText","sepLabel","renderWidgetDelta","simpleField","valueSrcs","iValueSrcs","defaultWidget","operatorDefinition","getWidgetsForFieldOp","isSpecialRangeForSrcField","isTrueSpecialRange","defaultValue","getValueSourcesForFieldOp","_widgetDefinition","widgetDefinition","singleWidget","getValueLabel","widgetValueLabel","textSeparators","valueLabels","setValueHandler","immValue","immValueError","widgetFactory","fieldWidgetProps","fieldSettings","placeholders","labelYes","labelNo","getTitleInListValues","xmlns","viewBox","d","useConfirm","_exportNames","ValueFieldWidget","_FuncWidget","_ValueField","_index","btnLabel","conjsCount","lessThenTwo","showConj","forceShowConj","onNotChange","htmlFor","_conjunctionOptions$k","renderOptions","okText","cancelText","confirm","_VanillaBoolean","_VanillaButton","_VanillaButtonGroup","_VanillaConjs","_VanillaDateTime","_VanillaDate","_VanillaFieldSelect","_VanillaMultiSelect","_VanillaNumber","VanillaProvider","_VanillaSelect","_VanillaSlider","_VanillaSwitch","_VanillaTextArea","_VanillaText","_VanillaTime","_VanillaValueSources","_vanillaConfirm","_props$customProps","customRadioYesProps","radioYes","customRadioNoProps","radioNo","onRadioChange","id2","valueFormat","_moment","use12Hours","dtValue","Date","_omit","allowCustomValues","multiple","multiselect","opt","selected","getMultiSelectValues","mapListValues","numberValue","customInputProps","input","customSliderProps","slider","maxLength","textValue","maxRows","stringifyForDisplay","mongoFormatOp2","mongoFormatOp1","Widgets","Operators","_export","_default2","VanillaBooleanWidget","VanillaTextWidget","VanillaTextAreaWidget","VanillaDateWidget","VanillaTimeWidget","VanillaDateTimeWidget","VanillaMultiSelectWidget","VanillaSelectWidget","VanillaNumberWidget","VanillaSliderWidget","ProximityOperator","mop","mc","_op","useExpr","$field","startsWith","mv","mops","valueTypes","_$not3","_field2","equal","labelForFormat","sqlOp","spelOp","spelOps","reversedOp","formatOp","isForDisplay","opStr","mongoFormatOp","jsonLogic","elasticSearchQueryType","not_equal","isNotOp","less","less_or_equal","greater","greater_or_equal","like","escapeRegExp","_jsonLogicIsRevArgs","not_like","starts_with","ends_with","between","valFrom","valTo","spelFormatOp","validateValues","not_between","is_empty","empty","sqlEmptyValue","mongoEmptyValue","is_not_empty","is_null","is_not_null","select_equals","select_not_equals","select_any_in","select_not_any_in","multiselect_equals","SqlString","jsonLogic2","vals","multiselect_not_equals","val1","val2","prox","aVal1","aVal2","filteredSize","all","fullSize","none","AND","mongoConj","jsonLogicConj","sqlConj","spelConj","spelConjs","reversedConj","formatConj","sqlFormatConj","spelFormatConj","omitBrackets","OR","jsType","formatValue","wgtDef","spelFormatValue","regex","spelEscape","sqlFormatValue","escapeLike","escape","mongoFormatValue","textarea","isFloat","isInteger","valLabel","valsLabels","isCallable","spelFixList","dateFormat","useKeyboard","dateVal","toDate","time","timeFormat","elasticSearchFormatValue","fieldName","script","params","rightFieldDef","showSearch","case_value","spelImportValue","_ref12","defaultOperator","mainWidget","opProps","formatField","formatSpelField","partsExt","_ref13","ind","isSpelVariable","sqlFormatReverse","spelFormatReverse","formatReverse","revOperatorDefinition","formatAggr","whereStr","aggrField","aggrFieldDef","cond","_cond","_cond2","rightField","defaultSliderWidth","defaultSelectWidth","defaultSearchWidth","defaultMaxRows","VanillaFieldSelect","VanillaConjs","VanillaButton","VanillaButtonGroup","VanillaValueSources","vanillaConfirm","VanillaSwitch","renderSize","canLeaveEmptyGroup","shouldCreateEmptyGroup","canShortMongoQuery","removeEmptyGroupsOnLoad","removeIncompleteRulesOnLoad","removeInvalidMultiSelectValuesOnLoad","setOpOnChangeField","groupOperators","convertableWidgets","locale","moment","groupVarKey","altVarKey","lockedOp","UPPER","RELATIVE_DATETIME","NOW","LOWER","LINEAR_REGRESSION","jsonLogicCustomOps","now","spelFunc","sqlFormatFunc","mongoFormatFunc","formatFunc","dim","jsonLogicImport","abs","date_add","plus","minus","day","week","month","year","mongoFunc","toLowerCase","str","coef","bias","_ref5","spelFormatFunc","_ref6","_ref7","_ref8","elasticSearchFormat","_properties$get","_properties$get2","buildEsRule","defaultConjunction","recursiveFxn","childrenArray","valueSeq","occurrence","combinator","determineOccurrence","resultFlat","flat","Infinity","buildEsGroup","buildParameters","determineField","elasticSearchScript","geoPointString","coordsNumberArray","top_left","lat","lon","bottom_right","buildEsGeoPoint","gte","lte","lt","gt","buildEsRangeParameters","buildEsWildcardParameters","buildRegexpParameters","opConfig","widgetConfig","must_not","_queryBuilder","_jsonLogic","_mongoDb","_sql","_spel","_queryString","_elasticSearch","jsonLogicFormat","usedFields","errors","logic","formatItem","ff","pdef","mode","ret","formatGroup","formatRule","conjunctionDefinition","isRuleGroup","groupField","groupOperator","groupOperatorDefinition","formattedValue","formatItemValue","isGroup0","currentChild","resultQuery","formattedField","count","formatLogic","isRev","iValueSrc","iValueType","iValue","oldUsedFields","fvalue","currentValue","cValue","completeValue","fieldWidgetDef","fv","hasUndefinedValues","operatorDef","formattedArgs","argConfig","argValue","argValueSrc","formattedArgVal","formattedArgsArr","_args","funcName","isMethod","jsonLogicIsMethod","parentFieldDef","parentFieldName","varName","jsonLogicVar","buildFnToFormatOp","formatteOp","isReverseArgs","rangeOps","eqOps","ruleQuery","mongodbFormat","_mongodbFormat","_typeof2","isObject","returnErrors","console","warn","parents","_not","_canWrapExpr","_fieldName","_value","hasParentRuleGroup","parentPath","pop","realParentPath","groupFieldName","formatFieldName","groupFieldDef","canHaveEmptyChildren","rules","canShort","reduce","acc","totalQuery","as","_f","_formatValue","_formatValue2","fvUseExpr","wrapExpr","_formatRightField","formatRightField","_formatRightField2","_formatFunc","_formatFunc2","rightFieldDefinition","fieldPartsLabels","fieldFullLabel","mongoArgsAsObject","argsCnt","lastArg","argAsyncListValues","_formatValue3","_formatValue4","queryBuilderFormat","condition","fieldType","typeConfig","secondField","queryString","conjStr","aggrArgs","_operator","fop","returnArgs","revOperatorDef","_formatItemValue","_formatItemValue2","valFieldDefinition","cutParentField","fieldLabel2","formatFieldFn","funcValue","formattedArgsWithNames","argName","argsStr","entries","spelFormat","_spelFormat","_toArray2","formatSwitch","formatCase","cases","filteredCases","_i","_filteredCases$_i","isRuleGroupArray","isSpelArray","realGroupOperator","checkOp","isGroupOpRev","realGroupOperatorDefinition","_formatItemValue3","_formatItemValue4","getSize","groupValue","formatExpression","objectIsFirstArg","sop","revOpDef","canFormatOp","canFormatRevOp","realOp","_formatItemValue5","_formatItemValue6","expectedValueType","fieldPartsConfigs","getFieldPartsConfigs","fieldPartsMeta","cnf","parentCnf","isSpelMap","isSpelItemMap","_args2","_args3","sqlFormat","_sqlFormat","fieldWidgetDefinition","sqlFunc","loadFromJsonLogic","_loadFromJsonLogic","arrayUniq","Set","logicTree","extendedConfig","extendConfig","conv","buildConv","jsTree","convertFromLogic","wrapInDefaultConj","immTree","loadTree","opKey","opk","_opk","conjKey","fk","_config$settings$json","varKeys","isJsonLogic","beforeErrorsCnt","isEmptyOp","convertField","convertFunc","convertVal","convertConj","convertOp","afterErrorsCnt","floor","setMilliseconds","setHours","setMinutes","setSeconds","_dateVal","toISOString","_valueFormat","asyncFetch","normalizeField","argsArr","opts","_vals","funcKeys","_Object$entries","_Object$entries$_i","fc","parsed","argKeys","complexFields","_v$properties","complexFieldsGroupAncestors","fromEntries","ancs","fp","usedRuleGroups","_v$properties2","topLevelFieldsFilter","groupToId","_v$properties3","groupAncestors","at","parentFieldParts","shallowEqual","gf","gfc","j","wrapInDefaultConjRuleGroup","parseRule","arity","_parseRule","isRevArgs","opKeys","jlField","_vals2","having","_v2","_v3","_v4","_v5","op2","parseRes","havingVals","canRev","convertedArgs","_rule$properties","asyncListValuesArr","loadFromSpel","_loadFromSpel","_spel2js","spelStr","compiledExpression","convertedObj","compileRes","SpelExpressionEvaluator","compile","_compiledExpression","debug","convertCompiled","convertToTree","expr","parentExpr","getType","getChildren","child","selection","lastChild","isSize","methodName","isLength","sourceParts","isThis","itype","_obj","getRaw","getValue","flatizeTernary","qid","cls","_qid","_cls","_val","isVar","_processTernaryChildren","tern","_tern","if_val","else_val","_loop","convertPath","convertArg","spel","parentSpel","literalTypes","groupFieldParts","_groupField","_spel$children","_spel$children$","fullParts","isVariable","_fullParts","isUnary","_values$","_funcToOpMap","funcToOpMap","buildRule","_opKey","_parts","_field","dateString","_valueType2","ISO_8601","timeString","_valueType3","buildCaseValueConcat","buildRuleGroup","groupFilter","groupFieldValue","groupOpRule","compareArgs","_map","_map2","leftSource","rightSource","_map3","_map4","leftVal","rightVal","isBetweenNormal","isBetweenRev","isBetween","_spel$children$0$chil","_spel$children$1$chil","isNumbers","isSameSource","oneSpel","convertChildren","fieldObj","opArg","ws","buildSimpleSwitch","_groupFilter","_children","_v","caseI","buildCase","sw","valProperties","buildCaseValProperties","_processConcatChildren","convertedChild","convVal","widgetDef","importCaseValue","_importCaseValue","_importCaseValue2","normVal","normErrors","_typeof3","isImmutableTree","getTree","checkTree","isValidTree","isTree","immutableTree","light","children1AsArray","getLightTree","serTree","jsTreeToImmutable","parse","validateTree","getTreeBadFields","isMap","fromJS","outValue","toOrderedMap","_outValue$get","setIn","valueJs","Iterable","isIndexed","OrderedMap","_basic","_Builder","_QueryContainer","Export","Import","BasicUtils","createContext","addNewGroup","groupUuid","groupPath","canAddNewRule","origState","addItem","expandTreePath","fixPathsInTree","removeItem","hasChildren","fixEmptyGroupsInTree","isEmptyTree","parentOperator","parentOperatorConfig","hasGroupCountRule","isParentRuleGroup","isEmptyParentGroup","canLeaveEmpty","initialEmptyWhere","deleteIn","removeIsLockedInTree","_addChildren1","id1","it1","defaultItemProperties","currentNumber","maxNumber","targetItem","caseGroup","take","childrenPath","targetChildren","targetChildrenSize","canAdd","isLastDefaultCase","last","newChildren","_Immutable$OrderedMap2","newChildrenWithLast","mergeIn","getItemByPath","sourcePath","sourceChildren","targetPath","isSameParent","isSourceInsideTarget","deepEqual","isTargetInsideSource","sourceSubpathFromTarget","targetSubpathFromSource","newTargetChildren","newSourceChildren","updateIn","expandTreeSubpath","_oldChildren","withMutations","_step$value","itemId","newField","currentType","currentProperties","wasRuleGroup","newFieldConfig","isRuleGroupExt","isChangeToAnotherType","currentOperator","currentOperatorOptions","lastOp","newOperator","availOps","getOperatorsForField","_step2","_iterator2","strategy","getFirstOperator","_getNewValueForFieldO","getNewValueForFieldOp","newValue","canReuseValue","newValueSrc","newValueType","operatorCardinality","groupProperties","_getNewValueForFieldO2","newValueError","newOperatorOptions","defaultOperatorOptions","currentField","operatorConfig","_getNewValueForFieldO3","isInternalValueChange","calculatedValueType","calculateValueType","_validateValue","validateValue","_validateValue2","validateError","fixedValue","vs","jsValues","rangeValidateError","isLastEmpty","isLastError","_getNewValueForFieldO4","checkEmptyGroups","emptyDrag","getActionMeta","action","actionTypesToIgnore","applyToJS","affectedField","getField","emptyTree","emptyState","unset","actionMeta","simulateAsyncFetch","mergeListValues","listValueToOption","getListValue","_regenerator","_asyncToGenerator2","cPageSize","delay","mark","_callee","search","pageSize","currentOffset","newOffset","hasMore","listValuesToArray","ceil","sleep","abrupt","stop","_x","_x2","_x3","newValues","toStart","old","newFiltered","av","merged","lv","groupTitle","renderTitle","option","selectedValue","getFuncArgConfig","getFieldRawConfig","_merge","_mergeWith","configKeys","configStore","configId","findOrExtend","findConfig","savedConfig","_ret","_loop2","_ret2","findExtended","extendAndStore","pickConfig","__configId","_fieldsCntByType","_funcsCntByType","typesConfig","_extendTypeConfig","_extendTypesConfig","__fieldNames","_extendFieldsConfig","_extendFuncArgsConfig","writable","typeWidgetConfig","typeWidgetOperators","excludeOperators","mergeArraysSmart","_step3","_iterator3","subconfig","_extendFieldConfig","funcDef","_step4","tmpIsOptional","_iterator4","reverse","_argKey","argDef","isOptional","excludeOperatorsForField","keysToPutInFieldSettings","_keysToPutInFieldSett","normalizeListValues","_isFuncArg","excludeOperatorsForType","fieldWidgetConfig","shouldIncludeOperators","preferWidgets","addOperators","_addOperators","computedFieldName","computeFieldName","fieldsKey","subfieldsKey","targetFields","part","pathKey","fConfig","l","unshift","fieldStr","objValue","srcValue","_object","_source","_stack","widgetOpProps","fieldWidgetOpProps","mergedOpConfig","valueFieldSettings","mergedConfig","defaultRule","defaultField","canGetFirst","parentRuleGroupPath","getFirstField","fieldOperators","fieldDefaultOperator","_item$properties","_item$properties2","setDefaultFieldAndOp","conjs","_item$properties3","spelImportConcat","spelFormatConcat","charAt","substring","any_start","any_end","spelEscapeString","spelInlineList","javaType","jt","escapedVals","numberJavaTypes","numberToFloat","arrayToArray","isFinite","isNaN","completeFuncValue","complValue","tmpHasOptional","filteredValueSources","filterValueSourcesForField","argDefaultValueSrc","completeArgValue","getDefaultArgValue","_checkFuncValue","firstValueSrc","_argConfig","_config","TreeUtils","ExportUtils","DefaultUtils","ConfigUtils","_TreeUtils","getSwitchValues","_autocomplete","_ConfigUtils","_DefaultUtils","_ExportUtils","self","canUseUnsafe","version","UNSAFE_componentWillReceiveProps","componentWillReceiveProps","actionCreators","actionCreator","selectTypes","changedProp","canFix","isEndValue","currentValueSrc","currentValueType","currentAsyncListValues","clearValueOnChangeField","clearValueOnChangeOp","newOperatorConfig","currentFieldConfig","currentWidget","newWidget","currentValueWidget","newValueWidget","canReuseWidget","firstWidgetConfig","valueFixes","valueErrors","vType","vSrc","isValidSrc","fixValue","dropValue","_ignore","_newFieldConfig$field","getFirstDefined","vt","parentPathArr","firstField","keysPath","fieldOps","onlyKeys","_curr","parentParts","_getWidgetsAndSrcsForFieldOp","widgetValueSrc","canAddValueSrc","widgetWeight","wg","w1","w2","_getWidgetsAndSrcsFor","minCnt","_getWidgetsAndSrcsFor2","filteredValueSrcs","_getWidgetsAndSrcsFor3","tableName","fieldPartsCopy","isImmutable","getValueInListValues","getLogger","getItemInListValues","flatizeTreeData","eqSet","eqArrSet","defaultTreeDataMap","arr1","orig","after","before","newOp","rel","relOp","removePrefixPath","setTimeout","useWordBoundary","subString","substr","lastIndexOf","v1","v2","equals","bs","deep","shallowEqualArrays","shallowEqualObjects","arrA","arrB","isEqual","objA","objB","aKeys","bKeys","listValue","listValuesObj","listValuesArr","mapFn","_lv","pId","rootPId","treeData","rind","tdm","_flatize","root","childrenCount","getPathInListValues","parentId","getChildrenInListValues","isMulti","treeSelectOnlyLeafs","childrenValues","selectable","extendTreeData","isPrefix","isDev","env","devMode","verbose","removePathsInTree","suffix","interpose","skip","_len2","_key2","_processNode","itemPath","removeIn","_childId","currPath","currId","childId","allChildrenGone","curr","realHeight","_flatizeTree","insideCollapsed","insideLocked","insideRuleGroup","childrenIds","_child","isLeaf","itemsBefore","leaf","_top","itemsAfter","subinfo","prevId","nextId","badFields","caseValue","query_builder_seed","timePart","getTime","random","validateAndFixTree","isTypeOf","typeOf","originalTree","_oldTree","removeEmptyGroups","removeIncompleteRules","validateItem","oldChildren","sanitized","submeta","validateGroup","oldSerialized","newSerialized","isComplete","validateRule","isRawValue","validError","_validateFieldValue","validateFieldValue","_validateFieldValue2","_validateFuncValue","validateFuncValue","_validateFuncValue2","_validateNormalValue","validateNormalValue","_validateNormalValue2","validResult","validateValueInList","isList","_values$reduce","goodVals","badVals","vv","_values$reduce2","goodValues","badValues","plural","wConfig","wType","_valueSrc","leftFieldStr","rightFieldStr","argValidError","fixedArgVal","ReactReduxContext","batch","callback","getBatch","nullListeners","notify","createSubscription","parentSub","unsubscribe","listeners","handleChangeWrapper","onStateChange","trySubscribe","addNestedSub","subscribe","clear","listener","isSubscribed","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","useLayoutEffect","contextValue","previousState","Context","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","payload","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","forwardRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","isContextConsumer","useContext","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","is","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","boundActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","match","factories","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","createStoreHook","useReduxContext","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","stack","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","useDebugValue","newBatch","useSelector","tslib_1","react_1","useTimeoutFn_1","__importDefault","ms","deps","default","isReady","cancel","reset","ready","timeout","clearTimeout","_instanceof","nativeMap","nativeSet","nativePromise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","proto","reject","__isArray","__isRegExp","RegExp","__getRegExpFlags","lastIndex","__isDate","isBuffer","allocUnsafe","copy","create","getPrototypeOf","keyChild","valueChild","entryChild","attrs","symbol","descriptor","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","global","ignoreCase","multiline","clonePrototype","module","SLICE$0","createClass","ctor","superClass","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","IndexedIterable","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","DELETE","SHIFT","SIZE","MASK","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","SetRef","OwnerID","arrCopy","newArr","ii","ensureSize","iter","__iterate","returnTrue","wrapIndex","uint32Index","NaN","wholeSlice","begin","end","resolveBegin","resolveIndex","resolveEnd","defaultIndex","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","isArrayLike","emptySequence","toSeq","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","KEYS","VALUES","ENTRIES","inspect","toSource","__toString","cacheResult","_cache","__iterateUncached","seqIterate","__iterator","seqIterator","isSeq","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","IS_SEQ_SENTINEL","ArraySeq","_array","ObjectSeq","IterableSeq","_iterable","IteratorSeq","_iteratorCache","maybeSeq","seq","maybeIndexedSeqFromValue","useKeys","maxIndex","entry","__iteratorUncached","json","converter","fromJSWith","fromJSDefault","parentJSON","isPlainObj","toMap","valueA","valueB","__hash","notAssociative","every","flipped","allEqual","bSize","Repeat","times","invariant","Range","start","_start","_end","Collection","KeyedCollection","IndexedCollection","SetCollection","notSetValue","iterations","searchValue","this$0","other","possibleIndex","offsetValue","imul","smi","i32","hash","STRING_HASH_CACHE_MIN_STRLEN","cachedHashString","hashString","hashCode","hashJSObj","stringHashCache","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","charCodeAt","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","getIENodeHash","objHashUID","isExtensible","nodeType","uniqueID","documentElement","assertNotInfinite","emptyMap","maybeMap","IS_MAP_SENTINEL","keyValues","_root","updateMap","keyPath","update","updater","updatedValue","updateInDeepMap","forceIterator","__ownerID","__altered","mergeIntoMapWith","mergeWith","merger","iters","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","comparator","sortFactory","sortBy","mapper","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","nodes","HashArrayMapNode","HashCollisionNode","keyHash","ValueNode","_type","_reverse","mapIteratorFrame","mapIteratorValue","__prev","newRoot","newSize","didChangeSize","didAlter","updateNode","isLeafNode","mergeIntoNode","newNode","idx1","idx2","createNodes","packNodes","excluding","packedII","packedNodes","bit","expandNodes","including","expandedNodes","iterables","mergeIntoCollectionWith","existing","collection","mergeIntoMap","keyPathIter","isNotSet","existingValue","nextExisting","nextUpdated","popCount","idx","canEdit","newArray","spliceIn","newLen","spliceOut","removed","exists","MAX_ARRAY_MAP_SIZE","isEditable","newEntries","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","newBitmap","newNodes","newCount","MIN_HASH_ARRAY_MAP_SIZE","keyMatch","subNode","emptyList","makeList","VNode","setSize","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","updateList","insert","_capacity","_level","_tail","oldSize","setListBounds","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","tailPos","getTailOffset","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","newTail","updateVNode","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","maxSize","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","_list","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","indexed","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","mappedSequence","reverseFactory","filterFactory","predicate","filterSequence","countByFactory","grouper","groups","groupByFactory","isKeyedIter","coerce","iterableClass","reify","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","takeWhileFactory","takeSequence","iterating","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedIterable","singleton","concatSeq","flatten","sum","flattenFactory","flatSequence","stopped","flatDeep","currentDepth","flatMapFactory","interposeFactory","separator","interposedSequence","defaultComparator","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","steps","validateEntry","resolveSize","Record","defaultValues","hasInitialized","RecordType","setProps","RecordTypePrototype","_name","_defaultValues","RecordPrototype","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","record","names","setProp","emptySet","isSet","maybeSet","IS_SET_SENTINEL","fromKeys","keySeq","updateSet","union","intersect","originalSet","subtract","OrderedSet","__make","EMPTY_SET","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","head","_head","peek","makeStack","pushAll","EMPTY_STACK","StackPrototype","mixin","methods","keyCopier","__toJS","toJSON","toOrderedSet","toSet","toStack","__toStringMapper","returnValue","findEntry","sideEffect","joined","isFirst","initialReduction","reduction","useFirst","reduceRight","reversed","butLast","countBy","entriesSequence","entryMapper","filterNot","found","findKey","findLast","findLastEntry","findLastKey","searchKey","searchKeyPath","nested","hasIn","isSubset","isSuperset","keyOf","keyMapper","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","rest","amount","skipLast","skipWhile","skipUntil","takeLast","takeWhile","takeUntil","hashIterable","IterablePrototype","quoteString","chain","mapEntries","mapKeys","KeyedIterablePrototype","defaultZipper","ordered","keyed","murmurHashOfSize","hashMerge","findIndex","removeNum","numArgs","spliced","findLastIndex","interleave","zipped","interleaved","zip","zipWith","baseAssignValue","eq","lower","upper","fromIndex","fromRight","baseFor","createBaseFor","iteratee","baseFindIndex","baseIsNaN","strictIndexOf","baseIsEqual","matchData","customizer","noCustomizer","COMPARE_PARTIAL_FLAG","baseMatches","baseMatchesProperty","identity","baseIsMatch","getMatchData","matchesStrictComparable","isKey","isStrictComparable","toKey","assignMergeValue","baseMergeDeep","keysIn","safeGet","baseMerge","srcIndex","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArguments","isArrayLikeObject","isFunction","isPlainObject","isTypedArray","toPlainObject","mergeFunc","stacked","isCommon","isArr","isBuff","isTyped","baseGet","nativeCeil","nativeMax","nativeFloor","overRest","setToString","arrayMap","baseRest","isIterateeCall","assigner","sources","guard","keysFunc","baseRange","toFinite","isIndex","reRegExpChar","reHasRegExpChar","baseIndexOf","toInteger","isObjectLike","baseKeys","getTag","isPrototype","tag","baseGetTag","baseForOwn","baseIteratee","createAssigner","basePickBy","getAllKeysIn","prop","baseProperty","basePropertyDeep","createRange","baseRepeat","baseClamp","baseToString","toNumber","INFINITY","remainder","copyObject","baseValues","modules","installedModules","moduleId","getter","configurable","__webpack_require__","SpelNode","activeContext","setType","addChild","childNode","setParent","getParent","getContext","setContext","nodeContext","getStartPosition","getEndPosition","operands","operand","startingElements","elements","LITERAL_INT","LITERAL_LONG","LITERAL_HEXINT","LITERAL_HEXLONG","LITERAL_STRING","LITERAL_REAL","LITERAL_REAL_FLOAT","LPAREN","RPAREN","COMMA","IDENTIFIER","COLON","HASH","RSQUARE","LSQUARE","LCURLY","RCURLY","DOT","PLUS","STAR","MINUS","SELECT_FIRST","SELECT_LAST","QMARK","PROJECT","DIV","GE","GT","LE","LT","EQ","NE","MOD","NOT","ASSIGN","INSTANCEOF","MATCHES","BETWEEN","SELECT","POWER","ELVIS","SAFE_NAVI","BEAN_REF","SYMBOLIC_OR","SYMBOLIC_AND","INC","DEC","TokenKind","tokenChars","_hasPayload","_ordinal","t","getLength","hasPayload","ordinal","StandardContext","_SpelExpressionEvaluator","_StandardContext","_SpelExpressionParser","_Stack","spelExpressionEvaluator","expression","SpelExpressionParser","eval","locals","rootContext","evalCompiled","_TokenKind","_Tokenizer","_BooleanLiteral","_NumberLiteral","_StringLiteral","_NullLiteral","_FunctionReference","_MethodReference","_PropertyReference","_VariableReference","_CompoundExpression","_Indexer","_Assign","_OpEQ","_OpNE","_OpGE","_OpGT","_OpLE","_OpLT","_OpPlus","_OpMinus","_OpMultiply","_OpDivide","_OpModulus","_OpPower","_OpInc","_OpDec","_OpNot","_OpAnd","_OpOr","_OpMatches","_Ternary","_Elvis","_InlineList","_InlineMap","_Selection","_Projection","_OpInstanceof","_OpBetween","_TypeReference","_BeanReference","_Identifier","_QualifiedIdentifier","_ConstructorReference","expressionString","tokenStream","tokenStreamLength","tokenStreamPointer","VALID_QUALIFIED_ID_PATTERN","constructedNodes","eatExpression","eatLogicalOrExpression","moreTokens","token","peekToken","getKind","NullLiteral","toPosBounds","startPos","endPos","nextToken","assignedValue","Assign","toPosToken","valueIfNull","Elvis","ifTrueExprValue","eatToken","ifFalseExprValue","Ternary","eatLogicalAndExpression","peekIdentifierToken","peekTokenOne","rhExpr","checkOperands","OpOr","eatRelationalExpression","OpAnd","eatSumExpression","relationalOperatorToken","isNumericRelationalOperator","isIdentifier","idString","stringValue","asInstanceOfToken","asMatchesToken","asBetweenToken","maybeEatRelationalOperator","tk","kind","OpGT","OpLT","OpLE","OpGE","OpEQ","OpNE","OpInstanceof","OpMatches","OpBetween","eatProductExpression","peekTokenAny","checkRightOperand","OpPlus","OpMinus","eatPowerIncDecExpression","OpMultiply","OpDivide","OpModulus","eatUnaryExpression","OpPower","OpInc","OpDec","OpNot","NumberLiteral","parseFloat","BooleanLiteral","StringLiteral","maybeEatLiteral","maybeEatParenExpression","typeName","PropertyReference","eatPossiblyQualifiedId","dims","peekTokenConsumeIfMatched","TypeReference","maybeEatTypeReference","nullToken","maybeEatNullReference","newToken","possiblyQualifiedConstructorName","dimensions","maybeEatInlineListOrMap","ConstructorReference","accumulatedArguments","raiseInternalException","consumeArguments","maybeEatConstructorReference","maybeEatMethodOrProperty","maybeEatFunctionOrVar","beanRefToken","beanNameToken","beanName","BeanReference","maybeEatBeanReference","maybeEatProjection","maybeEatSelection","maybeEatIndexer","maybeEatNode","CompoundExpression","eatPrimaryExpression","nullSafeNavigation","functionOrVariableName","maybeEatMethodArgs","VariableReference","FunctionReference","Projection","listElements","closingCurly","InlineList","InlineMap","firstExpression","mapElements","Indexer","peekSelectToken","Selection","FIRST","LAST","ALL","qualifiedIdPieces","isValidQualifiedId","Identifier","QualifiedIdentifier","methodOrPropertyName","MethodReference","expectedKind","desiredTokenKind","consumeIfMatched","identifierString","expected","actual","operandExpression","checkLeftOperand","setConfiguration","Tokenizer","tokenize","ast","_Token","ALTERNATIVE_OPERATOR_NAMES","FLAGS","IS_DIGIT","inputData","toProcess","tokens","lexQuotedStringLiteral","terminated","Token","subarray","lexDoubleQuotedStringLiteral","lexNumericLiteral","firstCharIsZero","dotpos","endOfNumber","isReal","isDigit","pushIntToken","isChar","isExponentChar","isSign","isFloatSuffix","isDoubleSuffix","pushRealToken","isHexadecimalDigit","pushHexIntToken","lexIdentifier","asString","isAlphabetic","pushOneCharOrTwoCharToken","isLong","isTwoCharToken","pushCharToken","pushPairToken","tokenKind","tokenData","_SpelNode","stripQuotes","compiledArgs","currentActiveContext","maybeHandleNullSafeNavigation","member","getName","variableName","expressionComponents","buildContextStack","unbuildContextStack","childCount","leftValue","rightValue","base","exp","pow","int","cur","regexpString","exec","ifTrue","ifFalse","element","mapPieces","keyValue","piece","matches","doesMatch","whichElement","newCollection","selectFromArray","selectFromMap","projectCollection","_dims","identifierName","pieces","_toConsumableArray","dimension","_nodes2","authentication","principal","hasRole","role","authorities","grantedAuthority","authority","hasPermission","_includes","_tokenTypes","_Indentation","_InlineBlock","_Params","_defineProperties","trimSpacesEnd","Formatter","cfg","tokenizer","tokenOverride","instance","Constructor","_classCallCheck","indentation","indent","inlineBlock","previousReservedWord","protoProps","staticProps","getFormattedQueryFromTokens","formattedQuery","WHITESPACE","LINE_COMMENT","formatLineComment","BLOCK_COMMENT","formatBlockComment","RESERVED_TOP_LEVEL","formatTopLevelReservedWord","RESERVED_TOP_LEVEL_NO_INDENT","formatTopLevelReservedWordNoIndent","RESERVED_NEWLINE","formatNewlineReservedWord","RESERVED","formatWithSpaces","OPEN_PAREN","formatOpeningParentheses","CLOSE_PAREN","formatClosingParentheses","PLACEHOLDER","formatPlaceholder","formatComma","formatWithSpaceAfter","formatWithoutSpaces","formatQuerySeparator","addNewline","indentComment","comment","getIndent","decreaseTopLevel","equalizeWhitespace","formatReservedWord","increaseTopLevel","preserveWhitespaceFor","previousToken","uppercase","beginIfPossible","isActive","increaseBlockLevel","decreaseBlockLevel","resetIndentation","repeat","linesBetweenQueries","endsWith","_repeat","INDENT_TYPE_TOP_LEVEL","Indentation","indentTypes","InlineBlock","isInlineBlock","isForbiddenToken","COMMENT","Params","_isEmpty","_escapeRegExp","WHITESPACE_REGEX","NUMBER_REGEX","OPERATOR_REGEX","BLOCK_COMMENT_REGEX","LINE_COMMENT_REGEX","createLineCommentRegex","lineCommentTypes","RESERVED_TOP_LEVEL_REGEX","createReservedWordRegex","reservedTopLevelWords","RESERVED_TOP_LEVEL_NO_INDENT_REGEX","reservedTopLevelWordsNoIndent","RESERVED_NEWLINE_REGEX","reservedNewlineWords","RESERVED_PLAIN_REGEX","reservedWords","WORD_REGEX","createWordRegex","specialWordChars","STRING_REGEX","createStringRegex","stringTypes","OPEN_PAREN_REGEX","createParenRegex","openParens","CLOSE_PAREN_REGEX","closeParens","INDEXED_PLACEHOLDER_REGEX","createPlaceholderRegex","indexedPlaceholderTypes","IDENT_NAMED_PLACEHOLDER_REGEX","namedPlaceholderTypes","STRING_NAMED_PLACEHOLDER_REGEX","createStringPattern","reservedWordsPattern","specialChars","patterns","parens","escapeParen","paren","pattern","typesRegex","getNextToken","getWhitespaceToken","getCommentToken","getStringToken","getOpenParenToken","getCloseParenToken","getPlaceholderToken","getNumberToken","getReservedWordToken","getWordToken","getOperatorToken","getTokenOnFirstMatch","getLineCommentToken","getBlockCommentToken","STRING","getIdentNamedPlaceholderToken","getStringNamedPlaceholderToken","getIndexedPlaceholderToken","getPlaceholderTokenWithKey","parseKey","getEscapedPlaceholderKey","quoteChar","NUMBER","OPERATOR","getTopLevelReservedToken","getNewlineReservedToken","getTopLevelReservedTokenNoIndent","getPlainReservedToken","WORD","_Formatter","Db2Formatter","N1qlFormatter","previousReservedToken","PlSqlFormatter","StandardSqlFormatter","_Db2Formatter","_N1qlFormatter","_PlSqlFormatter","_StandardSqlFormatter","ID_GLOBAL_REGEXP","QUAL_GLOBAL_REGEXP","CHARS_GLOBAL_REGEXP","CHARS_ESCAPE_MAP","escapeString","chunkIndex","escapedVal","zeroPad","escapeId","forbidQualified","stringifyObjects","timeZone","dateToString","arrayToList","bufferToString","toSqlString","objectToValues","placeholdersRegex","valuesIndex","hour","minute","second","millisecond","dt","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","tz","convertTimezone","setTime","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","buffer","raw","arrayLikeToArray","ReferenceError","asyncGeneratorStep","gen","_next","_throw","_extends","superPropBase","_get","receiver","_getPrototypeOf","setPrototypeOf","__proto__","subClass","_s","_arr","_n","_d","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","sourceKeys","assertThisInitialized","_regeneratorRuntime","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","awrap","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","_setPrototypeOf","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","iterableToArray","arrayWithoutHoles","nonIterableSpread","runtime","regeneratorRuntime","accidentalStrictMode","globalThis"],"sourceRoot":""}