{"version":3,"sources":["jsdelivr-header.js","/npm/lit-element-simple-context@1.2.7/dist/context.js"],"names":[],"mappings":"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","file":"/npm/lit-element-simple-context@1.2.7/dist/context.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/lit-element-simple-context@1.2.7/dist/context.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nimport Observer from './observer.js';\n/**\n * @typedef { import('../global.d.ts')} placeHolder overrides the consumers global types\n * @typedef { import('../types/devtools-options').DevToolsOptions } devToolsOptions\n * @typedef {import('lit-element').LitElement} LitElement\n * @typedef {typeof import('lit-element').LitElement} LitClass\n */\n/**\n * @template {{}} TState\n */\nexport class Context {\n    constructor() {\n        this.prefix = '#_lit-context_';\n        /** @type {TState} */\n        this.state = null;\n        this.reduxDevTools = null;\n        /** @type {Object.<string, Set<Observer>>} */\n        this.observers = {};\n    }\n    /**\n     * @param { TState } state\n     * @param { boolean } [enableDevTools]\n     * @param { devToolsOptions } [devToolsOptions]\n     */\n    init(state, enableDevTools = false, devToolsOptions = { target: window }) {\n        this.state = state;\n        if (enableDevTools) {\n            const { target = window } = devToolsOptions, options = __rest(devToolsOptions, [\"target\"]);\n            if (target.__REDUX_DEVTOOLS_EXTENSION__) {\n                this.reduxDevTools = target.__REDUX_DEVTOOLS_EXTENSION__.connect(options);\n                this.reduxDevTools.init(state);\n            }\n        }\n    }\n    /**\n     * @private\n     * @param {LitClass} component\n     * @return {{[propName: string]: any}}\n     */\n    static getProperties(component) {\n        if ('elementProperties' in component) {\n            return Array.from(/** @type {Iterable<any>} */ (component.elementProperties));\n        }\n        return Object.entries(component.properties);\n    }\n    /**\n     * @private\n     * @param {LitClass} component\n     * @param {LitElement} componentInstance\n     */\n    register(component, componentInstance) {\n        const properties = Context.getProperties(component);\n        properties.forEach(([aliasName, property]) => {\n            if (property.fromContext) {\n                const key = 'contextKey' in property ? property.contextKey : aliasName;\n                if (!(key in this.observers)) {\n                    this.observers[key] = new Set();\n                }\n                const observer = new Observer(aliasName, componentInstance);\n                this.observers[key].add(observer);\n                componentInstance[this.getKey(key)] = observer;\n                if (key in this.state) {\n                    componentInstance[aliasName] = this.state[key];\n                }\n            }\n        });\n    }\n    /**\n     *\n     * @private\n     * @param {LitClass} component\n     * @param {LitElement} componentInstance\n     */\n    deregister(component, componentInstance) {\n        const properties = Context.getProperties(component);\n        properties.forEach(([aliasName, value]) => {\n            if (value.fromContext) {\n                const key = 'contextKey' in value ? value.contextKey : aliasName;\n                this.observers[key].delete(componentInstance[this.getKey(key)]);\n            }\n        });\n    }\n    /**\n     * @private\n     * @param {string} key\n     * @returns {string}\n     */\n    getKey(key) {\n        return `${this.prefix}${key}`;\n    }\n    /**\n     *\n     * @param {string} propName\n     * @param {any} value\n     * @param {boolean} propsCalled\n     */\n    setProp(propName, value, propsCalled = false) {\n        this.state[propName] = value;\n        if (!propsCalled && this.reduxDevTools) {\n            this.reduxDevTools.send('setProp', Object.assign({}, this.state));\n        }\n        if (propName in this.observers) {\n            for (const { component, aliasName } of this.observers[propName]) {\n                component[aliasName] = value;\n            }\n        }\n    }\n    /**\n     *\n     * @param {Object<string, any>} props\n     * @param {string} [actionName]\n     */\n    setProps(props, actionName = 'setProp') {\n        Object.entries(props).forEach(([propName, value]) => {\n            this.setProp(propName, value, true);\n        });\n        if (this.reduxDevTools) {\n            this.reduxDevTools.send(actionName, Object.assign({}, this.state));\n        }\n    }\n    /**\n     *\n     * @param {(state: TState, ...params: any[]) => Partial<TState>} callback\n     * @param {string} [actionName]\n     * @returns {(...params: any[]) => void}\n     */\n    action(callback, actionName) {\n        return (...params) => {\n            const nextState = callback(this.state, ...params);\n            this.setProps(nextState, callback.name || actionName);\n        };\n    }\n    /**\n     *\n     * @param {(state: TState, ...params: any[]) => Promise<Partial<TState>>} callback\n     * @returns { (...params: any[]) => Promise<void> }\n     */\n    asyncAction(callback) {\n        return (...params) => __awaiter(this, void 0, void 0, function* () {\n            const nextState = yield callback(this.state, ...params);\n            this.setProps(nextState);\n        });\n    }\n    /**\n     *\n     * @param {LitClass} superClass\n     */\n    connect(superClass) {\n        const context = this;\n        return class extends superClass {\n            constructor() {\n                super();\n                context.register(superClass, this);\n            }\n            disconnectedCallback() {\n                context.deregister(superClass, this);\n                super.disconnectedCallback();\n            }\n            /**\n             *\n             * @param {string} propName\n             * @param {any} value\n             */\n            setProp(propName, value) {\n                context.setProp(propName, value);\n            }\n            /**\n             * Accepts key-value pairs\n             *\n             * @param { Partial<TState> } props\n             */\n            setProps(props) {\n                context.setProps(props);\n            }\n        };\n    }\n    /**\n     *\n     * Decorator for ts-lit\n     * @returns { (clazz: any) => any }\n     */\n    connectElement() {\n        return clazz => this.connect(clazz);\n    }\n}\nexport default new Context();\n"]}