{"version":3,"file":"index.cjs","sources":["../../../node_modules/tslib/tslib.es6.js","../node_modules/@tanstack/query-core/build/modern/subscribable.js","../node_modules/@tanstack/query-core/build/modern/timeoutManager.js","../node_modules/@tanstack/query-core/build/modern/utils.js","../node_modules/@tanstack/query-core/build/modern/focusManager.js","../node_modules/@tanstack/query-core/build/modern/thenable.js","../node_modules/@tanstack/query-core/build/modern/notifyManager.js","../node_modules/@tanstack/query-core/build/modern/onlineManager.js","../node_modules/@tanstack/query-core/build/modern/retryer.js","../node_modules/@tanstack/query-core/build/modern/removable.js","../node_modules/@tanstack/query-core/build/modern/query.js","../node_modules/@tanstack/query-core/build/modern/queryObserver.js","../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../node_modules/@tanstack/query-core/build/modern/mutation.js","../node_modules/@tanstack/query-core/build/modern/mutationCache.js","../node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../node_modules/@tanstack/query-core/build/modern/queryCache.js","../node_modules/@tanstack/query-core/build/modern/queryClient.js","../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../node_modules/@tanstack/react-query/build/modern/suspense.js","../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../node_modules/@tanstack/react-query/build/modern/useQuery.js","../node_modules/@tanstack/react-query/build/modern/useMutation.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/bug.js","../node_modules/lucide-react/dist/esm/icons/camera.js","../node_modules/lucide-react/dist/esm/icons/check.js","../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js","../node_modules/lucide-react/dist/esm/icons/external-link.js","../node_modules/lucide-react/dist/esm/icons/lightbulb.js","../node_modules/lucide-react/dist/esm/icons/map.js","../node_modules/lucide-react/dist/esm/icons/message-circle.js","../node_modules/lucide-react/dist/esm/icons/palette.js","../node_modules/lucide-react/dist/esm/icons/pen-line.js","../node_modules/lucide-react/dist/esm/icons/play.js","../node_modules/lucide-react/dist/esm/icons/redo.js","../node_modules/lucide-react/dist/esm/icons/rotate-cw.js","../node_modules/lucide-react/dist/esm/icons/save.js","../node_modules/lucide-react/dist/esm/icons/square.js","../node_modules/lucide-react/dist/esm/icons/type.js","../node_modules/lucide-react/dist/esm/icons/undo.js","../node_modules/lucide-react/dist/esm/icons/upload.js","../node_modules/lucide-react/dist/esm/icons/x.js","../node_modules/driver.js/dist/driver.js.mjs","../src/tours/TourAnalyticsCollector.ts","../src/tours/TourTriggerManager.ts","../src/tours/TourStyleManager.ts","../src/tours/TourEngine.ts","../src/tours/TourController.tsx","../src/widgetAPI.ts","../src/LeadForwardWidget.tsx","../src/config-utils.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n    function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n    var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n    var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n    var _, done = false;\r\n    for (var i = decorators.length - 1; i >= 0; i--) {\r\n        var context = {};\r\n        for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n        context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n        var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n        if (kind === \"accessor\") {\r\n            if (result === void 0) continue;\r\n            if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n            if (_ = accept(result.get)) descriptor.get = _;\r\n            if (_ = accept(result.set)) descriptor.set = _;\r\n            if (_ = accept(result.init)) initializers.unshift(_);\r\n        }\r\n        else if (_ = accept(result)) {\r\n            if (kind === \"field\") initializers.unshift(_);\r\n            else descriptor[key] = _;\r\n        }\r\n    }\r\n    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n    done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n    var useValue = arguments.length > 2;\r\n    for (var i = 0; i < initializers.length; i++) {\r\n        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n    }\r\n    return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n    return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n    if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n    return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\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);\r\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\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;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\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;\r\n    function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\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]); } }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\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; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n    ownKeys = Object.getOwnPropertyNames || function (o) {\r\n        var ar = [];\r\n        for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n        return ar;\r\n    };\r\n    return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n    if (value !== null && value !== void 0) {\r\n        if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n        var dispose, inner;\r\n        if (async) {\r\n            if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n            dispose = value[Symbol.asyncDispose];\r\n        }\r\n        if (dispose === void 0) {\r\n            if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n            dispose = value[Symbol.dispose];\r\n            if (async) inner = dispose;\r\n        }\r\n        if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n        if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n        env.stack.push({ value: value, dispose: dispose, async: async });\r\n    }\r\n    else if (async) {\r\n        env.stack.push({ async: true });\r\n    }\r\n    return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n    function fail(e) {\r\n        env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n        env.hasError = true;\r\n    }\r\n    var r, s = 0;\r\n    function next() {\r\n        while (r = env.stack.pop()) {\r\n            try {\r\n                if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n                if (r.dispose) {\r\n                    var result = r.dispose.call(r.value);\r\n                    if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n                }\r\n                else s |= 1;\r\n            }\r\n            catch (e) {\r\n                fail(e);\r\n            }\r\n        }\r\n        if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n        if (env.hasError) throw env.error;\r\n    }\r\n    return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n    if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n        return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n            return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n        });\r\n    }\r\n    return path;\r\n}\r\n\r\nexport default {\r\n    __extends: __extends,\r\n    __assign: __assign,\r\n    __rest: __rest,\r\n    __decorate: __decorate,\r\n    __param: __param,\r\n    __esDecorate: __esDecorate,\r\n    __runInitializers: __runInitializers,\r\n    __propKey: __propKey,\r\n    __setFunctionName: __setFunctionName,\r\n    __metadata: __metadata,\r\n    __awaiter: __awaiter,\r\n    __generator: __generator,\r\n    __createBinding: __createBinding,\r\n    __exportStar: __exportStar,\r\n    __values: __values,\r\n    __read: __read,\r\n    __spread: __spread,\r\n    __spreadArrays: __spreadArrays,\r\n    __spreadArray: __spreadArray,\r\n    __await: __await,\r\n    __asyncGenerator: __asyncGenerator,\r\n    __asyncDelegator: __asyncDelegator,\r\n    __asyncValues: __asyncValues,\r\n    __makeTemplateObject: __makeTemplateObject,\r\n    __importStar: __importStar,\r\n    __importDefault: __importDefault,\r\n    __classPrivateFieldGet: __classPrivateFieldGet,\r\n    __classPrivateFieldSet: __classPrivateFieldSet,\r\n    __classPrivateFieldIn: __classPrivateFieldIn,\r\n    __addDisposableResource: __addDisposableResource,\r\n    __disposeResources: __disposeResources,\r\n    __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","// src/subscribable.ts\nvar Subscribable = class {\n  constructor() {\n    this.listeners = /* @__PURE__ */ new Set();\n    this.subscribe = this.subscribe.bind(this);\n  }\n  subscribe(listener) {\n    this.listeners.add(listener);\n    this.onSubscribe();\n    return () => {\n      this.listeners.delete(listener);\n      this.onUnsubscribe();\n    };\n  }\n  hasListeners() {\n    return this.listeners.size > 0;\n  }\n  onSubscribe() {\n  }\n  onUnsubscribe() {\n  }\n};\nexport {\n  Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/timeoutManager.ts\nvar defaultTimeoutProvider = {\n  // We need the wrapper function syntax below instead of direct references to\n  // global setTimeout etc.\n  //\n  // BAD: `setTimeout: setTimeout`\n  // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`\n  //\n  // If we use direct references here, then anything that wants to spy on or\n  // replace the global setTimeout (like tests) won't work since we'll already\n  // have a hard reference to the original implementation at the time when this\n  // file was imported.\n  setTimeout: (callback, delay) => setTimeout(callback, delay),\n  clearTimeout: (timeoutId) => clearTimeout(timeoutId),\n  setInterval: (callback, delay) => setInterval(callback, delay),\n  clearInterval: (intervalId) => clearInterval(intervalId)\n};\nvar TimeoutManager = class {\n  // We cannot have TimeoutManager<T> as we must instantiate it with a concrete\n  // type at app boot; and if we leave that type, then any new timer provider\n  // would need to support ReturnType<typeof setTimeout>, which is infeasible.\n  //\n  // We settle for type safety for the TimeoutProvider type, and accept that\n  // this class is unsafe internally to allow for extension.\n  #provider = defaultTimeoutProvider;\n  #providerCalled = false;\n  setTimeoutProvider(provider) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (this.#providerCalled && provider !== this.#provider) {\n        console.error(\n          `[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`,\n          { previous: this.#provider, provider }\n        );\n      }\n    }\n    this.#provider = provider;\n    if (process.env.NODE_ENV !== \"production\") {\n      this.#providerCalled = false;\n    }\n  }\n  setTimeout(callback, delay) {\n    if (process.env.NODE_ENV !== \"production\") {\n      this.#providerCalled = true;\n    }\n    return this.#provider.setTimeout(callback, delay);\n  }\n  clearTimeout(timeoutId) {\n    this.#provider.clearTimeout(timeoutId);\n  }\n  setInterval(callback, delay) {\n    if (process.env.NODE_ENV !== \"production\") {\n      this.#providerCalled = true;\n    }\n    return this.#provider.setInterval(callback, delay);\n  }\n  clearInterval(intervalId) {\n    this.#provider.clearInterval(intervalId);\n  }\n};\nvar timeoutManager = new TimeoutManager();\nfunction systemSetTimeoutZero(callback) {\n  setTimeout(callback, 0);\n}\nexport {\n  TimeoutManager,\n  defaultTimeoutProvider,\n  systemSetTimeoutZero,\n  timeoutManager\n};\n//# sourceMappingURL=timeoutManager.js.map","// src/utils.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n}\nfunction functionalUpdate(updater, input) {\n  return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n  return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n  return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n  return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveEnabled(enabled, query) {\n  return typeof enabled === \"function\" ? enabled(query) : enabled;\n}\nfunction matchQuery(filters, query) {\n  const {\n    type = \"all\",\n    exact,\n    fetchStatus,\n    predicate,\n    queryKey,\n    stale\n  } = filters;\n  if (queryKey) {\n    if (exact) {\n      if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n        return false;\n      }\n    } else if (!partialMatchKey(query.queryKey, queryKey)) {\n      return false;\n    }\n  }\n  if (type !== \"all\") {\n    const isActive = query.isActive();\n    if (type === \"active\" && !isActive) {\n      return false;\n    }\n    if (type === \"inactive\" && isActive) {\n      return false;\n    }\n  }\n  if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n    return false;\n  }\n  if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n    return false;\n  }\n  if (predicate && !predicate(query)) {\n    return false;\n  }\n  return true;\n}\nfunction matchMutation(filters, mutation) {\n  const { exact, status, predicate, mutationKey } = filters;\n  if (mutationKey) {\n    if (!mutation.options.mutationKey) {\n      return false;\n    }\n    if (exact) {\n      if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n        return false;\n      }\n    } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n      return false;\n    }\n  }\n  if (status && mutation.state.status !== status) {\n    return false;\n  }\n  if (predicate && !predicate(mutation)) {\n    return false;\n  }\n  return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n  const hashFn = options?.queryKeyHashFn || hashKey;\n  return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n  return JSON.stringify(\n    queryKey,\n    (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n      result[key] = val[key];\n      return result;\n    }, {}) : val\n  );\n}\nfunction partialMatchKey(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n    return Object.keys(b).every((key) => partialMatchKey(a[key], b[key]));\n  }\n  return false;\n}\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction replaceEqualDeep(a, b) {\n  if (a === b) {\n    return a;\n  }\n  const array = isPlainArray(a) && isPlainArray(b);\n  if (!array && !(isPlainObject(a) && isPlainObject(b))) return b;\n  const aItems = array ? a : Object.keys(a);\n  const aSize = aItems.length;\n  const bItems = array ? b : Object.keys(b);\n  const bSize = bItems.length;\n  const copy = array ? new Array(bSize) : {};\n  let equalItems = 0;\n  for (let i = 0; i < bSize; i++) {\n    const key = array ? i : bItems[i];\n    const aItem = a[key];\n    const bItem = b[key];\n    if (aItem === bItem) {\n      copy[key] = aItem;\n      if (array ? i < aSize : hasOwn.call(a, key)) equalItems++;\n      continue;\n    }\n    if (aItem === null || bItem === null || typeof aItem !== \"object\" || typeof bItem !== \"object\") {\n      copy[key] = bItem;\n      continue;\n    }\n    const v = replaceEqualDeep(aItem, bItem);\n    copy[key] = v;\n    if (v === aItem) equalItems++;\n  }\n  return aSize === bSize && equalItems === aSize ? a : copy;\n}\nfunction shallowEqualObjects(a, b) {\n  if (!b || Object.keys(a).length !== Object.keys(b).length) {\n    return false;\n  }\n  for (const key in a) {\n    if (a[key] !== b[key]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction isPlainArray(value) {\n  return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n  if (!hasObjectPrototype(o)) {\n    return false;\n  }\n  const ctor = o.constructor;\n  if (ctor === void 0) {\n    return true;\n  }\n  const prot = ctor.prototype;\n  if (!hasObjectPrototype(prot)) {\n    return false;\n  }\n  if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n    return false;\n  }\n  if (Object.getPrototypeOf(o) !== Object.prototype) {\n    return false;\n  }\n  return true;\n}\nfunction hasObjectPrototype(o) {\n  return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n  return new Promise((resolve) => {\n    timeoutManager.setTimeout(resolve, timeout);\n  });\n}\nfunction replaceData(prevData, data, options) {\n  if (typeof options.structuralSharing === \"function\") {\n    return options.structuralSharing(prevData, data);\n  } else if (options.structuralSharing !== false) {\n    if (process.env.NODE_ENV !== \"production\") {\n      try {\n        return replaceEqualDeep(prevData, data);\n      } catch (error) {\n        console.error(\n          `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n        );\n        throw error;\n      }\n    }\n    return replaceEqualDeep(prevData, data);\n  }\n  return data;\n}\nfunction keepPreviousData(previousData) {\n  return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n  const newItems = [...items, item];\n  return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n  const newItems = [item, ...items];\n  return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (options.queryFn === skipToken) {\n      console.error(\n        `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n      );\n    }\n  }\n  if (!options.queryFn && fetchOptions?.initialPromise) {\n    return () => fetchOptions.initialPromise;\n  }\n  if (!options.queryFn || options.queryFn === skipToken) {\n    return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n  }\n  return options.queryFn;\n}\nfunction shouldThrowError(throwOnError, params) {\n  if (typeof throwOnError === \"function\") {\n    return throwOnError(...params);\n  }\n  return !!throwOnError;\n}\nexport {\n  addToEnd,\n  addToStart,\n  ensureQueryFn,\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  isPlainArray,\n  isPlainObject,\n  isServer,\n  isValidTimeout,\n  keepPreviousData,\n  matchMutation,\n  matchQuery,\n  noop,\n  partialMatchKey,\n  replaceData,\n  replaceEqualDeep,\n  resolveEnabled,\n  resolveStaleTime,\n  shallowEqualObjects,\n  shouldThrowError,\n  skipToken,\n  sleep,\n  timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n  #focused;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onFocus) => {\n      if (!isServer && window.addEventListener) {\n        const listener = () => onFocus();\n        window.addEventListener(\"visibilitychange\", listener, false);\n        return () => {\n          window.removeEventListener(\"visibilitychange\", listener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup((focused) => {\n      if (typeof focused === \"boolean\") {\n        this.setFocused(focused);\n      } else {\n        this.onFocus();\n      }\n    });\n  }\n  setFocused(focused) {\n    const changed = this.#focused !== focused;\n    if (changed) {\n      this.#focused = focused;\n      this.onFocus();\n    }\n  }\n  onFocus() {\n    const isFocused = this.isFocused();\n    this.listeners.forEach((listener) => {\n      listener(isFocused);\n    });\n  }\n  isFocused() {\n    if (typeof this.#focused === \"boolean\") {\n      return this.#focused;\n    }\n    return globalThis.document?.visibilityState !== \"hidden\";\n  }\n};\nvar focusManager = new FocusManager();\nexport {\n  FocusManager,\n  focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/thenable.ts\nimport { noop } from \"./utils.js\";\nfunction pendingThenable() {\n  let resolve;\n  let reject;\n  const thenable = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n  thenable.status = \"pending\";\n  thenable.catch(() => {\n  });\n  function finalize(data) {\n    Object.assign(thenable, data);\n    delete thenable.resolve;\n    delete thenable.reject;\n  }\n  thenable.resolve = (value) => {\n    finalize({\n      status: \"fulfilled\",\n      value\n    });\n    resolve(value);\n  };\n  thenable.reject = (reason) => {\n    finalize({\n      status: \"rejected\",\n      reason\n    });\n    reject(reason);\n  };\n  return thenable;\n}\nfunction tryResolveSync(promise) {\n  let data;\n  promise.then((result) => {\n    data = result;\n    return result;\n  }, noop)?.catch(noop);\n  if (data !== void 0) {\n    return { data };\n  }\n  return void 0;\n}\nexport {\n  pendingThenable,\n  tryResolveSync\n};\n//# sourceMappingURL=thenable.js.map","// src/notifyManager.ts\nimport { systemSetTimeoutZero } from \"./timeoutManager.js\";\nvar defaultScheduler = systemSetTimeoutZero;\nfunction createNotifyManager() {\n  let queue = [];\n  let transactions = 0;\n  let notifyFn = (callback) => {\n    callback();\n  };\n  let batchNotifyFn = (callback) => {\n    callback();\n  };\n  let scheduleFn = defaultScheduler;\n  const schedule = (callback) => {\n    if (transactions) {\n      queue.push(callback);\n    } else {\n      scheduleFn(() => {\n        notifyFn(callback);\n      });\n    }\n  };\n  const flush = () => {\n    const originalQueue = queue;\n    queue = [];\n    if (originalQueue.length) {\n      scheduleFn(() => {\n        batchNotifyFn(() => {\n          originalQueue.forEach((callback) => {\n            notifyFn(callback);\n          });\n        });\n      });\n    }\n  };\n  return {\n    batch: (callback) => {\n      let result;\n      transactions++;\n      try {\n        result = callback();\n      } finally {\n        transactions--;\n        if (!transactions) {\n          flush();\n        }\n      }\n      return result;\n    },\n    /**\n     * All calls to the wrapped function will be batched.\n     */\n    batchCalls: (callback) => {\n      return (...args) => {\n        schedule(() => {\n          callback(...args);\n        });\n      };\n    },\n    schedule,\n    /**\n     * Use this method to set a custom notify function.\n     * This can be used to for example wrap notifications with `React.act` while running tests.\n     */\n    setNotifyFunction: (fn) => {\n      notifyFn = fn;\n    },\n    /**\n     * Use this method to set a custom function to batch notifications together into a single tick.\n     * By default React Query will use the batch function provided by ReactDOM or React Native.\n     */\n    setBatchNotifyFunction: (fn) => {\n      batchNotifyFn = fn;\n    },\n    setScheduler: (fn) => {\n      scheduleFn = fn;\n    }\n  };\n}\nvar notifyManager = createNotifyManager();\nexport {\n  createNotifyManager,\n  defaultScheduler,\n  notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n  #online = true;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onOnline) => {\n      if (!isServer && window.addEventListener) {\n        const onlineListener = () => onOnline(true);\n        const offlineListener = () => onOnline(false);\n        window.addEventListener(\"online\", onlineListener, false);\n        window.addEventListener(\"offline\", offlineListener, false);\n        return () => {\n          window.removeEventListener(\"online\", onlineListener);\n          window.removeEventListener(\"offline\", offlineListener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup(this.setOnline.bind(this));\n  }\n  setOnline(online) {\n    const changed = this.#online !== online;\n    if (changed) {\n      this.#online = online;\n      this.listeners.forEach((listener) => {\n        listener(online);\n      });\n    }\n  }\n  isOnline() {\n    return this.#online;\n  }\n};\nvar onlineManager = new OnlineManager();\nexport {\n  OnlineManager,\n  onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport { isServer, sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n  return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n  return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n  constructor(options) {\n    super(\"CancelledError\");\n    this.revert = options?.revert;\n    this.silent = options?.silent;\n  }\n};\nfunction isCancelledError(value) {\n  return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n  let isRetryCancelled = false;\n  let failureCount = 0;\n  let continueFn;\n  const thenable = pendingThenable();\n  const isResolved = () => thenable.status !== \"pending\";\n  const cancel = (cancelOptions) => {\n    if (!isResolved()) {\n      const error = new CancelledError(cancelOptions);\n      reject(error);\n      config.onCancel?.(error);\n    }\n  };\n  const cancelRetry = () => {\n    isRetryCancelled = true;\n  };\n  const continueRetry = () => {\n    isRetryCancelled = false;\n  };\n  const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n  const canStart = () => canFetch(config.networkMode) && config.canRun();\n  const resolve = (value) => {\n    if (!isResolved()) {\n      continueFn?.();\n      thenable.resolve(value);\n    }\n  };\n  const reject = (value) => {\n    if (!isResolved()) {\n      continueFn?.();\n      thenable.reject(value);\n    }\n  };\n  const pause = () => {\n    return new Promise((continueResolve) => {\n      continueFn = (value) => {\n        if (isResolved() || canContinue()) {\n          continueResolve(value);\n        }\n      };\n      config.onPause?.();\n    }).then(() => {\n      continueFn = void 0;\n      if (!isResolved()) {\n        config.onContinue?.();\n      }\n    });\n  };\n  const run = () => {\n    if (isResolved()) {\n      return;\n    }\n    let promiseOrValue;\n    const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n    try {\n      promiseOrValue = initialPromise ?? config.fn();\n    } catch (error) {\n      promiseOrValue = Promise.reject(error);\n    }\n    Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n      if (isResolved()) {\n        return;\n      }\n      const retry = config.retry ?? (isServer ? 0 : 3);\n      const retryDelay = config.retryDelay ?? defaultRetryDelay;\n      const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n      const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n      if (isRetryCancelled || !shouldRetry) {\n        reject(error);\n        return;\n      }\n      failureCount++;\n      config.onFail?.(failureCount, error);\n      sleep(delay).then(() => {\n        return canContinue() ? void 0 : pause();\n      }).then(() => {\n        if (isRetryCancelled) {\n          reject(error);\n        } else {\n          run();\n        }\n      });\n    });\n  };\n  return {\n    promise: thenable,\n    status: () => thenable.status,\n    cancel,\n    continue: () => {\n      continueFn?.();\n      return thenable;\n    },\n    cancelRetry,\n    continueRetry,\n    canStart,\n    start: () => {\n      if (canStart()) {\n        run();\n      } else {\n        pause().then(run);\n      }\n      return thenable;\n    }\n  };\n}\nexport {\n  CancelledError,\n  canFetch,\n  createRetryer,\n  isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/removable.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nimport { isServer, isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n  #gcTimeout;\n  destroy() {\n    this.clearGcTimeout();\n  }\n  scheduleGc() {\n    this.clearGcTimeout();\n    if (isValidTimeout(this.gcTime)) {\n      this.#gcTimeout = timeoutManager.setTimeout(() => {\n        this.optionalRemove();\n      }, this.gcTime);\n    }\n  }\n  updateGcTime(newGcTime) {\n    this.gcTime = Math.max(\n      this.gcTime || 0,\n      newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n    );\n  }\n  clearGcTimeout() {\n    if (this.#gcTimeout) {\n      timeoutManager.clearTimeout(this.#gcTimeout);\n      this.#gcTimeout = void 0;\n    }\n  }\n};\nexport {\n  Removable\n};\n//# sourceMappingURL=removable.js.map","// src/query.ts\nimport {\n  ensureQueryFn,\n  noop,\n  replaceData,\n  resolveEnabled,\n  resolveStaleTime,\n  skipToken,\n  timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { CancelledError, canFetch, createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n  #initialState;\n  #revertState;\n  #cache;\n  #client;\n  #retryer;\n  #defaultOptions;\n  #abortSignalConsumed;\n  constructor(config) {\n    super();\n    this.#abortSignalConsumed = false;\n    this.#defaultOptions = config.defaultOptions;\n    this.setOptions(config.options);\n    this.observers = [];\n    this.#client = config.client;\n    this.#cache = this.#client.getQueryCache();\n    this.queryKey = config.queryKey;\n    this.queryHash = config.queryHash;\n    this.#initialState = getDefaultState(this.options);\n    this.state = config.state ?? this.#initialState;\n    this.scheduleGc();\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  get promise() {\n    return this.#retryer?.promise;\n  }\n  setOptions(options) {\n    this.options = { ...this.#defaultOptions, ...options };\n    this.updateGcTime(this.options.gcTime);\n    if (this.state && this.state.data === void 0) {\n      const defaultState = getDefaultState(this.options);\n      if (defaultState.data !== void 0) {\n        this.setData(defaultState.data, {\n          updatedAt: defaultState.dataUpdatedAt,\n          manual: true\n        });\n        this.#initialState = defaultState;\n      }\n    }\n  }\n  optionalRemove() {\n    if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n      this.#cache.remove(this);\n    }\n  }\n  setData(newData, options) {\n    const data = replaceData(this.state.data, newData, this.options);\n    this.#dispatch({\n      data,\n      type: \"success\",\n      dataUpdatedAt: options?.updatedAt,\n      manual: options?.manual\n    });\n    return data;\n  }\n  setState(state, setStateOptions) {\n    this.#dispatch({ type: \"setState\", state, setStateOptions });\n  }\n  cancel(options) {\n    const promise = this.#retryer?.promise;\n    this.#retryer?.cancel(options);\n    return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n  }\n  destroy() {\n    super.destroy();\n    this.cancel({ silent: true });\n  }\n  reset() {\n    this.destroy();\n    this.setState(this.#initialState);\n  }\n  isActive() {\n    return this.observers.some(\n      (observer) => resolveEnabled(observer.options.enabled, this) !== false\n    );\n  }\n  isDisabled() {\n    if (this.getObserversCount() > 0) {\n      return !this.isActive();\n    }\n    return this.options.queryFn === skipToken || this.state.dataUpdateCount + this.state.errorUpdateCount === 0;\n  }\n  isStatic() {\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => resolveStaleTime(observer.options.staleTime, this) === \"static\"\n      );\n    }\n    return false;\n  }\n  isStale() {\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => observer.getCurrentResult().isStale\n      );\n    }\n    return this.state.data === void 0 || this.state.isInvalidated;\n  }\n  isStaleByTime(staleTime = 0) {\n    if (this.state.data === void 0) {\n      return true;\n    }\n    if (staleTime === \"static\") {\n      return false;\n    }\n    if (this.state.isInvalidated) {\n      return true;\n    }\n    return !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n  }\n  onFocus() {\n    const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  onOnline() {\n    const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  addObserver(observer) {\n    if (!this.observers.includes(observer)) {\n      this.observers.push(observer);\n      this.clearGcTimeout();\n      this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n    }\n  }\n  removeObserver(observer) {\n    if (this.observers.includes(observer)) {\n      this.observers = this.observers.filter((x) => x !== observer);\n      if (!this.observers.length) {\n        if (this.#retryer) {\n          if (this.#abortSignalConsumed) {\n            this.#retryer.cancel({ revert: true });\n          } else {\n            this.#retryer.cancelRetry();\n          }\n        }\n        this.scheduleGc();\n      }\n      this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n    }\n  }\n  getObserversCount() {\n    return this.observers.length;\n  }\n  invalidate() {\n    if (!this.state.isInvalidated) {\n      this.#dispatch({ type: \"invalidate\" });\n    }\n  }\n  async fetch(options, fetchOptions) {\n    if (this.state.fetchStatus !== \"idle\" && // If the promise in the retyer is already rejected, we have to definitely\n    // re-start the fetch; there is a chance that the query is still in a\n    // pending state when that happens\n    this.#retryer?.status() !== \"rejected\") {\n      if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n        this.cancel({ silent: true });\n      } else if (this.#retryer) {\n        this.#retryer.continueRetry();\n        return this.#retryer.promise;\n      }\n    }\n    if (options) {\n      this.setOptions(options);\n    }\n    if (!this.options.queryFn) {\n      const observer = this.observers.find((x) => x.options.queryFn);\n      if (observer) {\n        this.setOptions(observer.options);\n      }\n    }\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!Array.isArray(this.options.queryKey)) {\n        console.error(\n          `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n        );\n      }\n    }\n    const abortController = new AbortController();\n    const addSignalProperty = (object) => {\n      Object.defineProperty(object, \"signal\", {\n        enumerable: true,\n        get: () => {\n          this.#abortSignalConsumed = true;\n          return abortController.signal;\n        }\n      });\n    };\n    const fetchFn = () => {\n      const queryFn = ensureQueryFn(this.options, fetchOptions);\n      const createQueryFnContext = () => {\n        const queryFnContext2 = {\n          client: this.#client,\n          queryKey: this.queryKey,\n          meta: this.meta\n        };\n        addSignalProperty(queryFnContext2);\n        return queryFnContext2;\n      };\n      const queryFnContext = createQueryFnContext();\n      this.#abortSignalConsumed = false;\n      if (this.options.persister) {\n        return this.options.persister(\n          queryFn,\n          queryFnContext,\n          this\n        );\n      }\n      return queryFn(queryFnContext);\n    };\n    const createFetchContext = () => {\n      const context2 = {\n        fetchOptions,\n        options: this.options,\n        queryKey: this.queryKey,\n        client: this.#client,\n        state: this.state,\n        fetchFn\n      };\n      addSignalProperty(context2);\n      return context2;\n    };\n    const context = createFetchContext();\n    this.options.behavior?.onFetch(context, this);\n    this.#revertState = this.state;\n    if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n      this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n    }\n    this.#retryer = createRetryer({\n      initialPromise: fetchOptions?.initialPromise,\n      fn: context.fetchFn,\n      onCancel: (error) => {\n        if (error instanceof CancelledError && error.revert) {\n          this.setState({\n            ...this.#revertState,\n            fetchStatus: \"idle\"\n          });\n        }\n        abortController.abort();\n      },\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue: () => {\n        this.#dispatch({ type: \"continue\" });\n      },\n      retry: context.options.retry,\n      retryDelay: context.options.retryDelay,\n      networkMode: context.options.networkMode,\n      canRun: () => true\n    });\n    try {\n      const data = await this.#retryer.start();\n      if (data === void 0) {\n        if (process.env.NODE_ENV !== \"production\") {\n          console.error(\n            `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n          );\n        }\n        throw new Error(`${this.queryHash} data is undefined`);\n      }\n      this.setData(data);\n      this.#cache.config.onSuccess?.(data, this);\n      this.#cache.config.onSettled?.(\n        data,\n        this.state.error,\n        this\n      );\n      return data;\n    } catch (error) {\n      if (error instanceof CancelledError) {\n        if (error.silent) {\n          return this.#retryer.promise;\n        } else if (error.revert) {\n          if (this.state.data === void 0) {\n            throw error;\n          }\n          return this.state.data;\n        }\n      }\n      this.#dispatch({\n        type: \"error\",\n        error\n      });\n      this.#cache.config.onError?.(\n        error,\n        this\n      );\n      this.#cache.config.onSettled?.(\n        this.state.data,\n        error,\n        this\n      );\n      throw error;\n    } finally {\n      this.scheduleGc();\n    }\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            fetchFailureCount: action.failureCount,\n            fetchFailureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            fetchStatus: \"paused\"\n          };\n        case \"continue\":\n          return {\n            ...state,\n            fetchStatus: \"fetching\"\n          };\n        case \"fetch\":\n          return {\n            ...state,\n            ...fetchState(state.data, this.options),\n            fetchMeta: action.meta ?? null\n          };\n        case \"success\":\n          const newState = {\n            ...state,\n            data: action.data,\n            dataUpdateCount: state.dataUpdateCount + 1,\n            dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n            error: null,\n            isInvalidated: false,\n            status: \"success\",\n            ...!action.manual && {\n              fetchStatus: \"idle\",\n              fetchFailureCount: 0,\n              fetchFailureReason: null\n            }\n          };\n          this.#revertState = action.manual ? newState : void 0;\n          return newState;\n        case \"error\":\n          const error = action.error;\n          return {\n            ...state,\n            error,\n            errorUpdateCount: state.errorUpdateCount + 1,\n            errorUpdatedAt: Date.now(),\n            fetchFailureCount: state.fetchFailureCount + 1,\n            fetchFailureReason: error,\n            fetchStatus: \"idle\",\n            status: \"error\"\n          };\n        case \"invalidate\":\n          return {\n            ...state,\n            isInvalidated: true\n          };\n        case \"setState\":\n          return {\n            ...state,\n            ...action.state\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.observers.forEach((observer) => {\n        observer.onQueryUpdate();\n      });\n      this.#cache.notify({ query: this, type: \"updated\", action });\n    });\n  }\n};\nfunction fetchState(data, options) {\n  return {\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n    ...data === void 0 && {\n      error: null,\n      status: \"pending\"\n    }\n  };\n}\nfunction getDefaultState(options) {\n  const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n  const hasData = data !== void 0;\n  const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n  return {\n    data,\n    dataUpdateCount: 0,\n    dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n    error: null,\n    errorUpdateCount: 0,\n    errorUpdatedAt: 0,\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchMeta: null,\n    isInvalidated: false,\n    status: hasData ? \"success\" : \"pending\",\n    fetchStatus: \"idle\"\n  };\n}\nexport {\n  Query,\n  fetchState\n};\n//# sourceMappingURL=query.js.map","// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n  isServer,\n  isValidTimeout,\n  noop,\n  replaceData,\n  resolveEnabled,\n  resolveStaleTime,\n  shallowEqualObjects,\n  timeUntilStale\n} from \"./utils.js\";\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar QueryObserver = class extends Subscribable {\n  constructor(client, options) {\n    super();\n    this.options = options;\n    this.#client = client;\n    this.#selectError = null;\n    this.#currentThenable = pendingThenable();\n    this.bindMethods();\n    this.setOptions(options);\n  }\n  #client;\n  #currentQuery = void 0;\n  #currentQueryInitialState = void 0;\n  #currentResult = void 0;\n  #currentResultState;\n  #currentResultOptions;\n  #currentThenable;\n  #selectError;\n  #selectFn;\n  #selectResult;\n  // This property keeps track of the last query with defined data.\n  // It will be used to pass the previous data and query to the placeholder function between renders.\n  #lastQueryWithDefinedData;\n  #staleTimeoutId;\n  #refetchIntervalId;\n  #currentRefetchInterval;\n  #trackedProps = /* @__PURE__ */ new Set();\n  bindMethods() {\n    this.refetch = this.refetch.bind(this);\n  }\n  onSubscribe() {\n    if (this.listeners.size === 1) {\n      this.#currentQuery.addObserver(this);\n      if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n        this.#executeFetch();\n      } else {\n        this.updateResult();\n      }\n      this.#updateTimers();\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.destroy();\n    }\n  }\n  shouldFetchOnReconnect() {\n    return shouldFetchOn(\n      this.#currentQuery,\n      this.options,\n      this.options.refetchOnReconnect\n    );\n  }\n  shouldFetchOnWindowFocus() {\n    return shouldFetchOn(\n      this.#currentQuery,\n      this.options,\n      this.options.refetchOnWindowFocus\n    );\n  }\n  destroy() {\n    this.listeners = /* @__PURE__ */ new Set();\n    this.#clearStaleTimeout();\n    this.#clearRefetchInterval();\n    this.#currentQuery.removeObserver(this);\n  }\n  setOptions(options) {\n    const prevOptions = this.options;\n    const prevQuery = this.#currentQuery;\n    this.options = this.#client.defaultQueryOptions(options);\n    if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveEnabled(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n      throw new Error(\n        \"Expected enabled to be a boolean or a callback that returns a boolean\"\n      );\n    }\n    this.#updateQuery();\n    this.#currentQuery.setOptions(this.options);\n    if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n      this.#client.getQueryCache().notify({\n        type: \"observerOptionsUpdated\",\n        query: this.#currentQuery,\n        observer: this\n      });\n    }\n    const mounted = this.hasListeners();\n    if (mounted && shouldFetchOptionally(\n      this.#currentQuery,\n      prevQuery,\n      this.options,\n      prevOptions\n    )) {\n      this.#executeFetch();\n    }\n    this.updateResult();\n    if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n      this.#updateStaleTimeout();\n    }\n    const nextRefetchInterval = this.#computeRefetchInterval();\n    if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n      this.#updateRefetchInterval(nextRefetchInterval);\n    }\n  }\n  getOptimisticResult(options) {\n    const query = this.#client.getQueryCache().build(this.#client, options);\n    const result = this.createResult(query, options);\n    if (shouldAssignObserverCurrentProperties(this, result)) {\n      this.#currentResult = result;\n      this.#currentResultOptions = this.options;\n      this.#currentResultState = this.#currentQuery.state;\n    }\n    return result;\n  }\n  getCurrentResult() {\n    return this.#currentResult;\n  }\n  trackResult(result, onPropTracked) {\n    return new Proxy(result, {\n      get: (target, key) => {\n        this.trackProp(key);\n        onPropTracked?.(key);\n        if (key === \"promise\" && !this.options.experimental_prefetchInRender && this.#currentThenable.status === \"pending\") {\n          this.#currentThenable.reject(\n            new Error(\n              \"experimental_prefetchInRender feature flag is not enabled\"\n            )\n          );\n        }\n        return Reflect.get(target, key);\n      }\n    });\n  }\n  trackProp(key) {\n    this.#trackedProps.add(key);\n  }\n  getCurrentQuery() {\n    return this.#currentQuery;\n  }\n  refetch({ ...options } = {}) {\n    return this.fetch({\n      ...options\n    });\n  }\n  fetchOptimistic(options) {\n    const defaultedOptions = this.#client.defaultQueryOptions(options);\n    const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n    return query.fetch().then(() => this.createResult(query, defaultedOptions));\n  }\n  fetch(fetchOptions) {\n    return this.#executeFetch({\n      ...fetchOptions,\n      cancelRefetch: fetchOptions.cancelRefetch ?? true\n    }).then(() => {\n      this.updateResult();\n      return this.#currentResult;\n    });\n  }\n  #executeFetch(fetchOptions) {\n    this.#updateQuery();\n    let promise = this.#currentQuery.fetch(\n      this.options,\n      fetchOptions\n    );\n    if (!fetchOptions?.throwOnError) {\n      promise = promise.catch(noop);\n    }\n    return promise;\n  }\n  #updateStaleTimeout() {\n    this.#clearStaleTimeout();\n    const staleTime = resolveStaleTime(\n      this.options.staleTime,\n      this.#currentQuery\n    );\n    if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n      return;\n    }\n    const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n    const timeout = time + 1;\n    this.#staleTimeoutId = timeoutManager.setTimeout(() => {\n      if (!this.#currentResult.isStale) {\n        this.updateResult();\n      }\n    }, timeout);\n  }\n  #computeRefetchInterval() {\n    return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n  }\n  #updateRefetchInterval(nextInterval) {\n    this.#clearRefetchInterval();\n    this.#currentRefetchInterval = nextInterval;\n    if (isServer || resolveEnabled(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n      return;\n    }\n    this.#refetchIntervalId = timeoutManager.setInterval(() => {\n      if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n        this.#executeFetch();\n      }\n    }, this.#currentRefetchInterval);\n  }\n  #updateTimers() {\n    this.#updateStaleTimeout();\n    this.#updateRefetchInterval(this.#computeRefetchInterval());\n  }\n  #clearStaleTimeout() {\n    if (this.#staleTimeoutId) {\n      timeoutManager.clearTimeout(this.#staleTimeoutId);\n      this.#staleTimeoutId = void 0;\n    }\n  }\n  #clearRefetchInterval() {\n    if (this.#refetchIntervalId) {\n      timeoutManager.clearInterval(this.#refetchIntervalId);\n      this.#refetchIntervalId = void 0;\n    }\n  }\n  createResult(query, options) {\n    const prevQuery = this.#currentQuery;\n    const prevOptions = this.options;\n    const prevResult = this.#currentResult;\n    const prevResultState = this.#currentResultState;\n    const prevResultOptions = this.#currentResultOptions;\n    const queryChange = query !== prevQuery;\n    const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n    const { state } = query;\n    let newState = { ...state };\n    let isPlaceholderData = false;\n    let data;\n    if (options._optimisticResults) {\n      const mounted = this.hasListeners();\n      const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n      const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n      if (fetchOnMount || fetchOptionally) {\n        newState = {\n          ...newState,\n          ...fetchState(state.data, query.options)\n        };\n      }\n      if (options._optimisticResults === \"isRestoring\") {\n        newState.fetchStatus = \"idle\";\n      }\n    }\n    let { error, errorUpdatedAt, status } = newState;\n    data = newState.data;\n    let skipSelect = false;\n    if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n      let placeholderData;\n      if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n        placeholderData = prevResult.data;\n        skipSelect = true;\n      } else {\n        placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n          this.#lastQueryWithDefinedData?.state.data,\n          this.#lastQueryWithDefinedData\n        ) : options.placeholderData;\n      }\n      if (placeholderData !== void 0) {\n        status = \"success\";\n        data = replaceData(\n          prevResult?.data,\n          placeholderData,\n          options\n        );\n        isPlaceholderData = true;\n      }\n    }\n    if (options.select && data !== void 0 && !skipSelect) {\n      if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) {\n        data = this.#selectResult;\n      } else {\n        try {\n          this.#selectFn = options.select;\n          data = options.select(data);\n          data = replaceData(prevResult?.data, data, options);\n          this.#selectResult = data;\n          this.#selectError = null;\n        } catch (selectError) {\n          this.#selectError = selectError;\n        }\n      }\n    }\n    if (this.#selectError) {\n      error = this.#selectError;\n      data = this.#selectResult;\n      errorUpdatedAt = Date.now();\n      status = \"error\";\n    }\n    const isFetching = newState.fetchStatus === \"fetching\";\n    const isPending = status === \"pending\";\n    const isError = status === \"error\";\n    const isLoading = isPending && isFetching;\n    const hasData = data !== void 0;\n    const result = {\n      status,\n      fetchStatus: newState.fetchStatus,\n      isPending,\n      isSuccess: status === \"success\",\n      isError,\n      isInitialLoading: isLoading,\n      isLoading,\n      data,\n      dataUpdatedAt: newState.dataUpdatedAt,\n      error,\n      errorUpdatedAt,\n      failureCount: newState.fetchFailureCount,\n      failureReason: newState.fetchFailureReason,\n      errorUpdateCount: newState.errorUpdateCount,\n      isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n      isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n      isFetching,\n      isRefetching: isFetching && !isPending,\n      isLoadingError: isError && !hasData,\n      isPaused: newState.fetchStatus === \"paused\",\n      isPlaceholderData,\n      isRefetchError: isError && hasData,\n      isStale: isStale(query, options),\n      refetch: this.refetch,\n      promise: this.#currentThenable,\n      isEnabled: resolveEnabled(options.enabled, query) !== false\n    };\n    const nextResult = result;\n    if (this.options.experimental_prefetchInRender) {\n      const finalizeThenableIfPossible = (thenable) => {\n        if (nextResult.status === \"error\") {\n          thenable.reject(nextResult.error);\n        } else if (nextResult.data !== void 0) {\n          thenable.resolve(nextResult.data);\n        }\n      };\n      const recreateThenable = () => {\n        const pending = this.#currentThenable = nextResult.promise = pendingThenable();\n        finalizeThenableIfPossible(pending);\n      };\n      const prevThenable = this.#currentThenable;\n      switch (prevThenable.status) {\n        case \"pending\":\n          if (query.queryHash === prevQuery.queryHash) {\n            finalizeThenableIfPossible(prevThenable);\n          }\n          break;\n        case \"fulfilled\":\n          if (nextResult.status === \"error\" || nextResult.data !== prevThenable.value) {\n            recreateThenable();\n          }\n          break;\n        case \"rejected\":\n          if (nextResult.status !== \"error\" || nextResult.error !== prevThenable.reason) {\n            recreateThenable();\n          }\n          break;\n      }\n    }\n    return nextResult;\n  }\n  updateResult() {\n    const prevResult = this.#currentResult;\n    const nextResult = this.createResult(this.#currentQuery, this.options);\n    this.#currentResultState = this.#currentQuery.state;\n    this.#currentResultOptions = this.options;\n    if (this.#currentResultState.data !== void 0) {\n      this.#lastQueryWithDefinedData = this.#currentQuery;\n    }\n    if (shallowEqualObjects(nextResult, prevResult)) {\n      return;\n    }\n    this.#currentResult = nextResult;\n    const shouldNotifyListeners = () => {\n      if (!prevResult) {\n        return true;\n      }\n      const { notifyOnChangeProps } = this.options;\n      const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n      if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n        return true;\n      }\n      const includedProps = new Set(\n        notifyOnChangePropsValue ?? this.#trackedProps\n      );\n      if (this.options.throwOnError) {\n        includedProps.add(\"error\");\n      }\n      return Object.keys(this.#currentResult).some((key) => {\n        const typedKey = key;\n        const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n        return changed && includedProps.has(typedKey);\n      });\n    };\n    this.#notify({ listeners: shouldNotifyListeners() });\n  }\n  #updateQuery() {\n    const query = this.#client.getQueryCache().build(this.#client, this.options);\n    if (query === this.#currentQuery) {\n      return;\n    }\n    const prevQuery = this.#currentQuery;\n    this.#currentQuery = query;\n    this.#currentQueryInitialState = query.state;\n    if (this.hasListeners()) {\n      prevQuery?.removeObserver(this);\n      query.addObserver(this);\n    }\n  }\n  onQueryUpdate() {\n    this.updateResult();\n    if (this.hasListeners()) {\n      this.#updateTimers();\n    }\n  }\n  #notify(notifyOptions) {\n    notifyManager.batch(() => {\n      if (notifyOptions.listeners) {\n        this.listeners.forEach((listener) => {\n          listener(this.#currentResult);\n        });\n      }\n      this.#client.getQueryCache().notify({\n        query: this.#currentQuery,\n        type: \"observerResultsUpdated\"\n      });\n    });\n  }\n};\nfunction shouldLoadOnMount(query, options) {\n  return resolveEnabled(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n  return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n  if (resolveEnabled(options.enabled, query) !== false && resolveStaleTime(options.staleTime, query) !== \"static\") {\n    const value = typeof field === \"function\" ? field(query) : field;\n    return value === \"always\" || value !== false && isStale(query, options);\n  }\n  return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n  return (query !== prevQuery || resolveEnabled(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n  return resolveEnabled(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n  if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n    return true;\n  }\n  return false;\n}\nexport {\n  QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n  return {\n    onFetch: (context, query) => {\n      const options = context.options;\n      const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n      const oldPages = context.state.data?.pages || [];\n      const oldPageParams = context.state.data?.pageParams || [];\n      let result = { pages: [], pageParams: [] };\n      let currentPage = 0;\n      const fetchFn = async () => {\n        let cancelled = false;\n        const addSignalProperty = (object) => {\n          Object.defineProperty(object, \"signal\", {\n            enumerable: true,\n            get: () => {\n              if (context.signal.aborted) {\n                cancelled = true;\n              } else {\n                context.signal.addEventListener(\"abort\", () => {\n                  cancelled = true;\n                });\n              }\n              return context.signal;\n            }\n          });\n        };\n        const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n        const fetchPage = async (data, param, previous) => {\n          if (cancelled) {\n            return Promise.reject();\n          }\n          if (param == null && data.pages.length) {\n            return Promise.resolve(data);\n          }\n          const createQueryFnContext = () => {\n            const queryFnContext2 = {\n              client: context.client,\n              queryKey: context.queryKey,\n              pageParam: param,\n              direction: previous ? \"backward\" : \"forward\",\n              meta: context.options.meta\n            };\n            addSignalProperty(queryFnContext2);\n            return queryFnContext2;\n          };\n          const queryFnContext = createQueryFnContext();\n          const page = await queryFn(queryFnContext);\n          const { maxPages } = context.options;\n          const addTo = previous ? addToStart : addToEnd;\n          return {\n            pages: addTo(data.pages, page, maxPages),\n            pageParams: addTo(data.pageParams, param, maxPages)\n          };\n        };\n        if (direction && oldPages.length) {\n          const previous = direction === \"backward\";\n          const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n          const oldData = {\n            pages: oldPages,\n            pageParams: oldPageParams\n          };\n          const param = pageParamFn(options, oldData);\n          result = await fetchPage(oldData, param, previous);\n        } else {\n          const remainingPages = pages ?? oldPages.length;\n          do {\n            const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n            if (currentPage > 0 && param == null) {\n              break;\n            }\n            result = await fetchPage(result, param);\n            currentPage++;\n          } while (currentPage < remainingPages);\n        }\n        return result;\n      };\n      if (context.options.persister) {\n        context.fetchFn = () => {\n          return context.options.persister?.(\n            fetchFn,\n            {\n              client: context.client,\n              queryKey: context.queryKey,\n              meta: context.options.meta,\n              signal: context.signal\n            },\n            query\n          );\n        };\n      } else {\n        context.fetchFn = fetchFn;\n      }\n    }\n  };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n  const lastIndex = pages.length - 1;\n  return pages.length > 0 ? options.getNextPageParam(\n    pages[lastIndex],\n    pages,\n    pageParams[lastIndex],\n    pageParams\n  ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n  return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n  if (!data) return false;\n  return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n  if (!data || !options.getPreviousPageParam) return false;\n  return getPreviousPageParam(options, data) != null;\n}\nexport {\n  hasNextPage,\n  hasPreviousPage,\n  infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n  #client;\n  #observers;\n  #mutationCache;\n  #retryer;\n  constructor(config) {\n    super();\n    this.#client = config.client;\n    this.mutationId = config.mutationId;\n    this.#mutationCache = config.mutationCache;\n    this.#observers = [];\n    this.state = config.state || getDefaultState();\n    this.setOptions(config.options);\n    this.scheduleGc();\n  }\n  setOptions(options) {\n    this.options = options;\n    this.updateGcTime(this.options.gcTime);\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  addObserver(observer) {\n    if (!this.#observers.includes(observer)) {\n      this.#observers.push(observer);\n      this.clearGcTimeout();\n      this.#mutationCache.notify({\n        type: \"observerAdded\",\n        mutation: this,\n        observer\n      });\n    }\n  }\n  removeObserver(observer) {\n    this.#observers = this.#observers.filter((x) => x !== observer);\n    this.scheduleGc();\n    this.#mutationCache.notify({\n      type: \"observerRemoved\",\n      mutation: this,\n      observer\n    });\n  }\n  optionalRemove() {\n    if (!this.#observers.length) {\n      if (this.state.status === \"pending\") {\n        this.scheduleGc();\n      } else {\n        this.#mutationCache.remove(this);\n      }\n    }\n  }\n  continue() {\n    return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n    this.execute(this.state.variables);\n  }\n  async execute(variables) {\n    const onContinue = () => {\n      this.#dispatch({ type: \"continue\" });\n    };\n    const mutationFnContext = {\n      client: this.#client,\n      meta: this.options.meta,\n      mutationKey: this.options.mutationKey\n    };\n    this.#retryer = createRetryer({\n      fn: () => {\n        if (!this.options.mutationFn) {\n          return Promise.reject(new Error(\"No mutationFn found\"));\n        }\n        return this.options.mutationFn(variables, mutationFnContext);\n      },\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue,\n      retry: this.options.retry ?? 0,\n      retryDelay: this.options.retryDelay,\n      networkMode: this.options.networkMode,\n      canRun: () => this.#mutationCache.canRun(this)\n    });\n    const restored = this.state.status === \"pending\";\n    const isPaused = !this.#retryer.canStart();\n    try {\n      if (restored) {\n        onContinue();\n      } else {\n        this.#dispatch({ type: \"pending\", variables, isPaused });\n        await this.#mutationCache.config.onMutate?.(\n          variables,\n          this,\n          mutationFnContext\n        );\n        const context = await this.options.onMutate?.(\n          variables,\n          mutationFnContext\n        );\n        if (context !== this.state.context) {\n          this.#dispatch({\n            type: \"pending\",\n            context,\n            variables,\n            isPaused\n          });\n        }\n      }\n      const data = await this.#retryer.start();\n      await this.#mutationCache.config.onSuccess?.(\n        data,\n        variables,\n        this.state.context,\n        this,\n        mutationFnContext\n      );\n      await this.options.onSuccess?.(\n        data,\n        variables,\n        this.state.context,\n        mutationFnContext\n      );\n      await this.#mutationCache.config.onSettled?.(\n        data,\n        null,\n        this.state.variables,\n        this.state.context,\n        this,\n        mutationFnContext\n      );\n      await this.options.onSettled?.(\n        data,\n        null,\n        variables,\n        this.state.context,\n        mutationFnContext\n      );\n      this.#dispatch({ type: \"success\", data });\n      return data;\n    } catch (error) {\n      try {\n        await this.#mutationCache.config.onError?.(\n          error,\n          variables,\n          this.state.context,\n          this,\n          mutationFnContext\n        );\n        await this.options.onError?.(\n          error,\n          variables,\n          this.state.context,\n          mutationFnContext\n        );\n        await this.#mutationCache.config.onSettled?.(\n          void 0,\n          error,\n          this.state.variables,\n          this.state.context,\n          this,\n          mutationFnContext\n        );\n        await this.options.onSettled?.(\n          void 0,\n          error,\n          variables,\n          this.state.context,\n          mutationFnContext\n        );\n        throw error;\n      } finally {\n        this.#dispatch({ type: \"error\", error });\n      }\n    } finally {\n      this.#mutationCache.runNext(this);\n    }\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            failureCount: action.failureCount,\n            failureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            isPaused: true\n          };\n        case \"continue\":\n          return {\n            ...state,\n            isPaused: false\n          };\n        case \"pending\":\n          return {\n            ...state,\n            context: action.context,\n            data: void 0,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            isPaused: action.isPaused,\n            status: \"pending\",\n            variables: action.variables,\n            submittedAt: Date.now()\n          };\n        case \"success\":\n          return {\n            ...state,\n            data: action.data,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            status: \"success\",\n            isPaused: false\n          };\n        case \"error\":\n          return {\n            ...state,\n            data: void 0,\n            error: action.error,\n            failureCount: state.failureCount + 1,\n            failureReason: action.error,\n            isPaused: false,\n            status: \"error\"\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.#observers.forEach((observer) => {\n        observer.onMutationUpdate(action);\n      });\n      this.#mutationCache.notify({\n        mutation: this,\n        type: \"updated\",\n        action\n      });\n    });\n  }\n};\nfunction getDefaultState() {\n  return {\n    context: void 0,\n    data: void 0,\n    error: null,\n    failureCount: 0,\n    failureReason: null,\n    isPaused: false,\n    status: \"idle\",\n    variables: void 0,\n    submittedAt: 0\n  };\n}\nexport {\n  Mutation,\n  getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    this.config = config;\n    this.#mutations = /* @__PURE__ */ new Set();\n    this.#scopes = /* @__PURE__ */ new Map();\n    this.#mutationId = 0;\n  }\n  #mutations;\n  #scopes;\n  #mutationId;\n  build(client, options, state) {\n    const mutation = new Mutation({\n      client,\n      mutationCache: this,\n      mutationId: ++this.#mutationId,\n      options: client.defaultMutationOptions(options),\n      state\n    });\n    this.add(mutation);\n    return mutation;\n  }\n  add(mutation) {\n    this.#mutations.add(mutation);\n    const scope = scopeFor(mutation);\n    if (typeof scope === \"string\") {\n      const scopedMutations = this.#scopes.get(scope);\n      if (scopedMutations) {\n        scopedMutations.push(mutation);\n      } else {\n        this.#scopes.set(scope, [mutation]);\n      }\n    }\n    this.notify({ type: \"added\", mutation });\n  }\n  remove(mutation) {\n    if (this.#mutations.delete(mutation)) {\n      const scope = scopeFor(mutation);\n      if (typeof scope === \"string\") {\n        const scopedMutations = this.#scopes.get(scope);\n        if (scopedMutations) {\n          if (scopedMutations.length > 1) {\n            const index = scopedMutations.indexOf(mutation);\n            if (index !== -1) {\n              scopedMutations.splice(index, 1);\n            }\n          } else if (scopedMutations[0] === mutation) {\n            this.#scopes.delete(scope);\n          }\n        }\n      }\n    }\n    this.notify({ type: \"removed\", mutation });\n  }\n  canRun(mutation) {\n    const scope = scopeFor(mutation);\n    if (typeof scope === \"string\") {\n      const mutationsWithSameScope = this.#scopes.get(scope);\n      const firstPendingMutation = mutationsWithSameScope?.find(\n        (m) => m.state.status === \"pending\"\n      );\n      return !firstPendingMutation || firstPendingMutation === mutation;\n    } else {\n      return true;\n    }\n  }\n  runNext(mutation) {\n    const scope = scopeFor(mutation);\n    if (typeof scope === \"string\") {\n      const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n      return foundMutation?.continue() ?? Promise.resolve();\n    } else {\n      return Promise.resolve();\n    }\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.#mutations.forEach((mutation) => {\n        this.notify({ type: \"removed\", mutation });\n      });\n      this.#mutations.clear();\n      this.#scopes.clear();\n    });\n  }\n  getAll() {\n    return Array.from(this.#mutations);\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (mutation) => matchMutation(defaultedFilters, mutation)\n    );\n  }\n  findAll(filters = {}) {\n    return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  resumePausedMutations() {\n    const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n    return notifyManager.batch(\n      () => Promise.all(\n        pausedMutations.map((mutation) => mutation.continue().catch(noop))\n      )\n    );\n  }\n};\nfunction scopeFor(mutation) {\n  return mutation.options.scope?.id;\n}\nexport {\n  MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n  #client;\n  #currentResult = void 0;\n  #currentMutation;\n  #mutateOptions;\n  constructor(client, options) {\n    super();\n    this.#client = client;\n    this.setOptions(options);\n    this.bindMethods();\n    this.#updateResult();\n  }\n  bindMethods() {\n    this.mutate = this.mutate.bind(this);\n    this.reset = this.reset.bind(this);\n  }\n  setOptions(options) {\n    const prevOptions = this.options;\n    this.options = this.#client.defaultMutationOptions(options);\n    if (!shallowEqualObjects(this.options, prevOptions)) {\n      this.#client.getMutationCache().notify({\n        type: \"observerOptionsUpdated\",\n        mutation: this.#currentMutation,\n        observer: this\n      });\n    }\n    if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n      this.reset();\n    } else if (this.#currentMutation?.state.status === \"pending\") {\n      this.#currentMutation.setOptions(this.options);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#currentMutation?.removeObserver(this);\n    }\n  }\n  onMutationUpdate(action) {\n    this.#updateResult();\n    this.#notify(action);\n  }\n  getCurrentResult() {\n    return this.#currentResult;\n  }\n  reset() {\n    this.#currentMutation?.removeObserver(this);\n    this.#currentMutation = void 0;\n    this.#updateResult();\n    this.#notify();\n  }\n  mutate(variables, options) {\n    this.#mutateOptions = options;\n    this.#currentMutation?.removeObserver(this);\n    this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n    this.#currentMutation.addObserver(this);\n    return this.#currentMutation.execute(variables);\n  }\n  #updateResult() {\n    const state = this.#currentMutation?.state ?? getDefaultState();\n    this.#currentResult = {\n      ...state,\n      isPending: state.status === \"pending\",\n      isSuccess: state.status === \"success\",\n      isError: state.status === \"error\",\n      isIdle: state.status === \"idle\",\n      mutate: this.mutate,\n      reset: this.reset\n    };\n  }\n  #notify(action) {\n    notifyManager.batch(() => {\n      if (this.#mutateOptions && this.hasListeners()) {\n        const variables = this.#currentResult.variables;\n        const onMutateResult = this.#currentResult.context;\n        const context = {\n          client: this.#client,\n          meta: this.options.meta,\n          mutationKey: this.options.mutationKey\n        };\n        if (action?.type === \"success\") {\n          this.#mutateOptions.onSuccess?.(\n            action.data,\n            variables,\n            onMutateResult,\n            context\n          );\n          this.#mutateOptions.onSettled?.(\n            action.data,\n            null,\n            variables,\n            onMutateResult,\n            context\n          );\n        } else if (action?.type === \"error\") {\n          this.#mutateOptions.onError?.(\n            action.error,\n            variables,\n            onMutateResult,\n            context\n          );\n          this.#mutateOptions.onSettled?.(\n            void 0,\n            action.error,\n            variables,\n            onMutateResult,\n            context\n          );\n        }\n      }\n      this.listeners.forEach((listener) => {\n        listener(this.#currentResult);\n      });\n    });\n  }\n};\nexport {\n  MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    this.config = config;\n    this.#queries = /* @__PURE__ */ new Map();\n  }\n  #queries;\n  build(client, options, state) {\n    const queryKey = options.queryKey;\n    const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n    let query = this.get(queryHash);\n    if (!query) {\n      query = new Query({\n        client,\n        queryKey,\n        queryHash,\n        options: client.defaultQueryOptions(options),\n        state,\n        defaultOptions: client.getQueryDefaults(queryKey)\n      });\n      this.add(query);\n    }\n    return query;\n  }\n  add(query) {\n    if (!this.#queries.has(query.queryHash)) {\n      this.#queries.set(query.queryHash, query);\n      this.notify({\n        type: \"added\",\n        query\n      });\n    }\n  }\n  remove(query) {\n    const queryInMap = this.#queries.get(query.queryHash);\n    if (queryInMap) {\n      query.destroy();\n      if (queryInMap === query) {\n        this.#queries.delete(query.queryHash);\n      }\n      this.notify({ type: \"removed\", query });\n    }\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        this.remove(query);\n      });\n    });\n  }\n  get(queryHash) {\n    return this.#queries.get(queryHash);\n  }\n  getAll() {\n    return [...this.#queries.values()];\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (query) => matchQuery(defaultedFilters, query)\n    );\n  }\n  findAll(filters = {}) {\n    const queries = this.getAll();\n    return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  onFocus() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onFocus();\n      });\n    });\n  }\n  onOnline() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onOnline();\n      });\n    });\n  }\n};\nexport {\n  QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/queryClient.ts\nimport {\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  noop,\n  partialMatchKey,\n  resolveStaleTime,\n  skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n  #queryCache;\n  #mutationCache;\n  #defaultOptions;\n  #queryDefaults;\n  #mutationDefaults;\n  #mountCount;\n  #unsubscribeFocus;\n  #unsubscribeOnline;\n  constructor(config = {}) {\n    this.#queryCache = config.queryCache || new QueryCache();\n    this.#mutationCache = config.mutationCache || new MutationCache();\n    this.#defaultOptions = config.defaultOptions || {};\n    this.#queryDefaults = /* @__PURE__ */ new Map();\n    this.#mutationDefaults = /* @__PURE__ */ new Map();\n    this.#mountCount = 0;\n  }\n  mount() {\n    this.#mountCount++;\n    if (this.#mountCount !== 1) return;\n    this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n      if (focused) {\n        await this.resumePausedMutations();\n        this.#queryCache.onFocus();\n      }\n    });\n    this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n      if (online) {\n        await this.resumePausedMutations();\n        this.#queryCache.onOnline();\n      }\n    });\n  }\n  unmount() {\n    this.#mountCount--;\n    if (this.#mountCount !== 0) return;\n    this.#unsubscribeFocus?.();\n    this.#unsubscribeFocus = void 0;\n    this.#unsubscribeOnline?.();\n    this.#unsubscribeOnline = void 0;\n  }\n  isFetching(filters) {\n    return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n  }\n  isMutating(filters) {\n    return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n  }\n  /**\n   * Imperative (non-reactive) way to retrieve data for a QueryKey.\n   * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n   *\n   * Hint: Do not use this function inside a component, because it won't receive updates.\n   * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n   */\n  getQueryData(queryKey) {\n    const options = this.defaultQueryOptions({ queryKey });\n    return this.#queryCache.get(options.queryHash)?.state.data;\n  }\n  ensureQueryData(options) {\n    const defaultedOptions = this.defaultQueryOptions(options);\n    const query = this.#queryCache.build(this, defaultedOptions);\n    const cachedData = query.state.data;\n    if (cachedData === void 0) {\n      return this.fetchQuery(options);\n    }\n    if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n      void this.prefetchQuery(defaultedOptions);\n    }\n    return Promise.resolve(cachedData);\n  }\n  getQueriesData(filters) {\n    return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n      const data = state.data;\n      return [queryKey, data];\n    });\n  }\n  setQueryData(queryKey, updater, options) {\n    const defaultedOptions = this.defaultQueryOptions({ queryKey });\n    const query = this.#queryCache.get(\n      defaultedOptions.queryHash\n    );\n    const prevData = query?.state.data;\n    const data = functionalUpdate(updater, prevData);\n    if (data === void 0) {\n      return void 0;\n    }\n    return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n  }\n  setQueriesData(filters, updater, options) {\n    return notifyManager.batch(\n      () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n        queryKey,\n        this.setQueryData(queryKey, updater, options)\n      ])\n    );\n  }\n  getQueryState(queryKey) {\n    const options = this.defaultQueryOptions({ queryKey });\n    return this.#queryCache.get(\n      options.queryHash\n    )?.state;\n  }\n  removeQueries(filters) {\n    const queryCache = this.#queryCache;\n    notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        queryCache.remove(query);\n      });\n    });\n  }\n  resetQueries(filters, options) {\n    const queryCache = this.#queryCache;\n    return notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        query.reset();\n      });\n      return this.refetchQueries(\n        {\n          type: \"active\",\n          ...filters\n        },\n        options\n      );\n    });\n  }\n  cancelQueries(filters, cancelOptions = {}) {\n    const defaultedCancelOptions = { revert: true, ...cancelOptions };\n    const promises = notifyManager.batch(\n      () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n    );\n    return Promise.all(promises).then(noop).catch(noop);\n  }\n  invalidateQueries(filters, options = {}) {\n    return notifyManager.batch(() => {\n      this.#queryCache.findAll(filters).forEach((query) => {\n        query.invalidate();\n      });\n      if (filters?.refetchType === \"none\") {\n        return Promise.resolve();\n      }\n      return this.refetchQueries(\n        {\n          ...filters,\n          type: filters?.refetchType ?? filters?.type ?? \"active\"\n        },\n        options\n      );\n    });\n  }\n  refetchQueries(filters, options = {}) {\n    const fetchOptions = {\n      ...options,\n      cancelRefetch: options.cancelRefetch ?? true\n    };\n    const promises = notifyManager.batch(\n      () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n        let promise = query.fetch(void 0, fetchOptions);\n        if (!fetchOptions.throwOnError) {\n          promise = promise.catch(noop);\n        }\n        return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n      })\n    );\n    return Promise.all(promises).then(noop);\n  }\n  fetchQuery(options) {\n    const defaultedOptions = this.defaultQueryOptions(options);\n    if (defaultedOptions.retry === void 0) {\n      defaultedOptions.retry = false;\n    }\n    const query = this.#queryCache.build(this, defaultedOptions);\n    return query.isStaleByTime(\n      resolveStaleTime(defaultedOptions.staleTime, query)\n    ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n  }\n  prefetchQuery(options) {\n    return this.fetchQuery(options).then(noop).catch(noop);\n  }\n  fetchInfiniteQuery(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.fetchQuery(options);\n  }\n  prefetchInfiniteQuery(options) {\n    return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n  }\n  ensureInfiniteQueryData(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.ensureQueryData(options);\n  }\n  resumePausedMutations() {\n    if (onlineManager.isOnline()) {\n      return this.#mutationCache.resumePausedMutations();\n    }\n    return Promise.resolve();\n  }\n  getQueryCache() {\n    return this.#queryCache;\n  }\n  getMutationCache() {\n    return this.#mutationCache;\n  }\n  getDefaultOptions() {\n    return this.#defaultOptions;\n  }\n  setDefaultOptions(options) {\n    this.#defaultOptions = options;\n  }\n  setQueryDefaults(queryKey, options) {\n    this.#queryDefaults.set(hashKey(queryKey), {\n      queryKey,\n      defaultOptions: options\n    });\n  }\n  getQueryDefaults(queryKey) {\n    const defaults = [...this.#queryDefaults.values()];\n    const result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n        Object.assign(result, queryDefault.defaultOptions);\n      }\n    });\n    return result;\n  }\n  setMutationDefaults(mutationKey, options) {\n    this.#mutationDefaults.set(hashKey(mutationKey), {\n      mutationKey,\n      defaultOptions: options\n    });\n  }\n  getMutationDefaults(mutationKey) {\n    const defaults = [...this.#mutationDefaults.values()];\n    const result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n        Object.assign(result, queryDefault.defaultOptions);\n      }\n    });\n    return result;\n  }\n  defaultQueryOptions(options) {\n    if (options._defaulted) {\n      return options;\n    }\n    const defaultedOptions = {\n      ...this.#defaultOptions.queries,\n      ...this.getQueryDefaults(options.queryKey),\n      ...options,\n      _defaulted: true\n    };\n    if (!defaultedOptions.queryHash) {\n      defaultedOptions.queryHash = hashQueryKeyByOptions(\n        defaultedOptions.queryKey,\n        defaultedOptions\n      );\n    }\n    if (defaultedOptions.refetchOnReconnect === void 0) {\n      defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n    }\n    if (defaultedOptions.throwOnError === void 0) {\n      defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n    }\n    if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n      defaultedOptions.networkMode = \"offlineFirst\";\n    }\n    if (defaultedOptions.queryFn === skipToken) {\n      defaultedOptions.enabled = false;\n    }\n    return defaultedOptions;\n  }\n  defaultMutationOptions(options) {\n    if (options?._defaulted) {\n      return options;\n    }\n    return {\n      ...this.#defaultOptions.mutations,\n      ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n      ...options,\n      _defaulted: true\n    };\n  }\n  clear() {\n    this.#queryCache.clear();\n    this.#mutationCache.clear();\n  }\n};\nexport {\n  QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n  void 0\n);\nvar useQueryClient = (queryClient) => {\n  const client = React.useContext(QueryClientContext);\n  if (queryClient) {\n    return queryClient;\n  }\n  if (!client) {\n    throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n  }\n  return client;\n};\nvar QueryClientProvider = ({\n  client,\n  children\n}) => {\n  React.useEffect(() => {\n    client.mount();\n    return () => {\n      client.unmount();\n    };\n  }, [client]);\n  return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n  QueryClientContext,\n  QueryClientProvider,\n  useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","\"use client\";\n\n// src/IsRestoringProvider.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n  IsRestoringProvider,\n  useIsRestoring\n};\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n  let isReset = false;\n  return {\n    clearReset: () => {\n      isReset = false;\n    },\n    reset: () => {\n      isReset = true;\n    },\n    isReset: () => {\n      return isReset;\n    }\n  };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n  children\n}) => {\n  const [value] = React.useState(() => createValue());\n  return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n  QueryErrorResetBoundary,\n  useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n  if (options.suspense || options.throwOnError || options.experimental_prefetchInRender) {\n    if (!errorResetBoundary.isReset()) {\n      options.retryOnMount = false;\n    }\n  }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n  React.useEffect(() => {\n    errorResetBoundary.clearReset();\n  }, [errorResetBoundary]);\n};\nvar getHasError = ({\n  result,\n  errorResetBoundary,\n  throwOnError,\n  query,\n  suspense\n}) => {\n  return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\nexport {\n  ensurePreventErrorBoundaryRetry,\n  getHasError,\n  useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n  if (defaultedOptions.suspense) {\n    const MIN_SUSPENSE_TIME_MS = 1e3;\n    const clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n    const originalStaleTime = defaultedOptions.staleTime;\n    defaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n    if (typeof defaultedOptions.gcTime === \"number\") {\n      defaultedOptions.gcTime = Math.max(\n        defaultedOptions.gcTime,\n        MIN_SUSPENSE_TIME_MS\n      );\n    }\n  }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n  errorResetBoundary.clearReset();\n});\nexport {\n  defaultThrowOnError,\n  ensureSuspenseTimers,\n  fetchOptimistic,\n  shouldSuspend,\n  willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { isServer, noop, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n  ensurePreventErrorBoundaryRetry,\n  getHasError,\n  useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport {\n  ensureSuspenseTimers,\n  fetchOptimistic,\n  shouldSuspend,\n  willFetch\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (typeof options !== \"object\" || Array.isArray(options)) {\n      throw new Error(\n        'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n      );\n    }\n  }\n  const isRestoring = useIsRestoring();\n  const errorResetBoundary = useQueryErrorResetBoundary();\n  const client = useQueryClient(queryClient);\n  const defaultedOptions = client.defaultQueryOptions(options);\n  client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n    defaultedOptions\n  );\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!defaultedOptions.queryFn) {\n      console.error(\n        `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`\n      );\n    }\n  }\n  defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n  ensureSuspenseTimers(defaultedOptions);\n  ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n  useClearResetErrorBoundary(errorResetBoundary);\n  const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n  const [observer] = React.useState(\n    () => new Observer(\n      client,\n      defaultedOptions\n    )\n  );\n  const result = observer.getOptimisticResult(defaultedOptions);\n  const shouldSubscribe = !isRestoring && options.subscribed !== false;\n  React.useSyncExternalStore(\n    React.useCallback(\n      (onStoreChange) => {\n        const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n        observer.updateResult();\n        return unsubscribe;\n      },\n      [observer, shouldSubscribe]\n    ),\n    () => observer.getCurrentResult(),\n    () => observer.getCurrentResult()\n  );\n  React.useEffect(() => {\n    observer.setOptions(defaultedOptions);\n  }, [defaultedOptions, observer]);\n  if (shouldSuspend(defaultedOptions, result)) {\n    throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n  }\n  if (getHasError({\n    result,\n    errorResetBoundary,\n    throwOnError: defaultedOptions.throwOnError,\n    query: client.getQueryCache().get(defaultedOptions.queryHash),\n    suspense: defaultedOptions.suspense\n  })) {\n    throw result.error;\n  }\n  ;\n  client.getDefaultOptions().queries?._experimental_afterQuery?.(\n    defaultedOptions,\n    result\n  );\n  if (defaultedOptions.experimental_prefetchInRender && !isServer && willFetch(result, isRestoring)) {\n    const promise = isNewCacheEntry ? (\n      // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n      fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n    ) : (\n      // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n      client.getQueryCache().get(defaultedOptions.queryHash)?.promise\n    );\n    promise?.catch(noop).finally(() => {\n      observer.updateResult();\n    });\n  }\n  return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n  useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n  return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n  useQuery\n};\n//# sourceMappingURL=useQuery.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport {\n  MutationObserver,\n  noop,\n  notifyManager,\n  shouldThrowError\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nfunction useMutation(options, queryClient) {\n  const client = useQueryClient(queryClient);\n  const [observer] = React.useState(\n    () => new MutationObserver(\n      client,\n      options\n    )\n  );\n  React.useEffect(() => {\n    observer.setOptions(options);\n  }, [observer, options]);\n  const result = React.useSyncExternalStore(\n    React.useCallback(\n      (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n      [observer]\n    ),\n    () => observer.getCurrentResult(),\n    () => observer.getCurrentResult()\n  );\n  const mutate = React.useCallback(\n    (variables, mutateOptions) => {\n      observer.mutate(variables, mutateOptions).catch(noop);\n    },\n    [observer]\n  );\n  if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n    throw result.error;\n  }\n  return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n  useMutation\n};\n//# sourceMappingURL=useMutation.js.map","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n  /^([A-Z])|[\\s-_]+(\\w)/g,\n  (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n  const camelCase = toCamelCase(string);\n  return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n  return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n  for (const prop in props) {\n    if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n      return true;\n    }\n  }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: 24,\n  height: 24,\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\",\n  strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n  ({\n    color = \"currentColor\",\n    size = 24,\n    strokeWidth = 2,\n    absoluteStrokeWidth,\n    className = \"\",\n    children,\n    iconNode,\n    ...rest\n  }, ref) => createElement(\n    \"svg\",\n    {\n      ref,\n      ...defaultAttributes,\n      width: size,\n      height: size,\n      stroke: color,\n      strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n      className: mergeClasses(\"lucide\", className),\n      ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n      ...rest\n    },\n    [\n      ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n      ...Array.isArray(children) ? children : [children]\n    ]\n  )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n  const Component = forwardRef(\n    ({ className, ...props }, ref) => createElement(Icon, {\n      ref,\n      iconNode,\n      className: mergeClasses(\n        `lucide-${toKebabCase(toPascalCase(iconName))}`,\n        `lucide-${iconName}`,\n        className\n      ),\n      ...props\n    })\n  );\n  Component.displayName = toPascalCase(iconName);\n  return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M12 20v-9\", key: \"1qisl0\" }],\n  [\"path\", { d: \"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\", key: \"uouzyp\" }],\n  [\"path\", { d: \"M14.12 3.88 16 2\", key: \"qol33r\" }],\n  [\"path\", { d: \"M21 21a4 4 0 0 0-3.81-4\", key: \"1b0z45\" }],\n  [\"path\", { d: \"M21 5a4 4 0 0 1-3.55 3.97\", key: \"5cxbf6\" }],\n  [\"path\", { d: \"M22 13h-4\", key: \"1jl80f\" }],\n  [\"path\", { d: \"M3 21a4 4 0 0 1 3.81-4\", key: \"1fjd4g\" }],\n  [\"path\", { d: \"M3 5a4 4 0 0 0 3.55 3.97\", key: \"1d7oge\" }],\n  [\"path\", { d: \"M6 13H2\", key: \"82j7cp\" }],\n  [\"path\", { d: \"m8 2 1.88 1.88\", key: \"fmnt4t\" }],\n  [\"path\", { d: \"M9 7.13V6a3 3 0 1 1 6 0v1.13\", key: \"1vgav8\" }]\n];\nconst Bug = createLucideIcon(\"bug\", __iconNode);\n\nexport { __iconNode, Bug as default };\n//# sourceMappingURL=bug.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\n    \"path\",\n    {\n      d: \"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z\",\n      key: \"18u6gg\"\n    }\n  ],\n  [\"circle\", { cx: \"12\", cy: \"13\", r: \"3\", key: \"1vg3eu\" }]\n];\nconst Camera = createLucideIcon(\"camera\", __iconNode);\n\nexport { __iconNode, Camera as default };\n//# sourceMappingURL=camera.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n  [\"path\", { d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\", key: \"1u773s\" }],\n  [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst CircleQuestionMark = createLucideIcon(\"circle-question-mark\", __iconNode);\n\nexport { __iconNode, CircleQuestionMark as default };\n//# sourceMappingURL=circle-question-mark.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n  [\"path\", { d: \"M10 14 21 3\", key: \"gplh6r\" }],\n  [\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\", key: \"a6xqqp\" }]\n];\nconst ExternalLink = createLucideIcon(\"external-link\", __iconNode);\n\nexport { __iconNode, ExternalLink as default };\n//# sourceMappingURL=external-link.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\n    \"path\",\n    {\n      d: \"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\",\n      key: \"1gvzjb\"\n    }\n  ],\n  [\"path\", { d: \"M9 18h6\", key: \"x1upvd\" }],\n  [\"path\", { d: \"M10 22h4\", key: \"ceow96\" }]\n];\nconst Lightbulb = createLucideIcon(\"lightbulb\", __iconNode);\n\nexport { __iconNode, Lightbulb as default };\n//# sourceMappingURL=lightbulb.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\n    \"path\",\n    {\n      d: \"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z\",\n      key: \"169xi5\"\n    }\n  ],\n  [\"path\", { d: \"M15 5.764v15\", key: \"1pn4in\" }],\n  [\"path\", { d: \"M9 3.236v15\", key: \"1uimfh\" }]\n];\nconst Map = createLucideIcon(\"map\", __iconNode);\n\nexport { __iconNode, Map as default };\n//# sourceMappingURL=map.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\n    \"path\",\n    {\n      d: \"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\",\n      key: \"1sd12s\"\n    }\n  ]\n];\nconst MessageCircle = createLucideIcon(\"message-circle\", __iconNode);\n\nexport { __iconNode, MessageCircle as default };\n//# sourceMappingURL=message-circle.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\n    \"path\",\n    {\n      d: \"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\",\n      key: \"e79jfc\"\n    }\n  ],\n  [\"circle\", { cx: \"13.5\", cy: \"6.5\", r: \".5\", fill: \"currentColor\", key: \"1okk4w\" }],\n  [\"circle\", { cx: \"17.5\", cy: \"10.5\", r: \".5\", fill: \"currentColor\", key: \"f64h9f\" }],\n  [\"circle\", { cx: \"6.5\", cy: \"12.5\", r: \".5\", fill: \"currentColor\", key: \"qy21gx\" }],\n  [\"circle\", { cx: \"8.5\", cy: \"7.5\", r: \".5\", fill: \"currentColor\", key: \"fotxhn\" }]\n];\nconst Palette = createLucideIcon(\"palette\", __iconNode);\n\nexport { __iconNode, Palette as default };\n//# sourceMappingURL=palette.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M13 21h8\", key: \"1jsn5i\" }],\n  [\n    \"path\",\n    {\n      d: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n      key: \"1a8usu\"\n    }\n  ]\n];\nconst PenLine = createLucideIcon(\"pen-line\", __iconNode);\n\nexport { __iconNode, PenLine as default };\n//# sourceMappingURL=pen-line.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\n    \"path\",\n    {\n      d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n      key: \"10ikf1\"\n    }\n  ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M21 7v6h-6\", key: \"3ptur4\" }],\n  [\"path\", { d: \"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\", key: \"1kgawr\" }]\n];\nconst Redo = createLucideIcon(\"redo\", __iconNode);\n\nexport { __iconNode, Redo as default };\n//# sourceMappingURL=redo.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\", key: \"1p45f6\" }],\n  [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }]\n];\nconst RotateCw = createLucideIcon(\"rotate-cw\", __iconNode);\n\nexport { __iconNode, RotateCw as default };\n//# sourceMappingURL=rotate-cw.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\n    \"path\",\n    {\n      d: \"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z\",\n      key: \"1c8476\"\n    }\n  ],\n  [\"path\", { d: \"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\", key: \"1ydtos\" }],\n  [\"path\", { d: \"M7 3v4a1 1 0 0 0 1 1h7\", key: \"t51u73\" }]\n];\nconst Save = createLucideIcon(\"save\", __iconNode);\n\nexport { __iconNode, Save as default };\n//# sourceMappingURL=save.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }]\n];\nconst Square = createLucideIcon(\"square\", __iconNode);\n\nexport { __iconNode, Square as default };\n//# sourceMappingURL=square.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M12 4v16\", key: \"1654pz\" }],\n  [\"path\", { d: \"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2\", key: \"e0r10z\" }],\n  [\"path\", { d: \"M9 20h6\", key: \"s66wpe\" }]\n];\nconst Type = createLucideIcon(\"type\", __iconNode);\n\nexport { __iconNode, Type as default };\n//# sourceMappingURL=type.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M3 7v6h6\", key: \"1v2h90\" }],\n  [\"path\", { d: \"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\", key: \"1r6uu6\" }]\n];\nconst Undo = createLucideIcon(\"undo\", __iconNode);\n\nexport { __iconNode, Undo as default };\n//# sourceMappingURL=undo.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M12 3v12\", key: \"1x0j5s\" }],\n  [\"path\", { d: \"m17 8-5-5-5 5\", key: \"7q97r8\" }],\n  [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }]\n];\nconst Upload = createLucideIcon(\"upload\", __iconNode);\n\nexport { __iconNode, Upload as default };\n//# sourceMappingURL=upload.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n  [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","let z = {}, J;\nfunction F(e = {}) {\n  z = {\n    animate: !0,\n    allowClose: !0,\n    overlayClickBehavior: \"close\",\n    overlayOpacity: 0.7,\n    smoothScroll: !1,\n    disableActiveInteraction: !1,\n    showProgress: !1,\n    stagePadding: 10,\n    stageRadius: 5,\n    popoverOffset: 10,\n    showButtons: [\"next\", \"previous\", \"close\"],\n    disableButtons: [],\n    overlayColor: \"#000\",\n    ...e\n  };\n}\nfunction s(e) {\n  return e ? z[e] : z;\n}\nfunction le(e) {\n  J = e;\n}\nfunction _() {\n  return J;\n}\nlet I = {};\nfunction N(e, o) {\n  I[e] = o;\n}\nfunction L(e) {\n  var o;\n  (o = I[e]) == null || o.call(I);\n}\nfunction de() {\n  I = {};\n}\nfunction O(e, o, t, i) {\n  return (e /= i / 2) < 1 ? t / 2 * e * e + o : -t / 2 * (--e * (e - 2) - 1) + o;\n}\nfunction U(e) {\n  const o = 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n  return e.flatMap((t) => {\n    const i = t.matches(o), d = Array.from(t.querySelectorAll(o));\n    return [...i ? [t] : [], ...d];\n  }).filter((t) => getComputedStyle(t).pointerEvents !== \"none\" && ve(t));\n}\nfunction ee(e) {\n  if (!e || ue(e))\n    return;\n  const o = s(\"smoothScroll\"), t = e.offsetHeight > window.innerHeight;\n  e.scrollIntoView({\n    // Removing the smooth scrolling for elements which exist inside the scrollable parent\n    // This was causing the highlight to not properly render\n    behavior: !o || pe(e) ? \"auto\" : \"smooth\",\n    inline: \"center\",\n    block: t ? \"start\" : \"center\"\n  });\n}\nfunction pe(e) {\n  if (!e || !e.parentElement)\n    return;\n  const o = e.parentElement;\n  return o.scrollHeight > o.clientHeight;\n}\nfunction ue(e) {\n  const o = e.getBoundingClientRect();\n  return o.top >= 0 && o.left >= 0 && o.bottom <= (window.innerHeight || document.documentElement.clientHeight) && o.right <= (window.innerWidth || document.documentElement.clientWidth);\n}\nfunction ve(e) {\n  return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length);\n}\nlet D = {};\nfunction k(e, o) {\n  D[e] = o;\n}\nfunction l(e) {\n  return e ? D[e] : D;\n}\nfunction X() {\n  D = {};\n}\nfunction fe(e, o, t, i) {\n  let d = l(\"__activeStagePosition\");\n  const n = d || t.getBoundingClientRect(), f = i.getBoundingClientRect(), w = O(e, n.x, f.x - n.x, o), r = O(e, n.y, f.y - n.y, o), v = O(e, n.width, f.width - n.width, o), g = O(e, n.height, f.height - n.height, o);\n  d = {\n    x: w,\n    y: r,\n    width: v,\n    height: g\n  }, oe(d), k(\"__activeStagePosition\", d);\n}\nfunction te(e) {\n  if (!e)\n    return;\n  const o = e.getBoundingClientRect(), t = {\n    x: o.x,\n    y: o.y,\n    width: o.width,\n    height: o.height\n  };\n  k(\"__activeStagePosition\", t), oe(t);\n}\nfunction he() {\n  const e = l(\"__activeStagePosition\"), o = l(\"__overlaySvg\");\n  if (!e)\n    return;\n  if (!o) {\n    console.warn(\"No stage svg found.\");\n    return;\n  }\n  const t = window.innerWidth, i = window.innerHeight;\n  o.setAttribute(\"viewBox\", `0 0 ${t} ${i}`);\n}\nfunction ge(e) {\n  const o = we(e);\n  document.body.appendChild(o), re(o, (t) => {\n    t.target.tagName === \"path\" && L(\"overlayClick\");\n  }), k(\"__overlaySvg\", o);\n}\nfunction oe(e) {\n  const o = l(\"__overlaySvg\");\n  if (!o) {\n    ge(e);\n    return;\n  }\n  const t = o.firstElementChild;\n  if ((t == null ? void 0 : t.tagName) !== \"path\")\n    throw new Error(\"no path element found in stage svg\");\n  t.setAttribute(\"d\", ie(e));\n}\nfunction we(e) {\n  const o = window.innerWidth, t = window.innerHeight, i = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n  i.classList.add(\"driver-overlay\", \"driver-overlay-animated\"), i.setAttribute(\"viewBox\", `0 0 ${o} ${t}`), i.setAttribute(\"xmlSpace\", \"preserve\"), i.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\"), i.setAttribute(\"version\", \"1.1\"), i.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\"), i.style.fillRule = \"evenodd\", i.style.clipRule = \"evenodd\", i.style.strokeLinejoin = \"round\", i.style.strokeMiterlimit = \"2\", i.style.zIndex = \"10000\", i.style.position = \"fixed\", i.style.top = \"0\", i.style.left = \"0\", i.style.width = \"100%\", i.style.height = \"100%\";\n  const d = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n  return d.setAttribute(\"d\", ie(e)), d.style.fill = s(\"overlayColor\") || \"rgb(0,0,0)\", d.style.opacity = `${s(\"overlayOpacity\")}`, d.style.pointerEvents = \"auto\", d.style.cursor = \"auto\", i.appendChild(d), i;\n}\nfunction ie(e) {\n  const o = window.innerWidth, t = window.innerHeight, i = s(\"stagePadding\") || 0, d = s(\"stageRadius\") || 0, n = e.width + i * 2, f = e.height + i * 2, w = Math.min(d, n / 2, f / 2), r = Math.floor(Math.max(w, 0)), v = e.x - i + r, g = e.y - i, y = n - r * 2, a = f - r * 2;\n  return `M${o},0L0,0L0,${t}L${o},${t}L${o},0Z\n    M${v},${g} h${y} a${r},${r} 0 0 1 ${r},${r} v${a} a${r},${r} 0 0 1 -${r},${r} h-${y} a${r},${r} 0 0 1 -${r},-${r} v-${a} a${r},${r} 0 0 1 ${r},-${r} z`;\n}\nfunction me() {\n  const e = l(\"__overlaySvg\");\n  e && e.remove();\n}\nfunction ye() {\n  const e = document.getElementById(\"driver-dummy-element\");\n  if (e)\n    return e;\n  let o = document.createElement(\"div\");\n  return o.id = \"driver-dummy-element\", o.style.width = \"0\", o.style.height = \"0\", o.style.pointerEvents = \"none\", o.style.opacity = \"0\", o.style.position = \"fixed\", o.style.top = \"50%\", o.style.left = \"50%\", document.body.appendChild(o), o;\n}\nfunction j(e) {\n  const { element: o } = e;\n  let t = typeof o == \"function\" ? o() : typeof o == \"string\" ? document.querySelector(o) : o;\n  t || (t = ye()), be(t, e);\n}\nfunction xe() {\n  const e = l(\"__activeElement\"), o = l(\"__activeStep\");\n  e && (te(e), he(), ae(e, o));\n}\nfunction be(e, o) {\n  var C;\n  const i = Date.now(), d = l(\"__activeStep\"), n = l(\"__activeElement\") || e, f = !n || n === e, w = e.id === \"driver-dummy-element\", r = n.id === \"driver-dummy-element\", v = s(\"animate\"), g = o.onHighlightStarted || s(\"onHighlightStarted\"), y = (o == null ? void 0 : o.onHighlighted) || s(\"onHighlighted\"), a = (d == null ? void 0 : d.onDeselected) || s(\"onDeselected\"), p = s(), c = l();\n  !f && a && a(r ? void 0 : n, d, {\n    config: p,\n    state: c,\n    driver: _()\n  }), g && g(w ? void 0 : e, o, {\n    config: p,\n    state: c,\n    driver: _()\n  });\n  const u = !f && v;\n  let h = !1;\n  _e(), k(\"previousStep\", d), k(\"previousElement\", n), k(\"activeStep\", o), k(\"activeElement\", e);\n  const m = () => {\n    if (l(\"__transitionCallback\") !== m)\n      return;\n    const b = Date.now() - i, E = 400 - b <= 400 / 2;\n    o.popover && E && !h && u && (Q(e, o), h = !0), s(\"animate\") && b < 400 ? fe(b, 400, n, e) : (te(e), y && y(w ? void 0 : e, o, {\n      config: s(),\n      state: l(),\n      driver: _()\n    }), k(\"__transitionCallback\", void 0), k(\"__previousStep\", d), k(\"__previousElement\", n), k(\"__activeStep\", o), k(\"__activeElement\", e)), window.requestAnimationFrame(m);\n  };\n  k(\"__transitionCallback\", m), window.requestAnimationFrame(m), ee(e), !u && o.popover && Q(e, o), n.classList.remove(\"driver-active-element\", \"driver-no-interaction\"), n.removeAttribute(\"aria-haspopup\"), n.removeAttribute(\"aria-expanded\"), n.removeAttribute(\"aria-controls\"), ((C = o.disableActiveInteraction) != null ? C : s(\"disableActiveInteraction\")) && e.classList.add(\"driver-no-interaction\"), e.classList.add(\"driver-active-element\"), e.setAttribute(\"aria-haspopup\", \"dialog\"), e.setAttribute(\"aria-expanded\", \"true\"), e.setAttribute(\"aria-controls\", \"driver-popover-content\");\n}\nfunction Ce() {\n  var e;\n  (e = document.getElementById(\"driver-dummy-element\")) == null || e.remove(), document.querySelectorAll(\".driver-active-element\").forEach((o) => {\n    o.classList.remove(\"driver-active-element\", \"driver-no-interaction\"), o.removeAttribute(\"aria-haspopup\"), o.removeAttribute(\"aria-expanded\"), o.removeAttribute(\"aria-controls\");\n  });\n}\nfunction M() {\n  const e = l(\"__resizeTimeout\");\n  e && window.cancelAnimationFrame(e), k(\"__resizeTimeout\", window.requestAnimationFrame(xe));\n}\nfunction Pe(e) {\n  var r;\n  if (!l(\"isInitialized\") || !(e.key === \"Tab\" || e.keyCode === 9))\n    return;\n  const i = l(\"__activeElement\"), d = (r = l(\"popover\")) == null ? void 0 : r.wrapper, n = U([\n    ...d ? [d] : [],\n    ...i ? [i] : []\n  ]), f = n[0], w = n[n.length - 1];\n  if (e.preventDefault(), e.shiftKey) {\n    const v = n[n.indexOf(document.activeElement) - 1] || w;\n    v == null || v.focus();\n  } else {\n    const v = n[n.indexOf(document.activeElement) + 1] || f;\n    v == null || v.focus();\n  }\n}\nfunction ne(e) {\n  var t;\n  ((t = s(\"allowKeyboardControl\")) == null || t) && (e.key === \"Escape\" ? L(\"escapePress\") : e.key === \"ArrowRight\" ? L(\"arrowRightPress\") : e.key === \"ArrowLeft\" && L(\"arrowLeftPress\"));\n}\nfunction re(e, o, t) {\n  const i = (n, f) => {\n    const w = n.target;\n    e.contains(w) && ((!t || t(w)) && (n.preventDefault(), n.stopPropagation(), n.stopImmediatePropagation()), f == null || f(n));\n  };\n  document.addEventListener(\"pointerdown\", i, !0), document.addEventListener(\"mousedown\", i, !0), document.addEventListener(\"pointerup\", i, !0), document.addEventListener(\"mouseup\", i, !0), document.addEventListener(\n    \"click\",\n    (n) => {\n      i(n, o);\n    },\n    !0\n  );\n}\nfunction ke() {\n  window.addEventListener(\"keyup\", ne, !1), window.addEventListener(\"keydown\", Pe, !1), window.addEventListener(\"resize\", M), window.addEventListener(\"scroll\", M);\n}\nfunction Se() {\n  window.removeEventListener(\"keyup\", ne), window.removeEventListener(\"resize\", M), window.removeEventListener(\"scroll\", M);\n}\nfunction _e() {\n  const e = l(\"popover\");\n  e && (e.wrapper.style.display = \"none\");\n}\nfunction Q(e, o) {\n  var b, P;\n  let t = l(\"popover\");\n  t && document.body.removeChild(t.wrapper), t = Le(), document.body.appendChild(t.wrapper);\n  const {\n    title: i,\n    description: d,\n    showButtons: n,\n    disableButtons: f,\n    showProgress: w,\n    nextBtnText: r = s(\"nextBtnText\") || \"Next &rarr;\",\n    prevBtnText: v = s(\"prevBtnText\") || \"&larr; Previous\",\n    progressText: g = s(\"progressText\") || \"{current} of {total}\"\n  } = o.popover || {};\n  t.nextButton.innerHTML = r, t.previousButton.innerHTML = v, t.progress.innerHTML = g, i ? (t.title.innerHTML = i, t.title.style.display = \"block\") : t.title.style.display = \"none\", d ? (t.description.innerHTML = d, t.description.style.display = \"block\") : t.description.style.display = \"none\";\n  const y = n || s(\"showButtons\"), a = w || s(\"showProgress\") || !1, p = (y == null ? void 0 : y.includes(\"next\")) || (y == null ? void 0 : y.includes(\"previous\")) || a;\n  t.closeButton.style.display = y.includes(\"close\") ? \"block\" : \"none\", p ? (t.footer.style.display = \"flex\", t.progress.style.display = a ? \"block\" : \"none\", t.nextButton.style.display = y.includes(\"next\") ? \"block\" : \"none\", t.previousButton.style.display = y.includes(\"previous\") ? \"block\" : \"none\") : t.footer.style.display = \"none\";\n  const c = f || s(\"disableButtons\") || [];\n  c != null && c.includes(\"next\") && (t.nextButton.disabled = !0, t.nextButton.classList.add(\"driver-popover-btn-disabled\")), c != null && c.includes(\"previous\") && (t.previousButton.disabled = !0, t.previousButton.classList.add(\"driver-popover-btn-disabled\")), c != null && c.includes(\"close\") && (t.closeButton.disabled = !0, t.closeButton.classList.add(\"driver-popover-btn-disabled\"));\n  const u = t.wrapper;\n  u.style.display = \"block\", u.style.left = \"\", u.style.top = \"\", u.style.bottom = \"\", u.style.right = \"\", u.id = \"driver-popover-content\", u.setAttribute(\"role\", \"dialog\"), u.setAttribute(\"aria-labelledby\", \"driver-popover-title\"), u.setAttribute(\"aria-describedby\", \"driver-popover-description\");\n  const h = t.arrow;\n  h.className = \"driver-popover-arrow\";\n  const m = ((b = o.popover) == null ? void 0 : b.popoverClass) || s(\"popoverClass\") || \"\";\n  u.className = `driver-popover ${m}`.trim(), re(\n    t.wrapper,\n    (E) => {\n      var B, R, W;\n      const T = E.target, A = ((B = o.popover) == null ? void 0 : B.onNextClick) || s(\"onNextClick\"), H = ((R = o.popover) == null ? void 0 : R.onPrevClick) || s(\"onPrevClick\"), $ = ((W = o.popover) == null ? void 0 : W.onCloseClick) || s(\"onCloseClick\");\n      if (T.closest(\".driver-popover-next-btn\"))\n        return A ? A(e, o, {\n          config: s(),\n          state: l(),\n          driver: _()\n        }) : L(\"nextClick\");\n      if (T.closest(\".driver-popover-prev-btn\"))\n        return H ? H(e, o, {\n          config: s(),\n          state: l(),\n          driver: _()\n        }) : L(\"prevClick\");\n      if (T.closest(\".driver-popover-close-btn\"))\n        return $ ? $(e, o, {\n          config: s(),\n          state: l(),\n          driver: _()\n        }) : L(\"closeClick\");\n    },\n    (E) => !(t != null && t.description.contains(E)) && !(t != null && t.title.contains(E)) && typeof E.className == \"string\" && E.className.includes(\"driver-popover\")\n  ), k(\"popover\", t);\n  const x = ((P = o.popover) == null ? void 0 : P.onPopoverRender) || s(\"onPopoverRender\");\n  x && x(t, {\n    config: s(),\n    state: l(),\n    driver: _()\n  }), ae(e, o), ee(u);\n  const C = e.classList.contains(\"driver-dummy-element\"), S = U([u, ...C ? [] : [e]]);\n  S.length > 0 && S[0].focus();\n}\nfunction se() {\n  const e = l(\"popover\");\n  if (!(e != null && e.wrapper))\n    return;\n  const o = e.wrapper.getBoundingClientRect(), t = s(\"stagePadding\") || 0, i = s(\"popoverOffset\") || 0;\n  return {\n    width: o.width + t + i,\n    height: o.height + t + i,\n    realWidth: o.width,\n    realHeight: o.height\n  };\n}\nfunction Z(e, o) {\n  const { elementDimensions: t, popoverDimensions: i, popoverPadding: d, popoverArrowDimensions: n } = o;\n  return e === \"start\" ? Math.max(\n    Math.min(\n      t.top - d,\n      window.innerHeight - i.realHeight - n.width\n    ),\n    n.width\n  ) : e === \"end\" ? Math.max(\n    Math.min(\n      t.top - (i == null ? void 0 : i.realHeight) + t.height + d,\n      window.innerHeight - (i == null ? void 0 : i.realHeight) - n.width\n    ),\n    n.width\n  ) : e === \"center\" ? Math.max(\n    Math.min(\n      t.top + t.height / 2 - (i == null ? void 0 : i.realHeight) / 2,\n      window.innerHeight - (i == null ? void 0 : i.realHeight) - n.width\n    ),\n    n.width\n  ) : 0;\n}\nfunction G(e, o) {\n  const { elementDimensions: t, popoverDimensions: i, popoverPadding: d, popoverArrowDimensions: n } = o;\n  return e === \"start\" ? Math.max(\n    Math.min(\n      t.left - d,\n      window.innerWidth - i.realWidth - n.width\n    ),\n    n.width\n  ) : e === \"end\" ? Math.max(\n    Math.min(\n      t.left - (i == null ? void 0 : i.realWidth) + t.width + d,\n      window.innerWidth - (i == null ? void 0 : i.realWidth) - n.width\n    ),\n    n.width\n  ) : e === \"center\" ? Math.max(\n    Math.min(\n      t.left + t.width / 2 - (i == null ? void 0 : i.realWidth) / 2,\n      window.innerWidth - (i == null ? void 0 : i.realWidth) - n.width\n    ),\n    n.width\n  ) : 0;\n}\nfunction ae(e, o) {\n  const t = l(\"popover\");\n  if (!t)\n    return;\n  const { align: i = \"start\", side: d = \"left\" } = (o == null ? void 0 : o.popover) || {}, n = i, f = e.id === \"driver-dummy-element\" ? \"over\" : d, w = s(\"stagePadding\") || 0, r = se(), v = t.arrow.getBoundingClientRect(), g = e.getBoundingClientRect(), y = g.top - r.height;\n  let a = y >= 0;\n  const p = window.innerHeight - (g.bottom + r.height);\n  let c = p >= 0;\n  const u = g.left - r.width;\n  let h = u >= 0;\n  const m = window.innerWidth - (g.right + r.width);\n  let x = m >= 0;\n  const C = !a && !c && !h && !x;\n  let S = f;\n  if (f === \"top\" && a ? x = h = c = !1 : f === \"bottom\" && c ? x = h = a = !1 : f === \"left\" && h ? x = a = c = !1 : f === \"right\" && x && (h = a = c = !1), f === \"over\") {\n    const b = window.innerWidth / 2 - r.realWidth / 2, P = window.innerHeight / 2 - r.realHeight / 2;\n    t.wrapper.style.left = `${b}px`, t.wrapper.style.right = \"auto\", t.wrapper.style.top = `${P}px`, t.wrapper.style.bottom = \"auto\";\n  } else if (C) {\n    const b = window.innerWidth / 2 - (r == null ? void 0 : r.realWidth) / 2, P = 10;\n    t.wrapper.style.left = `${b}px`, t.wrapper.style.right = \"auto\", t.wrapper.style.bottom = `${P}px`, t.wrapper.style.top = \"auto\";\n  } else if (h) {\n    const b = Math.min(\n      u,\n      window.innerWidth - (r == null ? void 0 : r.realWidth) - v.width\n    ), P = Z(n, {\n      elementDimensions: g,\n      popoverDimensions: r,\n      popoverPadding: w,\n      popoverArrowDimensions: v\n    });\n    t.wrapper.style.left = `${b}px`, t.wrapper.style.top = `${P}px`, t.wrapper.style.bottom = \"auto\", t.wrapper.style.right = \"auto\", S = \"left\";\n  } else if (x) {\n    const b = Math.min(\n      m,\n      window.innerWidth - (r == null ? void 0 : r.realWidth) - v.width\n    ), P = Z(n, {\n      elementDimensions: g,\n      popoverDimensions: r,\n      popoverPadding: w,\n      popoverArrowDimensions: v\n    });\n    t.wrapper.style.right = `${b}px`, t.wrapper.style.top = `${P}px`, t.wrapper.style.bottom = \"auto\", t.wrapper.style.left = \"auto\", S = \"right\";\n  } else if (a) {\n    const b = Math.min(\n      y,\n      window.innerHeight - r.realHeight - v.width\n    );\n    let P = G(n, {\n      elementDimensions: g,\n      popoverDimensions: r,\n      popoverPadding: w,\n      popoverArrowDimensions: v\n    });\n    t.wrapper.style.top = `${b}px`, t.wrapper.style.left = `${P}px`, t.wrapper.style.bottom = \"auto\", t.wrapper.style.right = \"auto\", S = \"top\";\n  } else if (c) {\n    const b = Math.min(\n      p,\n      window.innerHeight - (r == null ? void 0 : r.realHeight) - v.width\n    );\n    let P = G(n, {\n      elementDimensions: g,\n      popoverDimensions: r,\n      popoverPadding: w,\n      popoverArrowDimensions: v\n    });\n    t.wrapper.style.left = `${P}px`, t.wrapper.style.bottom = `${b}px`, t.wrapper.style.top = \"auto\", t.wrapper.style.right = \"auto\", S = \"bottom\";\n  }\n  C ? t.arrow.classList.add(\"driver-popover-arrow-none\") : Ee(n, S, e);\n}\nfunction Ee(e, o, t) {\n  const i = l(\"popover\");\n  if (!i)\n    return;\n  const d = t.getBoundingClientRect(), n = se(), f = i.arrow, w = n.width, r = window.innerWidth, v = d.width, g = d.left, y = n.height, a = window.innerHeight, p = d.top, c = d.height;\n  f.className = \"driver-popover-arrow\";\n  let u = o, h = e;\n  if (o === \"top\" ? (g + v <= 0 ? (u = \"right\", h = \"end\") : g + v - w <= 0 && (u = \"top\", h = \"start\"), g >= r ? (u = \"left\", h = \"end\") : g + w >= r && (u = \"top\", h = \"end\")) : o === \"bottom\" ? (g + v <= 0 ? (u = \"right\", h = \"start\") : g + v - w <= 0 && (u = \"bottom\", h = \"start\"), g >= r ? (u = \"left\", h = \"start\") : g + w >= r && (u = \"bottom\", h = \"end\")) : o === \"left\" ? (p + c <= 0 ? (u = \"bottom\", h = \"end\") : p + c - y <= 0 && (u = \"left\", h = \"start\"), p >= a ? (u = \"top\", h = \"end\") : p + y >= a && (u = \"left\", h = \"end\")) : o === \"right\" && (p + c <= 0 ? (u = \"bottom\", h = \"start\") : p + c - y <= 0 && (u = \"right\", h = \"start\"), p >= a ? (u = \"top\", h = \"start\") : p + y >= a && (u = \"right\", h = \"end\")), !u)\n    f.classList.add(\"driver-popover-arrow-none\");\n  else {\n    f.classList.add(`driver-popover-arrow-side-${u}`), f.classList.add(`driver-popover-arrow-align-${h}`);\n    const m = t.getBoundingClientRect(), x = f.getBoundingClientRect(), C = s(\"stagePadding\") || 0, S = m.left - C < window.innerWidth && m.right + C > 0 && m.top - C < window.innerHeight && m.bottom + C > 0;\n    o === \"bottom\" && S && (x.x > m.x && x.x + x.width < m.x + m.width ? i.wrapper.style.transform = \"translateY(0)\" : (f.classList.remove(`driver-popover-arrow-align-${h}`), f.classList.add(\"driver-popover-arrow-none\"), i.wrapper.style.transform = `translateY(-${C / 2}px)`));\n  }\n}\nfunction Le() {\n  const e = document.createElement(\"div\");\n  e.classList.add(\"driver-popover\");\n  const o = document.createElement(\"div\");\n  o.classList.add(\"driver-popover-arrow\");\n  const t = document.createElement(\"header\");\n  t.id = \"driver-popover-title\", t.classList.add(\"driver-popover-title\"), t.style.display = \"none\", t.innerText = \"Popover Title\";\n  const i = document.createElement(\"div\");\n  i.id = \"driver-popover-description\", i.classList.add(\"driver-popover-description\"), i.style.display = \"none\", i.innerText = \"Popover description is here\";\n  const d = document.createElement(\"button\");\n  d.type = \"button\", d.classList.add(\"driver-popover-close-btn\"), d.setAttribute(\"aria-label\", \"Close\"), d.innerHTML = \"&times;\";\n  const n = document.createElement(\"footer\");\n  n.classList.add(\"driver-popover-footer\");\n  const f = document.createElement(\"span\");\n  f.classList.add(\"driver-popover-progress-text\"), f.innerText = \"\";\n  const w = document.createElement(\"span\");\n  w.classList.add(\"driver-popover-navigation-btns\");\n  const r = document.createElement(\"button\");\n  r.type = \"button\", r.classList.add(\"driver-popover-prev-btn\"), r.innerHTML = \"&larr; Previous\";\n  const v = document.createElement(\"button\");\n  return v.type = \"button\", v.classList.add(\"driver-popover-next-btn\"), v.innerHTML = \"Next &rarr;\", w.appendChild(r), w.appendChild(v), n.appendChild(f), n.appendChild(w), e.appendChild(d), e.appendChild(o), e.appendChild(t), e.appendChild(i), e.appendChild(n), {\n    wrapper: e,\n    arrow: o,\n    title: t,\n    description: i,\n    footer: n,\n    previousButton: r,\n    nextButton: v,\n    closeButton: d,\n    footerButtons: w,\n    progress: f\n  };\n}\nfunction Te() {\n  var o;\n  const e = l(\"popover\");\n  e && ((o = e.wrapper.parentElement) == null || o.removeChild(e.wrapper));\n}\nfunction Ae(e = {}) {\n  F(e);\n  function o() {\n    s(\"allowClose\") && g();\n  }\n  function t() {\n    const a = s(\"overlayClickBehavior\");\n    if (s(\"allowClose\") && a === \"close\") {\n      g();\n      return;\n    }\n    a === \"nextStep\" && i();\n  }\n  function i() {\n    const a = l(\"activeIndex\"), p = s(\"steps\") || [];\n    if (typeof a == \"undefined\")\n      return;\n    const c = a + 1;\n    p[c] ? v(c) : g();\n  }\n  function d() {\n    const a = l(\"activeIndex\"), p = s(\"steps\") || [];\n    if (typeof a == \"undefined\")\n      return;\n    const c = a - 1;\n    p[c] ? v(c) : g();\n  }\n  function n(a) {\n    (s(\"steps\") || [])[a] ? v(a) : g();\n  }\n  function f() {\n    var x;\n    if (l(\"__transitionCallback\"))\n      return;\n    const p = l(\"activeIndex\"), c = l(\"__activeStep\"), u = l(\"__activeElement\");\n    if (typeof p == \"undefined\" || typeof c == \"undefined\" || typeof l(\"activeIndex\") == \"undefined\")\n      return;\n    const m = ((x = c.popover) == null ? void 0 : x.onPrevClick) || s(\"onPrevClick\");\n    if (m)\n      return m(u, c, {\n        config: s(),\n        state: l(),\n        driver: _()\n      });\n    d();\n  }\n  function w() {\n    var m;\n    if (l(\"__transitionCallback\"))\n      return;\n    const p = l(\"activeIndex\"), c = l(\"__activeStep\"), u = l(\"__activeElement\");\n    if (typeof p == \"undefined\" || typeof c == \"undefined\")\n      return;\n    const h = ((m = c.popover) == null ? void 0 : m.onNextClick) || s(\"onNextClick\");\n    if (h)\n      return h(u, c, {\n        config: s(),\n        state: l(),\n        driver: _()\n      });\n    i();\n  }\n  function r() {\n    l(\"isInitialized\") || (k(\"isInitialized\", !0), document.body.classList.add(\"driver-active\", s(\"animate\") ? \"driver-fade\" : \"driver-simple\"), ke(), N(\"overlayClick\", t), N(\"escapePress\", o), N(\"arrowLeftPress\", f), N(\"arrowRightPress\", w));\n  }\n  function v(a = 0) {\n    var $, B, R, W, V, q, K, Y;\n    const p = s(\"steps\");\n    if (!p) {\n      console.error(\"No steps to drive through\"), g();\n      return;\n    }\n    if (!p[a]) {\n      g();\n      return;\n    }\n    k(\"__activeOnDestroyed\", document.activeElement), k(\"activeIndex\", a);\n    const c = p[a], u = p[a + 1], h = p[a - 1], m = (($ = c.popover) == null ? void 0 : $.doneBtnText) || s(\"doneBtnText\") || \"Done\", x = s(\"allowClose\"), C = typeof ((B = c.popover) == null ? void 0 : B.showProgress) != \"undefined\" ? (R = c.popover) == null ? void 0 : R.showProgress : s(\"showProgress\"), b = (((W = c.popover) == null ? void 0 : W.progressText) || s(\"progressText\") || \"{{current}} of {{total}}\").replace(\"{{current}}\", `${a + 1}`).replace(\"{{total}}\", `${p.length}`), P = ((V = c.popover) == null ? void 0 : V.showButtons) || s(\"showButtons\"), E = [\n      \"next\",\n      \"previous\",\n      ...x ? [\"close\"] : []\n    ].filter((ce) => !(P != null && P.length) || P.includes(ce)), T = ((q = c.popover) == null ? void 0 : q.onNextClick) || s(\"onNextClick\"), A = ((K = c.popover) == null ? void 0 : K.onPrevClick) || s(\"onPrevClick\"), H = ((Y = c.popover) == null ? void 0 : Y.onCloseClick) || s(\"onCloseClick\");\n    j({\n      ...c,\n      popover: {\n        showButtons: E,\n        nextBtnText: u ? void 0 : m,\n        disableButtons: [...h ? [] : [\"previous\"]],\n        showProgress: C,\n        progressText: b,\n        onNextClick: T || (() => {\n          u ? v(a + 1) : g();\n        }),\n        onPrevClick: A || (() => {\n          v(a - 1);\n        }),\n        onCloseClick: H || (() => {\n          g();\n        }),\n        ...(c == null ? void 0 : c.popover) || {}\n      }\n    });\n  }\n  function g(a = !0) {\n    const p = l(\"__activeElement\"), c = l(\"__activeStep\"), u = l(\"__activeOnDestroyed\"), h = s(\"onDestroyStarted\");\n    if (a && h) {\n      const C = !p || (p == null ? void 0 : p.id) === \"driver-dummy-element\";\n      h(C ? void 0 : p, c, {\n        config: s(),\n        state: l(),\n        driver: _()\n      });\n      return;\n    }\n    const m = (c == null ? void 0 : c.onDeselected) || s(\"onDeselected\"), x = s(\"onDestroyed\");\n    if (document.body.classList.remove(\"driver-active\", \"driver-fade\", \"driver-simple\"), Se(), Te(), Ce(), me(), de(), X(), p && c) {\n      const C = p.id === \"driver-dummy-element\";\n      m && m(C ? void 0 : p, c, {\n        config: s(),\n        state: l(),\n        driver: _()\n      }), x && x(C ? void 0 : p, c, {\n        config: s(),\n        state: l(),\n        driver: _()\n      });\n    }\n    u && u.focus();\n  }\n  const y = {\n    isActive: () => l(\"isInitialized\") || !1,\n    refresh: M,\n    drive: (a = 0) => {\n      r(), v(a);\n    },\n    setConfig: F,\n    setSteps: (a) => {\n      X(), F({\n        ...s(),\n        steps: a\n      });\n    },\n    getConfig: s,\n    getState: l,\n    getActiveIndex: () => l(\"activeIndex\"),\n    isFirstStep: () => l(\"activeIndex\") === 0,\n    isLastStep: () => {\n      const a = s(\"steps\") || [], p = l(\"activeIndex\");\n      return p !== void 0 && p === a.length - 1;\n    },\n    getActiveStep: () => l(\"activeStep\"),\n    getActiveElement: () => l(\"activeElement\"),\n    getPreviousElement: () => l(\"previousElement\"),\n    getPreviousStep: () => l(\"previousStep\"),\n    moveNext: i,\n    movePrevious: d,\n    moveTo: n,\n    hasNextStep: () => {\n      const a = s(\"steps\") || [], p = l(\"activeIndex\");\n      return p !== void 0 && !!a[p + 1];\n    },\n    hasPreviousStep: () => {\n      const a = s(\"steps\") || [], p = l(\"activeIndex\");\n      return p !== void 0 && !!a[p - 1];\n    },\n    highlight: (a) => {\n      r(), j({\n        ...a,\n        popover: a.popover ? {\n          showButtons: [],\n          showProgress: !1,\n          progressText: \"\",\n          ...a.popover\n        } : void 0\n      });\n    },\n    destroy: () => {\n      g(!1);\n    }\n  };\n  return le(y), y;\n}\nexport {\n  Ae as driver\n};\n","// TourAnalyticsCollector - Handles tour analytics and event tracking\r\nimport type { TourAnalyticsEvent } from '../tour-types';\r\n\r\nexport class TourAnalyticsCollector {\r\n  private events: TourAnalyticsEvent[] = [];\r\n  private isOnline: boolean = navigator.onLine;\r\n\r\n  constructor() {\r\n    // Listen for online/offline events\r\n    window.addEventListener('online', this.handleOnline.bind(this));\r\n    window.addEventListener('offline', this.handleOffline.bind(this));\r\n  }\r\n\r\n  trackEvent(event: TourAnalyticsEvent): void {\r\n    this.events.push(event);\r\n    \r\n    // Store in localStorage for offline persistence\r\n    this.persistEvents();\r\n\r\n    // Try to send immediately if online\r\n    if (this.isOnline) {\r\n      this.flushEvents();\r\n    }\r\n  }\r\n\r\n  trackTourStart(tourId: string): void {\r\n    this.trackEvent({\r\n      tourId,\r\n      eventType: 'start',\r\n      sessionId: this.generateSessionId(),\r\n      timestamp: new Date().toISOString(),\r\n    });\r\n  }\r\n\r\n  trackTourComplete(tourId: string): void {\r\n    this.trackEvent({\r\n      tourId,\r\n      eventType: 'complete',\r\n      sessionId: this.generateSessionId(),\r\n      timestamp: new Date().toISOString(),\r\n    });\r\n  }\r\n\r\n  trackTourAbandon(tourId: string, stepIndex?: number): void {\r\n    this.trackEvent({\r\n      tourId,\r\n      eventType: 'abandon',\r\n      stepIndex,\r\n      sessionId: this.generateSessionId(),\r\n      timestamp: new Date().toISOString(),\r\n    });\r\n  }\r\n\r\n  trackStepView(tourId: string, stepIndex: number): void {\r\n    this.trackEvent({\r\n      tourId,\r\n      eventType: 'step_view',\r\n      stepIndex,\r\n      sessionId: this.generateSessionId(),\r\n      timestamp: new Date().toISOString(),\r\n    });\r\n  }\r\n\r\n  private persistEvents(): void {\r\n    try {\r\n      localStorage.setItem('leadforward_tour_events', JSON.stringify(this.events));\r\n    } catch (error) {\r\n      console.warn('Failed to persist tour events to localStorage:', error);\r\n    }\r\n  }\r\n\r\n  private loadPersistedEvents(): void {\r\n    try {\r\n      const stored = localStorage.getItem('leadforward_tour_events');\r\n      if (stored) {\r\n        this.events = JSON.parse(stored);\r\n      }\r\n    } catch (error) {\r\n      console.warn('Failed to load persisted tour events:', error);\r\n      this.events = [];\r\n    }\r\n  }\r\n\r\n  private async flushEvents(): Promise<void> {\r\n    if (this.events.length === 0) return;\r\n\r\n    try {\r\n      // Placeholder for API call to send events\r\n      // This will be implemented in a later task when API endpoints are created\r\n      // console.log('Would send tour events:', this.events);\r\n      \r\n      // Clear events after successful send\r\n      this.events = [];\r\n      localStorage.removeItem('leadforward_tour_events');\r\n    } catch (error) {\r\n      console.error('Failed to send tour events:', error);\r\n    }\r\n  }\r\n\r\n  private handleOnline(): void {\r\n    this.isOnline = true;\r\n    this.loadPersistedEvents();\r\n    this.flushEvents();\r\n  }\r\n\r\n  private handleOffline(): void {\r\n    this.isOnline = false;\r\n  }\r\n\r\n  private generateSessionId(): string {\r\n    return `session_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;\r\n  }\r\n\r\n  destroy(): void {\r\n    window.removeEventListener('online', this.handleOnline.bind(this));\r\n    window.removeEventListener('offline', this.handleOffline.bind(this));\r\n  }\r\n}","// TourTriggerManager - Handles tour trigger evaluation and execution\r\nimport type { Tour, TourTrigger } from '../tour-types';\r\n\r\nexport interface TriggerEvaluationContext {\r\n  currentUrl: string;\r\n  currentPath: string;\r\n  scrollPosition: number;\r\n  timeOnPage: number;\r\n  sessionId: string;\r\n  userAgent: string;\r\n}\r\n\r\nexport interface TriggerState {\r\n  tourId: string;\r\n  triggerId: string;\r\n  lastTriggered?: number;\r\n  triggerCount: number;\r\n  isActive: boolean;\r\n}\r\n\r\nexport class TourTriggerManager {\r\n  private tours: Tour[] = [];\r\n  private triggerStates: Map<string, TriggerState> = new Map();\r\n  private eventListeners: (() => void)[] = [];\r\n  private pageLoadTime: number = Date.now();\r\n  private sessionId: string;\r\n  private onTourTriggered?: (tourId: string, triggerId: string) => void;\r\n\r\n  constructor(sessionId: string, onTourTriggered?: (tourId: string, triggerId: string) => void) {\r\n    this.sessionId = sessionId;\r\n    this.onTourTriggered = onTourTriggered;\r\n  }\r\n\r\n  /**\r\n   * Initialize the trigger manager with tours and set up event listeners\r\n   */\r\n  initialize(tours: Tour[]): void {\r\n    this.tours = tours;\r\n    this.loadTriggerStates();\r\n    this.setupEventListeners();\r\n    this.evaluateAutoTriggers();\r\n  }\r\n\r\n  /**\r\n   * Add a new tour to the trigger manager\r\n   */\r\n  addTour(tour: Tour): void {\r\n    const existingIndex = this.tours.findIndex(t => t.id === tour.id);\r\n    const isNewTour = existingIndex < 0;\r\n    \r\n    if (existingIndex >= 0) {\r\n      this.tours[existingIndex] = tour;\r\n    } else {\r\n      this.tours.push(tour);\r\n    }\r\n    \r\n    // Only evaluate auto triggers for new tours\r\n    if (isNewTour) {\r\n      this.evaluateAutoTriggers();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Remove a tour from the trigger manager\r\n   */\r\n  removeTour(tourId: string): void {\r\n    this.tours = this.tours.filter(tour => tour.id !== tourId);\r\n    // Clean up trigger states for removed tour\r\n    const keysToRemove = Array.from(this.triggerStates.keys()).filter(key => key.startsWith(`${tourId}_`));\r\n    keysToRemove.forEach(key => this.triggerStates.delete(key));\r\n    this.saveTriggerStates();\r\n  }\r\n\r\n  /**\r\n   * Manually trigger a tour (for manual trigger type)\r\n   */\r\n  triggerTour(tourId: string): boolean {\r\n    const tour = this.tours.find(t => t.id === tourId);\r\n    if (!tour) {\r\n      return false;\r\n    }\r\n\r\n    const manualTrigger = tour.triggers.find(trigger => trigger.type === 'manual');\r\n    if (!manualTrigger) {\r\n      return false;\r\n    }\r\n\r\n    if (!this.canTrigger(tour, manualTrigger)) {\r\n      return false;\r\n    }\r\n\r\n    return this.executeTrigger(tour, manualTrigger);\r\n  }\r\n\r\n  /**\r\n   * Get the current evaluation context\r\n   */\r\n  private getEvaluationContext(): TriggerEvaluationContext {\r\n    return {\r\n      currentUrl: window.location.href,\r\n      currentPath: window.location.pathname,\r\n      scrollPosition: window.pageYOffset || document.documentElement.scrollTop,\r\n      timeOnPage: Date.now() - this.pageLoadTime,\r\n      sessionId: this.sessionId,\r\n      userAgent: navigator.userAgent\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Evaluate all auto triggers on initialization\r\n   */\r\n  private evaluateAutoTriggers(): void {\r\n    // console.log('TourTriggerManager: Evaluating auto triggers...');\r\n    const context = this.getEvaluationContext();\r\n    // console.log('TourTriggerManager: Evaluation context:', context);\r\n    \r\n    const eligibleTriggers = this.getEligibleTriggers('auto', context);\r\n    // console.log('TourTriggerManager: Found eligible auto triggers:', eligibleTriggers.length);\r\n    \r\n    if (eligibleTriggers.length > 0) {\r\n      // Sort by priority (higher priority first)\r\n      eligibleTriggers.sort((a, b) => b.trigger.priority - a.trigger.priority);\r\n      \r\n      // Execute the highest priority trigger\r\n      const { tour, trigger } = eligibleTriggers[0];\r\n      // console.log('TourTriggerManager: Executing highest priority trigger:', tour.id, trigger);\r\n      this.executeTrigger(tour, trigger);\r\n    } else {\r\n      // console.log('TourTriggerManager: No eligible auto triggers found');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set up event listeners for different trigger types\r\n   */\r\n  private setupEventListeners(): void {\r\n    // URL-based triggers (listen for navigation changes)\r\n    const handleUrlChange = () => {\r\n      const context = this.getEvaluationContext();\r\n      const eligibleTriggers = this.getEligibleTriggers('url', context);\r\n      this.processEligibleTriggers(eligibleTriggers);\r\n    };\r\n\r\n    // Listen for popstate (back/forward navigation)\r\n    window.addEventListener('popstate', handleUrlChange);\r\n    this.eventListeners.push(() => window.removeEventListener('popstate', handleUrlChange));\r\n\r\n    // Listen for pushstate/replacestate (programmatic navigation)\r\n    const originalPushState = history.pushState;\r\n    const originalReplaceState = history.replaceState;\r\n\r\n    history.pushState = function(...args) {\r\n      originalPushState.apply(history, args);\r\n      setTimeout(handleUrlChange, 0);\r\n    };\r\n\r\n    history.replaceState = function(...args) {\r\n      originalReplaceState.apply(history, args);\r\n      setTimeout(handleUrlChange, 0);\r\n    };\r\n\r\n    this.eventListeners.push(() => {\r\n      history.pushState = originalPushState;\r\n      history.replaceState = originalReplaceState;\r\n    });\r\n\r\n    // Scroll-based triggers\r\n    let scrollTimeout: NodeJS.Timeout;\r\n    const handleScroll = () => {\r\n      clearTimeout(scrollTimeout);\r\n      scrollTimeout = setTimeout(() => {\r\n        const context = this.getEvaluationContext();\r\n        const eligibleTriggers = this.getEligibleTriggers('scroll', context);\r\n        this.processEligibleTriggers(eligibleTriggers);\r\n      }, 100); // Debounce scroll events\r\n    };\r\n\r\n    window.addEventListener('scroll', handleScroll, { passive: true });\r\n    this.eventListeners.push(() => {\r\n      window.removeEventListener('scroll', handleScroll);\r\n      clearTimeout(scrollTimeout);\r\n    });\r\n\r\n    // Element-based triggers (using intersection observer)\r\n    this.setupElementTriggers();\r\n\r\n    // Time-based triggers\r\n    this.setupTimeTriggers();\r\n  }\r\n\r\n  /**\r\n   * Set up element-based triggers using Intersection Observer\r\n   */\r\n  private setupElementTriggers(): void {\r\n    const elementTriggers = this.tours.flatMap(tour =>\r\n      tour.triggers\r\n        .filter(trigger => trigger.type === 'element' && trigger.condition)\r\n        .map(trigger => ({ tour, trigger }))\r\n    );\r\n\r\n    if (elementTriggers.length === 0) {\r\n      return;\r\n    }\r\n\r\n    const observerCallback = (entries: IntersectionObserverEntry[]) => {\r\n      entries.forEach(entry => {\r\n        if (entry.isIntersecting) {\r\n          const selector = entry.target.getAttribute('data-tour-selector');\r\n          if (selector) {\r\n            const matchingTriggers = elementTriggers.filter(\r\n              ({ trigger }) => trigger.condition === selector\r\n            );\r\n            this.processEligibleTriggers(matchingTriggers);\r\n          }\r\n        }\r\n      });\r\n    };\r\n\r\n    const observer = new IntersectionObserver(observerCallback, {\r\n      threshold: 0.1,\r\n      rootMargin: '0px'\r\n    });\r\n\r\n    // Observe elements for each trigger\r\n    elementTriggers.forEach(({ trigger }) => {\r\n      if (trigger.condition) {\r\n        try {\r\n          const elements = document.querySelectorAll(trigger.condition);\r\n          elements.forEach(element => {\r\n            element.setAttribute('data-tour-selector', trigger.condition!);\r\n            observer.observe(element);\r\n          });\r\n        } catch (error) {\r\n          console.warn(`Invalid selector for element trigger: ${trigger.condition}`, error);\r\n        }\r\n      }\r\n    });\r\n\r\n    this.eventListeners.push(() => observer.disconnect());\r\n  }\r\n\r\n  /**\r\n   * Set up time-based triggers\r\n   */\r\n  private setupTimeTriggers(): void {\r\n    const timeTriggers = this.tours.flatMap(tour =>\r\n      tour.triggers\r\n        .filter(trigger => trigger.type === 'time' && trigger.condition)\r\n        .map(trigger => ({ tour, trigger }))\r\n    );\r\n\r\n    timeTriggers.forEach(({ tour, trigger }) => {\r\n      const delay = parseInt(trigger.condition || '0', 10);\r\n      if (delay > 0) {\r\n        const timeoutId = setTimeout(() => {\r\n          if (this.canTrigger(tour, trigger)) {\r\n            this.executeTrigger(tour, trigger);\r\n          }\r\n        }, delay * 1000); // Convert seconds to milliseconds\r\n\r\n        this.eventListeners.push(() => clearTimeout(timeoutId));\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Get eligible triggers for a specific type\r\n   */\r\n  private getEligibleTriggers(\r\n    triggerType: TourTrigger['type'],\r\n    context: TriggerEvaluationContext\r\n  ): Array<{ tour: Tour; trigger: TourTrigger }> {\r\n    const eligibleTriggers: Array<{ tour: Tour; trigger: TourTrigger }> = [];\r\n\r\n    for (const tour of this.tours) {\r\n      if (!tour.isActive) {\r\n        continue;\r\n      }\r\n\r\n      for (const trigger of tour.triggers) {\r\n        if (trigger.type !== triggerType) {\r\n          continue;\r\n        }\r\n\r\n        if (!this.canTrigger(tour, trigger)) {\r\n          continue;\r\n        }\r\n\r\n        if (this.evaluateTriggerCondition(trigger, context)) {\r\n          eligibleTriggers.push({ tour, trigger });\r\n        }\r\n      }\r\n    }\r\n\r\n    return eligibleTriggers;\r\n  }\r\n\r\n  /**\r\n   * Process eligible triggers by priority\r\n   */\r\n  private processEligibleTriggers(eligibleTriggers: Array<{ tour: Tour; trigger: TourTrigger }>): void {\r\n    if (eligibleTriggers.length === 0) {\r\n      return;\r\n    }\r\n\r\n    // Sort by priority (higher priority first)\r\n    eligibleTriggers.sort((a, b) => b.trigger.priority - a.trigger.priority);\r\n\r\n    // Execute the highest priority trigger that hasn't been triggered recently\r\n    for (const { tour, trigger } of eligibleTriggers) {\r\n      if (this.executeTrigger(tour, trigger)) {\r\n        break; // Only execute one trigger at a time\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Check if a trigger can be executed (cooldown, limits, etc.)\r\n   */\r\n  private canTrigger(tour: Tour, trigger: TourTrigger): boolean {\r\n    // console.log('TourTriggerManager: Checking if tour can trigger:', tour.id, trigger.type);\r\n    \r\n    // Check session limits first\r\n    if (tour.targeting.showOncePerSession) {\r\n      const sessionKey = `tour_shown_${tour.id}_${this.sessionId}`;\r\n      const hasShownInSession = sessionStorage.getItem(sessionKey);\r\n      // console.log('TourTriggerManager: Session check:', { sessionKey, hasShownInSession });\r\n      if (hasShownInSession) {\r\n        // console.log('TourTriggerManager: Tour blocked - already shown in session');\r\n        return false;\r\n      }\r\n    }\r\n\r\n    // Check max show count\r\n    if (tour.targeting.maxShowCount !== undefined) {\r\n      const countKey = `tour_count_${tour.id}`;\r\n      const currentCount = parseInt(localStorage.getItem(countKey) || '0', 10);\r\n      // console.log('TourTriggerManager: Show count check:', { countKey, currentCount, maxShowCount: tour.targeting.maxShowCount });\r\n      if (currentCount >= tour.targeting.maxShowCount) {\r\n        // console.log('TourTriggerManager: Tour blocked - max show count exceeded');\r\n        return false;\r\n      }\r\n    }\r\n\r\n    // Check cooldown\r\n    if (trigger.cooldown) {\r\n      const triggerKey = `${tour.id}_${trigger.type}_${trigger.priority}`;\r\n      const state = this.triggerStates.get(triggerKey);\r\n      \r\n      if (state?.lastTriggered) {\r\n        const cooldownMs = trigger.cooldown * 60 * 1000;\r\n        const timeSinceLastTrigger = Date.now() - state.lastTriggered;\r\n        // console.log('TourTriggerManager: Cooldown check:', { triggerKey, timeSinceLastTrigger, cooldownMs });\r\n        if (timeSinceLastTrigger < cooldownMs) {\r\n          // console.log('TourTriggerManager: Tour blocked - still in cooldown');\r\n          return false;\r\n        }\r\n      }\r\n    }\r\n\r\n    // console.log('TourTriggerManager: Tour can trigger');\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * Evaluate trigger condition based on trigger type\r\n   */\r\n  private evaluateTriggerCondition(trigger: TourTrigger, context: TriggerEvaluationContext): boolean {\r\n    switch (trigger.type) {\r\n      case 'auto':\r\n        return true; // Auto triggers are always eligible when canTrigger passes\r\n\r\n      case 'manual':\r\n        return false; // Manual triggers are only executed via triggerTour method\r\n\r\n      case 'url':\r\n        if (!trigger.condition) return true;\r\n        return this.matchesUrlPattern(trigger.condition, context.currentUrl, context.currentPath);\r\n\r\n      case 'element':\r\n        // Element triggers are handled by intersection observer\r\n        return false;\r\n\r\n      case 'time':\r\n        if (!trigger.condition) return false;\r\n        const delay = parseInt(trigger.condition, 10);\r\n        return context.timeOnPage >= (delay * 1000);\r\n\r\n      case 'scroll':\r\n        if (!trigger.condition) return false;\r\n        const scrollThreshold = parseInt(trigger.condition, 10);\r\n        const scrollPercentage = this.getScrollPercentage();\r\n        return scrollPercentage >= scrollThreshold;\r\n\r\n      default:\r\n        return false;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Check if URL matches pattern\r\n   */\r\n  private matchesUrlPattern(pattern: string, url: string, path: string): boolean {\r\n    // Convert simple wildcard patterns to regex\r\n    const regexPattern = pattern\r\n      .replace(/\\*/g, '.*')\r\n      .replace(/\\?/g, '.');\r\n\r\n    try {\r\n      const regex = new RegExp(`^${regexPattern}$`, 'i');\r\n      return regex.test(url) || regex.test(path);\r\n    } catch {\r\n      // Fallback to simple string matching if regex is invalid\r\n      return url.toLowerCase().includes(pattern.toLowerCase()) ||\r\n             path.toLowerCase().includes(pattern.toLowerCase());\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Get current scroll percentage\r\n   */\r\n  private getScrollPercentage(): number {\r\n    const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;\r\n    \r\n    if (scrollHeight <= 0) {\r\n      return 100; // If page doesn't scroll, consider it 100% scrolled\r\n    }\r\n    \r\n    return Math.min(100, Math.max(0, (scrollTop / scrollHeight) * 100));\r\n  }\r\n\r\n  /**\r\n   * Execute a trigger and update state\r\n   */\r\n  private executeTrigger(tour: Tour, trigger: TourTrigger): boolean {\r\n    const triggerKey = `${tour.id}_${trigger.type}_${trigger.priority}`;\r\n    \r\n    // Update session tracking immediately\r\n    if (tour.targeting.showOncePerSession) {\r\n      const sessionKey = `tour_shown_${tour.id}_${this.sessionId}`;\r\n      sessionStorage.setItem(sessionKey, 'true');\r\n    }\r\n\r\n    // Update show count\r\n    if (tour.targeting.maxShowCount !== undefined) {\r\n      const countKey = `tour_count_${tour.id}`;\r\n      const currentCount = parseInt(localStorage.getItem(countKey) || '0', 10);\r\n      localStorage.setItem(countKey, (currentCount + 1).toString());\r\n    }\r\n    \r\n    // Update trigger state\r\n    const state: TriggerState = {\r\n      tourId: tour.id,\r\n      triggerId: triggerKey,\r\n      lastTriggered: Date.now(),\r\n      triggerCount: (this.triggerStates.get(triggerKey)?.triggerCount || 0) + 1,\r\n      isActive: true\r\n    };\r\n\r\n    this.triggerStates.set(triggerKey, state);\r\n    this.saveTriggerStates();\r\n\r\n    // Execute the callback\r\n    if (this.onTourTriggered) {\r\n      this.onTourTriggered(tour.id, triggerKey);\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * Load trigger states from localStorage\r\n   */\r\n  private loadTriggerStates(): void {\r\n    try {\r\n      const stored = localStorage.getItem('leadforward_trigger_states');\r\n      if (stored) {\r\n        const states = JSON.parse(stored);\r\n        this.triggerStates = new Map(Object.entries(states));\r\n      }\r\n    } catch (error) {\r\n      console.warn('Failed to load trigger states:', error);\r\n      this.triggerStates = new Map();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Save trigger states to localStorage\r\n   */\r\n  private saveTriggerStates(): void {\r\n    try {\r\n      const states = Object.fromEntries(this.triggerStates);\r\n      localStorage.setItem('leadforward_trigger_states', JSON.stringify(states));\r\n    } catch (error) {\r\n      console.warn('Failed to save trigger states:', error);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Clean up event listeners and timers\r\n   */\r\n  destroy(): void {\r\n    this.eventListeners.forEach(cleanup => cleanup());\r\n    this.eventListeners = [];\r\n    this.triggerStates.clear();\r\n  }\r\n\r\n  /**\r\n   * Get trigger statistics for debugging/analytics\r\n   */\r\n  getTriggerStats(): Record<string, TriggerState> {\r\n    return Object.fromEntries(this.triggerStates);\r\n  }\r\n\r\n  /**\r\n   * Reset trigger state for a specific tour (useful for testing)\r\n   */\r\n  resetTourTriggers(tourId: string): void {\r\n    const keysToRemove = Array.from(this.triggerStates.keys()).filter(key => key.startsWith(`${tourId}_`));\r\n    keysToRemove.forEach(key => this.triggerStates.delete(key));\r\n    \r\n    // Also clear session and localStorage data\r\n    const sessionKey = `tour_shown_${tourId}_${this.sessionId}`;\r\n    sessionStorage.removeItem(sessionKey);\r\n    \r\n    const countKey = `tour_count_${tourId}`;\r\n    localStorage.removeItem(countKey);\r\n    \r\n    const lastShownKey = `tour_last_shown_${tourId}`;\r\n    localStorage.removeItem(lastShownKey);\r\n    \r\n    this.saveTriggerStates();\r\n  }\r\n}","// TourStyleManager - Handles tour styling and theming\r\nimport type { TourConfig, LeadForwardConfig } from '../types';\r\n\r\nexport class TourStyleManager {\r\n  private config: TourConfig;\r\n  private widgetConfig?: LeadForwardConfig;\r\n  private styleElement: HTMLStyleElement | null = null;\r\n  private readonly styleId = 'leadforward-tour-styles';\r\n\r\n  constructor(config: TourConfig, widgetConfig?: LeadForwardConfig) {\r\n    this.config = config;\r\n    this.widgetConfig = widgetConfig;\r\n  }\r\n\r\n  /**\r\n   * Apply tour styling to the page\r\n   */\r\n  applyStyles(customCSS?: string): void {\r\n    // Remove existing styles\r\n    this.removeStyles();\r\n\r\n    // Generate CSS based on configuration\r\n    const css = this.generateTourCSS(customCSS);\r\n    \r\n    // Apply CSS to page\r\n    this.injectCSS(css);\r\n  }\r\n\r\n  /**\r\n   * Remove tour styles from the page\r\n   */\r\n  removeStyles(): void {\r\n    if (this.styleElement) {\r\n      this.styleElement.remove();\r\n      this.styleElement = null;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Update styles with new configuration\r\n   */\r\n  updateStyles(newConfig: TourConfig, newWidgetConfig?: LeadForwardConfig, customCSS?: string): void {\r\n    this.config = newConfig;\r\n    this.widgetConfig = newWidgetConfig;\r\n    this.applyStyles(customCSS);\r\n  }\r\n\r\n  /**\r\n   * Generate CSS for tour styling\r\n   */\r\n  private generateTourCSS(customCSS?: string): string {\r\n    const isDark = this.resolveTheme();\r\n    const primaryColor = this.widgetConfig?.primaryColor || '#6366f1';\r\n    \r\n    // Match exact theming from LeadForwardWidget\r\n    const background = isDark ? \"#1f2937\" : \"#ffffff\";\r\n    const textColor = isDark ? \"#f9fafb\" : \"#111827\";\r\n    const borderColor = isDark ? \"#374151\" : \"#e5e7eb\";\r\n    const shadowColor = isDark ? \"rgba(0, 0, 0, 0.5)\" : \"rgba(0, 0, 0, 0.15)\";\r\n    const overlayColor = isDark ? \"rgba(0, 0, 0, 0.8)\" : \"rgba(0, 0, 0, 0.6)\";\r\n\r\n    return `\r\n      /* Driver.js tour styling customizations */\r\n      \r\n      .driver-popover {\r\n        background-color: ${background} !important;\r\n        color: ${textColor} !important;\r\n        border: 1px solid ${borderColor} !important;\r\n        border-radius: 8px !important;\r\n        box-shadow: 0 10px 25px ${shadowColor} !important;\r\n        max-width: 300px !important;\r\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif !important;\r\n      }\r\n\r\n      .driver-popover-title {\r\n        color: ${textColor} !important;\r\n        font-size: 16px !important;\r\n        font-weight: 600 !important;\r\n        margin-bottom: 8px !important;\r\n        border-bottom: 1px solid ${borderColor} !important;\r\n        padding-bottom: 8px !important;\r\n      }\r\n\r\n      .driver-popover-description {\r\n        color: ${isDark ? \"#d1d5db\" : \"#4b5563\"} !important;\r\n        font-size: 14px !important;\r\n        line-height: 1.5 !important;\r\n        margin-bottom: 16px !important;\r\n      }\r\n\r\n      .driver-popover-footer {\r\n        display: flex !important;\r\n        justify-content: space-between !important;\r\n        align-items: center !important;\r\n        gap: 8px !important;\r\n        border-top: 1px solid ${borderColor} !important;\r\n        padding-top: 12px !important;\r\n      }\r\n\r\n      .driver-popover-btn {\r\n        background-color: ${primaryColor} !important;\r\n        color: white !important;\r\n        border: none !important;\r\n        border-radius: 6px !important;\r\n        padding: 8px 16px !important;\r\n        font-size: 14px !important;\r\n        font-weight: 500 !important;\r\n        cursor: pointer !important;\r\n        transition: all 0.2s ease !important;\r\n        font-family: inherit !important;\r\n      }\r\n\r\n      .driver-popover-btn:hover {\r\n        background-color: ${this.adjustBrightness(primaryColor, -20)} !important;\r\n        transform: translateY(-1px) !important;\r\n      }\r\n\r\n      .driver-popover-btn:disabled {\r\n        background-color: ${isDark ? \"#374151\" : \"#e5e7eb\"} !important;\r\n        color: ${isDark ? \"#9ca3af\" : \"#6b7280\"} !important;\r\n        cursor: not-allowed !important;\r\n        transform: none !important;\r\n      }\r\n\r\n      .driver-popover-prev-btn {\r\n        background-color: transparent !important;\r\n        color: ${textColor} !important;\r\n        border: 1px solid ${borderColor} !important;\r\n      }\r\n\r\n      .driver-popover-prev-btn:hover {\r\n        background-color: ${isDark ? \"#374151\" : \"#f3f4f6\"} !important;\r\n        border-color: ${primaryColor} !important;\r\n      }\r\n\r\n      .driver-popover-close-btn {\r\n        position: absolute !important;\r\n        top: 8px !important;\r\n        right: 8px !important;\r\n        background: transparent !important;\r\n        border: none !important;\r\n        color: ${isDark ? \"#9ca3af\" : \"#6b7280\"} !important;\r\n        font-size: 16px !important;\r\n        cursor: pointer !important;\r\n        width: 24px !important;\r\n        height: 24px !important;\r\n        display: flex !important;\r\n        align-items: center !important;\r\n        justify-content: center !important;\r\n        border-radius: 4px !important;\r\n      }\r\n\r\n      .driver-popover-close-btn:hover {\r\n        background-color: ${isDark ? \"#374151\" : \"#f3f4f6\"} !important;\r\n        color: ${textColor} !important;\r\n      }\r\n\r\n      .driver-popover-progress-text {\r\n        color: ${isDark ? \"#9ca3af\" : \"#6b7280\"} !important;\r\n        font-size: 12px !important;\r\n        font-weight: 500 !important;\r\n      }\r\n\r\n      .driver-highlighted-element {\r\n        border: 2px solid ${primaryColor} !important;\r\n        border-radius: 4px !important;\r\n        box-shadow: 0 0 0 4px ${primaryColor}33 !important;\r\n      }\r\n\r\n      .driver-popover-arrow {\r\n        border-color: ${background} !important;\r\n      }\r\n\r\n      .driver-popover-arrow-border {\r\n        border-color: ${borderColor} !important;\r\n      }\r\n\r\n      /* Animation improvements */\r\n      .driver-popover {\r\n        animation: driverFadeIn 0.3s ease-out !important;\r\n      }\r\n\r\n      @keyframes driverFadeIn {\r\n        from {\r\n          opacity: 0;\r\n          transform: translateY(10px) scale(0.95);\r\n        }\r\n        to {\r\n          opacity: 1;\r\n          transform: translateY(0) scale(1);\r\n        }\r\n      }\r\n\r\n      /* Custom CSS overrides */\r\n      ${customCSS || ''}\r\n    `;\r\n  }\r\n\r\n  /**\r\n   * Resolve the theme to use - simplified to match widget theming\r\n   */\r\n  private resolveTheme(): boolean {\r\n    // Check widget config theme first\r\n    if (this.widgetConfig?.theme === 'dark') return true;\r\n    if (this.widgetConfig?.theme === 'light') return false;\r\n    \r\n    // Auto mode - check system preference\r\n    if (this.widgetConfig?.theme === 'auto' && typeof window !== 'undefined' && window.matchMedia) {\r\n      return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n    }\r\n    \r\n    // Default to light theme\r\n    return false;\r\n  }\r\n\r\n  /**\r\n   * Simple brightness adjustment for colors\r\n   */\r\n  private adjustBrightness(color: string, amount: number): string {\r\n    if (!color.startsWith('#')) return color;\r\n    \r\n    const hex = color.slice(1);\r\n    const r = Math.max(0, Math.min(255, parseInt(hex.slice(0, 2), 16) + amount));\r\n    const g = Math.max(0, Math.min(255, parseInt(hex.slice(2, 4), 16) + amount));\r\n    const b = Math.max(0, Math.min(255, parseInt(hex.slice(4, 6), 16) + amount));\r\n    \r\n    return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\r\n  }\r\n\r\n  /**\r\n   * Inject CSS into the page\r\n   */\r\n  private injectCSS(css: string): void {\r\n    this.styleElement = document.createElement('style');\r\n    this.styleElement.id = this.styleId;\r\n    this.styleElement.textContent = css;\r\n    document.head.appendChild(this.styleElement);\r\n  }\r\n}","// TourEngine - Core tour functionality wrapper for Driver.js\r\nimport { driver, type Driver, type DriveStep } from 'driver.js';\r\nimport type {\r\n    Tour,\r\n    TourConfig,\r\n    TourStep,\r\n    TourTargeting,\r\n    LeadForwardConfig\r\n} from '../tour-types';\r\nimport { TourAnalyticsCollector } from './TourAnalyticsCollector';\r\nimport { TourTriggerManager } from './TourTriggerManager';\r\nimport { TourStyleManager } from './TourStyleManager';\r\n\r\nexport class TourEngine {\r\n    private driver: Driver | null = null;\r\n    private config: TourConfig;\r\n    private widgetConfig?: LeadForwardConfig;\r\n    private activeTours: Tour[] = [];\r\n    private analytics: TourAnalyticsCollector;\r\n    private triggerManager: TourTriggerManager;\r\n    private styleManager: TourStyleManager;\r\n    private sessionId: string;\r\n    private currentTourId: string | null = null;\r\n    private tourStartTime: number | null = null;\r\n    private currentTourSteps: TourStep[] = []; // Store current tour steps for auto-click functionality\r\n\r\n    constructor(config: TourConfig, widgetConfig?: LeadForwardConfig) {\r\n        this.config = config;\r\n        this.widgetConfig = widgetConfig;\r\n        this.analytics = new TourAnalyticsCollector();\r\n        this.sessionId = this.generateSessionId();\r\n        this.triggerManager = new TourTriggerManager(\r\n            this.sessionId,\r\n            (tourId: string, triggerId: string) => this.handleTriggerActivated(tourId, triggerId)\r\n        );\r\n        this.styleManager = new TourStyleManager(config, widgetConfig);\r\n        \r\n        // Make debug methods available globally for troubleshooting\r\n        (window as any).tourEngineDebug = {\r\n            getCurrentSteps: () => this.currentTourSteps,\r\n            getCurrentTourId: () => this.currentTourId,\r\n            testAutoClick: (stepIndex: number) => this.testAutoClick(stepIndex),\r\n            isActive: () => this.isActive(),\r\n            getActiveTours: () => this.getActiveTours(),\r\n            manualNext: (stepIndex: number) => this.handleStepNext(stepIndex),\r\n            manualPrev: (stepIndex: number) => this.handleStepPrevious(stepIndex),\r\n            getDriver: () => this.driver,\r\n        };\r\n    }\r\n\r\n    async initialize(): Promise<void> {\r\n        // console.log('TourEngine: Starting initialization...', { enableTours: this.config.enableTours });\r\n        \r\n        if (!this.config.enableTours) {\r\n            // console.log('TourEngine: Tours disabled, skipping initialization');\r\n            return;\r\n        }\r\n\r\n        try {\r\n            // console.log('TourEngine: Loading tours...');\r\n            await this.loadTours();\r\n            \r\n            // console.log('TourEngine: Setting up driver...');\r\n            this.setupDriver();\r\n            \r\n            // console.log('TourEngine: Applying tour styles...');\r\n            this.applyTourStyles();\r\n            \r\n            // Note: Active tours will be added via addTour() method after initialization\r\n            // console.log('TourEngine: Initialization complete - tours will be added separately');\r\n        } catch (error) {\r\n            console.error('Failed to initialize TourEngine:', error);\r\n        }\r\n    }\r\n\r\n    // Method to add tours (for testing or dynamic loading)\r\n    addTour(tour: Tour): void {\r\n        const existingIndex = this.activeTours.findIndex(t => t.id === tour.id);\r\n        if (existingIndex >= 0) {\r\n            this.activeTours[existingIndex] = tour;\r\n        } else {\r\n            this.activeTours.push(tour);\r\n        }\r\n        \r\n        // Add to trigger manager\r\n        this.triggerManager.addTour(tour);\r\n        \r\n        // Log active tours after adding\r\n        const activeTours = this.getActiveTours();\r\n        // console.log('TourEngine: Tour added. Active tours now:', activeTours.length, activeTours.map(t => t.id));\r\n    }\r\n\r\n    // Method to remove tours\r\n    removeTour(tourId: string): void {\r\n        this.activeTours = this.activeTours.filter(tour => tour.id !== tourId);\r\n        this.triggerManager.removeTour(tourId);\r\n    }\r\n\r\n    // Get all active tours\r\n    getActiveTours(): Tour[] {\r\n        return this.activeTours.filter(tour => tour.isActive);\r\n    }\r\n\r\n    async startTour(tourId: string, fromTrigger: boolean = false): Promise<void> {\r\n        const tour = this.findTour(tourId);\r\n        if (!tour) {\r\n            return;\r\n        }\r\n\r\n        // Only check shouldShowTour if not called from trigger system\r\n        if (!fromTrigger && !this.shouldShowTour(tour)) {\r\n            return;\r\n        }\r\n\r\n        try {\r\n            // Validate tour steps before starting\r\n            const validSteps = this.validateAndFilterSteps(tour.steps);\r\n            if (validSteps.length === 0) {\r\n                console.warn(`Tour ${tourId} has no valid steps, skipping`);\r\n                return;\r\n            }\r\n\r\n            this.currentTourId = tourId;\r\n            this.tourStartTime = Date.now();\r\n            this.currentTourSteps = validSteps; // Store the current tour steps\r\n            \r\n           \r\n\r\n            // Apply tour-specific styling if available\r\n            if (tour.styling && tour.styling.customCSS) {\r\n                this.styleManager.applyStyles(tour.styling.customCSS);\r\n            }\r\n\r\n            // Track tour start\r\n            this.analytics.trackEvent({\r\n                tourId,\r\n                eventType: 'start',\r\n                sessionId: this.sessionId,\r\n                timestamp: new Date().toISOString(),\r\n            });\r\n\r\n            // Update show count and session tracking if not called from trigger\r\n            // (triggers handle their own tracking)\r\n            if (!fromTrigger) {\r\n                this.updateTourTracking(tour);\r\n            }\r\n\r\n            const driverSteps = this.convertSteps(validSteps);\r\n            // console.log('TourEngine: Generated driver steps:', driverSteps);\r\n            \r\n            // For driver.js v1.3.6, we need to create a new driver instance with steps\r\n            // Destroy existing driver if it exists\r\n            if (this.driver) {\r\n                this.driver.destroy();\r\n            }\r\n            \r\n            // Create new driver instance with steps\r\n            this.driver = driver({\r\n                animate: true,\r\n                overlayOpacity: 0.75,\r\n                stagePadding: 10,\r\n                allowClose: this.config.tourAllowClose ?? true,\r\n                showProgress: this.config.tourShowProgress ?? true,\r\n                allowKeyboardControl: this.config.tourKeyboardControl ?? true,\r\n                smoothScroll: this.config.tourSmoothScroll ?? true,\r\n                steps: driverSteps,\r\n                onHighlightStarted: (_element?: Element, _step?: DriveStep, _options?: any) => {\r\n                    // console.log('TourEngine: onHighlightStarted called');\r\n                    this.handleStepStart();\r\n                    \r\n                    // Auto-fill input field if autoFillValue is set\r\n                    const currentIndex = _options?.state?.activeIndex ?? 0;\r\n                    const currentStep = this.currentTourSteps[currentIndex];\r\n                    \r\n                    if (currentStep?.autoFillValue && _element) {\r\n                        console.log('TourEngine: Attempting auto-fill with value:', currentStep.autoFillValue);\r\n                        console.log('TourEngine: Target element:', _element);\r\n                        \r\n                        setTimeout(() => {\r\n                            try {\r\n                                const targetElement = _element as HTMLElement;\r\n                                let inputElement: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null = null;\r\n                                \r\n                                // First check if the element itself is an input\r\n                                if (targetElement.tagName === 'INPUT' || targetElement.tagName === 'TEXTAREA' || targetElement.tagName === 'SELECT') {\r\n                                    inputElement = targetElement as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\r\n                                    console.log('TourEngine: Element itself is an input');\r\n                                } else {\r\n                                    // Try to find input within the element\r\n                                    inputElement = targetElement.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\r\n                                    console.log('TourEngine: Found input within element:', inputElement);\r\n                                }\r\n                                \r\n                                if (inputElement) {\r\n                                    // Use React's native setter to bypass framework control\r\n                                    const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\r\n                                        window.HTMLInputElement.prototype,\r\n                                        'value'\r\n                                    )?.set;\r\n                                    \r\n                                    const nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(\r\n                                        window.HTMLTextAreaElement.prototype,\r\n                                        'value'\r\n                                    )?.set;\r\n                                    \r\n                                    // Set value using native setter\r\n                                    if (inputElement instanceof HTMLInputElement && nativeInputValueSetter) {\r\n                                        nativeInputValueSetter.call(inputElement, currentStep.autoFillValue);\r\n                                    } else if (inputElement instanceof HTMLTextAreaElement && nativeTextAreaValueSetter) {\r\n                                        nativeTextAreaValueSetter.call(inputElement, currentStep.autoFillValue);\r\n                                    } else {\r\n                                        inputElement.value = currentStep.autoFillValue;\r\n                                    }\r\n                                    \r\n                                    // Dispatch events to notify React/frameworks\r\n                                    const inputEvent = new Event('input', { bubbles: true, cancelable: true });\r\n                                    const changeEvent = new Event('change', { bubbles: true, cancelable: true });\r\n                                    \r\n                                    inputElement.dispatchEvent(inputEvent);\r\n                                    inputElement.dispatchEvent(changeEvent);\r\n                                    \r\n                                    console.log(`TourEngine: Auto-filled value \"${currentStep.autoFillValue}\" into input field`);\r\n                                    console.log('TourEngine: Current input value:', inputElement.value);\r\n                                } else {\r\n                                    console.warn('TourEngine: No input element found for auto-fill');\r\n                                }\r\n                            } catch (error) {\r\n                                console.error('TourEngine: Auto-fill error:', error);\r\n                            }\r\n                        }, 200);\r\n                    }\r\n                },\r\n                onDeselected: (_element?: Element, _step?: DriveStep, _options?: any) => {\r\n                    // console.log('TourEngine: onDeselected called');\r\n                    this.handleStepComplete();\r\n                },\r\n                onDestroyed: () => {\r\n                    // console.log('TourEngine: onDestroyed called');\r\n                    this.handleTourComplete();\r\n                },\r\n                // Add global next/prev handlers as backup\r\n                onNextClick: (element?: Element, step?: DriveStep, options?: any) => {\r\n                    // console.log('TourEngine: Global onNextClick called', { element, step, options });\r\n                    const activeIndex = this.driver?.getActiveIndex() ?? 0;\r\n                    // console.log('TourEngine: Active index from global handler:', activeIndex);\r\n                    this.handleStepNext(activeIndex);\r\n                },\r\n                onPrevClick: (element?: Element, step?: DriveStep, options?: any) => {\r\n                    // console.log('TourEngine: Global onPrevClick called', { element, step, options });\r\n                    const activeIndex = this.driver?.getActiveIndex() ?? 0;\r\n                    // console.log('TourEngine: Active index from global handler:', activeIndex);\r\n                    this.handleStepPrevious(activeIndex);\r\n                },\r\n            });\r\n            \r\n            // console.log('TourEngine: Driver instance created, starting tour...');\r\n            // Start the tour\r\n            this.driver.drive();\r\n        } catch (error) {\r\n            console.error('Failed to start tour:', error);\r\n            this.currentTourId = null;\r\n            this.tourStartTime = null;\r\n            this.currentTourSteps = []; // Clear current tour steps on error\r\n        }\r\n    }\r\n\r\n    // Public methods for external control\r\n    stopTour(): void {\r\n        if (this.driver && this.currentTourId) {\r\n            // Track abandonment\r\n            this.analytics.trackEvent({\r\n                tourId: this.currentTourId,\r\n                eventType: 'abandon',\r\n                stepIndex: this.driver.getActiveIndex(),\r\n                sessionId: this.sessionId,\r\n                timestamp: new Date().toISOString(),\r\n            });\r\n\r\n            this.driver.destroy();\r\n            this.currentTourId = null;\r\n            this.tourStartTime = null;\r\n            this.currentTourSteps = []; // Clear current tour steps\r\n        }\r\n    }\r\n\r\n    isActive(): boolean {\r\n        return this.currentTourId !== null;\r\n    }\r\n\r\n    getCurrentTourId(): string | null {\r\n        return this.currentTourId;\r\n    }\r\n\r\n    // Manual trigger method for external use\r\n    triggerTour(tourId: string): boolean {\r\n        return this.triggerManager.triggerTour(tourId);\r\n    }\r\n\r\n    // Force start a tour (bypass all checks) - for debugging\r\n    forceStartTour(tourId: string): boolean {\r\n        const tour = this.findTour(tourId);\r\n        if (!tour) {\r\n            console.warn(`Tour not found: ${tourId}`);\r\n            return false;\r\n        }\r\n\r\n        this.startTour(tourId, true);\r\n        return true;\r\n    }\r\n\r\n    // Get trigger statistics for debugging\r\n    getTriggerStats(): Record<string, any> {\r\n        return this.triggerManager.getTriggerStats();\r\n    }\r\n\r\n    // Reset triggers for a tour (useful for testing)\r\n    resetTourTriggers(tourId: string): void {\r\n        this.triggerManager.resetTourTriggers(tourId);\r\n    }\r\n\r\n    destroy(): void {\r\n        if (this.driver) {\r\n            this.driver.destroy();\r\n            this.driver = null;\r\n        }\r\n        this.triggerManager.destroy();\r\n        this.styleManager.removeStyles();\r\n        \r\n        // Clean up debug methods\r\n        if ((window as any).tourEngineDebug) {\r\n            delete (window as any).tourEngineDebug;\r\n        }\r\n    }\r\n\r\n    // Debug method to test auto-click functionality\r\n    testAutoClick(stepIndex: number): void {\r\n        // console.log(`TourEngine: Testing auto-click for step ${stepIndex}`);\r\n        \r\n        if (stepIndex < 0 || stepIndex >= this.currentTourSteps.length) {\r\n            console.error(`TourEngine: Invalid step index ${stepIndex}. Available steps: 0-${this.currentTourSteps.length - 1}`);\r\n            return;\r\n        }\r\n        \r\n        const step = this.currentTourSteps[stepIndex];\r\n        if (!step) {\r\n            console.error(`TourEngine: No step found at index ${stepIndex}`);\r\n            return;\r\n        }\r\n        \r\n        if (!step.autoClick) {\r\n            console.warn(`TourEngine: Auto-click is not enabled for step ${stepIndex}`);\r\n            return;\r\n        }\r\n        \r\n        // console.log(`TourEngine: Testing auto-click for step:`, step);\r\n        \r\n        try {\r\n            const elements = document.querySelectorAll(step.element);\r\n            // console.log(`TourEngine: Found ${elements.length} elements for selector: ${step.element}`);\r\n            \r\n            if (elements.length > 0) {\r\n                const element = elements[0] as HTMLElement;\r\n                \r\n                // Highlight element\r\n                const originalOutline = element.style.outline;\r\n                const originalBackground = element.style.backgroundColor;\r\n                element.style.outline = '3px solid blue';\r\n                element.style.backgroundColor = 'rgba(0, 0, 255, 0.2)';\r\n                \r\n                // Test click\r\n                if (typeof element.click === 'function') {\r\n                    element.click();\r\n                }\r\n                \r\n                const clickEvent = new MouseEvent('click', {\r\n                    view: window,\r\n                    bubbles: true,\r\n                    cancelable: true\r\n                });\r\n                element.dispatchEvent(clickEvent);\r\n                \r\n                // console.log(`TourEngine: Test auto-click completed for: ${step.element}`);\r\n                \r\n                // Restore styling\r\n                setTimeout(() => {\r\n                    element.style.outline = originalOutline;\r\n                    element.style.backgroundColor = originalBackground;\r\n                }, 1500);\r\n            } else {\r\n                console.error(`TourEngine: No elements found for selector: ${step.element}`);\r\n            }\r\n        } catch (error) {\r\n            console.error('TourEngine: Test auto-click error:', error);\r\n        }\r\n    }\r\n\r\n    private async loadTours(): Promise<void> {\r\n        // Placeholder for loading tours from API\r\n        // This will be implemented in a later task\r\n        this.activeTours = [];\r\n    }\r\n\r\n    private setupDriver(): void {\r\n        const driverConfig = {\r\n            animate: true,\r\n            overlayOpacity: 0.75,\r\n            stagePadding: 10,\r\n            allowClose: this.config.tourAllowClose ?? true,\r\n            showProgress: this.config.tourShowProgress ?? true,\r\n            allowKeyboardControl: this.config.tourKeyboardControl ?? true,\r\n            smoothScroll: this.config.tourSmoothScroll ?? true,\r\n            onHighlightStarted: (_element?: Element, _step?: DriveStep, _options?: any) => {\r\n                this.handleStepStart();\r\n                \r\n                // Auto-fill input field if autoFillValue is set\r\n                const currentIndex = _options?.state?.activeIndex ?? 0;\r\n                const currentStep = this.currentTourSteps[currentIndex];\r\n                \r\n                if (currentStep?.autoFillValue && _element) {\r\n                    setTimeout(() => {\r\n                        try {\r\n                            const targetElement = _element as HTMLElement;\r\n                            let inputElement: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null = null;\r\n                            \r\n                            // First check if the element itself is an input\r\n                            if (targetElement.tagName === 'INPUT' || targetElement.tagName === 'TEXTAREA' || targetElement.tagName === 'SELECT') {\r\n                                inputElement = targetElement as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\r\n                                console.log('TourEngine (2): Element itself is an input');\r\n                            } else {\r\n                                // Try to find input within the element\r\n                                inputElement = targetElement.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\r\n                                console.log('TourEngine (2): Found input within element:', inputElement);\r\n                            }\r\n                            \r\n                            if (inputElement) {\r\n                                // Use React's native setter to bypass framework control\r\n                                const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\r\n                                    window.HTMLInputElement.prototype,\r\n                                    'value'\r\n                                )?.set;\r\n                                \r\n                                const nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(\r\n                                    window.HTMLTextAreaElement.prototype,\r\n                                    'value'\r\n                                )?.set;\r\n                                \r\n                                // Set value using native setter\r\n                                if (inputElement instanceof HTMLInputElement && nativeInputValueSetter) {\r\n                                    nativeInputValueSetter.call(inputElement, currentStep.autoFillValue);\r\n                                } else if (inputElement instanceof HTMLTextAreaElement && nativeTextAreaValueSetter) {\r\n                                    nativeTextAreaValueSetter.call(inputElement, currentStep.autoFillValue);\r\n                                } else {\r\n                                    inputElement.value = currentStep.autoFillValue;\r\n                                }\r\n                                \r\n                                // Dispatch events to notify React/frameworks\r\n                                const inputEvent = new Event('input', { bubbles: true, cancelable: true });\r\n                                const changeEvent = new Event('change', { bubbles: true, cancelable: true });\r\n                                \r\n                                inputElement.dispatchEvent(inputEvent);\r\n                                inputElement.dispatchEvent(changeEvent);\r\n                                \r\n                                console.log(`TourEngine (2): Auto-filled value \"${currentStep.autoFillValue}\" into input field`);\r\n                                console.log('TourEngine (2): Current input value:', inputElement.value);\r\n                            } else {\r\n                                console.warn('TourEngine (2): No input element found for auto-fill');\r\n                            }\r\n                        } catch (error) {\r\n                            console.error('TourEngine (2): Auto-fill error:', error);\r\n                        }\r\n                    }, 200);\r\n                }\r\n            },\r\n            onDeselected: (_element?: Element, _step?: DriveStep, _options?: any) => this.handleStepComplete(),\r\n            onDestroyed: () => this.handleTourComplete(),\r\n        };\r\n\r\n        this.driver = driver(driverConfig);\r\n    }\r\n\r\n\r\n\r\n    private findTour(tourId: string): Tour | undefined {\r\n        return this.activeTours.find(tour => tour.id === tourId);\r\n    }\r\n\r\n    private shouldShowTour(tour: Tour): boolean {\r\n        if (!tour.isActive) {\r\n            return false;\r\n        }\r\n\r\n        // Check if tour has already been shown based on targeting rules\r\n        if (this.hasExceededShowLimit(tour)) {\r\n            return false;\r\n        }\r\n\r\n        // Check URL patterns\r\n        if (!this.matchesUrlPatterns(tour.targeting)) {\r\n            return false;\r\n        }\r\n\r\n        // Check user segments\r\n        if (!this.matchesUserSegments(tour.targeting)) {\r\n            return false;\r\n        }\r\n\r\n        // Check device type\r\n        if (!this.matchesDeviceType(tour.targeting)) {\r\n            return false;\r\n        }\r\n\r\n        // Check if tour is in cooldown period\r\n        if (this.isInCooldown(tour)) {\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    private hasExceededShowLimit(tour: Tour): boolean {\r\n        const { maxShowCount, showOncePerSession } = tour.targeting;\r\n\r\n        if (showOncePerSession) {\r\n            const sessionKey = `tour_shown_${tour.id}_${this.sessionId}`;\r\n            if (sessionStorage.getItem(sessionKey)) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        if (maxShowCount !== undefined) {\r\n            const countKey = `tour_count_${tour.id}`;\r\n            const currentCount = parseInt(localStorage.getItem(countKey) || '0', 10);\r\n            return currentCount >= maxShowCount;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    private matchesUrlPatterns(targeting: TourTargeting): boolean {\r\n        const currentUrl = window.location.href;\r\n        const currentPath = window.location.pathname;\r\n\r\n        // Check exclude patterns first\r\n        if (targeting.excludeUrlPatterns?.length) {\r\n            for (const pattern of targeting.excludeUrlPatterns) {\r\n                if (this.matchesPattern(currentUrl, pattern) || this.matchesPattern(currentPath, pattern)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n\r\n        // Check include patterns\r\n        if (targeting.urlPatterns?.length) {\r\n            return targeting.urlPatterns.some(pattern =>\r\n                this.matchesPattern(currentUrl, pattern) || this.matchesPattern(currentPath, pattern)\r\n            );\r\n        }\r\n\r\n        // If no patterns specified, match all URLs\r\n        return true;\r\n    }\r\n\r\n    private matchesPattern(url: string, pattern: string): boolean {\r\n        // Convert simple wildcard patterns to regex\r\n        const regexPattern = pattern\r\n            .replace(/\\*/g, '.*')\r\n            .replace(/\\?/g, '.');\r\n\r\n        try {\r\n            const regex = new RegExp(`^${regexPattern}$`, 'i');\r\n            return regex.test(url);\r\n        } catch {\r\n            // Fallback to simple string matching if regex is invalid\r\n            return url.toLowerCase().includes(pattern.toLowerCase());\r\n        }\r\n    }\r\n\r\n    private matchesUserSegments(targeting: TourTargeting): boolean {\r\n        if (!targeting.userSegments?.length) {\r\n            return true;\r\n        }\r\n\r\n        const userSegment = this.getUserSegment();\r\n        return targeting.userSegments.includes(userSegment);\r\n    }\r\n\r\n    private getUserSegment(): \"new\" | \"returning\" | \"authenticated\" {\r\n        // Check if user has visited before\r\n        const hasVisited = localStorage.getItem('leadforward_visited');\r\n\r\n        // Check if user is authenticated (this would typically come from your auth system)\r\n        const isAuthenticated = this.checkAuthenticationStatus();\r\n\r\n        if (isAuthenticated) {\r\n            return 'authenticated';\r\n        }\r\n\r\n        if (hasVisited) {\r\n            return 'returning';\r\n        }\r\n\r\n        // Mark as visited for future visits\r\n        localStorage.setItem('leadforward_visited', 'true');\r\n        return 'new';\r\n    }\r\n\r\n    private checkAuthenticationStatus(): boolean {\r\n        // This is a placeholder - in a real implementation, this would check\r\n        // your authentication system (cookies, JWT tokens, etc.)\r\n        return false;\r\n    }\r\n\r\n    private matchesDeviceType(targeting: TourTargeting): boolean {\r\n        if (!targeting.deviceTypes?.length) {\r\n            return true;\r\n        }\r\n\r\n        const deviceType = this.getDeviceType();\r\n        return targeting.deviceTypes.includes(deviceType);\r\n    }\r\n\r\n    private getDeviceType(): \"desktop\" | \"tablet\" | \"mobile\" {\r\n        const userAgent = navigator.userAgent;\r\n        const screenWidth = window.innerWidth;\r\n\r\n        // Check for mobile devices\r\n        if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)) {\r\n            // Distinguish between tablet and mobile based on screen size\r\n            return screenWidth >= 768 ? 'tablet' : 'mobile';\r\n        }\r\n\r\n        // Check screen size for responsive design\r\n        if (screenWidth < 768) {\r\n            return 'mobile';\r\n        } else if (screenWidth < 1024) {\r\n            return 'tablet';\r\n        }\r\n\r\n        return 'desktop';\r\n    }\r\n\r\n    private isInCooldown(tour: Tour): boolean {\r\n        const cooldownMinutes = tour.triggers.find(trigger => trigger.cooldown)?.cooldown;\r\n        if (!cooldownMinutes) {\r\n            return false;\r\n        }\r\n\r\n        const lastShownKey = `tour_last_shown_${tour.id}`;\r\n        const lastShown = localStorage.getItem(lastShownKey);\r\n\r\n        if (!lastShown) {\r\n            return false;\r\n        }\r\n\r\n        const lastShownTime = parseInt(lastShown, 10);\r\n        const cooldownMs = cooldownMinutes * 60 * 1000;\r\n        const now = Date.now();\r\n\r\n        return (now - lastShownTime) < cooldownMs;\r\n    }\r\n\r\n    private validateAndFilterSteps(steps: TourStep[]): TourStep[] {\r\n        return steps.filter(step => {\r\n            try {\r\n                // Check if element exists\r\n                const element = document.querySelector(step.element);\r\n                if (!element) {\r\n                    console.warn(`Tour step element not found: ${step.element}`);\r\n                    return false;\r\n                }\r\n\r\n                // Check if element is visible\r\n                const rect = element.getBoundingClientRect();\r\n                const isVisible = rect.width > 0 && rect.height > 0;\r\n\r\n                if (!isVisible) {\r\n                    console.warn(`Tour step element not visible: ${step.element}`);\r\n                    return false;\r\n                }\r\n\r\n                return true;\r\n            } catch (error) {\r\n                console.warn(`Invalid selector in tour step: ${step.element}`, error);\r\n                return false;\r\n            }\r\n        });\r\n    }\r\n\r\n    private updateTourTracking(tour: Tour): void {\r\n        // Update show count\r\n        if (tour.targeting.maxShowCount !== undefined) {\r\n            const countKey = `tour_count_${tour.id}`;\r\n            const currentCount = parseInt(localStorage.getItem(countKey) || '0', 10);\r\n            localStorage.setItem(countKey, (currentCount + 1).toString());\r\n        }\r\n\r\n        // Mark as shown in session\r\n        if (tour.targeting.showOncePerSession) {\r\n            const sessionKey = `tour_shown_${tour.id}_${this.sessionId}`;\r\n            sessionStorage.setItem(sessionKey, 'true');\r\n        }\r\n\r\n        // Update last shown time for cooldown\r\n        const cooldownTrigger = tour.triggers.find(trigger => trigger.cooldown);\r\n        if (cooldownTrigger) {\r\n            const lastShownKey = `tour_last_shown_${tour.id}`;\r\n            localStorage.setItem(lastShownKey, Date.now().toString());\r\n        }\r\n    }\r\n\r\n    private convertSteps(steps: TourStep[]): DriveStep[] {\r\n \r\n        \r\n        const convertedSteps = steps.map((step, index) => {\r\n            // console.log(`TourEngine: Converting step ${index}:`, step);\r\n            \r\n            const driverStep: DriveStep = {\r\n                element: step.element,\r\n                popover: {\r\n                    title: step.title,\r\n                    description: step.description,\r\n                    side: step.position === 'auto' ? 'bottom' : (step.position || 'bottom') as \"top\" | \"bottom\" | \"left\" | \"right\",\r\n                    showButtons: step.showButtons !== false ? ['next', 'previous', 'close'] : ['close'],\r\n                    onNextClick: (element?: Element, step?: DriveStep, options?: any) => {\r\n                        // console.log(`TourEngine: Per-step onNextClick triggered for step ${index}`, { element, step, options });\r\n                        // Pass driver instance to handleStepNext to allow preventing move\r\n                        this.handleStepNext(index, options?.driver);\r\n                    },\r\n                    onPrevClick: (element?: Element, step?: DriveStep, options?: any) => {\r\n                        // console.log(`TourEngine: Per-step onPrevClick triggered for step ${index}`, { element, step, options });\r\n                        this.handleStepPrevious(index);\r\n                    },\r\n                }\r\n            } as DriveStep;\r\n            \r\n            // console.log(`TourEngine: Converted step ${index} to driver step:`, driverStep);\r\n            return driverStep;\r\n        });\r\n        \r\n        // console.log('TourEngine: All converted steps:', convertedSteps);\r\n        return convertedSteps;\r\n    }\r\n\r\n    private handleStepStart(): void {\r\n        if (!this.currentTourId) return;\r\n\r\n        const stepIndex = this.driver?.getActiveIndex() ?? 0;\r\n\r\n        // Track step view\r\n        this.analytics.trackEvent({\r\n            tourId: this.currentTourId,\r\n            eventType: 'step_view',\r\n            stepIndex,\r\n            sessionId: this.sessionId,\r\n            timestamp: new Date().toISOString(),\r\n        });\r\n    }\r\n\r\n    private handleStepNext(stepIndex: number, driverInstance?: any): void {\r\n        if (!this.currentTourId) return;\r\n\r\n        // console.log(`TourEngine: handleStepNext called for step ${stepIndex}`);\r\n        const currentStep = this.currentTourSteps[stepIndex];\r\n        \r\n        if (currentStep && currentStep.autoClick) {\r\n            // console.log(`TourEngine: Auto-click enabled for step ${stepIndex}, element: ${currentStep.element}`);\r\n            \r\n            // Prevent driver.js from automatically moving to the next step\r\n            if (driverInstance && typeof driverInstance.preventMove === 'function') {\r\n                driverInstance.preventMove();\r\n            }\r\n\r\n            // Add a small delay to ensure the tour transition is complete\r\n            setTimeout(() => {\r\n                try {\r\n                    const elements = document.querySelectorAll(currentStep.element);\r\n                    if (elements.length > 0) {\r\n                        const element = elements[0] as HTMLElement;\r\n                        // console.log(`TourEngine: Attempting to click element:`, element);\r\n                        \r\n                        if (typeof element.click === 'function') {\r\n                            element.click();\r\n                        } else {\r\n                            const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true });\r\n                            element.dispatchEvent(clickEvent);\r\n                        }\r\n                        \r\n                        // console.log(`TourEngine: Auto-clicked element successfully: ${currentStep.element}`);\r\n                        \r\n                        // Get custom timeout or use default\r\n                        const timeout = currentStep.autoClickTimeout ?? 500;\r\n                        \r\n                        // Automatically advance to next step after auto-click\r\n                        setTimeout(() => {\r\n                            if (this.driver) {\r\n                                const activeIndex = this.driver.getActiveIndex();\r\n                                if (activeIndex !== undefined && activeIndex < this.currentTourSteps.length - 1) {\r\n                                    this.driver.moveNext();\r\n                                } else {\r\n                                    this.driver.destroy();\r\n                                }\r\n                            }\r\n                        }, timeout);\r\n                        \r\n                    } else {\r\n                        console.warn(`TourEngine: Auto-click failed: Element not found for selector: ${currentStep.element}`);\r\n                        if (this.driver) this.driver.moveNext(); // Move on if element not found\r\n                    }\r\n                } catch (error) {\r\n                    console.error('TourEngine: Auto-click error:', error);\r\n                    if (this.driver) this.driver.moveNext(); // Move on if error occurs\r\n                }\r\n            }, 300);\r\n        } else {\r\n            // console.log(`TourEngine: Auto-click not enabled for step ${stepIndex}`);\r\n            if (driverInstance && typeof driverInstance.moveNext === 'function') {\r\n                driverInstance.moveNext();\r\n            } else if (this.driver) {\r\n                this.driver.moveNext();\r\n            }\r\n        }\r\n\r\n        // Track step progression\r\n        this.analytics.trackEvent({\r\n            tourId: this.currentTourId,\r\n            eventType: 'step_view',\r\n            stepIndex: stepIndex + 1,\r\n            sessionId: this.sessionId,\r\n            timestamp: new Date().toISOString(),\r\n            metadata: { action: 'next', autoClicked: currentStep?.autoClick || false }\r\n        });\r\n    }\r\n\r\n    private handleStepPrevious(stepIndex: number): void {\r\n        if (!this.currentTourId) return;\r\n\r\n        // Track step regression\r\n        this.analytics.trackEvent({\r\n            tourId: this.currentTourId,\r\n            eventType: 'step_view',\r\n            stepIndex: stepIndex - 1,\r\n            sessionId: this.sessionId,\r\n            timestamp: new Date().toISOString(),\r\n            metadata: { action: 'previous' }\r\n        });\r\n    }\r\n\r\n    private handleStepComplete(): void {\r\n        // This is called when a step is deselected (user moves to next/previous step)\r\n        // Additional step completion logic can be added here if needed\r\n    }\r\n\r\n    private handleTourComplete(): void {\r\n        if (!this.currentTourId || !this.tourStartTime) return;\r\n\r\n        const completionTime = Date.now() - this.tourStartTime;\r\n\r\n        // Track tour completion\r\n        this.analytics.trackEvent({\r\n            tourId: this.currentTourId,\r\n            eventType: 'complete',\r\n            sessionId: this.sessionId,\r\n            timestamp: new Date().toISOString(),\r\n            metadata: {\r\n                completionTimeMs: completionTime,\r\n                completionTimeSeconds: Math.round(completionTime / 1000)\r\n            }\r\n        });\r\n\r\n        // Clean up\r\n        this.currentTourId = null;\r\n        this.tourStartTime = null;\r\n        this.currentTourSteps = []; // Clear current tour steps\r\n    }\r\n\r\n    private generateSessionId(): string {\r\n        return `tour_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;\r\n    }\r\n\r\n    private handleTriggerActivated(tourId: string, triggerId: string): void {\r\n        // Start the tour when a trigger is activated\r\n        this.startTour(tourId, true);\r\n    }\r\n\r\n    /**\r\n     * Apply default tour styles based on configuration\r\n     */\r\n    private applyTourStyles(): void {\r\n        this.styleManager.applyStyles();\r\n    }\r\n\r\n    /**\r\n     * Update tour configuration and reapply styles\r\n     */\r\n    updateConfiguration(newConfig: TourConfig, newWidgetConfig?: LeadForwardConfig): void {\r\n        this.config = newConfig;\r\n        this.widgetConfig = newWidgetConfig;\r\n        \r\n        // Update style manager with new configuration\r\n        this.styleManager.updateStyles(newConfig, newWidgetConfig);\r\n        \r\n        // Recreate driver with new configuration if it exists\r\n        if (this.driver) {\r\n            this.setupDriver();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Get current theme information for debugging\r\n     */\r\n    getThemeInfo(): Record<string, any> {\r\n        return {\r\n            tourTheme: this.config.tourTheme,\r\n            tourPrimaryColor: this.config.tourPrimaryColor,\r\n            widgetTheme: this.widgetConfig?.theme,\r\n            widgetPrimaryColor: this.widgetConfig?.primaryColor,\r\n        };\r\n    }\r\n}","import React, { useEffect, useRef, useState } from 'react';\r\nimport { TourEngine } from './TourEngine';\r\nimport type { TourConfig, Tour } from '../tour-types';\r\n\r\ninterface TourControllerProps {\r\n  tourConfig: TourConfig;\r\n  widgetConfig?: any; // LeadForwardConfig\r\n  projectId: string;\r\n  apiBase: string;\r\n  onError?: (error: Error) => void;\r\n}\r\n\r\nexport const TourController: React.FC<TourControllerProps> = ({\r\n  tourConfig,\r\n  widgetConfig,\r\n  projectId,\r\n  apiBase,\r\n  onError\r\n}) => {\r\n  const tourEngineRef = useRef<TourEngine | null>(null);\r\n  const [isInitialized, setIsInitialized] = useState(false);\r\n  const [initError, setInitError] = useState<Error | null>(null);\r\n\r\n  useEffect(() => {\r\n    let mounted = true;\r\n\r\n    const initializeTours = async () => {\r\n      // console.log('TourController: Initializing tours...', { enableTours: tourConfig.enableTours, projectId, apiBase });\r\n      \r\n      // Don't initialize if tours are disabled\r\n      if (!tourConfig.enableTours) {\r\n        // console.log('TourController: Tours are disabled, skipping initialization');\r\n        return;\r\n      }\r\n\r\n      try {\r\n        // console.log('TourController: Creating tour engine instance...');\r\n        // Create tour engine instance\r\n        const tourEngine = new TourEngine(tourConfig, widgetConfig);\r\n        \r\n        // console.log('TourController: Loading tours from API...');\r\n        // Load tours from API\r\n        // await loadToursFromAPI(tourEngine, projectId, apiBase);\r\n        \r\n        // console.log('TourController: Initializing tour engine...');\r\n        // Initialize the tour engine\r\n        await tourEngine.initialize();\r\n        \r\n        if (mounted) {\r\n          tourEngineRef.current = tourEngine;\r\n          setIsInitialized(true);\r\n          setInitError(null);\r\n          // console.log('TourController: Tours initialized successfully');\r\n          \r\n          // Make tour engine globally accessible\r\n          (window as any).tourEngine = tourEngine;\r\n          \r\n          // Emit event for debugging\r\n          window.dispatchEvent(new CustomEvent('tourEngineReady', {\r\n            detail: { engine: tourEngine }\r\n          }));\r\n        }\r\n      } catch (error) {\r\n        const tourError = error instanceof Error ? error : new Error('Failed to initialize tours');\r\n        \r\n        if (mounted) {\r\n          setInitError(tourError);\r\n          onError?.(tourError);\r\n        }\r\n        \r\n        console.warn('Tour initialization failed, continuing without tours:', tourError);\r\n      }\r\n    };\r\n\r\n    initializeTours();\r\n\r\n    return () => {\r\n      mounted = false;\r\n      \r\n      // Cleanup tour engine on unmount\r\n      if (tourEngineRef.current) {\r\n        tourEngineRef.current.destroy();\r\n        tourEngineRef.current = null;\r\n      }\r\n    };\r\n  }, [tourConfig, projectId, apiBase, onError]);\r\n\r\n  // Cleanup on config changes\r\n  useEffect(() => {\r\n    if (tourEngineRef.current && isInitialized) {\r\n      // Update configuration instead of destroying if only config changed\r\n      if (tourConfig.enableTours) {\r\n        tourEngineRef.current.updateConfiguration(tourConfig, widgetConfig);\r\n      } else {\r\n        tourEngineRef.current.destroy();\r\n        tourEngineRef.current = null;\r\n        setIsInitialized(false);\r\n      }\r\n    }\r\n  }, [tourConfig, widgetConfig, projectId]);\r\n\r\n  // This component doesn't render anything - it just manages the tour lifecycle\r\n  return null;\r\n};\r\n\r\nasync function loadToursFromAPI(tourEngine: TourEngine, projectId: string, apiBase: string): Promise<void> {\r\n  try {\r\n    // console.log('TourController: Fetching tour config from API...', `${apiBase}/api/widget/config/${projectId}`);\r\n    const response = await fetch(`${apiBase}/api/widget/config/${projectId}`);\r\n    \r\n    if (!response.ok) {\r\n      throw new Error(`Failed to load tour configuration: ${response.status}`);\r\n    }\r\n    \r\n    const data = await response.json();\r\n    // console.log('TourController: Received API response:', data);\r\n    \r\n    // Extract tours from the API response\r\n    const tours = extractToursFromAPIResponse(data);\r\n    // console.log('TourController: Extracted tours:', tours);\r\n    \r\n    // Add tours to the engine\r\n    tours.forEach(tour => {\r\n      // console.log('TourController: Adding tour to engine:', tour.id);\r\n      tourEngine.addTour(tour);\r\n    });\r\n    \r\n  } catch (error) {\r\n    // Don't throw here - we want graceful fallback\r\n    console.warn('Failed to load tours from API:', error);\r\n  }\r\n}\r\n\r\nfunction extractToursFromAPIResponse(data: any): Tour[] {\r\n  // Handle both direct widget config response and nested project structure\r\n  const tourData = data.tourSettings || data.project?.tourSettings;\r\n  \r\n  if (!tourData) {\r\n    return [];\r\n  }\r\n  \r\n  // Parse tour settings if they're stored as JSON string\r\n  let parsedTourData;\r\n  try {\r\n    parsedTourData = typeof tourData === 'string' ? JSON.parse(tourData) : tourData;\r\n  } catch (error) {\r\n    console.warn('Failed to parse tour settings from API:', error);\r\n    return [];\r\n  }\r\n  \r\n  // Extract tours array from the parsed data\r\n  const tours = parsedTourData.tours || [];\r\n  \r\n  // Validate and filter tours\r\n  return tours.filter((tour: any) => {\r\n    return (\r\n      tour &&\r\n      typeof tour === 'object' &&\r\n      tour.id &&\r\n      tour.projectId &&\r\n      Array.isArray(tour.steps) &&\r\n      Array.isArray(tour.triggers)\r\n    );\r\n  });\r\n}\r\n\r\nexport default TourController;","// Internal state for managing email across widget instances\r\nlet currentEmail: string = '';\r\nlet emailSetFromConfig: string = '';\r\n\r\n// Callback function to notify widget components of email changes\r\nlet emailChangeCallback: ((email: string) => void) | null = null;\r\n\r\n/**\r\n * Set the user's email dynamically (e.g., after user login)\r\n * @param email - The user's email address\r\n */\r\nexport const setEmail = (email: string): void => {\r\n  currentEmail = email;\r\n  if (emailChangeCallback) {\r\n    emailChangeCallback(email);\r\n  }\r\n};\r\n\r\n/**\r\n * Clear the dynamically set email (e.g., after user logout)\r\n * This will revert to the email set in config, if any\r\n */\r\nexport const clearEmail = (): void => {\r\n  currentEmail = '';\r\n  if (emailChangeCallback) {\r\n    emailChangeCallback(emailSetFromConfig);\r\n  }\r\n};\r\n\r\n/**\r\n * Get the current email value\r\n * Priority: dynamically set email > config email\r\n * @returns The current email address\r\n */\r\nexport const getEmail = (): string => {\r\n  return currentEmail || emailSetFromConfig;\r\n};\r\n\r\n/**\r\n * Internal function used by the widget component to register for email changes\r\n * @internal\r\n */\r\nexport const _registerEmailCallback = (callback: (email: string) => void, configEmail: string): void => {\r\n  emailChangeCallback = callback;\r\n  emailSetFromConfig = configEmail;\r\n  \r\n  // If there's no dynamically set email, use the config email\r\n  if (!currentEmail && configEmail) {\r\n    currentEmail = configEmail;\r\n  }\r\n};\r\n\r\n/**\r\n * Internal function used by the widget component to unregister from email changes\r\n * @internal\r\n */\r\nexport const _unregisterEmailCallback = (): void => {\r\n  emailChangeCallback = null;\r\n  emailSetFromConfig = '';\r\n};\r\n\r\n/**\r\n * Internal function to get the dynamically set email (without config fallback)\r\n * @internal\r\n */\r\nexport const _getDynamicEmail = (): string => {\r\n  return currentEmail;\r\n};","/**\r\n * LeadForward Widget - React Component\r\n * \r\n * This widget provides user feedback collection and tour functionality for web applications.\r\n * \r\n * Core API Endpoints:\r\n * 1. GET /api/widget/project/{projectId} - Fetch project configuration and settings\r\n * 2. GET /api/public/tours/by-path/{projectId}?path={path} - Fetch tours for current page\r\n * 3. POST /api/widget/project/{projectId}/feedback - Submit user feedback\r\n * 4. POST /api/public/tours/{projectId} - Create/save new tours\r\n * \r\n * Key Features:\r\n * - Feedback collection (feature requests, bug reports, general feedback)\r\n * - Tour creation and playback using Driver.js\r\n * - Screenshot capture and annotation\r\n * - Help system with contextual content\r\n * - Configurable appearance and behavior\r\n * - Path-based visibility controls\r\n */\r\n\r\nimport React, {\r\n  useState,\r\n  useEffect,\r\n  useRef,\r\n  useCallback,\r\n  useMemo,\r\n} from \"react\";\r\nimport {\r\n  QueryClient,\r\n  QueryClientProvider,\r\n  useQuery,\r\n  useMutation,\r\n} from \"@tanstack/react-query\";\r\nimport {\r\n  Lightbulb,\r\n  Bug,\r\n  MessageCircle,\r\n  Map,\r\n  Camera,\r\n  Upload,\r\n  Check,\r\n  X,\r\n  RotateCw,\r\n  Edit3,\r\n  Square,\r\n  Type,\r\n  Palette,\r\n  Undo,\r\n  Redo,\r\n  Save,\r\n  HelpCircle,\r\n  Play,\r\n  ExternalLink,\r\n} from \"lucide-react\";\r\nimport type {\r\n  LeadForwardConfig,\r\n  Project,\r\n  Category,\r\n  FeedbackData,\r\n} from \"./types\";\r\nimport type { TourConfig } from \"./tour-types\";\r\nimport { TourController } from \"./tours/TourController\";\r\nimport {\r\n  _registerEmailCallback,\r\n  _unregisterEmailCallback,\r\n  _getDynamicEmail,\r\n} from \"./widgetAPI\";\r\n\r\ninterface UpvotyWidgetProps {\r\n  config: LeadForwardConfig;\r\n}\r\n\r\n// Image annotation types\r\ntype AnnotationTool = \"pen\" | \"highlighter\" | \"text\" | \"rectangle\" | \"arrow\";\r\n\r\ninterface Point {\r\n  x: number;\r\n  y: number;\r\n}\r\n\r\ninterface DrawingPath {\r\n  id: string;\r\n  tool: AnnotationTool;\r\n  points: Point[];\r\n  color: string;\r\n  width: number;\r\n  opacity?: number;\r\n}\r\n\r\ninterface TextAnnotation {\r\n  id: string;\r\n  x: number;\r\n  y: number;\r\n  text: string;\r\n  color: string;\r\n  fontSize: number;\r\n  isEditing?: boolean;\r\n}\r\n\r\ninterface RectangleAnnotation {\r\n  id: string;\r\n  x: number;\r\n  y: number;\r\n  width: number;\r\n  height: number;\r\n  color: string;\r\n  strokeWidth: number;\r\n  filled?: boolean;\r\n}\r\n\r\ninterface ArrowAnnotation {\r\n  id: string;\r\n  startX: number;\r\n  startY: number;\r\n  endX: number;\r\n  endY: number;\r\n  color: string;\r\n  strokeWidth: number;\r\n}\r\n\r\ninterface AnnotationState {\r\n  drawings: DrawingPath[];\r\n  texts: TextAnnotation[];\r\n  rectangles: RectangleAnnotation[];\r\n  arrows: ArrowAnnotation[];\r\n}\r\n\r\n// Image Editor Component\r\nconst ImageEditor: React.FC<{\r\n  imageData: string;\r\n  onSave: (annotatedImage: string) => void;\r\n  onCancel: () => void;\r\n  isDark: boolean;\r\n}> = ({ imageData, onSave, onCancel, isDark }) => {\r\n  const canvasRef = useRef<HTMLCanvasElement>(null);\r\n  const overlayCanvasRef = useRef<HTMLCanvasElement>(null);\r\n  const [isDrawing, setIsDrawing] = useState(false);\r\n  const [currentTool, setCurrentTool] = useState<AnnotationTool>(\"pen\");\r\n  const [currentColor, setCurrentColor] = useState(\"#ff0000\");\r\n  const [strokeWidth, setStrokeWidth] = useState(3);\r\n  const [fontSize, setFontSize] = useState(16);\r\n  const [annotations, setAnnotations] = useState<AnnotationState>({\r\n    drawings: [],\r\n    texts: [],\r\n    rectangles: [],\r\n    arrows: [],\r\n  });\r\n  const [history, setHistory] = useState<AnnotationState[]>([]);\r\n  const [historyIndex, setHistoryIndex] = useState(-1);\r\n  const [currentPath, setCurrentPath] = useState<Point[]>([]);\r\n  const [dragStart, setDragStart] = useState<Point | null>(null);\r\n  const [showColorPicker, setShowColorPicker] = useState(false);\r\n  const [editingTextId, setEditingTextId] = useState<string | null>(null);\r\n  const [textInput, setTextInput] = useState(\"\");\r\n  const [textPosition, setTextPosition] = useState<Point | null>(null);\r\n  const [imageLoaded, setImageLoaded] = useState(false);\r\n  const [baseImageData, setBaseImageData] = useState<ImageData | null>(null);\r\n  const [draggingTextId, setDraggingTextId] = useState<string | null>(null);\r\n  const [dragOffset, setDragOffset] = useState<Point>({ x: 0, y: 0 });\r\n\r\n  const colors = [\r\n    \"#ff0000\",\r\n    \"#00ff00\",\r\n    \"#0000ff\",\r\n    \"#ffff00\",\r\n    \"#ff00ff\",\r\n    \"#00ffff\",\r\n    \"#000000\",\r\n    \"#ffffff\",\r\n  ];\r\n\r\n  // Helper function to find text at a point\r\n  const findTextAtPoint = (\r\n    point: Point\r\n  ): { text: TextAnnotation; offset: Point } | null => {\r\n    const canvas = canvasRef.current;\r\n    if (!canvas) return null;\r\n\r\n    const ctx = canvas.getContext(\"2d\");\r\n    if (!ctx) return null;\r\n\r\n    // Check texts in reverse order (most recently added first)\r\n    for (let i = annotations.texts.length - 1; i >= 0; i--) {\r\n      const text = annotations.texts[i];\r\n\r\n      // Set font to measure text bounds\r\n      ctx.font = `${text.fontSize}px -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif`;\r\n      const metrics = ctx.measureText(text.text);\r\n      const textWidth = metrics.width;\r\n      const textHeight = text.fontSize;\r\n\r\n      // Check if click is within text bounds\r\n      if (\r\n        point.x >= text.x &&\r\n        point.x <= text.x + textWidth &&\r\n        point.y >= text.y - textHeight &&\r\n        point.y <= text.y\r\n      ) {\r\n        // Calculate offset from text origin\r\n        const offset = {\r\n          x: point.x - text.x,\r\n          y: point.y - text.y,\r\n        };\r\n\r\n        return { text, offset };\r\n      }\r\n    }\r\n\r\n    return null;\r\n  };\r\n\r\n  // Load and draw the base image\r\n  useEffect(() => {\r\n    const canvas = canvasRef.current;\r\n    const overlayCanvas = overlayCanvasRef.current;\r\n    if (!canvas || !overlayCanvas) return;\r\n\r\n    const ctx = canvas.getContext(\"2d\");\r\n    const overlayCtx = overlayCanvas.getContext(\"2d\");\r\n    if (!ctx || !overlayCtx) return;\r\n\r\n    const img = new Image();\r\n    img.onload = () => {\r\n      // Set canvas size to match image\r\n      canvas.width = img.width;\r\n      canvas.height = img.height;\r\n      overlayCanvas.width = img.width;\r\n      overlayCanvas.height = img.height;\r\n\r\n      // Draw the base image\r\n      ctx.drawImage(img, 0, 0);\r\n\r\n      // Store base image data for efficient redrawing\r\n      setBaseImageData(ctx.getImageData(0, 0, canvas.width, canvas.height));\r\n      setImageLoaded(true);\r\n\r\n      // Save initial state\r\n      saveToHistory();\r\n    };\r\n    img.src = imageData;\r\n  }, [imageData]);\r\n\r\n  const saveToHistory = useCallback(() => {\r\n    setHistory((prev) => {\r\n      const newHistory = prev.slice(0, historyIndex + 1);\r\n      newHistory.push({ ...annotations });\r\n      return newHistory.slice(-20); // Keep last 20 states\r\n    });\r\n    setHistoryIndex((prev) => Math.min(prev + 1, 19));\r\n  }, [annotations, historyIndex]);\r\n\r\n  const undo = () => {\r\n    if (historyIndex > 0) {\r\n      setHistoryIndex((prev) => prev - 1);\r\n      setAnnotations(history[historyIndex - 1]);\r\n    }\r\n  };\r\n\r\n  const redo = () => {\r\n    if (historyIndex < history.length - 1) {\r\n      setHistoryIndex((prev) => prev + 1);\r\n      setAnnotations(history[historyIndex + 1]);\r\n    }\r\n  };\r\n\r\n  // Redraw canvas with all annotations\r\n  const redrawCanvas = useCallback(() => {\r\n    const canvas = canvasRef.current;\r\n    if (!canvas || !imageLoaded || !baseImageData) return;\r\n\r\n    const ctx = canvas.getContext(\"2d\");\r\n    if (!ctx) return;\r\n\r\n    // Restore base image from stored data (much faster than loading from src)\r\n    ctx.putImageData(baseImageData, 0, 0);\r\n\r\n    // Draw all annotations\r\n\r\n    // Draw drawings\r\n    annotations.drawings.forEach((drawing) => {\r\n      if (drawing.points.length < 2) return;\r\n\r\n      ctx.globalCompositeOperation =\r\n        drawing.tool === \"highlighter\" ? \"multiply\" : \"source-over\";\r\n      ctx.globalAlpha = drawing.tool === \"highlighter\" ? 0.3 : 1;\r\n      ctx.strokeStyle = drawing.color;\r\n      ctx.lineWidth = drawing.width;\r\n      ctx.lineCap = \"round\";\r\n      ctx.lineJoin = \"round\";\r\n\r\n      ctx.beginPath();\r\n      ctx.moveTo(drawing.points[0].x, drawing.points[0].y);\r\n      drawing.points.forEach((point) => {\r\n        ctx.lineTo(point.x, point.y);\r\n      });\r\n      ctx.stroke();\r\n\r\n      ctx.globalCompositeOperation = \"source-over\";\r\n      ctx.globalAlpha = 1;\r\n    });\r\n\r\n    // Draw rectangles\r\n    annotations.rectangles.forEach((rect) => {\r\n      ctx.strokeStyle = rect.color;\r\n      ctx.lineWidth = rect.strokeWidth;\r\n      if (rect.filled) {\r\n        ctx.fillStyle = rect.color;\r\n        ctx.globalAlpha = 0.3;\r\n        ctx.fillRect(rect.x, rect.y, rect.width, rect.height);\r\n        ctx.globalAlpha = 1;\r\n      }\r\n      ctx.strokeRect(rect.x, rect.y, rect.width, rect.height);\r\n    });\r\n\r\n    // Draw arrows\r\n    annotations.arrows.forEach((arrow) => {\r\n      ctx.strokeStyle = arrow.color;\r\n      ctx.lineWidth = arrow.strokeWidth;\r\n      ctx.fillStyle = arrow.color;\r\n\r\n      // Draw line\r\n      ctx.beginPath();\r\n      ctx.moveTo(arrow.startX, arrow.startY);\r\n      ctx.lineTo(arrow.endX, arrow.endY);\r\n      ctx.stroke();\r\n\r\n      // Draw arrowhead\r\n      const angle = Math.atan2(\r\n        arrow.endY - arrow.startY,\r\n        arrow.endX - arrow.startX\r\n      );\r\n      const headlen = 15;\r\n\r\n      ctx.beginPath();\r\n      ctx.moveTo(arrow.endX, arrow.endY);\r\n      ctx.lineTo(\r\n        arrow.endX - headlen * Math.cos(angle - Math.PI / 6),\r\n        arrow.endY - headlen * Math.sin(angle - Math.PI / 6)\r\n      );\r\n      ctx.moveTo(arrow.endX, arrow.endY);\r\n      ctx.lineTo(\r\n        arrow.endX - headlen * Math.cos(angle + Math.PI / 6),\r\n        arrow.endY - headlen * Math.sin(angle + Math.PI / 6)\r\n      );\r\n      ctx.stroke();\r\n    });\r\n\r\n    // Draw texts\r\n    annotations.texts.forEach((text) => {\r\n      ctx.fillStyle = text.color;\r\n      ctx.font = `${text.fontSize}px -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif`;\r\n\r\n      // Add subtle shadow/outline when text tool is selected to indicate it's movable\r\n      if (currentTool === \"text\") {\r\n        ctx.strokeStyle = \"rgba(255, 255, 255, 0.5)\";\r\n        ctx.lineWidth = 1;\r\n        ctx.strokeText(text.text, text.x, text.y);\r\n      }\r\n\r\n      ctx.fillText(text.text, text.x, text.y);\r\n    });\r\n  }, [annotations, imageLoaded, baseImageData, currentTool]);\r\n\r\n  // Cleanup function to reset drag state\r\n  const resetDragState = useCallback(() => {\r\n    setIsDrawing(false);\r\n    setDraggingTextId(null);\r\n    setDragOffset({ x: 0, y: 0 });\r\n    setDragStart(null);\r\n    setCurrentPath([]);\r\n  }, []);\r\n\r\n  // Handle mouse leave to cleanup drag state\r\n  const handleMouseLeave = () => {\r\n    if (draggingTextId) {\r\n      // Save the current state before resetting\r\n      saveToHistory();\r\n    }\r\n    resetDragState();\r\n  };\r\n\r\n  useEffect(() => {\r\n    redrawCanvas();\r\n  }, [redrawCanvas]);\r\n\r\n  // Add global mouse up listener to handle edge cases where mouse is released outside canvas\r\n  useEffect(() => {\r\n    const handleGlobalMouseUp = () => {\r\n      if (draggingTextId) {\r\n        saveToHistory();\r\n        setDraggingTextId(null);\r\n        setDragOffset({ x: 0, y: 0 });\r\n        setIsDrawing(false);\r\n        setDragStart(null);\r\n      }\r\n    };\r\n\r\n    const handleGlobalTouchEnd = () => {\r\n      if (draggingTextId) {\r\n        saveToHistory();\r\n        setDraggingTextId(null);\r\n        setDragOffset({ x: 0, y: 0 });\r\n        setIsDrawing(false);\r\n        setDragStart(null);\r\n      }\r\n    };\r\n\r\n    // Add global event listeners\r\n    window.addEventListener(\"mouseup\", handleGlobalMouseUp);\r\n    window.addEventListener(\"touchend\", handleGlobalTouchEnd);\r\n    window.addEventListener(\"touchcancel\", handleGlobalTouchEnd);\r\n\r\n    // Cleanup\r\n    return () => {\r\n      window.removeEventListener(\"mouseup\", handleGlobalMouseUp);\r\n      window.removeEventListener(\"touchend\", handleGlobalTouchEnd);\r\n      window.removeEventListener(\"touchcancel\", handleGlobalTouchEnd);\r\n    };\r\n  }, [draggingTextId, saveToHistory]);\r\n\r\n  const getCanvasPoint = (\r\n    e: React.MouseEvent<HTMLCanvasElement> | React.TouchEvent<HTMLCanvasElement>\r\n  ): Point => {\r\n    const canvas = canvasRef.current!;\r\n    const rect = canvas.getBoundingClientRect();\r\n    const scaleX = canvas.width / rect.width;\r\n    const scaleY = canvas.height / rect.height;\r\n\r\n    let clientX: number, clientY: number;\r\n\r\n    if (\"touches\" in e) {\r\n      // Touch event\r\n      const touch = e.touches[0] || e.changedTouches[0];\r\n      clientX = touch.clientX;\r\n      clientY = touch.clientY;\r\n    } else {\r\n      // Mouse event\r\n      clientX = e.clientX;\r\n      clientY = e.clientY;\r\n    }\r\n\r\n    return {\r\n      x: (clientX - rect.left) * scaleX,\r\n      y: (clientY - rect.top) * scaleY,\r\n    };\r\n  };\r\n\r\n  const handleMouseDown = (e: React.MouseEvent<HTMLCanvasElement>) => {\r\n    e.preventDefault();\r\n    const point = getCanvasPoint(e);\r\n\r\n    // Check if clicking on existing text when text tool is selected\r\n    if (currentTool === \"text\") {\r\n      const textAtPoint = findTextAtPoint(point);\r\n\r\n      if (textAtPoint) {\r\n        // Check if it's a double click for editing (within 300ms of last click)\r\n        const now = Date.now();\r\n        const timeSinceLastClick = now - (window as any).lastTextClick || 0;\r\n        (window as any).lastTextClick = now;\r\n\r\n        if (timeSinceLastClick < 300) {\r\n          // Double click - edit text\r\n          setEditingTextId(textAtPoint.text.id);\r\n          setTextInput(textAtPoint.text.text);\r\n          setTextPosition({ x: textAtPoint.text.x, y: textAtPoint.text.y });\r\n          setFontSize(textAtPoint.text.fontSize);\r\n          return;\r\n        } else {\r\n          // Single click - start dragging\r\n          setDraggingTextId(textAtPoint.text.id);\r\n          setDragOffset(textAtPoint.offset);\r\n          setIsDrawing(true);\r\n          return;\r\n        }\r\n      } else {\r\n        // Click on empty area - create new text\r\n        setTextPosition(point);\r\n        setTextInput(\"\");\r\n        setEditingTextId(null);\r\n        return;\r\n      }\r\n    }\r\n\r\n    setIsDrawing(true);\r\n    setDragStart(point);\r\n\r\n    if (currentTool === \"pen\" || currentTool === \"highlighter\") {\r\n      setCurrentPath([point]);\r\n    }\r\n  };\r\n\r\n  const handleTouchStart = (e: React.TouchEvent<HTMLCanvasElement>) => {\r\n    e.preventDefault();\r\n    const point = getCanvasPoint(e);\r\n\r\n    // Check if touching existing text when text tool is selected\r\n    if (currentTool === \"text\") {\r\n      const textAtPoint = findTextAtPoint(point);\r\n\r\n      if (textAtPoint) {\r\n        // Check if it's a double tap for editing (within 300ms of last tap)\r\n        const now = Date.now();\r\n        const timeSinceLastTap = now - (window as any).lastTextTap || 0;\r\n        (window as any).lastTextTap = now;\r\n\r\n        if (timeSinceLastTap < 300) {\r\n          // Double tap - edit text\r\n          setEditingTextId(textAtPoint.text.id);\r\n          setTextInput(textAtPoint.text.text);\r\n          setTextPosition({ x: textAtPoint.text.x, y: textAtPoint.text.y });\r\n          setFontSize(textAtPoint.text.fontSize);\r\n          return;\r\n        } else {\r\n          // Single tap - start dragging\r\n          setDraggingTextId(textAtPoint.text.id);\r\n          setDragOffset(textAtPoint.offset);\r\n          setIsDrawing(true);\r\n          return;\r\n        }\r\n      } else {\r\n        // Tap on empty area - create new text\r\n        setTextPosition(point);\r\n        setTextInput(\"\");\r\n        setEditingTextId(null);\r\n        return;\r\n      }\r\n    }\r\n\r\n    setIsDrawing(true);\r\n    setDragStart(point);\r\n\r\n    if (currentTool === \"pen\" || currentTool === \"highlighter\") {\r\n      setCurrentPath([point]);\r\n    }\r\n  };\r\n\r\n  const handleMouseMove = (e: React.MouseEvent<HTMLCanvasElement>) => {\r\n    if (!isDrawing) return;\r\n    e.preventDefault();\r\n\r\n    const point = getCanvasPoint(e);\r\n\r\n    // Handle text dragging\r\n    if (draggingTextId) {\r\n      const newX = point.x - dragOffset.x;\r\n      const newY = point.y - dragOffset.y;\r\n\r\n      // Update text position in real-time\r\n      setAnnotations((prev) => ({\r\n        ...prev,\r\n        texts: prev.texts.map((text) =>\r\n          text.id === draggingTextId ? { ...text, x: newX, y: newY } : text\r\n        ),\r\n      }));\r\n      return;\r\n    }\r\n\r\n    if (currentTool === \"pen\" || currentTool === \"highlighter\") {\r\n      setCurrentPath((prev) => [...prev, point]);\r\n\r\n      // Draw current path in real-time on overlay canvas\r\n      const overlayCanvas = overlayCanvasRef.current;\r\n      if (!overlayCanvas) return;\r\n\r\n      const overlayCtx = overlayCanvas.getContext(\"2d\");\r\n      if (!overlayCtx || currentPath.length < 1) return;\r\n\r\n      // Clear overlay canvas\r\n      overlayCtx.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height);\r\n\r\n      // Draw current path on overlay\r\n      overlayCtx.globalCompositeOperation =\r\n        currentTool === \"highlighter\" ? \"multiply\" : \"source-over\";\r\n      overlayCtx.globalAlpha = currentTool === \"highlighter\" ? 0.3 : 1;\r\n      overlayCtx.strokeStyle = currentColor;\r\n      overlayCtx.lineWidth =\r\n        currentTool === \"highlighter\" ? strokeWidth * 3 : strokeWidth;\r\n      overlayCtx.lineCap = \"round\";\r\n      overlayCtx.lineJoin = \"round\";\r\n\r\n      overlayCtx.beginPath();\r\n      overlayCtx.moveTo(currentPath[0].x, currentPath[0].y);\r\n      [...currentPath, point].forEach((p) => {\r\n        overlayCtx.lineTo(p.x, p.y);\r\n      });\r\n      overlayCtx.stroke();\r\n\r\n      overlayCtx.globalCompositeOperation = \"source-over\";\r\n      overlayCtx.globalAlpha = 1;\r\n    }\r\n  };\r\n\r\n  const handleTouchMove = (e: React.TouchEvent<HTMLCanvasElement>) => {\r\n    if (!isDrawing) return;\r\n    e.preventDefault();\r\n\r\n    const point = getCanvasPoint(e);\r\n\r\n    // Handle text dragging\r\n    if (draggingTextId) {\r\n      const newX = point.x - dragOffset.x;\r\n      const newY = point.y - dragOffset.y;\r\n\r\n      // Update text position in real-time\r\n      setAnnotations((prev) => ({\r\n        ...prev,\r\n        texts: prev.texts.map((text) =>\r\n          text.id === draggingTextId ? { ...text, x: newX, y: newY } : text\r\n        ),\r\n      }));\r\n      return;\r\n    }\r\n\r\n    if (currentTool === \"pen\" || currentTool === \"highlighter\") {\r\n      setCurrentPath((prev) => [...prev, point]);\r\n\r\n      // Draw current path in real-time on overlay canvas\r\n      const overlayCanvas = overlayCanvasRef.current;\r\n      if (!overlayCanvas) return;\r\n\r\n      const overlayCtx = overlayCanvas.getContext(\"2d\");\r\n      if (!overlayCtx || currentPath.length < 1) return;\r\n\r\n      // Clear overlay canvas\r\n      overlayCtx.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height);\r\n\r\n      // Draw current path on overlay\r\n      overlayCtx.globalCompositeOperation =\r\n        currentTool === \"highlighter\" ? \"multiply\" : \"source-over\";\r\n      overlayCtx.globalAlpha = currentTool === \"highlighter\" ? 0.3 : 1;\r\n      overlayCtx.strokeStyle = currentColor;\r\n      overlayCtx.lineWidth =\r\n        currentTool === \"highlighter\" ? strokeWidth * 3 : strokeWidth;\r\n      overlayCtx.lineCap = \"round\";\r\n      overlayCtx.lineJoin = \"round\";\r\n\r\n      overlayCtx.beginPath();\r\n      overlayCtx.moveTo(currentPath[0].x, currentPath[0].y);\r\n      [...currentPath, point].forEach((p) => {\r\n        overlayCtx.lineTo(p.x, p.y);\r\n      });\r\n      overlayCtx.stroke();\r\n\r\n      overlayCtx.globalCompositeOperation = \"source-over\";\r\n      overlayCtx.globalAlpha = 1;\r\n    }\r\n  };\r\n\r\n  const handleMouseUp = (e: React.MouseEvent<HTMLCanvasElement>) => {\r\n    if (!isDrawing) return;\r\n    e.preventDefault();\r\n\r\n    const point = getCanvasPoint(e);\r\n    setIsDrawing(false);\r\n\r\n    // Handle text dragging completion\r\n    if (draggingTextId) {\r\n      saveToHistory();\r\n      setDraggingTextId(null);\r\n      setDragOffset({ x: 0, y: 0 });\r\n      setDragStart(null);\r\n      return;\r\n    }\r\n\r\n    // Only proceed with other tools if we have a dragStart point\r\n    if (!dragStart) return;\r\n\r\n    // Clear overlay canvas\r\n    const overlayCanvas = overlayCanvasRef.current;\r\n    if (overlayCanvas) {\r\n      const overlayCtx = overlayCanvas.getContext(\"2d\");\r\n      if (overlayCtx) {\r\n        overlayCtx.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height);\r\n      }\r\n    }\r\n\r\n    if (currentTool === \"pen\" || currentTool === \"highlighter\") {\r\n      if (currentPath.length > 1) {\r\n        const newDrawing: DrawingPath = {\r\n          id: Date.now().toString(),\r\n          tool: currentTool,\r\n          points: [...currentPath, point],\r\n          color: currentColor,\r\n          width: currentTool === \"highlighter\" ? strokeWidth * 3 : strokeWidth,\r\n        };\r\n\r\n        setAnnotations((prev) => ({\r\n          ...prev,\r\n          drawings: [...prev.drawings, newDrawing],\r\n        }));\r\n        saveToHistory();\r\n      }\r\n      setCurrentPath([]);\r\n    } else if (currentTool === \"rectangle\") {\r\n      const newRect: RectangleAnnotation = {\r\n        id: Date.now().toString(),\r\n        x: Math.min(dragStart.x, point.x),\r\n        y: Math.min(dragStart.y, point.y),\r\n        width: Math.abs(point.x - dragStart.x),\r\n        height: Math.abs(point.y - dragStart.y),\r\n        color: currentColor,\r\n        strokeWidth: strokeWidth,\r\n      };\r\n\r\n      setAnnotations((prev) => ({\r\n        ...prev,\r\n        rectangles: [...prev.rectangles, newRect],\r\n      }));\r\n      saveToHistory();\r\n    } else if (currentTool === \"arrow\") {\r\n      const newArrow: ArrowAnnotation = {\r\n        id: Date.now().toString(),\r\n        startX: dragStart.x,\r\n        startY: dragStart.y,\r\n        endX: point.x,\r\n        endY: point.y,\r\n        color: currentColor,\r\n        strokeWidth: strokeWidth,\r\n      };\r\n\r\n      setAnnotations((prev) => ({\r\n        ...prev,\r\n        arrows: [...prev.arrows, newArrow],\r\n      }));\r\n      saveToHistory();\r\n    }\r\n\r\n    setDragStart(null);\r\n  };\r\n\r\n  const handleTouchEnd = (e: React.TouchEvent<HTMLCanvasElement>) => {\r\n    if (!isDrawing) return;\r\n    e.preventDefault();\r\n\r\n    const point = getCanvasPoint(e);\r\n    setIsDrawing(false);\r\n\r\n    // Handle text dragging completion\r\n    if (draggingTextId) {\r\n      saveToHistory();\r\n      setDraggingTextId(null);\r\n      setDragOffset({ x: 0, y: 0 });\r\n      setDragStart(null);\r\n      return;\r\n    }\r\n\r\n    // Only proceed with other tools if we have a dragStart point\r\n    if (!dragStart) return;\r\n\r\n    // Clear overlay canvas\r\n    const overlayCanvas = overlayCanvasRef.current;\r\n    if (overlayCanvas) {\r\n      const overlayCtx = overlayCanvas.getContext(\"2d\");\r\n      if (overlayCtx) {\r\n        overlayCtx.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height);\r\n      }\r\n    }\r\n\r\n    if (currentTool === \"pen\" || currentTool === \"highlighter\") {\r\n      if (currentPath.length > 1) {\r\n        const newDrawing: DrawingPath = {\r\n          id: Date.now().toString(),\r\n          tool: currentTool,\r\n          points: [...currentPath, point],\r\n          color: currentColor,\r\n          width: currentTool === \"highlighter\" ? strokeWidth * 3 : strokeWidth,\r\n        };\r\n\r\n        setAnnotations((prev) => ({\r\n          ...prev,\r\n          drawings: [...prev.drawings, newDrawing],\r\n        }));\r\n        saveToHistory();\r\n      }\r\n      setCurrentPath([]);\r\n    } else if (currentTool === \"rectangle\") {\r\n      const newRect: RectangleAnnotation = {\r\n        id: Date.now().toString(),\r\n        x: Math.min(dragStart.x, point.x),\r\n        y: Math.min(dragStart.y, point.y),\r\n        width: Math.abs(point.x - dragStart.x),\r\n        height: Math.abs(point.y - dragStart.y),\r\n        color: currentColor,\r\n        strokeWidth: strokeWidth,\r\n      };\r\n\r\n      setAnnotations((prev) => ({\r\n        ...prev,\r\n        rectangles: [...prev.rectangles, newRect],\r\n      }));\r\n      saveToHistory();\r\n    } else if (currentTool === \"arrow\") {\r\n      const newArrow: ArrowAnnotation = {\r\n        id: Date.now().toString(),\r\n        startX: dragStart.x,\r\n        startY: dragStart.y,\r\n        endX: point.x,\r\n        endY: point.y,\r\n        color: currentColor,\r\n        strokeWidth: strokeWidth,\r\n      };\r\n\r\n      setAnnotations((prev) => ({\r\n        ...prev,\r\n        arrows: [...prev.arrows, newArrow],\r\n      }));\r\n      saveToHistory();\r\n    }\r\n\r\n    setDragStart(null);\r\n  };\r\n\r\n  const addText = () => {\r\n    if (!textInput.trim() || !textPosition) return;\r\n\r\n    if (editingTextId) {\r\n      // Update existing text\r\n      setAnnotations((prev) => ({\r\n        ...prev,\r\n        texts: prev.texts.map((text) =>\r\n          text.id === editingTextId\r\n            ? {\r\n              ...text,\r\n              text: textInput,\r\n              fontSize: fontSize,\r\n              color: currentColor,\r\n            }\r\n            : text\r\n        ),\r\n      }));\r\n    } else {\r\n      // Add new text\r\n      const newText: TextAnnotation = {\r\n        id: Date.now().toString(),\r\n        x: textPosition.x,\r\n        y: textPosition.y,\r\n        text: textInput,\r\n        color: currentColor,\r\n        fontSize: fontSize,\r\n      };\r\n\r\n      setAnnotations((prev) => ({\r\n        ...prev,\r\n        texts: [...prev.texts, newText],\r\n      }));\r\n    }\r\n\r\n    saveToHistory();\r\n    setTextPosition(null);\r\n    setTextInput(\"\");\r\n    setEditingTextId(null);\r\n  };\r\n\r\n  const saveAnnotatedImage = () => {\r\n    const canvas = canvasRef.current;\r\n    const overlayCanvas = overlayCanvasRef.current;\r\n    if (!canvas) return;\r\n\r\n    // If there's something being drawn on overlay, finalize it first\r\n    if (overlayCanvas) {\r\n      const overlayCtx = overlayCanvas.getContext(\"2d\");\r\n      if (overlayCtx) {\r\n        overlayCtx.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height);\r\n      }\r\n    }\r\n\r\n    // Make sure all annotations are drawn on the main canvas\r\n    redrawCanvas();\r\n\r\n    const dataUrl = canvas.toDataURL(\"image/png\");\r\n    onSave(dataUrl);\r\n  };\r\n\r\n  return (\r\n    <div\r\n      style={{\r\n        position: \"fixed\",\r\n        top: 0,\r\n        left: 0,\r\n        right: 0,\r\n        bottom: 0,\r\n        background: \"rgba(0, 0, 0, 0.9)\",\r\n        zIndex: 10000,\r\n        display: \"flex\",\r\n        flexDirection: \"column\",\r\n        alignItems: \"center\",\r\n        justifyContent: \"center\",\r\n        animation: \"fadeIn 0.3s ease-out\",\r\n      }}\r\n    >\r\n      {/* Toolbar */}\r\n      <div\r\n        style={{\r\n          background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n          border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n          borderRadius: \"8px\",\r\n          padding: \"12px\",\r\n          marginBottom: \"16px\",\r\n          display: \"flex\",\r\n          gap: \"8px\",\r\n          alignItems: \"center\",\r\n          flexWrap: \"wrap\",\r\n          boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.15)\",\r\n        }}\r\n      >\r\n        {/* Tool buttons */}\r\n        {[\r\n          { tool: \"pen\" as AnnotationTool, icon: Edit3, label: \"Pen\" },\r\n          {\r\n            tool: \"highlighter\" as AnnotationTool,\r\n            icon: Edit3,\r\n            label: \"Highlighter\",\r\n          },\r\n          { tool: \"text\" as AnnotationTool, icon: Type, label: \"Text\" },\r\n          {\r\n            tool: \"rectangle\" as AnnotationTool,\r\n            icon: Square,\r\n            label: \"Rectangle\",\r\n          },\r\n          { tool: \"arrow\" as AnnotationTool, icon: Edit3, label: \"Arrow\" },\r\n        ].map(({ tool, icon: Icon, label }) => (\r\n          <button\r\n            key={tool}\r\n            onClick={() => setCurrentTool(tool)}\r\n            style={{\r\n              padding: \"8px\",\r\n              border: `1px solid ${currentTool === tool ? currentColor : isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n              borderRadius: \"6px\",\r\n              background:\r\n                currentTool === tool\r\n                  ? `${currentColor}20`\r\n                  : isDark\r\n                    ? \"#111827\"\r\n                    : \"#f9fafb\",\r\n              color: isDark ? \"#f9fafb\" : \"#111827\",\r\n              cursor: \"pointer\",\r\n              display: \"flex\",\r\n              alignItems: \"center\",\r\n              justifyContent: \"center\",\r\n            }}\r\n            title={label}\r\n          >\r\n            <Icon size={16} />\r\n          </button>\r\n        ))}\r\n\r\n        {/* Color picker */}\r\n        <div style={{ position: \"relative\" }}>\r\n          <button\r\n            onClick={() => setShowColorPicker(!showColorPicker)}\r\n            style={{\r\n              padding: \"8px\",\r\n              border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n              borderRadius: \"6px\",\r\n              background: currentColor,\r\n              cursor: \"pointer\",\r\n              width: \"32px\",\r\n              height: \"32px\",\r\n            }}\r\n            title=\"Color\"\r\n          >\r\n            <Palette size={16} color=\"white\" />\r\n          </button>\r\n\r\n          {showColorPicker && (\r\n            <div\r\n              style={{\r\n                position: \"absolute\",\r\n                top: \"40px\",\r\n                left: 0,\r\n                background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                borderRadius: \"6px\",\r\n                padding: \"8px\",\r\n                display: \"grid\",\r\n                gridTemplateColumns: \"repeat(4, 1fr)\",\r\n                gap: \"4px\",\r\n                zIndex: 1000,\r\n              }}\r\n            >\r\n              {colors.map((color) => (\r\n                <button\r\n                  key={color}\r\n                  onClick={() => {\r\n                    setCurrentColor(color);\r\n                    setShowColorPicker(false);\r\n                  }}\r\n                  style={{\r\n                    width: \"24px\",\r\n                    height: \"24px\",\r\n                    border: `2px solid ${currentColor === color ? \"#000\" : \"transparent\"}`,\r\n                    borderRadius: \"4px\",\r\n                    background: color,\r\n                    cursor: \"pointer\",\r\n                  }}\r\n                />\r\n              ))}\r\n            </div>\r\n          )}\r\n        </div>\r\n\r\n        {/* Stroke width */}\r\n        <input\r\n          type=\"range\"\r\n          min=\"1\"\r\n          max=\"10\"\r\n          value={strokeWidth}\r\n          onChange={(e) => setStrokeWidth(Number(e.target.value))}\r\n          style={{ width: \"60px\" }}\r\n          title=\"Brush size\"\r\n        />\r\n\r\n        {/* Font size - only show when text tool is selected */}\r\n        {currentTool === \"text\" && (\r\n          <select\r\n            value={fontSize}\r\n            onChange={(e) => setFontSize(Number(e.target.value))}\r\n            style={{\r\n              padding: \"4px 8px\",\r\n              border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n              borderRadius: \"4px\",\r\n              background: isDark ? \"#111827\" : \"#f9fafb\",\r\n              color: isDark ? \"#f9fafb\" : \"#111827\",\r\n              fontSize: \"12px\",\r\n              cursor: \"pointer\",\r\n            }}\r\n            title=\"Font size\"\r\n          >\r\n            <option value={12}>12px</option>\r\n            <option value={14}>14px</option>\r\n            <option value={16}>16px</option>\r\n            <option value={18}>18px</option>\r\n            <option value={20}>20px</option>\r\n            <option value={24}>24px</option>\r\n            <option value={28}>28px</option>\r\n            <option value={32}>32px</option>\r\n            <option value={36}>36px</option>\r\n            <option value={48}>48px</option>\r\n          </select>\r\n        )}\r\n\r\n        {/* Undo/Redo */}\r\n        <button\r\n          onClick={undo}\r\n          disabled={historyIndex <= 0}\r\n          style={{\r\n            padding: \"8px\",\r\n            border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n            borderRadius: \"6px\",\r\n            background: isDark ? \"#111827\" : \"#f9fafb\",\r\n            color: isDark ? \"#f9fafb\" : \"#111827\",\r\n            cursor: historyIndex <= 0 ? \"not-allowed\" : \"pointer\",\r\n            opacity: historyIndex <= 0 ? 0.5 : 1,\r\n          }}\r\n          title=\"Undo\"\r\n        >\r\n          <Undo size={16} />\r\n        </button>\r\n\r\n        <button\r\n          onClick={redo}\r\n          disabled={historyIndex >= history.length - 1}\r\n          style={{\r\n            padding: \"8px\",\r\n            border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n            borderRadius: \"6px\",\r\n            background: isDark ? \"#111827\" : \"#f9fafb\",\r\n            color: isDark ? \"#f9fafb\" : \"#111827\",\r\n            cursor:\r\n              historyIndex >= history.length - 1 ? \"not-allowed\" : \"pointer\",\r\n            opacity: historyIndex >= history.length - 1 ? 0.5 : 1,\r\n          }}\r\n          title=\"Redo\"\r\n        >\r\n          <Redo size={16} />\r\n        </button>\r\n\r\n        {/* Save/Cancel */}\r\n        <div style={{ marginLeft: \"auto\", display: \"flex\", gap: \"8px\" }}>\r\n          <button\r\n            onClick={onCancel}\r\n            style={{\r\n              padding: \"8px 16px\",\r\n              border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n              borderRadius: \"6px\",\r\n              background: isDark ? \"#111827\" : \"#f9fafb\",\r\n              color: isDark ? \"#f9fafb\" : \"#111827\",\r\n              cursor: \"pointer\",\r\n              fontSize: \"14px\",\r\n            }}\r\n          >\r\n            Cancel\r\n          </button>\r\n          <button\r\n            onClick={saveAnnotatedImage}\r\n            style={{\r\n              padding: \"8px 16px\",\r\n              border: \"none\",\r\n              borderRadius: \"6px\",\r\n              background: \"#10b981\",\r\n              color: \"white\",\r\n              cursor: \"pointer\",\r\n              fontSize: \"14px\",\r\n              display: \"flex\",\r\n              alignItems: \"center\",\r\n              gap: \"6px\",\r\n            }}\r\n          >\r\n            <Save size={16} />\r\n            Save\r\n          </button>\r\n        </div>\r\n      </div>\r\n\r\n      {/* Canvas */}\r\n      <div\r\n        style={{\r\n          maxWidth: \"90vw\",\r\n          maxHeight: \"70vh\",\r\n          overflow: \"auto\",\r\n          border: `2px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n          borderRadius: \"8px\",\r\n          background: \"white\",\r\n          position: \"relative\",\r\n        }}\r\n      >\r\n        <div style={{ position: \"relative\", display: \"inline-block\" }}>\r\n          <canvas\r\n            ref={canvasRef}\r\n            style={{\r\n              display: \"block\",\r\n              maxWidth: \"100%\",\r\n              maxHeight: \"100%\",\r\n            }}\r\n          />\r\n          <canvas\r\n            ref={overlayCanvasRef}\r\n            onMouseDown={handleMouseDown}\r\n            onMouseMove={handleMouseMove}\r\n            onMouseUp={handleMouseUp}\r\n            onMouseLeave={handleMouseLeave}\r\n            onTouchStart={handleTouchStart}\r\n            onTouchMove={handleTouchMove}\r\n            onTouchEnd={handleTouchEnd}\r\n            style={{\r\n              position: \"absolute\",\r\n              top: 0,\r\n              left: 0,\r\n              display: \"block\",\r\n              cursor:\r\n                currentTool === \"text\"\r\n                  ? draggingTextId\r\n                    ? \"grabbing\"\r\n                    : \"text\"\r\n                  : \"crosshair\",\r\n              maxWidth: \"100%\",\r\n              maxHeight: \"100%\",\r\n              touchAction: \"none\", // Prevent scrolling on touch\r\n              pointerEvents: \"auto\",\r\n            }}\r\n          />\r\n        </div>\r\n      </div>\r\n\r\n      {/* Text input modal */}\r\n      {textPosition && (\r\n        <div\r\n          style={{\r\n            position: \"fixed\",\r\n            top: \"50%\",\r\n            left: \"50%\",\r\n            transform: \"translate(-50%, -50%)\",\r\n            background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n            border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n            borderRadius: \"8px\",\r\n            padding: \"16px\",\r\n            zIndex: 10001,\r\n            boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.15)\",\r\n          }}\r\n        >\r\n          <div\r\n            style={{ marginBottom: \"8px\", fontSize: \"14px\", fontWeight: \"500\" }}\r\n          >\r\n            {editingTextId ? \"Edit Text\" : \"Add Text\"}\r\n          </div>\r\n          <input\r\n            type=\"text\"\r\n            value={textInput}\r\n            onChange={(e) => setTextInput(e.target.value)}\r\n            placeholder=\"Enter text...\"\r\n            autoFocus\r\n            style={{\r\n              width: \"200px\",\r\n              padding: \"8px\",\r\n              border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n              borderRadius: \"4px\",\r\n              background: isDark ? \"#111827\" : \"#ffffff\",\r\n              color: isDark ? \"#f9fafb\" : \"#111827\",\r\n              marginBottom: \"8px\",\r\n            }}\r\n            onKeyPress={(e) => {\r\n              if (e.key === \"Enter\") {\r\n                addText();\r\n              } else if (e.key === \"Escape\") {\r\n                setTextPosition(null);\r\n                setTextInput(\"\");\r\n                setEditingTextId(null);\r\n              }\r\n            }}\r\n          />\r\n          <div style={{ display: \"flex\", gap: \"8px\" }}>\r\n            <button\r\n              onClick={addText}\r\n              disabled={!textInput.trim()}\r\n              style={{\r\n                padding: \"6px 12px\",\r\n                border: \"none\",\r\n                borderRadius: \"4px\",\r\n                background: \"#10b981\",\r\n                color: \"white\",\r\n                cursor: !textInput.trim() ? \"not-allowed\" : \"pointer\",\r\n                opacity: !textInput.trim() ? 0.5 : 1,\r\n                fontSize: \"12px\",\r\n              }}\r\n            >\r\n              {editingTextId ? \"Update\" : \"Add\"}\r\n            </button>\r\n            {editingTextId && (\r\n              <button\r\n                onClick={() => {\r\n                  // Delete the text\r\n                  setAnnotations((prev) => ({\r\n                    ...prev,\r\n                    texts: prev.texts.filter(\r\n                      (text) => text.id !== editingTextId\r\n                    ),\r\n                  }));\r\n                  saveToHistory();\r\n                  setTextPosition(null);\r\n                  setTextInput(\"\");\r\n                  setEditingTextId(null);\r\n                }}\r\n                style={{\r\n                  padding: \"6px 12px\",\r\n                  border: \"none\",\r\n                  borderRadius: \"4px\",\r\n                  background: \"#ef4444\",\r\n                  color: \"white\",\r\n                  cursor: \"pointer\",\r\n                  fontSize: \"12px\",\r\n                }}\r\n              >\r\n                Delete\r\n              </button>\r\n            )}\r\n            <button\r\n              onClick={() => {\r\n                setTextPosition(null);\r\n                setTextInput(\"\");\r\n                setEditingTextId(null);\r\n              }}\r\n              style={{\r\n                padding: \"6px 12px\",\r\n                border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                borderRadius: \"4px\",\r\n                background: isDark ? \"#111827\" : \"#f9fafb\",\r\n                color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                cursor: \"pointer\",\r\n                fontSize: \"12px\",\r\n              }}\r\n            >\r\n              Cancel\r\n            </button>\r\n          </div>\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\nconst FEEDBACK_TYPES = [\r\n  {\r\n    id: \"suggestFeature\",\r\n    label: \"Feature Request\",\r\n    icon: Lightbulb,\r\n    color: \"#3b82f6\",\r\n    description: \"Suggest a new feature or improvement\",\r\n    categoryId: \"cat_feature\",\r\n  },\r\n  {\r\n    id: \"reportBug\",\r\n    label: \"Bug Report\",\r\n    icon: Bug,\r\n    color: \"#ef4444\",\r\n    description: \"Report a bug or issue\",\r\n    categoryId: \"cat_bug\",\r\n  },\r\n  {\r\n    id: \"generalFeedback\",\r\n    label: \"General Feedback\",\r\n    icon: MessageCircle,\r\n    color: \"#10b981\",\r\n    description: \"Share general thoughts or feedback\",\r\n    categoryId: \"cat_other\",\r\n  },\r\n  {\r\n    id: \"createTour\",\r\n    label: \"Create Tour\",\r\n    icon: Play,\r\n    color: \"#8b5cf6\",\r\n    description: \"Create a guided tour for this page\",\r\n    categoryId: \"cat_tour\",\r\n  },\r\n  {\r\n    id: \"startTour\",\r\n    label: \"Start Tour\",\r\n    icon: Play,\r\n    color: \"#06b6d4\",\r\n    description: \"Start tour for this page\",\r\n    categoryId: \"cat_tour\",\r\n  },\r\n];\r\n\r\nconst defaultConfig = {\r\n  position: \"bottom-right\" as const,\r\n  theme: \"auto\" as const,\r\n  primaryColor: \"#6366f1\",\r\n  hideRoadmap: false,\r\n  hideBugReport: false,\r\n  hideTourCreation: false,\r\n  hideTourViewing: false,\r\n  hideInPaths: [],\r\n  customLabels: {},\r\n  enableHelp: false,\r\n  helpUrls: {},\r\n};\r\n\r\n// Create a QueryClient instance for React Query\r\nconst queryClient = new QueryClient({\r\n  defaultOptions: {\r\n    queries: {\r\n      retry: 1,\r\n      staleTime: 5 * 60 * 1000, // 5 minutes\r\n    },\r\n  },\r\n});\r\n\r\n// CSS keyframes for animations\r\nconst keyframes = `\r\n  @keyframes fadeIn {\r\n    from { opacity: 0; transform: translateY(10px); }\r\n    to { opacity: 1; transform: translateY(0); }\r\n  }\r\n  \r\n  @keyframes slideUp {\r\n    from { opacity: 0; transform: translateY(20px) scale(0.95); }\r\n    to { opacity: 1; transform: translateY(0) scale(1); }\r\n  }\r\n  \r\n  @keyframes pulse {\r\n    0%, 100% { \r\n      transform: scale(1); \r\n      opacity: 1;\r\n    }\r\n    50% { \r\n      transform: scale(1.15); \r\n      opacity: 0.8;\r\n    }\r\n  }\r\n  \r\n  @keyframes helpGlow {\r\n    0%, 100% { \r\n      box-shadow: 0 0 5px rgba(16, 185, 129, 0.2);\r\n    }\r\n    50% { \r\n      box-shadow: 0 0 15px rgba(16, 185, 129, 0.4);\r\n    }\r\n  }\r\n  \r\n  @keyframes spin {\r\n    from { transform: rotate(0deg); }\r\n    to { transform: rotate(360deg); }\r\n  }\r\n  \r\n  @keyframes bounce {\r\n    0%, 20%, 53%, 80%, 100% { transform: translateY(0); }\r\n    40%, 43% { transform: translateY(-8px); }\r\n    70% { transform: translateY(-4px); }\r\n    90% { transform: translateY(-2px); }\r\n  }\r\n  \r\n  @keyframes shake {\r\n    0%, 100% { transform: translateX(0); }\r\n    25% { transform: translateX(-2px); }\r\n    75% { transform: translateX(2px); }\r\n  }\r\n`;\r\n\r\n// Inject keyframes into the document head\r\nif (\r\n  typeof document !== \"undefined\" &&\r\n  !document.querySelector(\"#widget-animations\")\r\n) {\r\n  const style = document.createElement(\"style\");\r\n  style.id = \"widget-animations\";\r\n  style.textContent = keyframes;\r\n  document.head.appendChild(style);\r\n}\r\n\r\n// Essential API functions for the widget\r\n// 1. fetchProjectData - Get project configuration and settings\r\n// 2. fetchToursByPath - Get tours available for the current page path\r\n// 3. submitFeedback - Submit user feedback (bug reports, feature requests, etc.)\r\n// 4. saveTour - Create/save new tours for the current path\r\n\r\n// Fetch functions for React Query\r\nconst fetchProjectData = async (\r\n  projectId: string,\r\n  apiBase: string\r\n): Promise<any> => {\r\n  const response = await fetch(`${apiBase}/api/widget/project/${projectId}`);\r\n  if (!response.ok) {\r\n    throw new Error(\"Project not found\");\r\n  }\r\n  return response.json();\r\n};\r\n\r\nconst submitFeedback = async (data: {\r\n  formData: FeedbackData;\r\n  selectedFeedbackType: string;\r\n  attachedImage: string | null;\r\n  imageFileName: string;\r\n  projectId: string;\r\n  apiBase: string;\r\n  email: string;\r\n}): Promise<void> => {\r\n  const submissionData = {\r\n    ...data.formData,\r\n    email: data.email,\r\n    type: data.selectedFeedbackType,\r\n    image: data.attachedImage\r\n      ? {\r\n        data: data.attachedImage,\r\n        filename: data.imageFileName,\r\n        type: \"image\",\r\n      }\r\n      : null,\r\n  };\r\n\r\n  const response = await fetch(\r\n    `${data.apiBase}/api/widget/project/${data.projectId}/feedback`,\r\n    {\r\n      method: \"POST\",\r\n      headers: {\r\n        \"Content-Type\": \"application/json\",\r\n      },\r\n      body: JSON.stringify(submissionData),\r\n    }\r\n  );\r\n\r\n  if (!response.ok) {\r\n    throw new Error(\"Failed to submit feedback\");\r\n  }\r\n};\r\n\r\n// Fetch tours for a specific path from the public API\r\nconst fetchToursByPath = async (\r\n  projectId: string,\r\n  path: string,\r\n  apiBase: string,\r\n  deviceType?: 'mobile' | 'desktop' | 'all'\r\n): Promise<any> => {\r\n  const currentDeviceType = deviceType || getCurrentDeviceType();\r\n  \r\n  const response = await fetch(\r\n    `${apiBase}/api/public/tours/by-path/${projectId}?path=${encodeURIComponent(path)}&deviceType=${encodeURIComponent(currentDeviceType)}`,\r\n    {\r\n      method: \"GET\",\r\n      headers: {\r\n        \"Content-Type\": \"application/json\",\r\n      },\r\n    }\r\n  );\r\n\r\n  if (!response.ok) {\r\n    throw new Error(\"Failed to fetch tours\");\r\n  }\r\n\r\n  return response.json();\r\n};\r\n\r\n// Save a tour using the public API\r\nconst saveTour = async (data: {\r\n  projectId: string;\r\n  path: string;\r\n  title?: string;\r\n  tourData: any;\r\n  isActive?: boolean;\r\n  deviceType?: 'mobile' | 'desktop' | 'all';\r\n  apiBase: string;\r\n}): Promise<any> => {\r\n  const response = await fetch(\r\n    `${data.apiBase}/api/public/tours/${data.projectId}`,\r\n    {\r\n      method: \"POST\",\r\n      headers: {\r\n        \"Content-Type\": \"application/json\",\r\n      },\r\n      body: JSON.stringify({\r\n        path: data.path,\r\n        title: data.title,\r\n        tourData: data.tourData,\r\n        isActive: data.isActive !== undefined ? data.isActive : true,\r\n        deviceType: data.deviceType || 'all',\r\n      }),\r\n    }\r\n  );\r\n\r\n  if (!response.ok) {\r\n    const errorData = await response.json().catch(() => ({}));\r\n    throw new Error(errorData.error || \"Failed to save tour\");\r\n  }\r\n\r\n  return response.json();\r\n};\r\n\r\n// Helper function to detect device type\r\nfunction getDeviceType(): 'mobile' | 'desktop' {\r\n  if (typeof window === 'undefined') return 'desktop';\r\n  \r\n  // Check for touch capability and screen size\r\n  const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\r\n  const screenWidth = window.innerWidth || document.documentElement.clientWidth;\r\n  const userAgent = navigator.userAgent;\r\n  \r\n  // Mobile device indicators\r\n  const mobileRegex = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i;\r\n  const isMobileUserAgent = mobileRegex.test(userAgent);\r\n  \r\n  // Consider it mobile if:\r\n  // 1. Screen width is less than 768px (typical mobile breakpoint)\r\n  // 2. It's a touch device with small screen\r\n  // 3. User agent indicates mobile device\r\n  if (screenWidth < 768 || (isTouchDevice && screenWidth < 1024) || isMobileUserAgent) {\r\n    return 'mobile';\r\n  }\r\n  \r\n  return 'desktop';\r\n}\r\n\r\n// Helper function to get current device type for tours\r\nfunction getCurrentDeviceType(): 'mobile' | 'desktop' | 'all' {\r\n  const deviceType = getDeviceType();\r\n  return deviceType;\r\n}\r\n\r\n// Helper function to merge tour configuration from different sources\r\nfunction mergeTourConfig(\r\n  userTourConfig?: TourConfig,\r\n  apiTourSettings?: string | TourConfig,\r\n  defaultTourConfig?: TourConfig\r\n): TourConfig {\r\n  const defaultConfig: TourConfig = {\r\n    enableTours: true,\r\n    tourTheme: \"inherit\",\r\n    tourShowProgress: true,\r\n    tourAllowClose: true,\r\n    tourKeyboardControl: true,\r\n    tourSmoothScroll: true,\r\n    ...defaultTourConfig,\r\n  };\r\n\r\n  // Parse API tour settings if they're a JSON string\r\n  let parsedApiConfig: TourConfig = {};\r\n  if (apiTourSettings) {\r\n    try {\r\n      parsedApiConfig = typeof apiTourSettings === 'string'\r\n        ? JSON.parse(apiTourSettings)\r\n        : apiTourSettings;\r\n    } catch (error) {\r\n      console.warn('Failed to parse tour settings from API:', error);\r\n    }\r\n  }\r\n\r\n  // Merge configurations with user config taking highest priority\r\n  return {\r\n    ...defaultConfig,\r\n    ...parsedApiConfig,\r\n    ...userTourConfig,\r\n  };\r\n}\r\n\r\n// Internal widget component that uses React Query\r\nconst LeadForwardWidgetInternal: React.FC<UpvotyWidgetProps> = ({\r\n  config: userConfig,\r\n}) => {\r\n  const [isOpen, setIsOpen] = useState(false);\r\n  const [showSubmissionForm, setShowSubmissionForm] = useState(false);\r\n  const [selectedFeedbackType, setSelectedFeedbackType] = useState<\r\n    string | null\r\n  >(null);\r\n  const [isHiddenByPath, setIsHiddenByPath] = useState(false);\r\n\r\n  // Form data\r\n  const [formData, setFormData] = useState<FeedbackData>({\r\n    title: \"\",\r\n    description: \"\",\r\n    categoryId: \"cat_other\",\r\n    priority: \"medium\",\r\n    tags: [],\r\n    email: \"\",\r\n  });\r\n  const [submitSuccess, setSubmitSuccess] = useState(false);\r\n\r\n  // Dynamic email state (managed by the widget API)\r\n  const [prefilledEmail, setPrefilledEmail] = useState<string>(\"\");\r\n\r\n  // Image attachment state\r\n  const [attachedImage, setAttachedImage] = useState<string | null>(null);\r\n  const [imageFileName, setImageFileName] = useState<string>(\"\");\r\n  const [showImageEditor, setShowImageEditor] = useState(false);\r\n  const [originalImage, setOriginalImage] = useState<string | null>(null);\r\n  const fileInputRef = useRef<HTMLInputElement>(null);\r\n\r\n  // Help functionality state\r\n  const [showHelpDialog, setShowHelpDialog] = useState(false);\r\n  const [currentHelpUrl, setCurrentHelpUrl] = useState<string | null>(null);\r\n\r\n  // Tour creation state\r\n  const [showTourCreator, setShowTourCreator] = useState(false);\r\n  const [tourSteps, setTourSteps] = useState<Array<{\r\n    id: string;\r\n    element: string;\r\n    title: string;\r\n    description: string;\r\n    position?: \"top\" | \"bottom\" | \"left\" | \"right\" | \"auto\";\r\n    autoClick?: boolean;\r\n    autoClickTimeout?: number;\r\n    autoFillValue?: string;\r\n  }>>([]);\r\n  const [tourDeviceType, setTourDeviceType] = useState<'mobile' | 'desktop' | 'all'>('all');\r\n  const [currentStepIndex, setCurrentStepIndex] = useState(0);\r\n  const [isSelectingElement, setIsSelectingElement] = useState(false);\r\n  const [isPreviewingTour, setIsPreviewingTour] = useState(false);\r\n  const [selectorValidation, setSelectorValidation] = useState<Record<string, {\r\n    isValid: boolean;\r\n    elementCount: number;\r\n    error?: string;\r\n  }>>({});\r\n\r\n  // Tour verification state\r\n  const [showVerificationDialog, setShowVerificationDialog] = useState(false);\r\n  const [verificationCode, setVerificationCode] = useState(\"\");\r\n  const [verificationStatus, setVerificationStatus] = useState<{\r\n    requesting: boolean;\r\n    validating: boolean;\r\n    verified: boolean;\r\n    error: string | null;\r\n    maskedEmail: string | null;\r\n  }>({\r\n    requesting: false,\r\n    validating: false,\r\n    verified: false,\r\n    error: null,\r\n    maskedEmail: null,\r\n  });\r\n\r\n  // Refs to store event handler functions for proper cleanup\r\n  const elementSelectionHandlersRef = useRef<{\r\n    handleElementClick: ((e: MouseEvent) => void) | null;\r\n    handleElementHover: ((e: MouseEvent) => void) | null;\r\n    handleElementHoverOut: ((e: MouseEvent) => void) | null;\r\n    currentHighlight: HTMLElement | null;\r\n  }>({\r\n    handleElementClick: null,\r\n    handleElementHover: null,\r\n    handleElementHoverOut: null,\r\n    currentHighlight: null,\r\n  });\r\n\r\n  const tourControllerRef = useRef<any>(null);\r\n\r\n  const apiBase = userConfig.apiBase || \"https://leadforward.one\";\r\n\r\n  // Use React Query to fetch project data\r\n  const {\r\n    data: projectData,\r\n    isLoading: loading,\r\n    error: queryError,\r\n  } = useQuery({\r\n    queryKey: [\"project\", userConfig.projectId],\r\n    queryFn: () => fetchProjectData(userConfig.projectId || \"\", apiBase),\r\n    enabled: !!userConfig.projectId,\r\n  });\r\n\r\n  const project = projectData?.project || null;\r\n  const apiConfig = projectData && !projectData.project ? projectData : null;\r\n\r\n  // Merge default config, user config, and project data from API\r\n  const config = useMemo(() => {\r\n    const mergedConfig = { ...defaultConfig, ...userConfig };\r\n\r\n    // If we have API config (direct widget config response), use it\r\n    if (apiConfig) {\r\n      return {\r\n        ...mergedConfig,\r\n        position:\r\n          userConfig.position || apiConfig.widgetPosition || mergedConfig.position,\r\n        theme: userConfig.theme || apiConfig.widgetTheme || mergedConfig.theme,\r\n        primaryColor:\r\n          userConfig.primaryColor ||\r\n          apiConfig.widgetPrimaryColor ||\r\n          mergedConfig.primaryColor,\r\n        hideRoadmap:\r\n          userConfig.hideRoadmap !== undefined\r\n            ? userConfig.hideRoadmap\r\n            : (apiConfig.widgetHideRoadmap ?? mergedConfig.hideRoadmap),\r\n        hideBugReport:\r\n          userConfig.hideBugReport !== undefined\r\n            ? userConfig.hideBugReport\r\n            : (apiConfig.widgetHideBugReport ?? mergedConfig.hideBugReport),\r\n        hideTourCreation:\r\n          userConfig.hideTourCreation !== undefined\r\n            ? userConfig.hideTourCreation\r\n            : (apiConfig.widgetHideTourCreation ?? mergedConfig.hideTourCreation),\r\n        hideTourViewing:\r\n          userConfig.hideTourViewing !== undefined\r\n            ? userConfig.hideTourViewing\r\n            : (apiConfig.widgetHideTourViewing ?? mergedConfig.hideTourViewing),\r\n        hideInPaths:\r\n          userConfig.hideInPaths !== undefined\r\n            ? userConfig.hideInPaths\r\n            : apiConfig.widgetHideInPaths || mergedConfig.hideInPaths,\r\n        customLabels:\r\n          userConfig.customLabels !== undefined\r\n            ? userConfig.customLabels\r\n            : apiConfig.widgetCustomLabels || mergedConfig.customLabels,\r\n        enableHelp:\r\n          userConfig.enableHelp !== undefined\r\n            ? userConfig.enableHelp\r\n            : (apiConfig?.widgetCustomLabels?.enableHelp ?? apiConfig?.widgetEnableHelp ?? mergedConfig.enableHelp),\r\n        helpUrls:\r\n          userConfig?.customLabels?.helpUrls !== undefined\r\n            ? userConfig?.customLabels?.helpUrls\r\n            : apiConfig?.widgetCustomLabels?.helpUrls ||\r\n            (mergedConfig?.customLabels as any)?.helpUrls,\r\n        // Add missing properties from API config\r\n        projectId:\r\n          userConfig.projectId || apiConfig.projectId || mergedConfig.projectId,\r\n        email: userConfig.email || apiConfig.email || mergedConfig.email,\r\n        apiBase:\r\n          userConfig.apiBase || apiConfig.apiBase || mergedConfig.apiBase,\r\n        // Tour configuration from API\r\n        tourConfig: mergeTourConfig(\r\n          userConfig.tourConfig,\r\n          apiConfig.tourSettings,\r\n          mergedConfig.tourConfig\r\n        ),\r\n      };\r\n    }\r\n\r\n    // Legacy: if we have project data (nested structure), use it\r\n    if (project) {\r\n      let parsedCustomLabels = mergedConfig.customLabels;\r\n      let parsedHideInPaths = mergedConfig.hideInPaths;\r\n      let parsedHelpUrls = mergedConfig.helpUrls;\r\n      let enableHelp = mergedConfig.enableHelp;\r\n\r\n      try {\r\n        if (project.widgetCustomLabels) {\r\n          // Check if it's already an object or needs to be parsed\r\n          if (typeof project.widgetCustomLabels === \"string\") {\r\n            parsedCustomLabels = JSON.parse(project.widgetCustomLabels);\r\n          } else {\r\n            parsedCustomLabels = project.widgetCustomLabels;\r\n          }\r\n\r\n          // Check if help settings are stored in custom labels (legacy)\r\n          if (parsedCustomLabels && typeof parsedCustomLabels === \"object\") {\r\n            const customLabels = parsedCustomLabels as any;\r\n            if (customLabels.enableHelp !== undefined) {\r\n              enableHelp = customLabels.enableHelp;\r\n            }\r\n            if (customLabels.helpUrls !== undefined) {\r\n              parsedHelpUrls = customLabels.helpUrls;\r\n            }\r\n          }\r\n        }\r\n      } catch (e) {\r\n        console.warn(\r\n          \"Failed to parse widgetCustomLabels from project data:\",\r\n          e\r\n        );\r\n      }\r\n\r\n      try {\r\n        if (project.widgetHideInPaths) {\r\n          // Check if it's already an array or needs to be parsed\r\n          if (typeof project.widgetHideInPaths === \"string\") {\r\n            parsedHideInPaths = JSON.parse(project.widgetHideInPaths);\r\n          } else {\r\n            parsedHideInPaths = project.widgetHideInPaths;\r\n          }\r\n        }\r\n      } catch (e) {\r\n        console.warn(\"Failed to parse widgetHideInPaths from project data:\", e);\r\n      }\r\n\r\n      try {\r\n        if (project.widgetHelpUrls) {\r\n          // Check if it's already an object or needs to be parsed\r\n          if (typeof project.widgetCustomLabels === \"string\") {\r\n            parsedHelpUrls = JSON.parse(\r\n              project.widgetCustomLabels?.helpUrls || \"{}\"\r\n            );\r\n          } else {\r\n            parsedHelpUrls = project.widgetCustomLabels?.helpUrls || {};\r\n          }\r\n        }\r\n      } catch (e) {\r\n        console.warn(\"Failed to parse widgetHelpUrls from project data:\", e);\r\n      }\r\n\r\n      return {\r\n        ...mergedConfig,\r\n        position:\r\n          userConfig.position ||\r\n          project.widgetPosition ||\r\n          mergedConfig.position,\r\n        theme: userConfig.theme || project.widgetTheme || mergedConfig.theme,\r\n        primaryColor:\r\n          userConfig.primaryColor ||\r\n          project.widgetPrimaryColor ||\r\n          mergedConfig.primaryColor,\r\n        hideRoadmap:\r\n          userConfig.hideRoadmap !== undefined\r\n            ? userConfig.hideRoadmap\r\n            : (project.widgetHideRoadmap ?? mergedConfig.hideRoadmap),\r\n        hideBugReport:\r\n          userConfig.hideBugReport !== undefined\r\n            ? userConfig.hideBugReport\r\n            : (project.widgetHideBugReport ?? mergedConfig.hideBugReport),\r\n        hideTourCreation:\r\n          userConfig.hideTourCreation !== undefined\r\n            ? userConfig.hideTourCreation\r\n            : (project.widgetHideTourCreation ?? mergedConfig.hideTourCreation),\r\n        hideTourViewing:\r\n          userConfig.hideTourViewing !== undefined\r\n            ? userConfig.hideTourViewing\r\n            : (project.widgetHideTourViewing ?? mergedConfig.hideTourViewing),\r\n        hideInPaths:\r\n          userConfig.hideInPaths !== undefined\r\n            ? userConfig.hideInPaths\r\n            : parsedHideInPaths || mergedConfig.hideInPaths,\r\n        customLabels:\r\n          userConfig.customLabels !== undefined\r\n            ? userConfig.customLabels\r\n            : parsedCustomLabels || mergedConfig.customLabels,\r\n        enableHelp:\r\n          userConfig.enableHelp !== undefined\r\n            ? userConfig.enableHelp\r\n            : (enableHelp ?? project.widgetEnableHelp ?? mergedConfig.enableHelp),\r\n        helpUrls:\r\n          userConfig?.customLabels?.helpUrls !== undefined\r\n            ? userConfig?.customLabels?.helpUrls\r\n            : parsedHelpUrls || mergedConfig.helpUrls,\r\n        // Tour configuration from project\r\n        tourConfig: mergeTourConfig(\r\n          userConfig.tourConfig,\r\n          project.tourSettings,\r\n          mergedConfig.tourConfig\r\n        ),\r\n      };\r\n    }\r\n\r\n    return mergedConfig;\r\n  }, [userConfig, project, apiConfig]);\r\n\r\n  // Debug configuration\r\n  // // console.log(\"Widget Config:\", config);\r\n  // // console.log(\"Project Data:\", project);\r\n  // // console.log(\"API Config:\", apiConfig);\r\n  // // console.log(\"Help Debug:\", {\r\n  //   enableHelp: config.enableHelp,\r\n  //   customLabels: config.customLabels,\r\n  //   helpUrls: (config.customLabels as any)?.helpUrls,\r\n  //   currentPath: typeof window !== 'undefined' ? window.location.pathname : 'N/A'\r\n  // });\r\n\r\n  const error = queryError instanceof Error ? queryError.message : null;\r\n\r\n  // Use React Query mutation for feedback submission\r\n  const feedbackMutation = useMutation({\r\n    mutationFn: submitFeedback,\r\n    onSuccess: () => {\r\n      setSubmitSuccess(true);\r\n      setTimeout(() => {\r\n        resetWidget();\r\n        setIsOpen(false);\r\n      }, 2000);\r\n    },\r\n  });\r\n\r\n  // Use React Query mutation for tour saving\r\n  const saveTourMutation = useMutation({\r\n    mutationFn: saveTour,\r\n    onSuccess: (data) => {\r\n      // console.log(`Tour ${data.operation}:`, data.tour);\r\n      setLocalError(null);\r\n      alert(`Tour ${data.operation} successfully!`);\r\n      \r\n      // Refetch tours after successful save to update the list\r\n      // This ensures the newly created tour appears in the available tours\r\n      // refetchTours();\r\n      \r\n      resetWidget();\r\n      setIsOpen(false);\r\n    },\r\n    onError: (error: Error) => {\r\n      console.error(\"Save tour error:\", error);\r\n      setLocalError(error.message || \"Failed to save tour\");\r\n    },\r\n  });\r\n\r\n  // Use React Query to fetch available tours for current path\r\n  const {\r\n    data: toursData,\r\n    isLoading: toursLoading,\r\n    error: toursError,\r\n    refetch: refetchTours,\r\n  } = useQuery({\r\n    queryKey: [\"tours\", userConfig.projectId, typeof window !== 'undefined' ? window.location.pathname : '/', typeof window !== 'undefined' ? getCurrentDeviceType() : 'desktop'],\r\n    queryFn: () => fetchToursByPath(\r\n      userConfig.projectId || \"\", \r\n      typeof window !== 'undefined' ? window.location.pathname : '/',\r\n      apiBase,\r\n      typeof window !== 'undefined' ? getCurrentDeviceType() : 'desktop'\r\n    ),\r\n    enabled: !!userConfig.projectId && typeof window !== 'undefined',\r\n    staleTime: 5 * 60 * 1000, // 5 minutes\r\n  });\r\n\r\n  // Helper function to get visible feedback types\r\n  const getVisibleFeedbackTypes = useMemo(() => {\r\n    const filtered = FEEDBACK_TYPES.filter((type) => {\r\n      if (type.id === \"reportBug\" && config.hideBugReport) return false;\r\n      if (type.id === \"createTour\" && config.hideTourCreation) return false;\r\n      if (type.id === \"startTour\" && config.hideTourViewing) return false;\r\n      // Hide \"Start Tour\" button if no tours are available for current path or if tours are still loading\r\n      if (type.id === \"startTour\" && (toursLoading || !toursData || !toursData.tours || toursData.tours.length === 0)) return false;\r\n      return true;\r\n    });\r\n    \r\n    // Debug logging to help track tour visibility\r\n    const startTourVisible = filtered.some(type => type.id === \"startTour\");\r\n   \r\n    \r\n    return filtered;\r\n  }, [config.hideBugReport, config.hideTourCreation, config.hideTourViewing, toursData, toursLoading]);\r\n\r\n  const submitting = feedbackMutation.isPending;\r\n  const submitError =\r\n    feedbackMutation.error instanceof Error\r\n      ? feedbackMutation.error.message\r\n      : null;\r\n\r\n  // Tour saving state\r\n  const savingTour = saveTourMutation.isPending;\r\n  const saveTourError =\r\n    saveTourMutation.error instanceof Error\r\n      ? saveTourMutation.error.message\r\n      : null;\r\n\r\n  // Local error state for UI interactions (screenshots, file uploads, etc.)\r\n  const [localError, setLocalError] = useState<string | null>(null);\r\n\r\n  // Combined error from query error, mutation error, or local error\r\n  const displayError = error || submitError || saveTourError || localError;\r\n\r\n  // Register with the widget API for email changes\r\n  useEffect(() => {\r\n    const handleEmailChange = (email: string) => {\r\n      setPrefilledEmail(email);\r\n      setFormData((prev) => ({ ...prev, email }));\r\n    };\r\n\r\n    // Register the callback and provide the config email\r\n    _registerEmailCallback(handleEmailChange, config.email || \"\");\r\n\r\n    // Cleanup function to unregister when component unmounts\r\n    return () => {\r\n      _unregisterEmailCallback();\r\n    };\r\n  }, [config.email]);\r\n\r\n  // Check if widget should be hidden based on current path\r\n  useEffect(() => {\r\n    const checkPath = () => {\r\n      if (!config.hideInPaths || config.hideInPaths.length === 0) {\r\n        setIsHiddenByPath(false);\r\n        return;\r\n      }\r\n\r\n      const currentPath = window.location.pathname;\r\n\r\n      const shouldHide = config.hideInPaths.some((path: string) => {\r\n        // Support exact matches and wildcard patterns\r\n        if (path.endsWith(\"*\")) {\r\n          const basePath = path.slice(0, -1);\r\n          const matches = currentPath.startsWith(basePath);\r\n          return matches;\r\n        }\r\n        const matches = currentPath === path;\r\n        return matches;\r\n      });\r\n\r\n      setIsHiddenByPath(shouldHide);\r\n    };\r\n\r\n    // Check path on initial load\r\n    checkPath();\r\n\r\n    // Listen for navigation changes (for SPAs)\r\n    const handleLocationChange = () => {\r\n      checkPath();\r\n    };\r\n\r\n    // Listen for popstate events (back/forward button)\r\n    window.addEventListener(\"popstate\", handleLocationChange);\r\n\r\n    // Listen for pushstate/replacestate events (programmatic navigation)\r\n    const originalPushState = history.pushState;\r\n    const originalReplaceState = history.replaceState;\r\n\r\n    history.pushState = function (...args) {\r\n      originalPushState.apply(history, args);\r\n      setTimeout(handleLocationChange, 0);\r\n    };\r\n\r\n    history.replaceState = function (...args) {\r\n      originalReplaceState.apply(history, args);\r\n      setTimeout(handleLocationChange, 0);\r\n    };\r\n\r\n    // Cleanup\r\n    return () => {\r\n      window.removeEventListener(\"popstate\", handleLocationChange);\r\n      history.pushState = originalPushState;\r\n      history.replaceState = originalReplaceState;\r\n    };\r\n  }, [config.hideInPaths]);\r\n\r\n  // Screenshot and image upload functions\r\n  const handleScreenshot = async () => {\r\n    try {\r\n      const stream = await navigator.mediaDevices.getDisplayMedia({\r\n        video: true,\r\n      });\r\n\r\n      const video = document.createElement(\"video\");\r\n      video.srcObject = stream;\r\n      video.play();\r\n\r\n      video.addEventListener(\"loadedmetadata\", () => {\r\n        // Wait for 1 second to allow the window selection dialog to disappear\r\n        // This prevents capturing the browser's selection UI in the screenshot\r\n        setTimeout(() => {\r\n          const canvas = document.createElement(\"canvas\");\r\n          canvas.width = video.videoWidth;\r\n          canvas.height = video.videoHeight;\r\n\r\n          const ctx = canvas.getContext(\"2d\");\r\n          if (ctx) {\r\n            ctx.drawImage(video, 0, 0);\r\n            const dataURL = canvas.toDataURL(\"image/png\");\r\n\r\n            // Store original image and show editor\r\n            setOriginalImage(dataURL);\r\n            setShowImageEditor(true);\r\n            setImageFileName(`screenshot-${Date.now()}.png`);\r\n            // Clear any previous error when screenshot is successful\r\n            setLocalError(null);\r\n          }\r\n\r\n          // Stop all tracks to end screen sharing\r\n          stream.getTracks().forEach((track) => track.stop());\r\n        }, 300); // 300ms delay\r\n      });\r\n    } catch (error) {\r\n      console.error(\"Error capturing screenshot:\", error);\r\n      // Only set error if user didn't cancel the screen sharing dialog\r\n      if (error instanceof Error && error.name !== \"NotAllowedError\") {\r\n        setLocalError(\r\n          \"Failed to capture screenshot. Please try uploading an image instead.\"\r\n        );\r\n      }\r\n    }\r\n  };\r\n\r\n  const handleImageUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n    const file = event.target.files?.[0];\r\n    if (!file) return;\r\n\r\n    // Validate file type\r\n    if (!file.type.startsWith(\"image/\")) {\r\n      setLocalError(\"Please select a valid image file\");\r\n      return;\r\n    }\r\n\r\n    // Validate file size (max 5MB)\r\n    if (file.size > 5 * 1024 * 1024) {\r\n      setLocalError(\"Image size must be less than 5MB\");\r\n      return;\r\n    }\r\n\r\n    const reader = new FileReader();\r\n    reader.onload = (e) => {\r\n      const result = e.target?.result as string;\r\n\r\n      // Store original image and show editor\r\n      setOriginalImage(result);\r\n      setShowImageEditor(true);\r\n      setImageFileName(file.name);\r\n      setLocalError(null);\r\n    };\r\n    reader.readAsDataURL(file);\r\n  };\r\n\r\n  const handleImageEditorSave = (annotatedImage: string) => {\r\n    setAttachedImage(annotatedImage);\r\n    setShowImageEditor(false);\r\n  };\r\n\r\n  const handleImageEditorCancel = () => {\r\n    setShowImageEditor(false);\r\n    setOriginalImage(null);\r\n    // Don't clear the filename as user might want to try again\r\n  };\r\n\r\n  const removeAttachment = () => {\r\n    setAttachedImage(null);\r\n    setImageFileName(\"\");\r\n    setOriginalImage(null);\r\n    if (fileInputRef.current) {\r\n      fileInputRef.current.value = \"\";\r\n    }\r\n  };\r\n\r\n  // Position styles\r\n  const getPositionStyles = (): React.CSSProperties => {\r\n    const baseStyles: React.CSSProperties = {\r\n      position: \"fixed\",\r\n      zIndex: 9999,\r\n    };\r\n\r\n    switch (config.position) {\r\n      case \"bottom-left\":\r\n        return { ...baseStyles, bottom: \"24px\", left: \"24px\" };\r\n      case \"top-right\":\r\n        return { ...baseStyles, top: \"24px\", right: \"24px\" };\r\n      case \"top-left\":\r\n        return { ...baseStyles, top: \"24px\", left: \"24px\" };\r\n      default:\r\n        return { ...baseStyles, bottom: \"24px\", right: \"24px\" };\r\n    }\r\n  };\r\n\r\n  // Theme detection with safe matchMedia check\r\n  const [isDark, setIsDark] = useState(() => {\r\n    if (config.theme === \"dark\") return true;\r\n    if (config.theme === \"light\") return false;\r\n    if (\r\n      config.theme === \"auto\" &&\r\n      typeof window !== \"undefined\" &&\r\n      window.matchMedia\r\n    ) {\r\n      return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n    }\r\n    return false; // Default to light theme if matchMedia is not available\r\n  });\r\n\r\n  // Listen for theme changes when in auto mode\r\n  useEffect(() => {\r\n    if (\r\n      config.theme !== \"auto\" ||\r\n      typeof window === \"undefined\" ||\r\n      !window.matchMedia\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\r\n    const handleChange = (e: MediaQueryListEvent) => {\r\n      setIsDark(e.matches);\r\n    };\r\n\r\n    // Set initial value\r\n    setIsDark(mediaQuery.matches);\r\n\r\n    // Add listener\r\n    mediaQuery.addEventListener(\"change\", handleChange);\r\n\r\n    // Cleanup\r\n    return () => {\r\n      mediaQuery.removeEventListener(\"change\", handleChange);\r\n    };\r\n  }, [config.theme]);\r\n\r\n  // Update isDark state when config.theme changes\r\n  useEffect(() => {\r\n    if (config.theme === \"dark\") {\r\n      setIsDark(true);\r\n    } else if (config.theme === \"light\") {\r\n      setIsDark(false);\r\n    } else if (\r\n      config.theme === \"auto\" &&\r\n      typeof window !== \"undefined\" &&\r\n      window.matchMedia\r\n    ) {\r\n      setIsDark(window.matchMedia(\"(prefers-color-scheme: dark)\").matches);\r\n    }\r\n  }, [config.theme]);\r\n\r\n  const startTour = (tourId: string) => {\r\n    // console.log('=== START TOUR FUNCTION CALLED ===');\r\n    // console.log('startTour called with ID:', tourId);\r\n    \r\n    try {\r\n      const tourEngine = (window as any).tourEngine;\r\n      if (!tourEngine) {\r\n        console.error('Tour engine not available');\r\n        alert('Tour system not ready. Please try again in a moment.');\r\n        return;\r\n      }\r\n\r\n      // Add event listener for driver.js next button clicks\r\n      // This will trigger a click on the highlighted element when the user clicks next\r\n      document.addEventListener('driver-next-step', (e: any) => {\r\n        try {\r\n          const highlightedElement = document.querySelector('.driver-highlighted-element');\r\n          if (highlightedElement && highlightedElement instanceof HTMLElement) {\r\n            // console.log('Simulating click on highlighted element:', highlightedElement);\r\n            highlightedElement.click();\r\n          }\r\n        } catch (error) {\r\n          console.error('Error simulating click on element:', error);\r\n        }\r\n      });\r\n\r\n      // console.log('Tour engine found:', tourEngine);\r\n\r\n      // First, try to find the tour in the tours data from API\r\n      let tourData = null;\r\n      if (toursData && toursData.tours) {\r\n        const tour = toursData.tours.find((t: any) => t.id === tourId || t.id === String(tourId));\r\n        if (tour) {\r\n          tourData = {\r\n            id: tour.id,\r\n            title: tour.title || `Tour for ${tour.path}`,\r\n            description: tour.description || `Tour created for ${tour.path}`,\r\n            steps: tour.tourData?.steps || [],\r\n            tourData: tour.tourData || {\r\n              id: tour.tourData?.id || `tour-${tour.id}`,\r\n              steps: tour.tourData?.steps || [],\r\n              triggers: tour.tourData?.triggers || [],\r\n              targeting: tour.tourData?.targeting || { includePaths: [tour.path] },\r\n              priority: tour.tourData?.priority || 1,\r\n              metadata: tour.tourData?.metadata || {}\r\n            },\r\n            path: tour.path,\r\n            isActive: tour.isActive\r\n          };\r\n        }\r\n      }\r\n      \r\n      // console.log('Found tour data:', tourData);\r\n      \r\n      if (tourData && tourEngine.addTour) {\r\n        // If we have tour data from API, register it with the tour engine first\r\n        try {\r\n          // Create a proper tour object compatible with the tour engine\r\n          const steps = tourData.steps || tourData.tourData?.steps || [];\r\n          \r\n          // Validate that we have valid steps\r\n          if (!steps || !Array.isArray(steps) || steps.length === 0) {\r\n            console.error('Tour has no valid steps:', tourData);\r\n            alert('This tour has no steps and cannot be started.');\r\n            return;\r\n          }\r\n\r\n          // Ensure steps have required fields\r\n          const validSteps = steps.map((step: any, index: number) => {\r\n            const validStep = {\r\n              id: step.id || `step-${index + 1}`,\r\n              element: step.element || 'body',\r\n              title: step.title || `Step ${index + 1}`,\r\n              description: step.description || '',\r\n              position: step.position || 'auto',\r\n              ...step\r\n            };\r\n            \r\n            // console.log(`Processing step ${index + 1}:`, validStep);\r\n            \r\n            // Validate that the element exists\r\n            try {\r\n              const elements = document.querySelectorAll(validStep.element);\r\n              // console.log(`Step ${index + 1} element check: \"${validStep.element}\" found ${elements.length} elements`);\r\n              \r\n              if (elements.length === 0) {\r\n                console.warn(`Step ${index + 1}: No elements found for selector \"${validStep.element}\"`);\r\n                // Fallback to body if element doesn't exist\r\n                validStep.element = 'body';\r\n                // console.log(`Step ${index + 1}: Falling back to body element`);\r\n              } else if (elements.length > 1) {\r\n                console.warn(`Step ${index + 1}: Multiple elements found for selector \"${validStep.element}\"`);\r\n              }\r\n            } catch (error) {\r\n              console.error(`Step ${index + 1}: Invalid selector \"${validStep.element}\"`, error);\r\n              // Fallback to body if selector is invalid\r\n              validStep.element = 'body';\r\n              // console.log(`Step ${index + 1}: Falling back to body element due to invalid selector`);\r\n            }\r\n            \r\n            return validStep;\r\n          });\r\n\r\n          const tourObject = {\r\n            id: tourData.tourData?.id || `tour-${tourId}`,\r\n            projectId: config.projectId || '',\r\n            name: tourData.title,\r\n            description: tourData.description || '',\r\n            isActive: true,\r\n            steps: validSteps,\r\n            triggers: tourData.tourData?.triggers || [\r\n              {\r\n                type: \"manual\" as const,\r\n                priority: 1\r\n              }\r\n            ],\r\n            targeting: tourData.tourData?.targeting || { \r\n              urlPatterns: [window.location.pathname],\r\n              maxShowCount: 999,\r\n              showOncePerSession: false\r\n            },\r\n            styling: tourData.tourData?.styling || {\r\n              theme: config.tourConfig?.tourTheme || \"inherit\" as const,\r\n              primaryColor: config.tourConfig?.tourPrimaryColor || config.primaryColor\r\n            },\r\n            analytics: tourData.tourData?.analytics || {\r\n              views: 0,\r\n              completions: 0,\r\n              dropOffPoints: [],\r\n              averageCompletionTime: 0,\r\n              lastUpdated: new Date().toISOString()\r\n            },\r\n            createdAt: tourData.tourData?.createdAt || new Date().toISOString(),\r\n            updatedAt: tourData.tourData?.updatedAt || new Date().toISOString()\r\n          };\r\n\r\n          // console.log('Registering tour with engine:', tourObject);\r\n          \r\n          // Add the tour to the engine\r\n          tourEngine.addTour(tourObject);\r\n          \r\n          // Add a small delay to ensure the tour is properly registered\r\n          setTimeout(async () => {\r\n            // Ensure Driver.js CSS is loaded\r\n            if (!document.querySelector('link[href*=\"driver\"]') && !document.querySelector('style[data-driver-css]')) {\r\n              // console.log('Loading Driver.js CSS...');\r\n              const link = document.createElement('link');\r\n              link.rel = 'stylesheet';\r\n              link.href = 'https://cdn.jsdelivr.net/npm/driver.js@1.3.6/dist/driver.css';\r\n              link.setAttribute('data-driver-css', 'true');\r\n              document.head.appendChild(link);\r\n              \r\n              // Wait for CSS to load\r\n              await new Promise(resolve => setTimeout(resolve, 200));\r\n              // console.log('Driver.js CSS loaded');\r\n            }\r\n            \r\n            // Now try to start the tour using the proper tour ID\r\n            // console.log('Attempting to start tour with ID:', tourObject.id);\r\n            // console.log('Tour engine active tours:', tourEngine.getActiveTours());\r\n            // console.log('Tour engine driver instance:', tourEngine.driver);\r\n            \r\n            const success = tourEngine.forceStartTour(tourObject.id);\r\n            // console.log('Tour start result:', success);\r\n            \r\n            // Check if driver.js UI is actually visible\r\n            setTimeout(() => {\r\n              const driverOverlay = document.querySelector('.driver-overlay, .driver-highlighted-element, .driver-popover');\r\n              // console.log('Driver.js UI elements found:', driverOverlay);\r\n              \r\n              if (!driverOverlay && success) {\r\n                console.error('Tour started but no Driver.js UI found. Attempting manual driver start...');\r\n                \r\n                // Check if the tour steps elements exist\r\n                tourObject.steps.forEach((step: any, index: number) => {\r\n                  try {\r\n                    const elements = document.querySelectorAll(step.element);\r\n                    // console.log(`Step ${index + 1} (${step.element}): Found ${elements.length} elements`, elements);\r\n                  } catch (error) {\r\n                    console.error(`Step ${index + 1} (${step.element}): Invalid selector`, error);\r\n                  }\r\n                });\r\n                \r\n                // Try to manually start the driver\r\n                try {\r\n                  // console.log('Attempting manual Driver.js initialization...');\r\n                  \r\n                  // Import driver.js and start manually\r\n                  import('driver.js').then(({ driver }) => {\r\n                    // console.log('Driver.js imported successfully');\r\n                    \r\n                    // Check the target element before creating the tour\r\n                    const firstStep = tourObject.steps[0];\r\n                    const targetElement = document.querySelector(firstStep.element);\r\n                    // console.log('Target element for first step:', targetElement);\r\n                    \r\n                    if (targetElement) {\r\n                      const targetStyles = window.getComputedStyle(targetElement);\r\n                     \r\n                      \r\n                      const rect = targetElement.getBoundingClientRect();\r\n                      // console.log('Target element position:', rect);\r\n                    }\r\n                    \r\n                    const driverSteps = tourObject.steps.map((step: any) => ({\r\n                      element: step.element,\r\n                      popover: {\r\n                        title: step.title,\r\n                        description: step.description,\r\n                        position: step.position || 'bottom'\r\n                      }\r\n                    }));\r\n                    \r\n                    // console.log('Manual driver steps:', driverSteps);\r\n                    \r\n                    // Check if CSS is loaded\r\n                    const driverCSS = document.querySelector('link[href*=\"driver\"], style[data-driver-css]');\r\n                    // console.log('Driver.js CSS element found:', driverCSS);\r\n                    \r\n                    if (!driverCSS) {\r\n                      console.warn('Driver.js CSS not found, adding inline styles...');\r\n                      // Add minimal inline styles for testing\r\n                      const style = document.createElement('style');\r\n                      style.textContent = `\r\n                        .driver-overlay {\r\n                          position: fixed !important;\r\n                          top: 0 !important;\r\n                          left: 0 !important;\r\n                          width: 100% !important;\r\n                          height: 100% !important;\r\n                          background: rgba(0, 0, 0, 0.75) !important;\r\n                          z-index: 999999 !important;\r\n                          pointer-events: auto !important;\r\n                        }\r\n                        .driver-popover {\r\n                          position: absolute !important;\r\n                          background: white !important;\r\n                          border-radius: 8px !important;\r\n                          box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important;\r\n                          padding: 16px !important;\r\n                          max-width: 300px !important;\r\n                          z-index: 1000000 !important;\r\n                          font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif !important;\r\n                        }\r\n                        .driver-highlighted-element {\r\n                          position: relative !important;\r\n                          z-index: 1000001 !important;\r\n                        }\r\n                      `;\r\n                      document.head.appendChild(style);\r\n                    }\r\n                    \r\n                    const driverInstance = driver({\r\n                      animate: true,\r\n                      overlayOpacity: 0.75,\r\n                      stagePadding: 10,\r\n                      allowClose: true,\r\n                      showProgress: true,\r\n                      allowKeyboardControl: true,\r\n                      smoothScroll: true,\r\n                      steps: driverSteps.map((step: any, index: number) => ({\r\n                        ...step,\r\n                        popover: {\r\n                          ...step.popover,\r\n                          onNextClick: (element?: Element, driverStep?: any, options?: any) => {\r\n                            // console.log(`Manual driver: onNextClick for step ${index}`);\r\n                            // Check if the step has autoClick flag in original tour config\r\n                            const originalStep = tourObject.steps[index];\r\n                            if (originalStep && originalStep.autoClick) {\r\n                              // console.log(`Manual driver: Auto-click enabled for step ${index}`);\r\n                              \r\n                              // Get custom timeout or use default\r\n                              const timeout = originalStep.autoClickTimeout ?? 500;\r\n                              \r\n                              // Perform auto-click immediately\r\n                              try {\r\n                                const elements = document.querySelectorAll(originalStep.element);\r\n                                if (elements.length > 0) {\r\n                                  const element = elements[0] as HTMLElement;\r\n                                  // console.log(`Manual driver: Clicking element:`, element);\r\n                                  element.click();\r\n                                  \r\n                                  // Move to next step after click with custom delay\r\n                                  // This is important to let the click action complete\r\n                                  setTimeout(() => {\r\n                                    if (driverInstance) {\r\n                                      driverInstance.moveNext();\r\n                                    }\r\n                                  }, timeout);\r\n                                } else {\r\n                                  console.warn(`Manual driver: Element not found for selector: ${originalStep.element}`);\r\n                                  // If element not found, still move to next step\r\n                                  setTimeout(() => {\r\n                                    if (driverInstance) driverInstance.moveNext();\r\n                                  }, 100);\r\n                                }\r\n                              } catch (error) {\r\n                                console.error('Manual driver: Auto-click error:', error);\r\n                                // If error occurs, still move to next step\r\n                                setTimeout(() => {\r\n                                  if (driverInstance) driverInstance.moveNext();\r\n                                }, 100);\r\n                              }\r\n                              \r\n                              // Return false to try to prevent immediate navigation\r\n                              return false;\r\n                            } else {\r\n                               setTimeout(() => {\r\n                                    if (driverInstance) driverInstance.moveNext();\r\n                                  }, 100);\r\n                              return true;\r\n                            }\r\n                          }\r\n                        }\r\n                      })),\r\n                      onDestroyed: () => {\r\n                     //   // console.log('Manual driver tour completed');\r\n                      },\r\n                      onHighlightStarted: (element: any, step: any, options: any) => {\r\n                    //    // console.log('Driver highlight started:', element, step);\r\n                        // Auto-fill input field if autoFillValue is set\r\n                        const currentIndex = options?.state?.activeIndex ?? 0;\r\n                        const originalStep = tourObject.steps[currentIndex];\r\n                        \r\n                        if (originalStep?.autoFillValue && element) {\r\n                          console.log('Manual driver: Attempting auto-fill with value:', originalStep.autoFillValue);\r\n                          console.log('Manual driver: Target element:', element);\r\n                          \r\n                          setTimeout(() => {\r\n                            try {\r\n                              const targetElement = element as HTMLElement;\r\n                              let inputElement: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null = null;\r\n                              \r\n                              // First check if the element itself is an input\r\n                              if (targetElement.tagName === 'INPUT' || targetElement.tagName === 'TEXTAREA' || targetElement.tagName === 'SELECT') {\r\n                                inputElement = targetElement as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\r\n                                console.log('Manual driver: Element itself is an input');\r\n                              } else {\r\n                                // Try to find input within the element\r\n                                inputElement = targetElement.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\r\n                                console.log('Manual driver: Found input within element:', inputElement);\r\n                              }\r\n                              \r\n                              if (inputElement) {\r\n                                // Use React's native setter to bypass framework control\r\n                                const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\r\n                                  window.HTMLInputElement.prototype,\r\n                                  'value'\r\n                                )?.set;\r\n                                \r\n                                const nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(\r\n                                  window.HTMLTextAreaElement.prototype,\r\n                                  'value'\r\n                                )?.set;\r\n                                \r\n                                // Set value using native setter\r\n                                if (inputElement instanceof HTMLInputElement && nativeInputValueSetter) {\r\n                                  nativeInputValueSetter.call(inputElement, originalStep.autoFillValue);\r\n                                } else if (inputElement instanceof HTMLTextAreaElement && nativeTextAreaValueSetter) {\r\n                                  nativeTextAreaValueSetter.call(inputElement, originalStep.autoFillValue);\r\n                                } else {\r\n                                  inputElement.value = originalStep.autoFillValue;\r\n                                }\r\n                                \r\n                                // Dispatch events to notify React/frameworks\r\n                                const inputEvent = new Event('input', { bubbles: true, cancelable: true });\r\n                                const changeEvent = new Event('change', { bubbles: true, cancelable: true });\r\n                                \r\n                                inputElement.dispatchEvent(inputEvent);\r\n                                inputElement.dispatchEvent(changeEvent);\r\n                                \r\n                                console.log(`Manual driver: Auto-filled value \"${originalStep.autoFillValue}\" into input field`);\r\n                                console.log('Manual driver: Current input value:', inputElement.value);\r\n                              } else {\r\n                                console.warn('Manual driver: No input element found for auto-fill');\r\n                              }\r\n                            } catch (error) {\r\n                              console.error('Manual driver: Auto-fill error:', error);\r\n                            }\r\n                          }, 200);\r\n                        }\r\n                      },\r\n                      onDeselected: (element: any, step: any) => {\r\n                    //    // console.log('Driver deselected:', element, step);\r\n                      }\r\n                    });\r\n                    \r\n                   // // console.log('Starting manual driver tour...');\r\n                    driverInstance.drive();\r\n                    \r\n                    // Add additional debugging after starting the tour\r\n                    setTimeout(() => {\r\n                   //   // console.log('Checking if manual tour UI appeared...');\r\n                      const driverElements = document.querySelectorAll('.driver-overlay, .driver-highlighted-element, .driver-popover');\r\n                    //  // console.log('Manual tour - Driver.js UI elements after start:', driverElements);\r\n                      \r\n                      // Check if overlay exists but might be hidden\r\n                      const overlay = document.querySelector('.driver-overlay');\r\n                      if (overlay) {\r\n                        const overlayStyles = window.getComputedStyle(overlay);\r\n                       \r\n                      }\r\n                      \r\n                      // Check if popover exists but might be hidden\r\n                      const popover = document.querySelector('.driver-popover');\r\n                      if (popover) {\r\n                        const popoverStyles = window.getComputedStyle(popover);\r\n                        \r\n                      }\r\n                      \r\n                      // If still no UI, try to force show overlay with higher z-index\r\n                      if (!driverElements.length) {\r\n                        console.error('Manual driver tour started but no UI elements found. This indicates a deeper issue.');\r\n                        \r\n                        // Try to manually create a simple overlay for testing\r\n                        const testOverlay = document.createElement('div');\r\n                        testOverlay.style.cssText = `\r\n                          position: fixed;\r\n                          top: 0;\r\n                          left: 0;\r\n                          width: 100%;\r\n                          height: 100%;\r\n                          background: rgba(0, 0, 0, 0.75);\r\n                          z-index: 999999;\r\n                          pointer-events: auto;\r\n                        `;\r\n                        testOverlay.innerHTML = `\r\n                          <div style=\"\r\n                            position: absolute;\r\n                            top: 50%;\r\n                            left: 50%;\r\n                            transform: translate(-50%, -50%);\r\n                            background: white;\r\n                            padding: 20px;\r\n                            border-radius: 8px;\r\n                            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\r\n                            max-width: 400px;\r\n                          \">\r\n                            <h3 style=\"margin: 0 0 10px 0; color: #333;\">Driver.js Test</h3>\r\n                            <p style=\"margin: 0 0 15px 0; color: #666;\">\r\n                              This test overlay confirms that DOM manipulation works. \r\n                              The issue is specifically with Driver.js not rendering properly.\r\n                            </p>\r\n                            <button onclick=\"this.parentElement.parentElement.remove()\" style=\"\r\n                              background: #6366f1;\r\n                              color: white;\r\n                              border: none;\r\n                              padding: 8px 16px;\r\n                              border-radius: 4px;\r\n                              cursor: pointer;\r\n                            \">Close Test</button>\r\n                          </div>\r\n                        `;\r\n                        document.body.appendChild(testOverlay);\r\n                        \r\n                        setTimeout(() => {\r\n                          if (testOverlay.parentElement) {\r\n                            testOverlay.remove();\r\n                          }\r\n                        }, 5000);\r\n                      }\r\n                    }, 300);\r\n                  }).catch(error => {\r\n                    console.error('Failed to import and start driver.js manually:', error);\r\n                  });\r\n                } catch (error) {\r\n                  console.error('Error in manual driver start:', error);\r\n                }\r\n              }\r\n            }, 500);\r\n            \r\n            if (success) {\r\n              setSelectedFeedbackType(null);\r\n              setIsOpen(false);\r\n            } else {\r\n              alert('Failed to start tour. Please try again.');\r\n            }\r\n          }, 100);\r\n        } catch (error) {\r\n          console.error('Error registering/starting tour:', error);\r\n          alert('Failed to start tour. Please try again.');\r\n        }\r\n      } else if (tourEngine.forceStartTour) {\r\n        // Fallback: try to start the tour directly if it's already registered\r\n      //  // console.log('Trying direct tour start with ID:', tourId);\r\n        const success = tourEngine.forceStartTour(tourId);\r\n      //  // console.log('Direct tour start result:', success);\r\n        \r\n        if (success) {\r\n          setSelectedFeedbackType(null);\r\n          setIsOpen(false);\r\n        } else {\r\n          // Try with string conversion in case of ID type mismatch\r\n      //    // console.log('Trying direct tour start with string ID:', String(tourId));\r\n          const stringSuccess = tourEngine.forceStartTour(String(tourId));\r\n      //    // console.log('String tour start result:', stringSuccess);\r\n          \r\n          if (stringSuccess) {\r\n            setSelectedFeedbackType(null);\r\n            setIsOpen(false);\r\n          } else {\r\n            console.error('All tour start attempts failed');\r\n            alert('Failed to start tour. Please try again.');\r\n          }\r\n        }\r\n      } else {\r\n        console.error('Tour engine forceStartTour method not available');\r\n        alert('Tour system not ready. Please try again in a moment.');\r\n      }\r\n    } catch (error) {\r\n      console.error('Error in startTour function:', error);\r\n      alert('An error occurred while starting the tour. Please try again.');\r\n    }\r\n  };\r\n\r\n  const handleDirectTourStart = async () => {\r\n    // console.log('=== DIRECT TOUR START ===');\r\n    \r\n    try {\r\n      // First try to get tour data from API for current path\r\n      if (toursData && toursData.tours && toursData.tours.length > 0) {\r\n        const tour = toursData.tours[0]; // Take the first (and only) tour for this path\r\n        // console.log('Starting tour from API data:', tour);\r\n        \r\n        // Start the tour using the existing startTour function\r\n        startTour(tour.id);\r\n        return;\r\n      }\r\n\r\n      // Fallback to tour engine if API data is not available\r\n      const tourEngine = (window as any).tourEngine;\r\n      if (tourEngine && tourEngine.getActiveTours) {\r\n        const tours = tourEngine.getActiveTours();\r\n        // console.log('Tours from engine:', tours);\r\n        \r\n        if (tours && tours.length > 0) {\r\n          const tour = tours[0]; // Take the first available tour\r\n          startTour(tour.id);\r\n          return;\r\n        }\r\n      }\r\n\r\n      // No tours available\r\n      alert('No tours available for this page.');\r\n      // console.log('No tours found for current path');\r\n      \r\n      // Close the widget\r\n      setSelectedFeedbackType(null);\r\n      setIsOpen(false);\r\n      \r\n    } catch (error) {\r\n      console.error('Error in direct tour start:', error);\r\n      alert('Failed to start tour. Please try again.');\r\n    }\r\n  };\r\n\r\n  const handleFeedbackTypeSelect = (type: string) => {\r\n    const feedbackType = FEEDBACK_TYPES.find((t) => t.id === type);\r\n    const currentEmailValue = _getDynamicEmail() || config.email || \"\";\r\n\r\n    setSelectedFeedbackType(type);\r\n\r\n    // Handle tour creation separately\r\n    if (type === \"createTour\") {\r\n      // Check if verification is already completed\r\n      if (verificationStatus.verified) {\r\n        setShowTourCreator(true);\r\n        setShowSubmissionForm(false);\r\n        // Initialize with empty tour and detect current device type\r\n        setTourSteps([]);\r\n        setTourDeviceType(getCurrentDeviceType());\r\n        setCurrentStepIndex(0);\r\n      } else {\r\n        // Show verification dialog first\r\n        setShowVerificationDialog(true);\r\n        setShowSubmissionForm(false);\r\n      }\r\n      return;\r\n    }\r\n\r\n    // Handle tour starting directly\r\n    if (type === \"startTour\") {\r\n      handleDirectTourStart();\r\n      return;\r\n    }\r\n\r\n    setShowSubmissionForm(true);\r\n    setFormData((prev) => ({\r\n      ...prev,\r\n      title: \"\",\r\n      description: \"\",\r\n      categoryId: feedbackType?.categoryId || \"cat_other\",\r\n      priority: type === \"reportBug\" ? \"high\" : \"medium\",\r\n      email: currentEmailValue,\r\n    }));\r\n    // Clear image attachments when switching feedback types\r\n    setAttachedImage(null);\r\n    setImageFileName(\"\");\r\n    setOriginalImage(null);\r\n    setShowImageEditor(false);\r\n    if (fileInputRef.current) {\r\n      fileInputRef.current.value = \"\";\r\n    }\r\n  };\r\n\r\n  const handleViewRoadmap = () => {\r\n    if (project) {\r\n      // Use custom domain if available, otherwise use the API base with project path\r\n      const roadmapUrl = project.customDomain\r\n        ? `https://${project.customDomain}/roadmap`\r\n        : `${apiBase}/p/${project.slug}/roadmap`;\r\n      window.open(roadmapUrl, \"_blank\");\r\n    } else if (apiConfig) {\r\n      // If we have API config but no project details, construct a basic roadmap URL\r\n      const roadmapUrl = `${config.apiBase}/roadmap`;\r\n      window.open(roadmapUrl, \"_blank\");\r\n    }\r\n    setIsOpen(false);\r\n  };\r\n\r\n  // Get contextual help URL based on current path\r\n  const getContextualHelpUrl = () => {\r\n    // Get helpUrls from customLabels or direct helpUrls config\r\n    const helpUrls = (config.customLabels as any)?.helpUrls || config.helpUrls;\r\n\r\n    if (!config.enableHelp || !helpUrls) return null;\r\n\r\n    const currentPath = window.location.pathname;\r\n\r\n    // Find exact match first\r\n    if (helpUrls[currentPath]) {\r\n      return helpUrls[currentPath];\r\n    }\r\n\r\n    // Find wildcard matches and prefix matches\r\n    const paths = Object.keys(helpUrls).sort(\r\n      (a, b) => b.length - a.length\r\n    );\r\n\r\n    for (const path of paths) {\r\n      // Handle wildcard patterns (e.g., \"/dashboard/*\")\r\n      if (path.endsWith('/*')) {\r\n        const basePath = path.slice(0, -2); // Remove \"/*\"\r\n        if (currentPath.startsWith(basePath + '/') || currentPath === basePath) {\r\n          return helpUrls[path];\r\n        }\r\n      }\r\n      // Handle exact prefix matches (only if the configured path ends with exact match)\r\n      else if (path !== '/' && path !== '*' && currentPath === path) {\r\n        return helpUrls[path];\r\n      }\r\n    }\r\n\r\n    // Return default help URL if available (only for root path or global wildcard)\r\n    if (currentPath === '/' && helpUrls[\"/\"]) {\r\n      return helpUrls[\"/\"];\r\n    }\r\n    if (helpUrls[\"*\"]) {\r\n      return helpUrls[\"*\"];\r\n    }\r\n\r\n    return null;\r\n  };\r\n\r\n  const handleHelp = () => {\r\n    const helpUrl = getValidVideoHelpUrl();\r\n    if (helpUrl) {\r\n      setCurrentHelpUrl(helpUrl);\r\n      setShowHelpDialog(true);\r\n    }\r\n  };\r\n\r\n  // Check if URL is a valid video URL that can be embedded\r\n  const isValidVideoUrl = (url: string) => {\r\n    if (!url) return false;\r\n\r\n    // Check if it's a YouTube URL (which we can embed)\r\n    const youtubeId = getYouTubeVideoId(url);\r\n    if (youtubeId) return true;\r\n\r\n    // Add other video platforms here if needed\r\n    // For now, we only support YouTube embedding\r\n    return false;\r\n  };\r\n\r\n  // Get contextual help URL and validate if it's a video\r\n  const getValidVideoHelpUrl = () => {\r\n    const helpUrl = getContextualHelpUrl();\r\n    if (!helpUrl) return null;\r\n\r\n    // Only return the URL if it's a valid video URL\r\n    return isValidVideoUrl(helpUrl) ? helpUrl : null;\r\n  };\r\n\r\n  // Extract YouTube video ID from URL\r\n  const getYouTubeVideoId = (url: string) => {\r\n    const patterns = [\r\n      /(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/|youtube\\.com\\/shorts\\/)([^&\\n?#]+)/,\r\n      /youtube\\.com\\/watch\\?.*v=([^&\\n?#]+)/,\r\n    ];\r\n\r\n    for (const pattern of patterns) {\r\n      const match = url.match(pattern);\r\n      if (match) return match[1];\r\n    }\r\n\r\n    return null;\r\n  };\r\n\r\n  // Tour verification functions\r\n  const handleRequestVerificationCode = async () => {\r\n    setVerificationStatus(prev => ({ \r\n      ...prev, \r\n      requesting: true, \r\n      error: null \r\n    }));\r\n\r\n    try {\r\n      const response = await fetch(`${apiBase}/api/widget/verification/request`, {\r\n        method: 'POST',\r\n        headers: {\r\n          'Content-Type': 'application/json',\r\n        },\r\n        body: JSON.stringify({\r\n          projectId: config.projectId,\r\n        }),\r\n      });\r\n\r\n      const data = await response.json();\r\n\r\n      if (!response.ok) {\r\n        throw new Error(data.error || 'Failed to send verification code');\r\n      }\r\n\r\n      setVerificationStatus(prev => ({\r\n        ...prev,\r\n        requesting: false,\r\n        maskedEmail: data.maskedEmail,\r\n        error: null,\r\n      }));\r\n    } catch (error) {\r\n      setVerificationStatus(prev => ({\r\n        ...prev,\r\n        requesting: false,\r\n        error: error instanceof Error ? error.message : 'Failed to send verification code',\r\n      }));\r\n    }\r\n  };\r\n\r\n  const handleValidateVerificationCode = async () => {\r\n    if (!verificationCode.trim()) {\r\n      setVerificationStatus(prev => ({\r\n        ...prev,\r\n        error: 'Please enter the verification code',\r\n      }));\r\n      return;\r\n    }\r\n\r\n    setVerificationStatus(prev => ({ \r\n      ...prev, \r\n      validating: true, \r\n      error: null \r\n    }));\r\n\r\n    try {\r\n      const response = await fetch(`${apiBase}/api/widget/verification/validate`, {\r\n        method: 'POST',\r\n        headers: {\r\n          'Content-Type': 'application/json',\r\n        },\r\n        body: JSON.stringify({\r\n          projectId: config.projectId,\r\n          verificationCode: verificationCode.trim(),\r\n        }),\r\n      });\r\n\r\n      const data = await response.json();\r\n\r\n      if (!response.ok) {\r\n        throw new Error(data.error || 'Invalid verification code');\r\n      }\r\n\r\n      setVerificationStatus(prev => ({\r\n        ...prev,\r\n        validating: false,\r\n        verified: true,\r\n        error: null,\r\n      }));\r\n\r\n      // Close verification dialog and open tour creator\r\n      setShowVerificationDialog(false);\r\n      setShowTourCreator(true);\r\n      // Initialize with empty tour and detect current device type\r\n      setTourSteps([]);\r\n      setTourDeviceType(getCurrentDeviceType());\r\n      setCurrentStepIndex(0);\r\n    } catch (error) {\r\n      setVerificationStatus(prev => ({\r\n        ...prev,\r\n        validating: false,\r\n        error: error instanceof Error ? error.message : 'Verification failed',\r\n      }));\r\n    }\r\n  };\r\n\r\n  const handleSubmit = async (e: React.FormEvent) => {\r\n    e.preventDefault();\r\n\r\n    // Use dynamic email first, then config email, then user input\r\n    const emailToUse = _getDynamicEmail() || config.email || formData.email;\r\n    if (\r\n      !formData.title.trim() ||\r\n      !formData.description.trim() ||\r\n      !emailToUse.trim()\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    feedbackMutation.mutate({\r\n      formData,\r\n      selectedFeedbackType: selectedFeedbackType || \"\",\r\n      attachedImage,\r\n      imageFileName,\r\n      projectId: config.projectId || \"\",\r\n      apiBase,\r\n      email: emailToUse,\r\n    });\r\n  };\r\n\r\n  // Tour creation functions\r\n  const handleStartElementSelection = () => {\r\n    setIsSelectingElement(true);\r\n    // Add visual indicator for element selection\r\n    document.body.style.cursor = 'crosshair';\r\n\r\n    // Add hover effect to show what will be selected\r\n    const handleElementHover = (e: MouseEvent) => {\r\n      const target = e.target as HTMLElement;\r\n      if (!target || target === elementSelectionHandlersRef.current.currentHighlight) return;\r\n\r\n      // Remove previous highlight\r\n      if (elementSelectionHandlersRef.current.currentHighlight) {\r\n        elementSelectionHandlersRef.current.currentHighlight.style.outline = '';\r\n        elementSelectionHandlersRef.current.currentHighlight.style.backgroundColor = '';\r\n      }\r\n\r\n      // Add highlight to current element\r\n      elementSelectionHandlersRef.current.currentHighlight = target;\r\n      target.style.outline = `2px dashed ${config.primaryColor}`;\r\n      target.style.backgroundColor = `${config.primaryColor}10`;\r\n    };\r\n\r\n    // Add mouse out handler to remove highlight when not hovering\r\n    const handleElementHoverOut = (e: MouseEvent) => {\r\n      // Only remove highlight if we're not moving to a child element\r\n      const target = e.target as HTMLElement;\r\n      const relatedTarget = e.relatedTarget as HTMLElement;\r\n      \r\n      if (target === elementSelectionHandlersRef.current.currentHighlight && (!relatedTarget || !target.contains(relatedTarget))) {\r\n        if (elementSelectionHandlersRef.current.currentHighlight) {\r\n          elementSelectionHandlersRef.current.currentHighlight.style.outline = '';\r\n          elementSelectionHandlersRef.current.currentHighlight.style.backgroundColor = '';\r\n          elementSelectionHandlersRef.current.currentHighlight = null;\r\n        }\r\n      }\r\n    };\r\n\r\n    // Add event listener for element selection\r\n    const handleElementClick = (e: MouseEvent) => {\r\n      e.preventDefault();\r\n      e.stopPropagation();\r\n\r\n      const target = e.target as HTMLElement;\r\n      if (!target) return;\r\n\r\n      // Skip if clicking on the widget itself\r\n      if (target.closest('[data-leadforward-widget]')) {\r\n        return;\r\n      }\r\n\r\n      // Remove highlight\r\n      if (elementSelectionHandlersRef.current.currentHighlight) {\r\n        elementSelectionHandlersRef.current.currentHighlight.style.outline = '';\r\n        elementSelectionHandlersRef.current.currentHighlight.style.backgroundColor = '';\r\n      }\r\n\r\n      // Generate a unique selector for the element using our improved algorithm\r\n      const finalSelector = generateElementSelector(target);\r\n\r\n      // Validate the final selector\r\n      let isValidFinalSelector = false;\r\n      let finalElementCount = 0;\r\n      \r\n      try {\r\n        const elements = document.querySelectorAll(finalSelector);\r\n        finalElementCount = elements.length;\r\n        isValidFinalSelector = elements.length === 1 && elements[0] === target;\r\n      } catch (error) {\r\n        console.warn('Final selector validation failed:', finalSelector, error);\r\n      }\r\n\r\n      // Log the result\r\n      if (isValidFinalSelector) {\r\n        // console.log(`✅ Successfully generated unique selector: \"${finalSelector}\"`);\r\n      } else {\r\n        console.warn(`⚠️ Generated selector \"${finalSelector}\" matches ${finalElementCount} elements`);\r\n      }\r\n\r\n      // Get a meaningful description based on element content\r\n      const getElementDescription = (el: HTMLElement): string => {\r\n        // Try to get meaningful text content\r\n        const textContent = el.textContent?.trim();\r\n        if (textContent && textContent.length > 0 && textContent.length < 50) {\r\n          return `Guide for \"${textContent}\"`;\r\n        }\r\n\r\n        // Try to get meaningful attributes\r\n        const ariaLabel = el.getAttribute('aria-label');\r\n        if (ariaLabel) {\r\n          return `Guide for ${ariaLabel}`;\r\n        }\r\n\r\n        const placeholder = el.getAttribute('placeholder');\r\n        if (placeholder) {\r\n          return `Guide for ${placeholder} field`;\r\n        }\r\n\r\n        const alt = el.getAttribute('alt');\r\n        if (alt) {\r\n          return `Guide for ${alt} image`;\r\n        }\r\n\r\n        const title = el.getAttribute('title');\r\n        if (title) {\r\n          return `Guide for ${title}`;\r\n        }\r\n\r\n        // Fallback to tag name\r\n        const tagName = el.tagName.toLowerCase();\r\n        return `Guide for ${tagName} element`;\r\n      };\r\n\r\n      // Add new step\r\n      const stepId = `step_${Date.now()}`;\r\n      const newStep = {\r\n        id: stepId,\r\n        element: finalSelector,\r\n        title: `Step ${tourSteps.length + 1}`,\r\n        description: getElementDescription(target),\r\n        position: \"auto\" as const,\r\n        autoClick: false, // Default to true\r\n      };\r\n\r\n      setTourSteps(prev => [...prev, newStep]);\r\n      setCurrentStepIndex(tourSteps.length);\r\n\r\n      // Set initial validation state\r\n      setSelectorValidation(prev => ({\r\n        ...prev,\r\n        [stepId]: {\r\n          isValid: isValidFinalSelector,\r\n          elementCount: finalElementCount,\r\n          error: isValidFinalSelector ? undefined : (finalElementCount === 0 ? 'Element not found' : `Matches ${finalElementCount} elements`)\r\n        }\r\n      }));\r\n\r\n      setIsSelectingElement(false);\r\n      document.body.style.cursor = 'default';\r\n\r\n      // Remove event listeners\r\n      if (elementSelectionHandlersRef.current.handleElementClick) {\r\n        document.removeEventListener('click', elementSelectionHandlersRef.current.handleElementClick, true);\r\n      }\r\n      if (elementSelectionHandlersRef.current.handleElementHover) {\r\n        document.removeEventListener('mouseover', elementSelectionHandlersRef.current.handleElementHover, true);\r\n      }\r\n      if (elementSelectionHandlersRef.current.handleElementHoverOut) {\r\n        document.removeEventListener('mouseout', elementSelectionHandlersRef.current.handleElementHoverOut, true);\r\n      }\r\n\r\n      // Clear the refs\r\n      elementSelectionHandlersRef.current = {\r\n        handleElementClick: null,\r\n        handleElementHover: null,\r\n        handleElementHoverOut: null,\r\n        currentHighlight: null,\r\n      };\r\n\r\n      // The improved selector generator should always create unique selectors\r\n      // No need for additional warnings\r\n      // console.log(`Successfully created tour step with selector: \"${finalSelector}\"`);\r\n    };\r\n\r\n    // Store the functions in refs for cleanup\r\n    elementSelectionHandlersRef.current = {\r\n      handleElementClick,\r\n      handleElementHover,\r\n      handleElementHoverOut,\r\n      currentHighlight: null,\r\n    };\r\n\r\n    document.addEventListener('click', handleElementClick, true);\r\n    document.addEventListener('mouseover', handleElementHover, true);\r\n    document.addEventListener('mouseout', handleElementHoverOut, true);\r\n  };\r\n\r\n  const generateElementSelector = (element: HTMLElement): string => {\r\n    // Helper function to test if a selector is unique\r\n    const isUnique = (selector: string): boolean => {\r\n      try {\r\n        const elements = document.querySelectorAll(selector);\r\n        return elements.length === 1 && elements[0] === element;\r\n      } catch {\r\n        return false;\r\n      }\r\n    };\r\n\r\n    // Helper function to safely escape CSS values\r\n    const safeEscape = (value: string): string => {\r\n      try {\r\n        return CSS.escape(value.trim());\r\n      } catch {\r\n        return value.replace(/[^\\w-]/g, '\\\\$&');\r\n      }\r\n    };\r\n\r\n    // Helper function to get element position among siblings\r\n    const getElementPosition = (el: HTMLElement): number => {\r\n      const parent = el.parentElement;\r\n      if (!parent) return 1;\r\n\r\n      const siblings = Array.from(parent.children).filter(\r\n        child => child.tagName === el.tagName\r\n      );\r\n      return siblings.indexOf(el) + 1;\r\n    };\r\n\r\n    // Helper function to get absolute position among all siblings\r\n    const getAbsolutePosition = (el: HTMLElement): number => {\r\n      const parent = el.parentElement;\r\n      if (!parent) return 1;\r\n      return Array.from(parent.children).indexOf(el) + 1;\r\n    };\r\n\r\n    // Enhanced utility class detection\r\n    const isUtilityClass = (cls: string): boolean => {\r\n      return (\r\n        // Tailwind utility patterns\r\n        /^(text-|bg-|border-|p-|m-|px-|py-|mx-|my-|w-|h-|top-|left-|right-|bottom-|z-|opacity-|transform|transition|duration-|ease-|scale-|rotate-|translate-|skew-)/.test(cls) ||\r\n        // Common layout classes\r\n        ['flex', 'block', 'inline', 'hidden', 'relative', 'absolute', 'fixed', 'sticky', 'grid', 'table'].includes(cls) ||\r\n        // Common sizing classes\r\n        ['w-full', 'h-full', 'min-w-', 'min-h-', 'max-w-', 'max-h-'].some(prefix => cls.startsWith(prefix)) ||\r\n        // Common spacing classes\r\n        /^(space-|gap-|divide-)/.test(cls) ||\r\n        // Common styling classes\r\n        ['rounded', 'shadow', 'border', 'cursor-pointer', 'select-none', 'pointer-events-none'].includes(cls) ||\r\n        /^(rounded-|shadow-|border-|cursor-|select-|pointer-events-)/.test(cls) ||\r\n        // Bootstrap utility classes\r\n        /^(d-|col-|row-|container|btn-|text-|bg-|border-|p-|m-|justify-|align-)/.test(cls) ||\r\n        // Common framework classes\r\n        /^(ng-|v-|react-|vue-|_)/.test(cls) ||\r\n        // Single letter classes or very short classes that are likely utilities\r\n        /^[a-z]$/.test(cls) || cls.length <= 2\r\n      );\r\n    };\r\n\r\n    // Strategy 1: Try ID first (most specific)\r\n    if (element.id && element.id.trim()) {\r\n      const idSelector = `#${safeEscape(element.id)}`;\r\n      if (isUnique(idSelector)) {\r\n        return idSelector;\r\n      }\r\n    }\r\n\r\n    // Strategy 2: Try data attributes (often unique in components)\r\n    const dataAttrs = Array.from(element.attributes)\r\n      .filter(attr => attr.name.startsWith('data-') && attr.value && attr.value.trim())\r\n      .sort((a, b) => b.value.length - a.value.length); // Prioritize longer, more specific values\r\n\r\n    for (const attr of dataAttrs) {\r\n      const escapedValue = safeEscape(attr.value);\r\n      const dataSelector = `[${attr.name}=\"${escapedValue}\"]`;\r\n      if (isUnique(dataSelector)) {\r\n        return dataSelector;\r\n      }\r\n\r\n      // Try with tag name for more specificity\r\n      const tagDataSelector = `${element.tagName.toLowerCase()}[${attr.name}=\"${escapedValue}\"]`;\r\n      if (isUnique(tagDataSelector)) {\r\n        return tagDataSelector;\r\n      }\r\n    }\r\n\r\n    // Strategy 3: Try specific attributes that are likely to be unique\r\n    const uniqueAttrs = ['name', 'type', 'role', 'aria-label', 'aria-labelledby', 'aria-describedby', 'placeholder', 'alt', 'title', 'value', 'href', 'for', 'form'];\r\n    for (const attrName of uniqueAttrs) {\r\n      const attrValue = element.getAttribute(attrName);\r\n      if (attrValue && attrValue.trim()) {\r\n        const escapedValue = safeEscape(attrValue);\r\n        const attrSelector = `[${attrName}=\"${escapedValue}\"]`;\r\n        if (isUnique(attrSelector)) {\r\n          return attrSelector;\r\n        }\r\n        \r\n        // Try with tag name\r\n        const tagAttrSelector = `${element.tagName.toLowerCase()}[${attrName}=\"${escapedValue}\"]`;\r\n        if (isUnique(tagAttrSelector)) {\r\n          return tagAttrSelector;\r\n        }\r\n      }\r\n    }\r\n\r\n    // Strategy 4: Try meaningful class combinations first\r\n    if (element.className) {\r\n      const classes = element.className.split(' ').filter(c => c.trim());\r\n      const meaningfulClasses = classes.filter(cls => !isUtilityClass(cls));\r\n\r\n      // Try single meaningful classes\r\n      for (const cls of meaningfulClasses) {\r\n        const classSelector = `.${safeEscape(cls)}`;\r\n        if (isUnique(classSelector)) {\r\n          return classSelector;\r\n        }\r\n\r\n        // Try with tag name for more specificity\r\n        const tagClassSelector = `${element.tagName.toLowerCase()}.${safeEscape(cls)}`;\r\n        if (isUnique(tagClassSelector)) {\r\n          return tagClassSelector;\r\n        }\r\n      }\r\n\r\n      // Try combinations of meaningful classes\r\n      for (let i = 0; i < Math.min(meaningfulClasses.length, 3); i++) {\r\n        for (let j = i + 1; j < Math.min(meaningfulClasses.length, 3); j++) {\r\n          const combinedSelector = `.${safeEscape(meaningfulClasses[i])}.${safeEscape(meaningfulClasses[j])}`;\r\n          if (isUnique(combinedSelector)) {\r\n            return combinedSelector;\r\n          }\r\n\r\n          const tagCombinedSelector = `${element.tagName.toLowerCase()}.${safeEscape(meaningfulClasses[i])}.${safeEscape(meaningfulClasses[j])}`;\r\n          if (isUnique(tagCombinedSelector)) {\r\n            return tagCombinedSelector;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    // Strategy 5: Advanced parent-based selectors\r\n    const parent = element.parentElement;\r\n    if (parent) {\r\n      // Try with parent ID context\r\n      if (parent.id && parent.id.trim()) {\r\n        // Basic parent ID selector\r\n        const parentIdSelector = `#${safeEscape(parent.id)} ${element.tagName.toLowerCase()}`;\r\n        if (isUnique(parentIdSelector)) {\r\n          return parentIdSelector;\r\n        }\r\n\r\n        // Parent ID with position\r\n        const position = getElementPosition(element);\r\n        const parentIdPosSelector = `#${safeEscape(parent.id)} ${element.tagName.toLowerCase()}:nth-of-type(${position})`;\r\n        if (isUnique(parentIdPosSelector)) {\r\n          return parentIdPosSelector;\r\n        }\r\n\r\n        // Parent ID with absolute position\r\n        const absPosition = getAbsolutePosition(element);\r\n        const parentIdAbsPosSelector = `#${safeEscape(parent.id)} > :nth-child(${absPosition})`;\r\n        if (isUnique(parentIdAbsPosSelector)) {\r\n          return parentIdAbsPosSelector;\r\n        }\r\n      }\r\n\r\n      // Try with parent classes\r\n      if (parent.className) {\r\n        const parentClasses = parent.className.split(' ').filter(c => c.trim() && !isUtilityClass(c));\r\n        \r\n        for (const cls of parentClasses.slice(0, 2)) {\r\n          // Basic parent class selector\r\n          const parentClassSelector = `.${safeEscape(cls)} ${element.tagName.toLowerCase()}`;\r\n          if (isUnique(parentClassSelector)) {\r\n            return parentClassSelector;\r\n          }\r\n\r\n          // Parent class with position\r\n          const position = getElementPosition(element);\r\n          const parentClassPosSelector = `.${safeEscape(cls)} ${element.tagName.toLowerCase()}:nth-of-type(${position})`;\r\n          if (isUnique(parentClassPosSelector)) {\r\n            return parentClassPosSelector;\r\n          }\r\n\r\n          // Parent class with absolute position\r\n          const absPosition = getAbsolutePosition(element);\r\n          const parentClassAbsPosSelector = `.${safeEscape(cls)} > :nth-child(${absPosition})`;\r\n          if (isUnique(parentClassAbsPosSelector)) {\r\n            return parentClassAbsPosSelector;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    // Strategy 6: Text content with context (for buttons, links, etc.)\r\n    const textContent = element.textContent?.trim();\r\n    if (textContent && textContent.length > 0 && textContent.length < 200) {\r\n      // Create text-based selectors with parent context\r\n      if (parent) {\r\n        // Try with parent ID context\r\n        if (parent.id && parent.id.trim()) {\r\n          const parentIdSelector = `#${safeEscape(parent.id)} ${element.tagName.toLowerCase()}`;\r\n          const matchingElements = document.querySelectorAll(parentIdSelector);\r\n          const textMatches = Array.from(matchingElements).filter(el => \r\n            el.textContent?.trim() === textContent\r\n          );\r\n          \r\n          if (textMatches.length === 1 && textMatches[0] === element) {\r\n            return parentIdSelector;\r\n          }\r\n        }\r\n\r\n        // Try with parent classes\r\n        if (parent.className) {\r\n          const parentClasses = parent.className.split(' ')\r\n            .filter(c => c.trim() && !isUtilityClass(c));\r\n          \r\n          for (const cls of parentClasses.slice(0, 2)) {\r\n            const parentClassSelector = `.${safeEscape(cls)} ${element.tagName.toLowerCase()}`;\r\n            const matchingElements = document.querySelectorAll(parentClassSelector);\r\n            const textMatches = Array.from(matchingElements).filter(el => \r\n              el.textContent?.trim() === textContent\r\n            );\r\n            \r\n            if (textMatches.length === 1 && textMatches[0] === element) {\r\n              return parentClassSelector;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    // Strategy 7: Sibling-based selectors\r\n    if (parent) {\r\n      const siblings = Array.from(parent.children);\r\n      const elementIndex = siblings.indexOf(element);\r\n      \r\n      // Try adjacent sibling selector\r\n      if (elementIndex > 0) {\r\n        const prevSibling = siblings[elementIndex - 1];\r\n        if (prevSibling.id) {\r\n          const siblingSelector = `#${safeEscape(prevSibling.id)} + ${element.tagName.toLowerCase()}`;\r\n          if (isUnique(siblingSelector)) {\r\n            return siblingSelector;\r\n          }\r\n        }\r\n        \r\n        // Try with previous sibling class\r\n        if (prevSibling.className) {\r\n          const siblingClasses = prevSibling.className.split(' ').filter(c => c.trim() && !isUtilityClass(c));\r\n          if (siblingClasses.length > 0) {\r\n            const siblingSelector = `.${safeEscape(siblingClasses[0])} + ${element.tagName.toLowerCase()}`;\r\n            if (isUnique(siblingSelector)) {\r\n              return siblingSelector;\r\n            }\r\n          }\r\n        }\r\n      }\r\n      \r\n      // Try general sibling selector with meaningful previous siblings\r\n      for (let i = elementIndex - 1; i >= 0; i--) {\r\n        const sibling = siblings[i];\r\n        if (sibling.id) {\r\n          const position = getElementPosition(element);\r\n          const siblingSelector = `#${safeEscape(sibling.id)} ~ ${element.tagName.toLowerCase()}:nth-of-type(${position})`;\r\n          if (isUnique(siblingSelector)) {\r\n            return siblingSelector;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    // Strategy 8: Try utility classes if no meaningful classes exist\r\n    if (element.className) {\r\n      const classes = element.className.split(' ').filter(c => c.trim());\r\n      const meaningfulClasses = classes.filter(cls => !isUtilityClass(cls));\r\n      \r\n      if (meaningfulClasses.length === 0 && classes.length > 0) {\r\n        // Use the most specific utility classes\r\n        const specificClasses = classes.filter(cls =>\r\n          !['flex', 'block', 'inline', 'hidden', 'relative', 'absolute'].includes(cls)\r\n        ).slice(0, 3);\r\n\r\n        for (const cls of specificClasses) {\r\n          const classSelector = `.${safeEscape(cls)}`;\r\n          if (isUnique(classSelector)) {\r\n            return classSelector;\r\n          }\r\n\r\n          const tagClassSelector = `${element.tagName.toLowerCase()}.${safeEscape(cls)}`;\r\n          if (isUnique(tagClassSelector)) {\r\n            return tagClassSelector;\r\n          }\r\n        }\r\n\r\n        // Try combination of utility classes\r\n        if (specificClasses.length > 1) {\r\n          const twoClassSelector = `.${safeEscape(specificClasses[0])}.${safeEscape(specificClasses[1])}`;\r\n          if (isUnique(twoClassSelector)) {\r\n            return twoClassSelector;\r\n          }\r\n          \r\n          const tagTwoClassSelector = `${element.tagName.toLowerCase()}.${safeEscape(specificClasses[0])}.${safeEscape(specificClasses[1])}`;\r\n          if (isUnique(tagTwoClassSelector)) {\r\n            return tagTwoClassSelector;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    // Strategy 9: Advanced combination attributes\r\n    const combinedAttrs: string[] = [];\r\n    ['class', 'type', 'role', 'name'].forEach(attrName => {\r\n      const attrValue = element.getAttribute(attrName);\r\n      if (attrValue && attrValue.trim()) {\r\n        if (attrName === 'class') {\r\n          // Use only the first meaningful or specific class\r\n          const classes = attrValue.split(' ').filter(c => c.trim());\r\n          const firstGoodClass = classes.find(c => !isUtilityClass(c)) || classes[0];\r\n          if (firstGoodClass) {\r\n            combinedAttrs.push(`[${attrName}*=\"${safeEscape(firstGoodClass)}\"]`);\r\n          }\r\n        } else {\r\n          combinedAttrs.push(`[${attrName}=\"${safeEscape(attrValue)}\"]`);\r\n        }\r\n      }\r\n    });\r\n    \r\n    if (combinedAttrs.length > 1) {\r\n      const combinedSelector = `${element.tagName.toLowerCase()}${combinedAttrs.slice(0, 2).join('')}`;\r\n      if (isUnique(combinedSelector)) {\r\n        return combinedSelector;\r\n      }\r\n    }\r\n\r\n    // Strategy 10: Generate guaranteed unique path-based selector\r\n    return generateGuaranteedUniqueSelector(element);\r\n  };\r\n\r\n  // Helper function to generate a guaranteed unique selector\r\n  const generateGuaranteedUniqueSelector = (element: HTMLElement): string => {\r\n    const path: string[] = [];\r\n    let current: Element | null = element;\r\n    let depth = 0;\r\n    const maxDepth = 8; // Increased depth for guaranteed uniqueness\r\n\r\n    // Helper function to safely escape CSS values\r\n    const safeEscape = (value: string): string => {\r\n      try {\r\n        return CSS.escape(value.trim());\r\n      } catch {\r\n        return value.replace(/[^\\w-]/g, '\\\\$&');\r\n      }\r\n    };\r\n\r\n    // Helper function to get absolute position\r\n    const getAbsolutePosition = (el: Element): number => {\r\n      const parent = el.parentElement;\r\n      if (!parent) return 1;\r\n      return Array.from(parent.children).indexOf(el) + 1;\r\n    };\r\n\r\n    while (current && current !== document.documentElement && depth < maxDepth) {\r\n      let selector = current.tagName.toLowerCase();\r\n\r\n      // Always try ID first\r\n      if (current.id && current.id.trim()) {\r\n        selector += `#${safeEscape(current.id)}`;\r\n        path.unshift(selector);\r\n        break; // ID should be unique\r\n      }\r\n\r\n      // Add the most specific available identifier\r\n      let hasIdentifier = false;\r\n\r\n      // Try data attributes first\r\n      const dataAttrs = Array.from(current.attributes).filter(attr =>\r\n        attr.name.startsWith('data-') && attr.value && attr.value.trim()\r\n      );\r\n      if (dataAttrs.length > 0) {\r\n        const attr = dataAttrs[0];\r\n        selector += `[${attr.name}=\"${safeEscape(attr.value)}\"]`;\r\n        hasIdentifier = true;\r\n      }\r\n\r\n      // Try other specific attributes if no data attributes\r\n      if (!hasIdentifier) {\r\n        const attrs = ['name', 'type', 'role', 'class'];\r\n        for (const attrName of attrs) {\r\n          const attrValue = current.getAttribute(attrName);\r\n          if (attrValue && attrValue.trim()) {\r\n            if (attrName === 'class') {\r\n              // Use only first meaningful class, or first class if none are meaningful\r\n              const classes = attrValue.split(' ').filter(c => c.trim());\r\n              if (classes.length > 0) {\r\n                const firstClass = classes.find(c => !c.match(/^(flex|block|inline|hidden|relative|absolute)$/)) || classes[0];\r\n                selector += `.${safeEscape(firstClass)}`;\r\n                hasIdentifier = true;\r\n                break;\r\n              }\r\n            } else {\r\n              selector += `[${attrName}=\"${safeEscape(attrValue)}\"]`;\r\n              hasIdentifier = true;\r\n              break;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      // Always add position to ensure uniqueness\r\n      const position = getAbsolutePosition(current);\r\n      selector += `:nth-child(${position})`;\r\n\r\n      path.unshift(selector);\r\n      current = current.parentElement;\r\n      depth++;\r\n    }\r\n\r\n    return path.join(' > ');\r\n  };\r\n\r\n  // Helper function to generate a path-based selector\r\n  const generatePathSelector = (element: HTMLElement): string => {\r\n    const path: string[] = [];\r\n    let current: Element | null = element;\r\n    let depth = 0;\r\n    const maxDepth = 5; // Limit depth to avoid overly long selectors\r\n\r\n    // Helper function to check if class is utility class\r\n    const isUtilityClass = (cls: string): boolean => {\r\n      return (\r\n        /^(text-|bg-|border-|p-|m-|px-|py-|mx-|my-|w-|h-|top-|left-|right-|bottom-|z-|opacity-|transform|transition|duration-|ease-|scale-|rotate-|translate-|skew-)/.test(cls) ||\r\n        ['flex', 'block', 'inline', 'hidden', 'relative', 'absolute', 'fixed', 'sticky', 'grid', 'table'].includes(cls) ||\r\n        /^(space-|gap-|divide-|rounded-|shadow-|border-|cursor-|select-|pointer-events-)/.test(cls)\r\n      );\r\n    };\r\n\r\n    while (current && current !== document.body && depth < maxDepth) {\r\n      let selector = current.tagName.toLowerCase();\r\n\r\n      // Add ID if available (most specific)\r\n      if (current.id) {\r\n        selector += `#${CSS.escape(current.id)}`;\r\n        path.unshift(selector);\r\n        break; // ID is unique, we can stop here\r\n      }\r\n\r\n      // Add meaningful classes if available\r\n      if (current.className) {\r\n        const classes = current.className.split(' ').filter(c => c.trim());\r\n        const meaningfulClasses = classes.filter(cls => !isUtilityClass(cls));\r\n\r\n        if (meaningfulClasses.length > 0) {\r\n          // Use the first meaningful class\r\n          selector += `.${CSS.escape(meaningfulClasses[0])}`;\r\n        } else if (classes.length > 0) {\r\n          // If no meaningful classes, use a non-layout utility class\r\n          const nonLayoutClasses = classes.filter(cls =>\r\n            !['flex', 'block', 'inline', 'hidden', 'relative', 'absolute', 'fixed', 'sticky'].includes(cls)\r\n          );\r\n          if (nonLayoutClasses.length > 0) {\r\n            selector += `.${CSS.escape(nonLayoutClasses[0])}`;\r\n          }\r\n        }\r\n      }\r\n\r\n      // Add data attributes for better specificity\r\n      const dataAttrs = Array.from(current.attributes).filter(attr =>\r\n        attr.name.startsWith('data-') && attr.value && attr.value.length < 50\r\n      );\r\n      if (dataAttrs.length > 0) {\r\n        const attr = dataAttrs[0];\r\n        selector += `[${attr.name}=\"${CSS.escape(attr.value)}\"]`;\r\n      }\r\n\r\n      // Add nth-child if needed for uniqueness\r\n      const parent = current.parentElement;\r\n      if (parent) {\r\n        const siblings = Array.from(parent.children).filter(\r\n          sibling => sibling.tagName === current!.tagName\r\n        );\r\n\r\n        if (siblings.length > 1) {\r\n          const index = siblings.indexOf(current) + 1;\r\n          selector += `:nth-child(${index})`;\r\n        }\r\n      }\r\n\r\n      path.unshift(selector);\r\n      current = current.parentElement;\r\n      depth++;\r\n    }\r\n\r\n    // If we hit max depth, add a more specific selector for the target element\r\n    if (depth >= maxDepth && element.parentElement) {\r\n      const finalSelector = path[path.length - 1];\r\n      const parent = element.parentElement;\r\n      const siblings = Array.from(parent.children).filter(\r\n        sibling => sibling.tagName === element.tagName\r\n      );\r\n\r\n      if (siblings.length > 1) {\r\n        const index = siblings.indexOf(element) + 1;\r\n        path[path.length - 1] = `${finalSelector}:nth-child(${index})`;\r\n      }\r\n    }\r\n\r\n    return path.join(' > ');\r\n  };\r\n\r\n  // Function to validate a selector\r\n  const validateSelector = useCallback((selector: string, stepId: string) => {\r\n    if (!selector || selector.trim() === '') {\r\n      setSelectorValidation(prev => ({\r\n        ...prev,\r\n        [stepId]: { isValid: false, elementCount: 0, error: 'Empty selector' }\r\n      }));\r\n      return;\r\n    }\r\n\r\n    try {\r\n      const elements = document.querySelectorAll(selector);\r\n      setSelectorValidation(prev => ({\r\n        ...prev,\r\n        [stepId]: {\r\n          isValid: elements.length === 1,\r\n          elementCount: elements.length\r\n        }\r\n      }));\r\n    } catch (error) {\r\n      setSelectorValidation(prev => ({\r\n        ...prev,\r\n        [stepId]: {\r\n          isValid: false,\r\n          elementCount: 0,\r\n          error: 'Invalid selector syntax'\r\n        }\r\n      }));\r\n    }\r\n  }, []);\r\n\r\n  const handleUpdateTourStep = (index: number, field: string, value: string | boolean) => {\r\n    // console.log(`Updating tour step ${index}, field: ${field}, value:`, value);\r\n\r\n    setTourSteps(prev => {\r\n      const updated = prev.map((step, i) =>\r\n        i === index ? { ...step, [field]: value } : step\r\n      );\r\n      // console.log('Updated tour steps:', updated);\r\n      return updated;\r\n    });\r\n\r\n    // If updating the element selector, validate it\r\n    if (field === 'element' && typeof value === 'string') {\r\n      const step = tourSteps[index];\r\n      if (step) {\r\n        // Use setTimeout to ensure DOM is ready and avoid blocking the UI\r\n        setTimeout(() => validateSelector(value, step.id), 100);\r\n      }\r\n    }\r\n  };\r\n\r\n  const handleRemoveTourStep = (index: number) => {\r\n    setTourSteps(prev => prev.filter((_, i) => i !== index));\r\n    if (currentStepIndex >= tourSteps.length - 1) {\r\n      setCurrentStepIndex(Math.max(0, tourSteps.length - 2));\r\n    }\r\n  };\r\n\r\n  // Effect to validate all selectors when tour steps change\r\n  useEffect(() => {\r\n    if (tourSteps.length > 0) {\r\n      // Use a small delay to ensure DOM is ready\r\n      const timeoutId = setTimeout(() => {\r\n        tourSteps.forEach(step => {\r\n          validateSelector(step.element, step.id);\r\n        });\r\n      }, 200);\r\n\r\n      return () => clearTimeout(timeoutId);\r\n    }\r\n  }, [tourSteps, validateSelector]);\r\n\r\n  // Cleanup effect for component unmount and tour management\r\n  useEffect(() => {\r\n    return () => {\r\n      // Clean up event listener for driver next step\r\n      document.removeEventListener('driver-next-step', handleDriverNextStep);\r\n      \r\n      // Cleanup on component unmount\r\n      if ((window as any).currentDriverInstance) {\r\n        try {\r\n          // console.log('Destroying driver instance on component unmount');\r\n          (window as any).currentDriverInstance.destroy();\r\n          \r\n          // Force cleanup of any driver.js elements that might remain in the DOM\r\n          setTimeout(() => {\r\n            const driverElements = document.querySelectorAll('.driver-overlay, .driver-popover, .driver-highlighted-element');\r\n            driverElements.forEach(element => {\r\n              if (element.parentNode) {\r\n                element.parentNode.removeChild(element);\r\n              }\r\n            });\r\n          }, 100);\r\n        } catch (e) {\r\n          console.warn('Failed to destroy driver instance on unmount:', e);\r\n        }\r\n        (window as any).currentDriverInstance = null;\r\n      }\r\n\r\n      // Clear stored steps\r\n      (window as any).currentDriverSteps = null;\r\n      \r\n      // Reset preview state\r\n      setIsPreviewingTour(false);\r\n\r\n      // Remove event listeners using refs\r\n      if (elementSelectionHandlersRef.current.handleElementClick) {\r\n        document.removeEventListener('click', elementSelectionHandlersRef.current.handleElementClick, true);\r\n      }\r\n      if (elementSelectionHandlersRef.current.handleElementHover) {\r\n        document.removeEventListener('mouseover', elementSelectionHandlersRef.current.handleElementHover, true);\r\n      }\r\n      if (elementSelectionHandlersRef.current.handleElementHoverOut) {\r\n        document.removeEventListener('mouseout', elementSelectionHandlersRef.current.handleElementHoverOut, true);\r\n      }\r\n\r\n      // Reset cursor\r\n      document.body.style.cursor = 'default';\r\n    };\r\n  }, []);\r\n\r\n  // Handler for driver.js next step event\r\n  const handleDriverNextStep = (e: any) => {\r\n    try {\r\n      const highlightedElement = document.querySelector('.driver-highlighted-element');\r\n      if (highlightedElement && highlightedElement instanceof HTMLElement) {\r\n        // console.log('Simulating click on highlighted element:', highlightedElement);\r\n        highlightedElement.click();\r\n      }\r\n    } catch (error) {\r\n      console.error('Error simulating click on element:', error);\r\n    }\r\n  };\r\n  \r\n  const handlePreviewTour = async () => {\r\n    if (tourSteps.length === 0) {\r\n      alert('Please add at least one step to the tour');\r\n      return;\r\n    }\r\n\r\n    // Prevent multiple simultaneous previews\r\n    if (isPreviewingTour) {\r\n      return;\r\n    }\r\n    \r\n    // Clean up any existing event listeners first to prevent duplicates\r\n    document.removeEventListener('driver-next-step', handleDriverNextStep);\r\n    \r\n    // Add event listener for driver.js next button clicks\r\n    document.addEventListener('driver-next-step', handleDriverNextStep);\r\n\r\n    // Debug: Log current tour steps\r\n    // console.log('Current tour steps before preview:', tourSteps);\r\n\r\n    // Validate that all elements exist before starting preview\r\n    const invalidSteps = [];\r\n    const ambiguousSteps = [];\r\n\r\n    for (let i = 0; i < tourSteps.length; i++) {\r\n      const step = tourSteps[i];\r\n      try {\r\n        const elements = document.querySelectorAll(step.element);\r\n\r\n        if (elements.length === 0) {\r\n          invalidSteps.push(`Step ${i + 1}: Element \"${step.element}\" not found`);\r\n        } else if (elements.length > 1) {\r\n          ambiguousSteps.push(`Step ${i + 1}: Selector \"${step.element}\" matches ${elements.length} elements (should be unique)`);\r\n        }\r\n      } catch (error) {\r\n        invalidSteps.push(`Step ${i + 1}: Invalid selector \"${step.element}\"`);\r\n      }\r\n    }\r\n\r\n    if (invalidSteps.length > 0 || ambiguousSteps.length > 0) {\r\n      const issues = [...invalidSteps, ...ambiguousSteps];\r\n      alert(`Cannot preview tour. The following issues were found:\\n\\n${issues.join('\\n')}\\n\\nTip: Try selecting the elements again to generate better selectors.`);\r\n      return;\r\n    }\r\n\r\n    try {\r\n      setIsPreviewingTour(true);\r\n\r\n      // Make sure isPreviewingTour is set to false and cleanup event listeners\r\n      const ensureCleanup = () => {\r\n        // console.log('Tour cleanup called');\r\n        setIsPreviewingTour(false);\r\n        document.removeEventListener('driver-next-step', handleDriverNextStep);\r\n        (window as any).currentDriverInstance = null;\r\n        (window as any).currentDriverSteps = null;\r\n      };\r\n\r\n      // Destroy any existing driver instance first\r\n      if ((window as any).currentDriverInstance) {\r\n        try {\r\n          // console.log('Destroying existing driver instance');\r\n          (window as any).currentDriverInstance.destroy();\r\n          // Allow time for the DOM to clean up after destruction\r\n          await new Promise(resolve => setTimeout(resolve, 100));\r\n        } catch (e) {\r\n          console.warn('Failed to destroy existing driver instance:', e);\r\n        }\r\n        (window as any).currentDriverInstance = null;\r\n      }\r\n\r\n      // Load driver.js CSS if not already loaded\r\n      if (!document.querySelector('link[href*=\"driver.js\"]')) {\r\n        // console.log('Loading driver.js CSS...');\r\n        const link = document.createElement('link');\r\n        link.rel = 'stylesheet';\r\n        link.href = 'https://cdn.jsdelivr.net/npm/driver.js@1.3.6/dist/driver.css';\r\n        document.head.appendChild(link);\r\n\r\n        // Wait a bit for CSS to load\r\n        await new Promise(resolve => setTimeout(resolve, 100));\r\n        // console.log('Driver.js CSS loaded');\r\n      }\r\n\r\n      // Import driver.js dynamically with error handling\r\n      let driver;\r\n      try {\r\n        // console.log('Importing driver.js...');\r\n        const driverModule = await import('driver.js');\r\n        // console.log('Driver.js module loaded:', driverModule);\r\n\r\n        driver = driverModule.driver;\r\n        if (!driver) {\r\n          console.error('Driver function not found in module:', driverModule);\r\n          throw new Error('Driver function not found in module');\r\n        }\r\n\r\n        if (typeof driver !== 'function') {\r\n          console.error('Driver is not a function:', typeof driver, driver);\r\n          throw new Error('Driver is not a function');\r\n        }\r\n\r\n        // console.log('Driver.js imported successfully');\r\n      } catch (importError) {\r\n        console.error('Failed to import driver.js:', importError);\r\n        const errorMessage = importError instanceof Error ? importError.message : 'Unknown error';\r\n        throw new Error(`Failed to load tour library: ${errorMessage}. Please refresh the page and try again.`);\r\n      }\r\n\r\n      // Create driver steps with exact format from official driver.js documentation\r\n      const finalSteps = tourSteps.map((step, index) => {\r\n       \r\n\r\n        // Validate element exists\r\n        try {\r\n          const element = document.querySelector(step.element);\r\n          if (!element) {\r\n            throw new Error(`Step ${index + 1}: Element \"${step.element}\" not found in DOM`);\r\n          }\r\n        } catch (selectorError) {\r\n          const errorMessage = selectorError instanceof Error ? selectorError.message : 'Unknown error';\r\n          throw new Error(`Step ${index + 1}: Invalid selector \"${step.element}\" - ${errorMessage}`);\r\n        }\r\n\r\n        // Return step in exact format from official driver.js example\r\n        return {\r\n          element: step.element,\r\n          popover: {\r\n            title: step.title || `Step ${index + 1}`,\r\n            description: step.description || `Guide for step ${index + 1}`,\r\n            side: (step.position === 'auto' ? 'bottom' : (step.position || 'bottom')) as \"top\" | \"bottom\" | \"left\" | \"right\",\r\n            align: 'start' as const, // Add align property like in official example\r\n            onNextClick: () => {\r\n              // console.log(`Preview: Next clicked for step ${index}, autoClick:`, step.autoClick);\r\n              \r\n              // Only implement auto-click logic if autoClick is true\r\n              if (step.autoClick) {\r\n                // console.log(`Preview: Auto-clicking element: ${step.element}`);\r\n                \r\n                setTimeout(() => {\r\n                  try {\r\n                    const elements = document.querySelectorAll(step.element);\r\n                    // console.log(`Preview: Found ${elements.length} elements for selector: ${step.element}`);\r\n                    \r\n                    if (elements.length > 0) {\r\n                      const element = elements[0] as HTMLElement;\r\n                      \r\n                      // console.log(`Preview: Attempting to click element:`, element);\r\n                      \r\n                      // Try multiple click methods\r\n                      if (typeof element.click === 'function') {\r\n                        element.click();\r\n                      }\r\n                      \r\n                      // Dispatch mouse events\r\n                      const rect = element.getBoundingClientRect();\r\n                      const mouseEvents = ['mousedown', 'mouseup', 'click'];\r\n                      mouseEvents.forEach(eventType => {\r\n                        const event = new MouseEvent(eventType, {\r\n                          view: window,\r\n                          bubbles: true,\r\n                          cancelable: true,\r\n                          clientX: rect.left + rect.width / 2,\r\n                          clientY: rect.top + rect.height / 2\r\n                        });\r\n                        element.dispatchEvent(event);\r\n                      });\r\n                      \r\n                      // console.log(`Preview: Auto-clicked element successfully: ${step.element}`);\r\n                      \r\n                      // Get custom timeout or use default\r\n                      const timeout = step.autoClickTimeout ?? 500;\r\n                      \r\n                      // Automatically advance to next step after auto-click\r\n                      setTimeout(() => {\r\n                        const driverInstance = (window as any).currentDriverInstance;\r\n                        if (driverInstance) {\r\n                          // console.log(`Preview: Advancing to next step after auto-click`);\r\n                          try {\r\n                            // Check if there's a next step\r\n                            const totalSteps = tourSteps.length;\r\n                            const nextStepIndex = index + 1;\r\n                            \r\n                            if (nextStepIndex < totalSteps) {\r\n                              // Move to next step\r\n                              driverInstance.moveNext();\r\n                              // console.log(`Preview: Moved to next step (${nextStepIndex + 1}/${totalSteps})`);\r\n                            } else {\r\n                              // This was the last step, complete the tour\r\n                              // console.log(`Preview: Auto-click completed on final step, ending preview`);\r\n                              driverInstance.destroy();\r\n                            }\r\n                          } catch (error) {\r\n                            console.error('Preview: Error advancing to next step:', error);\r\n                          }\r\n                        }\r\n                      }, timeout); // Wait custom timeout after click before advancing\r\n                      \r\n                    } else {\r\n                      console.warn(`Preview: Auto-click failed: Element not found for selector: ${step.element}`);\r\n                    }\r\n                  } catch (error) {\r\n                    console.error('Preview: Auto-click error:', error);\r\n                  }\r\n                }, 200); // Delay for tour transition\r\n              } else {\r\n                  // Automatically advance to next step after auto-click\r\n                      setTimeout(() => {\r\n                        const driverInstance = (window as any).currentDriverInstance;\r\n                        if (driverInstance) {\r\n                          // console.log(`Preview: Advancing to next step after auto-click`);\r\n                          try {\r\n                            // Check if there's a next step\r\n                            const totalSteps = tourSteps.length;\r\n                            const nextStepIndex = index + 1;\r\n                            \r\n                            if (nextStepIndex < totalSteps) {\r\n                              // Move to next step\r\n                              driverInstance.moveNext();\r\n                              // console.log(`Preview: Moved to next step (${nextStepIndex + 1}/${totalSteps})`);\r\n                            } else {\r\n                              // This was the last step, complete the tour\r\n                              // console.log(`Preview: Auto-click completed on final step, ending preview`);\r\n                              driverInstance.destroy();\r\n                            }\r\n                          } catch (error) {\r\n                            console.error('Preview: Error advancing to next step:', error);\r\n                          }\r\n                        }\r\n                      }, 200); \r\n              }\r\n            }\r\n          }\r\n        };\r\n      });\r\n\r\n      // console.log('Final driver steps:', finalSteps);\r\n\r\n      // Create driver instance using official driver.js pattern\r\n      let driverInstance: any;\r\n      try {\r\n        // Create driver instance with steps included, following official example\r\n        driverInstance = driver({\r\n          showProgress: true, // Match official example\r\n          animate: true,\r\n          overlayOpacity: 0.75,\r\n          stagePadding: 10,\r\n          allowClose: true,\r\n          allowKeyboardControl: true,\r\n          smoothScroll: true,\r\n          steps: finalSteps,\r\n          onDestroyed: () => {\r\n            // console.log('Tour preview destroyed');\r\n            ensureCleanup();\r\n          },\r\n          onDestroyStarted: () => {\r\n            // console.log('Tour preview destruction started');\r\n            ensureCleanup();\r\n          },\r\n          onHighlighted: (element: any, step: any, options: any) => {\r\n            // console.log('Step highlighted:', step);\r\n            // console.log('Driver state:', options.state);\r\n            const currentIndex = options.state.activeIndex ?? 0;\r\n            const totalSteps = finalSteps.length;\r\n            // console.log('Step info - Current:', currentIndex + 1, 'of', totalSteps);\r\n            \r\n            // Debug: Check if steps are still available\r\n            const currentSteps = options.driver.getConfig().steps;\r\n            // console.log('Steps in driver config:', currentSteps?.length || 0);\r\n            \r\n            // Auto-fill input field if autoFillValue is set\r\n            const currentStep = tourSteps[currentIndex];\r\n            if (currentStep?.autoFillValue && element) {\r\n              console.log('Preview: Attempting auto-fill with value:', currentStep.autoFillValue);\r\n              console.log('Preview: Target element:', element);\r\n              \r\n              setTimeout(() => {\r\n                try {\r\n                  const targetElement = element as HTMLElement;\r\n                  let inputElement: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null = null;\r\n                  \r\n                  // First check if the element itself is an input\r\n                  if (targetElement.tagName === 'INPUT' || targetElement.tagName === 'TEXTAREA' || targetElement.tagName === 'SELECT') {\r\n                    inputElement = targetElement as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\r\n                    console.log('Preview: Element itself is an input');\r\n                  } else {\r\n                    // Try to find input within the element\r\n                    inputElement = targetElement.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\r\n                    console.log('Preview: Found input within element:', inputElement);\r\n                  }\r\n                  \r\n                  if (inputElement) {\r\n                    // Use React's native setter to bypass framework control\r\n                    const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\r\n                      window.HTMLInputElement.prototype,\r\n                      'value'\r\n                    )?.set;\r\n                    \r\n                    const nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(\r\n                      window.HTMLTextAreaElement.prototype,\r\n                      'value'\r\n                    )?.set;\r\n                    \r\n                    // Set value using native setter\r\n                    if (inputElement instanceof HTMLInputElement && nativeInputValueSetter) {\r\n                      nativeInputValueSetter.call(inputElement, currentStep.autoFillValue);\r\n                    } else if (inputElement instanceof HTMLTextAreaElement && nativeTextAreaValueSetter) {\r\n                      nativeTextAreaValueSetter.call(inputElement, currentStep.autoFillValue);\r\n                    } else {\r\n                      inputElement.value = currentStep.autoFillValue;\r\n                    }\r\n                    \r\n                    // Dispatch events to notify React/frameworks\r\n                    const inputEvent = new Event('input', { bubbles: true, cancelable: true });\r\n                    const changeEvent = new Event('change', { bubbles: true, cancelable: true });\r\n                    \r\n                    inputElement.dispatchEvent(inputEvent);\r\n                    inputElement.dispatchEvent(changeEvent);\r\n                    \r\n                    console.log(`Preview: Auto-filled value \"${currentStep.autoFillValue}\" into input field`);\r\n                    console.log('Preview: Current input value:', inputElement.value);\r\n                  } else {\r\n                    console.warn('Preview: No input element found for auto-fill');\r\n                  }\r\n                } catch (error) {\r\n                  console.error('Preview: Auto-fill error:', error);\r\n                }\r\n              }, 200);\r\n            }\r\n          }\r\n        });\r\n\r\n        // console.log('Driver instance created successfully with', finalSteps.length, 'steps');\r\n        // console.log('Available methods:', Object.getOwnPropertyNames(driverInstance).filter(name => typeof driverInstance[name] === 'function'));\r\n      } catch (driverError) {\r\n        console.error('Failed to create driver instance:', driverError);\r\n        const errorMessage = driverError instanceof Error ? driverError.message : 'Unknown error';\r\n        throw new Error(`Failed to initialize tour system: ${errorMessage}`);\r\n      }\r\n\r\n      // Store the driver instance globally for cleanup\r\n      (window as any).currentDriverInstance = driverInstance;\r\n      // Also store the final steps for recovery\r\n      (window as any).currentDriverSteps = finalSteps;\r\n\r\n      // Log the final driver steps for debugging\r\n      // console.log('Final driver steps for preview:', finalSteps);\r\n      // console.log('Driver instance created with steps successfully');\r\n\r\n      // Start the tour following official driver.js pattern\r\n      try {\r\n        // console.log('Starting tour with drive() method...');\r\n        driverInstance.drive(); // Simple call like in official example\r\n        // console.log('Tour started successfully');\r\n      } catch (driveError) {\r\n        console.error('Failed to start tour:', driveError);\r\n        const errorMessage = driveError instanceof Error ? driveError.message : 'Unknown error';\r\n        throw new Error(`Failed to start tour: ${errorMessage}`);\r\n      }\r\n\r\n    } catch (error) {\r\n      console.error('Failed to preview tour:', error);\r\n\r\n      // Show detailed error message\r\n      let errorMessage = 'Failed to start tour preview. ';\r\n      if (error instanceof Error) {\r\n        errorMessage += `Error: ${error.message}`;\r\n      } else {\r\n        errorMessage += 'Please try again.';\r\n      }\r\n\r\n      alert(errorMessage);\r\n      setIsPreviewingTour(false);\r\n      document.removeEventListener('driver-next-step', handleDriverNextStep);\r\n      (window as any).currentDriverInstance = null;\r\n      (window as any).currentDriverSteps = null;\r\n    }\r\n  };\r\n\r\n  const handleSaveTour = async () => {\r\n    if (tourSteps.length === 0) {\r\n      alert('Please add at least one step to the tour');\r\n      return;\r\n    }\r\n\r\n    if (!config.projectId) {\r\n      setLocalError('Project ID is required to save tours');\r\n      return;\r\n    }\r\n\r\n    try {\r\n      // Create device-specific title\r\n      const deviceSuffix = tourDeviceType === 'all' ? '' : ` (${tourDeviceType.charAt(0).toUpperCase() + tourDeviceType.slice(1)})`;\r\n      const tourTitle = `Tour for ${window.location.pathname}${deviceSuffix}`;\r\n      \r\n      // Create tour object in the format expected by the tour engine\r\n      const tourData = {\r\n        name: tourTitle,\r\n        description: `User-created tour for ${window.location.hostname} - ${tourDeviceType} devices`,\r\n        steps: tourSteps.map((step, index) => ({\r\n          ...step,\r\n          id: `step_${index + 1}`,\r\n        })),\r\n        triggers: [{\r\n          type: \"manual\" as const,\r\n          condition: window.location.pathname,\r\n          priority: 1,\r\n        }],\r\n        targeting: {\r\n          urlPatterns: [window.location.pathname],\r\n          deviceTypes: tourDeviceType === 'all' \r\n            ? [\"desktop\" as const, \"tablet\" as const, \"mobile\" as const]\r\n            : tourDeviceType === 'mobile' \r\n              ? [\"mobile\" as const]\r\n              : [\"desktop\" as const, \"tablet\" as const],\r\n        },\r\n        styling: {\r\n          theme: \"inherit\" as const,\r\n          primaryColor: config.primaryColor,\r\n        },\r\n      };\r\n\r\n      // Save tour using the API\r\n      saveTourMutation.mutate({\r\n        projectId: config.projectId,\r\n        path: window.location.pathname,\r\n        title: tourTitle,\r\n        tourData: tourData,\r\n        deviceType: tourDeviceType,\r\n        isActive: true,\r\n        apiBase: apiBase,\r\n      });\r\n\r\n    } catch (error) {\r\n      console.error('Failed to save tour:', error);\r\n      setLocalError('Failed to save tour. Please try again.');\r\n    }\r\n  };\r\n\r\n  const resetWidget = () => {\r\n    const currentEmailValue = _getDynamicEmail() || config.email || \"\";\r\n\r\n    // Remove driver next step event listener\r\n    document.removeEventListener('driver-next-step', handleDriverNextStep);\r\n\r\n    // Stop any running tour preview first\r\n    if ((window as any).currentDriverInstance) {\r\n      try {\r\n        // console.log('Destroying driver instance during resetWidget');\r\n        (window as any).currentDriverInstance.destroy();\r\n        \r\n        // Force cleanup of any driver.js elements that might remain in the DOM\r\n        const driverElements = document.querySelectorAll('.driver-overlay, .driver-popover, .driver-highlighted-element');\r\n        driverElements.forEach(element => {\r\n          if (element.parentNode) {\r\n            element.parentNode.removeChild(element);\r\n          }\r\n        });\r\n      } catch (e) {\r\n        console.warn('Failed to destroy driver instance on reset:', e);\r\n      }\r\n      (window as any).currentDriverInstance = null;\r\n    }\r\n\r\n    // Clear stored steps\r\n    (window as any).currentDriverSteps = null;\r\n\r\n    setShowSubmissionForm(false);\r\n    setSelectedFeedbackType(null);\r\n    setSubmitSuccess(false);\r\n    setLocalError(null);\r\n    feedbackMutation.reset(); // Reset mutation state\r\n    setFormData({\r\n      title: \"\",\r\n      description: \"\",\r\n      categoryId: \"cat_other\",\r\n      priority: \"medium\",\r\n      tags: [],\r\n      email: currentEmailValue,\r\n    });\r\n    // Clear image attachments\r\n    setAttachedImage(null);\r\n    setImageFileName(\"\");\r\n    setOriginalImage(null);\r\n    setShowImageEditor(false);\r\n    if (fileInputRef.current) {\r\n      fileInputRef.current.value = \"\";\r\n    }\r\n\r\n    // Clear tour creation state\r\n    setShowTourCreator(false);\r\n    setTourSteps([]);\r\n    setTourDeviceType('all');\r\n\r\n    // Clear verification state\r\n    setShowVerificationDialog(false);\r\n    setVerificationCode(\"\");\r\n    setVerificationStatus({\r\n      requesting: false,\r\n      validating: false,\r\n      verified: false,\r\n      error: null,\r\n      maskedEmail: null,\r\n    });\r\n\r\n    // Clear tour creation state - ensure this happens even if previous reset steps fail\r\n    setCurrentStepIndex(0);\r\n    setIsSelectingElement(false);\r\n    setIsPreviewingTour(false);\r\n    setSelectorValidation({});\r\n    document.body.style.cursor = 'default';\r\n\r\n    // Remove any element selection event listeners using refs\r\n    if (elementSelectionHandlersRef.current.handleElementClick) {\r\n      document.removeEventListener('click', elementSelectionHandlersRef.current.handleElementClick, true);\r\n    }\r\n    if (elementSelectionHandlersRef.current.handleElementHover) {\r\n      document.removeEventListener('mouseover', elementSelectionHandlersRef.current.handleElementHover, true);\r\n    }\r\n    if (elementSelectionHandlersRef.current.handleElementHoverOut) {\r\n      document.removeEventListener('mouseout', elementSelectionHandlersRef.current.handleElementHoverOut, true);\r\n    }\r\n\r\n    // Clear the refs\r\n    elementSelectionHandlersRef.current = {\r\n      handleElementClick: null,\r\n      handleElementHover: null,\r\n      handleElementHoverOut: null,\r\n      currentHighlight: null,\r\n    };\r\n  };\r\n\r\n  // Don't render widget if current path matches hideInPaths\r\n  if (isHiddenByPath) {\r\n    return null;\r\n  }\r\n\r\n  // if (loading) {\r\n  //   return (\r\n  //     <div style={getPositionStyles()}>\r\n  //       <div style={{\r\n  //         padding: '12px 20px',\r\n  //         borderRadius: '8px',\r\n  //         background: config.primaryColor,\r\n  //         display: 'flex',\r\n  //         alignItems: 'center',\r\n  //         justifyContent: 'center',\r\n  //         gap: '8px',\r\n  //         color: 'white',\r\n  //         fontSize: '14px',\r\n  //         fontWeight: '500',\r\n  //         fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif',\r\n  //         animation: 'fadeIn 0.3s ease-out'\r\n  //       }}>\r\n  //         <span style={{\r\n  //           fontSize: '16px',\r\n  //           animation: 'spin 1s linear infinite'\r\n  //         }}><RotateCw size={16} /></span>\r\n  //         Loading...\r\n  //       </div>\r\n  //     </div>\r\n  //   );\r\n  // }\r\n\r\n  if (error || (!project && !apiConfig)) {\r\n    return null;\r\n  }\r\n\r\n  const themeStyles = {\r\n    background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n    color: isDark ? \"#f9fafb\" : \"#111827\",\r\n    border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n  };\r\n\r\n  return (\r\n    <div style={getPositionStyles()} data-leadforward-widget=\"true\">\r\n      {/* Tour Controller - manages tour lifecycle */}\r\n      <TourController\r\n        tourConfig={config.tourConfig || { enableTours: false }}\r\n        widgetConfig={config}\r\n        projectId={config.projectId}\r\n        apiBase={apiBase}\r\n        onError={(error) => {\r\n          console.warn('Tour system error:', error);\r\n          // Optionally set local error state if you want to show tour errors to users\r\n        }}\r\n      />\r\n\r\n      {!isOpen ? (\r\n        <div\r\n          style={{\r\n            display: \"flex\",\r\n            gap: \"8px\",\r\n            alignItems: \"center\",\r\n            flexDirection: config.position.includes(\"left\") ? \"row\" : \"row-reverse\",\r\n          }}\r\n        >\r\n          <button\r\n            onClick={() => setIsOpen(true)}\r\n            style={{\r\n              padding: \"12px 20px\",\r\n              borderRadius: \"8px\",\r\n              background: config.primaryColor,\r\n              color: \"white\",\r\n              border: \"none\",\r\n              cursor: \"pointer\",\r\n              display: \"flex\",\r\n              alignItems: \"center\",\r\n              justifyContent: \"center\",\r\n              gap: \"8px\",\r\n              boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.15)\",\r\n              transition: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n              fontSize: \"14px\",\r\n              fontWeight: \"500\",\r\n              fontFamily:\r\n                '-apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif',\r\n              whiteSpace: \"nowrap\",\r\n              animation: \"fadeIn 0.5s ease-out\",\r\n            }}\r\n            onMouseOver={(e) => {\r\n              e.currentTarget.style.transform = \"translateY(-3px) scale(1.02)\";\r\n              e.currentTarget.style.boxShadow = \"0 8px 25px rgba(0, 0, 0, 0.25)\";\r\n            }}\r\n            onMouseOut={(e) => {\r\n              e.currentTarget.style.transform = \"translateY(0) scale(1)\";\r\n              e.currentTarget.style.boxShadow = \"0 4px 12px rgba(0, 0, 0, 0.15)\";\r\n            }}\r\n            onMouseDown={(e) => {\r\n              e.currentTarget.style.transform = \"translateY(-1px) scale(0.98)\";\r\n            }}\r\n            onMouseUp={(e) => {\r\n              e.currentTarget.style.transform = \"translateY(-3px) scale(1.02)\";\r\n            }}\r\n          >\r\n            <span\r\n              style={{\r\n                fontSize: \"16px\",\r\n                transition: \"transform 0.2s ease\",\r\n              }}\r\n            >\r\n              <MessageCircle size={16} />\r\n            </span>\r\n            {(config.customLabels as any)?.widgetButtonText || \"Feedback\"}\r\n          </button>\r\n\r\n          {/* Floating Help Button - only show when help is enabled and available */}\r\n          {config.enableHelp && getValidVideoHelpUrl() && (\r\n            <button\r\n              onClick={handleHelp}\r\n              title={(config.customLabels as any)?.helpTooltip || \"Get help for this page\"}\r\n              aria-label=\"Get contextual help for this page\"\r\n              style={{\r\n                width: \"44px\",\r\n                height: \"44px\",\r\n                borderRadius: \"50%\",\r\n                background: \"linear-gradient(135deg, #10b981, #059669)\",\r\n                color: \"white\",\r\n                border: \"none\",\r\n                cursor: \"pointer\",\r\n                display: \"flex\",\r\n                alignItems: \"center\",\r\n                justifyContent: \"center\",\r\n                boxShadow: \"0 4px 20px rgba(16, 185, 129, 0.4), 0 2px 8px rgba(0, 0, 0, 0.1)\",\r\n                transition: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n                fontSize: \"16px\",\r\n                fontFamily:\r\n                  '-apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif',\r\n                animation: \"fadeIn 0.5s ease-out 0.2s both\",\r\n                position: \"relative\",\r\n                outline: \"none\",\r\n              }}\r\n              onMouseOver={(e) => {\r\n                e.currentTarget.style.transform = \"translateY(-3px) scale(1.1)\";\r\n                e.currentTarget.style.boxShadow = \"0 8px 30px rgba(16, 185, 129, 0.5), 0 4px 12px rgba(0, 0, 0, 0.15)\";\r\n                e.currentTarget.style.background = \"linear-gradient(135deg, #059669, #047857)\";\r\n              }}\r\n              onMouseOut={(e) => {\r\n                e.currentTarget.style.transform = \"translateY(0) scale(1)\";\r\n                e.currentTarget.style.boxShadow = \"0 4px 20px rgba(16, 185, 129, 0.4), 0 2px 8px rgba(0, 0, 0, 0.1)\";\r\n                e.currentTarget.style.background = \"linear-gradient(135deg, #10b981, #059669)\";\r\n              }}\r\n              onMouseDown={(e) => {\r\n                e.currentTarget.style.transform = \"translateY(-1px) scale(1.05)\";\r\n              }}\r\n              onMouseUp={(e) => {\r\n                e.currentTarget.style.transform = \"translateY(-3px) scale(1.1)\";\r\n              }}\r\n              onFocus={(e) => {\r\n                e.currentTarget.style.boxShadow = \"0 4px 20px rgba(16, 185, 129, 0.4), 0 2px 8px rgba(0, 0, 0, 0.1), 0 0 0 3px rgba(16, 185, 129, 0.3)\";\r\n              }}\r\n              onBlur={(e) => {\r\n                e.currentTarget.style.boxShadow = \"0 4px 20px rgba(16, 185, 129, 0.4), 0 2px 8px rgba(0, 0, 0, 0.1)\";\r\n              }}\r\n            >\r\n              <HelpCircle size={18} />\r\n              {/* Help availability indicator with improved animation */}\r\n              <div\r\n                style={{\r\n                  position: \"absolute\",\r\n                  top: \"-2px\",\r\n                  right: \"-2px\",\r\n                  width: \"12px\",\r\n                  height: \"12px\",\r\n                  background: \"linear-gradient(135deg, #f59e0b, #d97706)\",\r\n                  borderRadius: \"50%\",\r\n                  border: \"2px solid white\",\r\n                  animation: \"pulse 2s infinite\",\r\n                  boxShadow: \"0 2px 4px rgba(0, 0, 0, 0.2)\",\r\n                }}\r\n              />\r\n            </button>\r\n          )}\r\n        </div>\r\n      ) : (\r\n        <div\r\n          style={{\r\n            width: \"320px\",\r\n            maxHeight: \"600px\",\r\n            ...themeStyles,\r\n            borderRadius: \"12px\",\r\n            boxShadow: \"0 10px 25px rgba(0, 0, 0, 0.15)\",\r\n            overflow: \"hidden\",\r\n            fontFamily:\r\n              '-apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif',\r\n            animation: \"slideUp 0.4s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n            transformOrigin: config.position.includes(\"bottom\")\r\n              ? \"bottom\"\r\n              : \"top\",\r\n          }}\r\n        >\r\n          {/* Header */}\r\n          <div\r\n            style={{\r\n              padding: \"16px\",\r\n              borderBottom: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n              display: \"flex\",\r\n              alignItems: \"center\",\r\n              justifyContent: \"space-between\",\r\n            }}\r\n          >\r\n            <div style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}>\r\n              {project?.logo || apiConfig?.logo ? (\r\n                <img\r\n                  src={project?.logo || apiConfig?.logo}\r\n                  alt={project?.name || apiConfig?.name || \"Widget\"}\r\n                  style={{ width: \"32px\", height: \"32px\", borderRadius: \"50%\" }}\r\n                />\r\n              ) : (\r\n                <div\r\n                  style={{\r\n                    width: \"32px\",\r\n                    height: \"32px\",\r\n                    borderRadius: \"50%\",\r\n                    background: isDark ? \"#111827\" : \"#f9fafb\",\r\n                    display: \"flex\",\r\n                    alignItems: \"center\",\r\n                    justifyContent: \"center\",\r\n                    fontWeight: \"bold\",\r\n                    fontSize: \"14px\",\r\n                  }}\r\n                >\r\n                  {(project?.name || apiConfig?.name || \"W\").charAt(0)}\r\n                </div>\r\n              )}\r\n              <div>\r\n                <div style={{ fontSize: \"14px\", fontWeight: \"600\", margin: 0 }}>\r\n                  {project?.name || apiConfig?.name || \"Feedback Widget\"}\r\n                </div>\r\n                <div\r\n                  style={{\r\n                    fontSize: \"12px\",\r\n                    color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                    margin: 0,\r\n                  }}\r\n                >\r\n                  {(config.customLabels as any)?.shareYourFeedback ||\r\n                    \"Share your feedback\"}\r\n                </div>\r\n              </div>\r\n            </div>\r\n\r\n            {/* Header buttons - Help and Close */}\r\n            <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\r\n              {/* Help button in header - more prominent */}\r\n              {config.enableHelp && getValidVideoHelpUrl() && (\r\n                <button\r\n                  onClick={handleHelp}\r\n                  title={(config.customLabels as any)?.helpTooltip || \"Get help for this page\"}\r\n                  aria-label=\"Get contextual help for this page\"\r\n                  style={{\r\n                    background: \"linear-gradient(135deg, #10b981, #059669)\",\r\n                    border: \"none\",\r\n                    width: \"36px\",\r\n                    height: \"36px\",\r\n                    borderRadius: \"8px\",\r\n                    cursor: \"pointer\",\r\n                    display: \"flex\",\r\n                    alignItems: \"center\",\r\n                    justifyContent: \"center\",\r\n                    color: \"white\",\r\n                    transition: \"all 0.2s ease\",\r\n                    transform: \"scale(1)\",\r\n                    position: \"relative\",\r\n                    fontSize: \"16px\",\r\n                    boxShadow: \"0 2px 8px rgba(16, 185, 129, 0.3)\",\r\n                    outline: \"none\",\r\n                  }}\r\n                  onMouseOver={(e) => {\r\n                    e.currentTarget.style.background = \"linear-gradient(135deg, #059669, #047857)\";\r\n                    e.currentTarget.style.transform = \"scale(1.05)\";\r\n                    e.currentTarget.style.boxShadow = \"0 4px 12px rgba(16, 185, 129, 0.4)\";\r\n                  }}\r\n                  onMouseOut={(e) => {\r\n                    e.currentTarget.style.background = \"linear-gradient(135deg, #10b981, #059669)\";\r\n                    e.currentTarget.style.transform = \"scale(1)\";\r\n                    e.currentTarget.style.boxShadow = \"0 2px 8px rgba(16, 185, 129, 0.3)\";\r\n                  }}\r\n                  onFocus={(e) => {\r\n                    e.currentTarget.style.boxShadow = \"0 2px 8px rgba(16, 185, 129, 0.3), 0 0 0 2px rgba(16, 185, 129, 0.3)\";\r\n                  }}\r\n                  onBlur={(e) => {\r\n                    e.currentTarget.style.boxShadow = \"0 2px 8px rgba(16, 185, 129, 0.3)\";\r\n                  }}\r\n                >\r\n                  <HelpCircle size={18} />\r\n                  {/* Help availability indicator badge with enhanced design */}\r\n                  <div\r\n                    style={{\r\n                      position: \"absolute\",\r\n                      top: \"-3px\",\r\n                      right: \"-3px\",\r\n                      width: \"10px\",\r\n                      height: \"10px\",\r\n                      background: \"linear-gradient(135deg, #f59e0b, #d97706)\",\r\n                      borderRadius: \"50%\",\r\n                      border: \"2px solid white\",\r\n                      animation: \"pulse 2s infinite\",\r\n                      boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.2)\",\r\n                    }}\r\n                  />\r\n                </button>\r\n              )}\r\n\r\n              {/* Close button */}\r\n              <button\r\n                onClick={() => {\r\n                  setIsOpen(false);\r\n                  resetWidget();\r\n                }}\r\n                style={{\r\n                  background: \"none\",\r\n                  border: \"none\",\r\n                  width: \"32px\",\r\n                  height: \"32px\",\r\n                  borderRadius: \"6px\",\r\n                  cursor: \"pointer\",\r\n                  display: \"flex\",\r\n                  alignItems: \"center\",\r\n                  justifyContent: \"center\",\r\n                  color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                  transition: \"all 0.2s ease\",\r\n                  transform: \"rotate(0deg)\",\r\n                }}\r\n                onMouseOver={(e) => {\r\n                  e.currentTarget.style.background = isDark\r\n                    ? \"#374151\"\r\n                    : \"#f3f4f6\";\r\n                  e.currentTarget.style.transform = \"rotate(90deg)\";\r\n                }}\r\n                onMouseOut={(e) => {\r\n                  e.currentTarget.style.background = \"none\";\r\n                  e.currentTarget.style.transform = \"rotate(0deg)\";\r\n                }}\r\n              >\r\n                <X size={16} />\r\n              </button>\r\n            </div>\r\n          </div>\r\n\r\n          {/* Body */}\r\n          <div\r\n            style={{ padding: \"16px\", maxHeight: \"500px\", overflowY: \"auto\" }}\r\n          >\r\n            {submitSuccess ? (\r\n              <div\r\n                style={{\r\n                  textAlign: \"center\",\r\n                  padding: \"32px 16px\",\r\n                  animation: \"fadeIn 0.5s ease-out\",\r\n                }}\r\n              >\r\n                <div\r\n                  style={{\r\n                    width: \"48px\",\r\n                    height: \"48px\",\r\n                    margin: \"0 auto 16px\",\r\n                    background: \"#10b981\",\r\n                    borderRadius: \"50%\",\r\n                    display: \"flex\",\r\n                    alignItems: \"center\",\r\n                    justifyContent: \"center\",\r\n                    color: \"white\",\r\n                    fontSize: \"24px\",\r\n                    animation: \"bounce 0.6s ease-out\",\r\n                  }}\r\n                >\r\n                  <Check size={24} />\r\n                </div>\r\n                <h3\r\n                  style={{\r\n                    fontSize: \"16px\",\r\n                    fontWeight: \"600\",\r\n                    marginBottom: \"8px\",\r\n                    animation: \"fadeIn 0.5s ease-out 0.2s both\",\r\n                  }}\r\n                >\r\n                  Thank you!\r\n                </h3>\r\n                <p\r\n                  style={{\r\n                    fontSize: \"14px\",\r\n                    color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                    animation: \"fadeIn 0.5s ease-out 0.4s both\",\r\n                  }}\r\n                >\r\n                  Your feedback has been submitted successfully.\r\n                </p>\r\n              </div>\r\n            ) : showTourCreator ? (\r\n              <div style={{ animation: \"fadeIn 0.3s ease-out\" }}>\r\n                <button\r\n                  onClick={() => {\r\n                    try {\r\n                      // Stop any running tour preview first\r\n                    if ((window as any).currentDriverInstance) {\r\n                      try {\r\n                        (window as any).currentDriverInstance.destroy();\r\n                      } catch (e) {\r\n                        console.warn('Failed to destroy driver instance:', e);\r\n                      }\r\n                      (window as any).currentDriverInstance = null;\r\n                    }\r\n\r\n                    // Clear stored steps\r\n                    (window as any).currentDriverSteps = null;\r\n\r\n                    setShowTourCreator(false);\r\n                    setSelectedFeedbackType(null);\r\n                    setTourSteps([]);\r\n                    setCurrentStepIndex(0);\r\n                    setIsSelectingElement(false);\r\n                    setIsPreviewingTour(false);\r\n                    setSelectorValidation({});\r\n                    document.body.style.cursor = 'default';\r\n\r\n                    // Remove event listeners using refs\r\n                    if (elementSelectionHandlersRef.current.handleElementClick) {\r\n                      document.removeEventListener('click', elementSelectionHandlersRef.current.handleElementClick, true);\r\n                    }\r\n                    if (elementSelectionHandlersRef.current.handleElementHover) {\r\n                      document.removeEventListener('mouseover', elementSelectionHandlersRef.current.handleElementHover, true);\r\n                    }\r\n                    if (elementSelectionHandlersRef.current.handleElementHoverOut) {\r\n                      document.removeEventListener('mouseout', elementSelectionHandlersRef.current.handleElementHoverOut, true);\r\n                    }\r\n                    } catch (error) {\r\n                      \r\n                    }\r\n                    \r\n                  }}\r\n                  style={{\r\n                    background: \"none\",\r\n                    border: \"none\",\r\n                    color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                    fontSize: \"12px\",\r\n                    cursor: \"pointer\",\r\n                    padding: \"8px 0\",\r\n                    marginBottom: \"16px\",\r\n                    transition: \"all 0.2s ease\",\r\n                    transform: \"translateX(0)\",\r\n                  }}\r\n                  onMouseOver={(e) => {\r\n                    e.currentTarget.style.color = config.primaryColor;\r\n                    e.currentTarget.style.transform = \"translateX(-2px)\";\r\n                  }}\r\n                  onMouseOut={(e) => {\r\n                    e.currentTarget.style.color = isDark\r\n                      ? \"#9ca3af\"\r\n                      : \"#6b7280\";\r\n                    e.currentTarget.style.transform = \"translateX(0)\";\r\n                  }}\r\n                >\r\n                  ← Back to options\r\n                </button>\r\n\r\n                <div style={{ marginBottom: \"20px\" }}>\r\n                  <h3 style={{\r\n                    margin: \"0 0 8px 0\",\r\n                    fontSize: \"16px\",\r\n                    fontWeight: \"600\",\r\n                    color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                  }}>\r\n                    Create Tour\r\n                  </h3>\r\n                  <p style={{\r\n                    margin: \"0 0 16px 0\",\r\n                    fontSize: \"12px\",\r\n                    color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                    lineHeight: \"1.4\",\r\n                  }}>\r\n                    Click elements on the page to create tour steps, then add titles and descriptions. Use the preview button to test your tour before saving.\r\n                  </p>\r\n\r\n                  {/* Device Type Selector */}\r\n                  <div style={{ marginBottom: \"16px\" }}>\r\n                    <label style={{\r\n                      display: \"block\",\r\n                      fontSize: \"13px\",\r\n                      fontWeight: \"500\",\r\n                      color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                      marginBottom: \"6px\",\r\n                    }}>\r\n                      Target Device Type\r\n                    </label>\r\n                    <select\r\n                      value={tourDeviceType}\r\n                      onChange={(e) => setTourDeviceType(e.target.value as 'mobile' | 'desktop' | 'all')}\r\n                      style={{\r\n                        width: \"100%\",\r\n                        padding: \"8px 12px\",\r\n                        border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                        borderRadius: \"6px\",\r\n                        background: isDark ? \"#111827\" : \"#ffffff\",\r\n                        color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                        fontSize: \"14px\",\r\n                        outline: \"none\",\r\n                        transition: \"border-color 0.2s ease\",\r\n                      }}\r\n                      onFocus={(e) => {\r\n                        e.target.style.borderColor = config.primaryColor;\r\n                      }}\r\n                      onBlur={(e) => {\r\n                        e.target.style.borderColor = isDark ? \"#374151\" : \"#e5e7eb\";\r\n                      }}\r\n                    >\r\n                      <option value=\"all\">All Devices</option>\r\n                      <option value=\"desktop\">Desktop Only</option>\r\n                      <option value=\"mobile\">Mobile Only</option>\r\n                    </select>\r\n                    <p style={{\r\n                      margin: \"4px 0 0 0\",\r\n                      fontSize: \"11px\",\r\n                      color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                      lineHeight: \"1.3\",\r\n                    }}>\r\n                      Choose which devices this tour should appear on. Current device: {getCurrentDeviceType()}\r\n                    </p>\r\n                  </div>\r\n                </div>\r\n\r\n                <div style={{ marginBottom: \"16px\" }}>\r\n                  <button\r\n                    onClick={handleStartElementSelection}\r\n                    disabled={isSelectingElement}\r\n                    style={{\r\n                      width: \"100%\",\r\n                      padding: \"12px\",\r\n                      background: isSelectingElement ? \"#6b7280\" : config.primaryColor,\r\n                      color: \"white\",\r\n                      border: \"none\",\r\n                      borderRadius: \"6px\",\r\n                      fontSize: \"14px\",\r\n                      fontWeight: \"500\",\r\n                      cursor: isSelectingElement ? \"not-allowed\" : \"pointer\",\r\n                      transition: \"all 0.2s ease\",\r\n                    }}\r\n                  >\r\n                    {isSelectingElement ? \"Click an element on the page...\" : \"Add Tour Step\"}\r\n                  </button>\r\n                </div>\r\n\r\n                {tourSteps.length > 0 && (\r\n                  <div style={{ marginBottom: \"16px\" }}>\r\n                    <h4 style={{\r\n                      margin: \"0 0 12px 0\",\r\n                      fontSize: \"14px\",\r\n                      fontWeight: \"600\",\r\n                      color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                    }}>\r\n                      Tour Steps ({tourSteps.length})\r\n                    </h4>\r\n\r\n                    <div style={{\r\n                      maxHeight: \"200px\",\r\n                      overflowY: \"auto\",\r\n                      border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                      borderRadius: \"6px\",\r\n                      padding: \"8px\",\r\n                    }}>\r\n                      {tourSteps.map((step, index) => (\r\n                        <div key={step.id} style={{\r\n                          padding: \"8px\",\r\n                          marginBottom: \"8px\",\r\n                          background: isDark ? \"#1f2937\" : \"#f9fafb\",\r\n                          borderRadius: \"4px\",\r\n                          border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                        }}>\r\n                          <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", marginBottom: \"8px\" }}>\r\n                            <span style={{\r\n                              fontSize: \"12px\",\r\n                              fontWeight: \"500\",\r\n                              color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                            }}>\r\n                              Step {index + 1}\r\n                            </span>\r\n                            <button\r\n                              onClick={() => handleRemoveTourStep(index)}\r\n                              style={{\r\n                                background: \"none\",\r\n                                border: \"none\",\r\n                                color: \"#ef4444\",\r\n                                cursor: \"pointer\",\r\n                                padding: \"2px\",\r\n                                fontSize: \"12px\",\r\n                              }}\r\n                            >\r\n                              ✕\r\n                            </button>\r\n                          </div>\r\n\r\n                          <div style={{ marginBottom: \"6px\" }}>\r\n                            <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", marginBottom: \"2px\" }}>\r\n                              <label style={{\r\n                                fontSize: \"10px\",\r\n                                color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                              }}>\r\n                                Element Selector:\r\n                              </label>\r\n                              <span style={{\r\n                                fontSize: \"9px\",\r\n                                color: (() => {\r\n                                  const validation = selectorValidation[step.id];\r\n                                  if (!validation) return \"#6b7280\"; // gray - not validated yet\r\n                                  if (validation.error) return \"#ef4444\"; // red\r\n                                  if (validation.elementCount === 0) return \"#ef4444\"; // red\r\n                                  if (validation.elementCount === 1) return \"#10b981\"; // green\r\n                                  return \"#f59e0b\"; // yellow\r\n                                })(),\r\n                                fontWeight: \"500\",\r\n                              }}>\r\n                                {(() => {\r\n                                  const validation = selectorValidation[step.id];\r\n                                  if (!validation) return \"⏳ Checking...\";\r\n                                  if (validation.error) return `❌ ${validation.error}`;\r\n                                  if (validation.elementCount === 0) return \"❌ No match\";\r\n                                  if (validation.elementCount === 1) return \"✅ Unique\";\r\n                                  return `⚠️ ${validation.elementCount} matches`;\r\n                                })()}\r\n                              </span>\r\n                            </div>\r\n                            <div style={{ display: \"flex\", gap: \"4px\" }}>\r\n                              <input\r\n                                type=\"text\"\r\n                                placeholder=\"CSS selector\"\r\n                                value={step.element}\r\n                                onChange={(e) => handleUpdateTourStep(index, \"element\", e.target.value)}\r\n                                onBlur={() => {\r\n                                  // Trigger validation when user finishes editing\r\n                                  validateSelector(step.element, step.id);\r\n                                }}\r\n                                style={{\r\n                                  flex: 1,\r\n                                  padding: \"4px 6px\",\r\n                                  border: `1px solid ${(() => {\r\n                                    const validation = selectorValidation[step.id];\r\n                                    if (!validation) return isDark ? \"#374151\" : \"#e5e7eb\"; // default\r\n                                    if (validation.error) return \"#ef4444\"; // red\r\n                                    if (validation.elementCount === 0) return \"#ef4444\"; // red\r\n                                    if (validation.elementCount === 1) return \"#10b981\"; // green\r\n                                    return \"#f59e0b\"; // yellow\r\n                                  })()}`,\r\n                                  borderRadius: \"4px\",\r\n                                  background: isDark ? \"#111827\" : \"#ffffff\",\r\n                                  color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                                  fontSize: \"10px\",\r\n                                  fontFamily: \"monospace\",\r\n                                }}\r\n                              />\r\n                              <button\r\n                                type=\"button\"\r\n                                onClick={() => {\r\n                                  validateSelector(step.element, step.id);\r\n                                  // Also try to highlight the element briefly\r\n                                  try {\r\n                                    const elements = document.querySelectorAll(step.element);\r\n                                    elements.forEach(el => {\r\n                                      const htmlEl = el as HTMLElement;\r\n                                      const originalOutline = htmlEl.style.outline;\r\n                                      const originalBackground = htmlEl.style.backgroundColor;\r\n                                      htmlEl.style.outline = `2px solid ${config.primaryColor}`;\r\n                                      htmlEl.style.backgroundColor = `${config.primaryColor}20`;\r\n                                      setTimeout(() => {\r\n                                        htmlEl.style.outline = originalOutline;\r\n                                        htmlEl.style.backgroundColor = originalBackground;\r\n                                      }, 1000);\r\n                                    });\r\n                                  } catch (error) {\r\n                                    console.warn('Could not highlight element:', error);\r\n                                  }\r\n                                }}\r\n                                style={{\r\n                                  padding: \"4px 6px\",\r\n                                  border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                                  borderRadius: \"4px\",\r\n                                  background: isDark ? \"#1f2937\" : \"#f9fafb\",\r\n                                  color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                                  fontSize: \"9px\",\r\n                                  cursor: \"pointer\",\r\n                                  whiteSpace: \"nowrap\",\r\n                                }}\r\n                                title=\"Test selector and highlight matching elements\"\r\n                              >\r\n                                Test\r\n                              </button>\r\n                            </div>\r\n                          </div>\r\n\r\n                          <input\r\n                            type=\"text\"\r\n                            placeholder=\"Step title\"\r\n                            value={step.title}\r\n                            onChange={(e) => handleUpdateTourStep(index, \"title\", e.target.value)}\r\n                            style={{\r\n                              width: \"100%\",\r\n                              padding: \"6px 8px\",\r\n                              marginBottom: \"6px\",\r\n                              border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                              borderRadius: \"4px\",\r\n                              background: isDark ? \"#111827\" : \"#ffffff\",\r\n                              color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                              fontSize: \"12px\",\r\n                            }}\r\n                          />\r\n\r\n                          <textarea\r\n                            placeholder=\"Step description\"\r\n                            value={step.description}\r\n                            onChange={(e) => handleUpdateTourStep(index, \"description\", e.target.value)}\r\n                            rows={2}\r\n                            style={{\r\n                              width: \"100%\",\r\n                              padding: \"6px 8px\",\r\n                              marginBottom: \"6px\",\r\n                              border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                              borderRadius: \"4px\",\r\n                              background: isDark ? \"#111827\" : \"#ffffff\",\r\n                              color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                              fontSize: \"12px\",\r\n                              resize: \"vertical\",\r\n                            }}\r\n                          />\r\n\r\n                          {/* Auto-click toggle */}\r\n                          <div style={{\r\n                            display: \"flex\",\r\n                            alignItems: \"center\",\r\n                            gap: \"6px\",\r\n                            marginBottom: \"6px\",\r\n                          }}>\r\n                            <input\r\n                              type=\"checkbox\"\r\n                              id={`autoclick-${step.id}`}\r\n                              checked={step.autoClick || false}\r\n                              onChange={(e) => handleUpdateTourStep(index, \"autoClick\", e.target.checked)}\r\n                              style={{\r\n                                cursor: \"pointer\",\r\n                              }}\r\n                            />\r\n                            <label\r\n                              htmlFor={`autoclick-${step.id}`}\r\n                              style={{\r\n                                fontSize: \"11px\",\r\n                                color: isDark ? \"#d1d5db\" : \"#4b5563\",\r\n                                cursor: \"pointer\",\r\n                                userSelect: \"none\",\r\n                              }}\r\n                            >\r\n                              Auto-click element when user clicks \"Next\"\r\n                            </label>\r\n                          </div>\r\n\r\n                          {/* Auto-click timeout input */}\r\n                          {step.autoClick && (\r\n                            <div style={{\r\n                              display: \"flex\",\r\n                              alignItems: \"center\",\r\n                              gap: \"6px\",\r\n                              marginBottom: \"6px\",\r\n                              marginLeft: \"22px\",\r\n                            }}>\r\n                              <label\r\n                                htmlFor={`autoclick-timeout-${step.id}`}\r\n                                style={{\r\n                                  fontSize: \"11px\",\r\n                                  color: isDark ? \"#d1d5db\" : \"#4b5563\",\r\n                                  whiteSpace: \"nowrap\",\r\n                                }}\r\n                              >\r\n                                Delay before next step (ms):\r\n                              </label>\r\n                              <input\r\n                                type=\"number\"\r\n                                id={`autoclick-timeout-${step.id}`}\r\n                                value={step.autoClickTimeout ?? 500}\r\n                                onChange={(e) => handleUpdateTourStep(index, \"autoClickTimeout\", parseInt(e.target.value) || 500)}\r\n                                min=\"0\"\r\n                                max=\"10000\"\r\n                                step=\"100\"\r\n                                style={{\r\n                                  width: \"80px\",\r\n                                  padding: \"4px 6px\",\r\n                                  fontSize: \"11px\",\r\n                                  border: `1px solid ${isDark ? \"#374151\" : \"#d1d5db\"}`,\r\n                                  borderRadius: \"4px\",\r\n                                  backgroundColor: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                                  color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                                }}\r\n                              />\r\n                            </div>\r\n                          )}\r\n\r\n                          {/* Auto-fill value input */}\r\n                          <div style={{\r\n                            display: \"flex\",\r\n                            flexDirection: \"column\",\r\n                            gap: \"4px\",\r\n                            marginBottom: \"6px\",\r\n                          }}>\r\n                            <label\r\n                              htmlFor={`autofill-${step.id}`}\r\n                              style={{\r\n                                fontSize: \"11px\",\r\n                                color: isDark ? \"#d1d5db\" : \"#4b5563\",\r\n                              }}\r\n                            >\r\n                              Auto-fill value (for input fields):\r\n                            </label>\r\n                            <input\r\n                              type=\"text\"\r\n                              id={`autofill-${step.id}`}\r\n                              placeholder=\"Enter value to auto-fill...\"\r\n                              value={step.autoFillValue || \"\"}\r\n                              onChange={(e) => handleUpdateTourStep(index, \"autoFillValue\", e.target.value)}\r\n                              style={{\r\n                                width: \"100%\",\r\n                                padding: \"6px 8px\",\r\n                                fontSize: \"11px\",\r\n                                border: `1px solid ${isDark ? \"#374151\" : \"#d1d5db\"}`,\r\n                                borderRadius: \"4px\",\r\n                                backgroundColor: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                                color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                              }}\r\n                            />\r\n                          </div>\r\n\r\n                          {/* Debug: Test auto-click button */}\r\n                          {step.autoClick && (\r\n                            <button\r\n                              type=\"button\"\r\n                              onClick={() => {\r\n                                // console.log(`Testing auto-click for step: ${step.element}`);\r\n                                try {\r\n                                  const elements = document.querySelectorAll(step.element);\r\n                                  // console.log(`Found ${elements.length} elements for selector: ${step.element}`);\r\n                                  \r\n                                  if (elements.length > 0) {\r\n                                    const element = elements[0] as HTMLElement;\r\n                                    // console.log('Target element:', element);\r\n                                    \r\n                                    // Highlight element briefly\r\n                                    const originalOutline = element.style.outline;\r\n                                    const originalBackground = element.style.backgroundColor;\r\n                                    element.style.outline = '3px solid red';\r\n                                    element.style.backgroundColor = 'rgba(255, 0, 0, 0.2)';\r\n                                    \r\n                                    // Test click\r\n                                    if (typeof element.click === 'function') {\r\n                                      element.click();\r\n                                    }\r\n                                    \r\n                                    const clickEvent = new MouseEvent('click', {\r\n                                      view: window,\r\n                                      bubbles: true,\r\n                                      cancelable: true\r\n                                    });\r\n                                    element.dispatchEvent(clickEvent);\r\n                                    \r\n                                    // console.log('Auto-click test completed for:', step.element);\r\n                                    \r\n                                    // Restore original styling\r\n                                    setTimeout(() => {\r\n                                      element.style.outline = originalOutline;\r\n                                      element.style.backgroundColor = originalBackground;\r\n                                    }, 1000);\r\n                                  } else {\r\n                                    console.warn('No elements found for selector:', step.element);\r\n                                    alert(`No elements found for selector: ${step.element}`);\r\n                                  }\r\n                                } catch (error) {\r\n                                  console.error('Auto-click test error:', error);\r\n                                  alert(`Error testing auto-click: ${error}`);\r\n                                }\r\n                              }}\r\n                              style={{\r\n                                padding: \"2px 6px\",\r\n                                border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                                borderRadius: \"3px\",\r\n                                background: isDark ? \"#1f2937\" : \"#f9fafb\",\r\n                                color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                                fontSize: \"9px\",\r\n                                cursor: \"pointer\",\r\n                                marginBottom: \"6px\",\r\n                              }}\r\n                              title=\"Test auto-click functionality for this step\"\r\n                            >\r\n                              Test Auto-Click\r\n                            </button>\r\n                          )}\r\n\r\n                         \r\n                        </div>\r\n                      ))}\r\n                    </div>\r\n                  </div>\r\n                )}\r\n\r\n                <div style={{ display: \"flex\", gap: \"8px\" }}>\r\n                  <button\r\n                    onClick={() => {\r\n                      if (isPreviewingTour) {\r\n                        // If already previewing, stop the tour first\r\n                        if ((window as any).currentDriverInstance) {\r\n                          try {\r\n                            (window as any).currentDriverInstance.destroy();\r\n                            // Allow time for cleanup before starting a new preview\r\n                            setTimeout(() => {\r\n                              setIsPreviewingTour(false);\r\n                              handlePreviewTour();\r\n                            }, 200);\r\n                          } catch (e) {\r\n                            console.warn('Failed to destroy driver instance:', e);\r\n                            setIsPreviewingTour(false);\r\n                          }\r\n                        } else {\r\n                          setIsPreviewingTour(false);\r\n                        }\r\n                      } else {\r\n                        handlePreviewTour();\r\n                      }\r\n                    }}\r\n                    disabled={tourSteps.length === 0}\r\n                    style={{\r\n                      flex: 1,\r\n                      padding: \"12px\",\r\n                      background: tourSteps.length === 0 ? \"#6b7280\" : isPreviewingTour ? \"#ec4899\" : config.primaryColor,\r\n                      color: \"white\",\r\n                      border: \"none\",\r\n                      borderRadius: \"6px\",\r\n                      fontSize: \"14px\",\r\n                      fontWeight: \"500\",\r\n                      cursor: tourSteps.length === 0 ? \"not-allowed\" : \"pointer\",\r\n                      transition: \"all 0.2s ease\",\r\n                    }}\r\n                  >\r\n                    {isPreviewingTour ? \"Stop Preview\" : \"Preview Tour\"}\r\n                  </button>\r\n                  <button\r\n                    onClick={handleSaveTour}\r\n                    disabled={tourSteps.length === 0 || savingTour}\r\n                    style={{\r\n                      flex: 1,\r\n                      padding: \"12px\",\r\n                      background: (tourSteps.length === 0 || savingTour) ? \"#6b7280\" : \"#10b981\",\r\n                      color: \"white\",\r\n                      border: \"none\",\r\n                      borderRadius: \"6px\",\r\n                      fontSize: \"14px\",\r\n                      fontWeight: \"500\",\r\n                      cursor: (tourSteps.length === 0 || savingTour) ? \"not-allowed\" : \"pointer\",\r\n                      transition: \"all 0.2s ease\",\r\n                      display: \"flex\",\r\n                      alignItems: \"center\",\r\n                      justifyContent: \"center\",\r\n                      gap: \"8px\",\r\n                    }}\r\n                  >\r\n                    {savingTour && (\r\n                      <span style={{ animation: \"spin 1s linear infinite\" }}>⟳</span>\r\n                    )}\r\n                    {savingTour ? \"Saving...\" : \"Save Tour\"}\r\n                  </button>\r\n                </div>\r\n              </div>\r\n            ) : showSubmissionForm ? (\r\n              <div style={{ animation: \"fadeIn 0.3s ease-out\" }}>\r\n                <button\r\n                  onClick={resetWidget}\r\n                  style={{\r\n                    background: \"none\",\r\n                    border: \"none\",\r\n                    color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                    fontSize: \"12px\",\r\n                    cursor: \"pointer\",\r\n                    padding: \"8px 0\",\r\n                    marginBottom: \"16px\",\r\n                    transition: \"all 0.2s ease\",\r\n                    transform: \"translateX(0)\",\r\n                  }}\r\n                  onMouseOver={(e) => {\r\n                    e.currentTarget.style.color = config.primaryColor;\r\n                    e.currentTarget.style.transform = \"translateX(-2px)\";\r\n                  }}\r\n                  onMouseOut={(e) => {\r\n                    e.currentTarget.style.color = isDark\r\n                      ? \"#9ca3af\"\r\n                      : \"#6b7280\";\r\n                    e.currentTarget.style.transform = \"translateX(0)\";\r\n                  }}\r\n                >\r\n                  ← Back to options\r\n                </button>\r\n\r\n                {displayError && (\r\n                  <div\r\n                    style={{\r\n                      background: isDark ? \"#7f1d1d\" : \"#fef2f2\",\r\n                      border: `1px solid ${isDark ? \"#991b1b\" : \"#fecaca\"}`,\r\n                      color: isDark ? \"#fca5a5\" : \"#dc2626\",\r\n                      padding: \"12px\",\r\n                      borderRadius: \"6px\",\r\n                      fontSize: \"12px\",\r\n                      marginBottom: \"16px\",\r\n                      animation: \"shake 0.5s ease-in-out\",\r\n                    }}\r\n                  >\r\n                    {displayError}\r\n                  </div>\r\n                )}\r\n\r\n                <form\r\n                  onSubmit={handleSubmit}\r\n                  style={{\r\n                    display: \"flex\",\r\n                    flexDirection: \"column\",\r\n                    gap: \"16px\",\r\n                  }}\r\n                >\r\n                  <div>\r\n                    <label\r\n                      style={{\r\n                        fontSize: \"12px\",\r\n                        fontWeight: \"500\",\r\n                        marginBottom: \"6px\",\r\n                        display: \"block\",\r\n                      }}\r\n                    >\r\n                      {(config.customLabels as any)?.titleLabel || \"Title\"} *\r\n                    </label>\r\n                    <input\r\n                      type=\"text\"\r\n                      value={formData.title}\r\n                      onChange={(e) =>\r\n                        setFormData((prev) => ({\r\n                          ...prev,\r\n                          title: e.target.value,\r\n                        }))\r\n                      }\r\n                      placeholder={\r\n                        (config.customLabels as any)?.titlePlaceholder ||\r\n                        \"Brief description\"\r\n                      }\r\n                      required\r\n                      disabled={submitting}\r\n                      style={{\r\n                        width: \"100%\",\r\n                        padding: \"10px 12px\",\r\n                        border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                        borderRadius: \"6px\",\r\n                        background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                        color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                        fontSize: \"14px\",\r\n                        fontFamily: \"inherit\",\r\n                      }}\r\n                    />\r\n                  </div>\r\n\r\n                  <div>\r\n                    <label\r\n                      style={{\r\n                        fontSize: \"12px\",\r\n                        fontWeight: \"500\",\r\n                        marginBottom: \"6px\",\r\n                        display: \"block\",\r\n                      }}\r\n                    >\r\n                      {(config.customLabels as any)?.descriptionLabel ||\r\n                        \"Description\"}{\" \"}\r\n                      *\r\n                    </label>\r\n                    <textarea\r\n                      value={formData.description}\r\n                      onChange={(e) =>\r\n                        setFormData((prev) => ({\r\n                          ...prev,\r\n                          description: e.target.value,\r\n                        }))\r\n                      }\r\n                      placeholder={\r\n                        (config.customLabels as any)?.descriptionPlaceholder ||\r\n                        \"Provide more details...\"\r\n                      }\r\n                      rows={3}\r\n                      required\r\n                      disabled={submitting}\r\n                      style={{\r\n                        width: \"100%\",\r\n                        padding: \"10px 12px\",\r\n                        border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                        borderRadius: \"6px\",\r\n                        background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                        color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                        fontSize: \"14px\",\r\n                        fontFamily: \"inherit\",\r\n                        resize: \"none\",\r\n                      }}\r\n                    />\r\n                  </div>\r\n\r\n                  {/* Email field - show if no email is set via config, dynamic API, or user input */}\r\n                  {!config.email && !_getDynamicEmail() && !formData.email && (\r\n                    <div>\r\n                      <label\r\n                        style={{\r\n                          fontSize: \"12px\",\r\n                          fontWeight: \"500\",\r\n                          marginBottom: \"6px\",\r\n                          display: \"block\",\r\n                        }}\r\n                      >\r\n                        {(config.customLabels as any)?.emailLabel || \"Email\"} *\r\n                      </label>\r\n                      <input\r\n                        type=\"email\"\r\n                        value={formData.email}\r\n                        onChange={(e) =>\r\n                          setFormData((prev) => ({\r\n                            ...prev,\r\n                            email: e.target.value,\r\n                          }))\r\n                        }\r\n                        placeholder={\r\n                          (config.customLabels as any)?.emailPlaceholder ||\r\n                          \"your@email.com\"\r\n                        }\r\n                        required\r\n                        disabled={submitting}\r\n                        style={{\r\n                          width: \"100%\",\r\n                          padding: \"10px 12px\",\r\n                          border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                          borderRadius: \"6px\",\r\n                          background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                          color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                          fontSize: \"14px\",\r\n                          fontFamily: \"inherit\",\r\n                        }}\r\n                      />\r\n                    </div>\r\n                  )}\r\n\r\n                  {/* Show email field again if user has set email but wants to change it */}\r\n                  {!config.email && !_getDynamicEmail() && formData.email && (\r\n                    <div>\r\n                      <label\r\n                        style={{\r\n                          fontSize: \"12px\",\r\n                          fontWeight: \"500\",\r\n                          marginBottom: \"6px\",\r\n                          display: \"block\",\r\n                        }}\r\n                      >\r\n                        {(config.customLabels as any)?.emailLabel || \"Email\"} *\r\n                      </label>\r\n                      <div\r\n                        style={{\r\n                          display: \"flex\",\r\n                          gap: \"8px\",\r\n                          alignItems: \"center\",\r\n                        }}\r\n                      >\r\n                        <input\r\n                          type=\"email\"\r\n                          value={formData.email}\r\n                          onChange={(e) =>\r\n                            setFormData((prev) => ({\r\n                              ...prev,\r\n                              email: e.target.value,\r\n                            }))\r\n                          }\r\n                          placeholder={\r\n                            (config.customLabels as any)?.emailPlaceholder ||\r\n                            \"your@email.com\"\r\n                          }\r\n                          required\r\n                          disabled={submitting}\r\n                          style={{\r\n                            flex: 1,\r\n                            padding: \"10px 12px\",\r\n                            border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                            borderRadius: \"6px\",\r\n                            background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                            color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                            fontSize: \"14px\",\r\n                            fontFamily: \"inherit\",\r\n                          }}\r\n                        />\r\n                        <button\r\n                          type=\"button\"\r\n                          onClick={() =>\r\n                            setFormData((prev) => ({ ...prev, email: \"\" }))\r\n                          }\r\n                          disabled={submitting}\r\n                          style={{\r\n                            padding: \"8px\",\r\n                            border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                            borderRadius: \"6px\",\r\n                            background: isDark ? \"#111827\" : \"#f9fafb\",\r\n                            color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                            fontSize: \"12px\",\r\n                            cursor: submitting ? \"not-allowed\" : \"pointer\",\r\n                            opacity: submitting ? 0.6 : 1,\r\n                          }}\r\n                          title=\"Clear email\"\r\n                        >\r\n                          <X size={12} />\r\n                        </button>\r\n                      </div>\r\n                    </div>\r\n                  )}\r\n\r\n                  {/* Image attachment section */}\r\n                  <div>\r\n                    <label\r\n                      style={{\r\n                        fontSize: \"12px\",\r\n                        fontWeight: \"500\",\r\n                        marginBottom: \"6px\",\r\n                        display: \"block\",\r\n                      }}\r\n                    >\r\n                      Add Image (Optional)\r\n                    </label>\r\n\r\n                    {!attachedImage ? (\r\n                      <div\r\n                        style={{\r\n                          display: \"flex\",\r\n                          gap: \"8px\",\r\n                          marginBottom: \"8px\",\r\n                        }}\r\n                      >\r\n                        <button\r\n                          type=\"button\"\r\n                          onClick={handleScreenshot}\r\n                          disabled={submitting}\r\n                          style={{\r\n                            flex: 1,\r\n                            padding: \"8px 12px\",\r\n                            border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                            borderRadius: \"6px\",\r\n                            background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                            color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                            fontSize: \"12px\",\r\n                            fontWeight: \"500\",\r\n                            cursor: submitting ? \"not-allowed\" : \"pointer\",\r\n                            opacity: submitting ? 0.6 : 1,\r\n                            display: \"flex\",\r\n                            alignItems: \"center\",\r\n                            justifyContent: \"center\",\r\n                            gap: \"4px\",\r\n                          }}\r\n                        >\r\n                          <Camera size={16} /> Screenshot\r\n                        </button>\r\n                        <button\r\n                          type=\"button\"\r\n                          onClick={() => fileInputRef.current?.click()}\r\n                          disabled={submitting}\r\n                          style={{\r\n                            flex: 1,\r\n                            padding: \"8px 12px\",\r\n                            border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                            borderRadius: \"6px\",\r\n                            background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                            color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                            fontSize: \"12px\",\r\n                            fontWeight: \"500\",\r\n                            cursor: submitting ? \"not-allowed\" : \"pointer\",\r\n                            opacity: submitting ? 0.6 : 1,\r\n                            display: \"flex\",\r\n                            alignItems: \"center\",\r\n                            justifyContent: \"center\",\r\n                            gap: \"4px\",\r\n                          }}\r\n                        >\r\n                          <Upload size={16} /> Upload\r\n                        </button>\r\n                      </div>\r\n                    ) : (\r\n                      <div\r\n                        style={{\r\n                          border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                          borderRadius: \"6px\",\r\n                          padding: \"12px\",\r\n                          background: isDark ? \"#111827\" : \"#f9fafb\",\r\n                        }}\r\n                      >\r\n                        <div\r\n                          style={{\r\n                            display: \"flex\",\r\n                            alignItems: \"center\",\r\n                            justifyContent: \"space-between\",\r\n                            marginBottom: \"8px\",\r\n                          }}\r\n                        >\r\n                          <span\r\n                            style={{\r\n                              fontSize: \"12px\",\r\n                              color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                            }}\r\n                          >\r\n                            {imageFileName}\r\n                          </span>\r\n                          <div style={{ display: \"flex\", gap: \"8px\" }}>\r\n                            <button\r\n                              type=\"button\"\r\n                              onClick={() => {\r\n                                if (attachedImage) {\r\n                                  setOriginalImage(attachedImage);\r\n                                  setShowImageEditor(true);\r\n                                }\r\n                              }}\r\n                              disabled={submitting}\r\n                              style={{\r\n                                background: \"none\",\r\n                                border: \"none\",\r\n                                color: isDark ? \"#3b82f6\" : \"#2563eb\",\r\n                                cursor: submitting ? \"not-allowed\" : \"pointer\",\r\n                                fontSize: \"12px\",\r\n                                fontWeight: \"500\",\r\n                                opacity: submitting ? 0.6 : 1,\r\n                                display: \"flex\",\r\n                                alignItems: \"center\",\r\n                                gap: \"4px\",\r\n                              }}\r\n                              title=\"Edit image\"\r\n                            >\r\n                              <Edit3 size={12} />\r\n                              Edit\r\n                            </button>\r\n                            <button\r\n                              type=\"button\"\r\n                              onClick={removeAttachment}\r\n                              disabled={submitting}\r\n                              style={{\r\n                                background: \"none\",\r\n                                border: \"none\",\r\n                                color: isDark ? \"#ef4444\" : \"#dc2626\",\r\n                                cursor: submitting ? \"not-allowed\" : \"pointer\",\r\n                                fontSize: \"12px\",\r\n                                fontWeight: \"500\",\r\n                                opacity: submitting ? 0.6 : 1,\r\n                              }}\r\n                            >\r\n                              Remove\r\n                            </button>\r\n                          </div>\r\n                        </div>\r\n                        <img\r\n                          src={attachedImage}\r\n                          alt=\"Image preview\"\r\n                          style={{\r\n                            width: \"100%\",\r\n                            maxHeight: \"200px\",\r\n                            objectFit: \"contain\",\r\n                            borderRadius: \"4px\",\r\n                            background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                          }}\r\n                        />\r\n                      </div>\r\n                    )}\r\n\r\n                    <input\r\n                      ref={fileInputRef}\r\n                      type=\"file\"\r\n                      accept=\"image/*\"\r\n                      onChange={handleImageUpload}\r\n                      style={{ display: \"none\" }}\r\n                    />\r\n                  </div>\r\n\r\n                  <div\r\n                    style={{ display: \"flex\", gap: \"8px\", marginTop: \"8px\" }}\r\n                  >\r\n                    <button\r\n                      type=\"button\"\r\n                      onClick={resetWidget}\r\n                      disabled={submitting}\r\n                      style={{\r\n                        flex: 1,\r\n                        padding: \"10px 16px\",\r\n                        border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                        borderRadius: \"6px\",\r\n                        background: isDark ? \"#111827\" : \"#f9fafb\",\r\n                        color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                        fontSize: \"12px\",\r\n                        fontWeight: \"500\",\r\n                        cursor: submitting ? \"not-allowed\" : \"pointer\",\r\n                        opacity: submitting ? 0.6 : 1,\r\n                        transition: \"all 0.2s ease\",\r\n                        transform: \"translateY(0)\",\r\n                      }}\r\n                      onMouseOver={(e) => {\r\n                        if (!submitting) {\r\n                          e.currentTarget.style.transform = \"translateY(-1px)\";\r\n                          e.currentTarget.style.boxShadow =\r\n                            \"0 2px 8px rgba(0, 0, 0, 0.1)\";\r\n                        }\r\n                      }}\r\n                      onMouseOut={(e) => {\r\n                        if (!submitting) {\r\n                          e.currentTarget.style.transform = \"translateY(0)\";\r\n                          e.currentTarget.style.boxShadow = \"none\";\r\n                        }\r\n                      }}\r\n                    >\r\n                      Cancel\r\n                    </button>\r\n                    <button\r\n                      type=\"submit\"\r\n                      disabled={\r\n                        submitting ||\r\n                        !formData.title.trim() ||\r\n                        !formData.description.trim() ||\r\n                        (!config.email &&\r\n                          !_getDynamicEmail() &&\r\n                          !formData.email.trim())\r\n                      }\r\n                      style={{\r\n                        flex: 1,\r\n                        padding: \"10px 16px\",\r\n                        border: \"none\",\r\n                        borderRadius: \"6px\",\r\n                        background: config.primaryColor,\r\n                        color: \"white\",\r\n                        fontSize: \"12px\",\r\n                        fontWeight: \"500\",\r\n                        cursor:\r\n                          submitting ||\r\n                            !formData.title.trim() ||\r\n                            !formData.description.trim() ||\r\n                            (!config.email &&\r\n                              !_getDynamicEmail() &&\r\n                              !formData.email.trim())\r\n                            ? \"not-allowed\"\r\n                            : \"pointer\",\r\n                        opacity:\r\n                          submitting ||\r\n                            !formData.title.trim() ||\r\n                            !formData.description.trim() ||\r\n                            (!config.email &&\r\n                              !_getDynamicEmail() &&\r\n                              !formData.email.trim())\r\n                            ? 0.6\r\n                            : 1,\r\n                        display: \"flex\",\r\n                        alignItems: \"center\",\r\n                        justifyContent: \"center\",\r\n                        gap: \"6px\",\r\n                        transition: \"all 0.2s ease\",\r\n                        transform: \"translateY(0)\",\r\n                      }}\r\n                      onMouseOver={(e) => {\r\n                        if (\r\n                          !submitting &&\r\n                          formData.title.trim() &&\r\n                          formData.description.trim() &&\r\n                          (config.email ||\r\n                            _getDynamicEmail() ||\r\n                            formData.email.trim())\r\n                        ) {\r\n                          e.currentTarget.style.transform = \"translateY(-1px)\";\r\n                          e.currentTarget.style.boxShadow =\r\n                            \"0 2px 8px rgba(0, 0, 0, 0.2)\";\r\n                        }\r\n                      }}\r\n                      onMouseOut={(e) => {\r\n                        if (!submitting) {\r\n                          e.currentTarget.style.transform = \"translateY(0)\";\r\n                          e.currentTarget.style.boxShadow = \"none\";\r\n                        }\r\n                      }}\r\n                    >\r\n                      {submitting ? (\r\n                        <>\r\n                          <span\r\n                            style={{ animation: \"spin 1s linear infinite\" }}\r\n                          >\r\n                            <RotateCw size={16} />\r\n                          </span>\r\n                          Submitting...\r\n                        </>\r\n                      ) : (\r\n                        (config.customLabels as any)?.submitButton || \"Submit\"\r\n                      )}\r\n                    </button>\r\n                  </div>\r\n                </form>\r\n              </div>\r\n            ) : (\r\n              <div\r\n                style={{\r\n                  display: \"flex\",\r\n                  flexDirection: \"column\",\r\n                  gap: \"12px\",\r\n                  animation: \"fadeIn 0.3s ease-out\",\r\n                }}\r\n              >\r\n                {getVisibleFeedbackTypes.map((type, index) => {\r\n                  const label =\r\n                    (config.customLabels as any)[type.id] || type.label;\r\n\r\n                  return (\r\n                    <button\r\n                      key={type.id}\r\n                      onClick={() => handleFeedbackTypeSelect(type.id)}\r\n                      style={{\r\n                        width: \"100%\",\r\n                        padding: \"16px\",\r\n                        border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                        borderRadius: \"8px\",\r\n                        background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                        cursor: \"pointer\",\r\n                        display: \"flex\",\r\n                        alignItems: \"flex-start\",\r\n                        gap: \"12px\",\r\n                        textAlign: \"left\",\r\n                        transition: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n                        animation: `fadeIn 0.4s ease-out ${index * 0.1}s both`,\r\n                        transform: \"translateY(0)\",\r\n                      }}\r\n                      onMouseOver={(e) => {\r\n                        e.currentTarget.style.background = isDark\r\n                          ? \"#111827\"\r\n                          : \"#f9fafb\";\r\n                        e.currentTarget.style.borderColor = config.primaryColor;\r\n                        e.currentTarget.style.transform = \"translateY(-2px)\";\r\n                        e.currentTarget.style.boxShadow =\r\n                          \"0 4px 12px rgba(0, 0, 0, 0.1)\";\r\n                      }}\r\n                      onMouseOut={(e) => {\r\n                        e.currentTarget.style.background = isDark\r\n                          ? \"#1f2937\"\r\n                          : \"#ffffff\";\r\n                        e.currentTarget.style.borderColor = isDark\r\n                          ? \"#374151\"\r\n                          : \"#e5e7eb\";\r\n                        e.currentTarget.style.transform = \"translateY(0)\";\r\n                        e.currentTarget.style.boxShadow = \"none\";\r\n                      }}\r\n                    >\r\n                      <div\r\n                        style={{\r\n                          width: \"32px\",\r\n                          height: \"32px\",\r\n                          borderRadius: \"50%\",\r\n                          background: type.color,\r\n                          display: \"flex\",\r\n                          alignItems: \"center\",\r\n                          justifyContent: \"center\",\r\n                          color: \"white\",\r\n                          flexShrink: 0,\r\n                          fontSize: \"16px\",\r\n                        }}\r\n                      >\r\n                        <type.icon size={16} />\r\n                      </div>\r\n                      <div>\r\n                        <div\r\n                          style={{\r\n                            fontSize: \"14px\",\r\n                            fontWeight: \"600\",\r\n                            marginBottom: \"4px\",\r\n                            color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                          }}\r\n                        >\r\n                          {label}\r\n                        </div>\r\n                        <div\r\n                          style={{\r\n                            fontSize: \"12px\",\r\n                            color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                            lineHeight: \"1.4\",\r\n                          }}\r\n                        >\r\n                          {(() => {\r\n                            const customDescriptionKey = `${type.id}Description`;\r\n                            return (\r\n                              (config.customLabels as any)?.[\r\n                              customDescriptionKey\r\n                              ] || type.description\r\n                            );\r\n                          })()}\r\n                        </div>\r\n                      </div>\r\n                    </button>\r\n                  );\r\n                })}\r\n\r\n                {!config.hideRoadmap && (\r\n                  <button\r\n                    onClick={handleViewRoadmap}\r\n                    style={{\r\n                      width: \"100%\",\r\n                      padding: \"16px\",\r\n                      border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                      borderRadius: \"8px\",\r\n                      background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n                      cursor: \"pointer\",\r\n                      display: \"flex\",\r\n                      alignItems: \"flex-start\",\r\n                      gap: \"12px\",\r\n                      textAlign: \"left\",\r\n                      transition: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n                      animation: `fadeIn 0.4s ease-out ${getVisibleFeedbackTypes.length * 0.1}s both`,\r\n                      transform: \"translateY(0)\",\r\n                    }}\r\n                    onMouseOver={(e) => {\r\n                      e.currentTarget.style.background = isDark\r\n                        ? \"#111827\"\r\n                        : \"#f9fafb\";\r\n                      e.currentTarget.style.borderColor = config.primaryColor;\r\n                      e.currentTarget.style.transform = \"translateY(-2px)\";\r\n                      e.currentTarget.style.boxShadow =\r\n                        \"0 4px 12px rgba(0, 0, 0, 0.1)\";\r\n                    }}\r\n                    onMouseOut={(e) => {\r\n                      e.currentTarget.style.background = isDark\r\n                        ? \"#1f2937\"\r\n                        : \"#ffffff\";\r\n                      e.currentTarget.style.borderColor = isDark\r\n                        ? \"#374151\"\r\n                        : \"#e5e7eb\";\r\n                      e.currentTarget.style.transform = \"translateY(0)\";\r\n                      e.currentTarget.style.boxShadow = \"none\";\r\n                    }}\r\n                  >\r\n                    <div\r\n                      style={{\r\n                        width: \"32px\",\r\n                        height: \"32px\",\r\n                        borderRadius: \"50%\",\r\n                        background: \"#8b5cf6\",\r\n                        display: \"flex\",\r\n                        alignItems: \"center\",\r\n                        justifyContent: \"center\",\r\n                        color: \"white\",\r\n                        flexShrink: 0,\r\n                        fontSize: \"16px\",\r\n                      }}\r\n                    >\r\n                      <Map size={16} />\r\n                    </div>\r\n                    <div>\r\n                      <div\r\n                        style={{\r\n                          fontSize: \"14px\",\r\n                          fontWeight: \"600\",\r\n                          marginBottom: \"4px\",\r\n                          color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                        }}\r\n                      >\r\n                        {(config.customLabels as any).viewRoadmap ||\r\n                          \"View Roadmap\"}\r\n                      </div>\r\n                      <div\r\n                        style={{\r\n                          fontSize: \"12px\",\r\n                          color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                          lineHeight: \"1.4\",\r\n                        }}\r\n                      >\r\n                        {(config.customLabels as any)?.viewRoadmapDescription ||\r\n                          \"See what we're working on\"}\r\n                      </div>\r\n                    </div>\r\n                  </button>\r\n                )}\r\n\r\n                {/* Contextual Help Notification */}\r\n                {config.enableHelp && getValidVideoHelpUrl() && (\r\n                  <div\r\n                    style={{\r\n                      padding: \"12px 16px\",\r\n                      marginTop: \"8px\",\r\n                      background: isDark\r\n                        ? \"linear-gradient(135deg, rgba(16, 185, 129, 0.1), rgba(16, 185, 129, 0.05))\"\r\n                        : \"linear-gradient(135deg, rgba(16, 185, 129, 0.08), rgba(16, 185, 129, 0.03))\",\r\n                      border: `1px solid ${isDark ? \"rgba(16, 185, 129, 0.2)\" : \"rgba(16, 185, 129, 0.15)\"}`,\r\n                      borderRadius: \"8px\",\r\n                      display: \"flex\",\r\n                      alignItems: \"center\",\r\n                      gap: \"12px\",\r\n                      animation: `fadeIn 0.4s ease-out ${(getVisibleFeedbackTypes.length + (!config.hideRoadmap ? 1 : 0)) * 0.1}s both, helpGlow 3s infinite`,\r\n                      cursor: \"pointer\",\r\n                      transition: \"all 0.2s ease\",\r\n                    }}\r\n                    onClick={handleHelp}\r\n                    onMouseOver={(e) => {\r\n                      e.currentTarget.style.background = isDark\r\n                        ? \"linear-gradient(135deg, rgba(16, 185, 129, 0.15), rgba(16, 185, 129, 0.08))\"\r\n                        : \"linear-gradient(135deg, rgba(16, 185, 129, 0.12), rgba(16, 185, 129, 0.06))\";\r\n                      e.currentTarget.style.transform = \"translateY(-1px)\";\r\n                    }}\r\n                    onMouseOut={(e) => {\r\n                      e.currentTarget.style.background = isDark\r\n                        ? \"linear-gradient(135deg, rgba(16, 185, 129, 0.1), rgba(16, 185, 129, 0.05))\"\r\n                        : \"linear-gradient(135deg, rgba(16, 185, 129, 0.08), rgba(16, 185, 129, 0.03))\";\r\n                      e.currentTarget.style.transform = \"translateY(0)\";\r\n                    }}\r\n                  >\r\n                    <div\r\n                      style={{\r\n                        width: \"20px\",\r\n                        height: \"20px\",\r\n                        borderRadius: \"50%\",\r\n                        background: \"linear-gradient(135deg, #10b981, #059669)\",\r\n                        display: \"flex\",\r\n                        alignItems: \"center\",\r\n                        justifyContent: \"center\",\r\n                        color: \"white\",\r\n                        flexShrink: 0,\r\n                        fontSize: \"12px\",\r\n                        animation: \"pulse 2s infinite\",\r\n                        boxShadow: \"0 2px 4px rgba(0, 0, 0, 0.1)\",\r\n                      }}\r\n                    >\r\n                      <HelpCircle size={12} />\r\n                    </div>\r\n                    <div style={{ flex: 1 }}>\r\n                      <div\r\n                        style={{\r\n                          fontSize: \"12px\",\r\n                          fontWeight: \"500\",\r\n                          color: isDark ? \"#10b981\" : \"#059669\",\r\n                          marginBottom: \"2px\",\r\n                        }}\r\n                      >\r\n                        💡 Help is available for this page\r\n                      </div>\r\n                      <div\r\n                        style={{\r\n                          fontSize: \"11px\",\r\n                          color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                          lineHeight: \"1.3\",\r\n                        }}\r\n                      >\r\n                        Click here or the help button in the header to watch contextual help\r\n                      </div>\r\n                    </div>\r\n                  </div>\r\n                )}\r\n              </div>\r\n            )}\r\n          </div>\r\n\r\n          {/* Powered by LeadForward footer */}\r\n          <div\r\n            style={{\r\n              // padding: '12px 16px',\r\n              borderTop: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n              background: isDark ? \"#111827\" : \"#f9fafb\",\r\n              textAlign: \"center\",\r\n            }}\r\n          >\r\n            <a\r\n              href=\"https://leadforward.one\"\r\n              target=\"_blank\"\r\n              rel=\"noopener noreferrer\"\r\n              style={{\r\n                fontSize: \"11px\",\r\n                color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                textDecoration: \"none\",\r\n                transition: \"color 0.2s ease\",\r\n                fontWeight: \"500\",\r\n              }}\r\n              onMouseOver={(e) => {\r\n                e.currentTarget.style.color = config.primaryColor;\r\n              }}\r\n              onMouseOut={(e) => {\r\n                e.currentTarget.style.color = isDark ? \"#9ca3af\" : \"#6b7280\";\r\n              }}\r\n            >\r\n              Powered by LeadForward\r\n            </a>\r\n          </div>\r\n        </div>\r\n      )}\r\n\r\n      {/* Image Editor Modal */}\r\n      {showImageEditor && originalImage && (\r\n        <ImageEditor\r\n          imageData={originalImage}\r\n          onSave={handleImageEditorSave}\r\n          onCancel={handleImageEditorCancel}\r\n          isDark={isDark}\r\n        />\r\n      )}\r\n\r\n      {/* Help Dialog */}\r\n      {showHelpDialog && currentHelpUrl && (\r\n        <div\r\n          style={{\r\n            position: \"fixed\",\r\n            top: 0,\r\n            left: 0,\r\n            right: 0,\r\n            bottom: 0,\r\n            background: \"rgba(0, 0, 0, 0.7)\",\r\n            display: \"flex\",\r\n            alignItems: \"center\",\r\n            justifyContent: \"center\",\r\n            zIndex: 1000000,\r\n            padding: \"20px\",\r\n          }}\r\n        >\r\n          <div\r\n            style={{\r\n              background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n              borderRadius: \"16px\",\r\n              maxWidth: \"90vw\",\r\n              maxHeight: \"90vh\",\r\n              width: \"800px\",\r\n              overflow: \"hidden\",\r\n              boxShadow: \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\",\r\n              border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n            }}\r\n          >\r\n            {/* Header */}\r\n            <div\r\n              style={{\r\n                padding: \"24px\",\r\n                borderBottom: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                display: \"flex\",\r\n                justifyContent: \"space-between\",\r\n                alignItems: \"center\",\r\n              }}\r\n            >\r\n              <div>\r\n                <h3\r\n                  style={{\r\n                    margin: 0,\r\n                    fontSize: \"18px\",\r\n                    fontWeight: \"600\",\r\n                    color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                    marginBottom: \"4px\",\r\n                  }}\r\n                >\r\n                  {(config.customLabels as any).helpDialogTitle ||\r\n                    \"Help & Support\"}\r\n                </h3>\r\n                <p\r\n                  style={{\r\n                    margin: 0,\r\n                    fontSize: \"14px\",\r\n                    color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                  }}\r\n                >\r\n                  {(config.customLabels as any).helpDialogDescription ||\r\n                    \"Watch this helpful video to learn more\"}\r\n                </p>\r\n              </div>\r\n              <button\r\n                onClick={() => setShowHelpDialog(false)}\r\n                style={{\r\n                  background: \"none\",\r\n                  border: \"none\",\r\n                  color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                  cursor: \"pointer\",\r\n                  padding: \"8px\",\r\n                  borderRadius: \"8px\",\r\n                  display: \"flex\",\r\n                  alignItems: \"center\",\r\n                  justifyContent: \"center\",\r\n                  transition: \"all 0.2s\",\r\n                }}\r\n                onMouseOver={(e) => {\r\n                  e.currentTarget.style.background = isDark\r\n                    ? \"#374151\"\r\n                    : \"#f3f4f6\";\r\n                  e.currentTarget.style.color = isDark ? \"#f9fafb\" : \"#111827\";\r\n                }}\r\n                onMouseOut={(e) => {\r\n                  e.currentTarget.style.background = \"none\";\r\n                  e.currentTarget.style.color = isDark ? \"#9ca3af\" : \"#6b7280\";\r\n                }}\r\n              >\r\n                <X size={20} />\r\n              </button>\r\n            </div>\r\n\r\n            {/* Content */}\r\n            <div\r\n              style={{\r\n                padding: \"24px\",\r\n                maxHeight: \"70vh\",\r\n                overflow: \"auto\",\r\n              }}\r\n            >\r\n              {(() => {\r\n                const videoId = getYouTubeVideoId(currentHelpUrl);\r\n                if (videoId) {\r\n                  return (\r\n                    <div\r\n                      style={{\r\n                        position: \"relative\",\r\n                        paddingBottom: \"56.25%\", // 16:9 aspect ratio\r\n                        height: 0,\r\n                        overflow: \"hidden\",\r\n                        borderRadius: \"12px\",\r\n                        background: \"#000\",\r\n                      }}\r\n                    >\r\n                      <iframe\r\n                        src={`https://www.youtube.com/embed/${videoId}?autoplay=0&rel=0&modestbranding=1&controls=1&fs=1&disablekb=0`}\r\n                        style={{\r\n                          position: \"absolute\",\r\n                          top: 0,\r\n                          left: 0,\r\n                          width: \"100%\",\r\n                          height: \"100%\",\r\n                          border: \"none\",\r\n                          borderRadius: \"12px\",\r\n                        }}\r\n                        allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\r\n                        allowFullScreen\r\n                        title=\"Help Video\"\r\n                      />\r\n                    </div>\r\n                  );\r\n                } else {\r\n                  // Fallback for non-YouTube URLs\r\n                  return (\r\n                    <div\r\n                      style={{\r\n                        textAlign: \"center\",\r\n                        padding: \"40px 20px\",\r\n                      }}\r\n                    >\r\n                      <div\r\n                        style={{\r\n                          width: \"64px\",\r\n                          height: \"64px\",\r\n                          borderRadius: \"50%\",\r\n                          background: config.primaryColor,\r\n                          display: \"flex\",\r\n                          alignItems: \"center\",\r\n                          justifyContent: \"center\",\r\n                          margin: \"0 auto 20px\",\r\n                          color: \"white\",\r\n                        }}\r\n                      >\r\n                        <Play size={24} />\r\n                      </div>\r\n                      <h4\r\n                        style={{\r\n                          margin: \"0 0 12px\",\r\n                          fontSize: \"16px\",\r\n                          fontWeight: \"600\",\r\n                          color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                        }}\r\n                      >\r\n                        External Help Resource\r\n                      </h4>\r\n                      <p\r\n                        style={{\r\n                          margin: \"0 0 24px\",\r\n                          fontSize: \"14px\",\r\n                          color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                          lineHeight: \"1.5\",\r\n                        }}\r\n                      >\r\n                        This help resource will open in a new tab.\r\n                      </p>\r\n                      <button\r\n                        onClick={() => {\r\n                          window.open(currentHelpUrl, \"_blank\");\r\n                          setShowHelpDialog(false);\r\n                        }}\r\n                        style={{\r\n                          background: config.primaryColor,\r\n                          color: \"white\",\r\n                          border: \"none\",\r\n                          borderRadius: \"8px\",\r\n                          padding: \"12px 24px\",\r\n                          fontSize: \"14px\",\r\n                          fontWeight: \"500\",\r\n                          cursor: \"pointer\",\r\n                          display: \"flex\",\r\n                          alignItems: \"center\",\r\n                          gap: \"8px\",\r\n                          margin: \"0 auto\",\r\n                          transition: \"all 0.2s\",\r\n                        }}\r\n                        onMouseOver={(e) => {\r\n                          e.currentTarget.style.opacity = \"0.9\";\r\n                          e.currentTarget.style.transform = \"translateY(-1px)\";\r\n                        }}\r\n                        onMouseOut={(e) => {\r\n                          e.currentTarget.style.opacity = \"1\";\r\n                          e.currentTarget.style.transform = \"translateY(0)\";\r\n                        }}\r\n                      >\r\n                        <ExternalLink size={16} />\r\n                        Open Help Resource\r\n                      </button>\r\n                    </div>\r\n                  );\r\n                }\r\n              })()}\r\n            </div>\r\n          </div>\r\n        </div>\r\n      )}\r\n\r\n      {/* Tour Verification Dialog */}\r\n      {showVerificationDialog && (\r\n        <div\r\n          style={{\r\n            position: \"fixed\",\r\n            top: 0,\r\n            left: 0,\r\n            right: 0,\r\n            bottom: 0,\r\n            background: \"rgba(0, 0, 0, 0.7)\",\r\n            display: \"flex\",\r\n            alignItems: \"center\",\r\n            justifyContent: \"center\",\r\n            zIndex: 1000000,\r\n            padding: \"20px\",\r\n          }}\r\n        >\r\n          <div\r\n            style={{\r\n              background: isDark ? \"#1f2937\" : \"#ffffff\",\r\n              borderRadius: \"16px\",\r\n              maxWidth: \"90vw\",\r\n              width: \"480px\",\r\n              overflow: \"hidden\",\r\n              boxShadow: \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\",\r\n              border: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n            }}\r\n          >\r\n            {/* Header */}\r\n            <div\r\n              style={{\r\n                padding: \"24px\",\r\n                borderBottom: `1px solid ${isDark ? \"#374151\" : \"#e5e7eb\"}`,\r\n                display: \"flex\",\r\n                justifyContent: \"space-between\",\r\n                alignItems: \"center\",\r\n              }}\r\n            >\r\n              <div>\r\n                <h3\r\n                  style={{\r\n                    margin: 0,\r\n                    fontSize: \"18px\",\r\n                    fontWeight: \"600\",\r\n                    color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                    marginBottom: \"4px\",\r\n                  }}\r\n                >\r\n                  🔐 Verify Tour Creation\r\n                </h3>\r\n                <p\r\n                  style={{\r\n                    margin: 0,\r\n                    fontSize: \"14px\",\r\n                    color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                  }}\r\n                >\r\n                  Only project owners can create tours\r\n                </p>\r\n              </div>\r\n              <button\r\n                onClick={() => {\r\n                  setShowVerificationDialog(false);\r\n                  resetWidget();\r\n                }}\r\n                style={{\r\n                  background: \"none\",\r\n                  border: \"none\",\r\n                  cursor: \"pointer\",\r\n                  padding: \"8px\",\r\n                  borderRadius: \"6px\",\r\n                  color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                  fontSize: \"20px\",\r\n                  lineHeight: \"1\",\r\n                }}\r\n              >\r\n                ×\r\n              </button>\r\n            </div>\r\n\r\n            {/* Content */}\r\n            <div style={{ padding: \"24px\" }}>\r\n              {!verificationStatus.maskedEmail ? (\r\n                /* Step 1: Request verification code */\r\n                <div>\r\n                  <p\r\n                    style={{\r\n                      margin: \"0 0 20px 0\",\r\n                      fontSize: \"14px\",\r\n                      color: isDark ? \"#d1d5db\" : \"#374151\",\r\n                      lineHeight: \"1.5\",\r\n                    }}\r\n                  >\r\n                    We'll send a verification code to the project owner's email address to confirm you have permission to create tours.\r\n                  </p>\r\n                  \r\n                  {verificationStatus.error && (\r\n                    <div\r\n                      style={{\r\n                        background: isDark ? \"#7f1d1d\" : \"#fee2e2\",\r\n                        color: isDark ? \"#fecaca\" : \"#dc2626\",\r\n                        padding: \"12px\",\r\n                        borderRadius: \"8px\",\r\n                        fontSize: \"14px\",\r\n                        marginBottom: \"16px\",\r\n                      }}\r\n                    >\r\n                      {verificationStatus.error}\r\n                    </div>\r\n                  )}\r\n\r\n                  <button\r\n                    onClick={handleRequestVerificationCode}\r\n                    disabled={verificationStatus.requesting}\r\n                    style={{\r\n                      background: config.primaryColor,\r\n                      color: \"white\",\r\n                      border: \"none\",\r\n                      borderRadius: \"8px\",\r\n                      padding: \"12px 24px\",\r\n                      fontSize: \"14px\",\r\n                      fontWeight: \"500\",\r\n                      cursor: verificationStatus.requesting ? \"not-allowed\" : \"pointer\",\r\n                      opacity: verificationStatus.requesting ? 0.6 : 1,\r\n                      width: \"100%\",\r\n                      display: \"flex\",\r\n                      alignItems: \"center\",\r\n                      justifyContent: \"center\",\r\n                      gap: \"8px\",\r\n                    }}\r\n                  >\r\n                    {verificationStatus.requesting ? (\r\n                      <>\r\n                        <div\r\n                          style={{\r\n                            width: \"16px\",\r\n                            height: \"16px\",\r\n                            border: \"2px solid transparent\",\r\n                            borderTop: \"2px solid white\",\r\n                            borderRadius: \"50%\",\r\n                            animation: \"spin 1s linear infinite\",\r\n                          }}\r\n                        />\r\n                        Sending Code...\r\n                      </>\r\n                    ) : (\r\n                      <>\r\n                        📧 Send Verification Code\r\n                      </>\r\n                    )}\r\n                  </button>\r\n                </div>\r\n              ) : (\r\n                /* Step 2: Enter verification code */\r\n                <div>\r\n                  <p\r\n                    style={{\r\n                      margin: \"0 0 8px 0\",\r\n                      fontSize: \"14px\",\r\n                      color: isDark ? \"#d1d5db\" : \"#374151\",\r\n                      lineHeight: \"1.5\",\r\n                    }}\r\n                  >\r\n                    We've sent a 6-digit verification code to:\r\n                  </p>\r\n                  <p\r\n                    style={{\r\n                      margin: \"0 0 20px 0\",\r\n                      fontSize: \"14px\",\r\n                      fontWeight: \"600\",\r\n                      color: config.primaryColor,\r\n                    }}\r\n                  >\r\n                    {verificationStatus.maskedEmail}\r\n                  </p>\r\n\r\n                  {verificationStatus.error && (\r\n                    <div\r\n                      style={{\r\n                        background: isDark ? \"#7f1d1d\" : \"#fee2e2\",\r\n                        color: isDark ? \"#fecaca\" : \"#dc2626\",\r\n                        padding: \"12px\",\r\n                        borderRadius: \"8px\",\r\n                        fontSize: \"14px\",\r\n                        marginBottom: \"16px\",\r\n                      }}\r\n                    >\r\n                      {verificationStatus.error}\r\n                    </div>\r\n                  )}\r\n\r\n                  <div style={{ marginBottom: \"16px\" }}>\r\n                    <label\r\n                      style={{\r\n                        display: \"block\",\r\n                        fontSize: \"14px\",\r\n                        fontWeight: \"500\",\r\n                        color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                        marginBottom: \"8px\",\r\n                      }}\r\n                    >\r\n                      Verification Code\r\n                    </label>\r\n                    <input\r\n                      type=\"text\"\r\n                      value={verificationCode}\r\n                      onChange={(e) => {\r\n                        const value = e.target.value.replace(/\\D/g, '').slice(0, 6);\r\n                        setVerificationCode(value);\r\n                        // Clear error when user starts typing\r\n                        if (verificationStatus.error) {\r\n                          setVerificationStatus(prev => ({ ...prev, error: null }));\r\n                        }\r\n                      }}\r\n                      placeholder=\"Enter 6-digit code\"\r\n                      style={{\r\n                        width: \"100%\",\r\n                        padding: \"12px\",\r\n                        border: `1px solid ${isDark ? \"#374151\" : \"#d1d5db\"}`,\r\n                        borderRadius: \"8px\",\r\n                        fontSize: \"16px\",\r\n                        fontFamily: \"monospace\",\r\n                        textAlign: \"center\",\r\n                        letterSpacing: \"0.1em\",\r\n                        background: isDark ? \"#374151\" : \"#ffffff\",\r\n                        color: isDark ? \"#f9fafb\" : \"#111827\",\r\n                        outline: \"none\",\r\n                      }}\r\n                      onFocus={(e) => {\r\n                        e.target.style.borderColor = config.primaryColor;\r\n                      }}\r\n                      onBlur={(e) => {\r\n                        e.target.style.borderColor = isDark ? \"#374151\" : \"#d1d5db\";\r\n                      }}\r\n                    />\r\n                  </div>\r\n\r\n                  <div style={{ display: \"flex\", gap: \"12px\" }}>\r\n                    <button\r\n                      onClick={() => {\r\n                        setVerificationStatus(prev => ({\r\n                          ...prev,\r\n                          maskedEmail: null,\r\n                          error: null,\r\n                        }));\r\n                        setVerificationCode(\"\");\r\n                      }}\r\n                      style={{\r\n                        background: \"none\",\r\n                        color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                        border: `1px solid ${isDark ? \"#4b5563\" : \"#d1d5db\"}`,\r\n                        borderRadius: \"8px\",\r\n                        padding: \"12px 16px\",\r\n                        fontSize: \"14px\",\r\n                        fontWeight: \"500\",\r\n                        cursor: \"pointer\",\r\n                        flex: \"1\",\r\n                      }}\r\n                    >\r\n                      Back\r\n                    </button>\r\n                    <button\r\n                      onClick={handleValidateVerificationCode}\r\n                      disabled={verificationStatus.validating || verificationCode.length !== 6}\r\n                      style={{\r\n                        background: config.primaryColor,\r\n                        color: \"white\",\r\n                        border: \"none\",\r\n                        borderRadius: \"8px\",\r\n                        padding: \"12px 16px\",\r\n                        fontSize: \"14px\",\r\n                        fontWeight: \"500\",\r\n                        cursor: (verificationStatus.validating || verificationCode.length !== 6) ? \"not-allowed\" : \"pointer\",\r\n                        opacity: (verificationStatus.validating || verificationCode.length !== 6) ? 0.6 : 1,\r\n                        flex: \"2\",\r\n                        display: \"flex\",\r\n                        alignItems: \"center\",\r\n                        justifyContent: \"center\",\r\n                        gap: \"8px\",\r\n                      }}\r\n                    >\r\n                      {verificationStatus.validating ? (\r\n                        <>\r\n                          <div\r\n                            style={{\r\n                              width: \"16px\",\r\n                              height: \"16px\",\r\n                              border: \"2px solid transparent\",\r\n                              borderTop: \"2px solid white\",\r\n                              borderRadius: \"50%\",\r\n                              animation: \"spin 1s linear infinite\",\r\n                            }}\r\n                          />\r\n                          Verifying...\r\n                        </>\r\n                      ) : (\r\n                        <>\r\n                          ✓ Verify & Create Tour\r\n                        </>\r\n                      )}\r\n                    </button>\r\n                  </div>\r\n\r\n                  <p\r\n                    style={{\r\n                      margin: \"16px 0 0 0\",\r\n                      fontSize: \"12px\",\r\n                      color: isDark ? \"#9ca3af\" : \"#6b7280\",\r\n                      textAlign: \"center\",\r\n                    }}\r\n                  >\r\n                    Code expires in 15 minutes. Check your spam folder if you don't see the email.\r\n                  </p>\r\n                </div>\r\n              )}\r\n            </div>\r\n          </div>\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\n// Main component with QueryClient provider\r\nexport const LeadForwardWidget: React.FC<UpvotyWidgetProps> = (props) => {\r\n  return (\r\n    <QueryClientProvider client={queryClient}>\r\n      <LeadForwardWidgetInternal {...props} />\r\n    </QueryClientProvider>\r\n  );\r\n};\r\n\r\nexport default LeadForwardWidget;\r\n","// Configuration utilities for merging and validating tour configurations\r\n\r\nimport type { LeadForwardConfig, Project, TourConfig } from './types';\r\nimport type { Tour } from './tour-types';\r\n\r\n/**\r\n * Merges project-level tour settings with widget configuration\r\n */\r\nexport function mergeTourConfig(\r\n  widgetConfig: LeadForwardConfig,\r\n  projectData: Project\r\n): TourConfig {\r\n  const projectTourSettings = parseProjectTourSettings(projectData.tourSettings);\r\n  const widgetTourConfig = widgetConfig.tourConfig || {};\r\n\r\n  return {\r\n    enableTours: widgetTourConfig.enableTours ?? projectTourSettings.enableTours ?? false,\r\n    tourTheme: widgetTourConfig.tourTheme ?? projectTourSettings.tourTheme ?? \"inherit\",\r\n    tourPrimaryColor: widgetTourConfig.tourPrimaryColor ?? \r\n                     projectTourSettings.tourPrimaryColor ?? \r\n                     widgetConfig.primaryColor,\r\n    tourAnimationDuration: widgetTourConfig.tourAnimationDuration ?? \r\n                          projectTourSettings.tourAnimationDuration ?? 300,\r\n    tourShowProgress: widgetTourConfig.tourShowProgress ?? \r\n                     projectTourSettings.tourShowProgress ?? true,\r\n    tourAllowClose: widgetTourConfig.tourAllowClose ?? \r\n                   projectTourSettings.tourAllowClose ?? true,\r\n    tourKeyboardControl: widgetTourConfig.tourKeyboardControl ?? \r\n                        projectTourSettings.tourKeyboardControl ?? true,\r\n    tourSmoothScroll: widgetTourConfig.tourSmoothScroll ?? \r\n                     projectTourSettings.tourSmoothScroll ?? true,\r\n  };\r\n}\r\n\r\n/**\r\n * Parses tour settings from project API response\r\n */\r\nfunction parseProjectTourSettings(tourSettings?: string | TourConfig): TourConfig {\r\n  if (!tourSettings) {\r\n    return {};\r\n  }\r\n\r\n  if (typeof tourSettings === 'string') {\r\n    try {\r\n      return JSON.parse(tourSettings) as TourConfig;\r\n    } catch (error) {\r\n      console.warn('Failed to parse project tour settings:', error);\r\n      return {};\r\n    }\r\n  }\r\n\r\n  return tourSettings;\r\n}\r\n\r\n/**\r\n * Validates tour configuration for required fields and proper types\r\n */\r\nexport function validateTourConfig(config: TourConfig): { isValid: boolean; errors: string[] } {\r\n  const errors: string[] = [];\r\n\r\n  if (config.tourAnimationDuration !== undefined) {\r\n    if (typeof config.tourAnimationDuration !== 'number' || config.tourAnimationDuration < 0) {\r\n      errors.push('tourAnimationDuration must be a non-negative number');\r\n    }\r\n  }\r\n\r\n  if (config.tourTheme !== undefined) {\r\n    const validThemes = ['inherit', 'light', 'dark', 'custom'];\r\n    if (!validThemes.includes(config.tourTheme)) {\r\n      errors.push(`tourTheme must be one of: ${validThemes.join(', ')}`);\r\n    }\r\n  }\r\n\r\n  if (config.tourPrimaryColor !== undefined) {\r\n    if (typeof config.tourPrimaryColor !== 'string' || !isValidColor(config.tourPrimaryColor)) {\r\n      errors.push('tourPrimaryColor must be a valid CSS color string');\r\n    }\r\n  }\r\n\r\n  return {\r\n    isValid: errors.length === 0,\r\n    errors\r\n  };\r\n}\r\n\r\n/**\r\n * Validates a tour object for completeness and correctness\r\n */\r\nexport function validateTour(tour: Tour): { isValid: boolean; errors: string[] } {\r\n  const errors: string[] = [];\r\n\r\n  if (!tour.id || typeof tour.id !== 'string') {\r\n    errors.push('Tour must have a valid id');\r\n  }\r\n\r\n  if (!tour.projectId || typeof tour.projectId !== 'string') {\r\n    errors.push('Tour must have a valid projectId');\r\n  }\r\n\r\n  if (!tour.name || typeof tour.name !== 'string') {\r\n    errors.push('Tour must have a valid name');\r\n  }\r\n\r\n  if (!Array.isArray(tour.steps) || tour.steps.length === 0) {\r\n    errors.push('Tour must have at least one step');\r\n  } else {\r\n    tour.steps.forEach((step, index) => {\r\n      const stepErrors = validateTourStep(step);\r\n      if (!stepErrors.isValid) {\r\n        errors.push(`Step ${index + 1}: ${stepErrors.errors.join(', ')}`);\r\n      }\r\n    });\r\n  }\r\n\r\n  if (!Array.isArray(tour.triggers) || tour.triggers.length === 0) {\r\n    errors.push('Tour must have at least one trigger');\r\n  }\r\n\r\n  return {\r\n    isValid: errors.length === 0,\r\n    errors\r\n  };\r\n}\r\n\r\n/**\r\n * Validates a tour step for required fields and proper CSS selectors\r\n */\r\nfunction validateTourStep(step: any): { isValid: boolean; errors: string[] } {\r\n  const errors: string[] = [];\r\n\r\n  if (!step.id || typeof step.id !== 'string') {\r\n    errors.push('Step must have a valid id');\r\n  }\r\n\r\n  if (!step.element || typeof step.element !== 'string') {\r\n    errors.push('Step must have a valid element selector');\r\n  } else if (!isValidCSSSelector(step.element)) {\r\n    errors.push('Step element must be a valid CSS selector');\r\n  }\r\n\r\n  if (!step.title || typeof step.title !== 'string') {\r\n    errors.push('Step must have a valid title');\r\n  }\r\n\r\n  if (!step.description || typeof step.description !== 'string') {\r\n    errors.push('Step must have a valid description');\r\n  }\r\n\r\n  if (step.position !== undefined) {\r\n    const validPositions = ['top', 'bottom', 'left', 'right', 'auto'];\r\n    if (!validPositions.includes(step.position)) {\r\n      errors.push(`Step position must be one of: ${validPositions.join(', ')}`);\r\n    }\r\n  }\r\n\r\n  return {\r\n    isValid: errors.length === 0,\r\n    errors\r\n  };\r\n}\r\n\r\n/**\r\n * Basic CSS color validation\r\n */\r\nfunction isValidColor(color: string): boolean {\r\n  // Basic validation for hex colors, rgb, rgba, hsl, hsla, and named colors\r\n  const colorRegex = /^(#[0-9A-Fa-f]{3,8}|rgb\\(.*\\)|rgba\\(.*\\)|hsl\\(.*\\)|hsla\\(.*\\)|[a-zA-Z]+)$/;\r\n  return colorRegex.test(color);\r\n}\r\n\r\n/**\r\n * Basic CSS selector validation\r\n */\r\nfunction isValidCSSSelector(selector: string): boolean {\r\n  try {\r\n    document.querySelector(selector);\r\n    return true;\r\n  } catch {\r\n    return false;\r\n  }\r\n}"],"names":["getDefaultState","React","jsx","forwardRef","createElement","__iconNode","Map","X","driver","useRef","useState","useEffect","useCallback","_jsxs","Edit3","_jsx","mergeTourConfig","useMemo","HelpCircle","_Fragment"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]}