@ws-ui/http-handlers-editor 1.12.2 → 1.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +143 -81
- package/dist/index.es.js.map +1 -1
- package/package.json +4 -4
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/SwitchToEditorIcon.tsx","../src/adapter/provider.tsx","../src/adapter/utils.ts","../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../src/adapter/reducer/adapter.tsx","../src/adapter/redux/adapter.ts","../src/adapter/reducer/use-modals.ts","../src/adapter/subject.ts","../src/Portal.tsx","../src/Handler/index.tsx","../src/Editor.tsx","../src/Standalone/Modals.tsx","../src/Standalone/index.tsx"],"sourcesContent":["import { IconType } from '@ws-ui/icons';\nimport { ToolbarIcon } from '@ws-ui/shared';\nimport { FC } from 'react';\n\ninterface SwitchToEditorIconProps {\n label: string;\n Icon: IconType;\n onClick?: () => void;\n}\n\nexport const SwitchToEditorIcon: FC<SwitchToEditorIconProps> = ({\n label,\n Icon,\n onClick,\n}) => {\n return (\n <ToolbarIcon\n label={label}\n Icon={Icon}\n as=\"button\"\n onClick={onClick}\n />\n );\n};\n","import { createContext, useContext, type FC } from 'react';\nimport type {\n IAdapterProviderProps,\n TUseAdapter,\n} from '@ws-ui/shared';\nimport { IEditorStateAdapter } from './types';\n\nconst EditorStateAdapterContext = createContext<IEditorStateAdapter | null>(\n null,\n);\n\nexport const EditorStateAdapterProvider: FC<\n IAdapterProviderProps<IEditorStateAdapter>\n> = ({ children, adapter }) => {\n return (\n <EditorStateAdapterContext.Provider value={adapter}>\n {children}\n </EditorStateAdapterContext.Provider>\n );\n};\n\nexport const useEditorStateAdapter: TUseAdapter<IEditorStateAdapter> = () => {\n const adapter = useContext(EditorStateAdapterContext);\n\n if (!adapter) {\n throw new Error(\n 'useEditorStateAdapter must be used within an EditorStateAdapterProvider',\n );\n }\n\n return adapter;\n};\n","import { z } from 'zod';\nimport { generate } from 'short-uuid';\nimport { HTTPHandler, HTTPVerb } from './types';\n\nconst HandlerSchema = z.object({\n class: z.string().optional(),\n method: z.string().optional(),\n verbs: z.union([z.string(), z.array(z.string())]).optional(),\n id: z.string().optional(),\n pattern: z.string().optional(),\n regexPattern: z.string().optional(),\n});\n\nconst HandlersSchema = z.array(HandlerSchema);\n\nconst INVALID_JSON_ERROR = 'Invalid JSON';\n\nexport function normalizeHandlers(\n rawContent: string | HTTPHandler[] | undefined | null,\n): HTTPHandler[] {\n let parsedContent: unknown = rawContent ?? [];\n\n if (typeof rawContent === 'string') {\n try {\n parsedContent = JSON.parse(rawContent);\n } catch {\n throw new Error(INVALID_JSON_ERROR);\n }\n }\n\n const validationResult = HandlersSchema.safeParse(parsedContent);\n\n if (!validationResult.success) {\n throw new Error(INVALID_JSON_ERROR);\n }\n\n return validationResult.data.map((item) => {\n const asRegex = Boolean(item.regexPattern);\n const verbs = (Array.isArray(item.verbs)\n ? item.verbs\n : (item.verbs ?? '').split(',')\n )\n .map((verb) => verb.toUpperCase())\n .filter(Boolean);\n\n return {\n ...item,\n id: item.id ?? generate(),\n verbs: verbs as HTTPVerb[],\n asRegex,\n };\n });\n}\n\nexport function serializeHandlers(handlers: HTTPHandler[]): string {\n return JSON.stringify(\n handlers.map(({ isExpanded: _ignored, asRegex, pattern, regexPattern, ...handler }) => {\n const rest = asRegex ? { regexPattern } : { pattern };\n\n return {\n ...handler,\n verbs: handler.verbs?.join(','),\n ...rest,\n };\n }),\n null,\n 2,\n );\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n type Dispatch,\n type FC,\n type ReactNode,\n} from 'react';\nimport { Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { entries, omit } from 'lodash';\nimport { generate } from 'short-uuid';\nimport {\n IModal,\n IOpenModalPayload,\n IOpenModalReturnValue,\n ModalCloseReason,\n ModalType,\n} from '@ws-ui/shared';\nimport { IEditorStateAdapter, HTTPHandler, TEditorHost } from '../types';\nimport { normalizeHandlers } from '../utils';\n\ninterface IModalsState {\n list: IModal[];\n}\n\nconst modalSubject = new Subject<IModalsState>();\n\ninterface IReducerState {\n content: HTTPHandler[];\n editing: string | null;\n newlyCreatedHandlerID: string | null;\n modals: IModalsState;\n}\n\ntype ReducerAction =\n | { type: 'ADD_HANDLER'; payload: Omit<HTTPHandler, 'id'> }\n | { type: 'UPDATE_HANDLER'; id: string; payload: Partial<HTTPHandler> }\n | { type: 'DELETE_HANDLER'; id: string }\n | { type: 'TOGGLE_EXPANDED'; id: string }\n | { type: 'DUPLICATE_HANDLER'; id: string }\n | { type: 'TOGGLE_ALL_EXPANDED'; payload: boolean }\n | { type: 'UPDATE_HANDLERS'; payload: HTTPHandler[] }\n | { type: 'SYNC_DATA'; payload: HTTPHandler[] }\n | { type: 'SET_EDITING_HANDLER'; payload: string | null }\n | { type: 'CREATE_MODAL'; payload: IModal }\n | { type: 'REMOVE_MODAL'; payload: string }\n | { type: 'CLOSE_MODAL'; payload: { id: string; reason?: ModalCloseReason } }\n | {\n type: 'EDIT_MODAL';\n payload: { id: string } & Partial<Pick<IModal, 'views' | 'title'>>;\n };\n\nexport function handlerReducer(\n state: IReducerState,\n action: ReducerAction,\n): IReducerState {\n switch (action.type) {\n case 'UPDATE_HANDLERS':\n return {\n ...state,\n content: action.payload,\n };\n case 'SET_EDITING_HANDLER': {\n if (action.payload && action.payload !== state.editing) {\n const lastEditing = state.content.find(\n (item) => item.id === state.editing,\n );\n\n if (lastEditing) {\n const isEmpty =\n !Object.values(\n omit(lastEditing, ['id', 'verbs', 'asRegex', 'isExpanded']),\n ).some(Boolean) && lastEditing.verbs.length === 0;\n\n if (isEmpty) {\n return {\n ...state,\n content: state.content.filter((t) => t.id !== lastEditing.id),\n editing: action.payload,\n };\n }\n }\n }\n\n return {\n ...state,\n editing: action.payload,\n };\n }\n case 'ADD_HANDLER': {\n const id = generate();\n return {\n ...state,\n content: [...state.content, { ...action.payload, id }],\n editing: id,\n newlyCreatedHandlerID: id,\n };\n }\n case 'UPDATE_HANDLER':\n return {\n ...state,\n content: state.content.map((handler) =>\n handler.id === action.id\n ? { ...handler, ...action.payload }\n : handler,\n ),\n newlyCreatedHandlerID: null,\n };\n case 'DELETE_HANDLER':\n return {\n ...state,\n content: state.content.filter((handler) => handler.id !== action.id),\n };\n case 'TOGGLE_EXPANDED':\n return {\n ...state,\n content: state.content.map((handler) =>\n handler.id === action.id\n ? { ...handler, isExpanded: !handler.isExpanded }\n : handler,\n ),\n };\n case 'DUPLICATE_HANDLER': {\n const handlerToDuplicate = state.content.find(\n (handler) => handler.id === action.id,\n );\n\n if (!handlerToDuplicate) return state;\n return {\n ...state,\n content: [\n ...state.content,\n { ...handlerToDuplicate, id: generate(), isExpanded: true },\n ],\n };\n }\n case 'TOGGLE_ALL_EXPANDED':\n return {\n ...state,\n content: state.content.map((handler) => ({\n ...handler,\n isExpanded: action.payload,\n })),\n };\n case 'SYNC_DATA':\n return {\n ...state,\n content: action.payload.map((handler) => {\n const found = state.content.find((item) => item.id === handler.id);\n\n if (found) {\n return {\n ...handler,\n ...found,\n };\n }\n\n return handler;\n }),\n };\n case 'CREATE_MODAL': {\n return {\n ...state,\n modals: {\n ...state.modals,\n list: [...state.modals.list, action.payload],\n },\n };\n }\n case 'REMOVE_MODAL': {\n return {\n ...state,\n modals: {\n ...state.modals,\n list: state.modals.list.filter((modal) => modal.id !== action.payload),\n },\n };\n }\n case 'CLOSE_MODAL': {\n const { id, reason } = action.payload;\n let newState: IReducerState;\n\n if (reason) {\n const found = state.modals.list.find((modal) => modal.id === id);\n if (found) {\n newState = {\n ...state,\n modals: {\n ...state.modals,\n list: state.modals.list.map((modal) =>\n modal.id === id\n ? { ...modal, closeReason: reason, isOpen: false }\n : modal,\n ),\n },\n };\n } else {\n return state;\n }\n } else {\n newState = {\n ...state,\n modals: {\n ...state.modals,\n list: state.modals.list.filter((modal) => modal.id !== id),\n },\n };\n }\n\n modalSubject.next(newState.modals);\n\n return newState;\n }\n case 'EDIT_MODAL': {\n const { id, ...payload } = action.payload;\n const found = state.modals.list.find((modal) => modal.id === id);\n if (!found) return state;\n\n return {\n ...state,\n modals: {\n ...state.modals,\n list: state.modals.list.map((modal) =>\n modal.id === id ? { ...modal, ...payload } : modal,\n ),\n },\n };\n }\n default:\n return state;\n }\n}\n\ninterface IExternalData {\n catalog?: datasources.IEnhancedCatalog | null;\n host?: TEditorHost;\n}\n\ninterface IReducerValue {\n state: IReducerState;\n dispatch: Dispatch<ReducerAction>;\n external: IExternalData;\n}\n\nexport interface IReducerAdapterProps extends IExternalData {\n children: ReactNode;\n content?: string | HTTPHandler[];\n host?: TEditorHost; \n}\n\nexport const EditorStateContext = createContext<IReducerValue | null>(null);\n\nexport const getDefaultInitialState = (\n content: HTTPHandler[],\n): IReducerState => ({\n content,\n editing: null,\n newlyCreatedHandlerID: null,\n modals: {\n list: [],\n },\n});\n\nexport const ReducerAdapterProvider: FC<IReducerAdapterProps> = ({\n children,\n content,\n catalog = null,\n host = 'web', \n}) => {\n const normalizedContent = useMemo(\n () => normalizeHandlers(content),\n [content],\n );\n const [state, dispatch] = useReducer(\n handlerReducer,\n getDefaultInitialState(normalizedContent),\n );\n\n useEffect(() => {\n dispatch({\n type: 'SYNC_DATA',\n payload: normalizedContent,\n });\n }, [normalizedContent]);\n\n const external = useMemo<IExternalData>(\n () => ({\n catalog,\n host,\n }),\n [catalog, host],\n );\n\n return (\n <EditorStateContext.Provider value={{ state, dispatch, external }}>\n {children}\n </EditorStateContext.Provider>\n );\n};\n\nexport function useReducerAdapter(): IEditorStateAdapter {\n const context = useContext(EditorStateContext);\n\n if (!context) {\n throw new Error(\n 'useReducerAdapter must be used within a ReducerAdapterProvider',\n );\n }\n\n const { state, dispatch, external } = context;\n\n return {\n getHandlers: useCallback(() => state.content, [state.content]),\n getEditingHandlerId: useCallback(() => state.editing, [state.editing]),\n getNewlyCreatedHandlerId: useCallback(\n () => state.newlyCreatedHandlerID,\n [state.newlyCreatedHandlerID],\n ),\n getCatalog: useCallback(() => external.catalog ?? null, [external.catalog]),\n getHost: useCallback(() => external.host ?? 'web', [external.host]),\n actions: {\n updateHandlers: useCallback((handlers: HTTPHandler[]) => {\n dispatch({ type: 'UPDATE_HANDLERS', payload: handlers });\n }, []),\n addHandler: useCallback((payload: Omit<HTTPHandler, 'id'>) => {\n dispatch({ type: 'ADD_HANDLER', payload });\n }, []),\n updateHandler: useCallback(\n (id: string, payload: Partial<HTTPHandler>) => {\n dispatch({ type: 'UPDATE_HANDLER', id, payload });\n },\n [],\n ),\n deleteHandler: useCallback((id: string) => {\n dispatch({ type: 'DELETE_HANDLER', id });\n }, []),\n toggleExpanded: useCallback((id: string) => {\n dispatch({ type: 'TOGGLE_EXPANDED', id });\n }, []),\n duplicateHandler: useCallback((id: string) => {\n dispatch({ type: 'DUPLICATE_HANDLER', id });\n }, []),\n toggleAllExpanded: useCallback((value: boolean) => {\n dispatch({ type: 'TOGGLE_ALL_EXPANDED', payload: value });\n }, []),\n setEditingHandler: useCallback((id: string | null) => {\n dispatch({ type: 'SET_EDITING_HANDLER', payload: id });\n }, []),\n openModal: useCallback(\n async (config: IOpenModalPayload): Promise<IOpenModalReturnValue> => {\n const { type = ModalType.ALERT } = config;\n const id = generate();\n\n dispatch({\n type: 'CREATE_MODAL',\n payload: {\n id,\n type,\n isOpen: true,\n ...config,\n },\n });\n\n if (type === ModalType.CONFIRM) {\n return new Promise<IOpenModalReturnValue>((resolve) => {\n const subscription = modalSubject\n .pipe(\n filter((modalsState) => {\n const found = modalsState.list.find(\n (modal) => modal.id === id,\n );\n return found !== undefined && !found.isOpen;\n }),\n )\n .subscribe((modalsState) => {\n const found = modalsState.list.find(\n (modal) => modal.id === id,\n );\n if (found) {\n const confirmed =\n found.closeReason === ModalCloseReason.CONFIRMED;\n const options = entries(found.views?.toggles || {}).reduce(\n (acc, curr) => ({\n ...acc,\n [curr[0]]: curr[1].value,\n }),\n {},\n );\n dispatch({ type: 'REMOVE_MODAL', payload: id });\n subscription.unsubscribe();\n resolve({ confirmed, options });\n }\n });\n });\n }\n\n return { confirmed: false };\n },\n [dispatch],\n ),\n },\n };\n}\n","import { useCallback, useEffect, useMemo, useReducer } from 'react';\nimport { isEqual } from 'lodash';\nimport {\n openModal,\n selectCatalog,\n selectTabByPath,\n setContent,\n switchEditor,\n useAppDispatch,\n useAppSelector,\n} from '@ws-ui/store';\nimport {\n IOpenModalPayload,\n IOpenModalReturnValue,\n IEditor,\n useDidMountEffect,\n} from '@ws-ui/shared';\nimport { IEditorStateAdapter, HTTPHandler } from '../types';\nimport { normalizeHandlers, serializeHandlers } from '../utils';\nimport { getDefaultInitialState, handlerReducer } from '../reducer/adapter';\n\nexport function useReduxAdapter(path: string, initialContent?: HTTPHandler[]): IEditorStateAdapter {\n const dispatch = useAppDispatch();\n const tab = useAppSelector(selectTabByPath(path), isEqual);\n const catalog = useAppSelector(selectCatalog);\n\n const normalizedContent = useMemo(\n () => normalizeHandlers(tab?.content),\n [tab?.content],\n );\n\n const [state, localDispatch] = useReducer(\n handlerReducer,\n initialContent ? getDefaultInitialState(initialContent) : getDefaultInitialState(normalizedContent),\n );\n\n useDidMountEffect(() => {\n localDispatch({ type: 'SYNC_DATA', payload: normalizedContent });\n }, [normalizedContent]);\n\n useEffect(() => {\n if (!tab) {\n return;\n }\n\n const newContent = serializeHandlers(state.content);\n const oldContent =\n typeof tab.content === 'string'\n ? tab.content\n : JSON.stringify(tab.content, null, 2);\n\n if (newContent === oldContent) {\n return;\n }\n\n dispatch(\n setContent({\n path,\n content: newContent,\n }),\n );\n }, [dispatch, path, state.content, tab]);\n\n return {\n getHandlers: useCallback(() => state.content, [state.content]),\n getEditingHandlerId: useCallback(() => state.editing, [state.editing]),\n getNewlyCreatedHandlerId: useCallback(\n () => state.newlyCreatedHandlerID,\n [state.newlyCreatedHandlerID],\n ),\n getCatalog: useCallback(() => catalog ?? null, [catalog]),\n getHost: () => 'web',\n \n actions: {\n updateHandlers: useCallback((handlers: HTTPHandler[]) => {\n localDispatch({ type: 'UPDATE_HANDLERS', payload: handlers });\n }, []),\n addHandler: useCallback((payload: Omit<HTTPHandler, 'id'>) => {\n localDispatch({ type: 'ADD_HANDLER', payload });\n }, []),\n updateHandler: useCallback(\n (id: string, payload: Partial<HTTPHandler>) => {\n localDispatch({ type: 'UPDATE_HANDLER', id, payload });\n },\n [],\n ),\n deleteHandler: useCallback((id: string) => {\n localDispatch({ type: 'DELETE_HANDLER', id });\n }, []),\n toggleExpanded: useCallback((id: string) => {\n localDispatch({ type: 'TOGGLE_EXPANDED', id });\n }, []),\n duplicateHandler: useCallback((id: string) => {\n localDispatch({ type: 'DUPLICATE_HANDLER', id });\n }, []),\n toggleAllExpanded: useCallback((value: boolean) => {\n localDispatch({ type: 'TOGGLE_ALL_EXPANDED', payload: value });\n }, []),\n setEditingHandler: useCallback((id: string | null) => {\n localDispatch({ type: 'SET_EDITING_HANDLER', payload: id });\n }, []),\n openModal: useCallback(\n async (config: IOpenModalPayload): Promise<IOpenModalReturnValue> => {\n const result = await dispatch(openModal(config)).unwrap();\n return result;\n },\n [dispatch],\n ),\n switchEditor: useCallback(\n (editor: IEditor) => {\n if (!tab) {\n return;\n }\n\n dispatch(\n switchEditor({\n tab,\n editor,\n }),\n );\n },\n [dispatch, tab],\n ),\n },\n };\n}\n","import { IModal, ModalCloseReason } from '@ws-ui/shared';\nimport { useCallback, useContext } from 'react';\nimport { EditorStateContext } from './adapter';\n\nexport function useModals() {\n const context = useContext(EditorStateContext);\n\n if (!context) {\n throw new Error('useModals must be used within a ReducerAdapterProvider');\n }\n\n const { state, dispatch } = context;\n\n return {\n modals: state.modals.list,\n closeModal: useCallback(\n (params: { id: string; reason?: ModalCloseReason }) => {\n dispatch({ type: 'CLOSE_MODAL', payload: params });\n },\n [dispatch],\n ),\n editModal: useCallback(\n (params: { id: string } & Partial<Pick<IModal, 'views' | 'title'>>) => {\n dispatch({ type: 'EDIT_MODAL', payload: params });\n },\n [dispatch],\n ),\n removeModal: useCallback(\n (id: string) => {\n dispatch({ type: 'REMOVE_MODAL', payload: id });\n },\n [dispatch],\n ),\n };\n}\n","import { Subject } from 'rxjs';\n\nexport const $handlerSubject = new Subject<string | null>();\n","import { FC } from 'react';\nimport { Portal as BasePortal, PortalProps } from '@ws-ui/shared';\nimport { HTTP_HANDLERS_EDITOR_SCOPE_CLASS } from './common';\n\nexport const getDefaultContainer = () => {\n return (\n document.querySelector(`.${HTTP_HANDLERS_EDITOR_SCOPE_CLASS}`) || document.body\n );\n};\n\nexport const Portal: FC<PortalProps> = ({ container, ...props }) => {\n return (\n <BasePortal {...props} container={container || getDefaultContainer()} />\n );\n};\n","import { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Combobox, Transition } from '@headlessui/react';\nimport {\n FdCheckCircle,\n FdClose,\n FdCloseNaked,\n FdDown,\n FdDragHandle,\n FdDuplicate,\n FdEmpty,\n FdInfoCircle,\n FdPen,\n FdRegex,\n FdTrash,\n FdUnRegex,\n FdWarningDanger,\n} from '@ws-ui/icons';\nimport {\n ControlledSwitch,\n ModalColor,\n ModalType,\n useHotkeys,\n Tooltip,\n} from '@ws-ui/shared';\nimport cn from 'classnames';\nimport { useCombobox, useMultipleSelection } from 'downshift';\nimport { FC, Fragment, useEffect, useMemo, useState } from 'react';\nimport { $handlerSubject, HTTPHandler, HTTPVerb, useEditorStateAdapter } from '../adapter';\nimport { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities';\nimport { DraggableAttributes } from '@dnd-kit/core';\nimport { omit, isEqual } from 'lodash';\nimport RandExp from 'randexp';\nimport { getDefaultContainer } from '../Portal';\n\nconst MultipleComboBox: FC<{\n initialSelectedItems: HTTPVerb[];\n onChange: (val: HTTPVerb[]) => void;\n touched?: boolean;\n onBlur?: () => void;\n 'data-cy'?: string;\n}> = ({\n initialSelectedItems,\n onChange,\n touched,\n onBlur,\n 'data-cy': dataCy,\n}) => {\n const verbs: HTTPVerb[] = ['GET', 'POST', 'PUT', 'DELETE'];\n\n function getFilteredverbs(selectedItems: string[], inputValue: string) {\n const lowerCasedInputValue = inputValue.toLowerCase();\n\n return verbs.filter(function filtermethod(method) {\n return (\n !selectedItems.includes(method) &&\n method.toLowerCase().includes(lowerCasedInputValue)\n );\n });\n }\n\n const [inputValue, setInputValue] = useState('');\n const [selectedItems, setSelectedItems] = useState(initialSelectedItems);\n\n useEffect(() => {\n setSelectedItems(initialSelectedItems);\n }, [initialSelectedItems]);\n\n const items: string[] = useMemo(\n () => getFilteredverbs(selectedItems, inputValue),\n [selectedItems, inputValue],\n );\n\n const { getSelectedItemProps, getDropdownProps, removeSelectedItem } =\n useMultipleSelection({\n selectedItems,\n onStateChange({ selectedItems: newSelectedItems = [], type }) {\n switch (type) {\n case useMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:\n case useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace:\n case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:\n setSelectedItems(newSelectedItems);\n break;\n default:\n break;\n }\n },\n });\n\n const {\n isOpen,\n getToggleButtonProps,\n getMenuProps,\n getInputProps,\n highlightedIndex,\n getItemProps,\n selectedItem,\n } = useCombobox({\n items,\n itemToString(item) {\n return item ? item : '';\n },\n defaultHighlightedIndex: 0, // after selection, highlight the first item.\n selectedItem: null,\n inputValue,\n stateReducer(state, actionAndChanges) {\n const { changes, type } = actionAndChanges;\n\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen: true, // keep the menu open after selection.\n highlightedIndex: 0, // with the first option highlighted.\n };\n default:\n return changes;\n }\n },\n onStateChange({\n inputValue: newInputValue = '',\n type,\n selectedItem: newSelectedItem,\n }) {\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n case useCombobox.stateChangeTypes.InputBlur:\n if (newSelectedItem) {\n setSelectedItems([...selectedItems, newSelectedItem as HTTPVerb]);\n setInputValue('');\n }\n break;\n\n case useCombobox.stateChangeTypes.InputChange:\n setInputValue(newInputValue);\n\n break;\n default:\n break;\n }\n },\n });\n\n useEffect(() => {\n onChange(selectedItems);\n }, [selectedItems]);\n\n return (\n <div className=\"relative flex-1\" data-cy={dataCy}>\n <div\n className={cn(\n 'bg-grey-300 focus-within:ring-1 focus-within:ring-primary-dark relative flex items-center w-full cursor-default overflow-hidden rounded p-px text-left focus:outline-none',\n {\n 'ring-1 ring-primary-dark rounded-b-none': isOpen && items.length,\n 'ring-1 ring-red-400 overflow-visible':\n selectedItems.length === 0 && touched,\n },\n )}\n onBlur={onBlur}\n >\n {selectedItems.length === 0 && !isOpen && touched && (\n <div className=\"absolute inset-x-0 top-[25px] z-[1] rounded-b-sm bg-red-200 px-1 text-xs text-red-600 ring-1 ring-red-600\">\n {selectedItems.length === 0 && 'At least one HTTP verb is required'}\n </div>\n )}\n\n {selectedItems.map(\n function renderSelectedItem(selectedItemForRender, index) {\n return (\n <span\n className={cn(\n 'bg-grey-600 text-s mr-1 flex items-center rounded px-1 py-0.5 uppercase',\n {\n 'bg-red-400': !verbs.includes(selectedItemForRender),\n },\n )}\n key={`selected-item-${index}-${selectedItemForRender}`}\n {...getSelectedItemProps({\n selectedItem: selectedItemForRender,\n index,\n })}\n >\n {selectedItemForRender}\n\n <span\n onClick={(e) => {\n e.stopPropagation();\n removeSelectedItem(selectedItemForRender);\n }}\n className=\"hover:bg-primary-hover ml-2 inline-block cursor-pointer rounded p-0.5 text-gray-100 hover:text-white active:outline-none\"\n >\n <FdCloseNaked />\n </span>\n </span>\n );\n },\n )}\n <input\n {...getInputProps(\n getDropdownProps(\n { preventKeyAction: isOpen },\n { suppressRefError: true },\n ),\n )}\n className=\"flex-grow border-none bg-transparent px-1 py-1 text-xs outline-none\"\n placeholder={selectedItems.length === 0 ? 'Select HTTP verbs' : ''}\n size={1}\n />\n <button\n className=\"absolute inset-y-0 right-0 flex items-center pr-2\"\n type=\"button\"\n {...getToggleButtonProps()}\n >\n <FdDown className=\"h-3 w-3 text-gray-50\" aria-hidden=\"true\" />\n </button>\n </div>\n <ul\n className={`ring-primary-dark bg-grey-900 text-s absolute z-10 w-full rounded-b ring-1 p-1 text-white ${\n !(isOpen && items.length) && 'hidden'\n }`}\n {...getMenuProps()}\n >\n {isOpen &&\n items.map((item, index) => (\n <li\n className={cn(\n highlightedIndex === index && 'bg-primary-hover',\n selectedItem === item && 'font-bold',\n 'flex flex-col p-1 shadow-sm',\n )}\n key={`${item}${index}`}\n {...getItemProps({ item, index })}\n >\n <span>{item}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nconst Select = ({\n value,\n options,\n errorMessage = '',\n onChange,\n onBlur,\n 'data-cy': dataCy,\n}: {\n value: string;\n onChange: (val: string) => void;\n options: { name: string }[];\n errorMessage?: string;\n onBlur?: () => void;\n 'data-cy'?: string;\n}) => {\n const [query, setQuery] = useState('');\n\n const notFound = options.find((item) => item.name === value);\n\n const filteredOptions =\n query === ''\n ? options\n : options.filter((sgltn) => {\n return sgltn.name.toLowerCase().includes(query.toLowerCase());\n });\n\n return (\n <Combobox\n key={value}\n value={{ name: value }}\n onChange={(s) => onChange(s.name)}\n >\n {({ open }) => (\n <div className=\"relative w-full\" data-cy={dataCy}>\n <div\n className={cn(\n 'bg-grey-300 focus-within:ring-1 focus-within:ring-primary-dark relative w-full cursor-default overflow-hidden rounded text-left inline-flex',\n {\n 'ring-1 ring-red-400': (!notFound && value) || errorMessage,\n 'ring-1 ring-primary-dark rounded-b-none': open,\n 'overflow-visible': !notFound && !open && errorMessage,\n },\n )}\n >\n <Combobox.Input\n className={cn(\n 'bg-grey-300 text-s w-full border-none py-1 px-2 focus:outline-none rounded',\n {\n '!text-red-400': !notFound,\n },\n )}\n displayValue={(sngltn: { name: string }) => sngltn.name}\n onChange={(event) => setQuery(event.target.value)}\n style={{ caretColor: 'white' }}\n onBlur={onBlur}\n />\n <span className=\"inset-y-0 right-0 flex items-center gap-1 pr-2\">\n {!notFound && !open && errorMessage && (\n <div className=\"absolute inset-x-0 top-[25px] z-[1] rounded-b-sm bg-red-200 px-1 text-xs text-red-600 ring-1 ring-red-600\">\n {errorMessage}\n </div>\n )}\n\n {value ? (\n <>\n <button\n onClick={() => {\n setQuery('');\n onChange('');\n }}\n >\n <FdCloseNaked\n className=\"text-grey-50 h-3 w-3\"\n aria-hidden=\"true\"\n />\n </button>\n <span className=\"bg-grey-50 h-3 w-[1px] rounded-full\"></span>\n </>\n ) : null}\n <Combobox.Button>\n <FdDown className=\"text-grey-50 h-3 w-3\" aria-hidden=\"true\" />\n </Combobox.Button>\n </span>\n </div>\n\n <Transition\n as={Fragment}\n leave=\"transition ease-in durati pb-0.5on-100\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n afterLeave={() => setQuery('')}\n >\n <Combobox.Options className=\"bg-grey-900 text-s text-grey-100 sm:text-s absolute z-50 max-h-60 w-full overflow-auto rounded-b ring-1 ring-primary-dark p-1 focus:outline-none\">\n {filteredOptions.length === 0 ? (\n <div className=\"text-s text-grey-200 relative cursor-default select-none px-0.5 py-0.5 \">\n <FdEmpty className=\"inline h-4 w-4\" /> Nothing found.\n </div>\n ) : (\n filteredOptions.map((option, index) => (\n <Combobox.Option\n key={index}\n className={({ active }) =>\n `relative cursor-default select-none ${\n active ? 'bg-primary-hover' : ''\n }`\n }\n value={option}\n >\n {({ selected }) => (\n <>\n <span\n className={`block truncate p-2 py-1 ${\n selected\n ? 'bg-primary-dark font-medium text-white'\n : 'font-normal'\n }`}\n >\n {option.name}\n </span>\n </>\n )}\n </Combobox.Option>\n ))\n )}\n </Combobox.Options>\n </Transition>\n </div>\n )}\n </Combobox>\n );\n};\n\nconst MethodSelector = ({\n value,\n options,\n onChange,\n errorMessage,\n onBlur,\n 'data-cy': dataCy,\n}: {\n value: string;\n onChange: (val: string) => void;\n options: { name: string; exposed: boolean }[];\n errorMessage?: string;\n onBlur?: () => void;\n 'data-cy'?: string;\n}) => {\n const [query, setQuery] = useState('');\n\n const found = options.find((item) => item.name === value);\n\n const exposed = found && found.exposed;\n\n const filteredOptions =\n query === ''\n ? options\n : options.filter((sgltn) => {\n return sgltn.name.toLowerCase().includes(query.toLowerCase());\n });\n\n return (\n <Combobox value={{ name: value }} onChange={(val) => onChange(val.name)}>\n {({ open }) => (\n <div className=\"relative\" data-cy={dataCy}>\n <div\n className={cn(\n 'bg-grey-300 focus-within:ring-1 focus-within:ring-primary-dark relative w-full cursor-default overflow-hidden rounded text-left inline-flex',\n {\n 'ring-1 ring-red-400': errorMessage,\n 'ring-1 ring-yellow-500': exposed,\n 'ring-1 ring-primary-dark rounded-b-none': open,\n 'overflow-visible': !open && errorMessage,\n },\n )}\n >\n <Combobox.Input\n className={cn(\n 'bg-grey-300 text-s w-full border-none py-1 px-2 focus:outline-none truncate rounded',\n {\n '!text-red-400': errorMessage,\n '!text-yellow-500': exposed,\n },\n )}\n style={{ caretColor: 'white' }}\n displayValue={(sngltn: { name: string }) => sngltn.name}\n onChange={(event) => setQuery(event.target.value)}\n onBlur={onBlur}\n />\n {!open && errorMessage && (\n <div\n className={cn(\n 'absolute inset-x-0 top-[25px] z-[1] rounded-b-sm bg-red-200 px-1 text-xs text-red-600 ring-1 ring-red-600',\n { '!text-yellow-500 ring-yellow-500 bg-white': exposed },\n )}\n >\n {errorMessage}\n </div>\n )}\n <span className=\"inset-y-0 right-0 flex items-center gap-1 pr-2\">\n {value ? (\n <>\n <button\n onClick={() => {\n setQuery('');\n onChange('');\n }}\n >\n <FdCloseNaked\n className=\"text-grey-50 h-3 w-3\"\n aria-hidden=\"true\"\n />\n </button>\n <span className=\"bg-grey-50 h-3 w-[1px] rounded-full\"></span>\n </>\n ) : null}\n <Combobox.Button>\n <FdDown className=\"text-grey-50 h-3 w-3\" aria-hidden=\"true\" />\n </Combobox.Button>\n </span>\n </div>\n\n <Transition\n as={Fragment}\n leave=\"transition ease-in duration-100\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n afterLeave={() => setQuery('')}\n >\n <Combobox.Options className=\"bg-grey-900 text-s text-grey-100 sm:text-s absolute z-50 max-h-60 w-full overflow-auto rounded-b ring-1 ring-primary-dark p-1 focus:outline-none\">\n {!filteredOptions.length ? (\n <div className=\"text-s text-grey-200 relative cursor-default select-none px-0.5 py-0.5\">\n <FdEmpty className=\"inline h-4 w-4\" /> Nothing found.\n </div>\n ) : (\n filteredOptions.map((option, index) => (\n <Combobox.Option\n key={index}\n className={({ active }) =>\n `relative cursor-default select-none ${\n active ? 'bg-primary-hover' : ''\n }`\n }\n value={option}\n >\n {({ selected }) => (\n <>\n <span\n className={`text-s flex items-center gap-2 truncate p-2 py-1 ${\n selected\n ? 'bg-primary-dark font-medium text-white'\n : 'font-normal'\n }`}\n >\n {option.exposed && (\n <FdWarningDanger className=\"text-yellow-500\" />\n )}\n <span className=\"flex-1 truncate\" title={option.name}>\n {option.name}\n </span>\n </span>\n </>\n )}\n </Combobox.Option>\n ))\n )}\n </Combobox.Options>\n </Transition>\n </div>\n )}\n </Combobox>\n );\n};\n\nconst GrabHandle: FC<{\n attributes: DraggableAttributes;\n listeners: SyntheticListenerMap | undefined;\n}> = ({ listeners, attributes }) => {\n return (\n <button data-cy=\"handler-row-drag-handle\" {...attributes} {...listeners}>\n <FdDragHandle />\n </button>\n );\n};\n\nconst generateRegexExample = (regex: string) => {\n if (!regex) return '';\n let regexExample;\n RandExp.prototype.max = 8;\n try {\n regexExample = new RandExp(regex)?.gen();\n } catch {\n regexExample = '';\n }\n return `Requests matching regex will be handled example: ${regexExample}`;\n};\n\nconst HandlerEdit: FC<\n HTTPHandler & {\n attributes: DraggableAttributes;\n listeners: SyntheticListenerMap | undefined;\n }\n> = ({\n id,\n class: className,\n method,\n pattern,\n verbs,\n regexPattern,\n asRegex,\n listeners,\n attributes,\n}) => {\n const [handler, setHandler] = useState({\n className,\n method,\n pattern,\n verbs,\n asRegex,\n regexPattern,\n });\n\n const adapter = useEditorStateAdapter();\n const catalog = adapter.getCatalog();\n\n const singletons = Object.values(catalog?.singletons || {});\n\n const singletonMethods = singletons\n .find((item) => item.name === handler.className)\n ?.methods.map(({ name, exposed }) => ({ name, exposed }));\n\n const newlyCreatedHandlerID = adapter.getNewlyCreatedHandlerId();\n\n function isValid() {\n const { className, method, asRegex, regexPattern, pattern, verbs } =\n handler;\n return !!(\n className &&\n method &&\n (asRegex ? regexPattern : !pattern.endsWith('/')) &&\n verbs.length\n );\n }\n\n function onConfirm() {\n if (isValid()) {\n const { className, method, asRegex, regexPattern, pattern, verbs } =\n handler;\n const rest = asRegex ? { regexPattern } : { pattern };\n adapter.actions.updateHandler(id, {\n class: className,\n method,\n verbs,\n asRegex,\n ...rest,\n });\n\n adapter.actions.setEditingHandler(null);\n }\n }\n\n const onCancel = async () => {\n const oldHandler = {\n className,\n method,\n pattern,\n regexPattern,\n verbs,\n };\n\n const newHandler = omit(handler, ['id', 'isExpanded']);\n if (!isValid()) {\n if (newlyCreatedHandlerID) {\n adapter.actions.deleteHandler(newlyCreatedHandlerID);\n }\n adapter.actions.setEditingHandler(null);\n return;\n }\n\n if (!isEqual(oldHandler, newHandler)) {\n const { confirmed } = await adapter.actions.openModal({\n title: 'Cancel Changes',\n type: ModalType.CONFIRM,\n color: ModalColor.DANGER,\n message:\n 'Are you sure you want to cancel changes made to this Handler?',\n icon: 'FdWarningDanger',\n });\n\n if (confirmed) {\n if (newlyCreatedHandlerID && newlyCreatedHandlerID === id) {\n adapter.actions.deleteHandler(id);\n }\n\n adapter.actions.setEditingHandler(null);\n\n return;\n }\n }\n };\n\n useHotkeys(\n 'esc',\n () => {\n setTimeout(() => {\n onCancel();\n }, 100);\n },\n [],\n );\n\n useEffect(() => {\n $handlerSubject.subscribe((lastEditingID) => {\n if (lastEditingID === id) {\n onConfirm();\n }\n });\n }, [handler, id]);\n const [touchedFields, setTouchedFields] = useState<{\n [key: string]: boolean;\n }>({ className: false, method: false, pattern: false, verbs: false });\n\n const methodErrors = () => {\n if (touchedFields.method && !handler.method) {\n return 'Method is required';\n }\n if (singletonMethods) {\n const found = singletonMethods?.find(\n (item) => item.name === handler.method,\n );\n if (handler.method && !found)\n return `The method \"${handler.method}\" doesn't exist.`;\n if (found && found.exposed)\n return `Method \"${handler.method}\" is already exposed`;\n }\n };\n const patternErrors = () => {\n if (touchedFields.pattern) {\n if (handler.asRegex && !handler.regexPattern) {\n return 'Pattern is required';\n }\n if (!handler.asRegex && handler.pattern?.endsWith('/')) {\n return 'Pattern should not end with a \"/\"';\n }\n }\n return undefined;\n };\n\n return (\n <div className=\"flex items-center gap-2 rounded-b py-2\">\n <div className=\"flex w-60 flex-shrink-0 items-center gap-1\">\n <GrabHandle\n key=\"grab-handle\"\n listeners={listeners}\n attributes={attributes}\n />\n <Select\n data-cy=\"handler-row-class-selector\"\n value={handler.className}\n onChange={(val) => {\n setHandler((state) => ({ ...state, className: val }));\n }}\n onBlur={() =>\n setTouchedFields((state) => ({ ...state, className: true }))\n }\n key={className}\n options={singletons}\n errorMessage={\n touchedFields.className && !handler.className\n ? 'Class name is required'\n : handler.className !== '' &&\n !singletons.find((item) => item.name === handler.className)\n ? `The singleton \"${handler.className}\" doesn't exist.`\n : undefined\n }\n />\n </div>\n <div className=\"w-60 flex-shrink-0\">\n <MethodSelector\n data-cy=\"handler-row-method-selector\"\n value={handler.method}\n onChange={(val) => {\n setHandler((state) => ({ ...state, method: val }));\n }}\n options={singletonMethods || []}\n errorMessage={methodErrors()}\n onBlur={() =>\n setTouchedFields((state) => ({ ...state, method: true }))\n }\n />\n </div>\n\n <div className=\"relative w-60 flex-shrink-0 flex items-center gap-1 overflow-visible\">\n <Tooltip\n label={\n handler.asRegex\n ? generateRegexExample(handler.regexPattern)\n : handler.pattern && !handler.pattern.endsWith('/')\n ? `Requests starting with /${handler.pattern}/ will be handled`\n : ''\n }\n container={getDefaultContainer()}\n >\n <div className=\"relative w-full\">\n {!handler.asRegex && (\n <span className=\"absolute text-s inset-y-0 left-1 flex items-center gap-2\">\n /\n </span>\n )}\n <input\n data-cy=\"handler-row-pattern-input\"\n type=\"text\"\n className={cn(\n 'bg-grey-300 text-s block w-full rounded p-1 pl-3 focus:outline-none focus:ring-1 focus:ring-primary-dark',\n {\n 'focus:ring-red-400 ring-1 ring-red-400':\n touchedFields.pattern &&\n handler.asRegex &&\n !handler['regexPattern'],\n },\n )}\n value={handler.asRegex ? handler.regexPattern : handler.pattern}\n onChange={(e) => {\n setHandler((state) => ({\n ...state,\n [handler.asRegex ? 'regexPattern' : 'pattern']:\n e.target.value,\n }));\n }}\n onBlur={() =>\n setTouchedFields((state) => ({ ...state, pattern: true }))\n }\n placeholder={handler.asRegex ? 'Required' : ''}\n />\n {patternErrors() && (\n <div className=\"absolute inset-x-0 top-[25px] z-[1] rounded-b-sm bg-red-200 px-1 text-xs text-red-600 ring-1 ring-red-600\">\n {patternErrors()}\n </div>\n )}\n </div>\n </Tooltip>\n {(asRegex ? regexPattern : pattern) && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n\n setHandler((state) => ({\n ...state,\n [handler.asRegex ? 'regexPattern' : 'pattern']: '',\n }));\n }}\n className=\"absolute inset-y-0 right-6 flex items-center gap-2 pr-2\"\n >\n <FdCloseNaked\n className=\"text-grey-200 h-3 w-3\"\n aria-hidden=\"true\"\n />\n </button>\n )}\n <Tooltip\n label={\n handler.asRegex\n ? `Requests matching this regex will be handled. Check the match with the __[Match regex command](https://developer.4d.com/docs/commands/match-regex)__`\n : `Prefixes are considered as regular expressions already containing starting and ending / \\n\\n __[documentation](https://developer.4d.com/qodly/4DQodlyPro/httpHandlers)__`\n }\n container={getDefaultContainer()}\n >\n <span className=\"rounded hover:bg-gray-400/30 w-6 h-6 flex items-center content-center justify-center\">\n <FdInfoCircle className=\"inline h-4 w-4 text-gray-100\" />\n </span>\n </Tooltip>\n </div>\n\n <div className=\"w-20 px-2 flex justify-center\">\n <ControlledSwitch\n data-cy=\"handler-row-regex-switch\"\n value={!!handler.asRegex}\n onChange={(value) => {\n const rest = value\n ? { regexPattern: pattern, asRegex: value }\n : { pattern: regexPattern, asRegex: value };\n\n setHandler((state) => ({ ...state, ...rest }));\n }}\n className={`${handler.asRegex ? 'bg-primary-dark' : 'bg-grey-300'}\nrelative inline-flex h-5 w-8 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75`}\n >\n <span\n aria-hidden=\"true\"\n className={`${handler.asRegex ? 'translate-x-3' : 'translate-x-0'}\npointer-events-none inline-block h-4 w-4 transform rounded-full bg-white ring-0 transition duration-200 ease-in-out`}\n />\n </ControlledSwitch>\n </div>\n <div className=\"flex flex-1 items-center\">\n <MultipleComboBox\n data-cy=\"handler-row-verbs-select\"\n initialSelectedItems={handler.verbs || []}\n onChange={(val) => {\n setHandler((state) => ({ ...state, verbs: val }));\n }}\n touched={touchedFields.verbs}\n onBlur={() =>\n setTouchedFields((state) => ({ ...state, verbs: true }))\n }\n />\n <div className=\"flex items-center gap-0.5 px-2\">\n <Tooltip label=\"Duplicate Handler\" className=\"px-1 py-3\" container={getDefaultContainer()}>\n <button\n data-cy=\"handler-row-duplicate-button\"\n className={cn(\n 'hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none opacity-50 cursor-not-allowed',\n )}\n >\n <FdDuplicate />\n </button>\n </Tooltip>\n <Tooltip label=\"Confirm Changes\" className=\"px-1 py-3\" container={getDefaultContainer()}>\n <button\n data-cy=\"handler-row-save-button\"\n className={cn(\n 'hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none',\n {\n 'opacity-50 cursor-not-allowed': !isValid(),\n },\n )}\n onClick={onConfirm}\n >\n <FdCheckCircle />\n </button>\n </Tooltip>\n <Tooltip label=\"Cancel Changes\" className=\"px-1 py-3\" container={getDefaultContainer()}>\n <button\n data-cy=\"handler-row-cancel-button\"\n className=\"hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none\"\n onClick={onCancel}\n >\n <FdClose />\n </button>\n </Tooltip>\n </div>\n </div>\n </div>\n );\n};\n\nexport const Handler: FC<HTTPHandler> = ({\n id,\n class: className,\n method,\n pattern,\n verbs,\n isExpanded,\n regexPattern,\n asRegex,\n}) => {\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({ id: id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n const adapter = useEditorStateAdapter();\n\n const editing = adapter.getEditingHandlerId();\n\n const patternValue = asRegex ? regexPattern : pattern;\n\n const catalog = adapter.getCatalog();\n\n const singletons = Object.values(catalog?.singletons || {});\n\n const singletonMethods = singletons\n ?.find((item) => item.name === className)\n ?.methods.map(({ name, exposed }) => ({ name, exposed }));\n\n const notFoundSingltonError = singletons?.find(\n (item) => item.name === className,\n );\n\n const found = singletonMethods?.find((item) => item.name === method);\n\n const exposedError = found && found.exposed;\n\n return (\n <div\n className=\"odd:bg-grey-500\"\n data-cy={`handler-row-${editing === id ? 'editing' : 'viewing'}`}\n ref={setNodeRef}\n style={style}\n >\n {editing === id ? (\n <HandlerEdit\n {...{\n id,\n class: className,\n method,\n pattern,\n verbs,\n isExpanded,\n regexPattern,\n asRegex,\n listeners,\n attributes,\n }}\n />\n ) : (\n <div\n className=\"flex items-center gap-2 rounded-b py-2.5 text-grey-50\"\n onDoubleClick={() => {\n $handlerSubject.next(editing);\n adapter.actions.setEditingHandler(id);\n }}\n >\n <div className=\"flex w-60 flex-shrink-0 items-center gap-1 \">\n <GrabHandle\n key=\"grab-handle\"\n listeners={listeners}\n attributes={attributes}\n />\n\n <div className=\"text-s w-full\">\n {className ? (\n <div\n className={cn(\n 'flex items-center gap-2',\n !notFoundSingltonError && 'text-red-400',\n )}\n >\n {!notFoundSingltonError && (\n <Tooltip\n label={`The singleton \"${className}\" doesn't exist.`}\n className=\"!bg-red-300 !text-red-400\"\n container={getDefaultContainer()}\n >\n <span className=\"rounded p-0.5 hover:bg-red-400/30 pt-0.5 h-5 w-5 flex justify-center content-center\">\n <FdWarningDanger className=\"inline h-4 w-4 pb-0.5 text-red-400\" />\n </span>\n </Tooltip>\n )}{' '}\n {className}\n </div>\n ) : (\n <span className=\"text-grey-200 italic\">undefined</span>\n )}\n </div>\n </div>\n <div className=\"w-60 flex-shrink-0 \">\n <div className=\"text-s w-full\">\n {method ? (\n <div\n className={cn(\n 'flex items-center gap-2',\n !found && 'text-red-400',\n exposedError && 'text-yellow-400',\n )}\n >\n {!found && (\n <Tooltip\n label={`The method \"${method}\" doesn't exist.`}\n className=\"!bg-red-300 !text-red-400\"\n container={getDefaultContainer()}\n >\n <span className=\"rounded p-0.5 hover:bg-red-400/30 pt-0.5 h-5 w-5 flex justify-center content-center\">\n <FdWarningDanger className=\"inline h-4 w-4 pb-0.5 text-red-400\" />\n </span>\n </Tooltip>\n )}{' '}\n {exposedError && (\n <Tooltip\n label={`Method \"${method}\" is already exposed`}\n className=\"!bg-yellow-100 !text-yellow-500\"\n container={getDefaultContainer()}\n >\n <span className=\"rounded p-0.5 hover:bg-red-400/30 pt-0.5 h-5 w-5 flex justify-center content-center\">\n <FdWarningDanger className=\"inline h-4 w-4 pb-0.5 text-yellow-500\" />\n </span>\n </Tooltip>\n )}{' '}\n {method}\n </div>\n ) : (\n <span className=\"text-grey-200 italic\">undefined</span>\n )}\n </div>\n </div>\n\n <div className=\"text-s relative w-60 flex-shrink-0 \">\n {patternValue ? (\n <Tooltip\n label={\n asRegex\n ? generateRegexExample(patternValue)\n : `Requests starting with /${patternValue}/ will be handled`\n }\n container={getDefaultContainer()}\n >\n <span>{patternValue}</span>\n </Tooltip>\n ) : (\n <span className=\"text-grey-200 italic\">/</span>\n )}\n </div>\n\n <div className=\"px-5 w-20 flex justify-center text-grey-200\">\n {asRegex ? <FdRegex /> : <FdUnRegex />}\n </div>\n <div className=\"flex flex-1 items-center\">\n <div className=\"text-s w-full\">\n {verbs.length ? (\n verbs.join(',')\n ) : (\n <span className=\"text-grey-200 italic\">undefined</span>\n )}\n </div>\n\n <div className=\"flex items-center gap-0.5 px-2\">\n <Tooltip label=\"Duplicate Handler\" className=\"px-1 py-3\" container={getDefaultContainer()}>\n <button\n data-cy=\"handler-row-duplicate-button\"\n className=\"hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none\"\n onClick={() => adapter.actions.duplicateHandler(id)}\n >\n <FdDuplicate />\n </button>\n </Tooltip>\n <Tooltip label=\"Edit Handler\" className=\"px-1 py-3\" container={getDefaultContainer()}>\n <button\n data-cy=\"handler-row-edit-button\"\n className=\"hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none\"\n onClick={() => {\n $handlerSubject.next(editing);\n adapter.actions.setEditingHandler(id);\n }}\n >\n <FdPen />\n </button>\n </Tooltip>\n <Tooltip label=\"Delete Handler\" className=\"px-1 py-3\" placement=\"top-end\" container={getDefaultContainer()}>\n <button\n data-cy=\"handler-row-delete-button\"\n className=\"hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none\"\n onClick={async () => {\n if (adapter.getHost() === 'vscode') {\n adapter.actions.deleteHandler(id);\n return;\n }\n const { confirmed } = await adapter.actions.openModal({\n title: 'Delete Handler',\n type: ModalType.CONFIRM,\n color: ModalColor.DANGER,\n message: 'Are you sure you want to remove this Handler?',\n icon: 'FdWarningDanger',\n });\n if (confirmed) {\n adapter.actions.deleteHandler(id);\n }\n }}\n >\n <FdTrash />\n </button>\n </Tooltip>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import {\n closestCenter,\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { FdCode, FdEmpty, FdInfoCircle, FdPlus } from '@ws-ui/icons';\nimport { FC, useState, useRef, useEffect } from 'react';\nimport { SwitchToEditorIcon } from './SwitchToEditorIcon';\nimport { Handler } from './Handler';\nimport { Tooltip } from '@ws-ui/shared';\nimport { $handlerSubject, useEditorStateAdapter } from './adapter';\nimport { getDefaultContainer } from './Portal';\nimport cn from 'classnames';\n\nconst Editor: FC = () => {\n const adapter = useEditorStateAdapter();\n const items = adapter.getHandlers();\n const editing = adapter.getEditingHandlerId();\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n const [activeId, setActiveId] = useState<string | null>(null);\n const [hasHorizontalScroll, setHasHorizontalScroll] = useState(false);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const activeItem = items.find((item) => item.id === activeId);\n\n // Check for horizontal scrolling\n useEffect(() => {\n const checkScroll = () => {\n if (scrollContainerRef.current) {\n const hasScroll =\n scrollContainerRef.current.scrollWidth >\n scrollContainerRef.current.clientWidth;\n setHasHorizontalScroll(hasScroll);\n }\n };\n\n checkScroll();\n const resizeObserver = new ResizeObserver(checkScroll);\n if (scrollContainerRef.current) {\n resizeObserver.observe(scrollContainerRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [items.length]);\n\n const renderAddNewHandlerButton = (className?: string) => (\n <Tooltip label=\"Add a new HTTP Handler\" container={getDefaultContainer()}>\n <button\n data-cy=\"handlers-editor-add-handler-button\"\n disabled={Boolean(editing)}\n onClick={() => {\n $handlerSubject.next(editing);\n adapter.actions.addHandler({\n class: '',\n isExpanded: true,\n method: '',\n pattern: '',\n verbs: [],\n regexPattern: '',\n });\n }}\n className={cn(\n className,\n `hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none disabled:cursor-not-allowed disabled:opacity-30`,\n )}\n >\n <FdPlus className=\"h-5 w-5\" />\n </button>\n </Tooltip>\n );\n\n return (\n <div className=\"bg-grey-700 flex h-full w-full flex-col text-white\">\n <div className=\"flex items-center justify-between border-b border-black p-2\">\n <div className=\"flex items-center gap-2\">\n {Boolean(adapter.actions.switchEditor) && (\n <SwitchToEditorIcon\n label=\"Switch to text Editor\"\n Icon={FdCode}\n onClick={() =>\n adapter.actions.switchEditor!({\n config: { language: 'json' },\n key: 'editors:code',\n })\n }\n // tab={tab}\n // editor={{\n // config: { language: 'json' },\n // key: 'editors:code',\n // }}\n data-cy=\"handlers-editor-switch-to-code-button\"\n />\n )}\n <p className=\"text-grey-100 text-s flex items-center gap-1\">\n <FdInfoCircle className=\"inline text-base text-white\" /> HTTP handlers\n are evaluated in the order they are declared\n </p>\n </div>\n {renderAddNewHandlerButton(\n `flex lg:${hasHorizontalScroll ? 'flex' : 'hidden'}`,\n )}\n </div>\n <div\n className=\"mt-1 flex flex-1 flex-col overflow-x-auto px-4\"\n ref={scrollContainerRef}\n >\n {items.length ? (\n <div className=\"flex h-full min-w-[1200px] flex-1 flex-col\">\n <div className=\"mb-3 flex items-center gap-2 border-b\">\n <div className=\"w-60 flex-shrink-0 text-xs\">\n <span className=\"pl-6\">Class</span>\n </div>\n <div className=\"w-60 flex-shrink-0 text-xs\">Method</div>\n <div className=\"w-60 flex-shrink-0 text-xs\">Pattern</div>\n <div className=\"w-20 px-2 text-center text-xs\">As Regex</div>\n <div className=\"flex flex-1 items-center justify-between text-xs\">\n <span>Verbs</span>\n <div\n className={`flex items-center gap-2 text-2xl h-7 ${hasHorizontalScroll ? 'invisible' : ''}`}\n >\n {renderAddNewHandlerButton()}\n </div>\n </div>\n </div>\n <div className=\"py-3\" data-cy=\"handlers-editor-list\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={(event) => {\n setActiveId(event.active.id);\n }}\n onDragEnd={(event) => {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (!active || !over) return;\n\n if (active.id !== over?.id) {\n const oldIndex = items\n .map((item) => item.id)\n .indexOf(active.id);\n const newIndex = items\n .map((item) => item.id)\n .indexOf(over.id);\n\n adapter.actions.updateHandlers(\n arrayMove(items, oldIndex, newIndex),\n );\n }\n }}\n >\n <SortableContext\n items={items}\n strategy={verticalListSortingStrategy}\n >\n {items.map(({ id, ...props }) => (\n <Handler key={id} id={id} {...props} />\n ))}\n </SortableContext>\n <DragOverlay>\n {activeId && activeItem ? (\n <div className=\"opacity-10\">\n <Handler {...activeItem} />\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n </div>\n </div>\n ) : (\n <div className=\"mt-6\">\n <div>\n <FdEmpty className=\"text-grey-200 mx-auto h-9 w-9\" />\n </div>\n <div className=\"text-s text-grey-200 mx-auto mt-3 max-w-sm text-center\">\n There are no http handlers configured yet <br />\n Please add a new one to add a new one.\n </div>\n <div className=\"mt-3 flex items-center justify-center\">\n <button\n data-cy=\"handlers-editor-empty-add-handler-button\"\n onClick={() => {\n $handlerSubject.next(editing);\n adapter.actions.addHandler({\n class: '',\n isExpanded: true,\n method: '',\n pattern: '',\n verbs: [],\n regexPattern: '',\n });\n }}\n className=\"bg-primary-dark text-s rounded px-2 py-1 flex items-center gap-1\"\n >\n <FdPlus className=\"inline text-white h-4 w-4\" /> Add New Handler\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport const HTTPHandlersEditor: FC = () => {\n return <Editor />;\n};\n","import { Modal } from '@ws-ui/shared';\nimport { getDefaultContainer } from '../Portal';\nimport { useModals } from '../adapter';\n\nconst Modals = () => {\n const { modals, closeModal, editModal } = useModals();\n\n return (\n <>\n {modals.map((modal, index) => (\n <Modal\n key={modal.id}\n hasOverlay={index === 0}\n {...modal}\n onClose={closeModal}\n onEdit={editModal}\n container={getDefaultContainer()}\n />\n ))}\n </>\n );\n};\n\nexport default Modals;\n","import { FC, useEffect, useMemo, useRef } from 'react';\nimport { isEqual } from 'lodash';\nimport { TipsProvider, useDidMountEffect } from '@ws-ui/shared';\nimport { HTTPHandlersEditor } from '../Editor';\nimport Modals from './Modals';\nimport {\n EditorStateAdapterProvider,\n HTTPHandler,\n ReducerAdapterProvider,\n TEditorHost,\n normalizeHandlers,\n serializeHandlers,\n useEditorStateAdapter,\n useReducerAdapter,\n} from '../adapter';\n\ninterface IStandaloneProps {\n initialValue?: string | HTTPHandler[];\n onChange?: (newValue: string) => void;\n catalog?: datasources.IEnhancedCatalog | null;\n host?: TEditorHost;\n}\n\nconst Standalone: FC<IStandaloneProps> = ({ initialValue, onChange }) => {\n const adapter = useEditorStateAdapter();\n const handlers = adapter.getHandlers();\n const lastInitialValueRef = useRef(initialValue);\n const serializedHandlers = useMemo(\n () => serializeHandlers(handlers),\n [handlers],\n );\n\n useEffect(() => {\n if (lastInitialValueRef.current === initialValue) {\n return;\n }\n lastInitialValueRef.current = initialValue;\n\n if (initialValue === undefined) {\n return;\n }\n\n try {\n const normalized = normalizeHandlers(initialValue);\n\n if (!isEqual(adapter.getHandlers(), normalized)) {\n adapter.actions.updateHandlers(normalized);\n }\n } catch (e) {\n console.error(\n '[HTTP Handlers Editor Standalone] Error while parsing the initial value:',\n e,\n );\n }\n }, [adapter, initialValue]);\n\n useDidMountEffect(() => {\n if (!onChange) {\n return;\n }\n\n try {\n onChange(serializedHandlers);\n } catch (e) {\n console.error('[HTTP Handlers Editor Standalone] Error on value stringify:', e);\n }\n }, [onChange, serializedHandlers]);\n\n return (\n <>\n <div className=\"h-screen bg-grey-900\">\n <HTTPHandlersEditor />\n </div>\n <Modals />\n </>\n );\n};\n\nconst StandaloneWrapper: FC<IStandaloneProps> = (props) => {\n const reducerAdapter = useReducerAdapter();\n\n return (\n <EditorStateAdapterProvider adapter={reducerAdapter}>\n <TipsProvider>\n <Standalone {...props} />\n </TipsProvider>\n </EditorStateAdapterProvider>\n );\n};\n\nconst StandaloneWithReducerAdapter: FC<IStandaloneProps> = ({\n initialValue = [],\n catalog,\n host = 'vscode',\n ...props\n}) => {\n return (\n <ReducerAdapterProvider content={initialValue} catalog={catalog} host={host} >\n <StandaloneWrapper {...props} />\n </ReducerAdapterProvider>\n );\n};\n\nexport { StandaloneWithReducerAdapter as Standalone };\n"],"names":["SwitchToEditorIcon","label","Icon","onClick","jsx","ToolbarIcon","EditorStateAdapterContext","createContext","EditorStateAdapterProvider","children","adapter","useEditorStateAdapter","useContext","HandlerSchema","z","HandlersSchema","INVALID_JSON_ERROR","normalizeHandlers","rawContent","parsedContent","validationResult","item","asRegex","verbs","verb","generate","serializeHandlers","handlers","_ignored","pattern","regexPattern","handler","rest","_a","isFunction","value","hasLift","source","operate","init","liftedSource","err","extendStatics","d","b","p","__extends","__","__values","o","s","m","i","__read","r","ar","e","error","__spreadArray","to","from","pack","l","createErrorClass","createImpl","_super","instance","ctorFunc","UnsubscriptionError","errors","arrRemove","arr","index","Subscription","initialTeardown","e_1","e_2","_b","_parentage","_parentage_1","_parentage_1_1","parent_1","e_1_1","initialFinalizer","_finalizers","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","teardown","parent","empty","isSubscription","timeoutProvider","timeout","args","_i","handle","reportUnhandledError","noop","Subscriber","destination","_this","EMPTY_OBSERVER","next","complete","SafeSubscriber","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","defaultErrorHandler","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","filter","predicate","thisArg","subscriber","modalSubject","Subject","handlerReducer","state","action","lastEditing","omit","t","id","handlerToDuplicate","found","modal","reason","newState","payload","EditorStateContext","getDefaultInitialState","content","ReducerAdapterProvider","catalog","host","normalizedContent","useMemo","dispatch","useReducer","useEffect","external","useReducerAdapter","context","useCallback","config","type","ModalType","resolve","subscription","modalsState","confirmed","ModalCloseReason","options","entries","acc","curr","useReduxAdapter","path","initialContent","useAppDispatch","tab","useAppSelector","selectTabByPath","isEqual","selectCatalog","localDispatch","useDidMountEffect","newContent","oldContent","setContent","openModal","editor","switchEditor","useModals","params","$handlerSubject","getDefaultContainer","HTTP_HANDLERS_EDITOR_SCOPE_CLASS","MultipleComboBox","initialSelectedItems","onChange","touched","onBlur","dataCy","getFilteredverbs","selectedItems","inputValue","lowerCasedInputValue","method","setInputValue","useState","setSelectedItems","items","getSelectedItemProps","getDropdownProps","removeSelectedItem","useMultipleSelection","newSelectedItems","isOpen","getToggleButtonProps","getMenuProps","getInputProps","highlightedIndex","getItemProps","selectedItem","useCombobox","actionAndChanges","changes","newInputValue","newSelectedItem","jsxs","cn","selectedItemForRender","FdCloseNaked","FdDown","Select","errorMessage","query","setQuery","notFound","filteredOptions","sgltn","Combobox","open","sngltn","event","Fragment","Transition","FdEmpty","option","active","selected","MethodSelector","exposed","val","FdWarningDanger","GrabHandle","listeners","attributes","FdDragHandle","generateRegexExample","regex","regexExample","RandExp","HandlerEdit","className","setHandler","singletons","singletonMethods","name","newlyCreatedHandlerID","isValid","onConfirm","onCancel","oldHandler","newHandler","ModalColor","useHotkeys","lastEditingID","touchedFields","setTouchedFields","methodErrors","patternErrors","Tooltip","FdInfoCircle","ControlledSwitch","FdDuplicate","FdCheckCircle","FdClose","Handler","isExpanded","setNodeRef","transform","transition","useSortable","style","CSS","editing","patternValue","notFoundSingltonError","exposedError","FdRegex","FdUnRegex","FdPen","FdTrash","Editor","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","activeId","setActiveId","hasHorizontalScroll","setHasHorizontalScroll","scrollContainerRef","useRef","activeItem","checkScroll","hasScroll","resizeObserver","renderAddNewHandlerButton","FdPlus","FdCode","DndContext","closestCenter","over","oldIndex","newIndex","arrayMove","SortableContext","verticalListSortingStrategy","props","DragOverlay","HTTPHandlersEditor","Modals","modals","closeModal","editModal","Modal","Standalone","initialValue","lastInitialValueRef","serializedHandlers","normalized","StandaloneWrapper","reducerAdapter","TipsProvider","StandaloneWithReducerAdapter"],"mappings":"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","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/SwitchToEditorIcon.tsx","../src/adapter/provider.tsx","../src/adapter/utils.ts","../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../src/adapter/reducer/adapter.tsx","../src/adapter/redux/adapter.ts","../src/adapter/reducer/use-modals.ts","../src/adapter/subject.ts","../src/Portal.tsx","../src/Handler/index.tsx","../src/Editor.tsx","../src/Standalone/Modals.tsx","../src/Standalone/index.tsx"],"sourcesContent":["import { IconType } from '@ws-ui/icons';\nimport { ToolbarIcon } from '@ws-ui/shared';\nimport { FC } from 'react';\n\ninterface SwitchToEditorIconProps {\n label: string;\n Icon: IconType;\n onClick?: () => void;\n}\n\nexport const SwitchToEditorIcon: FC<SwitchToEditorIconProps> = ({\n label,\n Icon,\n onClick,\n}) => {\n return (\n <ToolbarIcon label={label} Icon={Icon} as=\"button\" onClick={onClick} />\n );\n};\n","import { createContext, useContext, type FC } from 'react';\nimport type { IAdapterProviderProps, TUseAdapter } from '@ws-ui/shared';\nimport { IEditorStateAdapter } from './types';\n\nconst EditorStateAdapterContext = createContext<IEditorStateAdapter | null>(\n null,\n);\n\nexport const EditorStateAdapterProvider: FC<\n IAdapterProviderProps<IEditorStateAdapter>\n> = ({ children, adapter }) => {\n return (\n <EditorStateAdapterContext.Provider value={adapter}>\n {children}\n </EditorStateAdapterContext.Provider>\n );\n};\n\nexport const useEditorStateAdapter: TUseAdapter<IEditorStateAdapter> = () => {\n const adapter = useContext(EditorStateAdapterContext);\n\n if (!adapter) {\n throw new Error(\n 'useEditorStateAdapter must be used within an EditorStateAdapterProvider',\n );\n }\n\n return adapter;\n};\n","import { z } from 'zod';\nimport { generate } from 'short-uuid';\nimport { HTTPHandler, HTTPVerb } from './types';\n\nconst HandlerSchema = z.object({\n class: z.string().optional(),\n method: z.string().optional(),\n verbs: z.union([z.string(), z.array(z.string())]).optional(),\n id: z.string().optional(),\n pattern: z.string().optional(),\n regexPattern: z.string().optional(),\n});\n\nconst HandlersSchema = z.array(HandlerSchema);\n\nconst INVALID_JSON_ERROR = 'Invalid JSON';\n\nexport function normalizeHandlers(\n rawContent: string | HTTPHandler[] | undefined | null,\n): HTTPHandler[] {\n let parsedContent: unknown = rawContent ?? [];\n\n if (typeof rawContent === 'string') {\n try {\n parsedContent = JSON.parse(rawContent);\n } catch {\n throw new Error(INVALID_JSON_ERROR);\n }\n }\n\n const validationResult = HandlersSchema.safeParse(parsedContent);\n\n if (!validationResult.success) {\n throw new Error(INVALID_JSON_ERROR);\n }\n\n return validationResult.data.map((item) => {\n const asRegex = Boolean(item.regexPattern);\n const verbs = (\n Array.isArray(item.verbs) ? item.verbs : (item.verbs ?? '').split(',')\n )\n .map((verb) => verb.toUpperCase())\n .filter(Boolean);\n\n return {\n ...item,\n id: item.id ?? generate(),\n verbs: verbs as HTTPVerb[],\n asRegex,\n };\n });\n}\n\nexport function serializeHandlers(handlers: HTTPHandler[]): string {\n return JSON.stringify(\n handlers.map(\n ({\n isExpanded: _ignored,\n asRegex,\n pattern,\n regexPattern,\n ...handler\n }) => {\n const rest = asRegex ? { regexPattern } : { pattern };\n\n return {\n ...handler,\n verbs: handler.verbs?.join(','),\n ...rest,\n };\n },\n ),\n null,\n 2,\n );\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n type Dispatch,\n type FC,\n type ReactNode,\n} from 'react';\nimport { Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { entries, omit } from 'lodash';\nimport { generate } from 'short-uuid';\nimport {\n IModal,\n IOpenModalPayload,\n IOpenModalReturnValue,\n ModalCloseReason,\n ModalType,\n} from '@ws-ui/shared';\nimport { IEditorStateAdapter, HTTPHandler, TEditorHost } from '../types';\nimport { normalizeHandlers } from '../utils';\n\ninterface IModalsState {\n list: IModal[];\n}\n\nconst modalSubject = new Subject<IModalsState>();\n\ninterface IReducerState {\n content: HTTPHandler[];\n editing: string | null;\n newlyCreatedHandlerID: string | null;\n modals: IModalsState;\n}\n\ntype ReducerAction =\n | { type: 'ADD_HANDLER'; payload: Omit<HTTPHandler, 'id'> }\n | { type: 'UPDATE_HANDLER'; id: string; payload: Partial<HTTPHandler> }\n | { type: 'DELETE_HANDLER'; id: string }\n | { type: 'TOGGLE_EXPANDED'; id: string }\n | { type: 'DUPLICATE_HANDLER'; id: string }\n | { type: 'TOGGLE_ALL_EXPANDED'; payload: boolean }\n | { type: 'UPDATE_HANDLERS'; payload: HTTPHandler[] }\n | { type: 'SYNC_DATA'; payload: HTTPHandler[] }\n | { type: 'SET_EDITING_HANDLER'; payload: string | null }\n | { type: 'CREATE_MODAL'; payload: IModal }\n | { type: 'REMOVE_MODAL'; payload: string }\n | { type: 'CLOSE_MODAL'; payload: { id: string; reason?: ModalCloseReason } }\n | {\n type: 'EDIT_MODAL';\n payload: { id: string } & Partial<Pick<IModal, 'views' | 'title'>>;\n };\n\nexport function handlerReducer(\n state: IReducerState,\n action: ReducerAction,\n): IReducerState {\n switch (action.type) {\n case 'UPDATE_HANDLERS':\n return {\n ...state,\n content: action.payload,\n };\n case 'SET_EDITING_HANDLER': {\n if (action.payload && action.payload !== state.editing) {\n const lastEditing = state.content.find(\n (item) => item.id === state.editing,\n );\n\n if (lastEditing) {\n const isEmpty =\n !Object.values(\n omit(lastEditing, ['id', 'verbs', 'asRegex', 'isExpanded']),\n ).some(Boolean) && lastEditing.verbs.length === 0;\n\n if (isEmpty) {\n return {\n ...state,\n content: state.content.filter((t) => t.id !== lastEditing.id),\n editing: action.payload,\n };\n }\n }\n }\n\n return {\n ...state,\n editing: action.payload,\n };\n }\n case 'ADD_HANDLER': {\n const id = generate();\n return {\n ...state,\n content: [...state.content, { ...action.payload, id }],\n editing: id,\n newlyCreatedHandlerID: id,\n };\n }\n case 'UPDATE_HANDLER':\n return {\n ...state,\n content: state.content.map((handler) =>\n handler.id === action.id\n ? { ...handler, ...action.payload }\n : handler,\n ),\n newlyCreatedHandlerID: null,\n };\n case 'DELETE_HANDLER':\n return {\n ...state,\n content: state.content.filter((handler) => handler.id !== action.id),\n };\n case 'TOGGLE_EXPANDED':\n return {\n ...state,\n content: state.content.map((handler) =>\n handler.id === action.id\n ? { ...handler, isExpanded: !handler.isExpanded }\n : handler,\n ),\n };\n case 'DUPLICATE_HANDLER': {\n const handlerToDuplicate = state.content.find(\n (handler) => handler.id === action.id,\n );\n\n if (!handlerToDuplicate) return state;\n return {\n ...state,\n content: [\n ...state.content,\n { ...handlerToDuplicate, id: generate(), isExpanded: true },\n ],\n };\n }\n case 'TOGGLE_ALL_EXPANDED':\n return {\n ...state,\n content: state.content.map((handler) => ({\n ...handler,\n isExpanded: action.payload,\n })),\n };\n case 'SYNC_DATA':\n return {\n ...state,\n content: action.payload.map((handler) => {\n const found = state.content.find((item) => item.id === handler.id);\n\n if (found) {\n return {\n ...handler,\n ...found,\n };\n }\n\n return handler;\n }),\n };\n case 'CREATE_MODAL': {\n return {\n ...state,\n modals: {\n ...state.modals,\n list: [...state.modals.list, action.payload],\n },\n };\n }\n case 'REMOVE_MODAL': {\n return {\n ...state,\n modals: {\n ...state.modals,\n list: state.modals.list.filter(\n (modal) => modal.id !== action.payload,\n ),\n },\n };\n }\n case 'CLOSE_MODAL': {\n const { id, reason } = action.payload;\n let newState: IReducerState;\n\n if (reason) {\n const found = state.modals.list.find((modal) => modal.id === id);\n if (found) {\n newState = {\n ...state,\n modals: {\n ...state.modals,\n list: state.modals.list.map((modal) =>\n modal.id === id\n ? { ...modal, closeReason: reason, isOpen: false }\n : modal,\n ),\n },\n };\n } else {\n return state;\n }\n } else {\n newState = {\n ...state,\n modals: {\n ...state.modals,\n list: state.modals.list.filter((modal) => modal.id !== id),\n },\n };\n }\n\n modalSubject.next(newState.modals);\n\n return newState;\n }\n case 'EDIT_MODAL': {\n const { id, ...payload } = action.payload;\n const found = state.modals.list.find((modal) => modal.id === id);\n if (!found) return state;\n\n return {\n ...state,\n modals: {\n ...state.modals,\n list: state.modals.list.map((modal) =>\n modal.id === id ? { ...modal, ...payload } : modal,\n ),\n },\n };\n }\n default:\n return state;\n }\n}\n\ninterface IExternalData {\n catalog?: datasources.IEnhancedCatalog | null;\n host?: TEditorHost;\n}\n\ninterface IReducerValue {\n state: IReducerState;\n dispatch: Dispatch<ReducerAction>;\n external: IExternalData;\n}\n\nexport interface IReducerAdapterProps extends IExternalData {\n children: ReactNode;\n content?: string | HTTPHandler[];\n host?: TEditorHost;\n}\n\nexport const EditorStateContext = createContext<IReducerValue | null>(null);\n\nexport const getDefaultInitialState = (\n content: HTTPHandler[],\n): IReducerState => ({\n content,\n editing: null,\n newlyCreatedHandlerID: null,\n modals: {\n list: [],\n },\n});\n\nexport const ReducerAdapterProvider: FC<IReducerAdapterProps> = ({\n children,\n content,\n catalog = null,\n host = 'web',\n}) => {\n const normalizedContent = useMemo(\n () => normalizeHandlers(content),\n [content],\n );\n const [state, dispatch] = useReducer(\n handlerReducer,\n getDefaultInitialState(normalizedContent),\n );\n\n useEffect(() => {\n dispatch({\n type: 'SYNC_DATA',\n payload: normalizedContent,\n });\n }, [normalizedContent]);\n\n const external = useMemo<IExternalData>(\n () => ({\n catalog,\n host,\n }),\n [catalog, host],\n );\n\n return (\n <EditorStateContext.Provider value={{ state, dispatch, external }}>\n {children}\n </EditorStateContext.Provider>\n );\n};\n\nexport function useReducerAdapter(): IEditorStateAdapter {\n const context = useContext(EditorStateContext);\n\n if (!context) {\n throw new Error(\n 'useReducerAdapter must be used within a ReducerAdapterProvider',\n );\n }\n\n const { state, dispatch, external } = context;\n\n return {\n getHandlers: useCallback(() => state.content, [state.content]),\n getEditingHandlerId: useCallback(() => state.editing, [state.editing]),\n getNewlyCreatedHandlerId: useCallback(\n () => state.newlyCreatedHandlerID,\n [state.newlyCreatedHandlerID],\n ),\n getCatalog: useCallback(() => external.catalog ?? null, [external.catalog]),\n getHost: useCallback(() => external.host ?? 'web', [external.host]),\n actions: {\n updateHandlers: useCallback((handlers: HTTPHandler[]) => {\n dispatch({ type: 'UPDATE_HANDLERS', payload: handlers });\n }, []),\n addHandler: useCallback((payload: Omit<HTTPHandler, 'id'>) => {\n dispatch({ type: 'ADD_HANDLER', payload });\n }, []),\n updateHandler: useCallback(\n (id: string, payload: Partial<HTTPHandler>) => {\n dispatch({ type: 'UPDATE_HANDLER', id, payload });\n },\n [],\n ),\n deleteHandler: useCallback((id: string) => {\n dispatch({ type: 'DELETE_HANDLER', id });\n }, []),\n toggleExpanded: useCallback((id: string) => {\n dispatch({ type: 'TOGGLE_EXPANDED', id });\n }, []),\n duplicateHandler: useCallback((id: string) => {\n dispatch({ type: 'DUPLICATE_HANDLER', id });\n }, []),\n toggleAllExpanded: useCallback((value: boolean) => {\n dispatch({ type: 'TOGGLE_ALL_EXPANDED', payload: value });\n }, []),\n setEditingHandler: useCallback((id: string | null) => {\n dispatch({ type: 'SET_EDITING_HANDLER', payload: id });\n }, []),\n openModal: useCallback(\n async (config: IOpenModalPayload): Promise<IOpenModalReturnValue> => {\n const { type = ModalType.ALERT } = config;\n const id = generate();\n\n dispatch({\n type: 'CREATE_MODAL',\n payload: {\n id,\n type,\n isOpen: true,\n ...config,\n },\n });\n\n if (type === ModalType.CONFIRM) {\n return new Promise<IOpenModalReturnValue>((resolve) => {\n const subscription = modalSubject\n .pipe(\n filter((modalsState) => {\n const found = modalsState.list.find(\n (modal) => modal.id === id,\n );\n return found !== undefined && !found.isOpen;\n }),\n )\n .subscribe((modalsState) => {\n const found = modalsState.list.find(\n (modal) => modal.id === id,\n );\n if (found) {\n const confirmed =\n found.closeReason === ModalCloseReason.CONFIRMED;\n const options = entries(found.views?.toggles || {}).reduce(\n (acc, curr) => ({\n ...acc,\n [curr[0]]: curr[1].value,\n }),\n {},\n );\n dispatch({ type: 'REMOVE_MODAL', payload: id });\n subscription.unsubscribe();\n resolve({ confirmed, options });\n }\n });\n });\n }\n\n return { confirmed: false };\n },\n [dispatch],\n ),\n },\n };\n}\n","import { useCallback, useEffect, useMemo, useReducer } from 'react';\nimport { isEqual } from 'lodash';\nimport {\n openModal,\n selectCatalog,\n selectTabByPath,\n setContent,\n switchEditor,\n useAppDispatch,\n useAppSelector,\n} from '@ws-ui/store';\nimport {\n IOpenModalPayload,\n IOpenModalReturnValue,\n IEditor,\n useDidMountEffect,\n} from '@ws-ui/shared';\nimport { IEditorStateAdapter, HTTPHandler } from '../types';\nimport { normalizeHandlers, serializeHandlers } from '../utils';\nimport { getDefaultInitialState, handlerReducer } from '../reducer/adapter';\n\nexport function useReduxAdapter(\n path: string,\n initialContent?: HTTPHandler[],\n): IEditorStateAdapter {\n const dispatch = useAppDispatch();\n const tab = useAppSelector(selectTabByPath(path), isEqual);\n const catalog = useAppSelector(selectCatalog);\n\n const normalizedContent = useMemo(\n () => normalizeHandlers(tab?.content),\n [tab?.content],\n );\n\n const [state, localDispatch] = useReducer(\n handlerReducer,\n initialContent\n ? getDefaultInitialState(initialContent)\n : getDefaultInitialState(normalizedContent),\n );\n\n useDidMountEffect(() => {\n localDispatch({ type: 'SYNC_DATA', payload: normalizedContent });\n }, [normalizedContent]);\n\n useEffect(() => {\n if (!tab) {\n return;\n }\n\n const newContent = serializeHandlers(state.content);\n const oldContent =\n typeof tab.content === 'string'\n ? tab.content\n : JSON.stringify(tab.content, null, 2);\n\n if (newContent === oldContent) {\n return;\n }\n\n dispatch(\n setContent({\n path,\n content: newContent,\n }),\n );\n }, [dispatch, path, state.content, tab]);\n\n return {\n getHandlers: useCallback(() => state.content, [state.content]),\n getEditingHandlerId: useCallback(() => state.editing, [state.editing]),\n getNewlyCreatedHandlerId: useCallback(\n () => state.newlyCreatedHandlerID,\n [state.newlyCreatedHandlerID],\n ),\n getCatalog: useCallback(() => catalog ?? null, [catalog]),\n getHost: () => 'web',\n\n actions: {\n updateHandlers: useCallback((handlers: HTTPHandler[]) => {\n localDispatch({ type: 'UPDATE_HANDLERS', payload: handlers });\n }, []),\n addHandler: useCallback((payload: Omit<HTTPHandler, 'id'>) => {\n localDispatch({ type: 'ADD_HANDLER', payload });\n }, []),\n updateHandler: useCallback(\n (id: string, payload: Partial<HTTPHandler>) => {\n localDispatch({ type: 'UPDATE_HANDLER', id, payload });\n },\n [],\n ),\n deleteHandler: useCallback((id: string) => {\n localDispatch({ type: 'DELETE_HANDLER', id });\n }, []),\n toggleExpanded: useCallback((id: string) => {\n localDispatch({ type: 'TOGGLE_EXPANDED', id });\n }, []),\n duplicateHandler: useCallback((id: string) => {\n localDispatch({ type: 'DUPLICATE_HANDLER', id });\n }, []),\n toggleAllExpanded: useCallback((value: boolean) => {\n localDispatch({ type: 'TOGGLE_ALL_EXPANDED', payload: value });\n }, []),\n setEditingHandler: useCallback((id: string | null) => {\n localDispatch({ type: 'SET_EDITING_HANDLER', payload: id });\n }, []),\n openModal: useCallback(\n async (config: IOpenModalPayload): Promise<IOpenModalReturnValue> => {\n const result = await dispatch(openModal(config)).unwrap();\n return result;\n },\n [dispatch],\n ),\n switchEditor: useCallback(\n (editor: IEditor) => {\n if (!tab) {\n return;\n }\n\n dispatch(\n switchEditor({\n tab,\n editor,\n }),\n );\n },\n [dispatch, tab],\n ),\n },\n };\n}\n","import { IModal, ModalCloseReason } from '@ws-ui/shared';\nimport { useCallback, useContext } from 'react';\nimport { EditorStateContext } from './adapter';\n\nexport function useModals() {\n const context = useContext(EditorStateContext);\n\n if (!context) {\n throw new Error('useModals must be used within a ReducerAdapterProvider');\n }\n\n const { state, dispatch } = context;\n\n return {\n modals: state.modals.list,\n closeModal: useCallback(\n (params: { id: string; reason?: ModalCloseReason }) => {\n dispatch({ type: 'CLOSE_MODAL', payload: params });\n },\n [dispatch],\n ),\n editModal: useCallback(\n (params: { id: string } & Partial<Pick<IModal, 'views' | 'title'>>) => {\n dispatch({ type: 'EDIT_MODAL', payload: params });\n },\n [dispatch],\n ),\n removeModal: useCallback(\n (id: string) => {\n dispatch({ type: 'REMOVE_MODAL', payload: id });\n },\n [dispatch],\n ),\n };\n}\n","import { Subject } from 'rxjs';\n\nexport const $handlerSubject = new Subject<string | null>();\n","import { FC } from 'react';\nimport { Portal as BasePortal, PortalProps } from '@ws-ui/shared';\nimport { HTTP_HANDLERS_EDITOR_SCOPE_CLASS } from './common';\n\nexport const getDefaultContainer = () => {\n return (\n document.querySelector(`.${HTTP_HANDLERS_EDITOR_SCOPE_CLASS}`) ||\n document.body\n );\n};\n\nexport const Portal: FC<PortalProps> = ({ container, ...props }) => {\n return (\n <BasePortal {...props} container={container || getDefaultContainer()} />\n );\n};\n","import { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Combobox, Transition } from '@headlessui/react';\nimport {\n FdCheckCircle,\n FdClose,\n FdCloseNaked,\n FdDown,\n FdDragHandle,\n FdDuplicate,\n FdEmpty,\n FdInfoCircle,\n FdPen,\n FdRegex,\n FdTrash,\n FdUnRegex,\n FdWarningDanger,\n} from '@ws-ui/icons';\nimport {\n ControlledSwitch,\n ModalColor,\n ModalType,\n useHotkeys,\n Tooltip,\n} from '@ws-ui/shared';\nimport cn from 'classnames';\nimport { useCombobox, useMultipleSelection } from 'downshift';\nimport { FC, Fragment, useEffect, useMemo, useState } from 'react';\nimport {\n $handlerSubject,\n HTTPHandler,\n HTTPVerb,\n useEditorStateAdapter,\n} from '../adapter';\nimport { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities';\nimport { DraggableAttributes } from '@dnd-kit/core';\nimport { omit, isEqual } from 'lodash';\nimport RandExp from 'randexp';\nimport { getDefaultContainer } from '../Portal';\n\nconst MultipleComboBox: FC<{\n initialSelectedItems: HTTPVerb[];\n onChange: (val: HTTPVerb[]) => void;\n touched?: boolean;\n onBlur?: () => void;\n 'data-cy'?: string;\n}> = ({\n initialSelectedItems,\n onChange,\n touched,\n onBlur,\n 'data-cy': dataCy,\n}) => {\n const verbs: HTTPVerb[] = ['GET', 'POST', 'PUT', 'DELETE'];\n\n function getFilteredverbs(selectedItems: string[], inputValue: string) {\n const lowerCasedInputValue = inputValue.toLowerCase();\n\n return verbs.filter(function filtermethod(method) {\n return (\n !selectedItems.includes(method) &&\n method.toLowerCase().includes(lowerCasedInputValue)\n );\n });\n }\n\n const [inputValue, setInputValue] = useState('');\n const [selectedItems, setSelectedItems] = useState(initialSelectedItems);\n\n useEffect(() => {\n setSelectedItems(initialSelectedItems);\n }, [initialSelectedItems]);\n\n const items: string[] = useMemo(\n () => getFilteredverbs(selectedItems, inputValue),\n [selectedItems, inputValue],\n );\n\n const { getSelectedItemProps, getDropdownProps, removeSelectedItem } =\n useMultipleSelection({\n selectedItems,\n onStateChange({ selectedItems: newSelectedItems = [], type }) {\n switch (type) {\n case useMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:\n case useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace:\n case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:\n setSelectedItems(newSelectedItems);\n break;\n default:\n break;\n }\n },\n });\n\n const {\n isOpen,\n getToggleButtonProps,\n getMenuProps,\n getInputProps,\n highlightedIndex,\n getItemProps,\n selectedItem,\n } = useCombobox({\n items,\n itemToString(item) {\n return item ? item : '';\n },\n defaultHighlightedIndex: 0, // after selection, highlight the first item.\n selectedItem: null,\n inputValue,\n stateReducer(state, actionAndChanges) {\n const { changes, type } = actionAndChanges;\n\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen: true, // keep the menu open after selection.\n highlightedIndex: 0, // with the first option highlighted.\n };\n default:\n return changes;\n }\n },\n onStateChange({\n inputValue: newInputValue = '',\n type,\n selectedItem: newSelectedItem,\n }) {\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n case useCombobox.stateChangeTypes.InputBlur:\n if (newSelectedItem) {\n setSelectedItems([...selectedItems, newSelectedItem as HTTPVerb]);\n setInputValue('');\n }\n break;\n\n case useCombobox.stateChangeTypes.InputChange:\n setInputValue(newInputValue);\n\n break;\n default:\n break;\n }\n },\n });\n\n useEffect(() => {\n onChange(selectedItems);\n }, [selectedItems]);\n\n return (\n <div className=\"relative flex-1\" data-cy={dataCy}>\n <div\n className={cn(\n 'bg-grey-300 focus-within:ring-1 focus-within:ring-primary-dark relative flex items-center w-full cursor-default overflow-hidden rounded p-px text-left focus:outline-none',\n {\n 'ring-1 ring-primary-dark rounded-b-none': isOpen && items.length,\n 'ring-1 ring-red-400 overflow-visible':\n selectedItems.length === 0 && touched,\n },\n )}\n onBlur={onBlur}\n >\n {selectedItems.length === 0 && !isOpen && touched && (\n <div className=\"absolute inset-x-0 top-[25px] z-[1] rounded-b-sm bg-red-200 px-1 text-xs text-red-600 ring-1 ring-red-600\">\n {selectedItems.length === 0 && 'At least one HTTP verb is required'}\n </div>\n )}\n\n {selectedItems.map(\n function renderSelectedItem(selectedItemForRender, index) {\n return (\n <span\n className={cn(\n 'bg-grey-600 text-s mr-1 flex items-center rounded px-1 py-0.5 uppercase',\n {\n 'bg-red-400': !verbs.includes(selectedItemForRender),\n },\n )}\n key={`selected-item-${index}-${selectedItemForRender}`}\n {...getSelectedItemProps({\n selectedItem: selectedItemForRender,\n index,\n })}\n >\n {selectedItemForRender}\n\n <span\n onClick={(e) => {\n e.stopPropagation();\n removeSelectedItem(selectedItemForRender);\n }}\n className=\"hover:bg-primary-hover ml-2 inline-block cursor-pointer rounded p-0.5 text-gray-100 hover:text-white active:outline-none\"\n >\n <FdCloseNaked />\n </span>\n </span>\n );\n },\n )}\n <input\n {...getInputProps(\n getDropdownProps(\n { preventKeyAction: isOpen },\n { suppressRefError: true },\n ),\n )}\n className=\"flex-grow border-none bg-transparent px-1 py-1 text-xs outline-none\"\n placeholder={selectedItems.length === 0 ? 'Select HTTP verbs' : ''}\n size={1}\n />\n <button\n className=\"absolute inset-y-0 right-0 flex items-center pr-2\"\n type=\"button\"\n {...getToggleButtonProps()}\n >\n <FdDown className=\"h-3 w-3 text-gray-50\" aria-hidden=\"true\" />\n </button>\n </div>\n <ul\n className={`ring-primary-dark bg-grey-900 text-s absolute z-10 w-full rounded-b ring-1 p-1 text-white ${\n !(isOpen && items.length) && 'hidden'\n }`}\n {...getMenuProps()}\n >\n {isOpen &&\n items.map((item, index) => (\n <li\n className={cn(\n highlightedIndex === index && 'bg-primary-hover',\n selectedItem === item && 'font-bold',\n 'flex flex-col p-1 shadow-sm',\n )}\n key={`${item}${index}`}\n {...getItemProps({ item, index })}\n >\n <span>{item}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nconst Select = ({\n value,\n options,\n errorMessage = '',\n onChange,\n onBlur,\n 'data-cy': dataCy,\n}: {\n value: string;\n onChange: (val: string) => void;\n options: { name: string }[];\n errorMessage?: string;\n onBlur?: () => void;\n 'data-cy'?: string;\n}) => {\n const [query, setQuery] = useState('');\n\n const notFound = options.find((item) => item.name === value);\n\n const filteredOptions =\n query === ''\n ? options\n : options.filter((sgltn) => {\n return sgltn.name.toLowerCase().includes(query.toLowerCase());\n });\n\n return (\n <Combobox\n key={value}\n value={{ name: value }}\n onChange={(s) => onChange(s.name)}\n >\n {({ open }) => (\n <div className=\"relative w-full\" data-cy={dataCy}>\n <div\n className={cn(\n 'bg-grey-300 focus-within:ring-1 focus-within:ring-primary-dark relative w-full cursor-default overflow-hidden rounded text-left inline-flex',\n {\n 'ring-1 ring-red-400': (!notFound && value) || errorMessage,\n 'ring-1 ring-primary-dark rounded-b-none': open,\n 'overflow-visible': !notFound && !open && errorMessage,\n },\n )}\n >\n <Combobox.Input\n className={cn(\n 'bg-grey-300 text-s w-full border-none py-1 px-2 focus:outline-none rounded',\n {\n '!text-red-400': !notFound,\n },\n )}\n displayValue={(sngltn: { name: string }) => sngltn.name}\n onChange={(event) => setQuery(event.target.value)}\n style={{ caretColor: 'white' }}\n onBlur={onBlur}\n />\n <span className=\"inset-y-0 right-0 flex items-center gap-1 pr-2\">\n {!notFound && !open && errorMessage && (\n <div className=\"absolute inset-x-0 top-[25px] z-[1] rounded-b-sm bg-red-200 px-1 text-xs text-red-600 ring-1 ring-red-600\">\n {errorMessage}\n </div>\n )}\n\n {value ? (\n <>\n <button\n onClick={() => {\n setQuery('');\n onChange('');\n }}\n >\n <FdCloseNaked\n className=\"text-grey-50 h-3 w-3\"\n aria-hidden=\"true\"\n />\n </button>\n <span className=\"bg-grey-50 h-3 w-[1px] rounded-full\"></span>\n </>\n ) : null}\n <Combobox.Button>\n <FdDown className=\"text-grey-50 h-3 w-3\" aria-hidden=\"true\" />\n </Combobox.Button>\n </span>\n </div>\n\n <Transition\n as={Fragment}\n leave=\"transition ease-in durati pb-0.5on-100\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n afterLeave={() => setQuery('')}\n >\n <Combobox.Options className=\"bg-grey-900 text-s text-grey-100 sm:text-s absolute z-50 max-h-60 w-full overflow-auto rounded-b ring-1 ring-primary-dark p-1 focus:outline-none\">\n {filteredOptions.length === 0 ? (\n <div className=\"text-s text-grey-200 relative cursor-default select-none px-0.5 py-0.5 \">\n <FdEmpty className=\"inline h-4 w-4\" /> Nothing found.\n </div>\n ) : (\n filteredOptions.map((option, index) => (\n <Combobox.Option\n key={index}\n className={({ active }) =>\n `relative cursor-default select-none ${\n active ? 'bg-primary-hover' : ''\n }`\n }\n value={option}\n >\n {({ selected }) => (\n <>\n <span\n className={`block truncate p-2 py-1 ${\n selected\n ? 'bg-primary-dark font-medium text-white'\n : 'font-normal'\n }`}\n >\n {option.name}\n </span>\n </>\n )}\n </Combobox.Option>\n ))\n )}\n </Combobox.Options>\n </Transition>\n </div>\n )}\n </Combobox>\n );\n};\n\nconst MethodSelector = ({\n value,\n options,\n onChange,\n errorMessage,\n onBlur,\n 'data-cy': dataCy,\n}: {\n value: string;\n onChange: (val: string) => void;\n options: { name: string; exposed: boolean }[];\n errorMessage?: string;\n onBlur?: () => void;\n 'data-cy'?: string;\n}) => {\n const [query, setQuery] = useState('');\n\n const found = options.find((item) => item.name === value);\n\n const exposed = found && found.exposed;\n\n const filteredOptions =\n query === ''\n ? options\n : options.filter((sgltn) => {\n return sgltn.name.toLowerCase().includes(query.toLowerCase());\n });\n\n return (\n <Combobox value={{ name: value }} onChange={(val) => onChange(val.name)}>\n {({ open }) => (\n <div className=\"relative\" data-cy={dataCy}>\n <div\n className={cn(\n 'bg-grey-300 focus-within:ring-1 focus-within:ring-primary-dark relative w-full cursor-default overflow-hidden rounded text-left inline-flex',\n {\n 'ring-1 ring-red-400': errorMessage,\n 'ring-1 ring-yellow-500': exposed,\n 'ring-1 ring-primary-dark rounded-b-none': open,\n 'overflow-visible': !open && errorMessage,\n },\n )}\n >\n <Combobox.Input\n className={cn(\n 'bg-grey-300 text-s w-full border-none py-1 px-2 focus:outline-none truncate rounded',\n {\n '!text-red-400': errorMessage,\n '!text-yellow-500': exposed,\n },\n )}\n style={{ caretColor: 'white' }}\n displayValue={(sngltn: { name: string }) => sngltn.name}\n onChange={(event) => setQuery(event.target.value)}\n onBlur={onBlur}\n />\n {!open && errorMessage && (\n <div\n className={cn(\n 'absolute inset-x-0 top-[25px] z-[1] rounded-b-sm bg-red-200 px-1 text-xs text-red-600 ring-1 ring-red-600',\n { '!text-yellow-500 ring-yellow-500 bg-white': exposed },\n )}\n >\n {errorMessage}\n </div>\n )}\n <span className=\"inset-y-0 right-0 flex items-center gap-1 pr-2\">\n {value ? (\n <>\n <button\n onClick={() => {\n setQuery('');\n onChange('');\n }}\n >\n <FdCloseNaked\n className=\"text-grey-50 h-3 w-3\"\n aria-hidden=\"true\"\n />\n </button>\n <span className=\"bg-grey-50 h-3 w-[1px] rounded-full\"></span>\n </>\n ) : null}\n <Combobox.Button>\n <FdDown className=\"text-grey-50 h-3 w-3\" aria-hidden=\"true\" />\n </Combobox.Button>\n </span>\n </div>\n\n <Transition\n as={Fragment}\n leave=\"transition ease-in duration-100\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n afterLeave={() => setQuery('')}\n >\n <Combobox.Options className=\"bg-grey-900 text-s text-grey-100 sm:text-s absolute z-50 max-h-60 w-full overflow-auto rounded-b ring-1 ring-primary-dark p-1 focus:outline-none\">\n {!filteredOptions.length ? (\n <div className=\"text-s text-grey-200 relative cursor-default select-none px-0.5 py-0.5\">\n <FdEmpty className=\"inline h-4 w-4\" /> Nothing found.\n </div>\n ) : (\n filteredOptions.map((option, index) => (\n <Combobox.Option\n key={index}\n className={({ active }) =>\n `relative cursor-default select-none ${\n active ? 'bg-primary-hover' : ''\n }`\n }\n value={option}\n >\n {({ selected }) => (\n <>\n <span\n className={`text-s flex items-center gap-2 truncate p-2 py-1 ${\n selected\n ? 'bg-primary-dark font-medium text-white'\n : 'font-normal'\n }`}\n >\n {option.exposed && (\n <FdWarningDanger className=\"text-yellow-500\" />\n )}\n <span className=\"flex-1 truncate\" title={option.name}>\n {option.name}\n </span>\n </span>\n </>\n )}\n </Combobox.Option>\n ))\n )}\n </Combobox.Options>\n </Transition>\n </div>\n )}\n </Combobox>\n );\n};\n\nconst GrabHandle: FC<{\n attributes: DraggableAttributes;\n listeners: SyntheticListenerMap | undefined;\n}> = ({ listeners, attributes }) => {\n return (\n <button data-cy=\"handler-row-drag-handle\" {...attributes} {...listeners}>\n <FdDragHandle />\n </button>\n );\n};\n\nconst generateRegexExample = (regex: string) => {\n if (!regex) return '';\n let regexExample;\n RandExp.prototype.max = 8;\n try {\n regexExample = new RandExp(regex)?.gen();\n } catch {\n regexExample = '';\n }\n return `Requests matching regex will be handled example: ${regexExample}`;\n};\n\nconst HandlerEdit: FC<\n HTTPHandler & {\n attributes: DraggableAttributes;\n listeners: SyntheticListenerMap | undefined;\n }\n> = ({\n id,\n class: className,\n method,\n pattern,\n verbs,\n regexPattern,\n asRegex,\n listeners,\n attributes,\n}) => {\n const [handler, setHandler] = useState({\n className,\n method,\n pattern,\n verbs,\n asRegex,\n regexPattern,\n });\n\n const adapter = useEditorStateAdapter();\n const catalog = adapter.getCatalog();\n\n const singletons = Object.values(catalog?.singletons || {});\n\n const singletonMethods = singletons\n .find((item) => item.name === handler.className)\n ?.methods.map(({ name, exposed }) => ({ name, exposed }));\n\n const newlyCreatedHandlerID = adapter.getNewlyCreatedHandlerId();\n\n function isValid() {\n const { className, method, asRegex, regexPattern, pattern, verbs } =\n handler;\n return !!(\n className &&\n method &&\n (asRegex ? regexPattern : !pattern.endsWith('/')) &&\n verbs.length\n );\n }\n\n function onConfirm() {\n if (isValid()) {\n const { className, method, asRegex, regexPattern, pattern, verbs } =\n handler;\n const rest = asRegex ? { regexPattern } : { pattern };\n adapter.actions.updateHandler(id, {\n class: className,\n method,\n verbs,\n asRegex,\n ...rest,\n });\n\n adapter.actions.setEditingHandler(null);\n }\n }\n\n const onCancel = async () => {\n const oldHandler = {\n className,\n method,\n pattern,\n regexPattern,\n verbs,\n };\n\n const newHandler = omit(handler, ['id', 'isExpanded']);\n if (!isValid()) {\n if (newlyCreatedHandlerID) {\n adapter.actions.deleteHandler(newlyCreatedHandlerID);\n }\n adapter.actions.setEditingHandler(null);\n return;\n }\n\n if (!isEqual(oldHandler, newHandler)) {\n const { confirmed } = await adapter.actions.openModal({\n title: 'Cancel Changes',\n type: ModalType.CONFIRM,\n color: ModalColor.DANGER,\n message:\n 'Are you sure you want to cancel changes made to this Handler?',\n icon: 'FdWarningDanger',\n });\n\n if (confirmed) {\n if (newlyCreatedHandlerID && newlyCreatedHandlerID === id) {\n adapter.actions.deleteHandler(id);\n }\n\n adapter.actions.setEditingHandler(null);\n\n return;\n }\n }\n };\n\n useHotkeys(\n 'esc',\n () => {\n setTimeout(() => {\n onCancel();\n }, 100);\n },\n [],\n );\n\n useEffect(() => {\n $handlerSubject.subscribe((lastEditingID) => {\n if (lastEditingID === id) {\n onConfirm();\n }\n });\n }, [handler, id]);\n const [touchedFields, setTouchedFields] = useState<{\n [key: string]: boolean;\n }>({ className: false, method: false, pattern: false, verbs: false });\n\n const methodErrors = () => {\n if (touchedFields.method && !handler.method) {\n return 'Method is required';\n }\n if (singletonMethods) {\n const found = singletonMethods?.find(\n (item) => item.name === handler.method,\n );\n if (handler.method && !found)\n return `The method \"${handler.method}\" doesn't exist.`;\n if (found && found.exposed)\n return `Method \"${handler.method}\" is already exposed`;\n }\n };\n const patternErrors = () => {\n if (touchedFields.pattern) {\n if (handler.asRegex && !handler.regexPattern) {\n return 'Pattern is required';\n }\n if (!handler.asRegex && handler.pattern?.endsWith('/')) {\n return 'Pattern should not end with a \"/\"';\n }\n }\n return undefined;\n };\n\n return (\n <div className=\"flex items-center gap-2 rounded-b py-2\">\n <div className=\"flex w-60 flex-shrink-0 items-center gap-1\">\n <GrabHandle\n key=\"grab-handle\"\n listeners={listeners}\n attributes={attributes}\n />\n <Select\n data-cy=\"handler-row-class-selector\"\n value={handler.className}\n onChange={(val) => {\n setHandler((state) => ({ ...state, className: val }));\n }}\n onBlur={() =>\n setTouchedFields((state) => ({ ...state, className: true }))\n }\n key={className}\n options={singletons}\n errorMessage={\n touchedFields.className && !handler.className\n ? 'Class name is required'\n : handler.className !== '' &&\n !singletons.find((item) => item.name === handler.className)\n ? `The singleton \"${handler.className}\" doesn't exist.`\n : undefined\n }\n />\n </div>\n <div className=\"w-60 flex-shrink-0\">\n <MethodSelector\n data-cy=\"handler-row-method-selector\"\n value={handler.method}\n onChange={(val) => {\n setHandler((state) => ({ ...state, method: val }));\n }}\n options={singletonMethods || []}\n errorMessage={methodErrors()}\n onBlur={() =>\n setTouchedFields((state) => ({ ...state, method: true }))\n }\n />\n </div>\n\n <div className=\"relative w-60 flex-shrink-0 flex items-center gap-1 overflow-visible\">\n <Tooltip\n label={\n handler.asRegex\n ? generateRegexExample(handler.regexPattern)\n : handler.pattern && !handler.pattern.endsWith('/')\n ? `Requests starting with /${handler.pattern}/ will be handled`\n : ''\n }\n container={getDefaultContainer()}\n >\n <div className=\"relative w-full\">\n {!handler.asRegex && (\n <span className=\"absolute text-s inset-y-0 left-1 flex items-center gap-2\">\n /\n </span>\n )}\n <input\n data-cy=\"handler-row-pattern-input\"\n type=\"text\"\n className={cn(\n 'bg-grey-300 text-s block w-full rounded p-1 pl-3 focus:outline-none focus:ring-1 focus:ring-primary-dark',\n {\n 'focus:ring-red-400 ring-1 ring-red-400':\n touchedFields.pattern &&\n handler.asRegex &&\n !handler['regexPattern'],\n },\n )}\n value={handler.asRegex ? handler.regexPattern : handler.pattern}\n onChange={(e) => {\n setHandler((state) => ({\n ...state,\n [handler.asRegex ? 'regexPattern' : 'pattern']:\n e.target.value,\n }));\n }}\n onBlur={() =>\n setTouchedFields((state) => ({ ...state, pattern: true }))\n }\n placeholder={handler.asRegex ? 'Required' : ''}\n />\n {patternErrors() && (\n <div className=\"absolute inset-x-0 top-[25px] z-[1] rounded-b-sm bg-red-200 px-1 text-xs text-red-600 ring-1 ring-red-600\">\n {patternErrors()}\n </div>\n )}\n </div>\n </Tooltip>\n {(asRegex ? regexPattern : pattern) && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n\n setHandler((state) => ({\n ...state,\n [handler.asRegex ? 'regexPattern' : 'pattern']: '',\n }));\n }}\n className=\"absolute inset-y-0 right-6 flex items-center gap-2 pr-2\"\n >\n <FdCloseNaked\n className=\"text-grey-200 h-3 w-3\"\n aria-hidden=\"true\"\n />\n </button>\n )}\n <Tooltip\n label={\n handler.asRegex\n ? `Requests matching this regex will be handled. Check the match with the __[Match regex command](https://developer.4d.com/docs/commands/match-regex)__`\n : `Prefixes are considered as regular expressions already containing starting and ending / \\n\\n __[documentation](https://developer.4d.com/qodly/4DQodlyPro/httpHandlers)__`\n }\n container={getDefaultContainer()}\n >\n <span className=\"rounded hover:bg-gray-400/30 w-6 h-6 flex items-center content-center justify-center\">\n <FdInfoCircle className=\"inline h-4 w-4 text-gray-100\" />\n </span>\n </Tooltip>\n </div>\n\n <div className=\"w-20 px-2 flex justify-center\">\n <ControlledSwitch\n data-cy=\"handler-row-regex-switch\"\n value={!!handler.asRegex}\n onChange={(value) => {\n const rest = value\n ? { regexPattern: pattern, asRegex: value }\n : { pattern: regexPattern, asRegex: value };\n\n setHandler((state) => ({ ...state, ...rest }));\n }}\n className={`${handler.asRegex ? 'bg-primary-dark' : 'bg-grey-300'}\nrelative inline-flex h-5 w-8 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75`}\n >\n <span\n aria-hidden=\"true\"\n className={`${handler.asRegex ? 'translate-x-3' : 'translate-x-0'}\npointer-events-none inline-block h-4 w-4 transform rounded-full bg-white ring-0 transition duration-200 ease-in-out`}\n />\n </ControlledSwitch>\n </div>\n <div className=\"flex flex-1 items-center\">\n <MultipleComboBox\n data-cy=\"handler-row-verbs-select\"\n initialSelectedItems={handler.verbs || []}\n onChange={(val) => {\n setHandler((state) => ({ ...state, verbs: val }));\n }}\n touched={touchedFields.verbs}\n onBlur={() =>\n setTouchedFields((state) => ({ ...state, verbs: true }))\n }\n />\n <div className=\"flex items-center gap-0.5 px-2\">\n <Tooltip\n label=\"Duplicate Handler\"\n className=\"px-1 py-3\"\n container={getDefaultContainer()}\n >\n <button\n data-cy=\"handler-row-duplicate-button\"\n className={cn(\n 'hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none opacity-50 cursor-not-allowed',\n )}\n >\n <FdDuplicate />\n </button>\n </Tooltip>\n <Tooltip\n label=\"Confirm Changes\"\n className=\"px-1 py-3\"\n container={getDefaultContainer()}\n >\n <button\n data-cy=\"handler-row-save-button\"\n className={cn(\n 'hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none',\n {\n 'opacity-50 cursor-not-allowed': !isValid(),\n },\n )}\n onClick={onConfirm}\n >\n <FdCheckCircle />\n </button>\n </Tooltip>\n <Tooltip\n label=\"Cancel Changes\"\n className=\"px-1 py-3\"\n container={getDefaultContainer()}\n >\n <button\n data-cy=\"handler-row-cancel-button\"\n className=\"hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none\"\n onClick={onCancel}\n >\n <FdClose />\n </button>\n </Tooltip>\n </div>\n </div>\n </div>\n );\n};\n\nexport const Handler: FC<HTTPHandler> = ({\n id,\n class: className,\n method,\n pattern,\n verbs,\n isExpanded,\n regexPattern,\n asRegex,\n}) => {\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({ id: id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n const adapter = useEditorStateAdapter();\n\n const editing = adapter.getEditingHandlerId();\n\n const patternValue = asRegex ? regexPattern : pattern;\n\n const catalog = adapter.getCatalog();\n\n const singletons = Object.values(catalog?.singletons || {});\n\n const singletonMethods = singletons\n ?.find((item) => item.name === className)\n ?.methods.map(({ name, exposed }) => ({ name, exposed }));\n\n const notFoundSingltonError = singletons?.find(\n (item) => item.name === className,\n );\n\n const found = singletonMethods?.find((item) => item.name === method);\n\n const exposedError = found && found.exposed;\n\n return (\n <div\n className=\"odd:bg-grey-500\"\n data-cy={`handler-row-${editing === id ? 'editing' : 'viewing'}`}\n ref={setNodeRef}\n style={style}\n >\n {editing === id ? (\n <HandlerEdit\n {...{\n id,\n class: className,\n method,\n pattern,\n verbs,\n isExpanded,\n regexPattern,\n asRegex,\n listeners,\n attributes,\n }}\n />\n ) : (\n <div\n className=\"flex items-center gap-2 rounded-b py-2.5 text-grey-50\"\n onDoubleClick={() => {\n $handlerSubject.next(editing);\n adapter.actions.setEditingHandler(id);\n }}\n >\n <div className=\"flex w-60 flex-shrink-0 items-center gap-1 \">\n <GrabHandle\n key=\"grab-handle\"\n listeners={listeners}\n attributes={attributes}\n />\n\n <div className=\"text-s w-full\">\n {className ? (\n <div\n className={cn(\n 'flex items-center gap-2',\n !notFoundSingltonError && 'text-red-400',\n )}\n >\n {!notFoundSingltonError && (\n <Tooltip\n label={`The singleton \"${className}\" doesn't exist.`}\n className=\"!bg-red-300 !text-red-400\"\n container={getDefaultContainer()}\n >\n <span className=\"rounded p-0.5 hover:bg-red-400/30 pt-0.5 h-5 w-5 flex justify-center content-center\">\n <FdWarningDanger className=\"inline h-4 w-4 pb-0.5 text-red-400\" />\n </span>\n </Tooltip>\n )}{' '}\n {className}\n </div>\n ) : (\n <span className=\"text-grey-200 italic\">undefined</span>\n )}\n </div>\n </div>\n <div className=\"w-60 flex-shrink-0 \">\n <div className=\"text-s w-full\">\n {method ? (\n <div\n className={cn(\n 'flex items-center gap-2',\n !found && 'text-red-400',\n exposedError && 'text-yellow-400',\n )}\n >\n {!found && (\n <Tooltip\n label={`The method \"${method}\" doesn't exist.`}\n className=\"!bg-red-300 !text-red-400\"\n container={getDefaultContainer()}\n >\n <span className=\"rounded p-0.5 hover:bg-red-400/30 pt-0.5 h-5 w-5 flex justify-center content-center\">\n <FdWarningDanger className=\"inline h-4 w-4 pb-0.5 text-red-400\" />\n </span>\n </Tooltip>\n )}{' '}\n {exposedError && (\n <Tooltip\n label={`Method \"${method}\" is already exposed`}\n className=\"!bg-yellow-100 !text-yellow-500\"\n container={getDefaultContainer()}\n >\n <span className=\"rounded p-0.5 hover:bg-red-400/30 pt-0.5 h-5 w-5 flex justify-center content-center\">\n <FdWarningDanger className=\"inline h-4 w-4 pb-0.5 text-yellow-500\" />\n </span>\n </Tooltip>\n )}{' '}\n {method}\n </div>\n ) : (\n <span className=\"text-grey-200 italic\">undefined</span>\n )}\n </div>\n </div>\n\n <div className=\"text-s relative w-60 flex-shrink-0 \">\n {patternValue ? (\n <Tooltip\n label={\n asRegex\n ? generateRegexExample(patternValue)\n : `Requests starting with /${patternValue}/ will be handled`\n }\n container={getDefaultContainer()}\n >\n <span>{patternValue}</span>\n </Tooltip>\n ) : (\n <span className=\"text-grey-200 italic\">/</span>\n )}\n </div>\n\n <div className=\"px-5 w-20 flex justify-center text-grey-200\">\n {asRegex ? <FdRegex /> : <FdUnRegex />}\n </div>\n <div className=\"flex flex-1 items-center\">\n <div className=\"text-s w-full\">\n {verbs.length ? (\n verbs.join(',')\n ) : (\n <span className=\"text-grey-200 italic\">undefined</span>\n )}\n </div>\n\n <div className=\"flex items-center gap-0.5 px-2\">\n <Tooltip\n label=\"Duplicate Handler\"\n className=\"px-1 py-3\"\n container={getDefaultContainer()}\n >\n <button\n data-cy=\"handler-row-duplicate-button\"\n className=\"hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none\"\n onClick={() => adapter.actions.duplicateHandler(id)}\n >\n <FdDuplicate />\n </button>\n </Tooltip>\n <Tooltip\n label=\"Edit Handler\"\n className=\"px-1 py-3\"\n container={getDefaultContainer()}\n >\n <button\n data-cy=\"handler-row-edit-button\"\n className=\"hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none\"\n onClick={() => {\n $handlerSubject.next(editing);\n adapter.actions.setEditingHandler(id);\n }}\n >\n <FdPen />\n </button>\n </Tooltip>\n <Tooltip\n label=\"Delete Handler\"\n className=\"px-1 py-3\"\n placement=\"top-end\"\n container={getDefaultContainer()}\n >\n <button\n data-cy=\"handler-row-delete-button\"\n className=\"hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none\"\n onClick={async () => {\n if (adapter.getHost() === 'vscode') {\n adapter.actions.deleteHandler(id);\n return;\n }\n const { confirmed } = await adapter.actions.openModal({\n title: 'Delete Handler',\n type: ModalType.CONFIRM,\n color: ModalColor.DANGER,\n message: 'Are you sure you want to remove this Handler?',\n icon: 'FdWarningDanger',\n });\n if (confirmed) {\n adapter.actions.deleteHandler(id);\n }\n }}\n >\n <FdTrash />\n </button>\n </Tooltip>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import {\n closestCenter,\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { FdCode, FdEmpty, FdInfoCircle, FdPlus } from '@ws-ui/icons';\nimport { FC, useState, useRef, useEffect } from 'react';\nimport { SwitchToEditorIcon } from './SwitchToEditorIcon';\nimport { Handler } from './Handler';\nimport { Tooltip } from '@ws-ui/shared';\nimport { $handlerSubject, useEditorStateAdapter } from './adapter';\nimport { getDefaultContainer } from './Portal';\nimport cn from 'classnames';\n\nconst Editor: FC = () => {\n const adapter = useEditorStateAdapter();\n const items = adapter.getHandlers();\n const editing = adapter.getEditingHandlerId();\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n const [activeId, setActiveId] = useState<string | null>(null);\n const [hasHorizontalScroll, setHasHorizontalScroll] = useState(false);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const activeItem = items.find((item) => item.id === activeId);\n\n // Check for horizontal scrolling\n useEffect(() => {\n const checkScroll = () => {\n if (scrollContainerRef.current) {\n const hasScroll =\n scrollContainerRef.current.scrollWidth >\n scrollContainerRef.current.clientWidth;\n setHasHorizontalScroll(hasScroll);\n }\n };\n\n checkScroll();\n const resizeObserver = new ResizeObserver(checkScroll);\n if (scrollContainerRef.current) {\n resizeObserver.observe(scrollContainerRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [items.length]);\n\n const renderAddNewHandlerButton = (className?: string) => (\n <Tooltip label=\"Add a new HTTP Handler\" container={getDefaultContainer()}>\n <button\n data-cy=\"handlers-editor-add-handler-button\"\n disabled={Boolean(editing)}\n onClick={() => {\n $handlerSubject.next(editing);\n adapter.actions.addHandler({\n class: '',\n isExpanded: true,\n method: '',\n pattern: '',\n verbs: [],\n regexPattern: '',\n });\n }}\n className={cn(\n className,\n `hover:bg-primary-hover rounded p-1 text-gray-100 hover:text-white active:outline-none disabled:cursor-not-allowed disabled:opacity-30`,\n )}\n >\n <FdPlus className=\"h-5 w-5\" />\n </button>\n </Tooltip>\n );\n\n return (\n <div className=\"bg-grey-700 flex h-full w-full flex-col text-white\">\n <div className=\"flex items-center justify-between border-b border-black p-2\">\n <div className=\"flex items-center gap-2\">\n {Boolean(adapter.actions.switchEditor) && (\n <SwitchToEditorIcon\n label=\"Switch to text Editor\"\n Icon={FdCode}\n onClick={() =>\n adapter.actions.switchEditor!({\n config: { language: 'json' },\n key: 'editors:code',\n })\n }\n // tab={tab}\n // editor={{\n // config: { language: 'json' },\n // key: 'editors:code',\n // }}\n data-cy=\"handlers-editor-switch-to-code-button\"\n />\n )}\n <p className=\"text-grey-100 text-s flex items-center gap-1\">\n <FdInfoCircle className=\"inline text-base text-white\" /> HTTP\n handlers are evaluated in the order they are declared\n </p>\n </div>\n {renderAddNewHandlerButton(\n `flex lg:${hasHorizontalScroll ? 'flex' : 'hidden'}`,\n )}\n </div>\n <div\n className=\"mt-1 flex flex-1 flex-col overflow-x-auto px-4\"\n ref={scrollContainerRef}\n >\n {items.length ? (\n <div className=\"flex h-full min-w-[1200px] flex-1 flex-col\">\n <div className=\"mb-3 flex items-center gap-2 border-b\">\n <div className=\"w-60 flex-shrink-0 text-xs\">\n <span className=\"pl-6\">Class</span>\n </div>\n <div className=\"w-60 flex-shrink-0 text-xs\">Method</div>\n <div className=\"w-60 flex-shrink-0 text-xs\">Pattern</div>\n <div className=\"w-20 px-2 text-center text-xs\">As Regex</div>\n <div className=\"flex flex-1 items-center justify-between text-xs\">\n <span>Verbs</span>\n <div\n className={`flex items-center gap-2 text-2xl h-7 ${hasHorizontalScroll ? 'invisible' : ''}`}\n >\n {renderAddNewHandlerButton()}\n </div>\n </div>\n </div>\n <div className=\"py-3\" data-cy=\"handlers-editor-list\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={(event) => {\n setActiveId(event.active.id);\n }}\n onDragEnd={(event) => {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (!active || !over) return;\n\n if (active.id !== over?.id) {\n const oldIndex = items\n .map((item) => item.id)\n .indexOf(active.id);\n const newIndex = items\n .map((item) => item.id)\n .indexOf(over.id);\n\n adapter.actions.updateHandlers(\n arrayMove(items, oldIndex, newIndex),\n );\n }\n }}\n >\n <SortableContext\n items={items}\n strategy={verticalListSortingStrategy}\n >\n {items.map(({ id, ...props }) => (\n <Handler key={id} id={id} {...props} />\n ))}\n </SortableContext>\n <DragOverlay>\n {activeId && activeItem ? (\n <div className=\"opacity-10\">\n <Handler {...activeItem} />\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n </div>\n </div>\n ) : (\n <div className=\"mt-6\">\n <div>\n <FdEmpty className=\"text-grey-200 mx-auto h-9 w-9\" />\n </div>\n <div className=\"text-s text-grey-200 mx-auto mt-3 max-w-sm text-center\">\n There are no http handlers configured yet <br />\n Please add a new one to add a new one.\n </div>\n <div className=\"mt-3 flex items-center justify-center\">\n <button\n data-cy=\"handlers-editor-empty-add-handler-button\"\n onClick={() => {\n $handlerSubject.next(editing);\n adapter.actions.addHandler({\n class: '',\n isExpanded: true,\n method: '',\n pattern: '',\n verbs: [],\n regexPattern: '',\n });\n }}\n className=\"bg-primary-dark text-s rounded px-2 py-1 flex items-center gap-1\"\n >\n <FdPlus className=\"inline text-white h-4 w-4\" /> Add New Handler\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport const HTTPHandlersEditor: FC = () => {\n return <Editor />;\n};\n","import { Modal } from '@ws-ui/shared';\nimport { getDefaultContainer } from '../Portal';\nimport { useModals } from '../adapter';\n\nconst Modals = () => {\n const { modals, closeModal, editModal } = useModals();\n\n return (\n <>\n {modals.map((modal, index) => (\n <Modal\n key={modal.id}\n hasOverlay={index === 0}\n {...modal}\n onClose={closeModal}\n onEdit={editModal}\n container={getDefaultContainer()}\n />\n ))}\n </>\n );\n};\n\nexport default Modals;\n","import { FC, useEffect, useMemo, useRef } from 'react';\nimport { isEqual } from 'lodash';\nimport { TipsProvider, useDidMountEffect } from '@ws-ui/shared';\nimport { HTTPHandlersEditor } from '../Editor';\nimport Modals from './Modals';\nimport {\n EditorStateAdapterProvider,\n HTTPHandler,\n ReducerAdapterProvider,\n TEditorHost,\n normalizeHandlers,\n serializeHandlers,\n useEditorStateAdapter,\n useReducerAdapter,\n} from '../adapter';\n\ninterface IStandaloneProps {\n initialValue?: string | HTTPHandler[];\n onChange?: (newValue: string) => void;\n catalog?: datasources.IEnhancedCatalog | null;\n host?: TEditorHost;\n}\n\nconst Standalone: FC<IStandaloneProps> = ({ initialValue, onChange }) => {\n const adapter = useEditorStateAdapter();\n const handlers = adapter.getHandlers();\n const lastInitialValueRef = useRef(initialValue);\n const serializedHandlers = useMemo(\n () => serializeHandlers(handlers),\n [handlers],\n );\n\n useEffect(() => {\n if (lastInitialValueRef.current === initialValue) {\n return;\n }\n lastInitialValueRef.current = initialValue;\n\n if (initialValue === undefined) {\n return;\n }\n\n try {\n const normalized = normalizeHandlers(initialValue);\n\n if (!isEqual(adapter.getHandlers(), normalized)) {\n adapter.actions.updateHandlers(normalized);\n }\n } catch (e) {\n console.error(\n '[HTTP Handlers Editor Standalone] Error while parsing the initial value:',\n e,\n );\n }\n }, [adapter, initialValue]);\n\n useDidMountEffect(() => {\n if (!onChange) {\n return;\n }\n\n try {\n onChange(serializedHandlers);\n } catch (e) {\n console.error(\n '[HTTP Handlers Editor Standalone] Error on value stringify:',\n e,\n );\n }\n }, [onChange, serializedHandlers]);\n\n return (\n <>\n <div className=\"h-screen bg-grey-900\">\n <HTTPHandlersEditor />\n </div>\n <Modals />\n </>\n );\n};\n\nconst StandaloneWrapper: FC<IStandaloneProps> = (props) => {\n const reducerAdapter = useReducerAdapter();\n\n return (\n <EditorStateAdapterProvider adapter={reducerAdapter}>\n <TipsProvider>\n <Standalone {...props} />\n </TipsProvider>\n </EditorStateAdapterProvider>\n );\n};\n\nconst StandaloneWithReducerAdapter: FC<IStandaloneProps> = ({\n initialValue = [],\n catalog,\n host = 'vscode',\n ...props\n}) => {\n return (\n <ReducerAdapterProvider\n content={initialValue}\n catalog={catalog}\n host={host}\n >\n <StandaloneWrapper {...props} />\n </ReducerAdapterProvider>\n );\n};\n\nexport { StandaloneWithReducerAdapter as Standalone };\n"],"names":["SwitchToEditorIcon","label","Icon","onClick","ToolbarIcon","EditorStateAdapterContext","createContext","EditorStateAdapterProvider","children","adapter","useEditorStateAdapter","useContext","HandlerSchema","z","HandlersSchema","INVALID_JSON_ERROR","normalizeHandlers","rawContent","parsedContent","validationResult","item","asRegex","verbs","verb","generate","serializeHandlers","handlers","_ignored","pattern","regexPattern","handler","rest","_a","isFunction","value","hasLift","source","operate","init","liftedSource","err","extendStatics","d","b","p","__extends","__","__values","o","s","m","i","__read","r","ar","e","error","__spreadArray","to","from","pack","l","createErrorClass","createImpl","_super","instance","ctorFunc","UnsubscriptionError","errors","arrRemove","arr","index","Subscription","initialTeardown","e_1","e_2","_b","_parentage","_parentage_1","_parentage_1_1","parent_1","e_1_1","initialFinalizer","_finalizers","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","teardown","parent","empty","isSubscription","timeoutProvider","timeout","args","_i","handle","reportUnhandledError","noop","Subscriber","destination","_this","EMPTY_OBSERVER","next","complete","SafeSubscriber","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","defaultErrorHandler","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","filter","predicate","thisArg","subscriber","modalSubject","Subject","handlerReducer","state","action","lastEditing","omit","t","id","handlerToDuplicate","found","modal","reason","newState","payload","EditorStateContext","getDefaultInitialState","content","ReducerAdapterProvider","catalog","host","normalizedContent","useMemo","dispatch","useReducer","useEffect","external","jsx","useReducerAdapter","context","useCallback","config","type","ModalType","resolve","subscription","modalsState","confirmed","ModalCloseReason","options","entries","acc","curr","useReduxAdapter","path","initialContent","useAppDispatch","tab","useAppSelector","selectTabByPath","isEqual","selectCatalog","localDispatch","useDidMountEffect","newContent","oldContent","setContent","openModal","editor","switchEditor","useModals","params","$handlerSubject","getDefaultContainer","HTTP_HANDLERS_EDITOR_SCOPE_CLASS","MultipleComboBox","initialSelectedItems","onChange","touched","onBlur","dataCy","getFilteredverbs","selectedItems","inputValue","lowerCasedInputValue","method","setInputValue","useState","setSelectedItems","items","getSelectedItemProps","getDropdownProps","removeSelectedItem","useMultipleSelection","newSelectedItems","isOpen","getToggleButtonProps","getMenuProps","getInputProps","highlightedIndex","getItemProps","selectedItem","useCombobox","actionAndChanges","changes","newInputValue","newSelectedItem","jsxs","cn","selectedItemForRender","FdCloseNaked","FdDown","Select","errorMessage","query","setQuery","notFound","filteredOptions","sgltn","Combobox","open","sngltn","event","Fragment","Transition","FdEmpty","option","active","selected","MethodSelector","exposed","val","FdWarningDanger","GrabHandle","listeners","attributes","FdDragHandle","generateRegexExample","regex","regexExample","RandExp","HandlerEdit","className","setHandler","singletons","singletonMethods","name","newlyCreatedHandlerID","isValid","onConfirm","onCancel","oldHandler","newHandler","ModalColor","useHotkeys","lastEditingID","touchedFields","setTouchedFields","methodErrors","patternErrors","Tooltip","FdInfoCircle","ControlledSwitch","FdDuplicate","FdCheckCircle","FdClose","Handler","isExpanded","setNodeRef","transform","transition","useSortable","style","CSS","editing","patternValue","notFoundSingltonError","exposedError","FdRegex","FdUnRegex","FdPen","FdTrash","Editor","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","activeId","setActiveId","hasHorizontalScroll","setHasHorizontalScroll","scrollContainerRef","useRef","activeItem","checkScroll","hasScroll","resizeObserver","renderAddNewHandlerButton","FdPlus","FdCode","DndContext","closestCenter","over","oldIndex","newIndex","arrayMove","SortableContext","verticalListSortingStrategy","props","DragOverlay","HTTPHandlersEditor","Modals","modals","closeModal","editModal","Modal","Standalone","initialValue","lastInitialValueRef","serializedHandlers","normalized","StandaloneWrapper","reducerAdapter","TipsProvider","StandaloneWithReducerAdapter"],"mappings":"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","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15]}
|