From 224268bbbdde4ef669790d596d4309204e1c5538 Mon Sep 17 00:00:00 2001 From: Jean Date: Wed, 31 Jul 2024 10:10:37 -0700 Subject: [PATCH] Mostly works, missing some things --- README.md | 15 +- assets/built/main.min.js | 2 +- assets/built/screen.css | 2 +- assets/built/screen.css.map | 2 +- assets/css/screen.css | 195 +- assets/css/tocbot.css | 90 + assets/fonts/WantedSans_LICENSE.txt | 0 assets/images/default-skin.png | Bin assets/images/default-skin.svg | 0 assets/images/oneko.gif | Bin 0 -> 3316 bytes assets/images/preloader.gif | Bin assets/js/{lib_delete => lib}/jarallax.min.js | 0 assets/js/oneko.js | 239 + author.hbs | 38 - default.hbs | 29 +- dist/bifocal.zip | Bin 4075035 -> 3896049 bytes dist/bifocal/LICENSE | 22 + dist/bifocal/README.md | 35 + dist/bifocal/assets/built/main.min.js | 1 + dist/bifocal/assets/built/main.min.js.map | 1 + dist/bifocal/assets/built/screen.css | 1 + dist/bifocal/assets/built/screen.css.map | 1 + dist/bifocal/assets/css/fonts.css | 49 + dist/bifocal/assets/css/screen.css | 552 ++ .../assets/fonts/WantedSans-Black.woff2 | Bin 0 -> 1210040 bytes .../assets/fonts/WantedSans-Bold.woff2 | Bin 0 -> 1210936 bytes .../assets/fonts/WantedSans-ExtraBlack.woff2 | Bin 0 -> 1228957 bytes .../assets/fonts/WantedSans-ExtraBold.woff2 | Bin 0 -> 1206408 bytes .../assets/fonts/WantedSans-Medium.woff2 | Bin 0 -> 1213374 bytes .../assets/fonts/WantedSans-Regular.woff2 | Bin 0 -> 1191958 bytes .../assets/fonts/WantedSans-SemiBold.woff2 | Bin 0 -> 1220999 bytes .../assets/fonts/WantedSans_LICENSE.txt | 93 + dist/bifocal/assets/icons/email.svg | 5 + dist/bifocal/assets/icons/linkedin.svg | 13 + dist/bifocal/assets/icons/mastodon.svg | 5 + dist/bifocal/assets/icons/matrix.svg | 5 + dist/bifocal/assets/images/default-skin.png | Bin 0 -> 547 bytes dist/bifocal/assets/images/default-skin.svg | 1 + dist/bifocal/assets/images/oneko.gif | Bin 0 -> 3316 bytes dist/bifocal/assets/images/preloader.gif | Bin 0 -> 866 bytes dist/bifocal/assets/js/lib/jarallax.min.js | 7 + dist/bifocal/assets/js/main.js | 54 + dist/bifocal/assets/js/oneko.js | 239 + dist/bifocal/default.hbs | 74 + dist/bifocal/gulpfile.js | 101 + dist/bifocal/index.hbs | 24 + dist/bifocal/package.json | 97 + dist/bifocal/page.hbs | 24 + dist/bifocal/partials/feature-image.hbs | 18 + dist/bifocal/partials/get-desc-tags.hbs | 9 + dist/bifocal/partials/get-meta-tags.hbs | 19 + dist/bifocal/partials/icons/email.hbs | 5 + dist/bifocal/partials/icons/linkedin.hbs | 12 + dist/bifocal/partials/icons/mastodon.hbs | 5 + dist/bifocal/partials/icons/matrix.hbs | 5 + dist/bifocal/partials/icons/rss.hbs | 5 + dist/bifocal/partials/icons/search.hbs | 3 + .../bifocal/partials/loop.hbs | 9 +- dist/bifocal/partials/pswp.hbs | 41 + dist/bifocal/partials/social-media.hbs | 25 + dist/bifocal/post.hbs | 34 + dist/bifocal/robots.txt | 112 + dist/bifocal/tag.hbs | 21 + dist/bifocal/yarn.lock | 5129 +++++++++++++++++ index.hbs | 17 +- node_modules/.bin/autoprefixer | 1 - node_modules/.bin/browserslist | 1 - node_modules/.bin/bunyan | 1 - node_modules/.bin/color-support | 1 - node_modules/.bin/convert-path | 1 - node_modules/.bin/crc32 | 1 - node_modules/.bin/css-beautify | 1 - node_modules/.bin/cssesc | 1 - node_modules/.bin/cwd | 1 - node_modules/.bin/editorconfig | 1 - node_modules/.bin/exists | 1 - node_modules/.bin/extract-zip | 1 - node_modules/.bin/gscan | 1 - node_modules/.bin/gulp | 1 - node_modules/.bin/handlebars | 1 - node_modules/.bin/has-float32array-support | 1 - node_modules/.bin/has-float64array-support | 1 - node_modules/.bin/has-int16array-support | 1 - node_modules/.bin/has-int32array-support | 1 - node_modules/.bin/has-int8array-support | 1 - node_modules/.bin/has-node-buffer-support | 1 - node_modules/.bin/has-symbol-support | 1 - node_modules/.bin/has-tostringtag-support | 1 - node_modules/.bin/has-uint16array-support | 1 - node_modules/.bin/has-uint32array-support | 1 - node_modules/.bin/has-uint8array-support | 1 - .../.bin/has-uint8clampedarray-support | 1 - node_modules/.bin/html-beautify | 1 - node_modules/.bin/is-regexp-string | 1 - node_modules/.bin/js-beautify | 1 - node_modules/.bin/library-manifest | 1 - node_modules/.bin/lowercase | 1 - node_modules/.bin/mime | 1 - node_modules/.bin/mkdirp | 1 - node_modules/.bin/nanoid | 1 - node_modules/.bin/ncp | 1 - node_modules/.bin/nopt | 1 - node_modules/.bin/prettyjson | 1 - node_modules/.bin/read-file | 1 - node_modules/.bin/replace | 1 - node_modules/.bin/resolve | 1 - node_modules/.bin/resolve-parent-path | 1 - node_modules/.bin/rimraf | 1 - node_modules/.bin/semver | 1 - node_modules/.bin/sshpk-conv | 1 - node_modules/.bin/sshpk-sign | 1 - node_modules/.bin/sshpk-verify | 1 - node_modules/.bin/svgo | 1 - node_modules/.bin/uglifyjs | 1 - node_modules/.bin/update-browserslist-db | 1 - node_modules/.bin/uuid | 1 - node_modules/.bin/which | 1 - node_modules/.bin/yaml | 1 - .../cliui/node_modules/wrap-ansi/index.js | 0 .../.bin/has-float32array-support | 1 - .../.bin/has-float64array-support | 1 - .../node_modules/.bin/has-int16array-support | 1 - .../node_modules/.bin/has-int32array-support | 1 - .../node_modules/.bin/has-int8array-support | 1 - .../node_modules/.bin/has-uint16array-support | 1 - .../node_modules/.bin/has-uint32array-support | 1 - .../node_modules/.bin/has-uint8array-support | 1 - .../.bin/has-uint8clampedarray-support | 1 - .../assert-has-float32array-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../assert-has-float64array-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../assert-has-int16array-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../assert-has-int32array-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../assert-has-int8array-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../assert-has-node-buffer-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../@stdlib/assert-has-symbol-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../assert-has-tostringtag-support/bin/cli | 0 .../node_modules/.bin/has-symbol-support | 1 - .../node_modules/.bin/read-file | 1 - .../assert-has-uint16array-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../assert-has-uint32array-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../assert-has-uint8array-support/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../node_modules/.bin/has-tostringtag-support | 1 - .../node_modules/.bin/has-tostringtag-support | 1 - .../@stdlib/assert-is-regexp-string/bin/cli | 0 .../node_modules/.bin/read-file | 1 - .../node_modules/.bin/has-tostringtag-support | 1 - .../node_modules/.bin/has-tostringtag-support | 1 - .../node_modules/.bin/has-node-buffer-support | 1 - .../node_modules/.bin/library-manifest | 1 - .../node_modules/.bin/library-manifest | 1 - .../node_modules/.bin/library-manifest | 1 - .../node_modules/.bin/library-manifest | 1 - .../node_modules/.bin/library-manifest | 1 - .../node_modules/.bin/library-manifest | 1 - node_modules/@stdlib/fs-exists/bin/cli | 0 .../@stdlib/fs-exists/node_modules/.bin/cwd | 1 - .../fs-exists/node_modules/.bin/read-file | 1 - node_modules/@stdlib/fs-read-file/bin/cli | 0 .../@stdlib/fs-resolve-parent-path/bin/cli | 0 .../node_modules/.bin/cwd | 1 - .../node_modules/.bin/exists | 1 - .../node_modules/.bin/read-file | 1 - .../node_modules/.bin/library-manifest | 1 - .../node_modules/.bin/library-manifest | 1 - .../node_modules/.bin/library-manifest | 1 - node_modules/@stdlib/process-cwd/bin/cli | 0 .../process-cwd/node_modules/.bin/read-file | 1 - node_modules/@stdlib/string-lowercase/bin/cli | 0 .../node_modules/.bin/read-file | 1 - node_modules/@stdlib/string-replace/bin/cli | 0 .../node_modules/.bin/is-regexp-string | 1 - .../node_modules/.bin/read-file | 1 - .../@stdlib/utils-convert-path/bin/cli | 0 .../node_modules/.bin/lowercase | 1 - .../node_modules/.bin/read-file | 1 - .../node_modules/.bin/replace | 1 - .../@stdlib/utils-library-manifest/bin/cli | 0 .../node_modules/.bin/convert-path | 1 - .../node_modules/.bin/resolve | 1 - .../node_modules/.bin/resolve-parent-path | 1 - .../node_modules/.bin/has-tostringtag-support | 1 - .../@tryghost/errors/node_modules/.bin/uuid | 1 - .../logging/node_modules/.bin/bunyan | 1 - .../node_modules/.bin/prettyjson | 1 - .../lib/vendor/photoswipe-ui-default.min.js | 0 .../assets/js/v1/lib/vendor/photoswipe.min.js | 0 .../lib/vendor/photoswipe-ui-default.min.js | 0 .../assets/js/v2/lib/vendor/photoswipe.min.js | 0 .../version/node_modules/.bin/semver | 1 - .../zip/node_modules/.bin/extract-zip | 1 - node_modules/arr-diff/LICENSE | 0 node_modules/array-slice/LICENSE | 0 node_modules/array-slice/README.md | 0 node_modules/autoprefixer/bin/autoprefixer | 0 .../node_modules/.bin/browserslist | 1 - node_modules/browserslist/cli.js | 0 .../node_modules/.bin/update-browserslist-db | 1 - node_modules/bunyan/bin/bunyan | 0 .../node_modules/.bin/browserslist | 1 - node_modules/color-support/bin.js | 0 node_modules/config-chain/index.js | 0 node_modules/crc-32/bin/crc32.njs | 0 .../crc32-stream/node_modules/.bin/crc32 | 1 - .../cross-spawn/node_modules/.bin/node-which | 1 - node_modules/css-tree/lib/data.js | 0 node_modules/cssesc/bin/cssesc | 0 .../node_modules/.bin/browserslist | 1 - .../csso/node_modules/css-tree/lib/data.js | 0 node_modules/date-fns/esm/index.js | 0 .../date-fns/esm/previousDay/index.js | 0 .../date-fns/esm/previousFriday/index.js | 0 .../date-fns/esm/previousMonday/index.js | 0 .../date-fns/esm/previousSaturday/index.js | 0 .../date-fns/esm/previousSunday/index.js | 0 .../date-fns/esm/previousThursday/index.js | 0 .../date-fns/esm/previousTuesday/index.js | 0 .../date-fns/esm/previousWednesday/index.js | 0 node_modules/date-fns/index.js | 0 node_modules/date-fns/locale/oc/index.js.flow | 35 - node_modules/date-fns/previousDay/index.js | 0 node_modules/date-fns/previousFriday/index.js | 0 node_modules/date-fns/previousMonday/index.js | 0 .../date-fns/previousSaturday/index.js | 0 node_modules/date-fns/previousSunday/index.js | 0 .../date-fns/previousThursday/index.js | 0 .../date-fns/previousTuesday/index.js | 0 .../date-fns/previousWednesday/index.js | 0 node_modules/dtrace-provider/libusdt/test.pl | 0 node_modules/ecc-jsbn/LICENSE | 0 node_modules/ecc-jsbn/README.md | 0 node_modules/ecc-jsbn/index.js | 0 node_modules/ecc-jsbn/lib/LICENSE-jsbn | 0 node_modules/ecc-jsbn/lib/ec.js | 0 node_modules/ecc-jsbn/lib/sec.js | 0 node_modules/ecc-jsbn/package.json | 0 node_modules/ecc-jsbn/test.js | 0 node_modules/editorconfig/bin/editorconfig | 0 .../editorconfig/node_modules/.bin/semver | 1 - .../node_modules/.bin/css-beautify | 1 - .../express-hbs/node_modules/.bin/handlebars | 1 - .../node_modules/.bin/html-beautify | 1 - .../express-hbs/node_modules/.bin/js-beautify | 1 - node_modules/extract-zip/cli.js | 0 .../fancy-log/node_modules/.bin/color-support | 1 - node_modules/glob-stream/LICENSE | 0 .../global-prefix/node_modules/.bin/which | 1 - .../node_modules/which/bin/which | 0 .../dist/source/core/utils/options-to-url.js | 48 - node_modules/gscan/bin/cli.js | 0 node_modules/gscan/node_modules/.bin/semver | 1 - node_modules/gscan/node_modules/.bin/uuid | 1 - node_modules/gulp-cli/bin/gulp.js | 0 node_modules/gulp-concat/LICENSE | 0 .../fancy-log/node_modules/.bin/color-support | 1 - .../gulp-uglify/node_modules/.bin/uglifyjs | 1 - node_modules/gulp-zip/node_modules/.bin/gulp | 1 - node_modules/gulp/bin/gulp.js | 0 node_modules/gulp/node_modules/.bin/gulp | 1 - node_modules/handlebars/bin/handlebars | 0 .../handlebars/node_modules/.bin/uglifyjs | 1 - .../hpagent/test/hang-socket/runner.sh | 0 .../node_modules/.bin/sshpk-conv | 1 - .../node_modules/.bin/sshpk-sign | 1 - .../node_modules/.bin/sshpk-verify | 1 - .../js-beautify/js/bin/css-beautify.js | 0 .../js-beautify/js/bin/html-beautify.js | 0 .../js-beautify/js/bin/js-beautify.js | 0 node_modules/js-beautify/js/lib/cli.js | 0 node_modules/js-beautify/js/src/cli.js | 0 .../node_modules/.bin/editorconfig | 1 - .../js-beautify/node_modules/.bin/glob | 1 - .../js-beautify/node_modules/.bin/nopt | 1 - .../node_modules/glob/dist/esm/bin.mjs | 0 .../liftoff/node_modules/.bin/resolve | 1 - node_modules/micromatch/LICENSE | 0 node_modules/mime/cli.js | 0 node_modules/mime/src/build.js | 0 node_modules/mkdirp/bin/cmd.js | 0 node_modules/multer/node_modules/.bin/mkdirp | 1 - node_modules/mv/node_modules/.bin/mkdirp | 1 - node_modules/mv/node_modules/.bin/ncp | 1 - node_modules/mv/node_modules/.bin/rimraf | 1 - node_modules/nan/tools/1to2.js | 0 node_modules/nanoid/bin/nanoid.cjs | 0 node_modules/ncp/bin/ncp | 0 node_modules/nopt/bin/nopt.js | 0 .../test/scripts/delayed-call.coffee | 0 .../test/scripts/delayed-require.coffee | 0 .../test/scripts/difference.coffee | 0 .../test/scripts/initial-value.coffee | 0 .../node_modules/.bin/browserslist | 1 - .../node_modules/.bin/browserslist | 1 - .../node_modules/.bin/resolve | 1 - node_modules/postcss-import/LICENSE | 0 node_modules/postcss-import/index.js | 0 .../postcss-import/node_modules/.bin/resolve | 1 - .../node_modules/.bin/yaml | 1 - .../node_modules/.bin/browserslist | 1 - .../node_modules/.bin/browserslist | 1 - .../node_modules/.bin/browserslist | 1 - .../node_modules/.bin/browserslist | 1 - .../node_modules/.bin/cssesc | 1 - .../postcss-svgo/node_modules/.bin/svgo | 1 - node_modules/postcss/node_modules/.bin/nanoid | 1 - node_modules/postcss/package.json | 0 node_modules/prettyjson/bin/prettyjson | 0 .../rechoir/node_modules/.bin/resolve | 1 - node_modules/request/index.js | 0 node_modules/request/node_modules/.bin/uuid | 1 - .../request/node_modules/uuid/bin/uuid | 0 node_modules/resolve/bin/resolve | 0 node_modules/rimraf/bin.js | 0 node_modules/secure-json-parse/LICENSE.md | 0 .../secure-json-parse/benchmarks/ignore.js | 0 .../benchmarks/no__proto__.js | 0 .../secure-json-parse/benchmarks/remove.js | 0 .../secure-json-parse/benchmarks/throw.js | 0 node_modules/secure-json-parse/index.js | 0 node_modules/semver/bin/semver.js | 0 node_modules/send/node_modules/.bin/mime | 1 - node_modules/sshpk/bin/sshpk-conv | 0 node_modules/sshpk/bin/sshpk-sign | 0 node_modules/sshpk/bin/sshpk-verify | 0 .../stylehacks/node_modules/.bin/browserslist | 1 - node_modules/sver/node_modules/.bin/semver | 1 - .../sver/node_modules/semver/bin/semver.js | 0 node_modules/svgo/bin/svgo | 0 node_modules/uglify-js/bin/uglifyjs | 0 node_modules/undici/lib/llhttp/llhttp.wasm | Bin .../undici/lib/llhttp/llhttp_simd.wasm | Bin node_modules/update-browserslist-db/cli.js | 0 .../node_modules/.bin/browserslist | 1 - node_modules/uri-js/LICENSE | 0 node_modules/uri-js/README.md | 0 node_modules/uri-js/dist/es5/uri.all.d.ts | 0 node_modules/uri-js/dist/es5/uri.all.js | 0 node_modules/uri-js/dist/es5/uri.all.js.map | 0 node_modules/uri-js/dist/es5/uri.all.min.d.ts | 0 node_modules/uri-js/dist/es5/uri.all.min.js | 0 .../uri-js/dist/es5/uri.all.min.js.map | 0 node_modules/uri-js/dist/esnext/index.d.ts | 0 node_modules/uri-js/dist/esnext/index.js | 0 node_modules/uri-js/dist/esnext/index.js.map | 0 .../uri-js/dist/esnext/regexps-iri.d.ts | 0 .../uri-js/dist/esnext/regexps-iri.js | 0 .../uri-js/dist/esnext/regexps-iri.js.map | 0 .../uri-js/dist/esnext/regexps-uri.d.ts | 0 .../uri-js/dist/esnext/regexps-uri.js | 0 .../uri-js/dist/esnext/regexps-uri.js.map | 0 .../uri-js/dist/esnext/schemes/http.d.ts | 0 .../uri-js/dist/esnext/schemes/http.js | 0 .../uri-js/dist/esnext/schemes/http.js.map | 0 .../uri-js/dist/esnext/schemes/https.d.ts | 0 .../uri-js/dist/esnext/schemes/https.js | 0 .../uri-js/dist/esnext/schemes/https.js.map | 0 .../uri-js/dist/esnext/schemes/mailto.d.ts | 0 .../uri-js/dist/esnext/schemes/mailto.js | 0 .../uri-js/dist/esnext/schemes/mailto.js.map | 0 .../uri-js/dist/esnext/schemes/urn-uuid.d.ts | 0 .../uri-js/dist/esnext/schemes/urn-uuid.js | 0 .../dist/esnext/schemes/urn-uuid.js.map | 0 .../uri-js/dist/esnext/schemes/urn.d.ts | 0 .../uri-js/dist/esnext/schemes/urn.js | 0 .../uri-js/dist/esnext/schemes/urn.js.map | 0 .../uri-js/dist/esnext/schemes/ws.d.ts | 0 node_modules/uri-js/dist/esnext/schemes/ws.js | 0 .../uri-js/dist/esnext/schemes/ws.js.map | 0 .../uri-js/dist/esnext/schemes/wss.d.ts | 0 .../uri-js/dist/esnext/schemes/wss.js | 0 .../uri-js/dist/esnext/schemes/wss.js.map | 0 node_modules/uri-js/dist/esnext/uri.d.ts | 0 node_modules/uri-js/dist/esnext/uri.js | 0 node_modules/uri-js/dist/esnext/uri.js.map | 0 node_modules/uri-js/dist/esnext/util.d.ts | 0 node_modules/uri-js/dist/esnext/util.js | 0 node_modules/uri-js/dist/esnext/util.js.map | 0 node_modules/uri-js/package.json | 0 node_modules/uri-js/yarn.lock | 0 node_modules/uuid/dist/bin/uuid | 0 node_modules/validator/es/lib/isCurrency.js | 0 node_modules/validator/lib/isCurrency.js | 0 node_modules/which/bin/node-which | 0 node_modules/wrap-ansi-cjs/index.js | 0 node_modules/wrap-ansi/index.js | 0 node_modules/yaml/bin.mjs | 0 package.json | 8 + partials/get-desc-tags.hbs | 9 + partials/get-meta-tags.hbs | 23 +- partials/icons/email.hbs | 8 +- partials/icons/rss.hbs | 5 + partials/loop.hbs | 37 + partials/pswp.hbs | 41 + partials/social-media.hbs | 25 + post.hbs | 8 +- tag.hbs | 33 +- 407 files changed, 7400 insertions(+), 525 deletions(-) create mode 100644 assets/css/tocbot.css mode change 100755 => 100644 assets/fonts/WantedSans_LICENSE.txt mode change 100755 => 100644 assets/images/default-skin.png mode change 100755 => 100644 assets/images/default-skin.svg create mode 100644 assets/images/oneko.gif mode change 100755 => 100644 assets/images/preloader.gif rename assets/js/{lib_delete => lib}/jarallax.min.js (100%) create mode 100644 assets/js/oneko.js delete mode 100644 author.hbs create mode 100644 dist/bifocal/LICENSE create mode 100644 dist/bifocal/README.md create mode 100644 dist/bifocal/assets/built/main.min.js create mode 100644 dist/bifocal/assets/built/main.min.js.map create mode 100644 dist/bifocal/assets/built/screen.css create mode 100644 dist/bifocal/assets/built/screen.css.map create mode 100644 dist/bifocal/assets/css/fonts.css create mode 100644 dist/bifocal/assets/css/screen.css create mode 100644 dist/bifocal/assets/fonts/WantedSans-Black.woff2 create mode 100644 dist/bifocal/assets/fonts/WantedSans-Bold.woff2 create mode 100644 dist/bifocal/assets/fonts/WantedSans-ExtraBlack.woff2 create mode 100644 dist/bifocal/assets/fonts/WantedSans-ExtraBold.woff2 create mode 100644 dist/bifocal/assets/fonts/WantedSans-Medium.woff2 create mode 100644 dist/bifocal/assets/fonts/WantedSans-Regular.woff2 create mode 100644 dist/bifocal/assets/fonts/WantedSans-SemiBold.woff2 create mode 100644 dist/bifocal/assets/fonts/WantedSans_LICENSE.txt create mode 100644 dist/bifocal/assets/icons/email.svg create mode 100644 dist/bifocal/assets/icons/linkedin.svg create mode 100644 dist/bifocal/assets/icons/mastodon.svg create mode 100644 dist/bifocal/assets/icons/matrix.svg create mode 100644 dist/bifocal/assets/images/default-skin.png create mode 100644 dist/bifocal/assets/images/default-skin.svg create mode 100644 dist/bifocal/assets/images/oneko.gif create mode 100644 dist/bifocal/assets/images/preloader.gif create mode 100644 dist/bifocal/assets/js/lib/jarallax.min.js create mode 100644 dist/bifocal/assets/js/main.js create mode 100644 dist/bifocal/assets/js/oneko.js create mode 100644 dist/bifocal/default.hbs create mode 100644 dist/bifocal/gulpfile.js create mode 100644 dist/bifocal/index.hbs create mode 100644 dist/bifocal/package.json create mode 100644 dist/bifocal/page.hbs create mode 100644 dist/bifocal/partials/feature-image.hbs create mode 100644 dist/bifocal/partials/get-desc-tags.hbs create mode 100644 dist/bifocal/partials/get-meta-tags.hbs create mode 100644 dist/bifocal/partials/icons/email.hbs create mode 100644 dist/bifocal/partials/icons/linkedin.hbs create mode 100644 dist/bifocal/partials/icons/mastodon.hbs create mode 100644 dist/bifocal/partials/icons/matrix.hbs create mode 100644 dist/bifocal/partials/icons/rss.hbs create mode 100644 dist/bifocal/partials/icons/search.hbs rename partials/box-info.hbs => dist/bifocal/partials/loop.hbs (86%) create mode 100644 dist/bifocal/partials/pswp.hbs create mode 100644 dist/bifocal/partials/social-media.hbs create mode 100644 dist/bifocal/post.hbs create mode 100644 dist/bifocal/robots.txt create mode 100644 dist/bifocal/tag.hbs create mode 100644 dist/bifocal/yarn.lock delete mode 120000 node_modules/.bin/autoprefixer delete mode 120000 node_modules/.bin/browserslist delete mode 120000 node_modules/.bin/bunyan delete mode 120000 node_modules/.bin/color-support delete mode 120000 node_modules/.bin/convert-path delete mode 120000 node_modules/.bin/crc32 delete mode 120000 node_modules/.bin/css-beautify delete mode 120000 node_modules/.bin/cssesc delete mode 120000 node_modules/.bin/cwd delete mode 120000 node_modules/.bin/editorconfig delete mode 120000 node_modules/.bin/exists delete mode 120000 node_modules/.bin/extract-zip delete mode 120000 node_modules/.bin/gscan delete mode 120000 node_modules/.bin/gulp delete mode 120000 node_modules/.bin/handlebars delete mode 120000 node_modules/.bin/has-float32array-support delete mode 120000 node_modules/.bin/has-float64array-support delete mode 120000 node_modules/.bin/has-int16array-support delete mode 120000 node_modules/.bin/has-int32array-support delete mode 120000 node_modules/.bin/has-int8array-support delete mode 120000 node_modules/.bin/has-node-buffer-support delete mode 120000 node_modules/.bin/has-symbol-support delete mode 120000 node_modules/.bin/has-tostringtag-support delete mode 120000 node_modules/.bin/has-uint16array-support delete mode 120000 node_modules/.bin/has-uint32array-support delete mode 120000 node_modules/.bin/has-uint8array-support delete mode 120000 node_modules/.bin/has-uint8clampedarray-support delete mode 120000 node_modules/.bin/html-beautify delete mode 120000 node_modules/.bin/is-regexp-string delete mode 120000 node_modules/.bin/js-beautify delete mode 120000 node_modules/.bin/library-manifest delete mode 120000 node_modules/.bin/lowercase delete mode 120000 node_modules/.bin/mime delete mode 120000 node_modules/.bin/mkdirp delete mode 120000 node_modules/.bin/nanoid delete mode 120000 node_modules/.bin/ncp delete mode 120000 node_modules/.bin/nopt delete mode 120000 node_modules/.bin/prettyjson delete mode 120000 node_modules/.bin/read-file delete mode 120000 node_modules/.bin/replace delete mode 120000 node_modules/.bin/resolve delete mode 120000 node_modules/.bin/resolve-parent-path delete mode 120000 node_modules/.bin/rimraf delete mode 120000 node_modules/.bin/semver delete mode 120000 node_modules/.bin/sshpk-conv delete mode 120000 node_modules/.bin/sshpk-sign delete mode 120000 node_modules/.bin/sshpk-verify delete mode 120000 node_modules/.bin/svgo delete mode 120000 node_modules/.bin/uglifyjs delete mode 120000 node_modules/.bin/update-browserslist-db delete mode 120000 node_modules/.bin/uuid delete mode 120000 node_modules/.bin/which delete mode 120000 node_modules/.bin/yaml mode change 100755 => 100644 node_modules/@isaacs/cliui/node_modules/wrap-ansi/index.js delete mode 120000 node_modules/@stdlib/array-float32/node_modules/.bin/has-float32array-support delete mode 120000 node_modules/@stdlib/array-float64/node_modules/.bin/has-float64array-support delete mode 120000 node_modules/@stdlib/array-int16/node_modules/.bin/has-int16array-support delete mode 120000 node_modules/@stdlib/array-int32/node_modules/.bin/has-int32array-support delete mode 120000 node_modules/@stdlib/array-int8/node_modules/.bin/has-int8array-support delete mode 120000 node_modules/@stdlib/array-uint16/node_modules/.bin/has-uint16array-support delete mode 120000 node_modules/@stdlib/array-uint32/node_modules/.bin/has-uint32array-support delete mode 120000 node_modules/@stdlib/array-uint8/node_modules/.bin/has-uint8array-support delete mode 120000 node_modules/@stdlib/array-uint8c/node_modules/.bin/has-uint8clampedarray-support mode change 100755 => 100644 node_modules/@stdlib/assert-has-float32array-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-float32array-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-float64array-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-float64array-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-int16array-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-int16array-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-int32array-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-int32array-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-int8array-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-int8array-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-node-buffer-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-node-buffer-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-symbol-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-symbol-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-tostringtag-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-tostringtag-support/node_modules/.bin/has-symbol-support delete mode 120000 node_modules/@stdlib/assert-has-tostringtag-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-uint16array-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-uint16array-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-uint32array-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-uint32array-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-uint8array-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-uint8array-support/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/assert-has-uint8clampedarray-support/bin/cli delete mode 120000 node_modules/@stdlib/assert-has-uint8clampedarray-support/node_modules/.bin/read-file delete mode 120000 node_modules/@stdlib/assert-is-boolean/node_modules/.bin/has-tostringtag-support delete mode 120000 node_modules/@stdlib/assert-is-number/node_modules/.bin/has-tostringtag-support mode change 100755 => 100644 node_modules/@stdlib/assert-is-regexp-string/bin/cli delete mode 120000 node_modules/@stdlib/assert-is-regexp-string/node_modules/.bin/read-file delete mode 120000 node_modules/@stdlib/assert-is-regexp/node_modules/.bin/has-tostringtag-support delete mode 120000 node_modules/@stdlib/assert-is-string/node_modules/.bin/has-tostringtag-support delete mode 120000 node_modules/@stdlib/buffer-ctor/node_modules/.bin/has-node-buffer-support delete mode 120000 node_modules/@stdlib/complex-float32/node_modules/.bin/library-manifest delete mode 120000 node_modules/@stdlib/complex-float64/node_modules/.bin/library-manifest delete mode 120000 node_modules/@stdlib/complex-reim/node_modules/.bin/library-manifest delete mode 120000 node_modules/@stdlib/complex-reimf/node_modules/.bin/library-manifest delete mode 120000 node_modules/@stdlib/constants-float64-ninf/node_modules/.bin/library-manifest delete mode 120000 node_modules/@stdlib/constants-float64-pinf/node_modules/.bin/library-manifest mode change 100755 => 100644 node_modules/@stdlib/fs-exists/bin/cli delete mode 120000 node_modules/@stdlib/fs-exists/node_modules/.bin/cwd delete mode 120000 node_modules/@stdlib/fs-exists/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/fs-read-file/bin/cli mode change 100755 => 100644 node_modules/@stdlib/fs-resolve-parent-path/bin/cli delete mode 120000 node_modules/@stdlib/fs-resolve-parent-path/node_modules/.bin/cwd delete mode 120000 node_modules/@stdlib/fs-resolve-parent-path/node_modules/.bin/exists delete mode 120000 node_modules/@stdlib/fs-resolve-parent-path/node_modules/.bin/read-file delete mode 120000 node_modules/@stdlib/math-base-assert-is-nan/node_modules/.bin/library-manifest delete mode 120000 node_modules/@stdlib/math-base-napi-unary/node_modules/.bin/library-manifest delete mode 120000 node_modules/@stdlib/math-base-special-floor/node_modules/.bin/library-manifest mode change 100755 => 100644 node_modules/@stdlib/process-cwd/bin/cli delete mode 120000 node_modules/@stdlib/process-cwd/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/string-lowercase/bin/cli delete mode 120000 node_modules/@stdlib/string-lowercase/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/string-replace/bin/cli delete mode 120000 node_modules/@stdlib/string-replace/node_modules/.bin/is-regexp-string delete mode 120000 node_modules/@stdlib/string-replace/node_modules/.bin/read-file mode change 100755 => 100644 node_modules/@stdlib/utils-convert-path/bin/cli delete mode 120000 node_modules/@stdlib/utils-convert-path/node_modules/.bin/lowercase delete mode 120000 node_modules/@stdlib/utils-convert-path/node_modules/.bin/read-file delete mode 120000 node_modules/@stdlib/utils-convert-path/node_modules/.bin/replace mode change 100755 => 100644 node_modules/@stdlib/utils-library-manifest/bin/cli delete mode 120000 node_modules/@stdlib/utils-library-manifest/node_modules/.bin/convert-path delete mode 120000 node_modules/@stdlib/utils-library-manifest/node_modules/.bin/resolve delete mode 120000 node_modules/@stdlib/utils-library-manifest/node_modules/.bin/resolve-parent-path delete mode 120000 node_modules/@stdlib/utils-native-class/node_modules/.bin/has-tostringtag-support delete mode 120000 node_modules/@tryghost/errors/node_modules/.bin/uuid delete mode 120000 node_modules/@tryghost/logging/node_modules/.bin/bunyan delete mode 120000 node_modules/@tryghost/pretty-stream/node_modules/.bin/prettyjson mode change 100755 => 100644 node_modules/@tryghost/shared-theme-assets/assets/js/v1/lib/vendor/photoswipe-ui-default.min.js mode change 100755 => 100644 node_modules/@tryghost/shared-theme-assets/assets/js/v1/lib/vendor/photoswipe.min.js mode change 100755 => 100644 node_modules/@tryghost/shared-theme-assets/assets/js/v2/lib/vendor/photoswipe-ui-default.min.js mode change 100755 => 100644 node_modules/@tryghost/shared-theme-assets/assets/js/v2/lib/vendor/photoswipe.min.js delete mode 120000 node_modules/@tryghost/version/node_modules/.bin/semver delete mode 120000 node_modules/@tryghost/zip/node_modules/.bin/extract-zip mode change 100755 => 100644 node_modules/arr-diff/LICENSE mode change 100755 => 100644 node_modules/array-slice/LICENSE mode change 100755 => 100644 node_modules/array-slice/README.md mode change 100755 => 100644 node_modules/autoprefixer/bin/autoprefixer delete mode 120000 node_modules/autoprefixer/node_modules/.bin/browserslist mode change 100755 => 100644 node_modules/browserslist/cli.js delete mode 120000 node_modules/browserslist/node_modules/.bin/update-browserslist-db mode change 100755 => 100644 node_modules/bunyan/bin/bunyan delete mode 120000 node_modules/caniuse-api/node_modules/.bin/browserslist mode change 100755 => 100644 node_modules/color-support/bin.js mode change 100755 => 100644 node_modules/config-chain/index.js mode change 100755 => 100644 node_modules/crc-32/bin/crc32.njs delete mode 120000 node_modules/crc32-stream/node_modules/.bin/crc32 delete mode 120000 node_modules/cross-spawn/node_modules/.bin/node-which mode change 100755 => 100644 node_modules/css-tree/lib/data.js mode change 100755 => 100644 node_modules/cssesc/bin/cssesc delete mode 120000 node_modules/cssnano-preset-default/node_modules/.bin/browserslist mode change 100755 => 100644 node_modules/csso/node_modules/css-tree/lib/data.js mode change 100755 => 100644 node_modules/date-fns/esm/index.js mode change 100755 => 100644 node_modules/date-fns/esm/previousDay/index.js mode change 100755 => 100644 node_modules/date-fns/esm/previousFriday/index.js mode change 100755 => 100644 node_modules/date-fns/esm/previousMonday/index.js mode change 100755 => 100644 node_modules/date-fns/esm/previousSaturday/index.js mode change 100755 => 100644 node_modules/date-fns/esm/previousSunday/index.js mode change 100755 => 100644 node_modules/date-fns/esm/previousThursday/index.js mode change 100755 => 100644 node_modules/date-fns/esm/previousTuesday/index.js mode change 100755 => 100644 node_modules/date-fns/esm/previousWednesday/index.js mode change 100755 => 100644 node_modules/date-fns/index.js delete mode 100644 node_modules/date-fns/locale/oc/index.js.flow mode change 100755 => 100644 node_modules/date-fns/previousDay/index.js mode change 100755 => 100644 node_modules/date-fns/previousFriday/index.js mode change 100755 => 100644 node_modules/date-fns/previousMonday/index.js mode change 100755 => 100644 node_modules/date-fns/previousSaturday/index.js mode change 100755 => 100644 node_modules/date-fns/previousSunday/index.js mode change 100755 => 100644 node_modules/date-fns/previousThursday/index.js mode change 100755 => 100644 node_modules/date-fns/previousTuesday/index.js mode change 100755 => 100644 node_modules/date-fns/previousWednesday/index.js mode change 100755 => 100644 node_modules/dtrace-provider/libusdt/test.pl mode change 100755 => 100644 node_modules/ecc-jsbn/LICENSE mode change 100755 => 100644 node_modules/ecc-jsbn/README.md mode change 100755 => 100644 node_modules/ecc-jsbn/index.js mode change 100755 => 100644 node_modules/ecc-jsbn/lib/LICENSE-jsbn mode change 100755 => 100644 node_modules/ecc-jsbn/lib/ec.js mode change 100755 => 100644 node_modules/ecc-jsbn/lib/sec.js mode change 100755 => 100644 node_modules/ecc-jsbn/package.json mode change 100755 => 100644 node_modules/ecc-jsbn/test.js mode change 100755 => 100644 node_modules/editorconfig/bin/editorconfig delete mode 120000 node_modules/editorconfig/node_modules/.bin/semver delete mode 120000 node_modules/express-hbs/node_modules/.bin/css-beautify delete mode 120000 node_modules/express-hbs/node_modules/.bin/handlebars delete mode 120000 node_modules/express-hbs/node_modules/.bin/html-beautify delete mode 120000 node_modules/express-hbs/node_modules/.bin/js-beautify mode change 100755 => 100644 node_modules/extract-zip/cli.js delete mode 120000 node_modules/fancy-log/node_modules/.bin/color-support mode change 100755 => 100644 node_modules/glob-stream/LICENSE delete mode 120000 node_modules/global-prefix/node_modules/.bin/which mode change 100755 => 100644 node_modules/global-prefix/node_modules/which/bin/which delete mode 100644 node_modules/got/dist/source/core/utils/options-to-url.js mode change 100755 => 100644 node_modules/gscan/bin/cli.js delete mode 120000 node_modules/gscan/node_modules/.bin/semver delete mode 120000 node_modules/gscan/node_modules/.bin/uuid mode change 100755 => 100644 node_modules/gulp-cli/bin/gulp.js mode change 100755 => 100644 node_modules/gulp-concat/LICENSE delete mode 120000 node_modules/gulp-postcss/node_modules/fancy-log/node_modules/.bin/color-support delete mode 120000 node_modules/gulp-uglify/node_modules/.bin/uglifyjs delete mode 120000 node_modules/gulp-zip/node_modules/.bin/gulp mode change 100755 => 100644 node_modules/gulp/bin/gulp.js delete mode 120000 node_modules/gulp/node_modules/.bin/gulp mode change 100755 => 100644 node_modules/handlebars/bin/handlebars delete mode 120000 node_modules/handlebars/node_modules/.bin/uglifyjs mode change 100755 => 100644 node_modules/hpagent/test/hang-socket/runner.sh delete mode 120000 node_modules/http-signature/node_modules/.bin/sshpk-conv delete mode 120000 node_modules/http-signature/node_modules/.bin/sshpk-sign delete mode 120000 node_modules/http-signature/node_modules/.bin/sshpk-verify mode change 100755 => 100644 node_modules/js-beautify/js/bin/css-beautify.js mode change 100755 => 100644 node_modules/js-beautify/js/bin/html-beautify.js mode change 100755 => 100644 node_modules/js-beautify/js/bin/js-beautify.js mode change 100755 => 100644 node_modules/js-beautify/js/lib/cli.js mode change 100755 => 100644 node_modules/js-beautify/js/src/cli.js delete mode 120000 node_modules/js-beautify/node_modules/.bin/editorconfig delete mode 120000 node_modules/js-beautify/node_modules/.bin/glob delete mode 120000 node_modules/js-beautify/node_modules/.bin/nopt mode change 100755 => 100644 node_modules/js-beautify/node_modules/glob/dist/esm/bin.mjs delete mode 120000 node_modules/liftoff/node_modules/.bin/resolve mode change 100755 => 100644 node_modules/micromatch/LICENSE mode change 100755 => 100644 node_modules/mime/cli.js mode change 100755 => 100644 node_modules/mime/src/build.js mode change 100755 => 100644 node_modules/mkdirp/bin/cmd.js delete mode 120000 node_modules/multer/node_modules/.bin/mkdirp delete mode 120000 node_modules/mv/node_modules/.bin/mkdirp delete mode 120000 node_modules/mv/node_modules/.bin/ncp delete mode 120000 node_modules/mv/node_modules/.bin/rimraf mode change 100755 => 100644 node_modules/nan/tools/1to2.js mode change 100755 => 100644 node_modules/nanoid/bin/nanoid.cjs mode change 100755 => 100644 node_modules/ncp/bin/ncp mode change 100755 => 100644 node_modules/nopt/bin/nopt.js mode change 100755 => 100644 node_modules/performance-now/test/scripts/delayed-call.coffee mode change 100755 => 100644 node_modules/performance-now/test/scripts/delayed-require.coffee mode change 100755 => 100644 node_modules/performance-now/test/scripts/difference.coffee mode change 100755 => 100644 node_modules/performance-now/test/scripts/initial-value.coffee delete mode 120000 node_modules/postcss-colormin/node_modules/.bin/browserslist delete mode 120000 node_modules/postcss-convert-values/node_modules/.bin/browserslist delete mode 120000 node_modules/postcss-easy-import/node_modules/.bin/resolve mode change 100755 => 100644 node_modules/postcss-import/LICENSE mode change 100755 => 100644 node_modules/postcss-import/index.js delete mode 120000 node_modules/postcss-import/node_modules/.bin/resolve delete mode 120000 node_modules/postcss-load-config/node_modules/.bin/yaml delete mode 120000 node_modules/postcss-merge-rules/node_modules/.bin/browserslist delete mode 120000 node_modules/postcss-minify-params/node_modules/.bin/browserslist delete mode 120000 node_modules/postcss-normalize-unicode/node_modules/.bin/browserslist delete mode 120000 node_modules/postcss-reduce-initial/node_modules/.bin/browserslist delete mode 120000 node_modules/postcss-selector-parser/node_modules/.bin/cssesc delete mode 120000 node_modules/postcss-svgo/node_modules/.bin/svgo delete mode 120000 node_modules/postcss/node_modules/.bin/nanoid mode change 100755 => 100644 node_modules/postcss/package.json mode change 100755 => 100644 node_modules/prettyjson/bin/prettyjson delete mode 120000 node_modules/rechoir/node_modules/.bin/resolve mode change 100755 => 100644 node_modules/request/index.js delete mode 120000 node_modules/request/node_modules/.bin/uuid mode change 100755 => 100644 node_modules/request/node_modules/uuid/bin/uuid mode change 100755 => 100644 node_modules/resolve/bin/resolve mode change 100755 => 100644 node_modules/rimraf/bin.js mode change 100755 => 100644 node_modules/secure-json-parse/LICENSE.md mode change 100755 => 100644 node_modules/secure-json-parse/benchmarks/ignore.js mode change 100755 => 100644 node_modules/secure-json-parse/benchmarks/no__proto__.js mode change 100755 => 100644 node_modules/secure-json-parse/benchmarks/remove.js mode change 100755 => 100644 node_modules/secure-json-parse/benchmarks/throw.js mode change 100755 => 100644 node_modules/secure-json-parse/index.js mode change 100755 => 100644 node_modules/semver/bin/semver.js delete mode 120000 node_modules/send/node_modules/.bin/mime mode change 100755 => 100644 node_modules/sshpk/bin/sshpk-conv mode change 100755 => 100644 node_modules/sshpk/bin/sshpk-sign mode change 100755 => 100644 node_modules/sshpk/bin/sshpk-verify delete mode 120000 node_modules/stylehacks/node_modules/.bin/browserslist delete mode 120000 node_modules/sver/node_modules/.bin/semver mode change 100755 => 100644 node_modules/sver/node_modules/semver/bin/semver.js mode change 100755 => 100644 node_modules/svgo/bin/svgo mode change 100755 => 100644 node_modules/uglify-js/bin/uglifyjs mode change 100755 => 100644 node_modules/undici/lib/llhttp/llhttp.wasm mode change 100755 => 100644 node_modules/undici/lib/llhttp/llhttp_simd.wasm mode change 100755 => 100644 node_modules/update-browserslist-db/cli.js delete mode 120000 node_modules/update-browserslist-db/node_modules/.bin/browserslist mode change 100755 => 100644 node_modules/uri-js/LICENSE mode change 100755 => 100644 node_modules/uri-js/README.md mode change 100755 => 100644 node_modules/uri-js/dist/es5/uri.all.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/es5/uri.all.js mode change 100755 => 100644 node_modules/uri-js/dist/es5/uri.all.js.map mode change 100755 => 100644 node_modules/uri-js/dist/es5/uri.all.min.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/es5/uri.all.min.js mode change 100755 => 100644 node_modules/uri-js/dist/es5/uri.all.min.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/index.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/index.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/index.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/regexps-iri.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/regexps-iri.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/regexps-iri.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/regexps-uri.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/regexps-uri.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/regexps-uri.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/http.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/http.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/http.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/https.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/https.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/https.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/mailto.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/mailto.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/mailto.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/urn-uuid.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/urn.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/urn.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/urn.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/ws.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/ws.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/ws.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/wss.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/wss.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/schemes/wss.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/uri.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/uri.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/uri.js.map mode change 100755 => 100644 node_modules/uri-js/dist/esnext/util.d.ts mode change 100755 => 100644 node_modules/uri-js/dist/esnext/util.js mode change 100755 => 100644 node_modules/uri-js/dist/esnext/util.js.map mode change 100755 => 100644 node_modules/uri-js/package.json mode change 100755 => 100644 node_modules/uri-js/yarn.lock mode change 100755 => 100644 node_modules/uuid/dist/bin/uuid mode change 100755 => 100644 node_modules/validator/es/lib/isCurrency.js mode change 100755 => 100644 node_modules/validator/lib/isCurrency.js mode change 100755 => 100644 node_modules/which/bin/node-which mode change 100755 => 100644 node_modules/wrap-ansi-cjs/index.js mode change 100755 => 100644 node_modules/wrap-ansi/index.js mode change 100755 => 100644 node_modules/yaml/bin.mjs create mode 100644 partials/get-desc-tags.hbs create mode 100644 partials/icons/rss.hbs create mode 100644 partials/loop.hbs create mode 100644 partials/pswp.hbs create mode 100644 partials/social-media.hbs diff --git a/README.md b/README.md index 7cef4a1a..608b7d34 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,10 @@ -# Solo +# Bifocal -Solo is a minimal theme for [Ghost](https://github.com/TryGhost/Ghost) focused on showcasing the work of an individual writer or creator. This theme is highly customizable, with a few simple settings that allow you to quickly apply your own personal style to your site. - -**Demo: https://solo.ghost.io** +Bifocal is is a minimal theme for [Ghost](https://github.com/TryGhost/Ghost) based on Solo. It features a two-column layout when screen width allows and displays internal tags to the user. # Instructions -1. [Download this theme](https://github.com/TryGhost/Solo/archive/main.zip) +1. Download this theme 2. Log into Ghost, and go to the `Design` settings area to upload the zip file # Development @@ -29,10 +27,9 @@ The `zip` Gulp task packages the theme files into `dist/solo.zip`, which you can yarn zip ``` -# Contribution - -This repo is synced automatically with [TryGhost/Themes](https://github.com/TryGhost/Themes) monorepo. If you're looking to contribute or raise an issue, head over to the main repository [TryGhost/Themes](https://github.com/TryGhost/Themes) where our official themes are developed. +Note that GIF files processed by Gulp become corrupted, so you will either have to use another file type or replace those files and re-zip manually in order to use GIF images. ## Copyright & License -Copyright (c) 2013-2023 Ghost Foundation - Released under the [MIT license](LICENSE). +Copyright (c) 2024 Jean Viscogliosi-Pate - Released under the [MIT license](LICENSE). +Original Solo theme relased 2013-2023 Ghost Foundation under the MIT license. diff --git a/assets/built/main.min.js b/assets/built/main.min.js index 1f3aa356..b1871ae1 100644 --- a/assets/built/main.min.js +++ b/assets/built/main.min.js @@ -1 +1 @@ -function dropdown(){let o=window.matchMedia("(max-width: 767px)"),i=document.querySelector(".gh-head-menu"),r=i?.querySelector(".nav");if(r){let e=document.querySelector(".gh-head-logo"),t=r.innerHTML;o.matches&&r.querySelectorAll("li").forEach(function(e,t){e.style.transitionDelay=.03*(t+1)+"s"});let n=function(){if(!o.matches){for(var e=[];r.offsetWidth+64>i.offsetWidth&&r.lastElementChild;)e.unshift(r.lastElementChild),r.lastElementChild.remove();if(e.length){let t=document.createElement("button"),n=(t.setAttribute("class","nav-more-toggle gh-icon-btn"),t.setAttribute("aria-label","More"),t.innerHTML='',document.createElement("div"));n.setAttribute("class","gh-dropdown"),10<=e.length?(document.body.classList.add("is-dropdown-mega"),n.style.gridTemplateRows=`repeat(${Math.ceil(e.length/2)}, 1fr)`):document.body.classList.remove("is-dropdown-mega"),e.forEach(function(e){n.appendChild(e)}),t.appendChild(n),r.appendChild(t),document.body.classList.add("is-dropdown-loaded"),window.addEventListener("click",function(e){document.body.classList.contains("is-dropdown-open")?document.body.classList.remove("is-dropdown-open"):t.contains(e.target)&&document.body.classList.add("is-dropdown-open")})}else document.body.classList.add("is-dropdown-loaded")}};imagesLoaded(e,function(){n()}),window.addEventListener("load",function(){e||n()}),window.addEventListener("resize",function(){setTimeout(()=>{r.innerHTML=t,n()},1)})}}function lightbox(e){document.querySelectorAll(e).forEach(function(e){e.addEventListener("click",function(e){var t=e;t.preventDefault();for(var n,o=[],i=0,r=t.target.closest(".kg-card").previousElementSibling;r&&(r.classList.contains("kg-image-card")||r.classList.contains("kg-gallery-card"));){var a=[];r.querySelectorAll("img").forEach(function(e){a.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e}),i+=1}),r=r.previousElementSibling,o=a.concat(o)}t.target.classList.contains("kg-image")?o.push({src:t.target.getAttribute("src"),msrc:t.target.getAttribute("src"),w:t.target.getAttribute("width"),h:t.target.getAttribute("height"),el:t.target}):(n=!1,t.target.closest(".kg-gallery-card").querySelectorAll("img").forEach(function(e){o.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e}),n||e===t.target?n=!0:i+=1}));for(var s=t.target.closest(".kg-card").nextElementSibling;s&&(s.classList.contains("kg-image-card")||s.classList.contains("kg-gallery-card"));)s.querySelectorAll("img").forEach(function(e){o.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e})}),s=s.nextElementSibling;e=document.querySelectorAll(".pswp")[0];new PhotoSwipe(e,PhotoSwipeUI_Default,o,{bgOpacity:.9,closeOnScroll:!0,fullscreenEl:!1,history:!1,index:i,shareEl:!1,zoomEl:!1,getThumbBoundsFn:function(e){var e=o[e].el,t=window.pageYOffset||document.documentElement.scrollTop,e=e.getBoundingClientRect();return{x:e.left,y:e.top+t,w:e.width}}}).init()})})}function pagination(e,s,l=!1){let c=document.querySelector(".gh-feed");if(!c)return;let t=!1,n=c.nextElementSibling||c.parentElement.nextElementSibling||document.querySelector(".gh-foot"),u=document.querySelector(".gh-loadmore"),o=(!document.querySelector("link[rel=next]")&&u&&u.remove(),async function(){var o=document.querySelector("link[rel=next]");if(o)try{var e=await(await fetch(o.href)).text(),i=(new DOMParser).parseFromString(e,"text/html"),r=i.querySelectorAll(".gh-feed:not(.gh-featured):not(.gh-related) > *");let t=document.createDocumentFragment(),n=[];r.forEach(function(e){e=document.importNode(e,!0);l&&(e.style.visibility="hidden"),t.appendChild(e),n.push(e)}),c.appendChild(t),s&&s(n,d);var a=i.querySelector("link[rel=next]");a&&a.href?o.href=a.href:(o.remove(),u&&u.remove())}catch(e){throw o.remove(),u&&u.remove(),e}}),d=async function(){n.getBoundingClientRect().top<=window.innerHeight&&document.querySelector("link[rel=next]")&&await o()};let i=new IntersectionObserver(async function(e){if(!t){if(t=!0,e[0].isIntersecting)if(l)await o();else for(;n.getBoundingClientRect().top<=window.innerHeight&&document.querySelector("link[rel=next]");)await o();t=!1,document.querySelector("link[rel=next]")||i.disconnect()}});e?i.observe(n):u.addEventListener("click",o)}function initParallax(){jarallax(document.querySelectorAll(".has-parallax-feed .gh-card"),{speed:.8})}!function(e,t){"object"==typeof module&&module.exports?module.exports=t():e.EvEmitter=t()}("undefined"!=typeof window?window:this,function(){function e(){}var t=e.prototype;return t.on=function(e,t){var n;return e&&t&&((n=(n=this._events=this._events||{})[e]=n[e]||[]).includes(t)||n.push(t)),this},t.once=function(e,t){var n;return e&&t&&(this.on(e,t),((n=this._onceEvents=this._onceEvents||{})[e]=n[e]||{})[t]=!0),this},t.off=function(e,t){e=this._events&&this._events[e];return e&&e.length&&-1!=(t=e.indexOf(t))&&e.splice(t,1),this},t.emitEvent=function(e,t){let n=this._events&&this._events[e];if(n&&n.length){n=n.slice(0),t=t||[];var o,i=this._onceEvents&&this._onceEvents[e];for(o of n)i&&i[o]&&(this.off(e,o),delete i[o]),o.apply(this,t)}return this},t.allOff=function(){return delete this._events,delete this._onceEvents,this},e}),function(e,t){"object"==typeof module&&module.exports?module.exports=t(e,require("ev-emitter")):e.imagesLoaded=t(e,e.EvEmitter)}("undefined"!=typeof window?window:this,function(t,e){let r=t.jQuery,a=t.console;function s(e,t,n){if(!(this instanceof s))return new s(e,t,n);let o=e,i;(o="string"==typeof e?document.querySelectorAll(e):o)?(this.elements=(i=o,Array.isArray(i)?i:"object"==typeof i&&"number"==typeof i.length?[...i]:[i]),this.options={},"function"==typeof t?n=t:Object.assign(this.options,t),n&&this.on("always",n),this.getImages(),r&&(this.jqDeferred=new r.Deferred),setTimeout(this.check.bind(this))):a.error("Bad element for imagesLoaded "+(o||e))}(s.prototype=Object.create(e.prototype)).getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)};let i=[1,9,11],l=(s.prototype.addElementImages=function(e){"IMG"===e.nodeName&&this.addImage(e),!0===this.options.background&&this.addElementBackgroundImages(e);var t,n,o=e["nodeType"];if(o&&i.includes(o)){for(t of e.querySelectorAll("img"))this.addImage(t);if("string"==typeof this.options.background)for(n of e.querySelectorAll(this.options.background))this.addElementBackgroundImages(n)}},/url\((['"])?(.*?)\1\)/gi);function n(e){this.img=e}function o(e,t){this.url=e,this.element=t,this.img=new Image}return s.prototype.addElementBackgroundImages=function(t){var n=getComputedStyle(t);if(n){let e=l.exec(n.backgroundImage);for(;null!==e;){var o=e&&e[2];o&&this.addBackground(o,t),e=l.exec(n.backgroundImage)}}},s.prototype.addImage=function(e){e=new n(e);this.images.push(e)},s.prototype.addBackground=function(e,t){e=new o(e,t);this.images.push(e)},s.prototype.check=function(){if(this.progressedCount=0,this.hasAnyBroken=!1,this.images.length){let t=(e,t,n)=>{setTimeout(()=>{this.progress(e,t,n)})};this.images.forEach(function(e){e.once("progress",t),e.check()})}else this.complete()},s.prototype.progress=function(e,t,n){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded,this.emitEvent("progress",[this,e,t]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,e),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+n,e,t)},s.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";this.isComplete=!0,this.emitEvent(e,[this]),this.emitEvent("always",[this]),this.jqDeferred&&(e=this.hasAnyBroken?"reject":"resolve",this.jqDeferred[e](this))},(n.prototype=Object.create(e.prototype)).check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},n.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},n.prototype.confirm=function(e,t){this.isLoaded=e;e=this.img.parentNode,e="PICTURE"===e.nodeName?e:this.img;this.emitEvent("progress",[this,e,t])},n.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},n.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},n.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},n.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},(o.prototype=Object.create(n.prototype)).check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},o.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},o.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.element,t])},(s.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&((r=e).fn.imagesLoaded=function(e,t){return new s(this,e,t).jqDeferred.promise(r(this))})})(),s}),function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.PhotoSwipeUI_Default=t()}(this,function(){return function(o,s){function e(e){if(T)return!0;e=e||window.event,C.timeToIdle&&C.mouseUsed&&!v&&a();for(var t,n,o=(e.target||e.srcElement).getAttribute("class")||"",i=0;i"+e.label+"",C.parseShareButtonOut&&(i=C.parseShareButtonOut(e,i));g.children[0].innerHTML=i,g.children[0].onclick=q}function r(e){for(var t=0;tC.fitControlsWidth?(t=C.barsSize,C.captionEl&&"auto"===t.bottom?(p||((p=s.createEl("pswp__caption pswp__caption--fake")).appendChild(s.createEl("pswp__caption__center")),d.insertBefore(p,m),s.addClass(d,"pswp__ui--fit")),C.addCaptionHTMLFn(e,p,!0)?(e=p.clientHeight,n.bottom=parseInt(e,10)||44):n.bottom=t.top):n.bottom="auto"===t.bottom?0:t.bottom,n.top=t.top):n.top=n.bottom=0}function Z(){function e(e){if(e)for(var t=e.length,n=0;nt.min[e]?n[e]=t.min[e]:n[e]=mt&&(Fe=0f.currItem.fitRatio&&Wt(Ie))}}var V,X,$,g,Q,J,ee,te,o,y,ne,oe,ie,re,ae,a,se,le,ce,ue,de,me,pe,i,fe,he,ge,ye,ve,we,s,xe,be,Ee,Ie,Ce,Te,Se,l,ke,Ae,De,Le,_e,c,u,Me,d,Oe,v,Fe,Re,Pe,Ze,ze,qe,Ne=e(),Be=e(),w=e(),x={},Ue=0,We={},b=e(),E=0,He=!0,Ke=[],je={},Ye=!1,Ge={},I=function(e){var t=Ge[e];if(t){var n=Array.prototype.slice.call(arguments);n.shift();for(var o=0;of.currItem.fitRatio?Ye||(cn(f.currItem,!1,!0),Ye=!0):Ye&&(cn(f.currItem),Ye=!1)),Ve(Oe,w.x,w.y,y))},Xe=function(e){e.container&&Ve(e.container.style,e.initialPosition.x,e.initialPosition.y,e.initialZoomLevel,e)},$e=function(e,t){t[me]=oe+e+"px, 0px"+ie},Qe=function(e,t){var n;!h.loop&&t&&(t=g+(b.x*Ue-e)/b.x,n=Math.round(e-M.x),t<0&&0=O()-1&&n<0)&&(e=M.x+n*h.mainScrollEndFriction),M.x=e,$e(e,Q)},Je=function(e,t){var n=Et[e]-We[e];return Be[e]+Ne[e]+n-t/ne*n},k=function(e,t){e.x=t.x,e.y=t.y,t.id&&(e.id=t.id)},et=function(e){e.x=Math.round(e.x),e.y=Math.round(e.y)},tt=null,nt=function(){tt&&(p.unbind(document,"mousemove",nt),p.addClass(m,"pswp--has_mouse"),h.mouseUsed=!0,I("mouseUsed")),tt=setTimeout(function(){tt=null},100)},ot=function(e,t){e=sn(f.currItem,x,e);return t&&(d=e),e},it=function(e){return(e=e||f.currItem).initialZoomLevel},rt=function(e){return 0<(e=e||f.currItem).w?h.maxSpreadZoom:1},A={},at=0,st=function(e){A[e]&&(A[e].raf&&he(A[e].raf),at--,delete A[e])},lt=function(e){A[e]&&st(e),A[e]||(at++,A[e]={})},ct=function(){for(var e in A)A.hasOwnProperty(e)&&st(e)},ut=function(e,t,n,o,i,r,a){function s(){A[e]&&(l=C()-c,o<=l?(st(e),r(n),a&&a()):(r((n-t)*i(l/o)+t),A[e].raf=fe(s)))}var l,c=C();lt(e);s()},z={shout:I,listen:r,viewportSize:x,options:h,isMainScrollAnimating:function(){return v},getZoomLevel:function(){return y},getCurrentIndex:function(){return g},isDragging:function(){return l},isZooming:function(){return u},setScrollOffset:function(e,t){We.x=e,we=We.y=t,I("updateScrollOffset",We)},applyZoomPan:function(e,t,n,o){w.x=t,w.y=n,y=e,S(o)},init:function(){if(!V&&!X){f.framework=p,f.template=m,f.bg=p.getChildByClass(m,"pswp__bg"),ge=m.className,V=!0,s=p.detectFeatures(),fe=s.raf,he=s.caf,me=s.transform,ve=s.oldIE,f.scrollWrap=p.getChildByClass(m,"pswp__scroll-wrap"),f.container=p.getChildByClass(f.scrollWrap,"pswp__container"),Q=f.container.style,f.itemHolders=a=[{el:f.container.children[0],wrap:0,index:-1},{el:f.container.children[1],wrap:0,index:-1},{el:f.container.children[2],wrap:0,index:-1}],a[0].el.style.display=a[2].el.style.display="none",me?(t=s.perspective&&!i,oe="translate"+(t?"3d(":"("),ie=s.perspective?", 0px)":")"):(me="left",p.addClass(m,"pswp--ie"),$e=function(e,t){t.left=e+"px"},Xe=function(e){var t=1=O())&&(g=0),f.currItem=en(g),(s.isOldIOSPhone||s.isOldAndroid)&&(He=!1),m.setAttribute("aria-hidden","false"),h.modal&&(He?m.style.position="fixed":(m.style.position="absolute",m.style.top=p.getScrollY()+"px")),void 0===we&&(I("initialLayout"),we=ye=p.getScrollY());var n="pswp--open ";for(h.mainClass&&(n+=h.mainClass+" "),h.showHideOpacity&&(n+="pswp--animate_opacity "),n=(n=(n+=i?"pswp--touch":"pswp--notouch")+(s.animationName?" pswp--css_animation":""))+(s.svg?" pswp--svg":""),p.addClass(m,n),f.updateSize(),J=-1,E=null,e=0;e<3;e++)$e((e+J)*b.x,a[e].el.style);ve||p.bind(f.scrollWrap,te,f),r("initialZoomInEnd",function(){f.setContent(a[0],g-1),f.setContent(a[2],g+1),a[0].el.style.display=a[2].el.style.display="block",h.focus&&m.focus(),p.bind(document,"keydown",f),s.transform&&p.bind(f.scrollWrap,"click",f),h.mouseUsed||p.bind(document,"mousemove",nt),p.bind(window,"resize scroll orientationchange",f),I("bindEvents")}),f.setContent(a[1],g),f.updateCurrItem(),I("afterInit"),He||(re=setInterval(function(){at||l||u||y!==f.currItem.initialZoomLevel||f.updateSize()},1e3)),p.addClass(m,"pswp--visible")}var t},close:function(){V&&(X=!(V=!1),I("close"),p.unbind(window,"resize scroll orientationchange",f),p.unbind(window,"scroll",o.scroll),p.unbind(document,"keydown",f),p.unbind(document,"mousemove",nt),s.transform&&p.unbind(f.scrollWrap,"click",f),l&&p.unbind(window,ee,f),clearTimeout(xe),I("unbindEvents"),tn(f.currItem,null,!0,f.destroy))},destroy:function(){I("destroy"),Xt&&clearTimeout(Xt),m.setAttribute("aria-hidden","true"),m.className=ge,re&&clearInterval(re),p.unbind(f.scrollWrap,te,f),p.unbind(window,"scroll",f),St(),ct(),Ge=null},panTo:function(e,t,n){n||(e>d.min.x?e=d.min.x:ed.min.y?t=d.min.y:td.min[e]||rd.min[e]&&(c=h.panEndFriction,d.min[e],n=d.min[e]-Be[e]),(n<=0||l<0)&&1gt.x&&(i=gt.x)):d.min.x!==d.max.x&&(o=r)):(rf.currItem.fitRatio&&(w[e]+=t[e]*c)):(void 0!==i&&(Qe(i,!0),_e=i!==gt.x),d.min.x!==d.max.x&&(void 0!==o?w.x=o:_e||(w.x+=t.x*c)),void 0!==i)},Bt=function(){var e,t,n,o,i,r;c&&0!==(e=c.length)&&(k(D,c[0]),L.x=D.x-_.x,L.y=D.y-_.y,u&&1f.currItem.initialZoomLevel+f.currItem.initialZoomLevel/15&&(ze=!0),n=1,o=it(),i=rt(),t=mt&&(L.x-=c[0].x-ft.x),Math.abs(L.y)>=mt)&&(L.y-=c[0].y-ft.y),_.x=D.x,_.y=D.y,0===L.x&&0===L.y||("v"===Fe&&h.closeOnVerticalDrag&&!At()?(Ne.y+=L.y,w.y+=L.y,r=Rt(),Te=!0,I("onVerticalDrag",r),T(r),S()):(Ft(C(),D.x,D.y),De=!0,d=f.currItem.bounds,Nt("x",L)||(Nt("y",L),et(w),S())))))},Ut=function(){var t,n,o={lastFlickOffset:{},lastFlickDist:{},lastFlickSpeed:{},slowDownRatio:{},slowDownRatioReverse:{},speedDecelerationRatio:{},speedDecelerationRatioAbs:{},distanceOffset:{},backAnimDestination:{},backAnimStarted:{},calculateSwipeSpeed:function(e){n=(1d.min[t]?o.backAnimDestination[t]=d.min[t]:w[t]=O()&&(g=h.loop?0:O()-1,i=!0),i&&!h.loop||(E+=o,Ue-=o,n=!0));var e=b.x*Ue,r=Math.abs(e-M.x),a=n||e>M.x==0The image could not be loaded.',forceProgressiveLoading:!1,preload:[1,1],getNumItemsFn:function(){return $t.length}},rn=function(){return{center:{x:0,y:0},max:{x:0,y:0},min:{x:0,y:0}}},an=function(e,t,n){var o=e.bounds;o.center.x=Math.round((F.x-t)/2),o.center.y=Math.round((F.y-n)/2)+e.vGap.top,o.max.x=t>F.x?Math.round(F.x-t):o.center.x,o.max.y=n>F.y?Math.round(F.y-n)+e.vGap.top:o.center.y,o.min.x=t>F.x?0:o.center.x,o.min.y=n>F.y?e.vGap.top:o.center.y},sn=function(e,t,n){var o,i;return e.src&&!e.loadError?((o=!n)&&(e.vGap||(e.vGap={top:0,bottom:0}),I("parseVerticalMargin",e)),F.x=t.x,F.y=t.y-e.vGap.top-e.vGap.bottom,o&&(t=F.x/e.w,i=F.y/e.h,e.fitRatio=t=d.max.x&&n<=d.min.y&&n>=d.max.y)&&e.preventDefault(),f.panTo(t,n)},toggleDesktopZoom:function(e){e=e||{x:x.x/2+We.x,y:x.y/2+We.y};var t=h.getDoubleTapZoom(!0,f.currItem),n=y===t;f.mouseZoomedIn=!n,f.zoomTo(n?f.currItem.initialZoomLevel:t,e,333),p[(n?"remove":"add")+"Class"](m,"pswp--zoomed-in")}}});function pn(){hn&&clearTimeout(hn),yn&&clearTimeout(yn)}function fn(){var e=Sn(),t={};if(!(e.length<5)){var n,o=e.split("&");for(r=0;r .kg-image[width][height], .kg-gallery-image > img"),reframe(document.querySelectorAll(['.gh-content iframe[src*="youtube.com"]','.gh-content iframe[src*="youtube-nocookie.com"]','.gh-content iframe[src*="player.vimeo.com"]','.gh-content iframe[src*="kickstarter.com"][src*="video.html"]',".gh-content object",".gh-content embed"].join(","))),dropdown(),function(){if(document.body.classList.contains("has-background-about")){let t=document.querySelector(".gh-about");if(t){let e=t.querySelector(".gh-about-image");e.naturalWidth||imagesLoaded(e,function(){t.style.setProperty("--about-height",e.clientWidth*e.naturalHeight/e.naturalWidth+"px")})}}}(),initParallax(),function(){var e=document.querySelector("[data-toggle-comments]");e&&e.addEventListener("click",function(){document.body.classList.toggle("comments-opened")})}(),function(){var e=document.querySelector(".gh-article-excerpt");if(e){let t=e.textContent;var n=t.match(/\p{EPres}|\p{ExtPict}/gu);n&&(n.forEach(function(e){t=t.replace(e,`${e}`)}),e.innerHTML=t)}}(),pagination(!0,initParallax); \ No newline at end of file +function dropdown(){let o=window.matchMedia("(max-width: 767px)"),i=document.querySelector(".gh-head-menu"),a=i?.querySelector(".nav");if(a){let e=document.querySelector(".gh-head-logo"),t=a.innerHTML;o.matches&&a.querySelectorAll("li").forEach(function(e,t){e.style.transitionDelay=.03*(t+1)+"s"});let n=function(){if(!o.matches){for(var e=[];a.offsetWidth+64>i.offsetWidth&&a.lastElementChild;)e.unshift(a.lastElementChild),a.lastElementChild.remove();if(e.length){let t=document.createElement("button"),n=(t.setAttribute("class","nav-more-toggle gh-icon-btn"),t.setAttribute("aria-label","More"),t.innerHTML='',document.createElement("div"));n.setAttribute("class","gh-dropdown"),10<=e.length?(document.body.classList.add("is-dropdown-mega"),n.style.gridTemplateRows=`repeat(${Math.ceil(e.length/2)}, 1fr)`):document.body.classList.remove("is-dropdown-mega"),e.forEach(function(e){n.appendChild(e)}),t.appendChild(n),a.appendChild(t),document.body.classList.add("is-dropdown-loaded"),window.addEventListener("click",function(e){document.body.classList.contains("is-dropdown-open")?document.body.classList.remove("is-dropdown-open"):t.contains(e.target)&&document.body.classList.add("is-dropdown-open")})}else document.body.classList.add("is-dropdown-loaded")}};imagesLoaded(e,function(){n()}),window.addEventListener("load",function(){e||n()}),window.addEventListener("resize",function(){setTimeout(()=>{a.innerHTML=t,n()},1)})}}function lightbox(e){document.querySelectorAll(e).forEach(function(e){e.addEventListener("click",function(e){var t=e;t.preventDefault();for(var n,o=[],i=0,a=t.target.closest(".kg-card").previousElementSibling;a&&(a.classList.contains("kg-image-card")||a.classList.contains("kg-gallery-card"));){var r=[];a.querySelectorAll("img").forEach(function(e){r.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e}),i+=1}),a=a.previousElementSibling,o=r.concat(o)}t.target.classList.contains("kg-image")?o.push({src:t.target.getAttribute("src"),msrc:t.target.getAttribute("src"),w:t.target.getAttribute("width"),h:t.target.getAttribute("height"),el:t.target}):(n=!1,t.target.closest(".kg-gallery-card").querySelectorAll("img").forEach(function(e){o.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e}),n||e===t.target?n=!0:i+=1}));for(var s=t.target.closest(".kg-card").nextElementSibling;s&&(s.classList.contains("kg-image-card")||s.classList.contains("kg-gallery-card"));)s.querySelectorAll("img").forEach(function(e){o.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e})}),s=s.nextElementSibling;e=document.querySelectorAll(".pswp")[0];new PhotoSwipe(e,PhotoSwipeUI_Default,o,{bgOpacity:.9,closeOnScroll:!0,fullscreenEl:!1,history:!1,index:i,shareEl:!1,zoomEl:!1,getThumbBoundsFn:function(e){var e=o[e].el,t=window.pageYOffset||document.documentElement.scrollTop,e=e.getBoundingClientRect();return{x:e.left,y:e.top+t,w:e.width}}}).init()})})}function pagination(e,s,l=!1){let c=document.querySelector(".gh-feed");if(!c)return;let t=!1,n=c.nextElementSibling||c.parentElement.nextElementSibling||document.querySelector(".gh-foot"),u=document.querySelector(".gh-loadmore"),o=(!document.querySelector("link[rel=next]")&&u&&u.remove(),async function(){var o=document.querySelector("link[rel=next]");if(o)try{var e=await(await fetch(o.href)).text(),i=(new DOMParser).parseFromString(e,"text/html"),a=i.querySelectorAll(".gh-feed:not(.gh-featured):not(.gh-related) > *");let t=document.createDocumentFragment(),n=[];a.forEach(function(e){e=document.importNode(e,!0);l&&(e.style.visibility="hidden"),t.appendChild(e),n.push(e)}),c.appendChild(t),s&&s(n,d);var r=i.querySelector("link[rel=next]");r&&r.href?o.href=r.href:(o.remove(),u&&u.remove())}catch(e){throw o.remove(),u&&u.remove(),e}}),d=async function(){n.getBoundingClientRect().top<=window.innerHeight&&document.querySelector("link[rel=next]")&&await o()};let i=new IntersectionObserver(async function(e){if(!t){if(t=!0,e[0].isIntersecting)if(l)await o();else for(;n.getBoundingClientRect().top<=window.innerHeight&&document.querySelector("link[rel=next]");)await o();t=!1,document.querySelector("link[rel=next]")||i.disconnect()}});e?i.observe(n):u.addEventListener("click",o)}function initParallax(){jarallax(document.querySelectorAll(".has-parallax-feed .gh-card"),{speed:.8})}!function(e,t){"object"==typeof module&&module.exports?module.exports=t():e.EvEmitter=t()}("undefined"!=typeof window?window:this,function(){function e(){}var t=e.prototype;return t.on=function(e,t){var n;return e&&t&&((n=(n=this._events=this._events||{})[e]=n[e]||[]).includes(t)||n.push(t)),this},t.once=function(e,t){var n;return e&&t&&(this.on(e,t),((n=this._onceEvents=this._onceEvents||{})[e]=n[e]||{})[t]=!0),this},t.off=function(e,t){e=this._events&&this._events[e];return e&&e.length&&-1!=(t=e.indexOf(t))&&e.splice(t,1),this},t.emitEvent=function(e,t){let n=this._events&&this._events[e];if(n&&n.length){n=n.slice(0),t=t||[];var o,i=this._onceEvents&&this._onceEvents[e];for(o of n)i&&i[o]&&(this.off(e,o),delete i[o]),o.apply(this,t)}return this},t.allOff=function(){return delete this._events,delete this._onceEvents,this},e}),function(e,t){"object"==typeof module&&module.exports?module.exports=t(e,require("ev-emitter")):e.imagesLoaded=t(e,e.EvEmitter)}("undefined"!=typeof window?window:this,function(t,e){let a=t.jQuery,r=t.console;function s(e,t,n){if(!(this instanceof s))return new s(e,t,n);let o=e,i;(o="string"==typeof e?document.querySelectorAll(e):o)?(this.elements=(i=o,Array.isArray(i)?i:"object"==typeof i&&"number"==typeof i.length?[...i]:[i]),this.options={},"function"==typeof t?n=t:Object.assign(this.options,t),n&&this.on("always",n),this.getImages(),a&&(this.jqDeferred=new a.Deferred),setTimeout(this.check.bind(this))):r.error("Bad element for imagesLoaded "+(o||e))}(s.prototype=Object.create(e.prototype)).getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)};let i=[1,9,11],l=(s.prototype.addElementImages=function(e){"IMG"===e.nodeName&&this.addImage(e),!0===this.options.background&&this.addElementBackgroundImages(e);var t,n,o=e["nodeType"];if(o&&i.includes(o)){for(t of e.querySelectorAll("img"))this.addImage(t);if("string"==typeof this.options.background)for(n of e.querySelectorAll(this.options.background))this.addElementBackgroundImages(n)}},/url\((['"])?(.*?)\1\)/gi);function n(e){this.img=e}function o(e,t){this.url=e,this.element=t,this.img=new Image}return s.prototype.addElementBackgroundImages=function(t){var n=getComputedStyle(t);if(n){let e=l.exec(n.backgroundImage);for(;null!==e;){var o=e&&e[2];o&&this.addBackground(o,t),e=l.exec(n.backgroundImage)}}},s.prototype.addImage=function(e){e=new n(e);this.images.push(e)},s.prototype.addBackground=function(e,t){e=new o(e,t);this.images.push(e)},s.prototype.check=function(){if(this.progressedCount=0,this.hasAnyBroken=!1,this.images.length){let t=(e,t,n)=>{setTimeout(()=>{this.progress(e,t,n)})};this.images.forEach(function(e){e.once("progress",t),e.check()})}else this.complete()},s.prototype.progress=function(e,t,n){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded,this.emitEvent("progress",[this,e,t]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,e),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&r&&r.log("progress: "+n,e,t)},s.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";this.isComplete=!0,this.emitEvent(e,[this]),this.emitEvent("always",[this]),this.jqDeferred&&(e=this.hasAnyBroken?"reject":"resolve",this.jqDeferred[e](this))},(n.prototype=Object.create(e.prototype)).check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},n.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},n.prototype.confirm=function(e,t){this.isLoaded=e;e=this.img.parentNode,e="PICTURE"===e.nodeName?e:this.img;this.emitEvent("progress",[this,e,t])},n.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},n.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},n.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},n.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},(o.prototype=Object.create(n.prototype)).check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},o.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},o.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.element,t])},(s.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&((a=e).fn.imagesLoaded=function(e,t){return new s(this,e,t).jqDeferred.promise(a(this))})})(),s}),function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.PhotoSwipeUI_Default=t()}(this,function(){return function(o,s){function e(e){if(T)return!0;e=e||window.event,C.timeToIdle&&C.mouseUsed&&!v&&r();for(var t,n,o=(e.target||e.srcElement).getAttribute("class")||"",i=0;i