lido-standalone 0.0.0-beta-17 → 0.0.0-beta-17-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.editorconfig CHANGED
@@ -1,15 +1,15 @@
1
- # http://editorconfig.org
2
-
3
- root = true
4
-
5
- [*]
6
- charset = utf-8
7
- indent_style = space
8
- indent_size = 2
9
- end_of_line = lf
10
- insert_final_newline = true
11
- trim_trailing_whitespace = true
12
-
13
- [*.md]
14
- insert_final_newline = false
15
- trim_trailing_whitespace = false
1
+ # http://editorconfig.org
2
+
3
+ root = true
4
+
5
+ [*]
6
+ charset = utf-8
7
+ indent_style = space
8
+ indent_size = 2
9
+ end_of_line = lf
10
+ insert_final_newline = true
11
+ trim_trailing_whitespace = true
12
+
13
+ [*.md]
14
+ insert_final_newline = false
15
+ trim_trailing_whitespace = false
package/.prettierrc.json CHANGED
@@ -1,13 +1,13 @@
1
- {
2
- "arrowParens": "avoid",
3
- "bracketSpacing": true,
4
- "jsxBracketSameLine": false,
5
- "jsxSingleQuote": false,
6
- "quoteProps": "consistent",
7
- "printWidth": 180,
8
- "semi": true,
9
- "singleQuote": true,
10
- "tabWidth": 2,
11
- "trailingComma": "all",
12
- "useTabs": false
13
- }
1
+ {
2
+ "arrowParens": "avoid",
3
+ "bracketSpacing": true,
4
+ "jsxBracketSameLine": false,
5
+ "jsxSingleQuote": false,
6
+ "quoteProps": "consistent",
7
+ "printWidth": 180,
8
+ "semi": true,
9
+ "singleQuote": true,
10
+ "tabWidth": 2,
11
+ "trailingComma": "all",
12
+ "useTabs": false
13
+ }
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2019
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1
+ MIT License
2
+
3
+ Copyright (c) 2019
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
@@ -1 +1 @@
1
- {"file":"index.cjs.js","mappings":"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","names":["getRenderingRef","forceUpdate"],"sources":["node_modules/@stencil/store/dist/index.mjs","node_modules/stencil-router-v2/dist/index.mjs","src/index.ts"],"sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n let states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(defaultState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n const unReset = on('reset', () => cb(defaultState[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import { Build } from '@stencil/core';\nimport { createStore } from '@stencil/store';\n\nlet defaultRouter;\nconst createRouter = (opts) => {\n var _a;\n const win = window;\n const url = new URL(win.location.href);\n const parseURL = (_a = opts === null || opts === void 0 ? void 0 : opts.parseURL) !== null && _a !== void 0 ? _a : DEFAULT_PARSE_URL;\n const { state, onChange, dispose } = createStore({\n url,\n activePath: parseURL(url)\n }, (newV, oldV, prop) => {\n if (prop === 'url') {\n return newV.href !== oldV.href;\n }\n return newV !== oldV;\n });\n const push = (href) => {\n history.pushState(null, null, href);\n const url = new URL(href, document.baseURI);\n state.url = url;\n state.activePath = parseURL(url);\n };\n const match = (routes) => {\n const { activePath } = state;\n for (let route of routes) {\n const params = matchPath(activePath, route.path);\n if (params) {\n if (route.to != null) {\n const to = (typeof route.to === 'string')\n ? route.to\n : route.to(activePath);\n push(to);\n return match(routes);\n }\n else {\n return { params, route };\n }\n }\n }\n return undefined;\n };\n const navigationChanged = () => {\n const url = new URL(win.location.href);\n state.url = url;\n state.activePath = parseURL(url);\n };\n const Switch = (_, childrenRoutes) => {\n const result = match(childrenRoutes);\n if (result) {\n if (typeof result.route.jsx === 'function') {\n return result.route.jsx(result.params);\n }\n else {\n return result.route.jsx;\n }\n }\n };\n const disposeRouter = () => {\n defaultRouter = undefined;\n win.removeEventListener('popstate', navigationChanged);\n dispose();\n };\n const router = defaultRouter = {\n Switch,\n get url() {\n return state.url;\n },\n get activePath() {\n return state.activePath;\n },\n push,\n onChange: onChange,\n dispose: disposeRouter,\n };\n // Initial update\n navigationChanged();\n // Listen URL changes\n win.addEventListener('popstate', navigationChanged);\n return router;\n};\nconst Route = (props, children) => {\n var _a;\n if ('to' in props) {\n return {\n path: props.path,\n to: props.to,\n };\n }\n if (Build.isDev && props.render && children.length > 0) {\n console.warn('Route: if `render` is provided, the component should not have any children');\n }\n return {\n path: props.path,\n id: props.id,\n jsx: (_a = props.render) !== null && _a !== void 0 ? _a : children,\n };\n};\nconst href = (href, router = defaultRouter) => {\n if (Build.isDev && !router) {\n throw new Error('Router must be defined in href');\n }\n return {\n href,\n onClick: (ev) => {\n if (ev.metaKey || ev.ctrlKey) {\n return;\n }\n if (ev.which == 2 || ev.button == 1) {\n return;\n }\n ev.preventDefault();\n router.push(href);\n },\n };\n};\nconst matchPath = (pathname, path) => {\n if (typeof path === 'string') {\n if (path === pathname) {\n return {};\n }\n }\n else if (typeof path === 'function') {\n const params = path(pathname);\n if (params) {\n return params === true\n ? {}\n : { ...params };\n }\n }\n else {\n const results = path.exec(pathname);\n if (results) {\n path.lastIndex = 0;\n return { ...results };\n }\n }\n return undefined;\n};\nconst DEFAULT_PARSE_URL = (url) => {\n return url.pathname.toLowerCase();\n};\nconst NotFound = () => ({});\n\n/**\n * TS adaption of https://github.com/pillarjs/path-to-regexp/blob/master/index.js\n */\n/**\n * Default configs.\n */\nconst DEFAULT_DELIMITER = '/';\nconst DEFAULT_DELIMITERS = './';\n/**\n * The main path matching regexp utility.\n */\nconst PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\"]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g');\n/**\n * Parse a string for the raw tokens.\n */\nconst parse = (str, options) => {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER;\n var delimiters = (options && options.delimiters) || DEFAULT_DELIMITERS;\n var pathEscaped = false;\n var res;\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n pathEscaped = true;\n continue;\n }\n var prev = '';\n var next = str[index];\n var name = res[2];\n var capture = res[3];\n var group = res[4];\n var modifier = res[5];\n if (!pathEscaped && path.length) {\n var k = path.length - 1;\n if (delimiters.indexOf(path[k]) > -1) {\n prev = path[k];\n path = path.slice(0, k);\n }\n }\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n pathEscaped = false;\n }\n var partial = prev !== '' && next !== undefined && next !== prev;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = prev || defaultDelimiter;\n var pattern = capture || group;\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n pattern: pattern ? escapeGroup(pattern) : '[^' + escapeString(delimiter) + ']+?'\n });\n }\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index));\n }\n return tokens;\n};\n/**\n * Escape a regular expression string.\n */\nconst escapeString = (str) => {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1');\n};\n/**\n * Escape the capturing group by escaping special characters and meaning.\n */\nconst escapeGroup = (group) => {\n return group.replace(/([=!:$/()])/g, '\\\\$1');\n};\n/**\n * Get the flags for a regexp from the options.\n */\nconst flags = (options) => {\n return options && options.sensitive ? '' : 'i';\n};\n/**\n * Pull out keys from a regexp.\n */\nconst regexpToRegexp = (path, keys) => {\n if (!keys)\n return path;\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n pattern: null\n });\n }\n }\n return path;\n};\n/**\n * Transform an array into a regexp.\n */\nconst arrayToRegexp = (path, keys, options) => {\n var parts = [];\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n return new RegExp('(?:' + parts.join('|') + ')', flags(options));\n};\n/**\n * Create a path regexp from string input.\n */\nconst stringToRegexp = (path, keys, options) => {\n return tokensToRegExp(parse(path, options), keys, options);\n};\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nconst tokensToRegExp = (tokens, keys, options) => {\n options = options || {};\n var strict = options.strict;\n var end = options.end !== false;\n var delimiter = escapeString(options.delimiter || DEFAULT_DELIMITER);\n var delimiters = options.delimiters || DEFAULT_DELIMITERS;\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|');\n var route = '';\n var isEndDelimited = false;\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === 'string') {\n route += escapeString(token);\n isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1;\n }\n else {\n var prefix = escapeString(token.prefix || '');\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + prefix + '(?:' + token.pattern + '))*'\n : token.pattern;\n if (keys)\n keys.push(token);\n if (token.optional) {\n if (token.partial) {\n route += prefix + '(' + capture + ')?';\n }\n else {\n route += '(?:' + prefix + '(' + capture + '))?';\n }\n }\n else {\n route += prefix + '(' + capture + ')';\n }\n }\n }\n if (end) {\n if (!strict)\n route += '(?:' + delimiter + ')?';\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')';\n }\n else {\n if (!strict)\n route += '(?:' + delimiter + '(?=' + endsWith + '))?';\n if (!isEndDelimited)\n route += '(?=' + delimiter + '|' + endsWith + ')';\n }\n return new RegExp('^' + route, flags(options));\n};\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nconst pathToRegexp = (path, keys, options) => {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys);\n }\n if (Array.isArray(path)) {\n return arrayToRegexp(path, keys, options);\n }\n return stringToRegexp(path, keys, options);\n};\n\nlet cacheCount = 0;\nconst patternCache = {};\nconst cacheLimit = 10000;\n// Memoized function for creating the path match regex\nconst compilePath = (pattern, options) => {\n const cacheKey = `${options.end}${options.strict}`;\n const cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n const cachePattern = JSON.stringify(pattern);\n if (cache[cachePattern]) {\n return cache[cachePattern];\n }\n const keys = [];\n const re = pathToRegexp(pattern, keys, options);\n const compiledPattern = { re, keys };\n if (cacheCount < cacheLimit) {\n cache[cachePattern] = compiledPattern;\n cacheCount += 1;\n }\n return compiledPattern;\n};\nconst match = (pathname, options = {}) => {\n const { exact = false, strict = false } = options;\n const { re, keys } = compilePath(pathname, { end: exact, strict });\n return (path) => {\n const match = re.exec(path);\n if (!match) {\n return undefined;\n }\n const [url, ...values] = match;\n const isExact = path === url;\n if (exact && !isExact) {\n return undefined;\n }\n return keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {});\n };\n};\n\nexport { NotFound, Route, createRouter, href, match };\n","import { createRouter } from 'stencil-router-v2';\n\nexport { Components, JSX } from './components';\n\nexport const Router = createRouter();\n"],"version":3}
1
+ {"file":"index.cjs.js","mappings":"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","names":["getRenderingRef","forceUpdate"],"sources":["node_modules/@stencil/store/dist/index.mjs","node_modules/stencil-router-v2/dist/index.mjs","src/index.ts"],"sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n let states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(defaultState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n const unReset = on('reset', () => cb(defaultState[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import { Build } from '@stencil/core';\nimport { createStore } from '@stencil/store';\n\nlet defaultRouter;\nconst createRouter = (opts) => {\n var _a;\n const win = window;\n const url = new URL(win.location.href);\n const parseURL = (_a = opts === null || opts === void 0 ? void 0 : opts.parseURL) !== null && _a !== void 0 ? _a : DEFAULT_PARSE_URL;\n const { state, onChange, dispose } = createStore({\n url,\n activePath: parseURL(url)\n }, (newV, oldV, prop) => {\n if (prop === 'url') {\n return newV.href !== oldV.href;\n }\n return newV !== oldV;\n });\n const push = (href) => {\n history.pushState(null, null, href);\n const url = new URL(href, document.baseURI);\n state.url = url;\n state.activePath = parseURL(url);\n };\n const match = (routes) => {\n const { activePath } = state;\n for (let route of routes) {\n const params = matchPath(activePath, route.path);\n if (params) {\n if (route.to != null) {\n const to = (typeof route.to === 'string')\n ? route.to\n : route.to(activePath);\n push(to);\n return match(routes);\n }\n else {\n return { params, route };\n }\n }\n }\n return undefined;\n };\n const navigationChanged = () => {\n const url = new URL(win.location.href);\n state.url = url;\n state.activePath = parseURL(url);\n };\n const Switch = (_, childrenRoutes) => {\n const result = match(childrenRoutes);\n if (result) {\n if (typeof result.route.jsx === 'function') {\n return result.route.jsx(result.params);\n }\n else {\n return result.route.jsx;\n }\n }\n };\n const disposeRouter = () => {\n defaultRouter = undefined;\n win.removeEventListener('popstate', navigationChanged);\n dispose();\n };\n const router = defaultRouter = {\n Switch,\n get url() {\n return state.url;\n },\n get activePath() {\n return state.activePath;\n },\n push,\n onChange: onChange,\n dispose: disposeRouter,\n };\n // Initial update\n navigationChanged();\n // Listen URL changes\n win.addEventListener('popstate', navigationChanged);\n return router;\n};\nconst Route = (props, children) => {\n var _a;\n if ('to' in props) {\n return {\n path: props.path,\n to: props.to,\n };\n }\n if (Build.isDev && props.render && children.length > 0) {\n console.warn('Route: if `render` is provided, the component should not have any children');\n }\n return {\n path: props.path,\n id: props.id,\n jsx: (_a = props.render) !== null && _a !== void 0 ? _a : children,\n };\n};\nconst href = (href, router = defaultRouter) => {\n if (Build.isDev && !router) {\n throw new Error('Router must be defined in href');\n }\n return {\n href,\n onClick: (ev) => {\n if (ev.metaKey || ev.ctrlKey) {\n return;\n }\n if (ev.which == 2 || ev.button == 1) {\n return;\n }\n ev.preventDefault();\n router.push(href);\n },\n };\n};\nconst matchPath = (pathname, path) => {\n if (typeof path === 'string') {\n if (path === pathname) {\n return {};\n }\n }\n else if (typeof path === 'function') {\n const params = path(pathname);\n if (params) {\n return params === true\n ? {}\n : { ...params };\n }\n }\n else {\n const results = path.exec(pathname);\n if (results) {\n path.lastIndex = 0;\n return { ...results };\n }\n }\n return undefined;\n};\nconst DEFAULT_PARSE_URL = (url) => {\n return url.pathname.toLowerCase();\n};\nconst NotFound = () => ({});\n\n/**\n * TS adaption of https://github.com/pillarjs/path-to-regexp/blob/master/index.js\n */\n/**\n * Default configs.\n */\nconst DEFAULT_DELIMITER = '/';\nconst DEFAULT_DELIMITERS = './';\n/**\n * The main path matching regexp utility.\n */\nconst PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\"]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g');\n/**\n * Parse a string for the raw tokens.\n */\nconst parse = (str, options) => {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER;\n var delimiters = (options && options.delimiters) || DEFAULT_DELIMITERS;\n var pathEscaped = false;\n var res;\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n pathEscaped = true;\n continue;\n }\n var prev = '';\n var next = str[index];\n var name = res[2];\n var capture = res[3];\n var group = res[4];\n var modifier = res[5];\n if (!pathEscaped && path.length) {\n var k = path.length - 1;\n if (delimiters.indexOf(path[k]) > -1) {\n prev = path[k];\n path = path.slice(0, k);\n }\n }\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n pathEscaped = false;\n }\n var partial = prev !== '' && next !== undefined && next !== prev;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = prev || defaultDelimiter;\n var pattern = capture || group;\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n pattern: pattern ? escapeGroup(pattern) : '[^' + escapeString(delimiter) + ']+?'\n });\n }\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index));\n }\n return tokens;\n};\n/**\n * Escape a regular expression string.\n */\nconst escapeString = (str) => {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1');\n};\n/**\n * Escape the capturing group by escaping special characters and meaning.\n */\nconst escapeGroup = (group) => {\n return group.replace(/([=!:$/()])/g, '\\\\$1');\n};\n/**\n * Get the flags for a regexp from the options.\n */\nconst flags = (options) => {\n return options && options.sensitive ? '' : 'i';\n};\n/**\n * Pull out keys from a regexp.\n */\nconst regexpToRegexp = (path, keys) => {\n if (!keys)\n return path;\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n pattern: null\n });\n }\n }\n return path;\n};\n/**\n * Transform an array into a regexp.\n */\nconst arrayToRegexp = (path, keys, options) => {\n var parts = [];\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n return new RegExp('(?:' + parts.join('|') + ')', flags(options));\n};\n/**\n * Create a path regexp from string input.\n */\nconst stringToRegexp = (path, keys, options) => {\n return tokensToRegExp(parse(path, options), keys, options);\n};\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nconst tokensToRegExp = (tokens, keys, options) => {\n options = options || {};\n var strict = options.strict;\n var end = options.end !== false;\n var delimiter = escapeString(options.delimiter || DEFAULT_DELIMITER);\n var delimiters = options.delimiters || DEFAULT_DELIMITERS;\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|');\n var route = '';\n var isEndDelimited = false;\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === 'string') {\n route += escapeString(token);\n isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1;\n }\n else {\n var prefix = escapeString(token.prefix || '');\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + prefix + '(?:' + token.pattern + '))*'\n : token.pattern;\n if (keys)\n keys.push(token);\n if (token.optional) {\n if (token.partial) {\n route += prefix + '(' + capture + ')?';\n }\n else {\n route += '(?:' + prefix + '(' + capture + '))?';\n }\n }\n else {\n route += prefix + '(' + capture + ')';\n }\n }\n }\n if (end) {\n if (!strict)\n route += '(?:' + delimiter + ')?';\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')';\n }\n else {\n if (!strict)\n route += '(?:' + delimiter + '(?=' + endsWith + '))?';\n if (!isEndDelimited)\n route += '(?=' + delimiter + '|' + endsWith + ')';\n }\n return new RegExp('^' + route, flags(options));\n};\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nconst pathToRegexp = (path, keys, options) => {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys);\n }\n if (Array.isArray(path)) {\n return arrayToRegexp(path, keys, options);\n }\n return stringToRegexp(path, keys, options);\n};\n\nlet cacheCount = 0;\nconst patternCache = {};\nconst cacheLimit = 10000;\n// Memoized function for creating the path match regex\nconst compilePath = (pattern, options) => {\n const cacheKey = `${options.end}${options.strict}`;\n const cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n const cachePattern = JSON.stringify(pattern);\n if (cache[cachePattern]) {\n return cache[cachePattern];\n }\n const keys = [];\n const re = pathToRegexp(pattern, keys, options);\n const compiledPattern = { re, keys };\n if (cacheCount < cacheLimit) {\n cache[cachePattern] = compiledPattern;\n cacheCount += 1;\n }\n return compiledPattern;\n};\nconst match = (pathname, options = {}) => {\n const { exact = false, strict = false } = options;\n const { re, keys } = compilePath(pathname, { end: exact, strict });\n return (path) => {\n const match = re.exec(path);\n if (!match) {\n return undefined;\n }\n const [url, ...values] = match;\n const isExact = path === url;\n if (exact && !isExact) {\n return undefined;\n }\n return keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {});\n };\n};\n\nexport { NotFound, Route, createRouter, href, match };\n","import { createRouter } from 'stencil-router-v2';\r\n\r\nexport { Components, JSX } from './components';\r\n\r\nexport const Router = createRouter();\r\n"],"version":3}
@@ -246,7 +246,7 @@ const LidoStandalone = class {
246
246
  * This ensures the custom elements are defined before usage.
247
247
  */
248
248
  const lang = this.language || 'en';
249
- return index.h("lido-home", { key: '52fd8d3879919dbba73d4c687f2d540f0e4e601f', "common-audio-path": this.commonAudioPath, "initial-index": this.initialIndex, canplay: this.canplay, height: this.height, lang: lang, "xml-data": this.localXmlData, "base-url": this.xmlBaseUrl, "code-folder-path": this.codeFolderPath, "zip-url": this.zipUrl });
249
+ return index.h("lido-home", { key: 'afe85322de2d836085e05da9c829eb0a0ec4a28d', "common-audio-path": this.commonAudioPath, "initial-index": this.initialIndex, canplay: this.canplay, height: this.height, lang: lang, "xml-data": this.localXmlData, "base-url": this.xmlBaseUrl, "code-folder-path": this.codeFolderPath, "zip-url": this.zipUrl });
250
250
  }
251
251
  get hostElement() { return index.getElement(this); }
252
252
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"lido-standalone.entry.cjs.js","mappings":"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","names":["h"],"sources":["src/components/lido-standalone/lido-standalone.css?tag=lido-standalone","src/components/lido-standalone/lido-standalone.tsx"],"sourcesContent":["","import { Component, Element, Prop, State, Watch, h } from '@stencil/core';\n\n/**\n * <lido-standalone> usage example:\n *\n * <lido-standalone\n * base-url=\"https://example.com/path/to/folder/lido-game\"\n * xml-path=\"https://example.com/path/to/folder/lido-game/assets/xmlData.xml\"\n * initial-index=\"2\"\n * canplay=\"true\"\n * height=\"75vh\"\n * ></lido-standalone>\n *\n * This attempts to load the external Lido scripts at runtime (from `baseUrl`).\n * If they aren't found, it falls back to loading the Lido npm package\n * and calls defineCustomElements(...) to register <lido-home>.\n */\n@Component({\n tag: 'lido-standalone',\n styleUrl: 'lido-standalone.css',\n shadow: false,\n})\nexport class LidoStandalone {\n @Element() hostElement!: HTMLElement;\n\n /**\n * The public URL where the unzipped Lido code is hosted, e.g.\n * \"https://example.com/path/to/lido-game\".\n *\n * Inside that folder, we expect:\n * - code/lido-player.esm.js\n * - code/lido-player.js\n * - assets/ (optional)\n */\n @Prop() baseUrl: string = '';\n\n /**\n * If provided, we'll fetch this XML path once and pass the loaded string\n * to <lido-home>'s `xml-data` attribute.\n */\n @Prop() xmlPath?: string;\n\n /** The initial index to pass down to <lido-home>. Defaults to 0. */\n @Prop() initialIndex: number = 0;\n\n /** Whether the <lido-home> can play. Defaults to false. */\n @Prop() canplay: boolean = false;\n\n /** The height prop to pass to <lido-home>. Defaults to \"75vh\". */\n @Prop() height: string = '75vh';\n\n /** The language prop to pass to <lido-home>. */\n @Prop() language?: string;\n\n /**\n * Optional prop for directly providing XML data instead of fetching.\n */\n @Prop() xmlData?: string;\n\n /**\n * To pass zip file directly to <lido-home> as its attribute.\n */\n @Prop() zipUrl?: string;\n\n /**\n * If provided(in index.html) → tries versioned script loading from config.json.\n * If no version is found → automatically falls back to default player loading.\n * If not provided → version management is skipped entirely and falls back to default player loading.\n */\n @Prop() codeFolderPath?: string;\n\n @Prop() commonAudioPath?: string;\n\n /** Whether scripts are already injected (remote or fallback). */\n @State() scriptsInjected: boolean = false;\n\n /** Stores the fetched or provided XML data. */\n @State() localXmlData?: string;\n\n /** This might be used by <lido-home> if referencing assets. */\n @State() xmlBaseUrl?: string;\n\n // Re-inject scripts if the baseUrl changes\n @Watch('baseUrl')\n onBaseUrlChange() {\n this.injectLidoScripts();\n }\n\n // Re-fetch XML if the xmlPath changes\n @Watch('xmlPath')\n onXmlPathChange() {\n this.fetchXmlData();\n }\n\n // Re-apply inline XML whenever the host prop changes.\n @Watch('xmlData')\n onXmlDataChange() {\n this.fetchXmlData();\n }\n\n componentWillLoad() {\n // 1) Attempt to inject the Lido scripts from baseUrl\n this.injectLidoScripts();\n // 2) Fetch the XML (or use the xmlData if provided)\n this.fetchXmlData();\n }\n\n private async injectLidoScripts() {\n console.log('injectLidoScripts() called. baseUrl=', this.baseUrl);\n\n // If no baseUrl is provided OR we already injected scripts, just go to fallback\n if (!this.baseUrl) {\n console.warn('lido-standalone: No baseUrl provided. Using npm fallback...');\n this.fallbackNpmImport();\n return;\n }\n if (this.scriptsInjected) {\n return;\n }\n\n // Synchronously check if remote ESM script exists at baseUrl/code/lido-player.esm.js\n const cleanBase = this.baseUrl.replace(/\\/+$/, '');\n const scriptCheckUrl = `${cleanBase}/code/lido-player.esm.js`;\n const fileExists = this.doesFileExistSync(scriptCheckUrl);\n\n // --------------- CASE: NO codeFolderPath PROVIDED ---------------\n // Try loading version from default /code_versions folder\n // --------------- SINGLE CASE: codeFolderPath PROVIDED ---------------\n\n if (fileExists) {\n console.log(\"Using code from zip....\")\n // If it exists, inject them\n const scriptEsm = document.createElement('script');\n scriptEsm.type = 'module';\n scriptEsm.src = scriptCheckUrl;\n document.head.appendChild(scriptEsm);\n // (Optional) NoModule script for older browsers\n const scriptNoModule = document.createElement('script');\n scriptNoModule.setAttribute('nomodule', '');\n scriptNoModule.src = `${cleanBase}/code/lido-player.js`;\n document.head.appendChild(scriptNoModule);\n this.scriptsInjected = true;\n console.debug('Lido scripts injected from:', this.baseUrl);\n return;\n }\n \n if (this.codeFolderPath) {\n const cleanBase = this.baseUrl.replace(/\\/+$/, \"\");\n try {\n const lessonCfgUrl = `${cleanBase}/config.json`;\n try {\n // 1️⃣ Load lesson config.json safely\n let lessonCfg: any = {};\n let lessonVersion: string | null = null;\n\n try {\n const lessonResp = await fetch(lessonCfgUrl);\n if (!lessonResp.ok) throw new Error(\"Lesson config.json missing\");\n\n // Check for empty file (0 bytes)\n const text = await lessonResp.text();\n if (text.trim().length > 0) {\n lessonCfg = JSON.parse(text);\n } else {\n console.warn(\"Lesson config.json is EMPTY → falling back to latest version\");\n }\n\n lessonVersion = lessonCfg.code_version;\n console.log(`%c USING THE VERSION FOLDER--> ${lessonVersion} `,\"color: #3bffe8ff; background:#d32f2f; font-size: 15px; font-weight: bold; padding: 6px 10px; border-radius: 4px;\");\n\n } catch (parseErr) {\n console.warn(\"Lesson config.json invalid or unreadable → fallback to latest version\");\n lessonVersion = null;\n }\n\n // Normalize invalid versions\n if (!lessonVersion || typeof lessonVersion !== \"string\" || lessonVersion.trim() === \"\") {\n console.warn(\"Lesson has NO valid codeVersion → using latest version in code-folder-path\");\n lessonVersion = null;\n }\n\n // 2️⃣ Load version list from code-folder-path/config.json\n const codeCfgUrl = `${this.codeFolderPath.replace(/\\/+$/, '')}/config.json`;\n const codeResp = await fetch(codeCfgUrl);\n if (!codeResp.ok) throw new Error(\"Code-folder config.json missing\");\n\n const codeCfg = await codeResp.json();\n const availableVersions: string[] = codeCfg.versions || [];\n\n if (!availableVersions.length) {\n throw new Error(\"No versions listed in code-folder config.json\");\n }\n\n // 3️⃣ Compute selected version\n let selectedVersion: string | undefined = null;\n\n if (lessonVersion) {\n selectedVersion = availableVersions.find(v => v.includes(lessonVersion));\n }\n\n // Fallback: use latest version\n if (!selectedVersion) {\n selectedVersion = availableVersions[availableVersions.length - 1];\n console.log(`%c USING THE LATEST VERSION FOLDER-> ${selectedVersion} `,\"color: #3bffe8ff; background:#d32f2f; font-size: 15px; font-weight: bold; padding: 6px 10px; border-radius: 4px;\");\n }\n\n // 4️⃣ Inject scripts\n const versionDir = `${this.codeFolderPath}/${selectedVersion}`;\n const esmUrl = `${versionDir}/lido-player.esm.js`;\n const noModuleUrl = `${versionDir}/lido-player.js`;\n\n // Check if version folder exists\n const headCheck = await fetch(esmUrl, { method: \"HEAD\" });\n if (!headCheck.ok) throw new Error(`Versioned script missing: ${esmUrl}`);\n\n // Inject main module file\n const scriptEsm = document.createElement(\"script\");\n scriptEsm.type = \"module\";\n scriptEsm.src = esmUrl;\n document.head.appendChild(scriptEsm);\n\n // Inject fallback nomodule script\n const scriptNoModule = document.createElement(\"script\");\n scriptNoModule.setAttribute(\"nomodule\", \"\");\n scriptNoModule.src = noModuleUrl;\n document.head.appendChild(scriptNoModule);\n\n this.scriptsInjected = true;\n console.debug(\"Loaded Lido version from:\", versionDir);\n\n }catch (err) {\n console.warn(\"Failed to load versioned scripts, falling back to npm:\", err);\n this.fallbackNpmImport();\n } \n } catch (err) {\n console.warn(\"Failed loading scripts → fallback to npm:\", err);\n this.fallbackNpmImport();\n }\n return;\n }\n this.fallbackNpmImport();\n }\n\n /**\n * Checks if a file truly exists (not a dev-server fallback).\n * Ensures:\n * - HTTP HEAD returns 2xx\n * - responseURL matches the requested URL\n */\nprivate doesFileExistSync(url: string): boolean {\n try {\n const xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false); // synchronous\n xhr.send();\n\n const statusOk = xhr.status >= 200 && xhr.status < 300;\n\n if (!statusOk) return false;\n\n // Detect fallback HTML responses (common when folder/file is missing)\n const contentType = xhr.getResponseHeader(\"Content-Type\") || \"\";\n\n const isHtmlFallback = contentType.includes(\"text/html\");\n\n return !isHtmlFallback;\n } catch (err) {\n console.warn(\"File existence check failed for:\", url, err);\n return false;\n }\n}\n\n\n /**\n * Fallback approach: dynamically import the \"lido-player/loader\" module,\n * then call defineCustomElements(window) to register the <lido-home> component.\n * This is asynchronous by nature.\n */\n private fallbackNpmImport() {\n import('lido-player/loader')\n .then(({ defineCustomElements }) => {\n // Register custom elements on 'window'\n defineCustomElements(window);\n // Mark scripts as loaded so we can proceed\n this.scriptsInjected = true;\n console.debug('Lido scripts loaded via npm fallback (defineCustomElements).');\n })\n .catch(err => {\n console.error('Failed to load from npm package \"lido-player\":', err);\n });\n }\n\n private fetchXmlData() {\n // If the user provided raw XML data, just store it\n if (this.xmlData) {\n this.localXmlData = this.xmlData;\n return;\n }\n\n // If xmlPath is not explicitly provided, default to `index.xml` in baseUrl\n if (this.baseUrl) {\n const cleanBase = this.baseUrl.replace(/\\/+$/, '');\n this.xmlPath = `${cleanBase}/index.xml`;\n this.xmlBaseUrl = this.baseUrl;\n } else {\n return;\n }\n\n try {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', this.xmlPath, false); // false = synchronous\n xhr.send(null);\n\n if (xhr.status >= 200 && xhr.status < 300) {\n this.localXmlData = xhr.responseText;\n } else {\n console.warn(`Failed to fetch XML from ${this.xmlPath}:`, xhr.status);\n }\n } catch (err) {\n console.warn(`Error fetching XML from ${this.xmlPath}:`, err);\n }\n }\n\n render() {\n /**\n * If you want to hide <lido-home> until the fallback is fully loaded,\n * you could do something like:\n *\n * if (!this.scriptsInjected) {\n * return <div>Loading Lido...</div>;\n * }\n *\n * This ensures the custom elements are defined before usage.\n */\n\n const lang = this.language || 'en';\n return <lido-home common-audio-path={this.commonAudioPath} initial-index={this.initialIndex} canplay={this.canplay} height={this.height} lang={lang} xml-data={this.localXmlData} base-url={this.xmlBaseUrl} code-folder-path={this.codeFolderPath} zip-url={this.zipUrl}></lido-home>;\n }\n\n \n}\n\n\n"],"version":3}
1
+ {"file":"lido-standalone.entry.cjs.js","mappings":"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","names":["h"],"sources":["src/components/lido-standalone/lido-standalone.css?tag=lido-standalone","src/components/lido-standalone/lido-standalone.tsx"],"sourcesContent":["","import { Component, Element, Prop, State, Watch, h } from '@stencil/core';\r\n\r\n/**\r\n * <lido-standalone> usage example:\r\n *\r\n * <lido-standalone\r\n * base-url=\"https://example.com/path/to/folder/lido-game\"\r\n * xml-path=\"https://example.com/path/to/folder/lido-game/assets/xmlData.xml\"\r\n * initial-index=\"2\"\r\n * canplay=\"true\"\r\n * height=\"75vh\"\r\n * ></lido-standalone>\r\n *\r\n * This attempts to load the external Lido scripts at runtime (from `baseUrl`).\r\n * If they aren't found, it falls back to loading the Lido npm package\r\n * and calls defineCustomElements(...) to register <lido-home>.\r\n */\r\n@Component({\r\n tag: 'lido-standalone',\r\n styleUrl: 'lido-standalone.css',\r\n shadow: false,\r\n})\r\nexport class LidoStandalone {\r\n @Element() hostElement!: HTMLElement;\r\n\r\n /**\r\n * The public URL where the unzipped Lido code is hosted, e.g.\r\n * \"https://example.com/path/to/lido-game\".\r\n *\r\n * Inside that folder, we expect:\r\n * - code/lido-player.esm.js\r\n * - code/lido-player.js\r\n * - assets/ (optional)\r\n */\r\n @Prop() baseUrl: string = '';\r\n\r\n /**\r\n * If provided, we'll fetch this XML path once and pass the loaded string\r\n * to <lido-home>'s `xml-data` attribute.\r\n */\r\n @Prop() xmlPath?: string;\r\n\r\n /** The initial index to pass down to <lido-home>. Defaults to 0. */\r\n @Prop() initialIndex: number = 0;\r\n\r\n /** Whether the <lido-home> can play. Defaults to false. */\r\n @Prop() canplay: boolean = false;\r\n\r\n /** The height prop to pass to <lido-home>. Defaults to \"75vh\". */\r\n @Prop() height: string = '75vh';\r\n\r\n /** The language prop to pass to <lido-home>. */\r\n @Prop() language?: string;\r\n\r\n /**\r\n * Optional prop for directly providing XML data instead of fetching.\r\n */\r\n @Prop() xmlData?: string;\r\n\r\n /**\r\n * To pass zip file directly to <lido-home> as its attribute.\r\n */\r\n @Prop() zipUrl?: string;\r\n\r\n /**\r\n * If provided(in index.html) → tries versioned script loading from config.json.\r\n * If no version is found → automatically falls back to default player loading.\r\n * If not provided → version management is skipped entirely and falls back to default player loading.\r\n */\r\n @Prop() codeFolderPath?: string;\r\n\r\n @Prop() commonAudioPath?: string;\r\n\r\n /** Whether scripts are already injected (remote or fallback). */\r\n @State() scriptsInjected: boolean = false;\r\n\r\n /** Stores the fetched or provided XML data. */\r\n @State() localXmlData?: string;\r\n\r\n /** This might be used by <lido-home> if referencing assets. */\r\n @State() xmlBaseUrl?: string;\r\n\r\n // Re-inject scripts if the baseUrl changes\r\n @Watch('baseUrl')\r\n onBaseUrlChange() {\r\n this.injectLidoScripts();\r\n }\r\n\r\n // Re-fetch XML if the xmlPath changes\r\n @Watch('xmlPath')\r\n onXmlPathChange() {\r\n this.fetchXmlData();\r\n }\r\n\r\n // Re-apply inline XML whenever the host prop changes.\r\n @Watch('xmlData')\r\n onXmlDataChange() {\r\n this.fetchXmlData();\r\n }\r\n\r\n componentWillLoad() {\r\n // 1) Attempt to inject the Lido scripts from baseUrl\r\n this.injectLidoScripts();\r\n // 2) Fetch the XML (or use the xmlData if provided)\r\n this.fetchXmlData();\r\n }\r\n\r\n private async injectLidoScripts() {\r\n console.log('injectLidoScripts() called. baseUrl=', this.baseUrl);\r\n\r\n // If no baseUrl is provided OR we already injected scripts, just go to fallback\r\n if (!this.baseUrl) {\r\n console.warn('lido-standalone: No baseUrl provided. Using npm fallback...');\r\n this.fallbackNpmImport();\r\n return;\r\n }\r\n if (this.scriptsInjected) {\r\n return;\r\n }\r\n\r\n // Synchronously check if remote ESM script exists at baseUrl/code/lido-player.esm.js\r\n const cleanBase = this.baseUrl.replace(/\\/+$/, '');\r\n const scriptCheckUrl = `${cleanBase}/code/lido-player.esm.js`;\r\n const fileExists = this.doesFileExistSync(scriptCheckUrl);\r\n\r\n // --------------- CASE: NO codeFolderPath PROVIDED ---------------\r\n // Try loading version from default /code_versions folder\r\n // --------------- SINGLE CASE: codeFolderPath PROVIDED ---------------\r\n\r\n if (fileExists) {\r\n console.log(\"Using code from zip....\")\r\n // If it exists, inject them\r\n const scriptEsm = document.createElement('script');\r\n scriptEsm.type = 'module';\r\n scriptEsm.src = scriptCheckUrl;\r\n document.head.appendChild(scriptEsm);\r\n // (Optional) NoModule script for older browsers\r\n const scriptNoModule = document.createElement('script');\r\n scriptNoModule.setAttribute('nomodule', '');\r\n scriptNoModule.src = `${cleanBase}/code/lido-player.js`;\r\n document.head.appendChild(scriptNoModule);\r\n this.scriptsInjected = true;\r\n console.debug('Lido scripts injected from:', this.baseUrl);\r\n return;\r\n }\r\n \r\n if (this.codeFolderPath) {\r\n const cleanBase = this.baseUrl.replace(/\\/+$/, \"\");\r\n try {\r\n const lessonCfgUrl = `${cleanBase}/config.json`;\r\n try {\r\n // 1️⃣ Load lesson config.json safely\r\n let lessonCfg: any = {};\r\n let lessonVersion: string | null = null;\r\n\r\n try {\r\n const lessonResp = await fetch(lessonCfgUrl);\r\n if (!lessonResp.ok) throw new Error(\"Lesson config.json missing\");\r\n\r\n // Check for empty file (0 bytes)\r\n const text = await lessonResp.text();\r\n if (text.trim().length > 0) {\r\n lessonCfg = JSON.parse(text);\r\n } else {\r\n console.warn(\"Lesson config.json is EMPTY → falling back to latest version\");\r\n }\r\n\r\n lessonVersion = lessonCfg.code_version;\r\n console.log(`%c USING THE VERSION FOLDER--> ${lessonVersion} `,\"color: #3bffe8ff; background:#d32f2f; font-size: 15px; font-weight: bold; padding: 6px 10px; border-radius: 4px;\");\r\n\r\n } catch (parseErr) {\r\n console.warn(\"Lesson config.json invalid or unreadable → fallback to latest version\");\r\n lessonVersion = null;\r\n }\r\n\r\n // Normalize invalid versions\r\n if (!lessonVersion || typeof lessonVersion !== \"string\" || lessonVersion.trim() === \"\") {\r\n console.warn(\"Lesson has NO valid codeVersion → using latest version in code-folder-path\");\r\n lessonVersion = null;\r\n }\r\n\r\n // 2️⃣ Load version list from code-folder-path/config.json\r\n const codeCfgUrl = `${this.codeFolderPath.replace(/\\/+$/, '')}/config.json`;\r\n const codeResp = await fetch(codeCfgUrl);\r\n if (!codeResp.ok) throw new Error(\"Code-folder config.json missing\");\r\n\r\n const codeCfg = await codeResp.json();\r\n const availableVersions: string[] = codeCfg.versions || [];\r\n\r\n if (!availableVersions.length) {\r\n throw new Error(\"No versions listed in code-folder config.json\");\r\n }\r\n\r\n // 3️⃣ Compute selected version\r\n let selectedVersion: string | undefined = null;\r\n\r\n if (lessonVersion) {\r\n selectedVersion = availableVersions.find(v => v.includes(lessonVersion));\r\n }\r\n\r\n // Fallback: use latest version\r\n if (!selectedVersion) {\r\n selectedVersion = availableVersions[availableVersions.length - 1];\r\n console.log(`%c USING THE LATEST VERSION FOLDER-> ${selectedVersion} `,\"color: #3bffe8ff; background:#d32f2f; font-size: 15px; font-weight: bold; padding: 6px 10px; border-radius: 4px;\");\r\n }\r\n\r\n // 4️⃣ Inject scripts\r\n const versionDir = `${this.codeFolderPath}/${selectedVersion}`;\r\n const esmUrl = `${versionDir}/lido-player.esm.js`;\r\n const noModuleUrl = `${versionDir}/lido-player.js`;\r\n\r\n // Check if version folder exists\r\n const headCheck = await fetch(esmUrl, { method: \"HEAD\" });\r\n if (!headCheck.ok) throw new Error(`Versioned script missing: ${esmUrl}`);\r\n\r\n // Inject main module file\r\n const scriptEsm = document.createElement(\"script\");\r\n scriptEsm.type = \"module\";\r\n scriptEsm.src = esmUrl;\r\n document.head.appendChild(scriptEsm);\r\n\r\n // Inject fallback nomodule script\r\n const scriptNoModule = document.createElement(\"script\");\r\n scriptNoModule.setAttribute(\"nomodule\", \"\");\r\n scriptNoModule.src = noModuleUrl;\r\n document.head.appendChild(scriptNoModule);\r\n\r\n this.scriptsInjected = true;\r\n console.debug(\"Loaded Lido version from:\", versionDir);\r\n\r\n }catch (err) {\r\n console.warn(\"Failed to load versioned scripts, falling back to npm:\", err);\r\n this.fallbackNpmImport();\r\n } \r\n } catch (err) {\r\n console.warn(\"Failed loading scripts → fallback to npm:\", err);\r\n this.fallbackNpmImport();\r\n }\r\n return;\r\n }\r\n this.fallbackNpmImport();\r\n }\r\n\r\n /**\r\n * Checks if a file truly exists (not a dev-server fallback).\r\n * Ensures:\r\n * - HTTP HEAD returns 2xx\r\n * - responseURL matches the requested URL\r\n */\r\nprivate doesFileExistSync(url: string): boolean {\r\n try {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(\"HEAD\", url, false); // synchronous\r\n xhr.send();\r\n\r\n const statusOk = xhr.status >= 200 && xhr.status < 300;\r\n\r\n if (!statusOk) return false;\r\n\r\n // Detect fallback HTML responses (common when folder/file is missing)\r\n const contentType = xhr.getResponseHeader(\"Content-Type\") || \"\";\r\n\r\n const isHtmlFallback = contentType.includes(\"text/html\");\r\n\r\n return !isHtmlFallback;\r\n } catch (err) {\r\n console.warn(\"File existence check failed for:\", url, err);\r\n return false;\r\n }\r\n}\r\n\r\n\r\n /**\r\n * Fallback approach: dynamically import the \"lido-player/loader\" module,\r\n * then call defineCustomElements(window) to register the <lido-home> component.\r\n * This is asynchronous by nature.\r\n */\r\n private fallbackNpmImport() {\r\n import('lido-player/loader')\r\n .then(({ defineCustomElements }) => {\r\n // Register custom elements on 'window'\r\n defineCustomElements(window);\r\n // Mark scripts as loaded so we can proceed\r\n this.scriptsInjected = true;\r\n console.debug('Lido scripts loaded via npm fallback (defineCustomElements).');\r\n })\r\n .catch(err => {\r\n console.error('Failed to load from npm package \"lido-player\":', err);\r\n });\r\n }\r\n\r\n private fetchXmlData() {\r\n // If the user provided raw XML data, just store it\r\n if (this.xmlData) {\r\n this.localXmlData = this.xmlData;\r\n return;\r\n }\r\n\r\n // If xmlPath is not explicitly provided, default to `index.xml` in baseUrl\r\n if (this.baseUrl) {\r\n const cleanBase = this.baseUrl.replace(/\\/+$/, '');\r\n this.xmlPath = `${cleanBase}/index.xml`;\r\n this.xmlBaseUrl = this.baseUrl;\r\n } else {\r\n return;\r\n }\r\n\r\n try {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', this.xmlPath, false); // false = synchronous\r\n xhr.send(null);\r\n\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n this.localXmlData = xhr.responseText;\r\n } else {\r\n console.warn(`Failed to fetch XML from ${this.xmlPath}:`, xhr.status);\r\n }\r\n } catch (err) {\r\n console.warn(`Error fetching XML from ${this.xmlPath}:`, err);\r\n }\r\n }\r\n\r\n render() {\r\n /**\r\n * If you want to hide <lido-home> until the fallback is fully loaded,\r\n * you could do something like:\r\n *\r\n * if (!this.scriptsInjected) {\r\n * return <div>Loading Lido...</div>;\r\n * }\r\n *\r\n * This ensures the custom elements are defined before usage.\r\n */\r\n\r\n const lang = this.language || 'en';\r\n return <lido-home common-audio-path={this.commonAudioPath} initial-index={this.initialIndex} canplay={this.canplay} height={this.height} lang={lang} xml-data={this.localXmlData} base-url={this.xmlBaseUrl} code-folder-path={this.codeFolderPath} zip-url={this.zipUrl}></lido-home>;\r\n }\r\n\r\n \r\n}\r\n\r\n\r\n"],"version":3}
@@ -252,7 +252,7 @@ export class LidoStandalone {
252
252
  * This ensures the custom elements are defined before usage.
253
253
  */
254
254
  const lang = this.language || 'en';
255
- return h("lido-home", { key: '52fd8d3879919dbba73d4c687f2d540f0e4e601f', "common-audio-path": this.commonAudioPath, "initial-index": this.initialIndex, canplay: this.canplay, height: this.height, lang: lang, "xml-data": this.localXmlData, "base-url": this.xmlBaseUrl, "code-folder-path": this.codeFolderPath, "zip-url": this.zipUrl });
255
+ return h("lido-home", { key: 'afe85322de2d836085e05da9c829eb0a0ec4a28d', "common-audio-path": this.commonAudioPath, "initial-index": this.initialIndex, canplay: this.canplay, height: this.height, lang: lang, "xml-data": this.localXmlData, "base-url": this.xmlBaseUrl, "code-folder-path": this.codeFolderPath, "zip-url": this.zipUrl });
256
256
  }
257
257
  static get is() { return "lido-standalone"; }
258
258
  static get originalStyleUrls() {
@@ -279,7 +279,7 @@ export class LidoStandalone {
279
279
  "optional": false,
280
280
  "docs": {
281
281
  "tags": [],
282
- "text": "The public URL where the unzipped Lido code is hosted, e.g.\n\"https://example.com/path/to/lido-game\".\n\nInside that folder, we expect:\n - code/lido-player.esm.js\n - code/lido-player.js\n - assets/ (optional)"
282
+ "text": "The public URL where the unzipped Lido code is hosted, e.g.\r\n\"https://example.com/path/to/lido-game\".\r\n\r\nInside that folder, we expect:\r\n - code/lido-player.esm.js\r\n - code/lido-player.js\r\n - assets/ (optional)"
283
283
  },
284
284
  "attribute": "base-url",
285
285
  "reflect": false,
@@ -297,7 +297,7 @@ export class LidoStandalone {
297
297
  "optional": true,
298
298
  "docs": {
299
299
  "tags": [],
300
- "text": "If provided, we'll fetch this XML path once and pass the loaded string\nto <lido-home>'s `xml-data` attribute."
300
+ "text": "If provided, we'll fetch this XML path once and pass the loaded string\r\nto <lido-home>'s `xml-data` attribute."
301
301
  },
302
302
  "attribute": "xml-path",
303
303
  "reflect": false
@@ -419,7 +419,7 @@ export class LidoStandalone {
419
419
  "optional": true,
420
420
  "docs": {
421
421
  "tags": [],
422
- "text": "If provided(in index.html) \u2192 tries versioned script loading from config.json.\nIf no version is found \u2192 automatically falls back to default player loading.\nIf not provided \u2192 version management is skipped entirely and falls back to default player loading."
422
+ "text": "If provided(in index.html) \u2192 tries versioned script loading from config.json.\r\nIf no version is found \u2192 automatically falls back to default player loading.\r\nIf not provided \u2192 version management is skipped entirely and falls back to default player loading."
423
423
  },
424
424
  "attribute": "code-folder-path",
425
425
  "reflect": false
@@ -1 +1 @@
1
- {"version":3,"file":"lido-standalone.js","sourceRoot":"","sources":["../../../src/components/lido-standalone/lido-standalone.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Prop, State, Watch, h } from '@stencil/core';\n\n/**\n * <lido-standalone> usage example:\n *\n * <lido-standalone\n * base-url=\"https://example.com/path/to/folder/lido-game\"\n * xml-path=\"https://example.com/path/to/folder/lido-game/assets/xmlData.xml\"\n * initial-index=\"2\"\n * canplay=\"true\"\n * height=\"75vh\"\n * ></lido-standalone>\n *\n * This attempts to load the external Lido scripts at runtime (from `baseUrl`).\n * If they aren't found, it falls back to loading the Lido npm package\n * and calls defineCustomElements(...) to register <lido-home>.\n */\n@Component({\n tag: 'lido-standalone',\n styleUrl: 'lido-standalone.css',\n shadow: false,\n})\nexport class LidoStandalone {\n @Element() hostElement!: HTMLElement;\n\n /**\n * The public URL where the unzipped Lido code is hosted, e.g.\n * \"https://example.com/path/to/lido-game\".\n *\n * Inside that folder, we expect:\n * - code/lido-player.esm.js\n * - code/lido-player.js\n * - assets/ (optional)\n */\n @Prop() baseUrl: string = '';\n\n /**\n * If provided, we'll fetch this XML path once and pass the loaded string\n * to <lido-home>'s `xml-data` attribute.\n */\n @Prop() xmlPath?: string;\n\n /** The initial index to pass down to <lido-home>. Defaults to 0. */\n @Prop() initialIndex: number = 0;\n\n /** Whether the <lido-home> can play. Defaults to false. */\n @Prop() canplay: boolean = false;\n\n /** The height prop to pass to <lido-home>. Defaults to \"75vh\". */\n @Prop() height: string = '75vh';\n\n /** The language prop to pass to <lido-home>. */\n @Prop() language?: string;\n\n /**\n * Optional prop for directly providing XML data instead of fetching.\n */\n @Prop() xmlData?: string;\n\n /**\n * To pass zip file directly to <lido-home> as its attribute.\n */\n @Prop() zipUrl?: string;\n\n /**\n * If provided(in index.html) → tries versioned script loading from config.json.\n * If no version is found → automatically falls back to default player loading.\n * If not provided → version management is skipped entirely and falls back to default player loading.\n */\n @Prop() codeFolderPath?: string;\n\n @Prop() commonAudioPath?: string;\n\n /** Whether scripts are already injected (remote or fallback). */\n @State() scriptsInjected: boolean = false;\n\n /** Stores the fetched or provided XML data. */\n @State() localXmlData?: string;\n\n /** This might be used by <lido-home> if referencing assets. */\n @State() xmlBaseUrl?: string;\n\n // Re-inject scripts if the baseUrl changes\n @Watch('baseUrl')\n onBaseUrlChange() {\n this.injectLidoScripts();\n }\n\n // Re-fetch XML if the xmlPath changes\n @Watch('xmlPath')\n onXmlPathChange() {\n this.fetchXmlData();\n }\n\n // Re-apply inline XML whenever the host prop changes.\n @Watch('xmlData')\n onXmlDataChange() {\n this.fetchXmlData();\n }\n\n componentWillLoad() {\n // 1) Attempt to inject the Lido scripts from baseUrl\n this.injectLidoScripts();\n // 2) Fetch the XML (or use the xmlData if provided)\n this.fetchXmlData();\n }\n\n private async injectLidoScripts() {\n console.log('injectLidoScripts() called. baseUrl=', this.baseUrl);\n\n // If no baseUrl is provided OR we already injected scripts, just go to fallback\n if (!this.baseUrl) {\n console.warn('lido-standalone: No baseUrl provided. Using npm fallback...');\n this.fallbackNpmImport();\n return;\n }\n if (this.scriptsInjected) {\n return;\n }\n\n // Synchronously check if remote ESM script exists at baseUrl/code/lido-player.esm.js\n const cleanBase = this.baseUrl.replace(/\\/+$/, '');\n const scriptCheckUrl = `${cleanBase}/code/lido-player.esm.js`;\n const fileExists = this.doesFileExistSync(scriptCheckUrl);\n\n // --------------- CASE: NO codeFolderPath PROVIDED ---------------\n // Try loading version from default /code_versions folder\n // --------------- SINGLE CASE: codeFolderPath PROVIDED ---------------\n\n if (fileExists) {\n console.log(\"Using code from zip....\")\n // If it exists, inject them\n const scriptEsm = document.createElement('script');\n scriptEsm.type = 'module';\n scriptEsm.src = scriptCheckUrl;\n document.head.appendChild(scriptEsm);\n // (Optional) NoModule script for older browsers\n const scriptNoModule = document.createElement('script');\n scriptNoModule.setAttribute('nomodule', '');\n scriptNoModule.src = `${cleanBase}/code/lido-player.js`;\n document.head.appendChild(scriptNoModule);\n this.scriptsInjected = true;\n console.debug('Lido scripts injected from:', this.baseUrl);\n return;\n }\n \n if (this.codeFolderPath) {\n const cleanBase = this.baseUrl.replace(/\\/+$/, \"\");\n try {\n const lessonCfgUrl = `${cleanBase}/config.json`;\n try {\n // 1️⃣ Load lesson config.json safely\n let lessonCfg: any = {};\n let lessonVersion: string | null = null;\n\n try {\n const lessonResp = await fetch(lessonCfgUrl);\n if (!lessonResp.ok) throw new Error(\"Lesson config.json missing\");\n\n // Check for empty file (0 bytes)\n const text = await lessonResp.text();\n if (text.trim().length > 0) {\n lessonCfg = JSON.parse(text);\n } else {\n console.warn(\"Lesson config.json is EMPTY → falling back to latest version\");\n }\n\n lessonVersion = lessonCfg.code_version;\n console.log(`%c USING THE VERSION FOLDER--> ${lessonVersion} `,\"color: #3bffe8ff; background:#d32f2f; font-size: 15px; font-weight: bold; padding: 6px 10px; border-radius: 4px;\");\n\n } catch (parseErr) {\n console.warn(\"Lesson config.json invalid or unreadable → fallback to latest version\");\n lessonVersion = null;\n }\n\n // Normalize invalid versions\n if (!lessonVersion || typeof lessonVersion !== \"string\" || lessonVersion.trim() === \"\") {\n console.warn(\"Lesson has NO valid codeVersion → using latest version in code-folder-path\");\n lessonVersion = null;\n }\n\n // 2️⃣ Load version list from code-folder-path/config.json\n const codeCfgUrl = `${this.codeFolderPath.replace(/\\/+$/, '')}/config.json`;\n const codeResp = await fetch(codeCfgUrl);\n if (!codeResp.ok) throw new Error(\"Code-folder config.json missing\");\n\n const codeCfg = await codeResp.json();\n const availableVersions: string[] = codeCfg.versions || [];\n\n if (!availableVersions.length) {\n throw new Error(\"No versions listed in code-folder config.json\");\n }\n\n // 3️⃣ Compute selected version\n let selectedVersion: string | undefined = null;\n\n if (lessonVersion) {\n selectedVersion = availableVersions.find(v => v.includes(lessonVersion));\n }\n\n // Fallback: use latest version\n if (!selectedVersion) {\n selectedVersion = availableVersions[availableVersions.length - 1];\n console.log(`%c USING THE LATEST VERSION FOLDER-> ${selectedVersion} `,\"color: #3bffe8ff; background:#d32f2f; font-size: 15px; font-weight: bold; padding: 6px 10px; border-radius: 4px;\");\n }\n\n // 4️⃣ Inject scripts\n const versionDir = `${this.codeFolderPath}/${selectedVersion}`;\n const esmUrl = `${versionDir}/lido-player.esm.js`;\n const noModuleUrl = `${versionDir}/lido-player.js`;\n\n // Check if version folder exists\n const headCheck = await fetch(esmUrl, { method: \"HEAD\" });\n if (!headCheck.ok) throw new Error(`Versioned script missing: ${esmUrl}`);\n\n // Inject main module file\n const scriptEsm = document.createElement(\"script\");\n scriptEsm.type = \"module\";\n scriptEsm.src = esmUrl;\n document.head.appendChild(scriptEsm);\n\n // Inject fallback nomodule script\n const scriptNoModule = document.createElement(\"script\");\n scriptNoModule.setAttribute(\"nomodule\", \"\");\n scriptNoModule.src = noModuleUrl;\n document.head.appendChild(scriptNoModule);\n\n this.scriptsInjected = true;\n console.debug(\"Loaded Lido version from:\", versionDir);\n\n }catch (err) {\n console.warn(\"Failed to load versioned scripts, falling back to npm:\", err);\n this.fallbackNpmImport();\n } \n } catch (err) {\n console.warn(\"Failed loading scripts → fallback to npm:\", err);\n this.fallbackNpmImport();\n }\n return;\n }\n this.fallbackNpmImport();\n }\n\n /**\n * Checks if a file truly exists (not a dev-server fallback).\n * Ensures:\n * - HTTP HEAD returns 2xx\n * - responseURL matches the requested URL\n */\nprivate doesFileExistSync(url: string): boolean {\n try {\n const xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false); // synchronous\n xhr.send();\n\n const statusOk = xhr.status >= 200 && xhr.status < 300;\n\n if (!statusOk) return false;\n\n // Detect fallback HTML responses (common when folder/file is missing)\n const contentType = xhr.getResponseHeader(\"Content-Type\") || \"\";\n\n const isHtmlFallback = contentType.includes(\"text/html\");\n\n return !isHtmlFallback;\n } catch (err) {\n console.warn(\"File existence check failed for:\", url, err);\n return false;\n }\n}\n\n\n /**\n * Fallback approach: dynamically import the \"lido-player/loader\" module,\n * then call defineCustomElements(window) to register the <lido-home> component.\n * This is asynchronous by nature.\n */\n private fallbackNpmImport() {\n import('lido-player/loader')\n .then(({ defineCustomElements }) => {\n // Register custom elements on 'window'\n defineCustomElements(window);\n // Mark scripts as loaded so we can proceed\n this.scriptsInjected = true;\n console.debug('Lido scripts loaded via npm fallback (defineCustomElements).');\n })\n .catch(err => {\n console.error('Failed to load from npm package \"lido-player\":', err);\n });\n }\n\n private fetchXmlData() {\n // If the user provided raw XML data, just store it\n if (this.xmlData) {\n this.localXmlData = this.xmlData;\n return;\n }\n\n // If xmlPath is not explicitly provided, default to `index.xml` in baseUrl\n if (this.baseUrl) {\n const cleanBase = this.baseUrl.replace(/\\/+$/, '');\n this.xmlPath = `${cleanBase}/index.xml`;\n this.xmlBaseUrl = this.baseUrl;\n } else {\n return;\n }\n\n try {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', this.xmlPath, false); // false = synchronous\n xhr.send(null);\n\n if (xhr.status >= 200 && xhr.status < 300) {\n this.localXmlData = xhr.responseText;\n } else {\n console.warn(`Failed to fetch XML from ${this.xmlPath}:`, xhr.status);\n }\n } catch (err) {\n console.warn(`Error fetching XML from ${this.xmlPath}:`, err);\n }\n }\n\n render() {\n /**\n * If you want to hide <lido-home> until the fallback is fully loaded,\n * you could do something like:\n *\n * if (!this.scriptsInjected) {\n * return <div>Loading Lido...</div>;\n * }\n *\n * This ensures the custom elements are defined before usage.\n */\n\n const lang = this.language || 'en';\n return <lido-home common-audio-path={this.commonAudioPath} initial-index={this.initialIndex} canplay={this.canplay} height={this.height} lang={lang} xml-data={this.localXmlData} base-url={this.xmlBaseUrl} code-folder-path={this.codeFolderPath} zip-url={this.zipUrl}></lido-home>;\n }\n\n \n}\n\n\n"]}
1
+ {"version":3,"file":"lido-standalone.js","sourceRoot":"","sources":["../../../src/components/lido-standalone/lido-standalone.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Prop, State, Watch, h } from '@stencil/core';\r\n\r\n/**\r\n * <lido-standalone> usage example:\r\n *\r\n * <lido-standalone\r\n * base-url=\"https://example.com/path/to/folder/lido-game\"\r\n * xml-path=\"https://example.com/path/to/folder/lido-game/assets/xmlData.xml\"\r\n * initial-index=\"2\"\r\n * canplay=\"true\"\r\n * height=\"75vh\"\r\n * ></lido-standalone>\r\n *\r\n * This attempts to load the external Lido scripts at runtime (from `baseUrl`).\r\n * If they aren't found, it falls back to loading the Lido npm package\r\n * and calls defineCustomElements(...) to register <lido-home>.\r\n */\r\n@Component({\r\n tag: 'lido-standalone',\r\n styleUrl: 'lido-standalone.css',\r\n shadow: false,\r\n})\r\nexport class LidoStandalone {\r\n @Element() hostElement!: HTMLElement;\r\n\r\n /**\r\n * The public URL where the unzipped Lido code is hosted, e.g.\r\n * \"https://example.com/path/to/lido-game\".\r\n *\r\n * Inside that folder, we expect:\r\n * - code/lido-player.esm.js\r\n * - code/lido-player.js\r\n * - assets/ (optional)\r\n */\r\n @Prop() baseUrl: string = '';\r\n\r\n /**\r\n * If provided, we'll fetch this XML path once and pass the loaded string\r\n * to <lido-home>'s `xml-data` attribute.\r\n */\r\n @Prop() xmlPath?: string;\r\n\r\n /** The initial index to pass down to <lido-home>. Defaults to 0. */\r\n @Prop() initialIndex: number = 0;\r\n\r\n /** Whether the <lido-home> can play. Defaults to false. */\r\n @Prop() canplay: boolean = false;\r\n\r\n /** The height prop to pass to <lido-home>. Defaults to \"75vh\". */\r\n @Prop() height: string = '75vh';\r\n\r\n /** The language prop to pass to <lido-home>. */\r\n @Prop() language?: string;\r\n\r\n /**\r\n * Optional prop for directly providing XML data instead of fetching.\r\n */\r\n @Prop() xmlData?: string;\r\n\r\n /**\r\n * To pass zip file directly to <lido-home> as its attribute.\r\n */\r\n @Prop() zipUrl?: string;\r\n\r\n /**\r\n * If provided(in index.html) → tries versioned script loading from config.json.\r\n * If no version is found → automatically falls back to default player loading.\r\n * If not provided → version management is skipped entirely and falls back to default player loading.\r\n */\r\n @Prop() codeFolderPath?: string;\r\n\r\n @Prop() commonAudioPath?: string;\r\n\r\n /** Whether scripts are already injected (remote or fallback). */\r\n @State() scriptsInjected: boolean = false;\r\n\r\n /** Stores the fetched or provided XML data. */\r\n @State() localXmlData?: string;\r\n\r\n /** This might be used by <lido-home> if referencing assets. */\r\n @State() xmlBaseUrl?: string;\r\n\r\n // Re-inject scripts if the baseUrl changes\r\n @Watch('baseUrl')\r\n onBaseUrlChange() {\r\n this.injectLidoScripts();\r\n }\r\n\r\n // Re-fetch XML if the xmlPath changes\r\n @Watch('xmlPath')\r\n onXmlPathChange() {\r\n this.fetchXmlData();\r\n }\r\n\r\n // Re-apply inline XML whenever the host prop changes.\r\n @Watch('xmlData')\r\n onXmlDataChange() {\r\n this.fetchXmlData();\r\n }\r\n\r\n componentWillLoad() {\r\n // 1) Attempt to inject the Lido scripts from baseUrl\r\n this.injectLidoScripts();\r\n // 2) Fetch the XML (or use the xmlData if provided)\r\n this.fetchXmlData();\r\n }\r\n\r\n private async injectLidoScripts() {\r\n console.log('injectLidoScripts() called. baseUrl=', this.baseUrl);\r\n\r\n // If no baseUrl is provided OR we already injected scripts, just go to fallback\r\n if (!this.baseUrl) {\r\n console.warn('lido-standalone: No baseUrl provided. Using npm fallback...');\r\n this.fallbackNpmImport();\r\n return;\r\n }\r\n if (this.scriptsInjected) {\r\n return;\r\n }\r\n\r\n // Synchronously check if remote ESM script exists at baseUrl/code/lido-player.esm.js\r\n const cleanBase = this.baseUrl.replace(/\\/+$/, '');\r\n const scriptCheckUrl = `${cleanBase}/code/lido-player.esm.js`;\r\n const fileExists = this.doesFileExistSync(scriptCheckUrl);\r\n\r\n // --------------- CASE: NO codeFolderPath PROVIDED ---------------\r\n // Try loading version from default /code_versions folder\r\n // --------------- SINGLE CASE: codeFolderPath PROVIDED ---------------\r\n\r\n if (fileExists) {\r\n console.log(\"Using code from zip....\")\r\n // If it exists, inject them\r\n const scriptEsm = document.createElement('script');\r\n scriptEsm.type = 'module';\r\n scriptEsm.src = scriptCheckUrl;\r\n document.head.appendChild(scriptEsm);\r\n // (Optional) NoModule script for older browsers\r\n const scriptNoModule = document.createElement('script');\r\n scriptNoModule.setAttribute('nomodule', '');\r\n scriptNoModule.src = `${cleanBase}/code/lido-player.js`;\r\n document.head.appendChild(scriptNoModule);\r\n this.scriptsInjected = true;\r\n console.debug('Lido scripts injected from:', this.baseUrl);\r\n return;\r\n }\r\n \r\n if (this.codeFolderPath) {\r\n const cleanBase = this.baseUrl.replace(/\\/+$/, \"\");\r\n try {\r\n const lessonCfgUrl = `${cleanBase}/config.json`;\r\n try {\r\n // 1️⃣ Load lesson config.json safely\r\n let lessonCfg: any = {};\r\n let lessonVersion: string | null = null;\r\n\r\n try {\r\n const lessonResp = await fetch(lessonCfgUrl);\r\n if (!lessonResp.ok) throw new Error(\"Lesson config.json missing\");\r\n\r\n // Check for empty file (0 bytes)\r\n const text = await lessonResp.text();\r\n if (text.trim().length > 0) {\r\n lessonCfg = JSON.parse(text);\r\n } else {\r\n console.warn(\"Lesson config.json is EMPTY → falling back to latest version\");\r\n }\r\n\r\n lessonVersion = lessonCfg.code_version;\r\n console.log(`%c USING THE VERSION FOLDER--> ${lessonVersion} `,\"color: #3bffe8ff; background:#d32f2f; font-size: 15px; font-weight: bold; padding: 6px 10px; border-radius: 4px;\");\r\n\r\n } catch (parseErr) {\r\n console.warn(\"Lesson config.json invalid or unreadable → fallback to latest version\");\r\n lessonVersion = null;\r\n }\r\n\r\n // Normalize invalid versions\r\n if (!lessonVersion || typeof lessonVersion !== \"string\" || lessonVersion.trim() === \"\") {\r\n console.warn(\"Lesson has NO valid codeVersion → using latest version in code-folder-path\");\r\n lessonVersion = null;\r\n }\r\n\r\n // 2️⃣ Load version list from code-folder-path/config.json\r\n const codeCfgUrl = `${this.codeFolderPath.replace(/\\/+$/, '')}/config.json`;\r\n const codeResp = await fetch(codeCfgUrl);\r\n if (!codeResp.ok) throw new Error(\"Code-folder config.json missing\");\r\n\r\n const codeCfg = await codeResp.json();\r\n const availableVersions: string[] = codeCfg.versions || [];\r\n\r\n if (!availableVersions.length) {\r\n throw new Error(\"No versions listed in code-folder config.json\");\r\n }\r\n\r\n // 3️⃣ Compute selected version\r\n let selectedVersion: string | undefined = null;\r\n\r\n if (lessonVersion) {\r\n selectedVersion = availableVersions.find(v => v.includes(lessonVersion));\r\n }\r\n\r\n // Fallback: use latest version\r\n if (!selectedVersion) {\r\n selectedVersion = availableVersions[availableVersions.length - 1];\r\n console.log(`%c USING THE LATEST VERSION FOLDER-> ${selectedVersion} `,\"color: #3bffe8ff; background:#d32f2f; font-size: 15px; font-weight: bold; padding: 6px 10px; border-radius: 4px;\");\r\n }\r\n\r\n // 4️⃣ Inject scripts\r\n const versionDir = `${this.codeFolderPath}/${selectedVersion}`;\r\n const esmUrl = `${versionDir}/lido-player.esm.js`;\r\n const noModuleUrl = `${versionDir}/lido-player.js`;\r\n\r\n // Check if version folder exists\r\n const headCheck = await fetch(esmUrl, { method: \"HEAD\" });\r\n if (!headCheck.ok) throw new Error(`Versioned script missing: ${esmUrl}`);\r\n\r\n // Inject main module file\r\n const scriptEsm = document.createElement(\"script\");\r\n scriptEsm.type = \"module\";\r\n scriptEsm.src = esmUrl;\r\n document.head.appendChild(scriptEsm);\r\n\r\n // Inject fallback nomodule script\r\n const scriptNoModule = document.createElement(\"script\");\r\n scriptNoModule.setAttribute(\"nomodule\", \"\");\r\n scriptNoModule.src = noModuleUrl;\r\n document.head.appendChild(scriptNoModule);\r\n\r\n this.scriptsInjected = true;\r\n console.debug(\"Loaded Lido version from:\", versionDir);\r\n\r\n }catch (err) {\r\n console.warn(\"Failed to load versioned scripts, falling back to npm:\", err);\r\n this.fallbackNpmImport();\r\n } \r\n } catch (err) {\r\n console.warn(\"Failed loading scripts → fallback to npm:\", err);\r\n this.fallbackNpmImport();\r\n }\r\n return;\r\n }\r\n this.fallbackNpmImport();\r\n }\r\n\r\n /**\r\n * Checks if a file truly exists (not a dev-server fallback).\r\n * Ensures:\r\n * - HTTP HEAD returns 2xx\r\n * - responseURL matches the requested URL\r\n */\r\nprivate doesFileExistSync(url: string): boolean {\r\n try {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(\"HEAD\", url, false); // synchronous\r\n xhr.send();\r\n\r\n const statusOk = xhr.status >= 200 && xhr.status < 300;\r\n\r\n if (!statusOk) return false;\r\n\r\n // Detect fallback HTML responses (common when folder/file is missing)\r\n const contentType = xhr.getResponseHeader(\"Content-Type\") || \"\";\r\n\r\n const isHtmlFallback = contentType.includes(\"text/html\");\r\n\r\n return !isHtmlFallback;\r\n } catch (err) {\r\n console.warn(\"File existence check failed for:\", url, err);\r\n return false;\r\n }\r\n}\r\n\r\n\r\n /**\r\n * Fallback approach: dynamically import the \"lido-player/loader\" module,\r\n * then call defineCustomElements(window) to register the <lido-home> component.\r\n * This is asynchronous by nature.\r\n */\r\n private fallbackNpmImport() {\r\n import('lido-player/loader')\r\n .then(({ defineCustomElements }) => {\r\n // Register custom elements on 'window'\r\n defineCustomElements(window);\r\n // Mark scripts as loaded so we can proceed\r\n this.scriptsInjected = true;\r\n console.debug('Lido scripts loaded via npm fallback (defineCustomElements).');\r\n })\r\n .catch(err => {\r\n console.error('Failed to load from npm package \"lido-player\":', err);\r\n });\r\n }\r\n\r\n private fetchXmlData() {\r\n // If the user provided raw XML data, just store it\r\n if (this.xmlData) {\r\n this.localXmlData = this.xmlData;\r\n return;\r\n }\r\n\r\n // If xmlPath is not explicitly provided, default to `index.xml` in baseUrl\r\n if (this.baseUrl) {\r\n const cleanBase = this.baseUrl.replace(/\\/+$/, '');\r\n this.xmlPath = `${cleanBase}/index.xml`;\r\n this.xmlBaseUrl = this.baseUrl;\r\n } else {\r\n return;\r\n }\r\n\r\n try {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', this.xmlPath, false); // false = synchronous\r\n xhr.send(null);\r\n\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n this.localXmlData = xhr.responseText;\r\n } else {\r\n console.warn(`Failed to fetch XML from ${this.xmlPath}:`, xhr.status);\r\n }\r\n } catch (err) {\r\n console.warn(`Error fetching XML from ${this.xmlPath}:`, err);\r\n }\r\n }\r\n\r\n render() {\r\n /**\r\n * If you want to hide <lido-home> until the fallback is fully loaded,\r\n * you could do something like:\r\n *\r\n * if (!this.scriptsInjected) {\r\n * return <div>Loading Lido...</div>;\r\n * }\r\n *\r\n * This ensures the custom elements are defined before usage.\r\n */\r\n\r\n const lang = this.language || 'en';\r\n return <lido-home common-audio-path={this.commonAudioPath} initial-index={this.initialIndex} canplay={this.canplay} height={this.height} lang={lang} xml-data={this.localXmlData} base-url={this.xmlBaseUrl} code-folder-path={this.codeFolderPath} zip-url={this.zipUrl}></lido-home>;\r\n }\r\n\r\n \r\n}\r\n\r\n\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC","sourcesContent":["import { createRouter } from 'stencil-router-v2';\n\nexport { Components, JSX } from './components';\n\nexport const Router = createRouter();\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC","sourcesContent":["import { createRouter } from 'stencil-router-v2';\r\n\r\nexport { Components, JSX } from './components';\r\n\r\nexport const Router = createRouter();\r\n"]}