proto-sudoku-wc 0.0.566 → 0.0.568

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.
Files changed (74) hide show
  1. package/dist/cjs/index-7e0298a3.js +0 -2
  2. package/dist/cjs/index.cjs.js +0 -2
  3. package/dist/cjs/loader.cjs.js +0 -2
  4. package/dist/cjs/proto-sudoku-wc.cjs.js +0 -2
  5. package/dist/cjs/proto-sudoku.cjs.entry.js +0 -2
  6. package/dist/collection/components/proto-sudoku/alert.js +0 -1
  7. package/dist/collection/components/proto-sudoku/alerts.js +0 -1
  8. package/dist/collection/components/proto-sudoku/alien.js +0 -1
  9. package/dist/collection/components/proto-sudoku/button.js +0 -1
  10. package/dist/collection/components/proto-sudoku/cell.js +0 -1
  11. package/dist/collection/components/proto-sudoku/eswat2-io.js +0 -1
  12. package/dist/collection/components/proto-sudoku/fingerprint.js +0 -1
  13. package/dist/collection/components/proto-sudoku/header.js +0 -1
  14. package/dist/collection/components/proto-sudoku/keys.js +0 -1
  15. package/dist/collection/components/proto-sudoku/proto-sudoku.js +0 -1
  16. package/dist/collection/components/proto-sudoku/spinner.js +0 -1
  17. package/dist/collection/components/proto-sudoku/sudoku-board.js +0 -1
  18. package/dist/collection/components/proto-sudoku/tool-bar.js +0 -1
  19. package/dist/collection/components/proto-sudoku/tw-label.js +0 -1
  20. package/dist/collection/index.js +0 -1
  21. package/dist/collection/utils/bag.js +0 -1
  22. package/dist/collection/utils/index.js +0 -1
  23. package/dist/collection/utils/labels.js +0 -1
  24. package/dist/collection/utils/store.js +0 -1
  25. package/dist/collection/utils/tw-version.js +0 -1
  26. package/dist/collection/utils/tw.js +0 -1
  27. package/dist/collection/utils/types.js +0 -1
  28. package/dist/esm/index-197f58ff.js +0 -2
  29. package/dist/esm/index.js +0 -2
  30. package/dist/esm/loader.js +0 -2
  31. package/dist/esm/proto-sudoku-wc.js +0 -2
  32. package/dist/esm/proto-sudoku.entry.js +0 -2
  33. package/dist/proto-sudoku-wc/index.esm.js +0 -2
  34. package/dist/proto-sudoku-wc/p-490877ce.js +2 -3
  35. package/dist/proto-sudoku-wc/p-548d7ee0.entry.js +2 -0
  36. package/dist/proto-sudoku-wc/proto-sudoku-wc.esm.js +1 -2
  37. package/package.json +2 -2
  38. package/dist/cjs/index-7e0298a3.js.map +0 -1
  39. package/dist/cjs/index.cjs.js.map +0 -1
  40. package/dist/cjs/loader.cjs.js.map +0 -1
  41. package/dist/cjs/proto-sudoku-wc.cjs.js.map +0 -1
  42. package/dist/cjs/proto-sudoku.cjs.entry.js.map +0 -1
  43. package/dist/collection/components/proto-sudoku/alert.js.map +0 -1
  44. package/dist/collection/components/proto-sudoku/alerts.js.map +0 -1
  45. package/dist/collection/components/proto-sudoku/alien.js.map +0 -1
  46. package/dist/collection/components/proto-sudoku/button.js.map +0 -1
  47. package/dist/collection/components/proto-sudoku/cell.js.map +0 -1
  48. package/dist/collection/components/proto-sudoku/eswat2-io.js.map +0 -1
  49. package/dist/collection/components/proto-sudoku/fingerprint.js.map +0 -1
  50. package/dist/collection/components/proto-sudoku/header.js.map +0 -1
  51. package/dist/collection/components/proto-sudoku/keys.js.map +0 -1
  52. package/dist/collection/components/proto-sudoku/proto-sudoku.js.map +0 -1
  53. package/dist/collection/components/proto-sudoku/spinner.js.map +0 -1
  54. package/dist/collection/components/proto-sudoku/sudoku-board.js.map +0 -1
  55. package/dist/collection/components/proto-sudoku/tool-bar.js.map +0 -1
  56. package/dist/collection/components/proto-sudoku/tw-label.js.map +0 -1
  57. package/dist/collection/index.js.map +0 -1
  58. package/dist/collection/utils/bag.js.map +0 -1
  59. package/dist/collection/utils/index.js.map +0 -1
  60. package/dist/collection/utils/labels.js.map +0 -1
  61. package/dist/collection/utils/store.js.map +0 -1
  62. package/dist/collection/utils/tw-version.js.map +0 -1
  63. package/dist/collection/utils/tw.js.map +0 -1
  64. package/dist/collection/utils/types.js.map +0 -1
  65. package/dist/esm/index-197f58ff.js.map +0 -1
  66. package/dist/esm/index.js.map +0 -1
  67. package/dist/esm/loader.js.map +0 -1
  68. package/dist/esm/proto-sudoku-wc.js.map +0 -1
  69. package/dist/esm/proto-sudoku.entry.js.map +0 -1
  70. package/dist/proto-sudoku-wc/index.esm.js.map +0 -1
  71. package/dist/proto-sudoku-wc/p-21a020aa.entry.js +0 -3
  72. package/dist/proto-sudoku-wc/p-21a020aa.entry.js.map +0 -1
  73. package/dist/proto-sudoku-wc/p-490877ce.js.map +0 -1
  74. package/dist/proto-sudoku-wc/proto-sudoku-wc.esm.js.map +0 -1
@@ -1 +0,0 @@
1
- {"file":"proto-sudoku.entry.js","mappings":"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","names":[],"sources":["./src/components/proto-sudoku/alien.tsx","./src/utils/bag.ts","./src/utils/labels.ts","./node_modules/@stencil/store/dist/index.mjs","./node_modules/ky/distribution/errors/HTTPError.js","./node_modules/ky/distribution/errors/TimeoutError.js","./node_modules/ky/distribution/utils/is.js","./node_modules/ky/distribution/utils/merge.js","./node_modules/ky/distribution/core/constants.js","./node_modules/ky/distribution/utils/normalize.js","./node_modules/ky/distribution/utils/timeout.js","./node_modules/ky/distribution/errors/DOMException.js","./node_modules/ky/distribution/utils/delay.js","./node_modules/ky/distribution/core/Ky.js","./node_modules/ky/distribution/index.js","./src/utils/store.ts","./src/utils/tw-version.ts","./src/utils/tw.ts","./src/components/proto-sudoku/spinner.tsx","./src/components/proto-sudoku/alert.tsx","./src/components/proto-sudoku/alerts.tsx","./src/components/proto-sudoku/fingerprint.tsx","./src/components/proto-sudoku/eswat2-io.tsx","./src/components/proto-sudoku/header.tsx","./src/components/proto-sudoku/button.tsx","./src/components/proto-sudoku/keys.tsx","./src/components/proto-sudoku/cell.tsx","./src/components/proto-sudoku/sudoku-board.tsx","./src/components/proto-sudoku/tw-label.tsx","./src/components/proto-sudoku/tool-bar.tsx","./src/components/proto-sudoku/proto-sudoku.css?tag=proto-sudoku&encapsulation=shadow","./src/components/proto-sudoku/proto-sudoku.tsx"],"sourcesContent":["import { FunctionalComponent, h } from '@stencil/core';\nimport { IconProps } from '../../utils';\n\nconst Alien: FunctionalComponent<IconProps> = props => {\n const hex = props.hex || 'currentColor';\n const klass = props.class;\n const label = props.label || 'alien';\n const size = props.size || 24;\n\n return (\n <svg\n class={klass}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-label=\"title\"\n >\n <title>{label}</title>\n <g fill={hex}>\n <path\n d=\"M10.31 10.93C11.33 12.57 11.18 14.5 9.96 15.28C8.74 16.04 6.92 15.33\n 5.89 13.69C4.87 12.05 5.03 10.1 6.25 9.34C7.47 8.58 9.29 9.29 10.31\n 10.93M12 17.75C14 17.75 14.5 17 14.5 17C14.5 17 14 19 12 19C10 19 9.5\n 17.03 9.5 17C9.5 17 10 17.75 12 17.75M17.75 9.34C18.97 10.1 19.13 12.05\n 18.11 13.69C17.08 15.33 15.26 16.04 14.04 15.28C12.82 14.5 12.67 12.57\n 13.69 10.93C14.71 9.29 16.53 8.58 17.75 9.34M12 20C14.5 20 20 14.86 20\n 11C20 7.14 16.41 4 12 4C7.59 4 4 7.14 4 11C4 14.86 9.5 20 12 20M12 2C17.5\n 2 22 6.04 22 11C22 15.08 16.32 22 12 22C7.68 22 2 15.08 2 11C2 6.04 6.5 2\n 12 2Z\"\n />\n </g>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n );\n};\n\nexport { Alien };\nexport default Alien;\n","const KEY = 'proto-sudoku';\nconst DATA = `${KEY}::data`;\nconst INPUTS = `${KEY}::inputs`;\nconst PICK = `${KEY}::pick`;\n\nconst getForKey = (key: string) => {\n const json = localStorage.getItem(key);\n\n return json ? JSON.parse(json) : undefined;\n};\n\nconst storeForKey = (key: string, value: any) => {\n const json = JSON.stringify(value);\n\n localStorage.setItem(key, json);\n};\n\nconst bag = {\n get: () => {\n return getForKey(DATA);\n },\n store: value => {\n storeForKey(DATA, value);\n },\n inputs: {\n get: (): string[] => {\n const line = getForKey(INPUTS);\n return [...line];\n },\n store: (value: string[]) => {\n storeForKey(INPUTS, value.join(''));\n },\n },\n pick: {\n get: (): number => {\n const pick = getForKey(PICK);\n return pick !== null ? pick : undefined;\n },\n store: (value: number) => {\n storeForKey(PICK, value >= 0 && value < 81 ? value : null);\n },\n },\n};\n\nexport { bag };\nexport default bag;\n","const CHECK: string = 'Check ?';\nconst DELETE: string = 'x';\nconst NEW_PUZZLE: string = 'New Puzzle';\n\nexport { CHECK, DELETE, NEW_PUZZLE };\n","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 unwrap = (val) => (typeof val === 'function' ? val() : val);\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n const unwrappedState = unwrap(defaultState);\n let states = new Map(Object.entries(unwrappedState !== null && unwrappedState !== void 0 ? unwrappedState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n var _a;\n // When resetting the state, the default state may be a function - unwrap it to invoke it.\n // otherwise, the state won't be properly reset\n states = new Map(Object.entries((_a = unwrap(defaultState)) !== null && _a !== void 0 ? _a : {}));\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(unwrappedState, {\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 // We need to unwrap the defaultState because it might be a function.\n // Otherwise we might not be sending the right reset value.\n const unReset = on('reset', () => cb(unwrap(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","// eslint-lint-disable-next-line @typescript-eslint/naming-convention\nexport class HTTPError extends Error {\n constructor(response, request, options) {\n const code = (response.status || response.status === 0) ? response.status : '';\n const title = response.statusText || '';\n const status = `${code} ${title}`.trim();\n const reason = status ? `status code ${status}` : 'an unknown error';\n super(`Request failed with ${reason}`);\n Object.defineProperty(this, \"response\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'HTTPError';\n this.response = response;\n this.request = request;\n this.options = options;\n }\n}\n//# sourceMappingURL=HTTPError.js.map","export class TimeoutError extends Error {\n constructor(request) {\n super('Request timed out');\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'TimeoutError';\n this.request = request;\n }\n}\n//# sourceMappingURL=TimeoutError.js.map","// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isObject = (value) => value !== null && typeof value === 'object';\n//# sourceMappingURL=is.js.map","import { isObject } from './is.js';\nexport const validateAndMerge = (...sources) => {\n for (const source of sources) {\n if ((!isObject(source) || Array.isArray(source)) && typeof source !== 'undefined') {\n throw new TypeError('The `options` argument must be an object');\n }\n }\n return deepMerge({}, ...sources);\n};\nexport const mergeHeaders = (source1 = {}, source2 = {}) => {\n const result = new globalThis.Headers(source1);\n const isHeadersInstance = source2 instanceof globalThis.Headers;\n const source = new globalThis.Headers(source2);\n for (const [key, value] of source.entries()) {\n if ((isHeadersInstance && value === 'undefined') || value === undefined) {\n result.delete(key);\n }\n else {\n result.set(key, value);\n }\n }\n return result;\n};\n// TODO: Make this strongly-typed (no `any`).\nexport const deepMerge = (...sources) => {\n let returnValue = {};\n let headers = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n }\n else if (isObject(source)) {\n for (let [key, value] of Object.entries(source)) {\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n if (isObject(source.headers)) {\n headers = mergeHeaders(headers, source.headers);\n returnValue.headers = headers;\n }\n }\n }\n return returnValue;\n};\n//# sourceMappingURL=merge.js.map","export const supportsRequestStreams = (() => {\n let duplexAccessed = false;\n let hasContentType = false;\n const supportsReadableStream = typeof globalThis.ReadableStream === 'function';\n if (supportsReadableStream) {\n hasContentType = new globalThis.Request('https://a.com', {\n body: new globalThis.ReadableStream(),\n method: 'POST',\n // @ts-expect-error - Types are outdated.\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n }\n return duplexAccessed && !hasContentType;\n})();\nexport const supportsAbortController = typeof globalThis.AbortController === 'function';\nexport const supportsResponseStreams = typeof globalThis.ReadableStream === 'function';\nexport const supportsFormData = typeof globalThis.FormData === 'function';\nexport const requestMethods = ['get', 'post', 'put', 'patch', 'head', 'delete'];\nconst validate = () => undefined;\nvalidate();\nexport const responseTypes = {\n json: 'application/json',\n text: 'text/*',\n formData: 'multipart/form-data',\n arrayBuffer: '*/*',\n blob: '*/*',\n};\n// The maximum value of a 32bit int (see issue #117)\nexport const maxSafeTimeout = 2147483647;\nexport const stop = Symbol('stop');\n//# sourceMappingURL=constants.js.map","import { requestMethods } from '../core/constants.js';\nexport const normalizeRequestMethod = (input) => requestMethods.includes(input) ? input.toUpperCase() : input;\nconst retryMethods = ['get', 'put', 'head', 'delete', 'options', 'trace'];\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\nconst retryAfterStatusCodes = [413, 429, 503];\nconst defaultRetryOptions = {\n limit: 2,\n methods: retryMethods,\n statusCodes: retryStatusCodes,\n afterStatusCodes: retryAfterStatusCodes,\n maxRetryAfter: Number.POSITIVE_INFINITY,\n backoffLimit: Number.POSITIVE_INFINITY,\n};\nexport const normalizeRetryOptions = (retry = {}) => {\n if (typeof retry === 'number') {\n return {\n ...defaultRetryOptions,\n limit: retry,\n };\n }\n if (retry.methods && !Array.isArray(retry.methods)) {\n throw new Error('retry.methods must be an array');\n }\n if (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n throw new Error('retry.statusCodes must be an array');\n }\n return {\n ...defaultRetryOptions,\n ...retry,\n afterStatusCodes: retryAfterStatusCodes,\n };\n};\n//# sourceMappingURL=normalize.js.map","import { TimeoutError } from '../errors/TimeoutError.js';\n// `Promise.race()` workaround (#91)\nexport default async function timeout(request, abortController, options) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (abortController) {\n abortController.abort();\n }\n reject(new TimeoutError(request));\n }, options.timeout);\n void options\n .fetch(request)\n .then(resolve)\n .catch(reject)\n .then(() => {\n clearTimeout(timeoutId);\n });\n });\n}\n//# sourceMappingURL=timeout.js.map","// DOMException is supported on most modern browsers and Node.js 18+.\n// @see https://developer.mozilla.org/en-US/docs/Web/API/DOMException#browser_compatibility\nconst isDomExceptionSupported = Boolean(globalThis.DOMException);\n// TODO: When targeting Node.js 18, use `signal.throwIfAborted()` (https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/throwIfAborted)\nexport function composeAbortError(signal) {\n /*\n NOTE: Use DomException with AbortError name as specified in MDN docs (https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort)\n > When abort() is called, the fetch() promise rejects with an Error of type DOMException, with name AbortError.\n */\n if (isDomExceptionSupported) {\n return new DOMException(signal?.reason ?? 'The operation was aborted.', 'AbortError');\n }\n // DOMException not supported. Fall back to use of error and override name.\n const error = new Error(signal?.reason ?? 'The operation was aborted.');\n error.name = 'AbortError';\n return error;\n}\n//# sourceMappingURL=DOMException.js.map","// https://github.com/sindresorhus/delay/tree/ab98ae8dfcb38e1593286c94d934e70d14a4e111\nimport { composeAbortError } from '../errors/DOMException.js';\nexport default async function delay(ms, { signal }) {\n return new Promise((resolve, reject) => {\n if (signal) {\n if (signal.aborted) {\n reject(composeAbortError(signal));\n return;\n }\n signal.addEventListener('abort', handleAbort, { once: true });\n }\n function handleAbort() {\n reject(composeAbortError(signal));\n clearTimeout(timeoutId);\n }\n const timeoutId = setTimeout(() => {\n signal?.removeEventListener('abort', handleAbort);\n resolve();\n }, ms);\n });\n}\n//# sourceMappingURL=delay.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { TimeoutError } from '../errors/TimeoutError.js';\nimport { deepMerge, mergeHeaders } from '../utils/merge.js';\nimport { normalizeRequestMethod, normalizeRetryOptions } from '../utils/normalize.js';\nimport timeout from '../utils/timeout.js';\nimport delay from '../utils/delay.js';\nimport { maxSafeTimeout, responseTypes, stop, supportsAbortController, supportsFormData, supportsResponseStreams, supportsRequestStreams, } from './constants.js';\nexport class Ky {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n static create(input, options) {\n const ky = new Ky(input, options);\n const fn = async () => {\n if (ky._options.timeout > maxSafeTimeout) {\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n }\n // Delay the fetch so that body method shortcuts can set the Accept header\n await Promise.resolve();\n let response = await ky._fetch();\n for (const hook of ky._options.hooks.afterResponse) {\n // eslint-disable-next-line no-await-in-loop\n const modifiedResponse = await hook(ky.request, ky._options, ky._decorateResponse(response.clone()));\n if (modifiedResponse instanceof globalThis.Response) {\n response = modifiedResponse;\n }\n }\n ky._decorateResponse(response);\n if (!response.ok && ky._options.throwHttpErrors) {\n let error = new HTTPError(response, ky.request, ky._options);\n for (const hook of ky._options.hooks.beforeError) {\n // eslint-disable-next-line no-await-in-loop\n error = await hook(error);\n }\n throw error;\n }\n // If `onDownloadProgress` is passed, it uses the stream API internally\n /* istanbul ignore next */\n if (ky._options.onDownloadProgress) {\n if (typeof ky._options.onDownloadProgress !== 'function') {\n throw new TypeError('The `onDownloadProgress` option must be a function');\n }\n if (!supportsResponseStreams) {\n throw new Error('Streams are not supported in your environment. `ReadableStream` is missing.');\n }\n return ky._stream(response.clone(), ky._options.onDownloadProgress);\n }\n return response;\n };\n const isRetriableMethod = ky._options.retry.methods.includes(ky.request.method.toLowerCase());\n const result = (isRetriableMethod ? ky._retry(fn) : fn());\n for (const [type, mimeType] of Object.entries(responseTypes)) {\n result[type] = async () => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n ky.request.headers.set('accept', ky.request.headers.get('accept') || mimeType);\n const awaitedResult = await result;\n const response = awaitedResult.clone();\n if (type === 'json') {\n if (response.status === 204) {\n return '';\n }\n const arrayBuffer = await response.clone().arrayBuffer();\n const responseSize = arrayBuffer.byteLength;\n if (responseSize === 0) {\n return '';\n }\n if (options.parseJson) {\n return options.parseJson(await response.text());\n }\n }\n return response[type]();\n };\n }\n return result;\n }\n // eslint-disable-next-line complexity\n constructor(input, options = {}) {\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"abortController\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_retryCount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_input\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._input = input;\n this._options = {\n // TODO: credentials can be removed when the spec change is implemented in all browsers. Context: https://www.chromestatus.com/feature/4539473312350208\n credentials: this._input.credentials || 'same-origin',\n ...options,\n headers: mergeHeaders(this._input.headers, options.headers),\n hooks: deepMerge({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: [],\n }, options.hooks),\n method: normalizeRequestMethod(options.method ?? this._input.method),\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n prefixUrl: String(options.prefixUrl || ''),\n retry: normalizeRetryOptions(options.retry),\n throwHttpErrors: options.throwHttpErrors !== false,\n timeout: typeof options.timeout === 'undefined' ? 10000 : options.timeout,\n fetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n };\n if (typeof this._input !== 'string' && !(this._input instanceof URL || this._input instanceof globalThis.Request)) {\n throw new TypeError('`input` must be a string, URL, or Request');\n }\n if (this._options.prefixUrl && typeof this._input === 'string') {\n if (this._input.startsWith('/')) {\n throw new Error('`input` must not begin with a slash when using `prefixUrl`');\n }\n if (!this._options.prefixUrl.endsWith('/')) {\n this._options.prefixUrl += '/';\n }\n this._input = this._options.prefixUrl + this._input;\n }\n if (supportsAbortController) {\n this.abortController = new globalThis.AbortController();\n if (this._options.signal) {\n const originalSignal = this._options.signal;\n this._options.signal.addEventListener('abort', () => {\n this.abortController.abort(originalSignal.reason);\n });\n }\n this._options.signal = this.abortController.signal;\n }\n if (supportsRequestStreams) {\n // @ts-expect-error - Types are outdated.\n this._options.duplex = 'half';\n }\n this.request = new globalThis.Request(this._input, this._options);\n if (this._options.searchParams) {\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const textSearchParams = typeof this._options.searchParams === 'string'\n ? this._options.searchParams.replace(/^\\?/, '')\n : new URLSearchParams(this._options.searchParams).toString();\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const searchParams = '?' + textSearchParams;\n const url = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, searchParams);\n // To provide correct form boundary, Content-Type header should be deleted each time when new Request instantiated from another one\n if (((supportsFormData && this._options.body instanceof globalThis.FormData)\n || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers['content-type'])) {\n this.request.headers.delete('content-type');\n }\n // The spread of `this.request` is required as otherwise it misses the `duplex` option for some reason and throws.\n this.request = new globalThis.Request(new globalThis.Request(url, { ...this.request }), this._options);\n }\n if (this._options.json !== undefined) {\n this._options.body = JSON.stringify(this._options.json);\n this.request.headers.set('content-type', this._options.headers.get('content-type') ?? 'application/json');\n this.request = new globalThis.Request(this.request, { body: this._options.body });\n }\n }\n _calculateRetryDelay(error) {\n this._retryCount++;\n if (this._retryCount < this._options.retry.limit && !(error instanceof TimeoutError)) {\n if (error instanceof HTTPError) {\n if (!this._options.retry.statusCodes.includes(error.response.status)) {\n return 0;\n }\n const retryAfter = error.response.headers.get('Retry-After');\n if (retryAfter && this._options.retry.afterStatusCodes.includes(error.response.status)) {\n let after = Number(retryAfter);\n if (Number.isNaN(after)) {\n after = Date.parse(retryAfter) - Date.now();\n }\n else {\n after *= 1000;\n }\n if (typeof this._options.retry.maxRetryAfter !== 'undefined' && after > this._options.retry.maxRetryAfter) {\n return 0;\n }\n return after;\n }\n if (error.response.status === 413) {\n return 0;\n }\n }\n const BACKOFF_FACTOR = 0.3;\n return Math.min(this._options.retry.backoffLimit, BACKOFF_FACTOR * (2 ** (this._retryCount - 1)) * 1000);\n }\n return 0;\n }\n _decorateResponse(response) {\n if (this._options.parseJson) {\n response.json = async () => this._options.parseJson(await response.text());\n }\n return response;\n }\n async _retry(fn) {\n try {\n return await fn();\n // eslint-disable-next-line @typescript-eslint/no-implicit-any-catch\n }\n catch (error) {\n const ms = Math.min(this._calculateRetryDelay(error), maxSafeTimeout);\n if (ms !== 0 && this._retryCount > 0) {\n await delay(ms, { signal: this._options.signal });\n for (const hook of this._options.hooks.beforeRetry) {\n // eslint-disable-next-line no-await-in-loop\n const hookResult = await hook({\n request: this.request,\n options: this._options,\n error: error,\n retryCount: this._retryCount,\n });\n // If `stop` is returned from the hook, the retry process is stopped\n if (hookResult === stop) {\n return;\n }\n }\n return this._retry(fn);\n }\n throw error;\n }\n }\n async _fetch() {\n for (const hook of this._options.hooks.beforeRequest) {\n // eslint-disable-next-line no-await-in-loop\n const result = await hook(this.request, this._options);\n if (result instanceof Request) {\n this.request = result;\n break;\n }\n if (result instanceof Response) {\n return result;\n }\n }\n if (this._options.timeout === false) {\n return this._options.fetch(this.request.clone());\n }\n return timeout(this.request.clone(), this.abortController, this._options);\n }\n /* istanbul ignore next */\n _stream(response, onDownloadProgress) {\n const totalBytes = Number(response.headers.get('content-length')) || 0;\n let transferredBytes = 0;\n if (response.status === 204) {\n if (onDownloadProgress) {\n onDownloadProgress({ percent: 1, totalBytes, transferredBytes }, new Uint8Array());\n }\n return new globalThis.Response(null, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n return new globalThis.Response(new globalThis.ReadableStream({\n async start(controller) {\n const reader = response.body.getReader();\n if (onDownloadProgress) {\n onDownloadProgress({ percent: 0, transferredBytes: 0, totalBytes }, new Uint8Array());\n }\n async function read() {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n return;\n }\n if (onDownloadProgress) {\n transferredBytes += value.byteLength;\n const percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n onDownloadProgress({ percent, transferredBytes, totalBytes }, value);\n }\n controller.enqueue(value);\n await read();\n }\n await read();\n },\n }), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n}\n//# sourceMappingURL=Ky.js.map","/*! MIT License © Sindre Sorhus */\nimport { Ky } from './core/Ky.js';\nimport { requestMethods, stop } from './core/constants.js';\nimport { validateAndMerge } from './utils/merge.js';\nconst createInstance = (defaults) => {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n const ky = (input, options) => Ky.create(input, validateAndMerge(defaults, options));\n for (const method of requestMethods) {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n ky[method] = (input, options) => Ky.create(input, validateAndMerge(defaults, options, { method }));\n }\n ky.create = (newDefaults) => createInstance(validateAndMerge(newDefaults));\n ky.extend = (newDefaults) => createInstance(validateAndMerge(defaults, newDefaults));\n ky.stop = stop;\n return ky;\n};\nconst ky = createInstance();\nexport default ky;\nexport { HTTPError } from './errors/HTTPError.js';\nexport { TimeoutError } from './errors/TimeoutError.js';\n//# sourceMappingURL=index.js.map","import { createStore } from '@stencil/store';\nimport ky from 'ky';\nimport { bag } from './bag';\nimport {\n AppStore,\n GeoMap,\n ComputeBoxFn,\n ComputeLocsFn,\n ComputeKeysFn,\n GeometryFn,\n InputsFn,\n PuzzleApiData,\n PuzzleCell,\n PuzzleData,\n} from './types';\n\n// --------------------------------------------------------[ mutable store ]\n\nconst storeDef: AppStore = {\n list: [],\n keys: [],\n locs: [],\n loading: false,\n solved: false,\n error: undefined,\n pick: undefined,\n data: undefined,\n};\n\nconst { state } = createStore(storeDef);\n\n// --------------------------------------------------------[ geometry ]\n\n// NOTE: by using Sets here, we don't have to worry about clearing geometry...\nconst geometry: GeoMap = new Map([\n ['row', new Map<number, Set<number>>()],\n ['column', new Map<number, Set<number>>()],\n ['box', new Map<number, Set<number>>()],\n]);\n\nconst keyValues: string[] = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];\n\nconst computeBox: ComputeBoxFn = (row, column) => {\n if (column < 3) {\n return row < 3 ? 0 : row < 6 ? 3 : 6;\n } else {\n if (column < 6) {\n return row < 3 ? 1 : row < 6 ? 4 : 7;\n } else {\n return row < 3 ? 2 : row < 6 ? 5 : 8;\n }\n }\n};\n\nconst computeLocs: ComputeLocsFn = (index, row, column, box) => {\n const data = new Map<string, number>([\n ['row', row],\n ['column', column],\n ['box', box],\n ]);\n const locs = new Set<number>();\n\n data.forEach((value, key) => {\n geometry\n .get(key)\n .get(value)\n .forEach(indx => {\n indx !== index && locs.add(indx);\n });\n });\n\n return Array.from(locs);\n};\n\nconst computeKeys: ComputeKeysFn = locs => {\n const { list } = state;\n const found = new Set<string>();\n\n locs.map(indx => {\n const { key } = list[indx];\n if (key != '.') {\n found.add(key);\n }\n });\n\n const keys = keyValues.filter(key => !found.has(key));\n\n return keys;\n};\n\nconst updateGeometry: GeometryFn = (index, row, column, box) => {\n const data = new Map<string, number>([\n ['row', row],\n ['column', column],\n ['box', box],\n ]);\n\n data.forEach((value, key) => {\n const map = geometry.get(key);\n\n if (map.has(value)) {\n // looking at the set specification, it should be sufficient to just call add\n // https://tc39.es/ecma262/#sec-set.prototype.add\n map.get(value).add(index);\n } else {\n map.set(value, new Set([index]));\n }\n });\n};\n\nconst updateFromInputs: InputsFn = list => {\n const inputs = bag.inputs.get();\n\n inputs.forEach((key, indx) => {\n const cell = list[indx];\n const { isClue } = cell;\n\n if (!isClue) {\n cell.key = key;\n }\n });\n};\n\n// --------------------------------------------------------[ process ]\n\nconst processData = (next: PuzzleData) => {\n if (next) {\n const { puzzle, ref } = next;\n const cells = puzzle ? [...puzzle] : [];\n const line = ref ? atob(ref) : undefined; // decrypt the solution... [ base64 ]\n const solution = line ? [...line] : [];\n\n const list = cells.map((key, indx) => {\n const value = solution[indx];\n const isClue = key === value;\n const row = Math.floor(indx / 9);\n const column = indx % 9;\n const box = computeBox(row, column);\n\n updateGeometry(indx, row, column, box);\n\n return { key, isClue, value, indx, row, column, box };\n });\n\n // NOTE: this only happens once on data change...\n updateFromInputs(list);\n\n state.data = next;\n state.list = list;\n } else {\n state.data = undefined;\n state.list = [];\n }\n};\n\nconst processPick = (next: PuzzleCell) => {\n if (next !== undefined && next.indx != state.pick) {\n const { isClue, indx, row, column, box } = next;\n const locs = computeLocs(indx, row, column, box);\n const keys = isClue ? [] : computeKeys(locs);\n\n state.pick = indx;\n state.keys = keys;\n state.locs = locs;\n // NOTE: we could auto-pick if there's only one key...\n // (keys.length === 1) && next.key = keys[0];\n } else {\n state.pick = undefined;\n state.keys = [];\n state.locs = [];\n }\n savePick(state.pick);\n};\n\n// --------------------------------------------------------[ utils ]\n\nlet api = undefined;\n\nconst platformPrefix = {\n netlify: '/.netlify/functions',\n vercel: 'https://sudoku-rust-api.vercel.app/api',\n};\n\nconst getPrefixFor = (platform: string) => {\n const keys = Object.keys(platformPrefix);\n const target = keys.includes(platform) ? platform : 'vercel';\n\n return platformPrefix[target];\n};\n\nconst initApi = (platform: string) => {\n const prefix = getPrefixFor(platform);\n\n api = ky.extend({\n hooks: {\n beforeRequest: [\n request => {\n request.headers.set('X-Requested-With', 'ky');\n request.headers.set('X-Custom-Header', 'foobar');\n },\n ],\n },\n prefixUrl: prefix,\n timeout: 10000,\n });\n};\n\nconst saveInputs = (inputs: string[]) => {\n bag.inputs.store(inputs);\n};\n\nconst savePick = (pick: number) => {\n bag.pick.store(pick);\n};\n\nconst clearStore = (loading = false) => {\n state.list = [];\n state.keys = [];\n state.locs = [];\n state.loading = loading;\n state.solved = false;\n state.error = undefined;\n state.pick = undefined;\n state.data = undefined;\n};\n\nconst updateStore = (data: PuzzleApiData, save: boolean = true) => {\n const { puzzle, ref } = data;\n\n if (save) {\n bag.inputs.store([]);\n bag.store(data);\n }\n\n processData({ puzzle, ref });\n};\n\n// --------------------------------------------------------[ actions ]\n\nconst initApp = (platform: string) => {\n initApi(platform);\n clearStore();\n // this retrieves the last data we stored in the bag...\n const data = bag.get();\n const pick = bag.pick.get();\n\n if (data) {\n updateStore(data, false);\n\n if (pick >= 0) {\n const { list } = state;\n const cell: PuzzleCell = list[pick];\n\n processPick(cell);\n }\n }\n};\n\nconst refresh = async () => {\n clearStore(true);\n\n saveInputs([]);\n savePick(state.pick);\n\n try {\n // fetch a new puzzle from the api...\n const data: PuzzleApiData = await api.get('puzzle').json();\n\n updateStore(data);\n } catch (err) {\n // handle error...\n const { message } = err;\n\n console.log('-- ', message);\n console.log(err);\n\n state.error = message;\n } finally {\n // always executed\n state.loading = false;\n }\n};\n\nconst select = (cell: PuzzleCell) => {\n processPick(cell);\n};\n\nconst redraw = (list: PuzzleCell[]) => {\n state.list = [...list];\n list.length = 0;\n};\n\nconst check = () => {\n const { list } = state;\n const inputs: string[] = [];\n\n let errors: number = 0;\n let found: number = 0;\n let clues: number = 0;\n\n list.forEach(cell => {\n const { key, value, isClue } = cell;\n\n if (!isClue) {\n if (key !== '.') {\n if (key !== value) {\n errors = errors + 1;\n cell.key = '.';\n } else {\n found = found + 1;\n }\n }\n } else {\n clues = clues + 1;\n }\n\n inputs.push(cell.key);\n });\n\n const total = clues + found;\n\n found ? saveInputs(inputs) : saveInputs([]);\n\n if (errors > 0) {\n redraw(list);\n } else {\n if (total === 81) {\n state.solved = true;\n }\n }\n};\n\nconst input = (key: string) => {\n const { pick, list } = state;\n const cell = list[pick];\n\n cell.key = key;\n\n redraw(list);\n};\n\nconst actions = {\n initApp,\n refresh,\n select,\n check,\n input,\n};\n\nexport { state, actions };\nexport default state;\n","// WARNING: generated file...\nconst TW_VERSION = '3.2.4';\n\nexport { TW_VERSION };\nexport default TW_VERSION;\n","const tw = (...classes: (false | null | undefined | string)[]): string => {\n return classes.filter(Boolean).join(' ');\n};\n\nexport { tw };\nexport default tw;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { tw, IconProps } from '../../utils';\n\nconst Spinner: FunctionalComponent<IconProps> = props => {\n const hex = props.hex || 'currentColor';\n const klass = props.class || '';\n const label = props.label || 'loading...';\n const size = props.size || 24;\n\n return (\n <svg\n class={tw(klass, 'animate-spin')}\n width={size}\n height={size}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-label=\"title\"\n >\n <title>{label}</title>\n <g>\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke={hex}\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill={hex}\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </g>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n );\n};\n\nexport { Spinner };\nexport default Spinner;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Alien } from './alien';\nimport { Spinner } from './spinner';\n\ninterface AlertProps {\n message: string;\n salute?: string;\n spinner?: boolean;\n}\n\nconst Alert: FunctionalComponent<AlertProps> = props => {\n const { message, salute, spinner = false } = props;\n\n return (\n <div class=\"mt-5 flex h-24px flex-row items-center\">\n {spinner ? <Spinner class=\"mr-2\" /> : <Alien class=\"mr-2\" />}\n {salute ? <label class=\"mr-1 font-bold\">{salute}:</label> : ''}\n <label class=\"italic\">{message}</label>\n </div>\n );\n};\n\nexport { Alert };\nexport default Alert;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Alert } from './alert';\nimport { state } from '../../utils';\n\nconst Alerts: FunctionalComponent = _props => {\n const { solved, loading, error } = state;\n const play = !loading && !error && !solved;\n return (\n <div class=\"flex flex-col\">\n {play ? <Alert message=\"Welcome, are you ready to play?...\" /> : ''}\n {loading ? <Alert message=\"Loading...\" spinner={true} /> : ''}\n {error ? <Alert message={error} salute=\"ERROR\" /> : ''}\n {solved ? <Alert message=\"You solved the puzzle!!\" /> : ''}\n </div>\n );\n};\n\nexport { Alerts };\nexport default Alert;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { IconProps } from '../../utils';\n\nconst Fingerprint: FunctionalComponent<IconProps> = props => {\n const hex = props.hex || 'currentColor';\n const klass = props.class;\n const label = props.label || 'fingerprint';\n const size = props.size || 24;\n\n return (\n <svg\n class={klass}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-label=\"title\"\n >\n <title>{label}</title>\n <g fill={hex}>\n <path\n d=\"M17.81,4.47C17.73,4.47 17.65,4.45 17.58,4.41C15.66,3.42 14,3\n 12,3C10.03,3 8.15,3.47 6.44,4.41C6.2,4.54 5.9,4.45 5.76,4.21C5.63,3.97\n 5.72,3.66 5.96,3.53C7.82,2.5 9.86,2 12,2C14.14,2 16,2.47\n 18.04,3.5C18.29,3.65 18.38,3.95 18.25,4.19C18.16,4.37 18,4.47\n 17.81,4.47M3.5,9.72C3.4,9.72 3.3,9.69 3.21,9.63C3,9.47 2.93,9.16\n 3.09,8.93C4.08,7.53 5.34,6.43 6.84,5.66C10,4.04 14,4.03\n 17.15,5.65C18.65,6.42 19.91,7.5 20.9,8.9C21.06,9.12 21,9.44\n 20.78,9.6C20.55,9.76 20.24,9.71 20.08,9.5C19.18,8.22 18.04,7.23\n 16.69,6.54C13.82,5.07 10.15,5.07 7.29,6.55C5.93,7.25 4.79,8.25\n 3.89,9.5C3.81,9.65 3.66,9.72 3.5,9.72M9.75,21.79C9.62,21.79 9.5,21.74\n 9.4,21.64C8.53,20.77 8.06,20.21 7.39,19C6.7,17.77 6.34,16.27\n 6.34,14.66C6.34,11.69 8.88,9.27 12,9.27C15.12,9.27 17.66,11.69\n 17.66,14.66A0.5,0.5 0 0,1 17.16,15.16A0.5,0.5 0 0,1\n 16.66,14.66C16.66,12.24 14.57,10.27 12,10.27C9.43,10.27 7.34,12.24\n 7.34,14.66C7.34,16.1 7.66,17.43 8.27,18.5C8.91,19.66 9.35,20.15\n 10.12,20.93C10.31,21.13 10.31,21.44 10.12,21.64C10,21.74 9.88,21.79\n 9.75,21.79M16.92,19.94C15.73,19.94 14.68,19.64 13.82,19.05C12.33,18.04\n 11.44,16.4 11.44,14.66A0.5,0.5 0 0,1 11.94,14.16A0.5,0.5 0 0,1\n 12.44,14.66C12.44,16.07 13.16,17.4 14.38,18.22C15.09,18.7 15.92,18.93\n 16.92,18.93C17.16,18.93 17.56,18.9 17.96,18.83C18.23,18.78 18.5,18.96\n 18.54,19.24C18.59,19.5 18.41,19.77 18.13,19.82C17.56,19.93 17.06,19.94\n 16.92,19.94M14.91,22C14.87,22 14.82,22 14.78,22C13.19,21.54 12.15,20.95\n 11.06,19.88C9.66,18.5 8.89,16.64 8.89,14.66C8.89,13.04 10.27,11.72\n 11.97,11.72C13.67,11.72 15.05,13.04 15.05,14.66C15.05,15.73 16,16.6\n 17.13,16.6C18.28,16.6 19.21,15.73 19.21,14.66C19.21,10.89 15.96,7.83\n 11.96,7.83C9.12,7.83 6.5,9.41 5.35,11.86C4.96,12.67 4.76,13.62\n 4.76,14.66C4.76,15.44 4.83,16.67 5.43,18.27C5.53,18.53 5.4,18.82\n 5.14,18.91C4.88,19 4.59,18.87 4.5,18.62C4,17.31 3.77,16\n 3.77,14.66C3.77,13.46 4,12.37 4.45,11.42C5.78,8.63 8.73,6.82\n 11.96,6.82C16.5,6.82 20.21,10.33 20.21,14.65C20.21,16.27 18.83,17.59\n 17.13,17.59C15.43,17.59 14.05,16.27 14.05,14.65C14.05,13.58 13.12,12.71\n 11.97,12.71C10.82,12.71 9.89,13.58 9.89,14.65C9.89,16.36 10.55,17.96\n 11.76,19.16C12.71,20.1 13.62,20.62 15.03,21C15.3,21.08 15.45,21.36\n 15.38,21.62C15.33,21.85 15.12,22 14.91,22Z\"\n />\n </g>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n );\n};\n\nexport { Fingerprint };\nexport default Fingerprint;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Fingerprint } from './fingerprint';\n\nconst url: string = 'https://eswat2.dev';\nconst who: string = 'eswat2';\n\nconst Eswat2Io: FunctionalComponent = _props => {\n return (\n <a\n class=\"absolute top-0 right-0 text-clrs-gray hover:text-clrs-navy\"\n href={url}\n aria-label={who}\n title={who}\n >\n <Fingerprint label={who} />\n </a>\n );\n};\n\nexport { Eswat2Io };\nexport default Eswat2Io;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { tw } from '../../utils';\n\nconst Header: FunctionalComponent = (_props, children) => {\n return (\n <h1\n class={tw(\n 'text-center uppercase text-clrs-red',\n 'mr-0 ml-0 mt-11 mb-11',\n 'text-6xl font-thin',\n )}\n >\n {children}\n </h1>\n );\n};\n\nexport { Header };\nexport default Header;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { tw, VoidFn, CHECK, NEW_PUZZLE, DELETE } from '../../utils';\n\ninterface ButtonProps {\n label: string;\n callback: VoidFn;\n matched?: boolean;\n}\n\nconst Button: FunctionalComponent<ButtonProps> = props => {\n const { label, callback, matched = false } = props;\n\n return (\n <button\n class={tw(\n 'rounded-md border border-solid border-clrs-slate4 font-bold',\n label === CHECK\n ? 'mr-2 bg-clrs-yellow px-3 py-2 text-clrs-navy'\n : label === NEW_PUZZLE\n ? 'mr-2 bg-clrs-navy px-3 py-2 text-white'\n : label === DELETE\n ? 'mr-1 bg-clrs-red px-2 py-1 text-white'\n : matched\n ? 'mr-1 bg-clrs-slate4 px-2 py-1 text-white'\n : 'mr-1 bg-gray-50 px-2 py-1 text-clrs-navy',\n )}\n onClick={callback}\n >\n {label}\n </button>\n );\n};\n\nexport { Button };\nexport default Button;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Button } from './button';\nimport { actions, state, DELETE } from '../../utils';\n\nconst Keys: FunctionalComponent = _props => {\n const { keys, list, pick, solved } = state;\n\n const genHandler = (key: string) => {\n return () => {\n actions.input(key);\n };\n };\n\n const values = solved ? [] : keys;\n const cell = pick != undefined ? list[pick] : undefined;\n\n return (\n <div class=\"mt-2 flex flex-row justify-end\">\n {!solved && cell && !cell.isClue && cell.key != '.' ? (\n <Button label={DELETE} callback={genHandler('.')} />\n ) : (\n ''\n )}\n {values.map((key: string) => {\n return (\n <Button\n label={key}\n callback={genHandler(key)}\n matched={cell.key === key}\n />\n );\n })}\n </div>\n );\n};\n\nexport { Keys };\nexport default Keys;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { actions, tw, PuzzleCell } from '../../utils';\n\n// NOTE: building indx mapping for the border highlighting...\nconst borderRight = [\n 2, 5, 11, 14, 20, 23, 29, 32, 38, 41, 47, 50, 56, 59, 65, 68, 74, 77,\n];\nconst borderLeft = borderRight.map(key => key + 1);\nconst borderBottom = [\n 18, 19, 20, 21, 22, 23, 24, 25, 26, 45, 46, 47, 48, 49, 50, 51, 52, 53,\n];\nconst borderTop = borderBottom.map(key => key + 9);\n\ninterface CellProps {\n cell: PuzzleCell;\n focus: boolean;\n selected: boolean;\n solved: boolean;\n}\n\n// Functional components return JSX...\nconst Cell: FunctionalComponent<CellProps> = props => {\n const { cell, focus, selected, solved } = props;\n const { key, isClue, indx } = cell;\n const clue: string = key != '.' ? key : '';\n\n const genHandler = (cell: PuzzleCell, solved: boolean) => {\n return () => {\n if (!solved) {\n actions.select(cell);\n }\n };\n };\n\n return (\n <label\n class={tw(\n `cell-${indx}`,\n borderRight.includes(indx) ? 'border-xbr-clrs-navy' : '',\n borderLeft.includes(indx) ? 'border-xbl-clrs-navy' : '',\n borderBottom.includes(indx) ? 'border-xbb-clrs-navy' : '',\n borderTop.includes(indx) ? 'border-xbt-clrs-navy' : '',\n 'h-8 w-8 border border-solid text-center leading-8',\n selected\n ? 'border-clrs-red bg-clrs-red-a50 text-clrs-red'\n : focus\n ? 'border-clrs-gray bg-clrs-green-a50 font-bold'\n : isClue\n ? 'border-clrs-gray bg-clrs-silver'\n : clue !== ''\n ? 'border-clrs-gray text-clrs-red'\n : 'border-clrs-gray',\n )}\n onClick={genHandler(cell, solved)}\n >\n {clue}\n </label>\n );\n};\n\nexport { Cell };\nexport default Cell;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Cell } from './cell';\nimport { state, tw } from '../../utils';\n\nconst SudokuBoard: FunctionalComponent = _props => {\n const { list, pick, locs, solved } = state;\n\n return (\n <div\n class={tw(\n 'flex flex-row flex-wrap',\n 'border border-solid border-clrs-navy',\n 'h-76p5 w-76p5 text-lg',\n )}\n >\n {list.map((cell, index) => {\n const selected: boolean = solved ? false : index === pick;\n const focus: boolean = solved ? false : locs.includes(index);\n\n return (\n <Cell cell={cell} focus={focus} selected={selected} solved={solved} />\n );\n })}\n </div>\n );\n};\n\nexport { SudokuBoard };\nexport default SudokuBoard;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { TW_VERSION } from '../../utils';\n\nconst TwLabel: FunctionalComponent = _props => {\n return (\n <label class=\"ml-auto align-top text-xs italic text-clrs-slate4\">\n Tailwind {TW_VERSION}\n </label>\n );\n};\n\nexport { TwLabel };\nexport default TwLabel;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Button } from './button';\nimport { TwLabel } from './tw-label';\nimport { actions, state, VoidFn, CHECK, NEW_PUZZLE } from '../../utils';\n\nconst handleRefresh = (actions: any): VoidFn => {\n return () => {\n actions.refresh();\n };\n};\n\nconst handleCheck = (actions: any): VoidFn => {\n return () => {\n actions.check();\n };\n};\n\nconst ToolBar: FunctionalComponent = _props => {\n const { list, solved } = state;\n\n return (\n <div class=\"flex flex-row\">\n <Button label={NEW_PUZZLE} callback={handleRefresh(actions)} />\n {list.length === 81 && !solved ? (\n <Button label={CHECK} callback={handleCheck(actions)} />\n ) : (\n ''\n )}\n <TwLabel />\n </div>\n );\n};\n\nexport { ToolBar };\nexport default ToolBar;\n","*,\n::before,\n::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n.ds1-main {\n margin: 1.5rem;\n display: flex;\n flex-direction: column;\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,\n 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n color: var(--clrs-navy, #001f3f);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.top-0 {\n top: 0px;\n}\n\n.right-0 {\n right: 0px;\n}\n\n.mt-5 {\n margin-top: 1.25rem;\n}\n\n.mr-2 {\n margin-right: 0.5rem;\n}\n\n.mr-1 {\n margin-right: 0.25rem;\n}\n\n.mr-0 {\n margin-right: 0px;\n}\n\n.ml-0 {\n margin-left: 0px;\n}\n\n.mt-11 {\n margin-top: 2.75rem;\n}\n\n.mb-11 {\n margin-bottom: 2.75rem;\n}\n\n.mt-2 {\n margin-top: 0.5rem;\n}\n\n.ml-auto {\n margin-left: auto;\n}\n\n.flex {\n display: flex;\n}\n\n.h-24px {\n height: 24px;\n}\n\n.h-8 {\n height: 2rem;\n}\n\n.h-76p5 {\n height: 19.125rem;\n}\n\n.w-8 {\n width: 2rem;\n}\n\n.w-76p5 {\n width: 19.125rem;\n}\n\n.max-w-min {\n max-width: -moz-min-content;\n max-width: min-content;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.animate-spin {\n animation: spin 1s linear infinite;\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-end {\n justify-content: flex-end;\n}\n\n.rounded-md {\n border-radius: 0.375rem;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-solid {\n border-style: solid;\n}\n\n.border-clrs-slate4 {\n border-color: var(--clrs-slate4, #4e5964);\n}\n\n.border-clrs-red {\n border-color: var(--clrs-red, #ff4136);\n}\n\n.border-clrs-gray {\n border-color: var(--clrs-gray, #aaaaaa);\n}\n\n.border-clrs-navy {\n border-color: var(--clrs-navy, #001f3f);\n}\n\n.bg-clrs-yellow {\n background-color: var(--clrs-yellow, #ffdc00);\n}\n\n.bg-clrs-navy {\n background-color: var(--clrs-navy, #001f3f);\n}\n\n.bg-clrs-red {\n background-color: var(--clrs-red, #ff4136);\n}\n\n.bg-clrs-slate4 {\n background-color: var(--clrs-slate4, #4e5964);\n}\n\n.bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity));\n}\n\n.bg-clrs-red-a50 {\n background-color: var(--clrs-red-a50, #ff413650);\n}\n\n.bg-clrs-green-a50 {\n background-color: var(--clrs-green-a50, #2ecc4050);\n}\n\n.bg-clrs-silver {\n background-color: var(--clrs-silver, #dddddd);\n}\n\n.p-0\\.5 {\n padding: 0.125rem;\n}\n\n.p-0 {\n padding: 0px;\n}\n\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-top {\n vertical-align: top;\n}\n\n.text-6xl {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.font-thin {\n font-weight: 100;\n}\n\n.uppercase {\n text-transform: uppercase;\n}\n\n.italic {\n font-style: italic;\n}\n\n.leading-8 {\n line-height: 2rem;\n}\n\n.text-clrs-navy {\n color: var(--clrs-navy, #001f3f);\n}\n\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.text-clrs-red {\n color: var(--clrs-red, #ff4136);\n}\n\n.text-clrs-gray {\n color: var(--clrs-gray, #aaaaaa);\n}\n\n.text-clrs-slate4 {\n color: var(--clrs-slate4, #4e5964);\n}\n\n.opacity-25 {\n opacity: 0.25;\n}\n\n.opacity-75 {\n opacity: 0.75;\n}\n\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),\n 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.border-xbb-clrs-navy {\n border-bottom: 1px solid var(--clrs-navy, #001f3f) !important;\n}\n\n.border-xbt-clrs-navy {\n border-top: 1px solid var(--clrs-navy, #001f3f) !important;\n}\n\n.border-xbl-clrs-navy {\n border-left: 1px solid var(--clrs-navy, #001f3f) !important;\n}\n\n.border-xbr-clrs-navy {\n border-right: 1px solid var(--clrs-navy, #001f3f) !important;\n}\n\n.hover\\:text-clrs-navy:hover {\n color: var(--clrs-navy, #001f3f);\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport { Alerts } from './alerts';\nimport { Eswat2Io } from './eswat2-io';\nimport { Header } from './header';\nimport { Keys } from './keys';\nimport { SudokuBoard } from './sudoku-board';\nimport { ToolBar } from './tool-bar';\nimport { actions } from '../../utils';\n\n@Component({\n tag: 'proto-sudoku',\n styleUrl: 'proto-sudoku.css',\n shadow: true,\n})\nexport class ProtoSudoku {\n @Prop() tag: string = 'proto-sudoku';\n @Prop() platform: string = 'vercel';\n\n componentDidLoad() {\n actions.initApp(this.platform);\n }\n\n render() {\n return (\n <div id=\"app\" class=\"ds1-main relative max-w-min p-0.5\">\n <Eswat2Io />\n <Header>Sudoku</Header>\n <SudokuBoard />\n <Keys />\n <hr class=\"ml-0 mr-0\" />\n <ToolBar />\n <Alerts />\n </div>\n );\n }\n}\n"],"version":3}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- import{h as t,g as e,f as r,r as o}from"./p-490877ce.js";const s=e=>{const r=e.hex||"currentColor";const o=e.class;const s=e.label||"alien";const n=e.size||24;return t("svg",{class:o,width:n,height:n,viewBox:"0 0 24 24",role:"img","aria-label":"title"},t("title",null,s),t("g",{fill:r},t("path",{d:"M10.31 10.93C11.33 12.57 11.18 14.5 9.96 15.28C8.74 16.04 6.92 15.33\n 5.89 13.69C4.87 12.05 5.03 10.1 6.25 9.34C7.47 8.58 9.29 9.29 10.31\n 10.93M12 17.75C14 17.75 14.5 17 14.5 17C14.5 17 14 19 12 19C10 19 9.5\n 17.03 9.5 17C9.5 17 10 17.75 12 17.75M17.75 9.34C18.97 10.1 19.13 12.05\n 18.11 13.69C17.08 15.33 15.26 16.04 14.04 15.28C12.82 14.5 12.67 12.57\n 13.69 10.93C14.71 9.29 16.53 8.58 17.75 9.34M12 20C14.5 20 20 14.86 20\n 11C20 7.14 16.41 4 12 4C7.59 4 4 7.14 4 11C4 14.86 9.5 20 12 20M12 2C17.5\n 2 22 6.04 22 11C22 15.08 16.32 22 12 22C7.68 22 2 15.08 2 11C2 6.04 6.5 2\n 12 2Z"})),t("path",{d:"M0 0h24v24H0z",fill:"none"}))};const n="proto-sudoku";const i=`${n}::data`;const a=`${n}::inputs`;const l=`${n}::pick`;const c=t=>{const e=localStorage.getItem(t);return e?JSON.parse(e):undefined};const f=(t,e)=>{const r=JSON.stringify(e);localStorage.setItem(t,r)};const u={get:()=>c(i),store:t=>{f(i,t)},inputs:{get:()=>{const t=c(a);return[...t]},store:t=>{f(a,t.join(""))}},pick:{get:()=>{const t=c(l);return t!==null?t:undefined},store:t=>{f(l,t>=0&&t<81?t:null)}}};const d="Check ?";const h="x";const p="New Puzzle";const b=(t,e,r)=>{const o=t.get(e);if(!o){t.set(e,[r])}else if(!o.includes(r)){o.push(r)}};const g=(t,e)=>{let r;return(...o)=>{if(r){clearTimeout(r)}r=setTimeout((()=>{r=0;t(...o)}),e)}};const w=t=>!("isConnected"in t)||t.isConnected;const m=g((t=>{for(let e of t.keys()){t.set(e,t.get(e).filter(w))}}),2e3);const y=()=>{if(typeof e!=="function"){return{}}const t=new Map;return{dispose:()=>t.clear(),get:r=>{const o=e();if(o){b(t,r,o)}},set:e=>{const o=t.get(e);if(o){t.set(e,o.filter(r))}m(t)},reset:()=>{t.forEach((t=>t.forEach(r)));m(t)}}};const x=t=>typeof t==="function"?t():t;const v=(t,e=((t,e)=>t!==e))=>{const r=x(t);let o=new Map(Object.entries(r!==null&&r!==void 0?r:{}));const s={dispose:[],get:[],set:[],reset:[]};const n=()=>{var e;o=new Map(Object.entries((e=x(t))!==null&&e!==void 0?e:{}));s.reset.forEach((t=>t()))};const i=()=>{s.dispose.forEach((t=>t()));n()};const a=t=>{s.get.forEach((e=>e(t)));return o.get(t)};const l=(t,r)=>{const n=o.get(t);if(e(r,n,t)){o.set(t,r);s.set.forEach((e=>e(t,r,n)))}};const c=typeof Proxy==="undefined"?{}:new Proxy(r,{get(t,e){return a(e)},ownKeys(t){return Array.from(o.keys())},getOwnPropertyDescriptor(){return{enumerable:true,configurable:true}},has(t,e){return o.has(e)},set(t,e,r){l(e,r);return true}});const f=(t,e)=>{s[t].push(e);return()=>{C(s[t],e)}};const u=(e,r)=>{const o=f("set",((t,o)=>{if(t===e){r(o)}}));const s=f("reset",(()=>r(x(t)[e])));return()=>{o();s()}};const d=(...t)=>{const e=t.reduce(((t,e)=>{if(e.set){t.push(f("set",e.set))}if(e.get){t.push(f("get",e.get))}if(e.reset){t.push(f("reset",e.reset))}if(e.dispose){t.push(f("dispose",e.dispose))}return t}),[]);return()=>e.forEach((t=>t()))};const h=t=>{const e=o.get(t);s.set.forEach((r=>r(t,e,e)))};return{state:c,get:a,set:l,on:f,onChange:u,use:d,dispose:i,reset:n,forceUpdate:h}};const C=(t,e)=>{const r=t.indexOf(e);if(r>=0){t[r]=t[t.length-1];t.length--}};const k=(t,e)=>{const r=v(t,e);r.use(y());return r};class T extends Error{constructor(t,e,r){const o=t.status||t.status===0?t.status:"";const s=t.statusText||"";const n=`${o} ${s}`.trim();const i=n?`status code ${n}`:"an unknown error";super(`Request failed with ${i}`);Object.defineProperty(this,"response",{enumerable:true,configurable:true,writable:true,value:void 0});Object.defineProperty(this,"request",{enumerable:true,configurable:true,writable:true,value:void 0});Object.defineProperty(this,"options",{enumerable:true,configurable:true,writable:true,value:void 0});this.name="HTTPError";this.response=t;this.request=e;this.options=r}}class M extends Error{constructor(t){super("Request timed out");Object.defineProperty(this,"request",{enumerable:true,configurable:true,writable:true,value:void 0});this.name="TimeoutError";this.request=t}}const j=t=>t!==null&&typeof t==="object";const R=(...t)=>{for(const e of t){if((!j(e)||Array.isArray(e))&&typeof e!=="undefined"){throw new TypeError("The `options` argument must be an object")}}return z({},...t)};const S=(t={},e={})=>{const r=new globalThis.Headers(t);const o=e instanceof globalThis.Headers;const s=new globalThis.Headers(e);for(const[t,e]of s.entries()){if(o&&e==="undefined"||e===undefined){r.delete(t)}else{r.set(t,e)}}return r};const z=(...t)=>{let e={};let r={};for(const o of t){if(Array.isArray(o)){if(!Array.isArray(e)){e=[]}e=[...e,...o]}else if(j(o)){for(let[t,r]of Object.entries(o)){if(j(r)&&t in e){r=z(e[t],r)}e={...e,[t]:r}}if(j(o.headers)){r=S(r,o.headers);e.headers=r}}}return e};const E=(()=>{let t=false;let e=false;const r=typeof globalThis.ReadableStream==="function";if(r){e=new globalThis.Request("https://a.com",{body:new globalThis.ReadableStream,method:"POST",get duplex(){t=true;return"half"}}).headers.has("Content-Type")}return t&&!e})();const A=typeof globalThis.AbortController==="function";const O=typeof globalThis.ReadableStream==="function";const B=typeof globalThis.FormData==="function";const U=["get","post","put","patch","head","delete"];const N={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"};const P=2147483647;const q=Symbol("stop");const $=t=>U.includes(t)?t.toUpperCase():t;const _=["get","put","head","delete","options","trace"];const D=[408,413,429,500,502,503,504];const H=[413,429,503];const L={limit:2,methods:_,statusCodes:D,afterStatusCodes:H,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY};const I=(t={})=>{if(typeof t==="number"){return{...L,limit:t}}if(t.methods&&!Array.isArray(t.methods)){throw new Error("retry.methods must be an array")}if(t.statusCodes&&!Array.isArray(t.statusCodes)){throw new Error("retry.statusCodes must be an array")}return{...L,...t,afterStatusCodes:H}};async function J(t,e,r){return new Promise(((o,s)=>{const n=setTimeout((()=>{if(e){e.abort()}s(new M(t))}),r.timeout);void r.fetch(t).then(o).catch(s).then((()=>{clearTimeout(n)}))}))}const W=Boolean(globalThis.DOMException);function X(t){if(W){return new DOMException(t?.reason??"The operation was aborted.","AbortError")}const e=new Error(t?.reason??"The operation was aborted.");e.name="AbortError";return e}async function Z(t,{signal:e}){return new Promise(((r,o)=>{if(e){if(e.aborted){o(X(e));return}e.addEventListener("abort",s,{once:true})}function s(){o(X(e));clearTimeout(n)}const n=setTimeout((()=>{e?.removeEventListener("abort",s);r()}),t)}))}class F{static create(t,e){const r=new F(t,e);const o=async()=>{if(r._options.timeout>P){throw new RangeError(`The \`timeout\` option cannot be greater than ${P}`)}await Promise.resolve();let t=await r._fetch();for(const e of r._options.hooks.afterResponse){const o=await e(r.request,r._options,r._decorateResponse(t.clone()));if(o instanceof globalThis.Response){t=o}}r._decorateResponse(t);if(!t.ok&&r._options.throwHttpErrors){let e=new T(t,r.request,r._options);for(const t of r._options.hooks.beforeError){e=await t(e)}throw e}if(r._options.onDownloadProgress){if(typeof r._options.onDownloadProgress!=="function"){throw new TypeError("The `onDownloadProgress` option must be a function")}if(!O){throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.")}return r._stream(t.clone(),r._options.onDownloadProgress)}return t};const s=r._options.retry.methods.includes(r.request.method.toLowerCase());const n=s?r._retry(o):o();for(const[t,o]of Object.entries(N)){n[t]=async()=>{r.request.headers.set("accept",r.request.headers.get("accept")||o);const s=await n;const i=s.clone();if(t==="json"){if(i.status===204){return""}const t=await i.clone().arrayBuffer();const r=t.byteLength;if(r===0){return""}if(e.parseJson){return e.parseJson(await i.text())}}return i[t]()}}return n}constructor(t,e={}){Object.defineProperty(this,"request",{enumerable:true,configurable:true,writable:true,value:void 0});Object.defineProperty(this,"abortController",{enumerable:true,configurable:true,writable:true,value:void 0});Object.defineProperty(this,"_retryCount",{enumerable:true,configurable:true,writable:true,value:0});Object.defineProperty(this,"_input",{enumerable:true,configurable:true,writable:true,value:void 0});Object.defineProperty(this,"_options",{enumerable:true,configurable:true,writable:true,value:void 0});this._input=t;this._options={credentials:this._input.credentials||"same-origin",...e,headers:S(this._input.headers,e.headers),hooks:z({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},e.hooks),method:$(e.method??this._input.method),prefixUrl:String(e.prefixUrl||""),retry:I(e.retry),throwHttpErrors:e.throwHttpErrors!==false,timeout:typeof e.timeout==="undefined"?1e4:e.timeout,fetch:e.fetch??globalThis.fetch.bind(globalThis)};if(typeof this._input!=="string"&&!(this._input instanceof URL||this._input instanceof globalThis.Request)){throw new TypeError("`input` must be a string, URL, or Request")}if(this._options.prefixUrl&&typeof this._input==="string"){if(this._input.startsWith("/")){throw new Error("`input` must not begin with a slash when using `prefixUrl`")}if(!this._options.prefixUrl.endsWith("/")){this._options.prefixUrl+="/"}this._input=this._options.prefixUrl+this._input}if(A){this.abortController=new globalThis.AbortController;if(this._options.signal){const t=this._options.signal;this._options.signal.addEventListener("abort",(()=>{this.abortController.abort(t.reason)}))}this._options.signal=this.abortController.signal}if(E){this._options.duplex="half"}this.request=new globalThis.Request(this._input,this._options);if(this._options.searchParams){const t=typeof this._options.searchParams==="string"?this._options.searchParams.replace(/^\?/,""):new URLSearchParams(this._options.searchParams).toString();const e="?"+t;const r=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,e);if((B&&this._options.body instanceof globalThis.FormData||this._options.body instanceof URLSearchParams)&&!(this._options.headers&&this._options.headers["content-type"])){this.request.headers.delete("content-type")}this.request=new globalThis.Request(new globalThis.Request(r,{...this.request}),this._options)}if(this._options.json!==undefined){this._options.body=JSON.stringify(this._options.json);this.request.headers.set("content-type",this._options.headers.get("content-type")??"application/json");this.request=new globalThis.Request(this.request,{body:this._options.body})}}_calculateRetryDelay(t){this._retryCount++;if(this._retryCount<this._options.retry.limit&&!(t instanceof M)){if(t instanceof T){if(!this._options.retry.statusCodes.includes(t.response.status)){return 0}const e=t.response.headers.get("Retry-After");if(e&&this._options.retry.afterStatusCodes.includes(t.response.status)){let t=Number(e);if(Number.isNaN(t)){t=Date.parse(e)-Date.now()}else{t*=1e3}if(typeof this._options.retry.maxRetryAfter!=="undefined"&&t>this._options.retry.maxRetryAfter){return 0}return t}if(t.response.status===413){return 0}}const e=.3;return Math.min(this._options.retry.backoffLimit,e*2**(this._retryCount-1)*1e3)}return 0}_decorateResponse(t){if(this._options.parseJson){t.json=async()=>this._options.parseJson(await t.text())}return t}async _retry(t){try{return await t()}catch(e){const r=Math.min(this._calculateRetryDelay(e),P);if(r!==0&&this._retryCount>0){await Z(r,{signal:this._options.signal});for(const t of this._options.hooks.beforeRetry){const r=await t({request:this.request,options:this._options,error:e,retryCount:this._retryCount});if(r===q){return}}return this._retry(t)}throw e}}async _fetch(){for(const t of this._options.hooks.beforeRequest){const e=await t(this.request,this._options);if(e instanceof Request){this.request=e;break}if(e instanceof Response){return e}}if(this._options.timeout===false){return this._options.fetch(this.request.clone())}return J(this.request.clone(),this.abortController,this._options)}_stream(t,e){const r=Number(t.headers.get("content-length"))||0;let o=0;if(t.status===204){if(e){e({percent:1,totalBytes:r,transferredBytes:o},new Uint8Array)}return new globalThis.Response(null,{status:t.status,statusText:t.statusText,headers:t.headers})}return new globalThis.Response(new globalThis.ReadableStream({async start(s){const n=t.body.getReader();if(e){e({percent:0,transferredBytes:0,totalBytes:r},new Uint8Array)}async function i(){const{done:t,value:a}=await n.read();if(t){s.close();return}if(e){o+=a.byteLength;const t=r===0?0:o/r;e({percent:t,transferredBytes:o,totalBytes:r},a)}s.enqueue(a);await i()}await i()}}),{status:t.status,statusText:t.statusText,headers:t.headers})}}
2
- /*! MIT License © Sindre Sorhus */const K=t=>{const e=(e,r)=>F.create(e,R(t,r));for(const r of U){e[r]=(e,o)=>F.create(e,R(t,o,{method:r}))}e.create=t=>K(R(t));e.extend=e=>K(R(t,e));e.stop=q;return e};const V=K();const Y={list:[],keys:[],locs:[],loading:false,solved:false,error:undefined,pick:undefined,data:undefined};const{state:G}=k(Y);const Q=new Map([["row",new Map],["column",new Map],["box",new Map]]);const tt=["1","2","3","4","5","6","7","8","9"];const et=(t,e)=>{if(e<3){return t<3?0:t<6?3:6}else{if(e<6){return t<3?1:t<6?4:7}else{return t<3?2:t<6?5:8}}};const rt=(t,e,r,o)=>{const s=new Map([["row",e],["column",r],["box",o]]);const n=new Set;s.forEach(((e,r)=>{Q.get(r).get(e).forEach((e=>{e!==t&&n.add(e)}))}));return Array.from(n)};const ot=t=>{const{list:e}=G;const r=new Set;t.map((t=>{const{key:o}=e[t];if(o!="."){r.add(o)}}));const o=tt.filter((t=>!r.has(t)));return o};const st=(t,e,r,o)=>{const s=new Map([["row",e],["column",r],["box",o]]);s.forEach(((e,r)=>{const o=Q.get(r);if(o.has(e)){o.get(e).add(t)}else{o.set(e,new Set([t]))}}))};const nt=t=>{const e=u.inputs.get();e.forEach(((e,r)=>{const o=t[r];const{isClue:s}=o;if(!s){o.key=e}}))};const it=t=>{if(t){const{puzzle:e,ref:r}=t;const o=e?[...e]:[];const s=r?atob(r):undefined;const n=s?[...s]:[];const i=o.map(((t,e)=>{const r=n[e];const o=t===r;const s=Math.floor(e/9);const i=e%9;const a=et(s,i);st(e,s,i,a);return{key:t,isClue:o,value:r,indx:e,row:s,column:i,box:a}}));nt(i);G.data=t;G.list=i}else{G.data=undefined;G.list=[]}};const at=t=>{if(t!==undefined&&t.indx!=G.pick){const{isClue:e,indx:r,row:o,column:s,box:n}=t;const i=rt(r,o,s,n);const a=e?[]:ot(i);G.pick=r;G.keys=a;G.locs=i}else{G.pick=undefined;G.keys=[];G.locs=[]}ht(G.pick)};let lt=undefined;const ct={netlify:"/.netlify/functions",vercel:"https://sudoku-rust-api.vercel.app/api"};const ft=t=>{const e=Object.keys(ct);const r=e.includes(t)?t:"vercel";return ct[r]};const ut=t=>{const e=ft(t);lt=V.extend({hooks:{beforeRequest:[t=>{t.headers.set("X-Requested-With","ky");t.headers.set("X-Custom-Header","foobar")}]},prefixUrl:e,timeout:1e4})};const dt=t=>{u.inputs.store(t)};const ht=t=>{u.pick.store(t)};const pt=(t=false)=>{G.list=[];G.keys=[];G.locs=[];G.loading=t;G.solved=false;G.error=undefined;G.pick=undefined;G.data=undefined};const bt=(t,e=true)=>{const{puzzle:r,ref:o}=t;if(e){u.inputs.store([]);u.store(t)}it({puzzle:r,ref:o})};const gt=t=>{ut(t);pt();const e=u.get();const r=u.pick.get();if(e){bt(e,false);if(r>=0){const{list:t}=G;const e=t[r];at(e)}}};const wt=async()=>{pt(true);dt([]);ht(G.pick);try{const t=await lt.get("puzzle").json();bt(t)}catch(t){const{message:e}=t;console.log("-- ",e);console.log(t);G.error=e}finally{G.loading=false}};const mt=t=>{at(t)};const yt=t=>{G.list=[...t];t.length=0};const xt=()=>{const{list:t}=G;const e=[];let r=0;let o=0;let s=0;t.forEach((t=>{const{key:n,value:i,isClue:a}=t;if(!a){if(n!=="."){if(n!==i){r=r+1;t.key="."}else{o=o+1}}}else{s=s+1}e.push(t.key)}));const n=s+o;o?dt(e):dt([]);if(r>0){yt(t)}else{if(n===81){G.solved=true}}};const vt=t=>{const{pick:e,list:r}=G;const o=r[e];o.key=t;yt(r)};const Ct={initApp:gt,refresh:wt,select:mt,check:xt,input:vt};const kt="3.2.4";const Tt=(...t)=>t.filter(Boolean).join(" ");const Mt=e=>{const r=e.hex||"currentColor";const o=e.class||"";const s=e.label||"loading...";const n=e.size||24;return t("svg",{class:Tt(o,"animate-spin"),width:n,height:n,fill:"none",viewBox:"0 0 24 24",role:"img","aria-label":"title"},t("title",null,s),t("g",null,t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:r,"stroke-width":"4"}),t("path",{class:"opacity-75",fill:r,d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})),t("path",{d:"M0 0h24v24H0z",fill:"none"}))};const jt=e=>{const{message:r,salute:o,spinner:n=false}=e;return t("div",{class:"mt-5 flex h-24px flex-row items-center"},n?t(Mt,{class:"mr-2"}):t(s,{class:"mr-2"}),o?t("label",{class:"mr-1 font-bold"},o,":"):"",t("label",{class:"italic"},r))};const Rt=e=>{const{solved:r,loading:o,error:s}=G;const n=!o&&!s&&!r;return t("div",{class:"flex flex-col"},n?t(jt,{message:"Welcome, are you ready to play?..."}):"",o?t(jt,{message:"Loading...",spinner:true}):"",s?t(jt,{message:s,salute:"ERROR"}):"",r?t(jt,{message:"You solved the puzzle!!"}):"")};const St=e=>{const r=e.hex||"currentColor";const o=e.class;const s=e.label||"fingerprint";const n=e.size||24;return t("svg",{class:o,width:n,height:n,viewBox:"0 0 24 24",role:"img","aria-label":"title"},t("title",null,s),t("g",{fill:r},t("path",{d:"M17.81,4.47C17.73,4.47 17.65,4.45 17.58,4.41C15.66,3.42 14,3\n 12,3C10.03,3 8.15,3.47 6.44,4.41C6.2,4.54 5.9,4.45 5.76,4.21C5.63,3.97\n 5.72,3.66 5.96,3.53C7.82,2.5 9.86,2 12,2C14.14,2 16,2.47\n 18.04,3.5C18.29,3.65 18.38,3.95 18.25,4.19C18.16,4.37 18,4.47\n 17.81,4.47M3.5,9.72C3.4,9.72 3.3,9.69 3.21,9.63C3,9.47 2.93,9.16\n 3.09,8.93C4.08,7.53 5.34,6.43 6.84,5.66C10,4.04 14,4.03\n 17.15,5.65C18.65,6.42 19.91,7.5 20.9,8.9C21.06,9.12 21,9.44\n 20.78,9.6C20.55,9.76 20.24,9.71 20.08,9.5C19.18,8.22 18.04,7.23\n 16.69,6.54C13.82,5.07 10.15,5.07 7.29,6.55C5.93,7.25 4.79,8.25\n 3.89,9.5C3.81,9.65 3.66,9.72 3.5,9.72M9.75,21.79C9.62,21.79 9.5,21.74\n 9.4,21.64C8.53,20.77 8.06,20.21 7.39,19C6.7,17.77 6.34,16.27\n 6.34,14.66C6.34,11.69 8.88,9.27 12,9.27C15.12,9.27 17.66,11.69\n 17.66,14.66A0.5,0.5 0 0,1 17.16,15.16A0.5,0.5 0 0,1\n 16.66,14.66C16.66,12.24 14.57,10.27 12,10.27C9.43,10.27 7.34,12.24\n 7.34,14.66C7.34,16.1 7.66,17.43 8.27,18.5C8.91,19.66 9.35,20.15\n 10.12,20.93C10.31,21.13 10.31,21.44 10.12,21.64C10,21.74 9.88,21.79\n 9.75,21.79M16.92,19.94C15.73,19.94 14.68,19.64 13.82,19.05C12.33,18.04\n 11.44,16.4 11.44,14.66A0.5,0.5 0 0,1 11.94,14.16A0.5,0.5 0 0,1\n 12.44,14.66C12.44,16.07 13.16,17.4 14.38,18.22C15.09,18.7 15.92,18.93\n 16.92,18.93C17.16,18.93 17.56,18.9 17.96,18.83C18.23,18.78 18.5,18.96\n 18.54,19.24C18.59,19.5 18.41,19.77 18.13,19.82C17.56,19.93 17.06,19.94\n 16.92,19.94M14.91,22C14.87,22 14.82,22 14.78,22C13.19,21.54 12.15,20.95\n 11.06,19.88C9.66,18.5 8.89,16.64 8.89,14.66C8.89,13.04 10.27,11.72\n 11.97,11.72C13.67,11.72 15.05,13.04 15.05,14.66C15.05,15.73 16,16.6\n 17.13,16.6C18.28,16.6 19.21,15.73 19.21,14.66C19.21,10.89 15.96,7.83\n 11.96,7.83C9.12,7.83 6.5,9.41 5.35,11.86C4.96,12.67 4.76,13.62\n 4.76,14.66C4.76,15.44 4.83,16.67 5.43,18.27C5.53,18.53 5.4,18.82\n 5.14,18.91C4.88,19 4.59,18.87 4.5,18.62C4,17.31 3.77,16\n 3.77,14.66C3.77,13.46 4,12.37 4.45,11.42C5.78,8.63 8.73,6.82\n 11.96,6.82C16.5,6.82 20.21,10.33 20.21,14.65C20.21,16.27 18.83,17.59\n 17.13,17.59C15.43,17.59 14.05,16.27 14.05,14.65C14.05,13.58 13.12,12.71\n 11.97,12.71C10.82,12.71 9.89,13.58 9.89,14.65C9.89,16.36 10.55,17.96\n 11.76,19.16C12.71,20.1 13.62,20.62 15.03,21C15.3,21.08 15.45,21.36\n 15.38,21.62C15.33,21.85 15.12,22 14.91,22Z"})),t("path",{d:"M0 0h24v24H0z",fill:"none"}))};const zt="https://eswat2.dev";const Et="eswat2";const At=e=>t("a",{class:"absolute top-0 right-0 text-clrs-gray hover:text-clrs-navy",href:zt,"aria-label":Et,title:Et},t(St,{label:Et}));const Ot=(e,r)=>t("h1",{class:Tt("text-center uppercase text-clrs-red","mr-0 ml-0 mt-11 mb-11","text-6xl font-thin")},r);const Bt=e=>{const{label:r,callback:o,matched:s=false}=e;return t("button",{class:Tt("rounded-md border border-solid border-clrs-slate4 font-bold",r===d?"mr-2 bg-clrs-yellow px-3 py-2 text-clrs-navy":r===p?"mr-2 bg-clrs-navy px-3 py-2 text-white":r===h?"mr-1 bg-clrs-red px-2 py-1 text-white":s?"mr-1 bg-clrs-slate4 px-2 py-1 text-white":"mr-1 bg-gray-50 px-2 py-1 text-clrs-navy"),onClick:o},r)};const Ut=e=>{const{keys:r,list:o,pick:s,solved:n}=G;const i=t=>()=>{Ct.input(t)};const a=n?[]:r;const l=s!=undefined?o[s]:undefined;return t("div",{class:"mt-2 flex flex-row justify-end"},!n&&l&&!l.isClue&&l.key!="."?t(Bt,{label:h,callback:i(".")}):"",a.map((e=>t(Bt,{label:e,callback:i(e),matched:l.key===e}))))};const Nt=[2,5,11,14,20,23,29,32,38,41,47,50,56,59,65,68,74,77];const Pt=Nt.map((t=>t+1));const qt=[18,19,20,21,22,23,24,25,26,45,46,47,48,49,50,51,52,53];const $t=qt.map((t=>t+9));const _t=e=>{const{cell:r,focus:o,selected:s,solved:n}=e;const{key:i,isClue:a,indx:l}=r;const c=i!="."?i:"";const f=(t,e)=>()=>{if(!e){Ct.select(t)}};return t("label",{class:Tt(`cell-${l}`,Nt.includes(l)?"border-xbr-clrs-navy":"",Pt.includes(l)?"border-xbl-clrs-navy":"",qt.includes(l)?"border-xbb-clrs-navy":"",$t.includes(l)?"border-xbt-clrs-navy":"","h-8 w-8 border border-solid text-center leading-8",s?"border-clrs-red bg-clrs-red-a50 text-clrs-red":o?"border-clrs-gray bg-clrs-green-a50 font-bold":a?"border-clrs-gray bg-clrs-silver":c!==""?"border-clrs-gray text-clrs-red":"border-clrs-gray"),onClick:f(r,n)},c)};const Dt=e=>{const{list:r,pick:o,locs:s,solved:n}=G;return t("div",{class:Tt("flex flex-row flex-wrap","border border-solid border-clrs-navy","h-76p5 w-76p5 text-lg")},r.map(((e,r)=>{const i=n?false:r===o;const a=n?false:s.includes(r);return t(_t,{cell:e,focus:a,selected:i,solved:n})})))};const Ht=e=>t("label",{class:"ml-auto align-top text-xs italic text-clrs-slate4"},"Tailwind ",kt);const Lt=t=>()=>{t.refresh()};const It=t=>()=>{t.check()};const Jt=e=>{const{list:r,solved:o}=G;return t("div",{class:"flex flex-row"},t(Bt,{label:p,callback:Lt(Ct)}),r.length===81&&!o?t(Bt,{label:d,callback:It(Ct)}):"",t(Ht,null))};const Wt="*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}.ds1-main{margin:1.5rem;display:flex;flex-direction:column;font-family:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,\n 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';color:var(--clrs-navy, #001f3f);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.absolute{position:absolute}.relative{position:relative}.top-0{top:0px}.right-0{right:0px}.mt-5{margin-top:1.25rem}.mr-2{margin-right:0.5rem}.mr-1{margin-right:0.25rem}.mr-0{margin-right:0px}.ml-0{margin-left:0px}.mt-11{margin-top:2.75rem}.mb-11{margin-bottom:2.75rem}.mt-2{margin-top:0.5rem}.ml-auto{margin-left:auto}.flex{display:flex}.h-24px{height:24px}.h-8{height:2rem}.h-76p5{height:19.125rem}.w-8{width:2rem}.w-76p5{width:19.125rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-end{justify-content:flex-end}.rounded-md{border-radius:0.375rem}.border{border-width:1px}.border-solid{border-style:solid}.border-clrs-slate4{border-color:var(--clrs-slate4, #4e5964)}.border-clrs-red{border-color:var(--clrs-red, #ff4136)}.border-clrs-gray{border-color:var(--clrs-gray, #aaaaaa)}.border-clrs-navy{border-color:var(--clrs-navy, #001f3f)}.bg-clrs-yellow{background-color:var(--clrs-yellow, #ffdc00)}.bg-clrs-navy{background-color:var(--clrs-navy, #001f3f)}.bg-clrs-red{background-color:var(--clrs-red, #ff4136)}.bg-clrs-slate4{background-color:var(--clrs-slate4, #4e5964)}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-clrs-red-a50{background-color:var(--clrs-red-a50, #ff413650)}.bg-clrs-green-a50{background-color:var(--clrs-green-a50, #2ecc4050)}.bg-clrs-silver{background-color:var(--clrs-silver, #dddddd)}.p-0\\.5{padding:0.125rem}.p-0{padding:0px}.px-3{padding-left:0.75rem;padding-right:0.75rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.px-2{padding-left:0.5rem;padding-right:0.5rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.text-center{text-align:center}.align-top{vertical-align:top}.text-6xl{font-size:3.75rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xs{font-size:0.75rem;line-height:1rem}.font-bold{font-weight:700}.font-thin{font-weight:100}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-8{line-height:2rem}.text-clrs-navy{color:var(--clrs-navy, #001f3f)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-clrs-red{color:var(--clrs-red, #ff4136)}.text-clrs-gray{color:var(--clrs-gray, #aaaaaa)}.text-clrs-slate4{color:var(--clrs-slate4, #4e5964)}.opacity-25{opacity:0.25}.opacity-75{opacity:0.75}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),\n 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.border-xbb-clrs-navy{border-bottom:1px solid var(--clrs-navy, #001f3f) !important}.border-xbt-clrs-navy{border-top:1px solid var(--clrs-navy, #001f3f) !important}.border-xbl-clrs-navy{border-left:1px solid var(--clrs-navy, #001f3f) !important}.border-xbr-clrs-navy{border-right:1px solid var(--clrs-navy, #001f3f) !important}.hover\\:text-clrs-navy:hover{color:var(--clrs-navy, #001f3f)}";const Xt=class{constructor(t){o(this,t);this.tag="proto-sudoku";this.platform="vercel"}componentDidLoad(){Ct.initApp(this.platform)}render(){return t("div",{id:"app",class:"ds1-main relative max-w-min p-0.5"},t(At,null),t(Ot,null,"Sudoku"),t(Dt,null),t(Ut,null),t("hr",{class:"ml-0 mr-0"}),t(Jt,null),t(Rt,null))}};Xt.style=Wt;export{Xt as proto_sudoku};
3
- //# sourceMappingURL=p-21a020aa.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Alien","props","hex","klass","class","label","size","h","width","height","viewBox","role","fill","d","KEY","DATA","INPUTS","PICK","getForKey","key","json","localStorage","getItem","JSON","parse","undefined","storeForKey","value","stringify","setItem","bag","get","store","inputs","line","join","pick","CHECK","DELETE","NEW_PUZZLE","appendToMap","map","propName","items","set","includes","push","debounce","fn","ms","timeoutId","args","clearTimeout","setTimeout","isConnected","maybeElement","cleanupElements","keys","filter","stencilSubscription","getRenderingRef","elmsToUpdate","Map","dispose","clear","elm","elements","forceUpdate","reset","forEach","elms","unwrap","val","createObservableMap","defaultState","shouldUpdate","a","b","unwrappedState","states","Object","entries","handlers","_a","cb","oldValue","state","Proxy","_","ownKeys","Array","from","getOwnPropertyDescriptor","enumerable","configurable","has","on","eventName","callback","removeFromArray","onChange","unSet","newValue","unReset","use","subscriptions","unsubs","reduce","subscription","unsub","array","item","index","indexOf","length","createStore","HTTPError","Error","constructor","response","request","options","code","status","title","statusText","trim","reason","super","defineProperty","this","writable","name","TimeoutError","isObject","validateAndMerge","sources","source","isArray","TypeError","deepMerge","mergeHeaders","source1","source2","result","globalThis","Headers","isHeadersInstance","delete","returnValue","headers","supportsRequestStreams","duplexAccessed","hasContentType","supportsReadableStream","ReadableStream","Request","body","method","duplex","supportsAbortController","AbortController","supportsResponseStreams","supportsFormData","FormData","requestMethods","responseTypes","text","formData","arrayBuffer","blob","maxSafeTimeout","stop","Symbol","normalizeRequestMethod","input","toUpperCase","retryMethods","retryStatusCodes","retryAfterStatusCodes","defaultRetryOptions","limit","methods","statusCodes","afterStatusCodes","maxRetryAfter","Number","POSITIVE_INFINITY","backoffLimit","normalizeRetryOptions","retry","async","timeout","abortController","Promise","resolve","reject","abort","fetch","then","catch","isDomExceptionSupported","Boolean","DOMException","composeAbortError","signal","error","delay","aborted","addEventListener","handleAbort","once","removeEventListener","Ky","static","ky","_options","RangeError","_fetch","hook","hooks","afterResponse","modifiedResponse","_decorateResponse","clone","Response","ok","throwHttpErrors","beforeError","onDownloadProgress","_stream","isRetriableMethod","toLowerCase","_retry","type","mimeType","awaitedResult","responseSize","byteLength","parseJson","_input","credentials","beforeRequest","beforeRetry","prefixUrl","String","bind","URL","startsWith","endsWith","originalSignal","searchParams","textSearchParams","replace","URLSearchParams","toString","url","_calculateRetryDelay","_retryCount","retryAfter","after","isNaN","Date","now","BACKOFF_FACTOR","Math","min","hookResult","retryCount","totalBytes","transferredBytes","percent","Uint8Array","controller","reader","getReader","read","done","close","enqueue","createInstance","defaults","create","newDefaults","extend","storeDef","list","locs","loading","solved","data","geometry","keyValues","computeBox","row","column","computeLocs","box","Set","indx","add","computeKeys","found","updateGeometry","updateFromInputs","cell","isClue","processData","next","puzzle","ref","cells","atob","solution","floor","processPick","savePick","api","platformPrefix","netlify","vercel","getPrefixFor","platform","target","initApi","prefix","saveInputs","clearStore","updateStore","save","initApp","refresh","err","message","console","log","select","redraw","check","errors","clues","total","actions","TW_VERSION","tw","classes","Spinner","cx","cy","r","stroke","Alert","salute","spinner","Alerts","_props","play","Fingerprint","who","Eswat2Io","href","Header","children","Button","matched","onClick","Keys","genHandler","values","borderRight","borderLeft","borderBottom","borderTop","Cell","focus","selected","clue","SudokuBoard","TwLabel","handleRefresh","handleCheck","ToolBar","protoSudokuCss","ProtoSudoku","componentDidLoad","render","id"],"sources":["./src/components/proto-sudoku/alien.tsx","./src/utils/bag.ts","./src/utils/labels.ts","./node_modules/@stencil/store/dist/index.mjs","./node_modules/ky/distribution/errors/HTTPError.js","./node_modules/ky/distribution/errors/TimeoutError.js","./node_modules/ky/distribution/utils/is.js","./node_modules/ky/distribution/utils/merge.js","./node_modules/ky/distribution/core/constants.js","./node_modules/ky/distribution/utils/normalize.js","./node_modules/ky/distribution/utils/timeout.js","./node_modules/ky/distribution/errors/DOMException.js","./node_modules/ky/distribution/utils/delay.js","./node_modules/ky/distribution/core/Ky.js","./node_modules/ky/distribution/index.js","./src/utils/store.ts","./src/utils/tw-version.ts","./src/utils/tw.ts","./src/components/proto-sudoku/spinner.tsx","./src/components/proto-sudoku/alert.tsx","./src/components/proto-sudoku/alerts.tsx","./src/components/proto-sudoku/fingerprint.tsx","./src/components/proto-sudoku/eswat2-io.tsx","./src/components/proto-sudoku/header.tsx","./src/components/proto-sudoku/button.tsx","./src/components/proto-sudoku/keys.tsx","./src/components/proto-sudoku/cell.tsx","./src/components/proto-sudoku/sudoku-board.tsx","./src/components/proto-sudoku/tw-label.tsx","./src/components/proto-sudoku/tool-bar.tsx","./src/components/proto-sudoku/proto-sudoku.css?tag=proto-sudoku&encapsulation=shadow","./src/components/proto-sudoku/proto-sudoku.tsx"],"sourcesContent":["import { FunctionalComponent, h } from '@stencil/core';\nimport { IconProps } from '../../utils';\n\nconst Alien: FunctionalComponent<IconProps> = props => {\n const hex = props.hex || 'currentColor';\n const klass = props.class;\n const label = props.label || 'alien';\n const size = props.size || 24;\n\n return (\n <svg\n class={klass}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-label=\"title\"\n >\n <title>{label}</title>\n <g fill={hex}>\n <path\n d=\"M10.31 10.93C11.33 12.57 11.18 14.5 9.96 15.28C8.74 16.04 6.92 15.33\n 5.89 13.69C4.87 12.05 5.03 10.1 6.25 9.34C7.47 8.58 9.29 9.29 10.31\n 10.93M12 17.75C14 17.75 14.5 17 14.5 17C14.5 17 14 19 12 19C10 19 9.5\n 17.03 9.5 17C9.5 17 10 17.75 12 17.75M17.75 9.34C18.97 10.1 19.13 12.05\n 18.11 13.69C17.08 15.33 15.26 16.04 14.04 15.28C12.82 14.5 12.67 12.57\n 13.69 10.93C14.71 9.29 16.53 8.58 17.75 9.34M12 20C14.5 20 20 14.86 20\n 11C20 7.14 16.41 4 12 4C7.59 4 4 7.14 4 11C4 14.86 9.5 20 12 20M12 2C17.5\n 2 22 6.04 22 11C22 15.08 16.32 22 12 22C7.68 22 2 15.08 2 11C2 6.04 6.5 2\n 12 2Z\"\n />\n </g>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n );\n};\n\nexport { Alien };\nexport default Alien;\n","const KEY = 'proto-sudoku';\nconst DATA = `${KEY}::data`;\nconst INPUTS = `${KEY}::inputs`;\nconst PICK = `${KEY}::pick`;\n\nconst getForKey = (key: string) => {\n const json = localStorage.getItem(key);\n\n return json ? JSON.parse(json) : undefined;\n};\n\nconst storeForKey = (key: string, value: any) => {\n const json = JSON.stringify(value);\n\n localStorage.setItem(key, json);\n};\n\nconst bag = {\n get: () => {\n return getForKey(DATA);\n },\n store: value => {\n storeForKey(DATA, value);\n },\n inputs: {\n get: (): string[] => {\n const line = getForKey(INPUTS);\n return [...line];\n },\n store: (value: string[]) => {\n storeForKey(INPUTS, value.join(''));\n },\n },\n pick: {\n get: (): number => {\n const pick = getForKey(PICK);\n return pick !== null ? pick : undefined;\n },\n store: (value: number) => {\n storeForKey(PICK, value >= 0 && value < 81 ? value : null);\n },\n },\n};\n\nexport { bag };\nexport default bag;\n","const CHECK: string = 'Check ?';\nconst DELETE: string = 'x';\nconst NEW_PUZZLE: string = 'New Puzzle';\n\nexport { CHECK, DELETE, NEW_PUZZLE };\n","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 unwrap = (val) => (typeof val === 'function' ? val() : val);\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n const unwrappedState = unwrap(defaultState);\n let states = new Map(Object.entries(unwrappedState !== null && unwrappedState !== void 0 ? unwrappedState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n var _a;\n // When resetting the state, the default state may be a function - unwrap it to invoke it.\n // otherwise, the state won't be properly reset\n states = new Map(Object.entries((_a = unwrap(defaultState)) !== null && _a !== void 0 ? _a : {}));\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(unwrappedState, {\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 // We need to unwrap the defaultState because it might be a function.\n // Otherwise we might not be sending the right reset value.\n const unReset = on('reset', () => cb(unwrap(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","// eslint-lint-disable-next-line @typescript-eslint/naming-convention\nexport class HTTPError extends Error {\n constructor(response, request, options) {\n const code = (response.status || response.status === 0) ? response.status : '';\n const title = response.statusText || '';\n const status = `${code} ${title}`.trim();\n const reason = status ? `status code ${status}` : 'an unknown error';\n super(`Request failed with ${reason}`);\n Object.defineProperty(this, \"response\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'HTTPError';\n this.response = response;\n this.request = request;\n this.options = options;\n }\n}\n//# sourceMappingURL=HTTPError.js.map","export class TimeoutError extends Error {\n constructor(request) {\n super('Request timed out');\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'TimeoutError';\n this.request = request;\n }\n}\n//# sourceMappingURL=TimeoutError.js.map","// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isObject = (value) => value !== null && typeof value === 'object';\n//# sourceMappingURL=is.js.map","import { isObject } from './is.js';\nexport const validateAndMerge = (...sources) => {\n for (const source of sources) {\n if ((!isObject(source) || Array.isArray(source)) && typeof source !== 'undefined') {\n throw new TypeError('The `options` argument must be an object');\n }\n }\n return deepMerge({}, ...sources);\n};\nexport const mergeHeaders = (source1 = {}, source2 = {}) => {\n const result = new globalThis.Headers(source1);\n const isHeadersInstance = source2 instanceof globalThis.Headers;\n const source = new globalThis.Headers(source2);\n for (const [key, value] of source.entries()) {\n if ((isHeadersInstance && value === 'undefined') || value === undefined) {\n result.delete(key);\n }\n else {\n result.set(key, value);\n }\n }\n return result;\n};\n// TODO: Make this strongly-typed (no `any`).\nexport const deepMerge = (...sources) => {\n let returnValue = {};\n let headers = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n }\n else if (isObject(source)) {\n for (let [key, value] of Object.entries(source)) {\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n if (isObject(source.headers)) {\n headers = mergeHeaders(headers, source.headers);\n returnValue.headers = headers;\n }\n }\n }\n return returnValue;\n};\n//# sourceMappingURL=merge.js.map","export const supportsRequestStreams = (() => {\n let duplexAccessed = false;\n let hasContentType = false;\n const supportsReadableStream = typeof globalThis.ReadableStream === 'function';\n if (supportsReadableStream) {\n hasContentType = new globalThis.Request('https://a.com', {\n body: new globalThis.ReadableStream(),\n method: 'POST',\n // @ts-expect-error - Types are outdated.\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n }\n return duplexAccessed && !hasContentType;\n})();\nexport const supportsAbortController = typeof globalThis.AbortController === 'function';\nexport const supportsResponseStreams = typeof globalThis.ReadableStream === 'function';\nexport const supportsFormData = typeof globalThis.FormData === 'function';\nexport const requestMethods = ['get', 'post', 'put', 'patch', 'head', 'delete'];\nconst validate = () => undefined;\nvalidate();\nexport const responseTypes = {\n json: 'application/json',\n text: 'text/*',\n formData: 'multipart/form-data',\n arrayBuffer: '*/*',\n blob: '*/*',\n};\n// The maximum value of a 32bit int (see issue #117)\nexport const maxSafeTimeout = 2147483647;\nexport const stop = Symbol('stop');\n//# sourceMappingURL=constants.js.map","import { requestMethods } from '../core/constants.js';\nexport const normalizeRequestMethod = (input) => requestMethods.includes(input) ? input.toUpperCase() : input;\nconst retryMethods = ['get', 'put', 'head', 'delete', 'options', 'trace'];\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\nconst retryAfterStatusCodes = [413, 429, 503];\nconst defaultRetryOptions = {\n limit: 2,\n methods: retryMethods,\n statusCodes: retryStatusCodes,\n afterStatusCodes: retryAfterStatusCodes,\n maxRetryAfter: Number.POSITIVE_INFINITY,\n backoffLimit: Number.POSITIVE_INFINITY,\n};\nexport const normalizeRetryOptions = (retry = {}) => {\n if (typeof retry === 'number') {\n return {\n ...defaultRetryOptions,\n limit: retry,\n };\n }\n if (retry.methods && !Array.isArray(retry.methods)) {\n throw new Error('retry.methods must be an array');\n }\n if (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n throw new Error('retry.statusCodes must be an array');\n }\n return {\n ...defaultRetryOptions,\n ...retry,\n afterStatusCodes: retryAfterStatusCodes,\n };\n};\n//# sourceMappingURL=normalize.js.map","import { TimeoutError } from '../errors/TimeoutError.js';\n// `Promise.race()` workaround (#91)\nexport default async function timeout(request, abortController, options) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (abortController) {\n abortController.abort();\n }\n reject(new TimeoutError(request));\n }, options.timeout);\n void options\n .fetch(request)\n .then(resolve)\n .catch(reject)\n .then(() => {\n clearTimeout(timeoutId);\n });\n });\n}\n//# sourceMappingURL=timeout.js.map","// DOMException is supported on most modern browsers and Node.js 18+.\n// @see https://developer.mozilla.org/en-US/docs/Web/API/DOMException#browser_compatibility\nconst isDomExceptionSupported = Boolean(globalThis.DOMException);\n// TODO: When targeting Node.js 18, use `signal.throwIfAborted()` (https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/throwIfAborted)\nexport function composeAbortError(signal) {\n /*\n NOTE: Use DomException with AbortError name as specified in MDN docs (https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort)\n > When abort() is called, the fetch() promise rejects with an Error of type DOMException, with name AbortError.\n */\n if (isDomExceptionSupported) {\n return new DOMException(signal?.reason ?? 'The operation was aborted.', 'AbortError');\n }\n // DOMException not supported. Fall back to use of error and override name.\n const error = new Error(signal?.reason ?? 'The operation was aborted.');\n error.name = 'AbortError';\n return error;\n}\n//# sourceMappingURL=DOMException.js.map","// https://github.com/sindresorhus/delay/tree/ab98ae8dfcb38e1593286c94d934e70d14a4e111\nimport { composeAbortError } from '../errors/DOMException.js';\nexport default async function delay(ms, { signal }) {\n return new Promise((resolve, reject) => {\n if (signal) {\n if (signal.aborted) {\n reject(composeAbortError(signal));\n return;\n }\n signal.addEventListener('abort', handleAbort, { once: true });\n }\n function handleAbort() {\n reject(composeAbortError(signal));\n clearTimeout(timeoutId);\n }\n const timeoutId = setTimeout(() => {\n signal?.removeEventListener('abort', handleAbort);\n resolve();\n }, ms);\n });\n}\n//# sourceMappingURL=delay.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { TimeoutError } from '../errors/TimeoutError.js';\nimport { deepMerge, mergeHeaders } from '../utils/merge.js';\nimport { normalizeRequestMethod, normalizeRetryOptions } from '../utils/normalize.js';\nimport timeout from '../utils/timeout.js';\nimport delay from '../utils/delay.js';\nimport { maxSafeTimeout, responseTypes, stop, supportsAbortController, supportsFormData, supportsResponseStreams, supportsRequestStreams, } from './constants.js';\nexport class Ky {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n static create(input, options) {\n const ky = new Ky(input, options);\n const fn = async () => {\n if (ky._options.timeout > maxSafeTimeout) {\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n }\n // Delay the fetch so that body method shortcuts can set the Accept header\n await Promise.resolve();\n let response = await ky._fetch();\n for (const hook of ky._options.hooks.afterResponse) {\n // eslint-disable-next-line no-await-in-loop\n const modifiedResponse = await hook(ky.request, ky._options, ky._decorateResponse(response.clone()));\n if (modifiedResponse instanceof globalThis.Response) {\n response = modifiedResponse;\n }\n }\n ky._decorateResponse(response);\n if (!response.ok && ky._options.throwHttpErrors) {\n let error = new HTTPError(response, ky.request, ky._options);\n for (const hook of ky._options.hooks.beforeError) {\n // eslint-disable-next-line no-await-in-loop\n error = await hook(error);\n }\n throw error;\n }\n // If `onDownloadProgress` is passed, it uses the stream API internally\n /* istanbul ignore next */\n if (ky._options.onDownloadProgress) {\n if (typeof ky._options.onDownloadProgress !== 'function') {\n throw new TypeError('The `onDownloadProgress` option must be a function');\n }\n if (!supportsResponseStreams) {\n throw new Error('Streams are not supported in your environment. `ReadableStream` is missing.');\n }\n return ky._stream(response.clone(), ky._options.onDownloadProgress);\n }\n return response;\n };\n const isRetriableMethod = ky._options.retry.methods.includes(ky.request.method.toLowerCase());\n const result = (isRetriableMethod ? ky._retry(fn) : fn());\n for (const [type, mimeType] of Object.entries(responseTypes)) {\n result[type] = async () => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n ky.request.headers.set('accept', ky.request.headers.get('accept') || mimeType);\n const awaitedResult = await result;\n const response = awaitedResult.clone();\n if (type === 'json') {\n if (response.status === 204) {\n return '';\n }\n const arrayBuffer = await response.clone().arrayBuffer();\n const responseSize = arrayBuffer.byteLength;\n if (responseSize === 0) {\n return '';\n }\n if (options.parseJson) {\n return options.parseJson(await response.text());\n }\n }\n return response[type]();\n };\n }\n return result;\n }\n // eslint-disable-next-line complexity\n constructor(input, options = {}) {\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"abortController\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_retryCount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_input\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._input = input;\n this._options = {\n // TODO: credentials can be removed when the spec change is implemented in all browsers. Context: https://www.chromestatus.com/feature/4539473312350208\n credentials: this._input.credentials || 'same-origin',\n ...options,\n headers: mergeHeaders(this._input.headers, options.headers),\n hooks: deepMerge({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: [],\n }, options.hooks),\n method: normalizeRequestMethod(options.method ?? this._input.method),\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n prefixUrl: String(options.prefixUrl || ''),\n retry: normalizeRetryOptions(options.retry),\n throwHttpErrors: options.throwHttpErrors !== false,\n timeout: typeof options.timeout === 'undefined' ? 10000 : options.timeout,\n fetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n };\n if (typeof this._input !== 'string' && !(this._input instanceof URL || this._input instanceof globalThis.Request)) {\n throw new TypeError('`input` must be a string, URL, or Request');\n }\n if (this._options.prefixUrl && typeof this._input === 'string') {\n if (this._input.startsWith('/')) {\n throw new Error('`input` must not begin with a slash when using `prefixUrl`');\n }\n if (!this._options.prefixUrl.endsWith('/')) {\n this._options.prefixUrl += '/';\n }\n this._input = this._options.prefixUrl + this._input;\n }\n if (supportsAbortController) {\n this.abortController = new globalThis.AbortController();\n if (this._options.signal) {\n const originalSignal = this._options.signal;\n this._options.signal.addEventListener('abort', () => {\n this.abortController.abort(originalSignal.reason);\n });\n }\n this._options.signal = this.abortController.signal;\n }\n if (supportsRequestStreams) {\n // @ts-expect-error - Types are outdated.\n this._options.duplex = 'half';\n }\n this.request = new globalThis.Request(this._input, this._options);\n if (this._options.searchParams) {\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const textSearchParams = typeof this._options.searchParams === 'string'\n ? this._options.searchParams.replace(/^\\?/, '')\n : new URLSearchParams(this._options.searchParams).toString();\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const searchParams = '?' + textSearchParams;\n const url = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, searchParams);\n // To provide correct form boundary, Content-Type header should be deleted each time when new Request instantiated from another one\n if (((supportsFormData && this._options.body instanceof globalThis.FormData)\n || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers['content-type'])) {\n this.request.headers.delete('content-type');\n }\n // The spread of `this.request` is required as otherwise it misses the `duplex` option for some reason and throws.\n this.request = new globalThis.Request(new globalThis.Request(url, { ...this.request }), this._options);\n }\n if (this._options.json !== undefined) {\n this._options.body = JSON.stringify(this._options.json);\n this.request.headers.set('content-type', this._options.headers.get('content-type') ?? 'application/json');\n this.request = new globalThis.Request(this.request, { body: this._options.body });\n }\n }\n _calculateRetryDelay(error) {\n this._retryCount++;\n if (this._retryCount < this._options.retry.limit && !(error instanceof TimeoutError)) {\n if (error instanceof HTTPError) {\n if (!this._options.retry.statusCodes.includes(error.response.status)) {\n return 0;\n }\n const retryAfter = error.response.headers.get('Retry-After');\n if (retryAfter && this._options.retry.afterStatusCodes.includes(error.response.status)) {\n let after = Number(retryAfter);\n if (Number.isNaN(after)) {\n after = Date.parse(retryAfter) - Date.now();\n }\n else {\n after *= 1000;\n }\n if (typeof this._options.retry.maxRetryAfter !== 'undefined' && after > this._options.retry.maxRetryAfter) {\n return 0;\n }\n return after;\n }\n if (error.response.status === 413) {\n return 0;\n }\n }\n const BACKOFF_FACTOR = 0.3;\n return Math.min(this._options.retry.backoffLimit, BACKOFF_FACTOR * (2 ** (this._retryCount - 1)) * 1000);\n }\n return 0;\n }\n _decorateResponse(response) {\n if (this._options.parseJson) {\n response.json = async () => this._options.parseJson(await response.text());\n }\n return response;\n }\n async _retry(fn) {\n try {\n return await fn();\n // eslint-disable-next-line @typescript-eslint/no-implicit-any-catch\n }\n catch (error) {\n const ms = Math.min(this._calculateRetryDelay(error), maxSafeTimeout);\n if (ms !== 0 && this._retryCount > 0) {\n await delay(ms, { signal: this._options.signal });\n for (const hook of this._options.hooks.beforeRetry) {\n // eslint-disable-next-line no-await-in-loop\n const hookResult = await hook({\n request: this.request,\n options: this._options,\n error: error,\n retryCount: this._retryCount,\n });\n // If `stop` is returned from the hook, the retry process is stopped\n if (hookResult === stop) {\n return;\n }\n }\n return this._retry(fn);\n }\n throw error;\n }\n }\n async _fetch() {\n for (const hook of this._options.hooks.beforeRequest) {\n // eslint-disable-next-line no-await-in-loop\n const result = await hook(this.request, this._options);\n if (result instanceof Request) {\n this.request = result;\n break;\n }\n if (result instanceof Response) {\n return result;\n }\n }\n if (this._options.timeout === false) {\n return this._options.fetch(this.request.clone());\n }\n return timeout(this.request.clone(), this.abortController, this._options);\n }\n /* istanbul ignore next */\n _stream(response, onDownloadProgress) {\n const totalBytes = Number(response.headers.get('content-length')) || 0;\n let transferredBytes = 0;\n if (response.status === 204) {\n if (onDownloadProgress) {\n onDownloadProgress({ percent: 1, totalBytes, transferredBytes }, new Uint8Array());\n }\n return new globalThis.Response(null, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n return new globalThis.Response(new globalThis.ReadableStream({\n async start(controller) {\n const reader = response.body.getReader();\n if (onDownloadProgress) {\n onDownloadProgress({ percent: 0, transferredBytes: 0, totalBytes }, new Uint8Array());\n }\n async function read() {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n return;\n }\n if (onDownloadProgress) {\n transferredBytes += value.byteLength;\n const percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n onDownloadProgress({ percent, transferredBytes, totalBytes }, value);\n }\n controller.enqueue(value);\n await read();\n }\n await read();\n },\n }), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n}\n//# sourceMappingURL=Ky.js.map","/*! MIT License © Sindre Sorhus */\nimport { Ky } from './core/Ky.js';\nimport { requestMethods, stop } from './core/constants.js';\nimport { validateAndMerge } from './utils/merge.js';\nconst createInstance = (defaults) => {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n const ky = (input, options) => Ky.create(input, validateAndMerge(defaults, options));\n for (const method of requestMethods) {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n ky[method] = (input, options) => Ky.create(input, validateAndMerge(defaults, options, { method }));\n }\n ky.create = (newDefaults) => createInstance(validateAndMerge(newDefaults));\n ky.extend = (newDefaults) => createInstance(validateAndMerge(defaults, newDefaults));\n ky.stop = stop;\n return ky;\n};\nconst ky = createInstance();\nexport default ky;\nexport { HTTPError } from './errors/HTTPError.js';\nexport { TimeoutError } from './errors/TimeoutError.js';\n//# sourceMappingURL=index.js.map","import { createStore } from '@stencil/store';\nimport ky from 'ky';\nimport { bag } from './bag';\nimport {\n AppStore,\n GeoMap,\n ComputeBoxFn,\n ComputeLocsFn,\n ComputeKeysFn,\n GeometryFn,\n InputsFn,\n PuzzleApiData,\n PuzzleCell,\n PuzzleData,\n} from './types';\n\n// --------------------------------------------------------[ mutable store ]\n\nconst storeDef: AppStore = {\n list: [],\n keys: [],\n locs: [],\n loading: false,\n solved: false,\n error: undefined,\n pick: undefined,\n data: undefined,\n};\n\nconst { state } = createStore(storeDef);\n\n// --------------------------------------------------------[ geometry ]\n\n// NOTE: by using Sets here, we don't have to worry about clearing geometry...\nconst geometry: GeoMap = new Map([\n ['row', new Map<number, Set<number>>()],\n ['column', new Map<number, Set<number>>()],\n ['box', new Map<number, Set<number>>()],\n]);\n\nconst keyValues: string[] = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];\n\nconst computeBox: ComputeBoxFn = (row, column) => {\n if (column < 3) {\n return row < 3 ? 0 : row < 6 ? 3 : 6;\n } else {\n if (column < 6) {\n return row < 3 ? 1 : row < 6 ? 4 : 7;\n } else {\n return row < 3 ? 2 : row < 6 ? 5 : 8;\n }\n }\n};\n\nconst computeLocs: ComputeLocsFn = (index, row, column, box) => {\n const data = new Map<string, number>([\n ['row', row],\n ['column', column],\n ['box', box],\n ]);\n const locs = new Set<number>();\n\n data.forEach((value, key) => {\n geometry\n .get(key)\n .get(value)\n .forEach(indx => {\n indx !== index && locs.add(indx);\n });\n });\n\n return Array.from(locs);\n};\n\nconst computeKeys: ComputeKeysFn = locs => {\n const { list } = state;\n const found = new Set<string>();\n\n locs.map(indx => {\n const { key } = list[indx];\n if (key != '.') {\n found.add(key);\n }\n });\n\n const keys = keyValues.filter(key => !found.has(key));\n\n return keys;\n};\n\nconst updateGeometry: GeometryFn = (index, row, column, box) => {\n const data = new Map<string, number>([\n ['row', row],\n ['column', column],\n ['box', box],\n ]);\n\n data.forEach((value, key) => {\n const map = geometry.get(key);\n\n if (map.has(value)) {\n // looking at the set specification, it should be sufficient to just call add\n // https://tc39.es/ecma262/#sec-set.prototype.add\n map.get(value).add(index);\n } else {\n map.set(value, new Set([index]));\n }\n });\n};\n\nconst updateFromInputs: InputsFn = list => {\n const inputs = bag.inputs.get();\n\n inputs.forEach((key, indx) => {\n const cell = list[indx];\n const { isClue } = cell;\n\n if (!isClue) {\n cell.key = key;\n }\n });\n};\n\n// --------------------------------------------------------[ process ]\n\nconst processData = (next: PuzzleData) => {\n if (next) {\n const { puzzle, ref } = next;\n const cells = puzzle ? [...puzzle] : [];\n const line = ref ? atob(ref) : undefined; // decrypt the solution... [ base64 ]\n const solution = line ? [...line] : [];\n\n const list = cells.map((key, indx) => {\n const value = solution[indx];\n const isClue = key === value;\n const row = Math.floor(indx / 9);\n const column = indx % 9;\n const box = computeBox(row, column);\n\n updateGeometry(indx, row, column, box);\n\n return { key, isClue, value, indx, row, column, box };\n });\n\n // NOTE: this only happens once on data change...\n updateFromInputs(list);\n\n state.data = next;\n state.list = list;\n } else {\n state.data = undefined;\n state.list = [];\n }\n};\n\nconst processPick = (next: PuzzleCell) => {\n if (next !== undefined && next.indx != state.pick) {\n const { isClue, indx, row, column, box } = next;\n const locs = computeLocs(indx, row, column, box);\n const keys = isClue ? [] : computeKeys(locs);\n\n state.pick = indx;\n state.keys = keys;\n state.locs = locs;\n // NOTE: we could auto-pick if there's only one key...\n // (keys.length === 1) && next.key = keys[0];\n } else {\n state.pick = undefined;\n state.keys = [];\n state.locs = [];\n }\n savePick(state.pick);\n};\n\n// --------------------------------------------------------[ utils ]\n\nlet api = undefined;\n\nconst platformPrefix = {\n netlify: '/.netlify/functions',\n vercel: 'https://sudoku-rust-api.vercel.app/api',\n};\n\nconst getPrefixFor = (platform: string) => {\n const keys = Object.keys(platformPrefix);\n const target = keys.includes(platform) ? platform : 'vercel';\n\n return platformPrefix[target];\n};\n\nconst initApi = (platform: string) => {\n const prefix = getPrefixFor(platform);\n\n api = ky.extend({\n hooks: {\n beforeRequest: [\n request => {\n request.headers.set('X-Requested-With', 'ky');\n request.headers.set('X-Custom-Header', 'foobar');\n },\n ],\n },\n prefixUrl: prefix,\n timeout: 10000,\n });\n};\n\nconst saveInputs = (inputs: string[]) => {\n bag.inputs.store(inputs);\n};\n\nconst savePick = (pick: number) => {\n bag.pick.store(pick);\n};\n\nconst clearStore = (loading = false) => {\n state.list = [];\n state.keys = [];\n state.locs = [];\n state.loading = loading;\n state.solved = false;\n state.error = undefined;\n state.pick = undefined;\n state.data = undefined;\n};\n\nconst updateStore = (data: PuzzleApiData, save: boolean = true) => {\n const { puzzle, ref } = data;\n\n if (save) {\n bag.inputs.store([]);\n bag.store(data);\n }\n\n processData({ puzzle, ref });\n};\n\n// --------------------------------------------------------[ actions ]\n\nconst initApp = (platform: string) => {\n initApi(platform);\n clearStore();\n // this retrieves the last data we stored in the bag...\n const data = bag.get();\n const pick = bag.pick.get();\n\n if (data) {\n updateStore(data, false);\n\n if (pick >= 0) {\n const { list } = state;\n const cell: PuzzleCell = list[pick];\n\n processPick(cell);\n }\n }\n};\n\nconst refresh = async () => {\n clearStore(true);\n\n saveInputs([]);\n savePick(state.pick);\n\n try {\n // fetch a new puzzle from the api...\n const data: PuzzleApiData = await api.get('puzzle').json();\n\n updateStore(data);\n } catch (err) {\n // handle error...\n const { message } = err;\n\n console.log('-- ', message);\n console.log(err);\n\n state.error = message;\n } finally {\n // always executed\n state.loading = false;\n }\n};\n\nconst select = (cell: PuzzleCell) => {\n processPick(cell);\n};\n\nconst redraw = (list: PuzzleCell[]) => {\n state.list = [...list];\n list.length = 0;\n};\n\nconst check = () => {\n const { list } = state;\n const inputs: string[] = [];\n\n let errors: number = 0;\n let found: number = 0;\n let clues: number = 0;\n\n list.forEach(cell => {\n const { key, value, isClue } = cell;\n\n if (!isClue) {\n if (key !== '.') {\n if (key !== value) {\n errors = errors + 1;\n cell.key = '.';\n } else {\n found = found + 1;\n }\n }\n } else {\n clues = clues + 1;\n }\n\n inputs.push(cell.key);\n });\n\n const total = clues + found;\n\n found ? saveInputs(inputs) : saveInputs([]);\n\n if (errors > 0) {\n redraw(list);\n } else {\n if (total === 81) {\n state.solved = true;\n }\n }\n};\n\nconst input = (key: string) => {\n const { pick, list } = state;\n const cell = list[pick];\n\n cell.key = key;\n\n redraw(list);\n};\n\nconst actions = {\n initApp,\n refresh,\n select,\n check,\n input,\n};\n\nexport { state, actions };\nexport default state;\n","// WARNING: generated file...\nconst TW_VERSION = '3.2.4';\n\nexport { TW_VERSION };\nexport default TW_VERSION;\n","const tw = (...classes: (false | null | undefined | string)[]): string => {\n return classes.filter(Boolean).join(' ');\n};\n\nexport { tw };\nexport default tw;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { tw, IconProps } from '../../utils';\n\nconst Spinner: FunctionalComponent<IconProps> = props => {\n const hex = props.hex || 'currentColor';\n const klass = props.class || '';\n const label = props.label || 'loading...';\n const size = props.size || 24;\n\n return (\n <svg\n class={tw(klass, 'animate-spin')}\n width={size}\n height={size}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-label=\"title\"\n >\n <title>{label}</title>\n <g>\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke={hex}\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill={hex}\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </g>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n );\n};\n\nexport { Spinner };\nexport default Spinner;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Alien } from './alien';\nimport { Spinner } from './spinner';\n\ninterface AlertProps {\n message: string;\n salute?: string;\n spinner?: boolean;\n}\n\nconst Alert: FunctionalComponent<AlertProps> = props => {\n const { message, salute, spinner = false } = props;\n\n return (\n <div class=\"mt-5 flex h-24px flex-row items-center\">\n {spinner ? <Spinner class=\"mr-2\" /> : <Alien class=\"mr-2\" />}\n {salute ? <label class=\"mr-1 font-bold\">{salute}:</label> : ''}\n <label class=\"italic\">{message}</label>\n </div>\n );\n};\n\nexport { Alert };\nexport default Alert;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Alert } from './alert';\nimport { state } from '../../utils';\n\nconst Alerts: FunctionalComponent = _props => {\n const { solved, loading, error } = state;\n const play = !loading && !error && !solved;\n return (\n <div class=\"flex flex-col\">\n {play ? <Alert message=\"Welcome, are you ready to play?...\" /> : ''}\n {loading ? <Alert message=\"Loading...\" spinner={true} /> : ''}\n {error ? <Alert message={error} salute=\"ERROR\" /> : ''}\n {solved ? <Alert message=\"You solved the puzzle!!\" /> : ''}\n </div>\n );\n};\n\nexport { Alerts };\nexport default Alert;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { IconProps } from '../../utils';\n\nconst Fingerprint: FunctionalComponent<IconProps> = props => {\n const hex = props.hex || 'currentColor';\n const klass = props.class;\n const label = props.label || 'fingerprint';\n const size = props.size || 24;\n\n return (\n <svg\n class={klass}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-label=\"title\"\n >\n <title>{label}</title>\n <g fill={hex}>\n <path\n d=\"M17.81,4.47C17.73,4.47 17.65,4.45 17.58,4.41C15.66,3.42 14,3\n 12,3C10.03,3 8.15,3.47 6.44,4.41C6.2,4.54 5.9,4.45 5.76,4.21C5.63,3.97\n 5.72,3.66 5.96,3.53C7.82,2.5 9.86,2 12,2C14.14,2 16,2.47\n 18.04,3.5C18.29,3.65 18.38,3.95 18.25,4.19C18.16,4.37 18,4.47\n 17.81,4.47M3.5,9.72C3.4,9.72 3.3,9.69 3.21,9.63C3,9.47 2.93,9.16\n 3.09,8.93C4.08,7.53 5.34,6.43 6.84,5.66C10,4.04 14,4.03\n 17.15,5.65C18.65,6.42 19.91,7.5 20.9,8.9C21.06,9.12 21,9.44\n 20.78,9.6C20.55,9.76 20.24,9.71 20.08,9.5C19.18,8.22 18.04,7.23\n 16.69,6.54C13.82,5.07 10.15,5.07 7.29,6.55C5.93,7.25 4.79,8.25\n 3.89,9.5C3.81,9.65 3.66,9.72 3.5,9.72M9.75,21.79C9.62,21.79 9.5,21.74\n 9.4,21.64C8.53,20.77 8.06,20.21 7.39,19C6.7,17.77 6.34,16.27\n 6.34,14.66C6.34,11.69 8.88,9.27 12,9.27C15.12,9.27 17.66,11.69\n 17.66,14.66A0.5,0.5 0 0,1 17.16,15.16A0.5,0.5 0 0,1\n 16.66,14.66C16.66,12.24 14.57,10.27 12,10.27C9.43,10.27 7.34,12.24\n 7.34,14.66C7.34,16.1 7.66,17.43 8.27,18.5C8.91,19.66 9.35,20.15\n 10.12,20.93C10.31,21.13 10.31,21.44 10.12,21.64C10,21.74 9.88,21.79\n 9.75,21.79M16.92,19.94C15.73,19.94 14.68,19.64 13.82,19.05C12.33,18.04\n 11.44,16.4 11.44,14.66A0.5,0.5 0 0,1 11.94,14.16A0.5,0.5 0 0,1\n 12.44,14.66C12.44,16.07 13.16,17.4 14.38,18.22C15.09,18.7 15.92,18.93\n 16.92,18.93C17.16,18.93 17.56,18.9 17.96,18.83C18.23,18.78 18.5,18.96\n 18.54,19.24C18.59,19.5 18.41,19.77 18.13,19.82C17.56,19.93 17.06,19.94\n 16.92,19.94M14.91,22C14.87,22 14.82,22 14.78,22C13.19,21.54 12.15,20.95\n 11.06,19.88C9.66,18.5 8.89,16.64 8.89,14.66C8.89,13.04 10.27,11.72\n 11.97,11.72C13.67,11.72 15.05,13.04 15.05,14.66C15.05,15.73 16,16.6\n 17.13,16.6C18.28,16.6 19.21,15.73 19.21,14.66C19.21,10.89 15.96,7.83\n 11.96,7.83C9.12,7.83 6.5,9.41 5.35,11.86C4.96,12.67 4.76,13.62\n 4.76,14.66C4.76,15.44 4.83,16.67 5.43,18.27C5.53,18.53 5.4,18.82\n 5.14,18.91C4.88,19 4.59,18.87 4.5,18.62C4,17.31 3.77,16\n 3.77,14.66C3.77,13.46 4,12.37 4.45,11.42C5.78,8.63 8.73,6.82\n 11.96,6.82C16.5,6.82 20.21,10.33 20.21,14.65C20.21,16.27 18.83,17.59\n 17.13,17.59C15.43,17.59 14.05,16.27 14.05,14.65C14.05,13.58 13.12,12.71\n 11.97,12.71C10.82,12.71 9.89,13.58 9.89,14.65C9.89,16.36 10.55,17.96\n 11.76,19.16C12.71,20.1 13.62,20.62 15.03,21C15.3,21.08 15.45,21.36\n 15.38,21.62C15.33,21.85 15.12,22 14.91,22Z\"\n />\n </g>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n );\n};\n\nexport { Fingerprint };\nexport default Fingerprint;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Fingerprint } from './fingerprint';\n\nconst url: string = 'https://eswat2.dev';\nconst who: string = 'eswat2';\n\nconst Eswat2Io: FunctionalComponent = _props => {\n return (\n <a\n class=\"absolute top-0 right-0 text-clrs-gray hover:text-clrs-navy\"\n href={url}\n aria-label={who}\n title={who}\n >\n <Fingerprint label={who} />\n </a>\n );\n};\n\nexport { Eswat2Io };\nexport default Eswat2Io;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { tw } from '../../utils';\n\nconst Header: FunctionalComponent = (_props, children) => {\n return (\n <h1\n class={tw(\n 'text-center uppercase text-clrs-red',\n 'mr-0 ml-0 mt-11 mb-11',\n 'text-6xl font-thin',\n )}\n >\n {children}\n </h1>\n );\n};\n\nexport { Header };\nexport default Header;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { tw, VoidFn, CHECK, NEW_PUZZLE, DELETE } from '../../utils';\n\ninterface ButtonProps {\n label: string;\n callback: VoidFn;\n matched?: boolean;\n}\n\nconst Button: FunctionalComponent<ButtonProps> = props => {\n const { label, callback, matched = false } = props;\n\n return (\n <button\n class={tw(\n 'rounded-md border border-solid border-clrs-slate4 font-bold',\n label === CHECK\n ? 'mr-2 bg-clrs-yellow px-3 py-2 text-clrs-navy'\n : label === NEW_PUZZLE\n ? 'mr-2 bg-clrs-navy px-3 py-2 text-white'\n : label === DELETE\n ? 'mr-1 bg-clrs-red px-2 py-1 text-white'\n : matched\n ? 'mr-1 bg-clrs-slate4 px-2 py-1 text-white'\n : 'mr-1 bg-gray-50 px-2 py-1 text-clrs-navy',\n )}\n onClick={callback}\n >\n {label}\n </button>\n );\n};\n\nexport { Button };\nexport default Button;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Button } from './button';\nimport { actions, state, DELETE } from '../../utils';\n\nconst Keys: FunctionalComponent = _props => {\n const { keys, list, pick, solved } = state;\n\n const genHandler = (key: string) => {\n return () => {\n actions.input(key);\n };\n };\n\n const values = solved ? [] : keys;\n const cell = pick != undefined ? list[pick] : undefined;\n\n return (\n <div class=\"mt-2 flex flex-row justify-end\">\n {!solved && cell && !cell.isClue && cell.key != '.' ? (\n <Button label={DELETE} callback={genHandler('.')} />\n ) : (\n ''\n )}\n {values.map((key: string) => {\n return (\n <Button\n label={key}\n callback={genHandler(key)}\n matched={cell.key === key}\n />\n );\n })}\n </div>\n );\n};\n\nexport { Keys };\nexport default Keys;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { actions, tw, PuzzleCell } from '../../utils';\n\n// NOTE: building indx mapping for the border highlighting...\nconst borderRight = [\n 2, 5, 11, 14, 20, 23, 29, 32, 38, 41, 47, 50, 56, 59, 65, 68, 74, 77,\n];\nconst borderLeft = borderRight.map(key => key + 1);\nconst borderBottom = [\n 18, 19, 20, 21, 22, 23, 24, 25, 26, 45, 46, 47, 48, 49, 50, 51, 52, 53,\n];\nconst borderTop = borderBottom.map(key => key + 9);\n\ninterface CellProps {\n cell: PuzzleCell;\n focus: boolean;\n selected: boolean;\n solved: boolean;\n}\n\n// Functional components return JSX...\nconst Cell: FunctionalComponent<CellProps> = props => {\n const { cell, focus, selected, solved } = props;\n const { key, isClue, indx } = cell;\n const clue: string = key != '.' ? key : '';\n\n const genHandler = (cell: PuzzleCell, solved: boolean) => {\n return () => {\n if (!solved) {\n actions.select(cell);\n }\n };\n };\n\n return (\n <label\n class={tw(\n `cell-${indx}`,\n borderRight.includes(indx) ? 'border-xbr-clrs-navy' : '',\n borderLeft.includes(indx) ? 'border-xbl-clrs-navy' : '',\n borderBottom.includes(indx) ? 'border-xbb-clrs-navy' : '',\n borderTop.includes(indx) ? 'border-xbt-clrs-navy' : '',\n 'h-8 w-8 border border-solid text-center leading-8',\n selected\n ? 'border-clrs-red bg-clrs-red-a50 text-clrs-red'\n : focus\n ? 'border-clrs-gray bg-clrs-green-a50 font-bold'\n : isClue\n ? 'border-clrs-gray bg-clrs-silver'\n : clue !== ''\n ? 'border-clrs-gray text-clrs-red'\n : 'border-clrs-gray',\n )}\n onClick={genHandler(cell, solved)}\n >\n {clue}\n </label>\n );\n};\n\nexport { Cell };\nexport default Cell;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Cell } from './cell';\nimport { state, tw } from '../../utils';\n\nconst SudokuBoard: FunctionalComponent = _props => {\n const { list, pick, locs, solved } = state;\n\n return (\n <div\n class={tw(\n 'flex flex-row flex-wrap',\n 'border border-solid border-clrs-navy',\n 'h-76p5 w-76p5 text-lg',\n )}\n >\n {list.map((cell, index) => {\n const selected: boolean = solved ? false : index === pick;\n const focus: boolean = solved ? false : locs.includes(index);\n\n return (\n <Cell cell={cell} focus={focus} selected={selected} solved={solved} />\n );\n })}\n </div>\n );\n};\n\nexport { SudokuBoard };\nexport default SudokuBoard;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { TW_VERSION } from '../../utils';\n\nconst TwLabel: FunctionalComponent = _props => {\n return (\n <label class=\"ml-auto align-top text-xs italic text-clrs-slate4\">\n Tailwind {TW_VERSION}\n </label>\n );\n};\n\nexport { TwLabel };\nexport default TwLabel;\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { Button } from './button';\nimport { TwLabel } from './tw-label';\nimport { actions, state, VoidFn, CHECK, NEW_PUZZLE } from '../../utils';\n\nconst handleRefresh = (actions: any): VoidFn => {\n return () => {\n actions.refresh();\n };\n};\n\nconst handleCheck = (actions: any): VoidFn => {\n return () => {\n actions.check();\n };\n};\n\nconst ToolBar: FunctionalComponent = _props => {\n const { list, solved } = state;\n\n return (\n <div class=\"flex flex-row\">\n <Button label={NEW_PUZZLE} callback={handleRefresh(actions)} />\n {list.length === 81 && !solved ? (\n <Button label={CHECK} callback={handleCheck(actions)} />\n ) : (\n ''\n )}\n <TwLabel />\n </div>\n );\n};\n\nexport { ToolBar };\nexport default ToolBar;\n","*,\n::before,\n::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n.ds1-main {\n margin: 1.5rem;\n display: flex;\n flex-direction: column;\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,\n 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n color: var(--clrs-navy, #001f3f);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.top-0 {\n top: 0px;\n}\n\n.right-0 {\n right: 0px;\n}\n\n.mt-5 {\n margin-top: 1.25rem;\n}\n\n.mr-2 {\n margin-right: 0.5rem;\n}\n\n.mr-1 {\n margin-right: 0.25rem;\n}\n\n.mr-0 {\n margin-right: 0px;\n}\n\n.ml-0 {\n margin-left: 0px;\n}\n\n.mt-11 {\n margin-top: 2.75rem;\n}\n\n.mb-11 {\n margin-bottom: 2.75rem;\n}\n\n.mt-2 {\n margin-top: 0.5rem;\n}\n\n.ml-auto {\n margin-left: auto;\n}\n\n.flex {\n display: flex;\n}\n\n.h-24px {\n height: 24px;\n}\n\n.h-8 {\n height: 2rem;\n}\n\n.h-76p5 {\n height: 19.125rem;\n}\n\n.w-8 {\n width: 2rem;\n}\n\n.w-76p5 {\n width: 19.125rem;\n}\n\n.max-w-min {\n max-width: -moz-min-content;\n max-width: min-content;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.animate-spin {\n animation: spin 1s linear infinite;\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-end {\n justify-content: flex-end;\n}\n\n.rounded-md {\n border-radius: 0.375rem;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-solid {\n border-style: solid;\n}\n\n.border-clrs-slate4 {\n border-color: var(--clrs-slate4, #4e5964);\n}\n\n.border-clrs-red {\n border-color: var(--clrs-red, #ff4136);\n}\n\n.border-clrs-gray {\n border-color: var(--clrs-gray, #aaaaaa);\n}\n\n.border-clrs-navy {\n border-color: var(--clrs-navy, #001f3f);\n}\n\n.bg-clrs-yellow {\n background-color: var(--clrs-yellow, #ffdc00);\n}\n\n.bg-clrs-navy {\n background-color: var(--clrs-navy, #001f3f);\n}\n\n.bg-clrs-red {\n background-color: var(--clrs-red, #ff4136);\n}\n\n.bg-clrs-slate4 {\n background-color: var(--clrs-slate4, #4e5964);\n}\n\n.bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity));\n}\n\n.bg-clrs-red-a50 {\n background-color: var(--clrs-red-a50, #ff413650);\n}\n\n.bg-clrs-green-a50 {\n background-color: var(--clrs-green-a50, #2ecc4050);\n}\n\n.bg-clrs-silver {\n background-color: var(--clrs-silver, #dddddd);\n}\n\n.p-0\\.5 {\n padding: 0.125rem;\n}\n\n.p-0 {\n padding: 0px;\n}\n\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-top {\n vertical-align: top;\n}\n\n.text-6xl {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.font-thin {\n font-weight: 100;\n}\n\n.uppercase {\n text-transform: uppercase;\n}\n\n.italic {\n font-style: italic;\n}\n\n.leading-8 {\n line-height: 2rem;\n}\n\n.text-clrs-navy {\n color: var(--clrs-navy, #001f3f);\n}\n\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.text-clrs-red {\n color: var(--clrs-red, #ff4136);\n}\n\n.text-clrs-gray {\n color: var(--clrs-gray, #aaaaaa);\n}\n\n.text-clrs-slate4 {\n color: var(--clrs-slate4, #4e5964);\n}\n\n.opacity-25 {\n opacity: 0.25;\n}\n\n.opacity-75 {\n opacity: 0.75;\n}\n\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),\n 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.border-xbb-clrs-navy {\n border-bottom: 1px solid var(--clrs-navy, #001f3f) !important;\n}\n\n.border-xbt-clrs-navy {\n border-top: 1px solid var(--clrs-navy, #001f3f) !important;\n}\n\n.border-xbl-clrs-navy {\n border-left: 1px solid var(--clrs-navy, #001f3f) !important;\n}\n\n.border-xbr-clrs-navy {\n border-right: 1px solid var(--clrs-navy, #001f3f) !important;\n}\n\n.hover\\:text-clrs-navy:hover {\n color: var(--clrs-navy, #001f3f);\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport { Alerts } from './alerts';\nimport { Eswat2Io } from './eswat2-io';\nimport { Header } from './header';\nimport { Keys } from './keys';\nimport { SudokuBoard } from './sudoku-board';\nimport { ToolBar } from './tool-bar';\nimport { actions } from '../../utils';\n\n@Component({\n tag: 'proto-sudoku',\n styleUrl: 'proto-sudoku.css',\n shadow: true,\n})\nexport class ProtoSudoku {\n @Prop() tag: string = 'proto-sudoku';\n @Prop() platform: string = 'vercel';\n\n componentDidLoad() {\n actions.initApp(this.platform);\n }\n\n render() {\n return (\n <div id=\"app\" class=\"ds1-main relative max-w-min p-0.5\">\n <Eswat2Io />\n <Header>Sudoku</Header>\n <SudokuBoard />\n <Keys />\n <hr class=\"ml-0 mr-0\" />\n <ToolBar />\n <Alerts />\n </div>\n );\n }\n}\n"],"mappings":"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"}