├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── rollup.config.js ├── src ├── Content.svelte ├── Overlay.svelte └── index.svelte └── www ├── now.json ├── package-lock.json ├── package.json ├── rollup.config.js ├── src ├── client.js ├── components │ ├── Footer.svelte │ └── Nav.svelte ├── routes │ ├── _error.svelte │ ├── _layout.svelte │ ├── examples │ │ ├── arrow.svelte │ │ ├── basic.svelte │ │ ├── eventPropagation.svelte │ │ ├── github.js │ │ ├── hover.svelte │ │ ├── index.svelte │ │ └── onOpenClose.svelte │ ├── features.svelte │ ├── index.svelte │ └── usage.svelte ├── server.js ├── service-worker.js └── template.html ├── static ├── favicon.png ├── global.css ├── logo-192.png ├── logo-512.png └── manifest.json └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | 63 | # www 64 | www/__sapper__/ 65 | build/ -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": false, 3 | "printWidth": 300, 4 | "tabWidth": 2, 5 | "semi": true, 6 | "trailingComma": "all", 7 | "singleQuote": true 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Vahe 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # svelte-popover 2 | 3 |

4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Website 16 | 17 | 18 |

19 | 20 | ![](https://res.cloudinary.com/dmtrk3yns/image/upload/q_auto/v1569229689/index_dlgtkt.gif) 21 | 22 | ## About 23 | 24 | - [x] 100% Svelte (or vanillajs) - no jQuery, no 3rd party dependencies 25 | - [x] Compatible with Sapper (SSR Svelte) 26 | - [x] Auto placement (Work in progress) 27 | - [x] Click, hover and touch events 28 | - [ ] Animation/Transition 29 | 30 | ## Installation 31 | 32 | **via NPM** 33 | 34 | ```code 35 | npm i svelte-popover --save-dev 36 | ``` 37 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-popover", 3 | "version": "2.0.8", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/estree": { 8 | "version": "0.0.39", 9 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 10 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 11 | "dev": true 12 | }, 13 | "@types/node": { 14 | "version": "12.7.5", 15 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz", 16 | "integrity": "sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==", 17 | "dev": true 18 | }, 19 | "@types/resolve": { 20 | "version": "0.0.8", 21 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", 22 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", 23 | "dev": true, 24 | "requires": { 25 | "@types/node": "*" 26 | } 27 | }, 28 | "acorn": { 29 | "version": "7.0.0", 30 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", 31 | "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", 32 | "dev": true 33 | }, 34 | "ansi-styles": { 35 | "version": "3.2.1", 36 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 37 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 38 | "dev": true, 39 | "requires": { 40 | "color-convert": "^1.9.0" 41 | } 42 | }, 43 | "balanced-match": { 44 | "version": "1.0.0", 45 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 46 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 47 | "dev": true 48 | }, 49 | "brace-expansion": { 50 | "version": "1.1.11", 51 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 52 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 53 | "dev": true, 54 | "requires": { 55 | "balanced-match": "^1.0.0", 56 | "concat-map": "0.0.1" 57 | } 58 | }, 59 | "builtin-modules": { 60 | "version": "3.1.0", 61 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", 62 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", 63 | "dev": true 64 | }, 65 | "chalk": { 66 | "version": "2.4.2", 67 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 68 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 69 | "dev": true, 70 | "requires": { 71 | "ansi-styles": "^3.2.1", 72 | "escape-string-regexp": "^1.0.5", 73 | "supports-color": "^5.3.0" 74 | } 75 | }, 76 | "color-convert": { 77 | "version": "1.9.3", 78 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 79 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 80 | "dev": true, 81 | "requires": { 82 | "color-name": "1.1.3" 83 | } 84 | }, 85 | "color-name": { 86 | "version": "1.1.3", 87 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 88 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 89 | "dev": true 90 | }, 91 | "concat-map": { 92 | "version": "0.0.1", 93 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 94 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 95 | "dev": true 96 | }, 97 | "cross-spawn": { 98 | "version": "6.0.5", 99 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 100 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 101 | "dev": true, 102 | "requires": { 103 | "nice-try": "^1.0.4", 104 | "path-key": "^2.0.1", 105 | "semver": "^5.5.0", 106 | "shebang-command": "^1.2.0", 107 | "which": "^1.2.9" 108 | } 109 | }, 110 | "define-properties": { 111 | "version": "1.1.3", 112 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 113 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 114 | "dev": true, 115 | "requires": { 116 | "object-keys": "^1.0.12" 117 | } 118 | }, 119 | "error-ex": { 120 | "version": "1.3.2", 121 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 122 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 123 | "dev": true, 124 | "requires": { 125 | "is-arrayish": "^0.2.1" 126 | } 127 | }, 128 | "es-abstract": { 129 | "version": "1.14.2", 130 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", 131 | "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", 132 | "dev": true, 133 | "requires": { 134 | "es-to-primitive": "^1.2.0", 135 | "function-bind": "^1.1.1", 136 | "has": "^1.0.3", 137 | "has-symbols": "^1.0.0", 138 | "is-callable": "^1.1.4", 139 | "is-regex": "^1.0.4", 140 | "object-inspect": "^1.6.0", 141 | "object-keys": "^1.1.1", 142 | "string.prototype.trimleft": "^2.0.0", 143 | "string.prototype.trimright": "^2.0.0" 144 | } 145 | }, 146 | "es-to-primitive": { 147 | "version": "1.2.0", 148 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", 149 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", 150 | "dev": true, 151 | "requires": { 152 | "is-callable": "^1.1.4", 153 | "is-date-object": "^1.0.1", 154 | "is-symbol": "^1.0.2" 155 | } 156 | }, 157 | "escape-string-regexp": { 158 | "version": "1.0.5", 159 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 160 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 161 | "dev": true 162 | }, 163 | "estree-walker": { 164 | "version": "0.6.1", 165 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 166 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 167 | "dev": true 168 | }, 169 | "function-bind": { 170 | "version": "1.1.1", 171 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 172 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 173 | "dev": true 174 | }, 175 | "graceful-fs": { 176 | "version": "4.2.2", 177 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", 178 | "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", 179 | "dev": true 180 | }, 181 | "has": { 182 | "version": "1.0.3", 183 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 184 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 185 | "dev": true, 186 | "requires": { 187 | "function-bind": "^1.1.1" 188 | } 189 | }, 190 | "has-flag": { 191 | "version": "3.0.0", 192 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 193 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 194 | "dev": true 195 | }, 196 | "has-symbols": { 197 | "version": "1.0.0", 198 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 199 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 200 | "dev": true 201 | }, 202 | "hosted-git-info": { 203 | "version": "2.8.4", 204 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", 205 | "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", 206 | "dev": true 207 | }, 208 | "is-arrayish": { 209 | "version": "0.2.1", 210 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 211 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 212 | "dev": true 213 | }, 214 | "is-callable": { 215 | "version": "1.1.4", 216 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 217 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 218 | "dev": true 219 | }, 220 | "is-date-object": { 221 | "version": "1.0.1", 222 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 223 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 224 | "dev": true 225 | }, 226 | "is-module": { 227 | "version": "1.0.0", 228 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 229 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 230 | "dev": true 231 | }, 232 | "is-regex": { 233 | "version": "1.0.4", 234 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 235 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 236 | "dev": true, 237 | "requires": { 238 | "has": "^1.0.1" 239 | } 240 | }, 241 | "is-symbol": { 242 | "version": "1.0.2", 243 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 244 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 245 | "dev": true, 246 | "requires": { 247 | "has-symbols": "^1.0.0" 248 | } 249 | }, 250 | "isexe": { 251 | "version": "2.0.0", 252 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 253 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 254 | "dev": true 255 | }, 256 | "json-parse-better-errors": { 257 | "version": "1.0.2", 258 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 259 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 260 | "dev": true 261 | }, 262 | "load-json-file": { 263 | "version": "4.0.0", 264 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 265 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 266 | "dev": true, 267 | "requires": { 268 | "graceful-fs": "^4.1.2", 269 | "parse-json": "^4.0.0", 270 | "pify": "^3.0.0", 271 | "strip-bom": "^3.0.0" 272 | } 273 | }, 274 | "memorystream": { 275 | "version": "0.3.1", 276 | "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", 277 | "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", 278 | "dev": true 279 | }, 280 | "minimatch": { 281 | "version": "3.0.4", 282 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 283 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 284 | "dev": true, 285 | "requires": { 286 | "brace-expansion": "^1.1.7" 287 | } 288 | }, 289 | "nice-try": { 290 | "version": "1.0.5", 291 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 292 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 293 | "dev": true 294 | }, 295 | "normalize-package-data": { 296 | "version": "2.5.0", 297 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 298 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 299 | "dev": true, 300 | "requires": { 301 | "hosted-git-info": "^2.1.4", 302 | "resolve": "^1.10.0", 303 | "semver": "2 || 3 || 4 || 5", 304 | "validate-npm-package-license": "^3.0.1" 305 | } 306 | }, 307 | "npm-run-all": { 308 | "version": "4.1.5", 309 | "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", 310 | "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", 311 | "dev": true, 312 | "requires": { 313 | "ansi-styles": "^3.2.1", 314 | "chalk": "^2.4.1", 315 | "cross-spawn": "^6.0.5", 316 | "memorystream": "^0.3.1", 317 | "minimatch": "^3.0.4", 318 | "pidtree": "^0.3.0", 319 | "read-pkg": "^3.0.0", 320 | "shell-quote": "^1.6.1", 321 | "string.prototype.padend": "^3.0.0" 322 | } 323 | }, 324 | "object-inspect": { 325 | "version": "1.6.0", 326 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", 327 | "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", 328 | "dev": true 329 | }, 330 | "object-keys": { 331 | "version": "1.1.1", 332 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 333 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 334 | "dev": true 335 | }, 336 | "parse-json": { 337 | "version": "4.0.0", 338 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 339 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 340 | "dev": true, 341 | "requires": { 342 | "error-ex": "^1.3.1", 343 | "json-parse-better-errors": "^1.0.1" 344 | } 345 | }, 346 | "path-key": { 347 | "version": "2.0.1", 348 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 349 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 350 | "dev": true 351 | }, 352 | "path-parse": { 353 | "version": "1.0.6", 354 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 355 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 356 | "dev": true 357 | }, 358 | "path-type": { 359 | "version": "3.0.0", 360 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 361 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 362 | "dev": true, 363 | "requires": { 364 | "pify": "^3.0.0" 365 | } 366 | }, 367 | "pidtree": { 368 | "version": "0.3.0", 369 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", 370 | "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", 371 | "dev": true 372 | }, 373 | "pify": { 374 | "version": "3.0.0", 375 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 376 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 377 | "dev": true 378 | }, 379 | "prettier": { 380 | "version": "1.18.2", 381 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", 382 | "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", 383 | "dev": true 384 | }, 385 | "prettier-plugin-svelte": { 386 | "version": "0.7.0", 387 | "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-0.7.0.tgz", 388 | "integrity": "sha512-SuZSeMh48rx42kCFEpI/xE1XgjxQcS3r22Yo7jIhBYRhwbAa8laNxiIHsfeWWkX8BdyELkEayaTQp4ricckwTQ==", 389 | "dev": true, 390 | "requires": { 391 | "tslib": "^1.9.3" 392 | } 393 | }, 394 | "read-pkg": { 395 | "version": "3.0.0", 396 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 397 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 398 | "dev": true, 399 | "requires": { 400 | "load-json-file": "^4.0.0", 401 | "normalize-package-data": "^2.3.2", 402 | "path-type": "^3.0.0" 403 | } 404 | }, 405 | "require-relative": { 406 | "version": "0.8.7", 407 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 408 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 409 | "dev": true 410 | }, 411 | "resolve": { 412 | "version": "1.12.0", 413 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", 414 | "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", 415 | "dev": true, 416 | "requires": { 417 | "path-parse": "^1.0.6" 418 | } 419 | }, 420 | "rollup": { 421 | "version": "1.21.4", 422 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.21.4.tgz", 423 | "integrity": "sha512-Pl512XVCmVzgcBz5h/3Li4oTaoDcmpuFZ+kdhS/wLreALz//WuDAMfomD3QEYl84NkDu6Z6wV9twlcREb4qQsw==", 424 | "dev": true, 425 | "requires": { 426 | "@types/estree": "0.0.39", 427 | "@types/node": "^12.7.5", 428 | "acorn": "^7.0.0" 429 | } 430 | }, 431 | "rollup-plugin-node-resolve": { 432 | "version": "5.2.0", 433 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", 434 | "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", 435 | "dev": true, 436 | "requires": { 437 | "@types/resolve": "0.0.8", 438 | "builtin-modules": "^3.1.0", 439 | "is-module": "^1.0.0", 440 | "resolve": "^1.11.1", 441 | "rollup-pluginutils": "^2.8.1" 442 | } 443 | }, 444 | "rollup-plugin-svelte": { 445 | "version": "5.1.0", 446 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.0.tgz", 447 | "integrity": "sha512-4MRZG29dAWDpoxEs5uIHzDnYafQEOLaKIJAuDYUtFIzEm1F1IGSTlFyjd8/qk4wltlHdu6V7YfZY53+CKryhMg==", 448 | "dev": true, 449 | "requires": { 450 | "require-relative": "^0.8.7", 451 | "rollup-pluginutils": "^2.3.3", 452 | "sourcemap-codec": "^1.4.4" 453 | } 454 | }, 455 | "rollup-pluginutils": { 456 | "version": "2.8.2", 457 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 458 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 459 | "dev": true, 460 | "requires": { 461 | "estree-walker": "^0.6.1" 462 | } 463 | }, 464 | "semver": { 465 | "version": "5.7.1", 466 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 467 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 468 | "dev": true 469 | }, 470 | "shebang-command": { 471 | "version": "1.2.0", 472 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 473 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 474 | "dev": true, 475 | "requires": { 476 | "shebang-regex": "^1.0.0" 477 | } 478 | }, 479 | "shebang-regex": { 480 | "version": "1.0.0", 481 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 482 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 483 | "dev": true 484 | }, 485 | "shell-quote": { 486 | "version": "1.7.2", 487 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", 488 | "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", 489 | "dev": true 490 | }, 491 | "sourcemap-codec": { 492 | "version": "1.4.6", 493 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", 494 | "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", 495 | "dev": true 496 | }, 497 | "spdx-correct": { 498 | "version": "3.1.0", 499 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", 500 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", 501 | "dev": true, 502 | "requires": { 503 | "spdx-expression-parse": "^3.0.0", 504 | "spdx-license-ids": "^3.0.0" 505 | } 506 | }, 507 | "spdx-exceptions": { 508 | "version": "2.2.0", 509 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", 510 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", 511 | "dev": true 512 | }, 513 | "spdx-expression-parse": { 514 | "version": "3.0.0", 515 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 516 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 517 | "dev": true, 518 | "requires": { 519 | "spdx-exceptions": "^2.1.0", 520 | "spdx-license-ids": "^3.0.0" 521 | } 522 | }, 523 | "spdx-license-ids": { 524 | "version": "3.0.5", 525 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", 526 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", 527 | "dev": true 528 | }, 529 | "string.prototype.padend": { 530 | "version": "3.0.0", 531 | "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", 532 | "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", 533 | "dev": true, 534 | "requires": { 535 | "define-properties": "^1.1.2", 536 | "es-abstract": "^1.4.3", 537 | "function-bind": "^1.0.2" 538 | } 539 | }, 540 | "string.prototype.trimleft": { 541 | "version": "2.1.0", 542 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", 543 | "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", 544 | "dev": true, 545 | "requires": { 546 | "define-properties": "^1.1.3", 547 | "function-bind": "^1.1.1" 548 | } 549 | }, 550 | "string.prototype.trimright": { 551 | "version": "2.1.0", 552 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", 553 | "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", 554 | "dev": true, 555 | "requires": { 556 | "define-properties": "^1.1.3", 557 | "function-bind": "^1.1.1" 558 | } 559 | }, 560 | "strip-bom": { 561 | "version": "3.0.0", 562 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 563 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 564 | "dev": true 565 | }, 566 | "supports-color": { 567 | "version": "5.5.0", 568 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 569 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 570 | "dev": true, 571 | "requires": { 572 | "has-flag": "^3.0.0" 573 | } 574 | }, 575 | "svelte": { 576 | "version": "3.12.1", 577 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.12.1.tgz", 578 | "integrity": "sha512-t29WJNjHIqfrdMcVXqIyRfgLEaNz7MihKXTpb8qHlbzvf0WyOOIhIlwIGvl6ahJ9+9CLJwz0sjhFNAmPgo8BHg==", 579 | "dev": true 580 | }, 581 | "tslib": { 582 | "version": "1.10.0", 583 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 584 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", 585 | "dev": true 586 | }, 587 | "validate-npm-package-license": { 588 | "version": "3.0.4", 589 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 590 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 591 | "dev": true, 592 | "requires": { 593 | "spdx-correct": "^3.0.0", 594 | "spdx-expression-parse": "^3.0.0" 595 | } 596 | }, 597 | "which": { 598 | "version": "1.3.1", 599 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 600 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 601 | "dev": true, 602 | "requires": { 603 | "isexe": "^2.0.0" 604 | } 605 | } 606 | } 607 | } 608 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-popover", 3 | "version": "2.0.8", 4 | "description": "A smart popover component for Svelte", 5 | "svelte": "src/index.svelte", 6 | "module": "build/index.mjs", 7 | "main": "build/index.js", 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1", 10 | "pretty": "prettier --config .prettierrc --write --svelte-sort-order styles-markup-scripts \"rollup.config.js\" \".prettierrc\" \"package.json\" \"src/*.svelte\" \"www/src/*.js\" \"www/src/*.html\" \"www/src/**/*.svelte\" \"www/src/**/*.svelte\" ", 11 | "build": "rollup -c", 12 | "go": "npm-run-all pretty build" 13 | }, 14 | "keywords": [ 15 | "popover", 16 | "svelte", 17 | "sveltejs", 18 | "svelte-popover" 19 | ], 20 | "repository": { 21 | "type": "git", 22 | "url": "git+https://github.com/vaheqelyan/svelte-popover.git" 23 | }, 24 | "author": "Vahe Araqelyan ", 25 | "license": "ISC", 26 | "files": [ 27 | "src", 28 | "build" 29 | ], 30 | "bugs": { 31 | "url": "https://github.com/vaheqelyan/svelte-popover/issues" 32 | }, 33 | "homepage": "https://github.com/vaheqelyan/svelte-popover#readme", 34 | "devDependencies": { 35 | "npm-run-all": "^4.1.5", 36 | "prettier": "^1.18.2", 37 | "prettier-plugin-svelte": "^0.7.0", 38 | "rollup": "^1.21.4", 39 | "rollup-plugin-node-resolve": "^5.2.0", 40 | "rollup-plugin-svelte": "^5.1.0", 41 | "svelte": "^3.12.1" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import svelte from 'rollup-plugin-svelte'; 2 | import resolve from 'rollup-plugin-node-resolve'; 3 | import pkg from './package.json'; 4 | 5 | const name = pkg.name 6 | .replace(/^(@\S+\/)?(svelte-)?(\S+)/, '$3') 7 | .replace(/^\w/, m => m.toUpperCase()) 8 | .replace(/-\w/g, m => m[1].toUpperCase()); 9 | 10 | export default [ 11 | { 12 | input: 'src/index.svelte', 13 | output: [{ file: pkg.module, format: 'es' }, { file: pkg.main, format: 'umd', name }], 14 | plugins: [svelte(), resolve()], 15 | }, 16 | ]; 17 | -------------------------------------------------------------------------------- /src/Content.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 | 16 | {#if arrow} 17 |
18 | {/if} 19 |
20 | 21 | 22 | 23 | 279 | -------------------------------------------------------------------------------- /src/Overlay.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | 14 | 37 | -------------------------------------------------------------------------------- /src/index.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 |
13 | 14 |
15 | {#if open} 16 | 17 | 18 | 19 | {/if} 20 |
21 | 22 | 72 | -------------------------------------------------------------------------------- /www/now.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-popover", 3 | "alias": "svelte-popover", 4 | "public": true 5 | } -------------------------------------------------------------------------------- /www/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "sapper dev", 4 | "dev": "sapper dev", 5 | "build": "sapper export" 6 | }, 7 | "dependencies": { 8 | "compression": "^1.7.1", 9 | "cookie-session": "^1.3.3", 10 | "polka": "^0.5.0", 11 | "sirv": "^0.4.0" 12 | }, 13 | "devDependencies": { 14 | "@babel/core": "^7.6.2", 15 | "@babel/plugin-syntax-dynamic-import": "^7.0.0", 16 | "@babel/plugin-transform-runtime": "^7.6.2", 17 | "@babel/preset-env": "^7.6.2", 18 | "@babel/runtime": "^7.6.2", 19 | "npm-run-all": "^4.1.5", 20 | "rollup": "^1.19.4", 21 | "rollup-plugin-babel": "^4.3.3", 22 | "rollup-plugin-commonjs": "^9.3.4", 23 | "rollup-plugin-node-resolve": "^4.2.4", 24 | "rollup-plugin-replace": "^2.0.0", 25 | "rollup-plugin-svelte": "^5.0.1", 26 | "rollup-plugin-terser": "^4.0.4", 27 | "sapper": "^0.27.9", 28 | "svelte": "^3.7.1", 29 | "svelte-loader": "^2.13.6", 30 | "svelte-popover": "^2.0.6", 31 | "webpack": "^4.39.1" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /www/rollup.config.js: -------------------------------------------------------------------------------- 1 | import resolve from 'rollup-plugin-node-resolve'; 2 | import replace from 'rollup-plugin-replace'; 3 | import commonjs from 'rollup-plugin-commonjs'; 4 | import svelte from 'rollup-plugin-svelte'; 5 | import babel from 'rollup-plugin-babel'; 6 | import { terser } from 'rollup-plugin-terser'; 7 | import config from 'sapper/config/rollup.js'; 8 | import pkg from './package.json'; 9 | 10 | const mode = process.env.NODE_ENV; 11 | const dev = mode === 'development'; 12 | const legacy = !!process.env.SAPPER_LEGACY_BUILD; 13 | 14 | const onwarn = (warning, onwarn) => (warning.code === 'CIRCULAR_DEPENDENCY' && warning.message.includes('/@sapper/')) || onwarn(warning); 15 | 16 | export default { 17 | client: { 18 | input: config.client.input(), 19 | output: config.client.output(), 20 | plugins: [ 21 | replace({ 22 | 'process.browser': true, 23 | 'process.env.NODE_ENV': JSON.stringify(mode), 24 | }), 25 | svelte({ 26 | dev, 27 | hydratable: true, 28 | emitCss: true, 29 | }), 30 | resolve({ 31 | browser: true, 32 | }), 33 | commonjs(), 34 | 35 | legacy && 36 | babel({ 37 | extensions: ['.js', '.mjs', '.html', '.svelte'], 38 | runtimeHelpers: true, 39 | exclude: ['node_modules/@babel/**'], 40 | presets: [ 41 | [ 42 | '@babel/preset-env', 43 | { 44 | targets: '> 0.25%, not dead', 45 | }, 46 | ], 47 | ], 48 | plugins: [ 49 | '@babel/plugin-syntax-dynamic-import', 50 | [ 51 | '@babel/plugin-transform-runtime', 52 | { 53 | useESModules: true, 54 | }, 55 | ], 56 | ], 57 | }), 58 | 59 | !dev && 60 | terser({ 61 | module: true, 62 | }), 63 | ], 64 | 65 | onwarn, 66 | }, 67 | 68 | server: { 69 | input: config.server.input(), 70 | output: config.server.output(), 71 | plugins: [ 72 | replace({ 73 | 'process.browser': false, 74 | 'process.env.NODE_ENV': JSON.stringify(mode), 75 | }), 76 | svelte({ 77 | generate: 'ssr', 78 | dev, 79 | }), 80 | resolve(), 81 | commonjs(), 82 | ], 83 | external: Object.keys(pkg.dependencies).concat(require('module').builtinModules || Object.keys(process.binding('natives'))), 84 | 85 | onwarn, 86 | }, 87 | 88 | serviceworker: { 89 | input: config.serviceworker.input(), 90 | output: config.serviceworker.output(), 91 | plugins: [ 92 | resolve(), 93 | replace({ 94 | 'process.browser': true, 95 | 'process.env.NODE_ENV': JSON.stringify(mode), 96 | }), 97 | commonjs(), 98 | !dev && terser(), 99 | ], 100 | 101 | onwarn, 102 | }, 103 | }; 104 | -------------------------------------------------------------------------------- /www/src/client.js: -------------------------------------------------------------------------------- 1 | import * as sapper from '@sapper/app'; 2 | 3 | sapper.start({ 4 | target: document.querySelector('#sapper'), 5 | }); 6 | -------------------------------------------------------------------------------- /www/src/components/Footer.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /www/src/components/Nav.svelte: -------------------------------------------------------------------------------- 1 | 38 | 39 | 46 | 47 | 50 | -------------------------------------------------------------------------------- /www/src/routes/_error.svelte: -------------------------------------------------------------------------------- 1 | 23 | 24 | 25 | {status} 26 | 27 | 28 |

{status}

29 | 30 |

{error.message}

31 | 32 | {#if dev && error.stack} 33 |
{error.stack}
34 | {/if} 35 | 36 | 42 | -------------------------------------------------------------------------------- /www/src/routes/_layout.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |