girder 5.0.17.dev12__tar.gz → 5.0.17.dev16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {girder-5.0.17.dev12/girder.egg-info → girder-5.0.17.dev16}/PKG-INFO +1 -1
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/model_base.py +21 -6
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/settings.py +8 -0
- girder-5.0.17.dev12/girder/web/dist/assets/index-CPFJ2qRh.js → girder-5.0.17.dev16/girder/web/dist/assets/index-DI4hxiKL.js +3 -3
- girder-5.0.17.dev12/girder/web/dist/assets/index-CPFJ2qRh.js.map → girder-5.0.17.dev16/girder/web/dist/assets/index-DI4hxiKL.js.map +1 -1
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/index.html +1 -1
- girder-5.0.17.dev16/girder/web/tests/spec/customWidgets.spec.ts +250 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16/girder.egg-info}/PKG-INFO +1 -1
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder.egg-info/SOURCES.txt +3 -2
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder.egg-info/scm_file_list.json +2 -0
- girder-5.0.17.dev16/girder.egg-info/scm_version.json +8 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/scripts/publicNames.txt +1 -0
- girder-5.0.17.dev12/girder.egg-info/scm_version.json +0 -8
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.circleci/Dockerfile +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.circleci/build_plugins.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.circleci/config.yml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.circleci/generatePyEnvChecksum.sh +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.circleci/publish_npm.sh +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.circleci/publish_pypi.sh +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.circleci/rabbitmq.conf +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.codecov.yml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.dockerignore +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.editorconfig +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.git-blame-ignore-revs +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.github/workflows/codespell.yml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.gitignore +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.pre-commit-config.yaml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/.readthedocs.yml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/CHANGELOG.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/CMakeLists.txt +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/CONTRIBUTING.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/Dockerfile +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/LICENSE +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/MANIFEST.in +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/README.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/clients/python/README.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/clients/python/girder_client/__init__.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/clients/python/girder_client/_jsonemitter.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/clients/python/girder_client/cli.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/clients/python/pyproject.toml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/clients/python/setup.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docker-compose.yml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/admin-docs.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/api-docs.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/build-docs.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/conf.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/configuration.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/dependencies.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/deployment.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/dev-installation.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/developer-cookbook.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/developer-docs.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/development.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/favicon.ico +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/images/dicom-viewer.png +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/index.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/license.png +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/list_env_settings.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/list_env_settings.yaml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/migration-guide.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/mount.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/plugin-development.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/plugins.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/python-client.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/requirements-docs.txt +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/security.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/sftp.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/static/custom.css +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/user-docs.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/docs/user-guide.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/__init__.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/__init__.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/access.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/api_docs.mako +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/api_main.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/describe.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/docs.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/filter_logging.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/rest.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/sftp.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/__init__.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/api_key.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/assetstore.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/collection.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/file.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/folder.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/group.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/item.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/resource.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/system.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/token.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/api/v1/user.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/asgi.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/cli/__init__.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/cli/mount.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/cli/serve.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/cli/sftpd.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/cli/shell.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/constants.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/events.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/exceptions.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/mail_templates/_footer.mako +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/mail_templates/_header.mako +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/mail_templates/accountApproval.mako +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/mail_templates/accountApproved.mako +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/mail_templates/emailVerification.mako +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/mail_templates/groupInvite.mako +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/mail_templates/temporaryAccess.mako +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/__init__.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/api_key.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/assetstore.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/collection.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/file.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/folder.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/group.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/item.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/setting.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/token.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/upload.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/models/user.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/notification.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/plugin.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/tasks.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/__init__.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/_cache.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/_hash_state.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/abstract_assetstore_adapter.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/acl_mixin.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/assetstore_utilities.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/config.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/error.mako +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/filesystem_assetstore_adapter.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/mail_utils.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/model_importer.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/path.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/progress.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/s3_assetstore_adapter.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/search.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/server.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/setting_utilities.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/system.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/webroot.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/utility/ziputil.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/.env.development +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/.gitignore +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/.prettierrc.json +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/README.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/Girder_Favicon.png +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/Girder_Mark.png +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/fontello-BGLM866c.svg +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/fontello-BLy7AbzU.ttf +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/fontello-BQI3HC9-.eot +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/fontello-BgaCl1ja.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/fontello-D3uQJzaX.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/glyphicons-halflings-regular-BKjkU69z.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/glyphicons-halflings-regular-BUJKDMgK.eot +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/glyphicons-halflings-regular-CSehLiBc.svg +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/glyphicons-halflings-regular-DrwTMapi.ttf +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/glyphicons-halflings-regular-DzqM6ju8.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/index-C4B5cJ-0.css +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/jsoneditor-icons-CIlYC0TY.svg +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-300-B6tDWRxp.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-300-DZbNTRe6.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-300italic-DLsXqxhU.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-300italic-Dfz31Up5.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-400-D5zbb_EN.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-400-DLgeRt71.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-400italic-DpGQ6Ktj.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-400italic-UJbezL8h.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-600-CCvT4JHQ.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-600-DHWfDY-G.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-600italic-X8kCjSq_.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-600italic-slqXzGub.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-700-CsbQbrjx.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-700-DNl7WOH5.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-700italic-BtE7VvhE.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-700italic-hc2P_kZo.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-800-CbJOM4_m.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-800-XaYTAPrv.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-800italic-DqvYew-K.woff +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/assets/open-sans-latin-800italic-JIGkTxpX.woff2 +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/auth.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/constants.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/dialog.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/events.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/index.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/main.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/misc.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/pluginUtils.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/rest.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/router.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/routes.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/version.js +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/dist/src/src/vite-env.d.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/env.d.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/playwright.config.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/coverage.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/playwright-setup.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/playwright-teardown.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/server.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/admin.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/browser.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/collection.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/collectionBaseClass.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/data/README.md +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/data/nomime.dat +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/data/slicer_cli_web_test.xml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/data/ten_byte_file.txt +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/file_upload.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/plugin_authorized_upload.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/plugin_hashsum_download.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/plugin_homepage.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/plugin_item_licenses.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/plugin_readme.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/plugin_slicer_cli_web.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/plugin_terms.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/plugin_thumbnails.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/spec/plugin_user_quota.spec.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/web/tests/util.ts +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/worker_plugin.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder/wsgi.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder.egg-info/dependency_links.txt +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder.egg-info/entry_points.txt +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder.egg-info/not-zip-safe +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder.egg-info/requires.txt +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/girder.egg-info/top_level.txt +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/jsdoc.json +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/package-lock.json +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/package.json +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pyproject.toml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/LICENSE +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/MANIFEST.in +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/pyproject.toml +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/pytest_girder/__init__.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/pytest_girder/assertions.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/pytest_girder/fixtures.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/pytest_girder/plugin.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/pytest_girder/plugin_registry.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/pytest_girder/utils.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/pytest_girder/web_client.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/pytest_girder/setup.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/requirements-dev.txt +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/scripts/midas/README.rst +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/scripts/midas/migrate.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/scripts/midas/requirements.txt +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/scripts/midas/walk_girder.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/scripts/midas/walk_midas.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/scripts/publicNames.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/scripts/test_names.sh +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/setup.cfg +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/setup.py +0 -0
- {girder-5.0.17.dev12 → girder-5.0.17.dev16}/tox.ini +0 -0
|
@@ -48,12 +48,18 @@ def _permissionClauses(user=None, level=None, prefix=''):
|
|
|
48
48
|
:returns: A query dictionary with an '$or' entry which consists of a list
|
|
49
49
|
of match clauses, any one of which implies validation.
|
|
50
50
|
"""
|
|
51
|
+
from girder.models.setting import Setting
|
|
52
|
+
from girder.settings import SettingKey
|
|
53
|
+
|
|
51
54
|
permissionClauses = []
|
|
52
55
|
if level is None or (user and user['admin']):
|
|
53
56
|
# Without a level or with an admin user, match everything.
|
|
54
57
|
return {}
|
|
55
58
|
if level <= AccessType.READ:
|
|
56
|
-
|
|
59
|
+
if user or not Setting().get(SettingKey.DISABLE_ANONYMOUS_ACCESS):
|
|
60
|
+
permissionClauses.append({prefix + 'public': True})
|
|
61
|
+
else:
|
|
62
|
+
return {'__matchnothing': 'nothing'}
|
|
57
63
|
elif not user:
|
|
58
64
|
# If we have no user and asked for higher than read access, make a
|
|
59
65
|
# query that will fail
|
|
@@ -1215,9 +1221,12 @@ class AccessControlledModel(Model):
|
|
|
1215
1221
|
"""
|
|
1216
1222
|
if user is None:
|
|
1217
1223
|
if doc.get('public', False):
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1224
|
+
from girder.models.setting import Setting
|
|
1225
|
+
from girder.settings import SettingKey
|
|
1226
|
+
|
|
1227
|
+
if not Setting().get(SettingKey.DISABLE_ANONYMOUS_ACCESS):
|
|
1228
|
+
return AccessType.READ
|
|
1229
|
+
return AccessType.NONE
|
|
1221
1230
|
elif user['admin']:
|
|
1222
1231
|
return AccessType.ADMIN
|
|
1223
1232
|
else:
|
|
@@ -1367,8 +1376,14 @@ class AccessControlledModel(Model):
|
|
|
1367
1376
|
:returns: Whether the access is granted.
|
|
1368
1377
|
"""
|
|
1369
1378
|
if level <= AccessType.READ and doc.get('public', False) is True:
|
|
1370
|
-
|
|
1371
|
-
|
|
1379
|
+
from girder.models.setting import Setting
|
|
1380
|
+
from girder.settings import SettingKey
|
|
1381
|
+
|
|
1382
|
+
if user is not None or not Setting().get(SettingKey.DISABLE_ANONYMOUS_ACCESS):
|
|
1383
|
+
# Short-circuit the case of public resources
|
|
1384
|
+
return True
|
|
1385
|
+
elif user is None:
|
|
1386
|
+
return False
|
|
1372
1387
|
elif user is None:
|
|
1373
1388
|
# Anonymous users can only see public resources
|
|
1374
1389
|
return False
|
|
@@ -32,6 +32,7 @@ class SettingKey:
|
|
|
32
32
|
EMAIL_HOST = 'core.email_host'
|
|
33
33
|
EMAIL_VERIFICATION = 'core.email_verification'
|
|
34
34
|
ENABLE_PASSWORD_LOGIN = 'core.enable_password_login'
|
|
35
|
+
DISABLE_ANONYMOUS_ACCESS = 'core.disable_anonymous_access'
|
|
35
36
|
FILEHANDLE_MAX_SIZE = 'core.filehandle_max_size'
|
|
36
37
|
GIRDER_MOUNT_INFORMATION = 'core.girder_mount_information'
|
|
37
38
|
PRIVACY_NOTICE = 'core.privacy_notice'
|
|
@@ -82,6 +83,7 @@ class SettingDefault:
|
|
|
82
83
|
# SettingKey.EMAIL_HOST is provided by a function
|
|
83
84
|
SettingKey.EMAIL_VERIFICATION: 'disabled',
|
|
84
85
|
SettingKey.ENABLE_PASSWORD_LOGIN: True,
|
|
86
|
+
SettingKey.DISABLE_ANONYMOUS_ACCESS: False,
|
|
85
87
|
SettingKey.FILEHANDLE_MAX_SIZE: 1024 * 1024 * 16,
|
|
86
88
|
SettingKey.GIRDER_MOUNT_INFORMATION: None,
|
|
87
89
|
SettingKey.PRIVACY_NOTICE: 'https://www.kitware.com/privacy',
|
|
@@ -269,6 +271,12 @@ class SettingValidator:
|
|
|
269
271
|
if not isinstance(doc['value'], bool):
|
|
270
272
|
raise ValidationException('Enable password login setting must be boolean.', 'value')
|
|
271
273
|
|
|
274
|
+
@staticmethod
|
|
275
|
+
@setting_utilities.validator(SettingKey.DISABLE_ANONYMOUS_ACCESS)
|
|
276
|
+
def _validateDisableAnonymousAccess(doc):
|
|
277
|
+
if not isinstance(doc['value'], bool):
|
|
278
|
+
raise ValidationException('Disable anonymous access setting must be boolean.', 'value')
|
|
279
|
+
|
|
272
280
|
@staticmethod
|
|
273
281
|
@setting_utilities.validator(SettingKey.FILEHANDLE_MAX_SIZE)
|
|
274
282
|
def _validateFilehandleMaxSize(doc):
|
|
@@ -2632,9 +2632,9 @@ granted the power to add and remove users from the group.</p><div class="g-invit
|
|
|
2632
2632
|
and additionally can promote group members to moderators
|
|
2633
2633
|
or administrators. They also have the power to delete the
|
|
2634
2634
|
group entirely.</p><div class="g-invite-as-admin btn btn-primary"><i class="icon-mail"></i><span>Invite as administrator</span></div>`,r&&(t+=`<div class="g-add-as-admin btn btn-warning g-add-user-button"><i class="icon-plus"></i><span>Add as administrator</span></div>`),t+=`</div></div></div>`),t+=`</div><div class="g-validation-failed-message"></div></div><div class="modal-footer"><a class="btn btn-small btn-default" data-dismiss="modal">Cancel</a></div></div></div>`}).call(this,`accessType`in n?n.accessType:typeof accessType<`u`?accessType:void 0,`level`in n?n.level:typeof level<`u`?level:void 0,`mayAdd`in n?n.mayAdd:typeof mayAdd<`u`?mayAdd:void 0,`user`in n?n.user:typeof user<`u`?user:void 0),t}function BD(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=VD(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function VD(e){var t=``+e,n=HD.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var HD=/["&<>]/;function UD(e){var t=``,n=e||{};return(function(e,n,r){t+=`<div class="g-group-members-header g-group-list-header"><i class="icon-users"></i><span>Members</span>`,n>=e.WRITE&&(t+=`<form class="g-group-invite-form form-inline" role="form"><span><i class="icon-mail-alt"></i></span><div class="form-group g-group-invite-container"></div></form>`),t+=`<div class="g-member-pagination"></div></div><div class="g-group-members-body"><ul class="g-group-members">`,(function(){var i=r;if(typeof i.length==`number`)for(var a=0,o=i.length;a<o;a++){var s=i[a];t=t+`<li`+BD(`cid`,s.cid,!0,!1)+`><a class="g-member-name"><i class="icon-user"></i><span>`+VD(s.name()??``)+` (`+VD(s.get(`login`)??``)+`)</span></a><div class="g-group-member-controls pull-right">`,n>=e.ADMIN&&(t+=`<span class="dropdown"><a class="g-group-member-promote dropdown-toggle" title="Promote user" data-toggle="dropdown"><i class="icon-up-big"></i><i class="icon-down-dir"></i></a><ul class="dropdown-menu pull-right" role="menu"><li role="presentation"><a class="g-promote-moderator" role="menuitem"><i class="icon-plus"></i><span>Promote to moderator</span></a></li><li role="presentation"><a class="g-promote-admin" role="menuitem"><i class="icon-plus"></i><span>Promote to administrator</span></a></li></ul></span>`),n>=e.WRITE&&(t+=`<a class="g-group-member-remove" title="Remove user from the group"><i class="icon-block"></i></a>`),t+=`</div></li>`}else{var o=0;for(var a in i){o++;var s=i[a];t=t+`<li`+BD(`cid`,s.cid,!0,!1)+`><a class="g-member-name"><i class="icon-user"></i><span>`+VD(s.name()??``)+` (`+VD(s.get(`login`)??``)+`)</span></a><div class="g-group-member-controls pull-right">`,n>=e.ADMIN&&(t+=`<span class="dropdown"><a class="g-group-member-promote dropdown-toggle" title="Promote user" data-toggle="dropdown"><i class="icon-up-big"></i><i class="icon-down-dir"></i></a><ul class="dropdown-menu pull-right" role="menu"><li role="presentation"><a class="g-promote-moderator" role="menuitem"><i class="icon-plus"></i><span>Promote to moderator</span></a></li><li role="presentation"><a class="g-promote-admin" role="menuitem"><i class="icon-plus"></i><span>Promote to administrator</span></a></li></ul></span>`),n>=e.WRITE&&(t+=`<a class="g-group-member-remove" title="Remove user from the group"><i class="icon-block"></i></a>`),t+=`</div></li>`}}}).call(this),r.length||(t+=`<div class="g-member-list-empty"><i class="icon-info-circled"></i><span>There are no members in this group.</span></div>`),t+=`</ul></div>`}).call(this,`accessType`in n?n.accessType:typeof accessType<`u`?accessType:void 0,`level`in n?n.level:typeof level<`u`?level:void 0,`members`in n?n.members:typeof members<`u`?members:void 0),t}ho();var WD=Y.extend({events:{"click .g-invite-as-member":function(){this._sendInvitation(cm.READ)},"click .g-invite-as-moderator":function(){this._sendInvitation(cm.WRITE)},"click .g-invite-as-admin":function(){this._sendInvitation(cm.ADMIN)},"click .g-add-as-member":function(){this._sendInvitation(cm.READ,!0)},"click .g-add-as-moderator":function(){this._sendInvitation(cm.WRITE,!0)},"click .g-add-as-admin":function(){this._sendInvitation(cm.ADMIN,!0)}},initialize:function(e){this.group=e.group,this.user=e.user},render:function(){return this.$el.html(zD({group:this.group,user:this.user,level:this.group.get(`_accessLevel`),accessType:cm,mayAdd:this.group.mayAddMembers()})).girderModal(this),this},_sendInvitation:function(e,t){this.$el.modal(`hide`),this.trigger(`g:sendInvite`,{user:this.user,group:this.group,level:e,force:t})}}),GD=Y.extend({events:{"click a.g-member-name":function(e){var t=this.membersColl.get((0,U.default)(e.currentTarget).parents(`li`).attr(`cid`));J.navigate(`user/`+t.get(`_id`),{trigger:!0})},"click a.g-group-member-remove":function(e){var t=this.membersColl.get((0,U.default)(e.currentTarget).parents(`li`).attr(`cid`));Ov({text:`Are you sure you want to remove <b> `+H.escape(t.name())+`</b> from this group?`,escapedHtml:!0,confirmCallback:()=>{this.trigger(`g:removeMember`,t)}})},"click .g-promote-moderator":function(e){var t=(0,U.default)(e.currentTarget).parents(`.g-group-members>li`).attr(`cid`),n=this.membersColl.get(t);this.model.off(`g:promoted`).on(`g:promoted`,function(){this.trigger(`g:moderatorAdded`)},this).promoteUser(n,cm.WRITE)},"click .g-promote-admin":function(e){var t=(0,U.default)(e.currentTarget).parents(`.g-group-members>li`).attr(`cid`),n=this.membersColl.get(t);this.model.off(`g:promoted`).on(`g:promoted`,function(){this.trigger(`g:adminAdded`)},this).promoteUser(n,cm.ADMIN)}},initialize:function(e){this.model=e.group,this.modsAndAdmins=H.union(H.pluck(e.admins,`id`),H.pluck(e.moderators,`id`)),this.membersColl=new hv,this.membersColl.altUrl=`group/`+this.model.get(`_id`)+`/member`,this.membersColl.on(`g:changed`,function(){this.render()},this).fetch()},render:function(){for(var e=[],t=0;t<this.membersColl.models.length;t+=1){var n=this.membersColl.models[t];U.default.inArray(n.id,this.modsAndAdmins)<0&&e.push(n)}return this.$el.html(UD({group:this.model,members:e,level:this.model.get(`_accessLevel`),accessType:cm})),new BE({el:this.$(`.g-member-pagination`),collection:this.membersColl,parentView:this}).render(),this.userSearch=new Sy({el:this.$(`.g-group-invite-container`),placeholder:`Invite a user to join...`,types:[`user`],parentView:this}).off().on(`g:resultClicked`,this._inviteUser,this).render(),this},_inviteUser:function(e){this.userSearch.resetState(),new WD({el:(0,U.default)(`#g-dialog-container`),group:this.model,user:e,parentView:this}).on(`g:sendInvite`,function(e){this.trigger(`g:sendInvite`,e)},this).render()}});function KD(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=qD(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function qD(e){var t=``+e,n=JD.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var JD=/["&<>]/;function YD(e){var t=``,n=e||{};return(function(e,n,r){t+=`<div class="g-group-mods-header g-group-list-header" title="Group moderators can invite and approve group members."><i class="icon-shield"></i><span>Moderators</span></div><div class="g-group-mods-body"><ul class="g-group-mods">`,(function(){var i=r;if(typeof i.length==`number`)for(var a=0,o=i.length;a<o;a++){var s=i[a];t=t+`<li`+(KD(`userid`,s.id,!0,!1)+KD(`username`,s.name,!0,!1))+`><a class="g-member-name"><i class="icon-user"></i><span>`+qD(s.name??``)+` (`+qD(s.login??``)+`)</span></a><div class="g-group-member-controls pull-right">`,n>=e.ADMIN&&(t+=`<a class="g-group-mod-promote" title="Promote to administrator"><i class="icon-up-big"></i></a><a class="g-group-mod-demote" title="Demote to member"><i class="icon-down-big"></i></a><a class="g-group-mod-remove" title="Remove user from the group"><i class="icon-block"></i></a>`),t+=`</div></li>`}else{var o=0;for(var a in i){o++;var s=i[a];t=t+`<li`+(KD(`userid`,s.id,!0,!1)+KD(`username`,s.name,!0,!1))+`><a class="g-member-name"><i class="icon-user"></i><span>`+qD(s.name??``)+` (`+qD(s.login??``)+`)</span></a><div class="g-group-member-controls pull-right">`,n>=e.ADMIN&&(t+=`<a class="g-group-mod-promote" title="Promote to administrator"><i class="icon-up-big"></i></a><a class="g-group-mod-demote" title="Demote to member"><i class="icon-down-big"></i></a><a class="g-group-mod-remove" title="Remove user from the group"><i class="icon-block"></i></a>`),t+=`</div></li>`}}}).call(this),r.length||(t+=`<div class="g-member-list-empty"><i class="icon-info-circled"></i><span>There are no moderators in this group.</span></div>`),t+=`</ul></div>`}).call(this,`accessType`in n?n.accessType:typeof accessType<`u`?accessType:void 0,`level`in n?n.level:typeof level<`u`?level:void 0,`moderators`in n?n.moderators:typeof moderators<`u`?moderators:void 0),t}ho();var XD=Y.extend({events:{"click .g-group-mod-promote":function(e){var t=new Kp({_id:(0,U.default)(e.currentTarget).parents(`li`).attr(`userid`)});this.model.off(`g:promoted`).on(`g:promoted`,function(){this.trigger(`g:adminAdded`)},this).promoteUser(t,cm.ADMIN)},"click .g-group-mod-demote":function(e){var t=(0,U.default)(e.currentTarget).parents(`li`);Ov({text:`Are you sure you want to remove moderator privileges from <b>`+H.escape(t.attr(`username`))+`</b>?`,escapedHtml:!0,confirmCallback:()=>{this.trigger(`g:demoteUser`,t.attr(`userid`))}})},"click a.g-group-mod-remove":function(e){var t=(0,U.default)(e.currentTarget).parents(`li`);Ov({text:`Are you sure you want to remove <b> `+H.escape(t.attr(`username`))+`</b> from this group?`,escapedHtml:!0,confirmCallback:()=>{this.trigger(`g:removeMember`,t.attr(`userid`))}})},"click a.g-member-name":function(e){q.trigger(`g:navigateTo`,ED,{id:(0,U.default)(e.currentTarget).parents(`li`).attr(`userid`)})}},initialize:function(e){this.model=e.group,this.moderators=e.moderators},render:function(){return this.$el.html(YD({group:this.model,level:this.model.get(`_accessLevel`),moderators:this.moderators,accessType:cm})),this}});function ZD(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=QD(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function QD(e){var t=``+e,n=$D.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var $D=/["&<>]/;function eO(e){var t=``,n=e||{};return(function(e,n,r,i,a,o,s,c){t+=`<div class="g-group-header"><div class="btn-group pull-right">`,(o||a||n()||r.get(`_accessLevel`)>=e.ADMIN)&&(t+=`<button class="g-group-actions-button btn btn-default dropdown-toggle" data-toggle="dropdown" title="Group actions"><i class="icon-users"></i> Actions<i class="icon-down-dir"></i></button><ul class="g-group-actions-menu dropdown-menu pull-right" role="menu">`,o?t+=`<li role="presentation"><a class="g-group-leave" role="menuitem"><i class="icon-block"></i>Leave group</a></li>`:a?t+=`<li role="presentation"><a class="g-group-join" role="menuitem"><i class="icon-login"></i>Join group</a></li>`:n()&&(t+=`<li role="presentation"><a class="g-group-request-invite" role="menuitem"><i class="icon-export"></i>Request membership</a></li>`),r.get(`_accessLevel`)>=e.ADMIN&&(t+=`<li class="divider" role="presentation"></li><li role="presentation"><a class="g-edit-group" role="menuitem"><i class="icon-edit"></i>Edit group</a></li>`),r.get(`_accessLevel`)>=e.ADMIN&&(t+=`<li class="divider" role="presentation"></li><li role="presentation"><a class="g-group-delete" role="menuitem"><i class="icon-trash"></i>Delete group</a></li>`),t+=`</ul>`),t=t+`</div><div class="g-group-name g-body-title">`+QD(r.name()??``)+`</div><div class="g-group-description g-body-subtitle">`+QD(r.get(`description`)??``)+`</div><div class="g-clear-right"></div></div>`,n()&&(o?(t+=`<div class="g-group-status-container g-member"><i class="icon-ok"></i>`,t+=i?` You are an <b>administrator</b> of this group.`:s?` You are a <b>moderator</b> of this group.`:` You are a <b>member</b> of this group.`,t+=`</div>`):t+=a?`<div class="g-group-status-container g-invited"><i class="icon-mail-alt"></i> You have been invited to this group.<a class="g-group-join"> Join group</a></div>`:c?`<div class="g-group-status-container g-requested-invite"><i class="icon-comment"></i> You have requested to join this group.</div>`:`<div class="g-group-status-container g-nonmember"><i class="icon-minus-circled"></i> You are not a member of this group.<a class="g-group-request-invite"> Request membership</a></div>`,r.get(`_accessLevel`)>=e.ADMIN&&!i&&(t+=`<div class="g-group-status-container g-admin"><i class="icon-star"></i> You have <b>administrator</b> privileges.</div>`)),t+=`<ul class="g-group-tabs nav nav-tabs"><li class="active"><a href="#g-group-tab-roles" data-toggle="tab" name="roles"><i class="icon-th-list"></i> Roles</a></li><li><a href="#g-group-tab-pending" data-toggle="tab" name="pending"><i class="icon-inbox"></i>Pending<div id="g-group-tab-pending-status"></div></a></li></ul><div class="tab-content"><div class="tab-pane active" id="g-group-tab-roles"><div class="g-group-admins-container"></div><div class="g-group-mods-container"></div><div class="g-group-members-container"></div></div><div class="tab-pane" id="g-group-tab-pending"><div class="g-group-requests-container"><div class="g-group-requests-header g-group-list-header"><i class="icon-comment"></i> Requests for membership</div><div class="g-group-requests-body"><ul class="g-group-requests">`,(function(){var n=r.get(`requests`);if(typeof n.length==`number`)for(var i=0,a=n.length;i<a;i++){var o=n[i];t=t+`<li`+ZD(`userid`,o.id,!0,!1)+`><a class="g-member-name"><i class="icon-user"></i> `+QD(o.name??``)+` (`+QD(o.login??``)+`)</a><div class="g-group-member-controls pull-right">`,r.get(`_accessLevel`)>=e.WRITE&&(t+=`<a class="g-group-request-accept" title="Add to group"><i class="icon-thumbs-up"></i></a><a class="g-group-request-deny" title="Deny request"><i class="icon-thumbs-down"></i></a>`),t+=`</div></li>`}else{var a=0;for(var i in n){a++;var o=n[i];t=t+`<li`+ZD(`userid`,o.id,!0,!1)+`><a class="g-member-name"><i class="icon-user"></i> `+QD(o.name??``)+` (`+QD(o.login??``)+`)</a><div class="g-group-member-controls pull-right">`,r.get(`_accessLevel`)>=e.WRITE&&(t+=`<a class="g-group-request-accept" title="Add to group"><i class="icon-thumbs-up"></i></a><a class="g-group-request-deny" title="Deny request"><i class="icon-thumbs-down"></i></a>`),t+=`</div></li>`}}}).call(this),r.get(`requests`).length||(t+=`<div class="g-member-list-empty"><i class="icon-info-circled"></i> There are no outstanding invitation requests for this group.</div>`),t+=`</ul></div></div><div class="g-group-invites-container"><div class="g-group-invites-header g-group-list-header"><i class="icon-mail-alt"></i> Sent invitations</div><div class="g-group-invites-body"></div></div></div></div>`}).call(this,`AccessType`in n?n.AccessType:typeof AccessType<`u`?AccessType:void 0,`getCurrentUser`in n?n.getCurrentUser:typeof getCurrentUser<`u`?getCurrentUser:void 0,`group`in n?n.group:typeof group<`u`?group:void 0,`isAdmin`in n?n.isAdmin:typeof isAdmin<`u`?isAdmin:void 0,`isInvited`in n?n.isInvited:typeof isInvited<`u`?isInvited:void 0,`isMember`in n?n.isMember:typeof isMember<`u`?isMember:void 0,`isModerator`in n?n.isModerator:typeof isModerator<`u`?isModerator:void 0,`isRequested`in n?n.isRequested:typeof isRequested<`u`?isRequested:void 0),t}ho();var tO=Y.extend({events:{"click .g-edit-group":`editGroup`,"click .g-group-join":`joinGroup`,"click .g-group-leave":`leaveGroup`,"click .g-group-delete":`deleteGroup`,"click .g-group-request-invite":`requestInvitation`,"click .g-group-request-accept":`acceptMembershipRequest`,"click .g-group-request-deny":`denyMembershipRequest`,"click #g-group-tab-pending a.g-member-name":function(e){var t=(0,U.default)(e.currentTarget).parents(`li`).attr(`userid`);J.navigate(`user/`+t,{trigger:!0})}},initialize:function(e){Lp(`fetch`),this.tab=e.tab||`roles`,this.edit=e.edit||!1,e.group?(this.model=e.group,this.model.on(`g:accessFetched`,function(){this.render()},this).fetchAccess()):e.id&&(this.model=new fv,this.model.set(`_id`,e.id),this.model.on(`g:fetched`,function(){this.model.on(`g:accessFetched`,function(){this.render()},this).fetchAccess()},this).fetch())},editGroup:function(){var e=(0,U.default)(`#g-dialog-container`);this.editGroupWidget||=new sD({el:e,model:this.model,parentView:this}).off(`g:saved`).on(`g:saved`,function(){this.render()},this),this.editGroupWidget.render()},deleteGroup:function(){Ov({text:`Are you sure you want to delete the group <b>`+this.model.escape(`name`)+`</b>?`,escapedHtml:!0,confirmCallback:()=>{this.model.on(`g:deleted`,function(){J.navigate(`groups`,{trigger:!0})}).destroy()}})},render:function(){return this.isMember=!1,this.isInvited=!1,this.isRequested=!1,this.isModerator=!1,this.isAdmin=!1,Xp()&&(H.every(Xp().get(`groups`),function(e){return e!==this.model.get(`_id`)||(this.isMember=!0,!1)},this),H.every(Xp().get(`groupInvites`),function(e){return e.groupId!==this.model.get(`_id`)||(this.isInvited=!0,!1)},this),H.every(this.model.get(`requests`)||[],function(e){return e.id!==Xp().get(`_id`)||(this.isRequested=!0,!1)},this)),this.isMember&&H.every(this.model.get(`access`).users||[],function(e){return e.id!==Xp().get(`_id`)||(e.level===cm.WRITE?this.isModerator=!0:e.level===cm.ADMIN&&(this.isAdmin=!0),!1)},this),this.$el.html(eO({group:this.model,getCurrentUser:Xp,AccessType:cm,isInvited:this.isInvited,isRequested:this.isRequested,isMember:this.isMember,isModerator:this.isModerator,isAdmin:this.isAdmin})),this.invitees?this._renderInvitesWidget():(new Lw({el:this.$(`.g-group-invites-body`),parentView:this}).render(),this.invitees=new hv,this.invitees.altUrl=`group/`+this.model.get(`_id`)+`/invitation`,this.invitees.on(`g:changed`,()=>{this._renderInvitesWidget(),this.updatePendingStatus()},this).fetch()),this._updateRolesLists(),J.navigate(`group/`+this.model.get(`_id`)+`/`+this.tab,{replace:!0}),this.edit&&=(this.model.get(`_accessLevel`)>=cm.ADMIN&&this.editGroup(),!1),H.each((0,U.default)(`.g-group-tabs>li>a`),e=>{var t=(0,U.default)(e);t.tab().on(`shown.bs.tab`,e=>{this.tab=(0,U.default)(e.currentTarget).attr(`name`),J.navigate(`group/`+this.model.get(`_id`)+`/`+this.tab)}),t.attr(`name`)===this.tab&&t.tab(`show`)}),this},_renderInvitesWidget:function(){new ID({el:this.$(`.g-group-invites-body`),invitees:this.invitees,group:this.model,parentView:this}).render(),this.updatePendingStatus()},updatePendingStatus:function(){var e=this.invitees.length+this.model.get(`requests`).length;(0,U.default)(`#g-group-tab-pending-status`).text(` (`+e+`)`)},joinGroup:function(){this.model.off(`g:joined`).on(`g:joined`,function(){this.invitees.fetch(null,!0)},this).joinGroup()},leaveGroup:function(){Ov({text:`Are you sure you want to leave this group?`,confirmCallback:()=>{this.model.off(`g:removed`).on(`g:removed`,()=>{this.render()}).removeMember(Xp().get(`_id`))}})},removeMember:function(e){var t=e;U.default.type(e)!==`string`&&(t=e.get(`_id`)),this.model.off(`g:removed`).on(`g:removed`,function(){this.render()},this).removeMember(t)},requestInvitation:function(){this.model.off(`g:inviteRequested`).on(`g:inviteRequested`,function(){this.render()},this).requestInvitation()},acceptMembershipRequest:function(e){var t=(0,U.default)(e.currentTarget).parents(`li`).attr(`userid`);this.model.off(`g:invited`).on(`g:invited`,this.render,this).sendInvitation(t,cm.READ,!0)},denyMembershipRequest:function(e){var t=(0,U.default)(e.currentTarget).parents(`li`).attr(`userid`);this.model.off(`g:removed`).on(`g:removed`,this.render,this).removeMember(t)},_updateRolesLists:function(){var e=[],t=[];H.each(this.model.get(`access`).users,function(n){n.level===cm.WRITE?e.push(n):n.level===cm.ADMIN&&t.push(n)},this),this.adminsWidget=new jD({el:this.$(`.g-group-admins-container`),group:this.model,admins:t,parentView:this}).off().on(`g:demoteUser`,function(e){this.model.off(`g:demoted`).on(`g:demoted`,this.render,this).demoteUser(e,cm.ADMIN)},this).on(`g:removeMember`,this.removeMember,this).on(`g:moderatorAdded`,this.render,this).render(),this.modsWidget=new XD({el:this.$(`.g-group-mods-container`),group:this.model,moderators:e,parentView:this}).on(`g:demoteUser`,function(e){this.model.off(`g:demoted`).on(`g:demoted`,this.render,this).demoteUser(e,cm.WRITE)},this).on(`g:removeMember`,this.removeMember,this).on(`g:adminAdded`,this.render,this).render(),this.membersWidget=new GD({el:this.$(`.g-group-members-container`),group:this.model,admins:t,moderators:e,parentView:this}).on(`g:sendInvite`,function(e){var t={force:e.force||!1};this.model.off(`g:invited`).on(`g:invited`,function(){this.invitees.fetch(null,!0),e.force&&this.model.fetchAccess()},this).off(`g:error`).on(`g:error`,function(e){q.trigger(`g:alert`,{text:e.responseJSON.message,type:`warning`})},this).sendInvitation(e.user.id,e.level,!1,t)},this).on(`g:removeMember`,this.removeMember,this).on(`g:moderatorAdded`,this.render,this).on(`g:adminAdded`,this.render,this)}},{fetchAndInit:function(e,t){var n=new fv;n.set({_id:e}).once(`g:fetched`,function(){q.trigger(`g:navigateTo`,tO,H.extend({group:n},t||{}))},this).fetch()}});function nO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=rO(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function rO(e){var t=``+e,n=iO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var iO=/["&<>]/;function aO(e){var t=``,n=e||{};return(function(e){t=t+`<div class="modal-dialog"><div class="modal-content"><form class="modal-form" id="g-file-edit-form" role="form"><div class="modal-header"><button class="close" data-dismiss="modal" aria-hidden="true" type="button">×</button><h4 class="modal-title">Edit file</h4></div><div class="modal-body"><div class="form-group"><label class="control-label" for="g-name">Name</label><input`+(` class="input-sm form-control" id="g-name" type="text" placeholder="Enter file name"`+nO(`value`,e.name(),!0,!1))+`/></div><div class="form-group"><label class="control-label" for="g-mimetype">MIME type</label><input`+(` class="input-sm form-control" id="g-mimetype" type="text" placeholder="Enter MIME type"`+nO(`value`,e.get(`mimeType`),!0,!1))+`/></div><div class="g-validation-failed-message"></div></div><div class="modal-footer"><a class="btn btn-small btn-default" data-dismiss="modal">Cancel</a><button class="g-save-file btn btn-small btn-primary" type="submit"><i class="icon-edit"></i>Save</button></div></form></div></div>`}).call(this,`file`in n?n.file:typeof file<`u`?file:void 0),t}var oO=Y.extend({events:{"submit #g-file-edit-form":function(){var e={name:this.$(`#g-name`).val(),mimeType:this.$(`#g-mimetype`).val()};return this.file.set(e),this.file.off(null,null,this).on(`g:saved`,function(){this.$el.modal(`hide`),this.trigger(`g:saved`,this.file)},this).on(`g:error`,function(e){this.$(`.g-validation-failed-message`).text(e.responseJSON.message),this.$(`button.g-save-file`).girderEnable(!0),this.$(`#g-`+e.responseJSON.field).trigger(`focus`)},this).save(),this.$(`button.g-save-file`).girderEnable(!1),this.$(`.g-validation-failed-message`).empty(),!1}},initialize:function(e){this.file=e.file||null},render:function(){return this.file.get(`mimeType`)===void 0&&this.file.set(`mimeType`,``),this.$el.html(aO({file:this.file})).girderModal(this).on(`shown.bs.modal`,()=>{this.$(`#g-name`).trigger(`select`).trigger(`focus`)}).on(`hidden.bs.modal`,()=>{Ev(`fileedit`,void 0,this.file.get(`_id`))}),Dv(`fileedit`,void 0,this.file.get(`_id`)),this}});function sO(e){var t=``+e,n=cO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var cO=/["&<>]/;function lO(e){var t=``,n=e||{};return(function(e,n,r){t=t+`<div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button class="close" data-dismiss="modal" aria-hidden="true">×</button><h4 class="modal-title">File information</h4><div class="g-dialog-subtitle"><i class="icon-doc-inv"></i><span>`+sO(n.name()??``)+`</span></div></div><div class="modal-body"><div class="g-file-info-lines"><div class="g-file-info-line" property="created"><i class="icon-clock"></i><span>`+sO(`Created `)+`</span><span class="g-bold-part">`+sO(r(n.get(`created`),e)??``)+`</span></div><div class="g-file-info-line" property="mimeType"><i class="icon-info"></i><span>MIME type:</span><span class="g-bold-part"> `+sO((n.get(`mimeType`)||`unknown`)??``)+`</span></div>`,n.has(`size`)&&(t=t+`<div class="g-file-info-line" property="size"><i class="icon-hdd"></i><span>Size:</span><span class="g-bold-part"> `+sO(n.get(`size`)??``)+` bytes</span></div>`),t=t+`<div class="g-file-info-line" property="id"><i class="icon-share"></i><span>Unique ID:</span><span class="g-bold-part"> `+sO(n.id??``)+`</span></div></div></div><div class="modal-footer"><a class="btn btn-small btn-default" data-dismiss="modal">Close</a></div></div></div>`}).call(this,`DATE_SECOND`in n?n.DATE_SECOND:typeof DATE_SECOND<`u`?DATE_SECOND:void 0,`file`in n?n.file:typeof file<`u`?file:void 0,`formatDate`in n?n.formatDate:typeof formatDate<`u`?formatDate:void 0),t}var uO=Y.extend({initialize:function(e){this.parentItem=e.parentItem},render:function(){return this.$el.html(lO({file:this.model,formatDate:B_,DATE_SECOND:3})).girderModal(this),this}});function dO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=fO(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function fO(e){var t=``+e,n=pO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var pO=/["&<>]/;function mO(e){var t=``,n=e||{};return(function(e,n,r,i,a){t+=`<ul class="g-file-list">`,(function(){var i=n;if(typeof i.length==`number`)for(var o=0,s=i.length;o<s;o++){var c=i[o];t=t+`<li class="g-file-list-entry"><a`+(` class="g-file-list-link"`+dO(`cid`,c.cid,!0,!1)+` title="Download file"`+dO(`target`,c.get(`linkUrl`)?`_blank`:`_self`,!0,!1)+dO(`href`,c.downloadUrl(),!0,!1)+` rel="noopener noreferrer"`)+`>`,c.get(`linkUrl`)?t=t+`<i class="icon-link"></i><span class="g-file-name">`+fO(c.name()??``)+`</span><i class="icon-link-ext"></i>`:t+=`<i class="icon-doc-inv"></i>`+fO(c.name()??``),t=t+`</a><a`+(` class="g-view-inline" title="View in browser" target="_blank" rel="noopener noreferrer"`+dO(`href`,c.downloadUrl({contentDisposition:`inline`}),!0,!1))+`><i class="icon-eye"></i></a><a`+(` class="g-show-info"`+dO(`file-cid`,c.cid,!0,!1)+` title="Show info"`)+`><i class="icon-info"></i></a>`,c.has(`size`)&&(t=t+`<div class="g-file-size">`+fO(r(c.get(`size`))??``)+`</div>`),t=t+`<div`+(` class="g-file-actions-container"`+dO(`file-cid`,c.cid,!0,!1))+`>`,a&&a.get(`_accessLevel`)>=e.WRITE&&(t+=`<a class="g-update-info" title="Edit file info"><i class="icon-edit"></i></a><a class="g-update-contents" title="Replace file contents"><i class="icon-upload"></i></a><a class="g-delete-file" title="Delete file"><i class="icon-cancel"></i></a>`),t+=`</div></li>`}else{var s=0;for(var o in i){s++;var c=i[o];t=t+`<li class="g-file-list-entry"><a`+(` class="g-file-list-link"`+dO(`cid`,c.cid,!0,!1)+` title="Download file"`+dO(`target`,c.get(`linkUrl`)?`_blank`:`_self`,!0,!1)+dO(`href`,c.downloadUrl(),!0,!1)+` rel="noopener noreferrer"`)+`>`,c.get(`linkUrl`)?t=t+`<i class="icon-link"></i><span class="g-file-name">`+fO(c.name()??``)+`</span><i class="icon-link-ext"></i>`:t+=`<i class="icon-doc-inv"></i>`+fO(c.name()??``),t=t+`</a><a`+(` class="g-view-inline" title="View in browser" target="_blank" rel="noopener noreferrer"`+dO(`href`,c.downloadUrl({contentDisposition:`inline`}),!0,!1))+`><i class="icon-eye"></i></a><a`+(` class="g-show-info"`+dO(`file-cid`,c.cid,!0,!1)+` title="Show info"`)+`><i class="icon-info"></i></a>`,c.has(`size`)&&(t=t+`<div class="g-file-size">`+fO(r(c.get(`size`))??``)+`</div>`),t=t+`<div`+(` class="g-file-actions-container"`+dO(`file-cid`,c.cid,!0,!1))+`>`,a&&a.get(`_accessLevel`)>=e.WRITE&&(t+=`<a class="g-update-info" title="Edit file info"><i class="icon-edit"></i></a><a class="g-update-contents" title="Replace file contents"><i class="icon-upload"></i></a><a class="g-delete-file" title="Delete file"><i class="icon-cancel"></i></a>`),t+=`</div></li>`}}}).call(this),i&&(t+=`<li class="g-show-more"><a class="g-show-more-files"><i class="icon-level-down"></i>Show more files...</a></li>`),t+=`</ul>`}).call(this,`AccessType`in n?n.AccessType:typeof AccessType<`u`?AccessType:void 0,`files`in n?n.files:typeof files<`u`?files:void 0,`formatSize`in n?n.formatSize:typeof formatSize<`u`?formatSize:void 0,`hasMore`in n?n.hasMore:typeof hasMore<`u`?hasMore:void 0,`parentItem`in n?n.parentItem:typeof parentItem<`u`?parentItem:void 0),t}var hO=Y.extend({events:{"click a.g-show-more-files":function(){this.collection.fetchNextPage()},"click a.g-show-info":function(e){var t=(0,U.default)(e.currentTarget).attr(`file-cid`);new uO({el:(0,U.default)(`#g-dialog-container`),model:this.collection.get(t),parentItem:this.parentItem,parentView:this}).render()},"click a.g-update-contents":function(e){var t=(0,U.default)(e.currentTarget).parent().attr(`file-cid`);this.uploadDialog(t)},"click a.g-update-info":function(e){var t=(0,U.default)(e.currentTarget).parent().attr(`file-cid`);this.editFileDialog(t)},"click a.g-delete-file":function(e){var t=(0,U.default)(e.currentTarget).parent().attr(`file-cid`),n=this.collection.get(t);Ov({text:`Are you sure you want to delete the file <b>`+n.escape(`name`)+`</b>?`,yesText:`Delete`,escapedHtml:!0,confirmCallback:()=>{n.once(`g:deleted`,function(){q.trigger(`g:alert`,{icon:`ok`,type:`success`,text:`File deleted.`,timeout:4e3}),this.render()},this).once(`g:error`,function(){q.trigger(`g:alert`,{icon:`cancel`,text:`Failed to delete file.`,type:`danger`,timeout:4e3})}).destroy()}})}},initialize:function(e){this.upload=e.upload,this.fileEdit=e.fileEdit,this.checked=[],this.collection=new uv,this.collection.altUrl=`item/`+(e.itemId||e.item.get(`_id`))+`/files`,this.collection.append=!0,this.collection.on(`g:changed`,function(){this.render(),this.trigger(`g:changed`)},this).fetch(),this.parentItem=e.item},editFileDialog:function(e){this.editFileWidget=new oO({el:(0,U.default)(`#g-dialog-container`),file:this.collection.get(e),parentView:this}).off(`g:saved`,null,this).on(`g:saved`,function(){this.render()},this),this.editFileWidget.render()},uploadDialog:function(e){new eE({el:(0,U.default)(`#g-dialog-container`),title:`Replace file contents`,parent:this.collection.get(e),parentType:`file`,parentView:this}).on(`g:uploadFinished`,function(){q.trigger(`g:alert`,{icon:`ok`,text:`File contents updated.`,type:`success`,timeout:4e3})},this).render()},render:function(){return this.checked=[],this.$el.html(mO({files:this.collection.toArray(),hasMore:this.collection.hasNextPage(),AccessType:cm,formatSize:V_,parentItem:this.parentItem})),this.fileEdit?(this.editFileDialog(this.fileEdit),this.fileEdit=!1):this.upload&&=(this.uploadDialog(this.upload),!1),this},insertFile:function(e){this.collection.add(e),this.render(),this.trigger(`g:changed`)}});function gO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=_O(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function _O(e){var t=``+e,n=vO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var vO=/["&<>]/;function yO(e){var t=``,n=e||{};return(function(e){t+=`<ol class="breadcrumb">`,(function(){var n=e;if(typeof n.length==`number`)for(var r=0,i=n.length;r<i;r++){var a=n[r];t=t+`<li><a`+(` class="g-item-breadcrumb-link"`+gO(`data-id`,a.object._id,!0,!1)+gO(`data-type`,a.type,!0,!1))+`>`,a.type===`user`?t+=`<i class="icon-user"></i>`+_O(a.object.login??``):a.type===`collection`?t+=`<i class="icon-sitemap"></i>`+_O(a.object.name??``):t+=_O(a.object.name??``),t+=`</a></li>`}else{var i=0;for(var r in n){i++;var a=n[r];t=t+`<li><a`+(` class="g-item-breadcrumb-link"`+gO(`data-id`,a.object._id,!0,!1)+gO(`data-type`,a.type,!0,!1))+`>`,a.type===`user`?t+=`<i class="icon-user"></i>`+_O(a.object.login??``):a.type===`collection`?t+=`<i class="icon-sitemap"></i>`+_O(a.object.name??``):t+=_O(a.object.name??``),t+=`</a></li>`}}}).call(this),t+=`<div class="pull-right"><a class="g-hierarchy-level-up" title="Go to parent folder"><i class="icon-level-up"></i></a></div></ol>`}).call(this,`parentChain`in n?n.parentChain:typeof parentChain<`u`?parentChain:void 0),t}var bO=Y.extend({events:{"click a.g-item-breadcrumb-link":function(e){var t=(0,U.default)(e.currentTarget);J.navigate(t.data(`type`)+`/`+t.data(`id`),{trigger:!0})},"click a.g-hierarchy-level-up":function(){var e=this.parentChain.pop().object;J.navigate(`folder/`+e._id,{trigger:!0})}},initialize:function(e){this.parentChain=e.parentChain,this.render()},render:function(){return this.$el.html(yO({parentChain:this.parentChain})),this}});function xO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=SO(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function SO(e){var t=``+e,n=CO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var CO=/["&<>]/;function wO(e){var t=``,n=e||{};return(function(e,n,r,i,a,o,s){t+=`<div class="g-item-breadcrumb-container"></div><div class="g-item-header"><div class="pull-right">`,r>=e.WRITE&&(t+=`<button class="g-upload-into-item btn btn-sm btn-success" title="Upload files into item"><i class="icon-upload"></i></button>`),t=t+`<div class="btn-group"><button class="g-item-actions-button btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" title="Item actions"><i class="icon-doc-text-inv"></i> Actions<i class="icon-down-dir"></i></button><ul class="g-item-actions-menu dropdown-menu pull-right" role="menu"><li role="presentation"><a`+(` class="g-download-item" role="menuitem"`+xO(`href`,o.downloadUrl(),!0,!1))+`><i class="icon-download"></i>Download item</a></li>`,r>=e.WRITE&&(t+=`<li class="divider" role="presentation"></li><li role="presentation"><a class="g-edit-item" role="menuitem"><i class="icon-edit"></i>Edit item</a></li><li class="divider" role="presentation"></li><li role="presentation"><a class="g-delete-item" role="menuitem"><i class="icon-trash"></i>Delete item</a></li>`),t=t+`</ul></div></div><div class="g-item-name g-body-title">`+SO(o.name()??``)+`</div></div><div class="g-item-description">`+(s(o.get(`description`))??``)+`</div><div class="g-item-info"><div class="g-item-info-header"><i class="icon-info"></i>Info</div><div class="g-item-size g-info-list-entry"><i class="icon-hdd"></i>`,t=o.get(`size`)<1024?t+SO(o.get(`size`)??``)+` bytes`:t+SO(a(o.get(`size`))??``)+` (`+SO(o.get(`size`)??``)+` bytes)`,t=t+`</div><div class="g-item-created g-info-list-entry"><i class="icon-clock"></i>Created on `+SO(i(o.get(`created`),n)??``)+`</div><div class="g-item-updated g-info-list-entry"><i class="icon-clock"></i>Updated on `+SO(i(o.get(`updated`),n)??``)+`</div><div class="g-item-id g-info-list-entry"><i class="icon-share"></i>Unique ID: `+SO(o.id??``)+`</div></div><div class="g-item-metadata"></div><div class="g-item-files"><div class="g-item-files-header"><i class="icon-docs"></i> Files & links</div><div class="g-item-files-container"></div></div>`}).call(this,`AccessType`in n?n.AccessType:typeof AccessType<`u`?AccessType:void 0,`DATE_SECOND`in n?n.DATE_SECOND:typeof DATE_SECOND<`u`?DATE_SECOND:void 0,`accessLevel`in n?n.accessLevel:typeof accessLevel<`u`?accessLevel:void 0,`formatDate`in n?n.formatDate:typeof formatDate<`u`?formatDate:void 0,`formatSize`in n?n.formatSize:typeof formatSize<`u`?formatSize:void 0,`item`in n?n.item:typeof item<`u`?item:void 0,`renderMarkdown`in n?n.renderMarkdown:typeof renderMarkdown<`u`?renderMarkdown:void 0),t}ho();var TO=Y.extend({events:{"click .g-edit-item":`editItem`,"click .g-delete-item":`deleteItem`,"click .g-upload-into-item":`uploadIntoItem`},initialize:function(e){Lp(`fetch`),this.edit=e.edit||!1,this.fileEdit=e.fileEdit||!1,this.upload=e.upload||!1,e.item?(this.model=e.item,this.render()):console.error(`Implement fetch then render item`)},uploadIntoItem:function(){new eE({el:(0,U.default)(`#g-dialog-container`),parent:this.model,parentType:`item`,parentView:this}).on(`g:uploadFinished`,function(){Ev(`upload`),this.upload=!1,q.trigger(`g:alert`,{icon:`ok`,text:`Files added.`,type:`success`,timeout:4e3}),this.fileListWidget.collection.fetch(null,!0)},this).render()},editItem:function(){var e=(0,U.default)(`#g-dialog-container`);this.editItemWidget||=new iT({el:e,item:this.model,parentView:this}).off(`g:saved`).on(`g:saved`,function(){this.render()},this),this.editItemWidget.render()},deleteItem:function(){var e=this.model.get(`folderId`),t=this.model.get(`baseParentType`)+`/`+this.model.get(`baseParentId`)+`/folder/`+e;Ov({text:`Are you sure you want to delete <b>`+this.model.escape(`name`)+`</b>?`,yesText:`Delete`,escapedHtml:!0,confirmCallback:()=>{this.model.on(`g:deleted`,()=>{J.navigate(t,{trigger:!0})}).off(`g:error`).on(`g:error`,()=>{this.render(),q.trigger(`g:alert`,{icon:`cancel`,text:`Failed to delete item.`,type:`danger`,timeout:4e3})},this).destroy()}})},render:function(){return this.model.getAccessLevel(e=>{this.accessLevel=e,this.$el.html(wO({item:this.model,accessLevel:e,AccessType:cm,formatSize:V_,formatDate:B_,renderMarkdown:J_,DATE_SECOND:3})),this.fileListWidget=new hO({el:this.$(`.g-item-files-container`),item:this.model,fileEdit:this.fileEdit,upload:this.upload,parentView:this}),this.fileListWidget.once(`g:changed`,function(){this.trigger(`g:rendered`)},this),this.fileEdit=!1,this.upload=!1,this.metadataWidget=new GT({el:this.$(`.g-item-metadata`),item:this.model,accessLevel:e,parentView:this}),this.model.getRootPath(e=>{this.breadcrumbWidget=new bO({el:this.$(`.g-item-breadcrumb-container`),parentChain:e,parentView:this})}),this.edit&&=(this.editItem(),!1)}),this}},{fetchAndInit:function(e,t){var n=new ov;n.set({_id:e}).on(`g:fetched`,function(){q.trigger(`g:navigateTo`,TO,H.extend({item:n},t||{}))},this).fetch()}});function EO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=DO(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function DO(e){var t=``+e,n=OO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var OO=/["&<>]/;function kO(e){var t=``,n=e||{};return(function(e){t+=`<div class="g-body-title">Plugins</div><div class="g-plugin-list-container">`,(function(){var n=e;if(typeof n.length==`number`)for(var r=0,i=n.length;r<i;r++){var a=n[r],o=!a.value.version||a.value.version.indexOf(`0.`)===0;t=t+`<div`+(` class="g-plugin-list-item"`+EO(`data-name`,a.key,!0,!1))+`><div class="g-plugin-name">`,t=a.value.url?t+`<a`+(EO(`href`,a.value.url,!0,!1)+` target="_blank"`)+`>`+DO(a.value.name??``)+`</a>`:t+`<span>`+DO(a.value.name??``)+`</span>`,a.value.version&&(t=t+`<span class="g-plugin-version">Version `+DO(a.value.version??``)+`</span>`),o&&(t+=`<span class="g-plugin-list-item-notice g-plugin-list-item-experimental-notice" title="WARNING: this plugin is an alpha version and is subject to breaking changes; use at your own risk.">Experimental</span>`),a.value.configRoute&&(t=t+`<a`+(` class="g-plugin-config-link"`+EO(`g-route`,a.value.configRoute,!0,!1)+` title="Configure Plugin"`)+`><i class="icon-cog"></i></a>`),t=t+`</div><div class="g-plugin-description">`+DO(a.value.description??``)+`</div></div>`}else{var i=0;for(var r in n){i++;var a=n[r],o=!a.value.version||a.value.version.indexOf(`0.`)===0;t=t+`<div`+(` class="g-plugin-list-item"`+EO(`data-name`,a.key,!0,!1))+`><div class="g-plugin-name">`,t=a.value.url?t+`<a`+(EO(`href`,a.value.url,!0,!1)+` target="_blank"`)+`>`+DO(a.value.name??``)+`</a>`:t+`<span>`+DO(a.value.name??``)+`</span>`,a.value.version&&(t=t+`<span class="g-plugin-version">Version `+DO(a.value.version??``)+`</span>`),o&&(t+=`<span class="g-plugin-list-item-notice g-plugin-list-item-experimental-notice" title="WARNING: this plugin is an alpha version and is subject to breaking changes; use at your own risk.">Experimental</span>`),a.value.configRoute&&(t=t+`<a`+(` class="g-plugin-config-link"`+EO(`g-route`,a.value.configRoute,!0,!1)+` title="Configure Plugin"`)+`><i class="icon-cog"></i></a>`),t=t+`</div><div class="g-plugin-description">`+DO(a.value.description??``)+`</div></div>`}}}).call(this),t+=`</div>`}).call(this,`allPlugins`in n?n.allPlugins:typeof allPlugins<`u`?allPlugins:void 0),t}ho();var AO=Y.extend({events:{"click a.g-plugin-config-link":function(e){var t=(0,U.default)(e.currentTarget).attr(`g-route`);J.navigate(t,{trigger:!0})}},initialize:function(e){Lp(`fetch`),e.all?(this.allPlugins=e.all,this.render()):Np({url:`system/plugins`,method:`GET`}).done(e=>{this.allPlugins=e.all,this.render()}).fail(()=>{J.navigate(`/`,{trigger:!0})})},render:function(){return H.each(this.allPlugins,function(e,t){e.configRoute=Iv(t)},this),this.$el.html(kO({allPlugins:this._sortPlugins(this.allPlugins)})),this},_sortPlugins:function(e){var t=H.map(e,function(e,t){return{key:t,value:e}});return t.sort(function(e,t){return e.value.name.localeCompare(t.value.name)}),t}}),jO=im.extend({resourceName:`system/setting/collection_creation_policy`,fetchAccess:function(){return Np({url:`${this.resourceName}/access`,method:`GET`}).done(e=>(this.set(`access`,e),this.trigger(`g:accessFetched`),e)).fail(e=>{this.trigger(`g:error`,e)})}});function MO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=NO(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function NO(e){var t=``+e,n=PO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var PO=/["&<>]/;function FO(e){var t=``,n=e||{};return(function(e,n){t=t+`<div class="g-body-title">System configuration</div><div class="g-body-subtitle"><p>Note: all settings other than those referencing data in the database should be set as
|
|
2635
|
-
environment variables in the execution environment.</p></div><form class="g-settings-form" role="form"><div class="g-settings-form-container"><h4>Instance Branding</h4><div class="form-group"><label for="g-core-brand-name">Brand Name</label><input`+(` class="form-control input-sm" id="g-core-brand-name" disabled="disabled" type="text"`+MO(`value`,n[`core.brand_name`]||``,!0,!1)+` title="The brand name of the application."`)+`/></div><div class="form-group"><label for="g-core-contact-email-address">Contact email address</label><input`+(` class="form-control input-sm" id="g-core-contact-email-address" disabled="disabled" type="text"`+MO(`value`,n[`core.contact_email_address`]||``,!0,!1)+` title="The contact email address for users to obtain support with this instance."`)+`/></div><div class="form-group"><label for="g-core-banner-color">Banner Color</label><div id="g-core-banner-color-container"><input`+(` class="form-control input-sm" id="g-core-banner-color" disabled="disabled" type="color"`+MO(`value`,n[`core.banner_color`],!0,!1)+` title="The banner color of the application."`)+`/></div></div></div><div class="form-group"><label for="g-core-privacy-notice">Privacy Notice Link</label><input`+(` class="form-control input-sm" id="g-core-privacy-notice" disabled="disabled" type="text"`+MO(`value`,n[`core.privacy_notice`]||``,!0,!1)+` title="The privacy notice link."`)+`/></div><div class="form-group"><label for="g-core-cookie-lifetime">Cookie duration (days)</label><input`+(` class="form-control input-sm" id="g-core-cookie-lifetime" disabled="disabled" type="text"`+MO(`value`,n[`core.cookie_lifetime`]||``,!0,!1)+` title="How long users will stay logged in."`)+`/></div><div class="g-settings-form-container"><h4>Administrative Policy</h4><div class="form-group"><label for="g-core-registration-policy">Registration policy</label><select class="form-control input-sm" id="g-core-registration-policy" disabled="disabled"><option`+(` value="open"`+MO(`selected`,n[`core.registration_policy`]===`open`,!0,!1))+`>Open registration</option><option`+(` value="closed"`+MO(`selected`,n[`core.registration_policy`]===`closed`,!0,!1))+`>Closed registration</option><option`+(` value="approve"`+MO(`selected`,n[`core.registration_policy`]===`approve`,!0,!1))+`>Admin approval required</option></select></div><div class="form-group"><label for="g-core-email-verification">Email verification</label><select class="form-control input-sm" id="g-core-email-verification" disabled="disabled"><option`+(` value="required"`+MO(`selected`,n[`core.email_verification`]===`required`,!0,!1))+`>Required</option><option`+(` value="optional"`+MO(`selected`,n[`core.email_verification`]===`optional`,!0,!1))+`>Optional</option><option`+(` value="disabled"`+MO(`selected`,n[`core.email_verification`]===`disabled`,!0,!1))+`>Disabled</option></select></div><div class="form-group"><label for="g-core-add-to-group-policy">Allow members to be directly added to groups</label><select class="form-control input-sm" id="g-core-add-to-group-policy" disabled="disabled"><option`+(` value="never"`+MO(`selected`,n[`core.add_to_group_policy`]===`never`,!0,!1))+`>No, members must be invited and accept invitations</option><option`+(` value="noadmin"`+MO(`selected`,n[`core.add_to_group_policy`]===`noadmin`,!0,!1))+`>No, except for group administrators when enabled per group</option><option`+(` value="nomod"`+MO(`selected`,n[`core.add_to_group_policy`]===`nomod`,!0,!1))+`>No, except for group administrators and moderators when enabled per group</option><option`+(` value="yesadmin"`+MO(`selected`,n[`core.add_to_group_policy`]===`yesadmin`,!0,!1))+`>Yes, by group administrators unless disabled per group</option><option`+(` value="yesmod"`+MO(`selected`,n[`core.add_to_group_policy`]===`yesmod`,!0,!1))+`>Yes, by group administrators and moderators unless disabled per group</option></select></div><div class="g-collection-create-policy-container"><label>Collection creation policy</label><p>Allow additional users and groups to create collections.</p><input class="g-setting-switch" type="checkbox" checked="checked" data-size="mini" data-on-color="primary"/><div class="access-widget-container"></div><textarea class="hide" id="g-core-collection-create-policy">`+NO(e.stringify(n[`core.collection_create_policy`])??``)+`</textarea></div><div class="form-group"><label for="g-core-user-default-folders">Create default folders for new users</label><select class="form-control input-sm" id="g-core-user-default-folders" disabled="disabled"><option`+(` value="none"`+MO(`selected`,n[`core.user_default_folders`]===`none`,!0,!1))+`>No</option><option`+(` value="public_private"`+MO(`selected`,n[`core.user_default_folders`]===`public_private`,!0,!1))+`>Yes, "Public" and "Private"</option></select></div><div class="form-group"><div class="checkbox"><label for="g-core-api-keys"><input`+(` id="g-core-api-keys" type="checkbox"`+MO(`checked`,n[`core.api_keys`],!0,!1)+` disabled="disabled"`)+`/>Enable API keys</label></div></div><div class="form-group"><div class="checkbox"><label for="g-core-enable-password-login"><input`+(` id="g-core-enable-password-login" type="checkbox"`+MO(`checked`,n[`core.enable_password_login`],!0,!1)+` disabled="disabled"`)+`/>Enable password login</label></div></div></div><div class="g-settings-form-container"><h4>Email Creation</h4><div class="form-group"><label for="g-core-email-from-address">Email from address</label><input`+(` class="form-control input-sm" id="g-core-email-from-address" disabled="disabled" type="text"`+MO(`value`,n[`core.email_from_address`]||``,!0,!1)+` title="The email address the system will use when sending emails."`)+`/></div><div class="form-group"><label for="g-core-email-host">Email host</label><input`+(` class="form-control input-sm" id="g-core-email-host" disabled="disabled" type="text"`+MO(`value`,n[`core.email_host`]||``,!0,!1)+` title="The host email server that is shown as a link in the footer of emails."`)+`/></div></div><div class="g-settings-form-container"><h4>Email Delivery</h4><div class="form-group"><label for="g-core-smtp-host">SMTP host</label><input`+(` class="form-control input-sm" id="g-core-smtp-host" disabled="disabled" type="text"`+MO(`value`,n[`core.smtp_host`]||``,!0,!1)+` title="The hostname of the SMTP server used to send emails."`)+`/></div><div class="form-group"><label for="g-core-smtp-port">SMTP port</label><input`+(` class="form-control input-sm" id="g-core-smtp-port" disabled="disabled" type="text"`+MO(`value`,n[`core.smtp.port`]||``,!0,!1)+` title="The port number of the SMTP server used to send emails."`)+`/></div><div class="form-group"><label for="g-core-smtp-encryption">SMTP encryption</label><select class="form-control input-sm" id="g-core-smtp-encryption" disabled="disabled"><option`+(` value="none"`+MO(`selected`,n[`core.smtp.encryption`]===`none`,!0,!1))+`>None</option><option`+(` value="starttls"`+MO(`selected`,n[`core.smtp.encryption`]===`starttls`,!0,!1))+`>Use STARTTLS</option><option`+(` value="ssl"`+MO(`selected`,n[`core.smtp.encryption`]===`ssl`,!0,!1))+`>Use SSL/TLS</option></select></div><div class="form-group"><label for="g-core-smtp-username">SMTP username</label><input`+(` class="form-control input-sm" id="g-core-smtp-username" disabled="disabled" type="text"`+MO(`value`,n[`core.smtp.username`]||``,!0,!1)+` title="The username, if any, used to authenticate to the SMTP server used to send emails."`)+`/></div><div class="form-group"><label for="g-core-smtp-password">SMTP password</label><input`+(` class="form-control input-sm" id="g-core-smtp-password" disabled="disabled" type="password"`+MO(`value`,n[`core.smtp.password`]||``,!0,!1)+` title="The password, if any, used to authenticate to the SMTP server used to send emails."`)+`/></div></div><div class="panel-group" id="g-configuration-accordion"><div class="panel panel-default"><div class="panel-heading" data-toggle="collapse" data-parent="#g-configuration-accordion" data-target="#g-advanced-settings-tab"><div class="panel-title"><a><b>Advanced Settings</b></a></div></div><div class="panel-collapse collapse" id="g-advanced-settings-tab"><div class="panel-body"><p>These settings should only be changed if you are certain of what you are doing.</p><div class="form-group"><label for="g-core-server-root">Server root URL</label><input`+(` class="form-control input-sm" id="g-core-server-root" disabled="disabled" type="text"`+MO(`value`,n[`core.server_root`]||``,!0,!1)+` placeholder="Detect automatically"`)+`/></div><div class="form-group"><label for="g-core-upload-minimum-chunk-size">Upload minimum chunk size (bytes)</label><br/><span>This applies to Filesystem assetstores.</span><input`+(` class="form-control input-sm" id="g-core-upload-minimum-chunk-size" disabled="disabled" type="text"`+MO(`value`,n[`core.upload_minimum_chunk_size`]||``,!0,!1)+` title="For large files, the minimum size of all but the last chunk."`)+`/></div><div class="g-settings-form-container"><h4>CORS</h4><p>CORS (Cross-origin resource sharing) allows access from other websites.
|
|
2635
|
+
environment variables in the execution environment.</p></div><form class="g-settings-form" role="form"><div class="g-settings-form-container"><h4>Instance Branding</h4><div class="form-group"><label for="g-core-brand-name">Brand Name</label><input`+(` class="form-control input-sm" id="g-core-brand-name" disabled="disabled" type="text"`+MO(`value`,n[`core.brand_name`]||``,!0,!1)+` title="The brand name of the application."`)+`/></div><div class="form-group"><label for="g-core-contact-email-address">Contact email address</label><input`+(` class="form-control input-sm" id="g-core-contact-email-address" disabled="disabled" type="text"`+MO(`value`,n[`core.contact_email_address`]||``,!0,!1)+` title="The contact email address for users to obtain support with this instance."`)+`/></div><div class="form-group"><label for="g-core-banner-color">Banner Color</label><div id="g-core-banner-color-container"><input`+(` class="form-control input-sm" id="g-core-banner-color" disabled="disabled" type="color"`+MO(`value`,n[`core.banner_color`],!0,!1)+` title="The banner color of the application."`)+`/></div></div></div><div class="form-group"><label for="g-core-privacy-notice">Privacy Notice Link</label><input`+(` class="form-control input-sm" id="g-core-privacy-notice" disabled="disabled" type="text"`+MO(`value`,n[`core.privacy_notice`]||``,!0,!1)+` title="The privacy notice link."`)+`/></div><div class="form-group"><label for="g-core-cookie-lifetime">Cookie duration (days)</label><input`+(` class="form-control input-sm" id="g-core-cookie-lifetime" disabled="disabled" type="text"`+MO(`value`,n[`core.cookie_lifetime`]||``,!0,!1)+` title="How long users will stay logged in."`)+`/></div><div class="g-settings-form-container"><h4>Administrative Policy</h4><div class="form-group"><label for="g-core-registration-policy">Registration policy</label><select class="form-control input-sm" id="g-core-registration-policy" disabled="disabled"><option`+(` value="open"`+MO(`selected`,n[`core.registration_policy`]===`open`,!0,!1))+`>Open registration</option><option`+(` value="closed"`+MO(`selected`,n[`core.registration_policy`]===`closed`,!0,!1))+`>Closed registration</option><option`+(` value="approve"`+MO(`selected`,n[`core.registration_policy`]===`approve`,!0,!1))+`>Admin approval required</option></select></div><div class="form-group"><label for="g-core-email-verification">Email verification</label><select class="form-control input-sm" id="g-core-email-verification" disabled="disabled"><option`+(` value="required"`+MO(`selected`,n[`core.email_verification`]===`required`,!0,!1))+`>Required</option><option`+(` value="optional"`+MO(`selected`,n[`core.email_verification`]===`optional`,!0,!1))+`>Optional</option><option`+(` value="disabled"`+MO(`selected`,n[`core.email_verification`]===`disabled`,!0,!1))+`>Disabled</option></select></div><div class="form-group"><label for="g-core-add-to-group-policy">Allow members to be directly added to groups</label><select class="form-control input-sm" id="g-core-add-to-group-policy" disabled="disabled"><option`+(` value="never"`+MO(`selected`,n[`core.add_to_group_policy`]===`never`,!0,!1))+`>No, members must be invited and accept invitations</option><option`+(` value="noadmin"`+MO(`selected`,n[`core.add_to_group_policy`]===`noadmin`,!0,!1))+`>No, except for group administrators when enabled per group</option><option`+(` value="nomod"`+MO(`selected`,n[`core.add_to_group_policy`]===`nomod`,!0,!1))+`>No, except for group administrators and moderators when enabled per group</option><option`+(` value="yesadmin"`+MO(`selected`,n[`core.add_to_group_policy`]===`yesadmin`,!0,!1))+`>Yes, by group administrators unless disabled per group</option><option`+(` value="yesmod"`+MO(`selected`,n[`core.add_to_group_policy`]===`yesmod`,!0,!1))+`>Yes, by group administrators and moderators unless disabled per group</option></select></div><div class="g-collection-create-policy-container"><label>Collection creation policy</label><p>Allow additional users and groups to create collections.</p><input class="g-setting-switch" type="checkbox" checked="checked" data-size="mini" data-on-color="primary"/><div class="access-widget-container"></div><textarea class="hide" id="g-core-collection-create-policy">`+NO(e.stringify(n[`core.collection_create_policy`])??``)+`</textarea></div><div class="form-group"><label for="g-core-user-default-folders">Create default folders for new users</label><select class="form-control input-sm" id="g-core-user-default-folders" disabled="disabled"><option`+(` value="none"`+MO(`selected`,n[`core.user_default_folders`]===`none`,!0,!1))+`>No</option><option`+(` value="public_private"`+MO(`selected`,n[`core.user_default_folders`]===`public_private`,!0,!1))+`>Yes, "Public" and "Private"</option></select></div><div class="form-group"><div class="checkbox"><label for="g-core-api-keys"><input`+(` id="g-core-api-keys" type="checkbox"`+MO(`checked`,n[`core.api_keys`],!0,!1)+` disabled="disabled"`)+`/>Enable API keys</label></div></div><div class="form-group"><div class="checkbox"><label for="g-core-enable-password-login"><input`+(` id="g-core-enable-password-login" type="checkbox"`+MO(`checked`,n[`core.enable_password_login`],!0,!1)+` disabled="disabled"`)+`/>Enable password login</label></div></div><div class="form-group"><div class="checkbox"><label for="g-core-disable-anonymous-access"><input`+(` id="g-core-disable-anonymous-access" disabled="disabled" type="checkbox"`+MO(`checked`,n[`core.disable_anonymous_access`],!0,!1))+`/>Disable anonymous access</label></div></div></div><div class="g-settings-form-container"><h4>Email Creation</h4><div class="form-group"><label for="g-core-email-from-address">Email from address</label><input`+(` class="form-control input-sm" id="g-core-email-from-address" disabled="disabled" type="text"`+MO(`value`,n[`core.email_from_address`]||``,!0,!1)+` title="The email address the system will use when sending emails."`)+`/></div><div class="form-group"><label for="g-core-email-host">Email host</label><input`+(` class="form-control input-sm" id="g-core-email-host" disabled="disabled" type="text"`+MO(`value`,n[`core.email_host`]||``,!0,!1)+` title="The host email server that is shown as a link in the footer of emails."`)+`/></div></div><div class="g-settings-form-container"><h4>Email Delivery</h4><div class="form-group"><label for="g-core-smtp-host">SMTP host</label><input`+(` class="form-control input-sm" id="g-core-smtp-host" disabled="disabled" type="text"`+MO(`value`,n[`core.smtp_host`]||``,!0,!1)+` title="The hostname of the SMTP server used to send emails."`)+`/></div><div class="form-group"><label for="g-core-smtp-port">SMTP port</label><input`+(` class="form-control input-sm" id="g-core-smtp-port" disabled="disabled" type="text"`+MO(`value`,n[`core.smtp.port`]||``,!0,!1)+` title="The port number of the SMTP server used to send emails."`)+`/></div><div class="form-group"><label for="g-core-smtp-encryption">SMTP encryption</label><select class="form-control input-sm" id="g-core-smtp-encryption" disabled="disabled"><option`+(` value="none"`+MO(`selected`,n[`core.smtp.encryption`]===`none`,!0,!1))+`>None</option><option`+(` value="starttls"`+MO(`selected`,n[`core.smtp.encryption`]===`starttls`,!0,!1))+`>Use STARTTLS</option><option`+(` value="ssl"`+MO(`selected`,n[`core.smtp.encryption`]===`ssl`,!0,!1))+`>Use SSL/TLS</option></select></div><div class="form-group"><label for="g-core-smtp-username">SMTP username</label><input`+(` class="form-control input-sm" id="g-core-smtp-username" disabled="disabled" type="text"`+MO(`value`,n[`core.smtp.username`]||``,!0,!1)+` title="The username, if any, used to authenticate to the SMTP server used to send emails."`)+`/></div><div class="form-group"><label for="g-core-smtp-password">SMTP password</label><input`+(` class="form-control input-sm" id="g-core-smtp-password" disabled="disabled" type="password"`+MO(`value`,n[`core.smtp.password`]||``,!0,!1)+` title="The password, if any, used to authenticate to the SMTP server used to send emails."`)+`/></div></div><div class="panel-group" id="g-configuration-accordion"><div class="panel panel-default"><div class="panel-heading" data-toggle="collapse" data-parent="#g-configuration-accordion" data-target="#g-advanced-settings-tab"><div class="panel-title"><a><b>Advanced Settings</b></a></div></div><div class="panel-collapse collapse" id="g-advanced-settings-tab"><div class="panel-body"><p>These settings should only be changed if you are certain of what you are doing.</p><div class="form-group"><label for="g-core-server-root">Server root URL</label><input`+(` class="form-control input-sm" id="g-core-server-root" disabled="disabled" type="text"`+MO(`value`,n[`core.server_root`]||``,!0,!1)+` placeholder="Detect automatically"`)+`/></div><div class="form-group"><label for="g-core-upload-minimum-chunk-size">Upload minimum chunk size (bytes)</label><br/><span>This applies to Filesystem assetstores.</span><input`+(` class="form-control input-sm" id="g-core-upload-minimum-chunk-size" disabled="disabled" type="text"`+MO(`value`,n[`core.upload_minimum_chunk_size`]||``,!0,!1)+` title="For large files, the minimum size of all but the last chunk."`)+`/></div><div class="g-settings-form-container"><h4>CORS</h4><p>CORS (Cross-origin resource sharing) allows access from other websites.
|
|
2636
2636
|
These settings are described in
|
|
2637
|
-
detail <a href="http://girder.readthedocs.org/en/latest/security.html#cors-cross-origin-resource-sharing" target="_blank">here</a>.</p><div class="form-group"><label for="g-core-cors-allow-origin">CORS Allowed Origins</label><input`+(` class="form-control input-sm" id="g-core-cors-allow-origin" disabled="disabled" type="text"`+MO(`value`,n[`core.cors.allow_origin`]||``,!0,!1)+` title="A comma-separated list of allowed base URLs that can make cross-site requests. This may include *."`)+`/></div><div class="form-group"><label for="g-core-cors-allow-methods">CORS Allowed Methods</label><input`+(` class="form-control input-sm" id="g-core-cors-allow-methods" disabled="disabled" type="text"`+MO(`value`,n[`core.cors.allow_methods`]||``,!0,!1)+` placeholder="Default: allow all methods" title="A comma-separated list of allowed methods"`)+`/></div><div class="form-group"><label for="g-core-cors-allow-headers">CORS Allowed Headers</label><input`+(` class="form-control input-sm" id="g-core-cors-allow-headers" disabled="disabled" type="text"`+MO(`value`,n[`core.cors.allow_headers`]||``,!0,!1)+` title="A comma-separated list of allowed headers."`)+`/></div></div></div></div></div></div><p></p><div class="form-group"><button class="g-submit-settings btn btn-default btn-sm"><i class="icon-ok"></i> Save</button></div><div class="g-validation-failed-message" id="g-settings-error-message"></div></form>`}).call(this,`JSON`in n?n.JSON:typeof JSON<`u`?JSON:void 0,`settings`in n?n.settings:typeof settings<`u`?settings:void 0),t}s((e=>{(function(t,n){typeof define==`function`&&define.amd?define([`jquery`],n):e===void 0?(n(t.jquery),t.bootstrapSwitch={exports:{}}.exports):n(p())})(e,function(e){var t=n(e);function n(e){return e&&e.__esModule?e:{default:e}}var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function i(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=t.default||window.jQuery||window.$;function s(e,t){var n=e.state,r=e.size,i=e.disabled,a=e.readonly,o=e.indeterminate,s=e.inverse;return[n?`on`:`off`,r,i?`disabled`:void 0,a?`readonly`:void 0,o?`indeterminate`:void 0,s?`inverse`:void 0,t?`id-`+t:void 0].filter(function(e){return e==null})}function c(){return{state:this.$element.is(`:checked`),size:this.$element.data(`size`),animate:this.$element.data(`animate`),disabled:this.$element.is(`:disabled`),readonly:this.$element.is(`[readonly]`),indeterminate:this.$element.data(`indeterminate`),inverse:this.$element.data(`inverse`),radioAllOff:this.$element.data(`radio-all-off`),onColor:this.$element.data(`on-color`),offColor:this.$element.data(`off-color`),onText:this.$element.data(`on-text`),offText:this.$element.data(`off-text`),labelText:this.$element.data(`label-text`),handleWidth:this.$element.data(`handle-width`),labelWidth:this.$element.data(`label-width`),baseClass:this.$element.data(`base-class`),wrapperClass:this.$element.data(`wrapper-class`)}}function l(){var e=this,t=this.$on.add(this.$off).add(this.$label).css(`width`,``),n=this.options.handleWidth===`auto`?Math.round(Math.max(this.$on.width(),this.$off.width())):this.options.handleWidth;return t.width(n),this.$label.width(function(t,r){return e.options.labelWidth===`auto`?r<n?n:r:e.options.labelWidth}),this.privateHandleWidth=this.$on.outerWidth(),this.privateLabelWidth=this.$label.outerWidth(),this.$container.width(this.privateHandleWidth*2+this.privateLabelWidth),this.$wrapper.width(this.privateHandleWidth+this.privateLabelWidth)}function u(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.ope;this.$container.css(`margin-left`,function(){var n=[0,`-`+e.privateHandleWidth+`px`];return e.options.indeterminate?`-`+e.privateHandleWidth/2+`px`:t?e.options.inverse?n[1]:n[0]:e.options.inverse?n[0]:n[1]})}function d(e){return this.options.baseClass+`-`+e}function f(){var e=this,t=function(){e.setPrevOptions(),l.call(e),u.call(e),setTimeout(function(){return e.options.animate&&e.$wrapper.addClass(d.call(e,`animate`))},50)};if(this.$wrapper.is(`:visible`)){t();return}var n=window.setInterval(function(){return e.$wrapper.is(`:visible`)&&(t()||!0)&&window.clearInterval(n)},50)}function p(){var e=this;return this.$element.on({"setPreviousOptions.bootstrapSwitch":function(){return e.setPrevOptions()},"previousState.bootstrapSwitch":function(){e.options=e.prevOptions,e.options.indeterminate&&e.$wrapper.addClass(d.call(e,`indeterminate`)),e.$element.prop(`checked`,e.options.state).trigger(`change.bootstrapSwitch`,!0)},"change.bootstrapSwitch":function(t,n){t.preventDefault(),t.stopImmediatePropagation();var r=e.$element.is(`:checked`);u.call(e,r),r!==e.options.state&&(e.options.state=r,e.$wrapper.toggleClass(d.call(e,`off`)).toggleClass(d.call(e,`on`)),n||(e.$element.is(`:radio`)&&o(`[name="`+e.$element.attr(`name`)+`"]`).not(e.$element).prop(`checked`,!1).trigger(`change.bootstrapSwitch`,!0),e.$element.trigger(`switchChange.bootstrapSwitch`,[r])))},"focus.bootstrapSwitch":function(t){t.preventDefault(),e.$wrapper.addClass(d.call(e,`focused`))},"blur.bootstrapSwitch":function(t){t.preventDefault(),e.$wrapper.removeClass(d.call(e,`focused`))},"keydown.bootstrapSwitch":function(t){!t.which||e.options.disabled||e.options.readonly||(t.which===37||t.which===39)&&(t.preventDefault(),t.stopImmediatePropagation(),e.state(t.which===39))}})}function m(){var e=this;return this.$on.on(`click.bootstrapSwitch`,function(t){return t.preventDefault(),t.stopPropagation(),e.state(!1),e.$element.trigger(`focus.bootstrapSwitch`)}),this.$off.on(`click.bootstrapSwitch`,function(t){return t.preventDefault(),t.stopPropagation(),e.state(!0),e.$element.trigger(`focus.bootstrapSwitch`)})}function h(){var e=this,t=void 0,n=void 0;this.$label.on({click:function(e){e.stopPropagation()},"mousedown.bootstrapSwitch touchstart.bootstrapSwitch":function(n){t||e.options.disabled||e.options.readonly||(n.preventDefault(),n.stopPropagation(),t=(n.pageX||n.originalEvent.touches[0].pageX)-parseInt(e.$container.css(`margin-left`),10),e.options.animate&&e.$wrapper.removeClass(d.call(e,`animate`)),e.$element.trigger(`focus.bootstrapSwitch`))},"mousemove.bootstrapSwitch touchmove.bootstrapSwitch":function(r){if(t!=null){var i=(r.pageX||r.originalEvent.touches[0].pageX)-t;r.preventDefault(),!(i<-e.privateHandleWidth||i>0)&&(n=i,e.$container.css(`margin-left`,n+`px`))}},"mouseup.bootstrapSwitch touchend.bootstrapSwitch":function(r){if(t){if(r.preventDefault(),e.options.animate&&e.$wrapper.addClass(d.call(e,`animate`)),n){var i=n>-(e.privateHandleWidth/2);n=!1,e.state(e.options.inverse?!i:i)}else e.state(!e.options.state);t=!1}},"mouseleave.bootstrapSwitch":function(){e.$label.trigger(`mouseup.bootstrapSwitch`)}})}function g(){var e=this,t=this.$element.closest(`label`);t.on(`click`,function(n){n.preventDefault(),n.stopImmediatePropagation(),n.target===t[0]&&e.toggleState()})}function v(){function e(){return o(this).data(`bootstrap-switch`)}function t(){return o(this).bootstrapSwitch(`state`,this.checked)}var n=this.$element.closest(`form`);n.data(`bootstrap-switch`)||n.on(`reset.bootstrapSwitch`,function(){window.setTimeout(function(){n.find(`input`).filter(e).each(t)},1)}).data(`bootstrap-switch`,!0)}function y(e){var t=this;return o.isArray(e)?e.map(function(e){return d.call(t,e)}):[d.call(this,e)]}var b=function(){function e(t){var n=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};i(this,e),this.$element=o(t),this.options=o.extend({},o.fn.bootstrapSwitch.defaults,c.call(this),r),this.prevOptions={},this.$wrapper=o(`<div>`,{class:function(){return s(n.options,n.$element.attr(`id`)).map(function(e){return d.call(n,e)}).concat([n.options.baseClass],y.call(n,n.options.wrapperClass)).join(` `)}}),this.$container=o(`<div>`,{class:d.call(this,`container`)}),this.$on=o(`<span>`,{html:this.options.onText,class:d.call(this,`handle-on`)+` `+d.call(this,this.options.onColor)}),this.$off=o(`<span>`,{html:this.options.offText,class:d.call(this,`handle-off`)+` `+d.call(this,this.options.offColor)}),this.$label=o(`<span>`,{html:this.options.labelText,class:d.call(this,`label`)}),this.$element.on(`init.bootstrapSwitch`,function(){return n.options.onInit(t)}),this.$element.on(`switchChange.bootstrapSwitch`,function(){var e=[...arguments];n.options.onSwitchChange.apply(t,e)===!1&&(n.$element.is(`:radio`)?o(`[name="`+n.$element.attr(`name`)+`"]`).trigger(`previousState.bootstrapSwitch`,!0):n.$element.trigger(`previousState.bootstrapSwitch`,!0))}),this.$container=this.$element.wrap(this.$container).parent(),this.$wrapper=this.$container.wrap(this.$wrapper).parent(),this.$element.before(this.options.inverse?this.$off:this.$on).before(this.$label).before(this.options.inverse?this.$on:this.$off),this.options.indeterminate&&this.$element.prop(`indeterminate`,!0),f.call(this),p.call(this),m.call(this),h.call(this),v.call(this),g.call(this),this.$element.trigger(`init.bootstrapSwitch`,this.options.state)}return a(e,[{key:`setPrevOptions`,value:function(){this.prevOptions=r({},this.options)}},{key:`state`,value:function(e,t){return e===void 0?this.options.state:this.options.disabled||this.options.readonly||this.options.state&&!this.options.radioAllOff&&this.$element.is(`:radio`)?this.$element:(this.$element.is(`:radio`)?o(`[name="`+this.$element.attr(`name`)+`"]`).trigger(`setPreviousOptions.bootstrapSwitch`):this.$element.trigger(`setPreviousOptions.bootstrapSwitch`),this.options.indeterminate&&this.indeterminate(!1),this.$element.prop(`checked`,!!e).trigger(`change.bootstrapSwitch`,t),this.$element)}},{key:`toggleState`,value:function(e){return this.options.disabled||this.options.readonly?this.$element:this.options.indeterminate?(this.indeterminate(!1),this.state(!0)):this.$element.prop(`checked`,!this.options.state).trigger(`change.bootstrapSwitch`,e)}},{key:`size`,value:function(e){return e===void 0?this.options.size:(this.options.size!=null&&this.$wrapper.removeClass(d.call(this,this.options.size)),e&&this.$wrapper.addClass(d.call(this,e)),l.call(this),u.call(this),this.options.size=e,this.$element)}},{key:`animate`,value:function(e){return e===void 0?this.options.animate:this.options.animate===!!e?this.$element:this.toggleAnimate()}},{key:`toggleAnimate`,value:function(){return this.options.animate=!this.options.animate,this.$wrapper.toggleClass(d.call(this,`animate`)),this.$element}},{key:`disabled`,value:function(e){return e===void 0?this.options.disabled:this.options.disabled===!!e?this.$element:this.toggleDisabled()}},{key:`toggleDisabled`,value:function(){return this.options.disabled=!this.options.disabled,this.$element.prop(`disabled`,this.options.disabled),this.$wrapper.toggleClass(d.call(this,`disabled`)),this.$element}},{key:`readonly`,value:function(e){return e===void 0?this.options.readonly:this.options.readonly===!!e?this.$element:this.toggleReadonly()}},{key:`toggleReadonly`,value:function(){return this.options.readonly=!this.options.readonly,this.$element.prop(`readonly`,this.options.readonly),this.$wrapper.toggleClass(d.call(this,`readonly`)),this.$element}},{key:`indeterminate`,value:function(e){return e===void 0?this.options.indeterminate:this.options.indeterminate===!!e?this.$element:this.toggleIndeterminate()}},{key:`toggleIndeterminate`,value:function(){return this.options.indeterminate=!this.options.indeterminate,this.$element.prop(`indeterminate`,this.options.indeterminate),this.$wrapper.toggleClass(d.call(this,`indeterminate`)),u.call(this),this.$element}},{key:`inverse`,value:function(e){return e===void 0?this.options.inverse:this.options.inverse===!!e?this.$element:this.toggleInverse()}},{key:`toggleInverse`,value:function(){this.$wrapper.toggleClass(d.call(this,`inverse`));var e=this.$on.clone(!0),t=this.$off.clone(!0);return this.$on.replaceWith(t),this.$off.replaceWith(e),this.$on=t,this.$off=e,this.options.inverse=!this.options.inverse,this.$element}},{key:`onColor`,value:function(e){return e===void 0?this.options.onColor:(this.options.onColor&&this.$on.removeClass(d.call(this,this.options.onColor)),this.$on.addClass(d.call(this,e)),this.options.onColor=e,this.$element)}},{key:`offColor`,value:function(e){return e===void 0?this.options.offColor:(this.options.offColor&&this.$off.removeClass(d.call(this,this.options.offColor)),this.$off.addClass(d.call(this,e)),this.options.offColor=e,this.$element)}},{key:`onText`,value:function(e){return e===void 0?this.options.onText:(this.$on.html(e),l.call(this),u.call(this),this.options.onText=e,this.$element)}},{key:`offText`,value:function(e){return e===void 0?this.options.offText:(this.$off.html(e),l.call(this),u.call(this),this.options.offText=e,this.$element)}},{key:`labelText`,value:function(e){return e===void 0?this.options.labelText:(this.$label.html(e),l.call(this),this.options.labelText=e,this.$element)}},{key:`handleWidth`,value:function(e){return e===void 0?this.options.handleWidth:(this.options.handleWidth=e,l.call(this),u.call(this),this.$element)}},{key:`labelWidth`,value:function(e){return e===void 0?this.options.labelWidth:(this.options.labelWidth=e,l.call(this),u.call(this),this.$element)}},{key:`baseClass`,value:function(){return this.options.baseClass}},{key:`wrapperClass`,value:function(e){if(e===void 0)return this.options.wrapperClass;var t=e||o.fn.bootstrapSwitch.defaults.wrapperClass;return this.$wrapper.removeClass(y.call(this,this.options.wrapperClass).join(` `)),this.$wrapper.addClass(y.call(this,t).join(` `)),this.options.wrapperClass=t,this.$element}},{key:`radioAllOff`,value:function(e){if(e===void 0)return this.options.radioAllOff;var t=!!e;return this.options.radioAllOff===t||(this.options.radioAllOff=t),this.$element}},{key:`onInit`,value:function(e){return e===void 0?this.options.onInit:(this.options.onInit=e||o.fn.bootstrapSwitch.defaults.onInit,this.$element)}},{key:`onSwitchChange`,value:function(e){return e===void 0?this.options.onSwitchChange:(this.options.onSwitchChange=e||o.fn.bootstrapSwitch.defaults.onSwitchChange,this.$element)}},{key:`destroy`,value:function(){var e=this.$element.closest(`form`);return e.length&&e.off(`reset.bootstrapSwitch`).removeData(`bootstrap-switch`),this.$container.children().not(this.$element).remove(),this.$element.unwrap().unwrap().off(`.bootstrapSwitch`).removeData(`bootstrap-switch`),this.$element}}]),e}();function x(e){var t=[...arguments].slice(1);function n(n,r){var i=o(r),a=i.data(`bootstrap-switch`),s=a||new b(r,e);return a||i.data(`bootstrap-switch`,s),typeof e==`string`?s[e].apply(s,t):n}return Array.prototype.reduce.call(this,n,this)}o.fn.bootstrapSwitch=x,o.fn.bootstrapSwitch.Constructor=b,o.fn.bootstrapSwitch.defaults={state:!0,size:null,animate:!0,disabled:!1,readonly:!1,indeterminate:!1,inverse:!1,radioAllOff:!1,onColor:`primary`,offColor:`default`,onText:`ON`,offText:`OFF`,labelText:` `,handleWidth:`auto`,labelWidth:`auto`,baseClass:`bootstrap-switch`,wrapperClass:`wrapper`,onInit:function(){},onSwitchChange:function(){}}})}))(),ho();var IO=Y.extend({events:{"submit .g-settings-form":function(e){e.preventDefault(),this.$(`.g-submit-settings`).girderEnable(!1),this.$(`#g-settings-error-message`).empty(),this.$(`#g-core-collection-create-policy`).val(JSON.stringify(this._covertCollectionCreationPolicy()));var t=H.map(this.settingsKeys,e=>{let t=this.$(`#g-`+e.replace(/[_.]/g,`-`));return H.contains([`core.api_keys`,`core.enable_password_login`],e)?{key:e,value:t.is(`:checked`)}:{key:e,value:t.val()||null}});Np({method:`PUT`,url:`system/setting`,data:{list:JSON.stringify(t)},error:null}).done(()=>{this.$(`.g-submit-settings`).girderEnable(!0),q.trigger(`g:alert`,{icon:`ok`,text:`Settings saved.`,type:`success`,timeout:4e3})}).fail(e=>{this.$(`.g-submit-settings`).girderEnable(!0),this.$(`#g-settings-error-message`).text(e.responseJSON.message)})}},initialize:function(){Lp(`fetch`);var e=[`core.api_keys`,`core.contact_email_address`,`core.brand_name`,`core.banner_color`,`core.privacy_notice`,`core.cookie_lifetime`,`core.enable_password_login`,`core.email_from_address`,`core.email_host`,`core.registration_policy`,`core.email_verification`,`core.server_root`,`core.smtp_host`,`core.smtp.port`,`core.smtp.encryption`,`core.smtp.username`,`core.smtp.password`,`core.upload_minimum_chunk_size`,`core.cors.allow_origin`,`core.cors.allow_methods`,`core.cors.allow_headers`,`core.add_to_group_policy`,`core.collection_create_policy`,`core.user_default_folders`];this.settingsKeys=e,Np({url:`system/setting`,method:`GET`,data:{list:JSON.stringify(e)}}).done(e=>{this.settings=e,this.render()})},render:function(){this.$el.html(FO({settings:this.settings,JSON:window.JSON}));var e=this.settings[`core.collection_create_policy`]?this.settings[`core.collection_create_policy`].open:!1;return this.$(`.g-setting-switch`).bootstrapSwitch().bootstrapSwitch(`state`,e).off(`switchChange.bootstrapSwitch`).on(`switchChange.bootstrapSwitch`,(e,t)=>{t?this._renderCollectionCreationPolicyAccessWidget():(this.accessWidget.destroy(),this.accessWidget=null)}),e&&this._renderCollectionCreationPolicyAccessWidget(),this},_renderCollectionCreationPolicyAccessWidget:function(){var e=new jO;this.accessWidget=new Rw({el:this.$(`.g-collection-create-policy-container .access-widget-container`),modelType:`collection_creation_policy`,model:e,parentView:this,modal:!1,hideRecurseOption:!0,hideSaveButton:!0,hidePrivacyEditor:!0,hideAccessType:!0,noAccessFlag:!0})},_covertCollectionCreationPolicy:function(){var e=null;if(this.$(`.g-setting-switch`).bootstrapSwitch(`state`)&&this.accessWidget){e={open:this.$(`.g-setting-switch`).bootstrapSwitch(`state`)};var t=this.accessWidget.getAccessList();H.each(H.keys(t),n=>{e[n]=H.pluck(t[n],`id`)})}else e=this.settings[`core.collection_create_policy`],e.open=!1;return e}});function LO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=RO(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function RO(e){var t=``+e,n=zO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var zO=/["&<>]/;function BO(e){var t=``,n=e||{};return(function(e,n){t+=`<div class="modal-dialog"><div class="modal-content"><form class="modal-form" id="g-api-key-edit-form" role="form"><div class="modal-header"><button class="close" data-dismiss="modal" aria-hidden="true" type="button">×</button><h4 class="modal-title">`,t+=e?`Edit API key`:`Create new API key`,t=t+`</h4></div><div class="modal-body"><div class="form-group"><label class="control-label" for="g-api-key-name">Name</label><input class="input-sm form-control" id="g-api-key-name" type="text" placeholder="Enter a name for this API key"/></div><div class="form-group"><label class="control-label" for="g-api-key-token-duration">Token duration in days (optional)</label><input class="input-sm form-control" id="g-api-key-token-duration" placeholder="Enter number of days"/></div><label class="control-label">Permission scope for this key</label><div class="g-scope-selection-container"><div class="radio"><label><input`+(` id="g-scope-mode-full" type="radio" name="scopeType" value="full"`+LO(`checked`,!0,!0,!1))+`/>Allow all actions on behalf of my user</label></div><div class="radio"><label><input id="g-scope-mode-custom" type="radio" name="scopeType" value="custom"/>Only allow specific permissions for this key:</label></div>`,(function(){var e=n;if(typeof e.length==`number`)for(var r=0,i=e.length;r<i;r++){var a=e[r];t=t+`<div class="checkbox disabled"><label`+(` class="g-custom-scope-description"`+LO(`title`,a.description,!0,!1))+`><input`+(` class="g-custom-scope-checkbox" type="checkbox"`+LO(`value`,a.id,!0,!1)+LO(`disabled`,!0,!0,!1))+`/><span>`+RO(a.name??``)+`</span></label></div>`}else{var i=0;for(var r in e){i++;var a=e[r];t=t+`<div class="checkbox disabled"><label`+(` class="g-custom-scope-description"`+LO(`title`,a.description,!0,!1))+`><input`+(` class="g-custom-scope-checkbox" type="checkbox"`+LO(`value`,a.id,!0,!1)+LO(`disabled`,!0,!0,!1))+`/><span>`+RO(a.name??``)+`</span></label></div>`}}}).call(this),t+=`</div><div class="g-validation-failed-message"></div></div><div class="modal-footer"><a class="btn btn-small btn-default" data-dismiss="modal">Cancel</a><button class="g-save-api-key btn btn-small btn-primary" type="submit">`,t+=e?`<i class="icon-edit"></i> Save`:`<i class="icon-plus-squared"></i> Create`,t+=`</button></div></form></div></div>`}).call(this,`apiKey`in n?n.apiKey:typeof apiKey<`u`?apiKey:void 0,`tokenScopes`in n?n.tokenScopes:typeof tokenScopes<`u`?tokenScopes:void 0),t}ho();var VO=Y.extend({events:{"submit #g-api-key-edit-form":function(e){e.preventDefault();var t={name:this.$(`#g-api-key-name`).val(),tokenDuration:this.$(`#g-api-key-token-duration`).val(),scope:null,targetUserId:this.targetUserId};this._getSelectedScopeMode()===`custom`&&(t.scope=H.map(this.$(`.g-custom-scope-checkbox:checked`),function(e){return(0,U.default)(e).val()})),this.saveModel(this.model,t),this.$(`button.g-save-api-key`).girderEnable(!1),this.$(`.g-validation-failed-message`).text(``)},"change .g-scope-selection-container .radio input":function(){var e=this._getSelectedScopeMode();e===`full`?this.$(`.g-custom-scope-checkbox`).girderEnable(!1).parent().parent().girderEnable(!1):e===`custom`&&this.$(`.g-custom-scope-checkbox`).girderEnable(!0).parent().parent().girderEnable(!0)}},initialize:function(e){this.model=e.model||null,this.scopeInfo=null,this.targetUserId=e.parentView.model.id,this._shouldRender=!1,Np({url:`token/scopes`}).done(e=>{this.scopeInfo=e,this._shouldRender&&(this._shouldRender=!1,this.render())})},render:function(){if(!this.scopeInfo){this._shouldRender=!0;return}let e=this.scopeInfo.custom;Xp().get(`admin`)&&(e=e.concat(this.scopeInfo.adminCustom));var t=this.$el.html(BO({apiKey:this.model,tokenScopes:e})).girderModal(this).on(`shown.bs.modal`,()=>{this.$(`#g-api-key-name`).trigger(`focus`)}).on(`ready.girder.modal`,()=>{this.model&&(this.$(`#g-api-key-name`).val(this.model.get(`name`)),this.$(`#g-api-key-token-duration`).val(this.model.get(`tokenDuration`)||``),this.model.get(`scope`)&&(this.$(`#g-scope-mode-custom`).attr(`checked`,`checked`).trigger(`change`),this.$(`.g-custom-scope-checkbox`).girderEnable(!0),H.each(this.model.get(`scope`),function(e){this.$(`.g-custom-scope-checkbox[value="`+e+`"]`).attr(`checked`,`checked`)},this)))});return t.trigger(U.default.Event(`ready.girder.modal`,{relatedTarget:t})),this.$(`#g-api-key-name`).trigger(`focus`),this},saveModel:function(e,t){e||=new am,e.set(t),e.once(`g:saved`,function(){this.$el.modal(`hide`),this.trigger(`g:saved`,e)},this).off(`g:error`,null,this).on(`g:error`,function(e){this.$(`.g-validation-failed-message`).text(e.responseJSON.message),this.$(`button.g-save-api-key`).girderEnable(!0)},this).save()},_getSelectedScopeMode:function(){return this.$(`.g-scope-selection-container .radio input:checked`).attr(`value`)}});function HO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=UO(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function UO(e){var t=``+e,n=WO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var WO=/["&<>]/;function GO(e){var t=``,n=e||{};return(function(e,n){e.length===0?t+=`<div class="g-api-keys-empty-message">You have no existing API keys. Click the button below to create one.</div>`:(t+=`<div class="g-api-key-list-header">Your API keys</div><table class="g-api-key-table"><thead><tr><th col="name">Name</th><th col="key">Key</th><th col="scope">Scope</th><th col="active">Active</th><th col="tokenDuration">Token duration</th><th col="lastUse">Last used</th><th col="actions">Actions</th></tr></thead><tbody>`,(function(){var r=e;if(typeof r.length==`number`)for(var i=0,a=r.length;i<a;i++){var o=r[i];if(t=t+`<tr`+(` class="g-api-key-container"`+HO(`api-key-id`,o.id,!0,!1)+HO(`cid`,o.cid,!0,!1))+`><td col="name">`+UO(o.get(`name`)??``)+`</td><td col="key"><a`+(` class="g-show-api-key" data-toggle="popover"`+HO(`data-content`,o.get(`key`),!0,!1))+`>show</a></td><td col="scope">`,o.get(`scope`)?t+=`<span>Custom scopes</span>`:t+=`<span>Full access</span>`,t=t+`</td><td col="active">`+UO(o.get(`active`)?`Yes`:`No`)+`</td><td col="tokenDuration">`,o.get(`tokenDuration`)?t=t+`<span>`+UO(o.get(`tokenDuration`)??``)+` days</span>`:t+=`<span>Default</span>`,t+=`</td><td col="lastUse">`,o.get(`lastUse`)){var s=n(o.get(`lastUse`));t=t+`<span`+HO(`title`,s,!0,!1)+`>`+UO(s.fromNow()??``)+`</span>`}else t+=`<span>Never</span>`;t+=`</td><td col="actions"><button class="btn btn-sm btn-primary g-api-key-edit" title="Edit"><i class="icon-edit"></i></button>`,o.get(`active`)?t+=`<button class="btn btn-sm btn-warning g-api-key-toggle-active" title="Deactivate"><i class="icon-minus-circled"></i></button>`:t+=`<button class="btn btn-sm btn-success g-api-key-toggle-active" title="Activate"><i class="icon-plus-circled"></i></button>`,t+=`<button class="btn btn-sm btn-danger g-api-key-delete" title="Delete key"><i class="icon-cancel"></i></button></td></tr>`}else{var a=0;for(var i in r){a++;var o=r[i];if(t=t+`<tr`+(` class="g-api-key-container"`+HO(`api-key-id`,o.id,!0,!1)+HO(`cid`,o.cid,!0,!1))+`><td col="name">`+UO(o.get(`name`)??``)+`</td><td col="key"><a`+(` class="g-show-api-key" data-toggle="popover"`+HO(`data-content`,o.get(`key`),!0,!1))+`>show</a></td><td col="scope">`,o.get(`scope`)?t+=`<span>Custom scopes</span>`:t+=`<span>Full access</span>`,t=t+`</td><td col="active">`+UO(o.get(`active`)?`Yes`:`No`)+`</td><td col="tokenDuration">`,o.get(`tokenDuration`)?t=t+`<span>`+UO(o.get(`tokenDuration`)??``)+` days</span>`:t+=`<span>Default</span>`,t+=`</td><td col="lastUse">`,o.get(`lastUse`)){var s=n(o.get(`lastUse`));t=t+`<span`+HO(`title`,s,!0,!1)+`>`+UO(s.fromNow()??``)+`</span>`}else t+=`<span>Never</span>`;t+=`</td><td col="actions"><button class="btn btn-sm btn-primary g-api-key-edit" title="Edit"><i class="icon-edit"></i></button>`,o.get(`active`)?t+=`<button class="btn btn-sm btn-warning g-api-key-toggle-active" title="Deactivate"><i class="icon-minus-circled"></i></button>`:t+=`<button class="btn btn-sm btn-success g-api-key-toggle-active" title="Activate"><i class="icon-plus-circled"></i></button>`,t+=`<button class="btn btn-sm btn-danger g-api-key-delete" title="Delete key"><i class="icon-cancel"></i></button></td></tr>`}}}).call(this),t+=`</tbody></table>`),t+=`<div class="g-paginate-container"></div><div class="g-api-key-list-bottom-buttons"><button class="btn btn-default g-api-key-new">Create new key</button></div>`}).call(this,`apiKeys`in n?n.apiKeys:typeof apiKeys<`u`?apiKeys:void 0,`moment`in n?n.moment:typeof moment<`u`?moment:void 0),t}var KO=Y.extend({events:{"click .g-api-key-toggle-active":function(e){var t=this._getModelFromEvent(e),n=()=>{t.once(`g:setActive`,function(){this.render()},this).setActive(!t.get(`active`))};t.get(`active`)?Ov({text:`Deactivating this API key will delete any existing tokens created with it, and will not be usable until it is activated again. Are you sure you want to deactivate it?`,yesText:`Yes`,yesClass:`btn-warning`,escapedHtml:!0,confirmCallback:n}):n()},"click .g-api-key-new":function(){this._renderEditWidget()},"click .g-api-key-edit":function(e){var t=this._getModelFromEvent(e);this._renderEditWidget(t)},"click .g-api-key-delete":function(e){var t=this._getModelFromEvent(e);Ov({text:`Are you sure you want to delete the API key <b>`+t.escape(`name`)+`</b>? Any client applications using this key will no longer be able to authenticate.`,yesText:`Delete`,escapedHtml:!0,confirmCallback:()=>{t.on(`g:deleted`,function(){q.trigger(`g:alert`,{icon:`ok`,text:`API key deleted.`,type:`success`,timeout:3e3}),this.render()},this).destroy()}})}},initialize:function(e){this.model=e.user,this.fetched=!1,this.collection=new $_,this.collection.on(`g:changed`,function(){this.fetched=!0,this.render(),this.trigger(`g:changed`)},this).fetch({userId:this.model.id}),this.paginateWidget=new BE({collection:this.collection,parentView:this})},render:function(){if(this.fetched)return this.$el.html(GO({apiKeys:this.collection.toArray(),moment:W})),this.$(`.g-show-api-key`).popover({container:this.$(`.g-api-key-table`),placement:`top`}),this.paginateWidget.setElement(this.$(`.g-paginate-container`)).render(),this},_getModelFromEvent:function(e){var t=(0,U.default)(e.currentTarget).parents(`.g-api-key-container`).attr(`cid`);return this.collection.get(t)},_renderEditWidget:function(e){this.editApiKeyWidget||=new VO({el:(0,U.default)(`#g-dialog-container`),parentView:this}).on(`g:saved`,function(e){this.collection.get(e.cid)||this.collection.add(e),this.render()},this),this.editApiKeyWidget.model=e||null,this.editApiKeyWidget.render()}}),qO=s(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),JO=s((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),YO=s((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),XO=s(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),ZO=s(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),QO=s((e=>{var t=JO().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),$O=s((e=>{var t=JO().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),ek=s((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),tk=s((e=>{var t=YO(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),nk=s((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),rk=s((e=>{var t=nk();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),ik=s(((e,t)=>{var n=rk();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),ak=s((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),ok=s((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
|
|
2637
|
+
detail <a href="http://girder.readthedocs.org/en/latest/security.html#cors-cross-origin-resource-sharing" target="_blank">here</a>.</p><div class="form-group"><label for="g-core-cors-allow-origin">CORS Allowed Origins</label><input`+(` class="form-control input-sm" id="g-core-cors-allow-origin" disabled="disabled" type="text"`+MO(`value`,n[`core.cors.allow_origin`]||``,!0,!1)+` title="A comma-separated list of allowed base URLs that can make cross-site requests. This may include *."`)+`/></div><div class="form-group"><label for="g-core-cors-allow-methods">CORS Allowed Methods</label><input`+(` class="form-control input-sm" id="g-core-cors-allow-methods" disabled="disabled" type="text"`+MO(`value`,n[`core.cors.allow_methods`]||``,!0,!1)+` placeholder="Default: allow all methods" title="A comma-separated list of allowed methods"`)+`/></div><div class="form-group"><label for="g-core-cors-allow-headers">CORS Allowed Headers</label><input`+(` class="form-control input-sm" id="g-core-cors-allow-headers" disabled="disabled" type="text"`+MO(`value`,n[`core.cors.allow_headers`]||``,!0,!1)+` title="A comma-separated list of allowed headers."`)+`/></div></div></div></div></div></div><p></p><div class="form-group"><button class="g-submit-settings btn btn-default btn-sm"><i class="icon-ok"></i> Save</button></div><div class="g-validation-failed-message" id="g-settings-error-message"></div></form>`}).call(this,`JSON`in n?n.JSON:typeof JSON<`u`?JSON:void 0,`settings`in n?n.settings:typeof settings<`u`?settings:void 0),t}s((e=>{(function(t,n){typeof define==`function`&&define.amd?define([`jquery`],n):e===void 0?(n(t.jquery),t.bootstrapSwitch={exports:{}}.exports):n(p())})(e,function(e){var t=n(e);function n(e){return e&&e.__esModule?e:{default:e}}var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function i(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=t.default||window.jQuery||window.$;function s(e,t){var n=e.state,r=e.size,i=e.disabled,a=e.readonly,o=e.indeterminate,s=e.inverse;return[n?`on`:`off`,r,i?`disabled`:void 0,a?`readonly`:void 0,o?`indeterminate`:void 0,s?`inverse`:void 0,t?`id-`+t:void 0].filter(function(e){return e==null})}function c(){return{state:this.$element.is(`:checked`),size:this.$element.data(`size`),animate:this.$element.data(`animate`),disabled:this.$element.is(`:disabled`),readonly:this.$element.is(`[readonly]`),indeterminate:this.$element.data(`indeterminate`),inverse:this.$element.data(`inverse`),radioAllOff:this.$element.data(`radio-all-off`),onColor:this.$element.data(`on-color`),offColor:this.$element.data(`off-color`),onText:this.$element.data(`on-text`),offText:this.$element.data(`off-text`),labelText:this.$element.data(`label-text`),handleWidth:this.$element.data(`handle-width`),labelWidth:this.$element.data(`label-width`),baseClass:this.$element.data(`base-class`),wrapperClass:this.$element.data(`wrapper-class`)}}function l(){var e=this,t=this.$on.add(this.$off).add(this.$label).css(`width`,``),n=this.options.handleWidth===`auto`?Math.round(Math.max(this.$on.width(),this.$off.width())):this.options.handleWidth;return t.width(n),this.$label.width(function(t,r){return e.options.labelWidth===`auto`?r<n?n:r:e.options.labelWidth}),this.privateHandleWidth=this.$on.outerWidth(),this.privateLabelWidth=this.$label.outerWidth(),this.$container.width(this.privateHandleWidth*2+this.privateLabelWidth),this.$wrapper.width(this.privateHandleWidth+this.privateLabelWidth)}function u(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.ope;this.$container.css(`margin-left`,function(){var n=[0,`-`+e.privateHandleWidth+`px`];return e.options.indeterminate?`-`+e.privateHandleWidth/2+`px`:t?e.options.inverse?n[1]:n[0]:e.options.inverse?n[0]:n[1]})}function d(e){return this.options.baseClass+`-`+e}function f(){var e=this,t=function(){e.setPrevOptions(),l.call(e),u.call(e),setTimeout(function(){return e.options.animate&&e.$wrapper.addClass(d.call(e,`animate`))},50)};if(this.$wrapper.is(`:visible`)){t();return}var n=window.setInterval(function(){return e.$wrapper.is(`:visible`)&&(t()||!0)&&window.clearInterval(n)},50)}function p(){var e=this;return this.$element.on({"setPreviousOptions.bootstrapSwitch":function(){return e.setPrevOptions()},"previousState.bootstrapSwitch":function(){e.options=e.prevOptions,e.options.indeterminate&&e.$wrapper.addClass(d.call(e,`indeterminate`)),e.$element.prop(`checked`,e.options.state).trigger(`change.bootstrapSwitch`,!0)},"change.bootstrapSwitch":function(t,n){t.preventDefault(),t.stopImmediatePropagation();var r=e.$element.is(`:checked`);u.call(e,r),r!==e.options.state&&(e.options.state=r,e.$wrapper.toggleClass(d.call(e,`off`)).toggleClass(d.call(e,`on`)),n||(e.$element.is(`:radio`)&&o(`[name="`+e.$element.attr(`name`)+`"]`).not(e.$element).prop(`checked`,!1).trigger(`change.bootstrapSwitch`,!0),e.$element.trigger(`switchChange.bootstrapSwitch`,[r])))},"focus.bootstrapSwitch":function(t){t.preventDefault(),e.$wrapper.addClass(d.call(e,`focused`))},"blur.bootstrapSwitch":function(t){t.preventDefault(),e.$wrapper.removeClass(d.call(e,`focused`))},"keydown.bootstrapSwitch":function(t){!t.which||e.options.disabled||e.options.readonly||(t.which===37||t.which===39)&&(t.preventDefault(),t.stopImmediatePropagation(),e.state(t.which===39))}})}function m(){var e=this;return this.$on.on(`click.bootstrapSwitch`,function(t){return t.preventDefault(),t.stopPropagation(),e.state(!1),e.$element.trigger(`focus.bootstrapSwitch`)}),this.$off.on(`click.bootstrapSwitch`,function(t){return t.preventDefault(),t.stopPropagation(),e.state(!0),e.$element.trigger(`focus.bootstrapSwitch`)})}function h(){var e=this,t=void 0,n=void 0;this.$label.on({click:function(e){e.stopPropagation()},"mousedown.bootstrapSwitch touchstart.bootstrapSwitch":function(n){t||e.options.disabled||e.options.readonly||(n.preventDefault(),n.stopPropagation(),t=(n.pageX||n.originalEvent.touches[0].pageX)-parseInt(e.$container.css(`margin-left`),10),e.options.animate&&e.$wrapper.removeClass(d.call(e,`animate`)),e.$element.trigger(`focus.bootstrapSwitch`))},"mousemove.bootstrapSwitch touchmove.bootstrapSwitch":function(r){if(t!=null){var i=(r.pageX||r.originalEvent.touches[0].pageX)-t;r.preventDefault(),!(i<-e.privateHandleWidth||i>0)&&(n=i,e.$container.css(`margin-left`,n+`px`))}},"mouseup.bootstrapSwitch touchend.bootstrapSwitch":function(r){if(t){if(r.preventDefault(),e.options.animate&&e.$wrapper.addClass(d.call(e,`animate`)),n){var i=n>-(e.privateHandleWidth/2);n=!1,e.state(e.options.inverse?!i:i)}else e.state(!e.options.state);t=!1}},"mouseleave.bootstrapSwitch":function(){e.$label.trigger(`mouseup.bootstrapSwitch`)}})}function g(){var e=this,t=this.$element.closest(`label`);t.on(`click`,function(n){n.preventDefault(),n.stopImmediatePropagation(),n.target===t[0]&&e.toggleState()})}function v(){function e(){return o(this).data(`bootstrap-switch`)}function t(){return o(this).bootstrapSwitch(`state`,this.checked)}var n=this.$element.closest(`form`);n.data(`bootstrap-switch`)||n.on(`reset.bootstrapSwitch`,function(){window.setTimeout(function(){n.find(`input`).filter(e).each(t)},1)}).data(`bootstrap-switch`,!0)}function y(e){var t=this;return o.isArray(e)?e.map(function(e){return d.call(t,e)}):[d.call(this,e)]}var b=function(){function e(t){var n=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};i(this,e),this.$element=o(t),this.options=o.extend({},o.fn.bootstrapSwitch.defaults,c.call(this),r),this.prevOptions={},this.$wrapper=o(`<div>`,{class:function(){return s(n.options,n.$element.attr(`id`)).map(function(e){return d.call(n,e)}).concat([n.options.baseClass],y.call(n,n.options.wrapperClass)).join(` `)}}),this.$container=o(`<div>`,{class:d.call(this,`container`)}),this.$on=o(`<span>`,{html:this.options.onText,class:d.call(this,`handle-on`)+` `+d.call(this,this.options.onColor)}),this.$off=o(`<span>`,{html:this.options.offText,class:d.call(this,`handle-off`)+` `+d.call(this,this.options.offColor)}),this.$label=o(`<span>`,{html:this.options.labelText,class:d.call(this,`label`)}),this.$element.on(`init.bootstrapSwitch`,function(){return n.options.onInit(t)}),this.$element.on(`switchChange.bootstrapSwitch`,function(){var e=[...arguments];n.options.onSwitchChange.apply(t,e)===!1&&(n.$element.is(`:radio`)?o(`[name="`+n.$element.attr(`name`)+`"]`).trigger(`previousState.bootstrapSwitch`,!0):n.$element.trigger(`previousState.bootstrapSwitch`,!0))}),this.$container=this.$element.wrap(this.$container).parent(),this.$wrapper=this.$container.wrap(this.$wrapper).parent(),this.$element.before(this.options.inverse?this.$off:this.$on).before(this.$label).before(this.options.inverse?this.$on:this.$off),this.options.indeterminate&&this.$element.prop(`indeterminate`,!0),f.call(this),p.call(this),m.call(this),h.call(this),v.call(this),g.call(this),this.$element.trigger(`init.bootstrapSwitch`,this.options.state)}return a(e,[{key:`setPrevOptions`,value:function(){this.prevOptions=r({},this.options)}},{key:`state`,value:function(e,t){return e===void 0?this.options.state:this.options.disabled||this.options.readonly||this.options.state&&!this.options.radioAllOff&&this.$element.is(`:radio`)?this.$element:(this.$element.is(`:radio`)?o(`[name="`+this.$element.attr(`name`)+`"]`).trigger(`setPreviousOptions.bootstrapSwitch`):this.$element.trigger(`setPreviousOptions.bootstrapSwitch`),this.options.indeterminate&&this.indeterminate(!1),this.$element.prop(`checked`,!!e).trigger(`change.bootstrapSwitch`,t),this.$element)}},{key:`toggleState`,value:function(e){return this.options.disabled||this.options.readonly?this.$element:this.options.indeterminate?(this.indeterminate(!1),this.state(!0)):this.$element.prop(`checked`,!this.options.state).trigger(`change.bootstrapSwitch`,e)}},{key:`size`,value:function(e){return e===void 0?this.options.size:(this.options.size!=null&&this.$wrapper.removeClass(d.call(this,this.options.size)),e&&this.$wrapper.addClass(d.call(this,e)),l.call(this),u.call(this),this.options.size=e,this.$element)}},{key:`animate`,value:function(e){return e===void 0?this.options.animate:this.options.animate===!!e?this.$element:this.toggleAnimate()}},{key:`toggleAnimate`,value:function(){return this.options.animate=!this.options.animate,this.$wrapper.toggleClass(d.call(this,`animate`)),this.$element}},{key:`disabled`,value:function(e){return e===void 0?this.options.disabled:this.options.disabled===!!e?this.$element:this.toggleDisabled()}},{key:`toggleDisabled`,value:function(){return this.options.disabled=!this.options.disabled,this.$element.prop(`disabled`,this.options.disabled),this.$wrapper.toggleClass(d.call(this,`disabled`)),this.$element}},{key:`readonly`,value:function(e){return e===void 0?this.options.readonly:this.options.readonly===!!e?this.$element:this.toggleReadonly()}},{key:`toggleReadonly`,value:function(){return this.options.readonly=!this.options.readonly,this.$element.prop(`readonly`,this.options.readonly),this.$wrapper.toggleClass(d.call(this,`readonly`)),this.$element}},{key:`indeterminate`,value:function(e){return e===void 0?this.options.indeterminate:this.options.indeterminate===!!e?this.$element:this.toggleIndeterminate()}},{key:`toggleIndeterminate`,value:function(){return this.options.indeterminate=!this.options.indeterminate,this.$element.prop(`indeterminate`,this.options.indeterminate),this.$wrapper.toggleClass(d.call(this,`indeterminate`)),u.call(this),this.$element}},{key:`inverse`,value:function(e){return e===void 0?this.options.inverse:this.options.inverse===!!e?this.$element:this.toggleInverse()}},{key:`toggleInverse`,value:function(){this.$wrapper.toggleClass(d.call(this,`inverse`));var e=this.$on.clone(!0),t=this.$off.clone(!0);return this.$on.replaceWith(t),this.$off.replaceWith(e),this.$on=t,this.$off=e,this.options.inverse=!this.options.inverse,this.$element}},{key:`onColor`,value:function(e){return e===void 0?this.options.onColor:(this.options.onColor&&this.$on.removeClass(d.call(this,this.options.onColor)),this.$on.addClass(d.call(this,e)),this.options.onColor=e,this.$element)}},{key:`offColor`,value:function(e){return e===void 0?this.options.offColor:(this.options.offColor&&this.$off.removeClass(d.call(this,this.options.offColor)),this.$off.addClass(d.call(this,e)),this.options.offColor=e,this.$element)}},{key:`onText`,value:function(e){return e===void 0?this.options.onText:(this.$on.html(e),l.call(this),u.call(this),this.options.onText=e,this.$element)}},{key:`offText`,value:function(e){return e===void 0?this.options.offText:(this.$off.html(e),l.call(this),u.call(this),this.options.offText=e,this.$element)}},{key:`labelText`,value:function(e){return e===void 0?this.options.labelText:(this.$label.html(e),l.call(this),this.options.labelText=e,this.$element)}},{key:`handleWidth`,value:function(e){return e===void 0?this.options.handleWidth:(this.options.handleWidth=e,l.call(this),u.call(this),this.$element)}},{key:`labelWidth`,value:function(e){return e===void 0?this.options.labelWidth:(this.options.labelWidth=e,l.call(this),u.call(this),this.$element)}},{key:`baseClass`,value:function(){return this.options.baseClass}},{key:`wrapperClass`,value:function(e){if(e===void 0)return this.options.wrapperClass;var t=e||o.fn.bootstrapSwitch.defaults.wrapperClass;return this.$wrapper.removeClass(y.call(this,this.options.wrapperClass).join(` `)),this.$wrapper.addClass(y.call(this,t).join(` `)),this.options.wrapperClass=t,this.$element}},{key:`radioAllOff`,value:function(e){if(e===void 0)return this.options.radioAllOff;var t=!!e;return this.options.radioAllOff===t||(this.options.radioAllOff=t),this.$element}},{key:`onInit`,value:function(e){return e===void 0?this.options.onInit:(this.options.onInit=e||o.fn.bootstrapSwitch.defaults.onInit,this.$element)}},{key:`onSwitchChange`,value:function(e){return e===void 0?this.options.onSwitchChange:(this.options.onSwitchChange=e||o.fn.bootstrapSwitch.defaults.onSwitchChange,this.$element)}},{key:`destroy`,value:function(){var e=this.$element.closest(`form`);return e.length&&e.off(`reset.bootstrapSwitch`).removeData(`bootstrap-switch`),this.$container.children().not(this.$element).remove(),this.$element.unwrap().unwrap().off(`.bootstrapSwitch`).removeData(`bootstrap-switch`),this.$element}}]),e}();function x(e){var t=[...arguments].slice(1);function n(n,r){var i=o(r),a=i.data(`bootstrap-switch`),s=a||new b(r,e);return a||i.data(`bootstrap-switch`,s),typeof e==`string`?s[e].apply(s,t):n}return Array.prototype.reduce.call(this,n,this)}o.fn.bootstrapSwitch=x,o.fn.bootstrapSwitch.Constructor=b,o.fn.bootstrapSwitch.defaults={state:!0,size:null,animate:!0,disabled:!1,readonly:!1,indeterminate:!1,inverse:!1,radioAllOff:!1,onColor:`primary`,offColor:`default`,onText:`ON`,offText:`OFF`,labelText:` `,handleWidth:`auto`,labelWidth:`auto`,baseClass:`bootstrap-switch`,wrapperClass:`wrapper`,onInit:function(){},onSwitchChange:function(){}}})}))(),ho();var IO=Y.extend({events:{"submit .g-settings-form":function(e){e.preventDefault(),this.$(`.g-submit-settings`).girderEnable(!1),this.$(`#g-settings-error-message`).empty(),this.$(`#g-core-collection-create-policy`).val(JSON.stringify(this._covertCollectionCreationPolicy()));var t=H.map(this.settingsKeys,e=>{let t=this.$(`#g-`+e.replace(/[_.]/g,`-`));return H.contains([`core.api_keys`,`core.enable_password_login`,`core.disable_anonymous_access`],e)?{key:e,value:t.is(`:checked`)}:{key:e,value:t.val()||null}});Np({method:`PUT`,url:`system/setting`,data:{list:JSON.stringify(t)},error:null}).done(()=>{this.$(`.g-submit-settings`).girderEnable(!0),q.trigger(`g:alert`,{icon:`ok`,text:`Settings saved.`,type:`success`,timeout:4e3})}).fail(e=>{this.$(`.g-submit-settings`).girderEnable(!0),this.$(`#g-settings-error-message`).text(e.responseJSON.message)})}},initialize:function(){Lp(`fetch`);var e=[`core.api_keys`,`core.contact_email_address`,`core.brand_name`,`core.banner_color`,`core.privacy_notice`,`core.cookie_lifetime`,`core.disable_anonymous_access`,`core.enable_password_login`,`core.email_from_address`,`core.email_host`,`core.registration_policy`,`core.email_verification`,`core.server_root`,`core.smtp_host`,`core.smtp.port`,`core.smtp.encryption`,`core.smtp.username`,`core.smtp.password`,`core.upload_minimum_chunk_size`,`core.cors.allow_origin`,`core.cors.allow_methods`,`core.cors.allow_headers`,`core.add_to_group_policy`,`core.collection_create_policy`,`core.user_default_folders`];this.settingsKeys=e,Np({url:`system/setting`,method:`GET`,data:{list:JSON.stringify(e)}}).done(e=>{this.settings=e,this.render()})},render:function(){this.$el.html(FO({settings:this.settings,JSON:window.JSON}));var e=this.settings[`core.collection_create_policy`]?this.settings[`core.collection_create_policy`].open:!1;return this.$(`.g-setting-switch`).bootstrapSwitch().bootstrapSwitch(`state`,e).off(`switchChange.bootstrapSwitch`).on(`switchChange.bootstrapSwitch`,(e,t)=>{t?this._renderCollectionCreationPolicyAccessWidget():(this.accessWidget.destroy(),this.accessWidget=null)}),e&&this._renderCollectionCreationPolicyAccessWidget(),this},_renderCollectionCreationPolicyAccessWidget:function(){var e=new jO;this.accessWidget=new Rw({el:this.$(`.g-collection-create-policy-container .access-widget-container`),modelType:`collection_creation_policy`,model:e,parentView:this,modal:!1,hideRecurseOption:!0,hideSaveButton:!0,hidePrivacyEditor:!0,hideAccessType:!0,noAccessFlag:!0})},_covertCollectionCreationPolicy:function(){var e=null;if(this.$(`.g-setting-switch`).bootstrapSwitch(`state`)&&this.accessWidget){e={open:this.$(`.g-setting-switch`).bootstrapSwitch(`state`)};var t=this.accessWidget.getAccessList();H.each(H.keys(t),n=>{e[n]=H.pluck(t[n],`id`)})}else e=this.settings[`core.collection_create_policy`],e.open=!1;return e}});function LO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=RO(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function RO(e){var t=``+e,n=zO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var zO=/["&<>]/;function BO(e){var t=``,n=e||{};return(function(e,n){t+=`<div class="modal-dialog"><div class="modal-content"><form class="modal-form" id="g-api-key-edit-form" role="form"><div class="modal-header"><button class="close" data-dismiss="modal" aria-hidden="true" type="button">×</button><h4 class="modal-title">`,t+=e?`Edit API key`:`Create new API key`,t=t+`</h4></div><div class="modal-body"><div class="form-group"><label class="control-label" for="g-api-key-name">Name</label><input class="input-sm form-control" id="g-api-key-name" type="text" placeholder="Enter a name for this API key"/></div><div class="form-group"><label class="control-label" for="g-api-key-token-duration">Token duration in days (optional)</label><input class="input-sm form-control" id="g-api-key-token-duration" placeholder="Enter number of days"/></div><label class="control-label">Permission scope for this key</label><div class="g-scope-selection-container"><div class="radio"><label><input`+(` id="g-scope-mode-full" type="radio" name="scopeType" value="full"`+LO(`checked`,!0,!0,!1))+`/>Allow all actions on behalf of my user</label></div><div class="radio"><label><input id="g-scope-mode-custom" type="radio" name="scopeType" value="custom"/>Only allow specific permissions for this key:</label></div>`,(function(){var e=n;if(typeof e.length==`number`)for(var r=0,i=e.length;r<i;r++){var a=e[r];t=t+`<div class="checkbox disabled"><label`+(` class="g-custom-scope-description"`+LO(`title`,a.description,!0,!1))+`><input`+(` class="g-custom-scope-checkbox" type="checkbox"`+LO(`value`,a.id,!0,!1)+LO(`disabled`,!0,!0,!1))+`/><span>`+RO(a.name??``)+`</span></label></div>`}else{var i=0;for(var r in e){i++;var a=e[r];t=t+`<div class="checkbox disabled"><label`+(` class="g-custom-scope-description"`+LO(`title`,a.description,!0,!1))+`><input`+(` class="g-custom-scope-checkbox" type="checkbox"`+LO(`value`,a.id,!0,!1)+LO(`disabled`,!0,!0,!1))+`/><span>`+RO(a.name??``)+`</span></label></div>`}}}).call(this),t+=`</div><div class="g-validation-failed-message"></div></div><div class="modal-footer"><a class="btn btn-small btn-default" data-dismiss="modal">Cancel</a><button class="g-save-api-key btn btn-small btn-primary" type="submit">`,t+=e?`<i class="icon-edit"></i> Save`:`<i class="icon-plus-squared"></i> Create`,t+=`</button></div></form></div></div>`}).call(this,`apiKey`in n?n.apiKey:typeof apiKey<`u`?apiKey:void 0,`tokenScopes`in n?n.tokenScopes:typeof tokenScopes<`u`?tokenScopes:void 0),t}ho();var VO=Y.extend({events:{"submit #g-api-key-edit-form":function(e){e.preventDefault();var t={name:this.$(`#g-api-key-name`).val(),tokenDuration:this.$(`#g-api-key-token-duration`).val(),scope:null,targetUserId:this.targetUserId};this._getSelectedScopeMode()===`custom`&&(t.scope=H.map(this.$(`.g-custom-scope-checkbox:checked`),function(e){return(0,U.default)(e).val()})),this.saveModel(this.model,t),this.$(`button.g-save-api-key`).girderEnable(!1),this.$(`.g-validation-failed-message`).text(``)},"change .g-scope-selection-container .radio input":function(){var e=this._getSelectedScopeMode();e===`full`?this.$(`.g-custom-scope-checkbox`).girderEnable(!1).parent().parent().girderEnable(!1):e===`custom`&&this.$(`.g-custom-scope-checkbox`).girderEnable(!0).parent().parent().girderEnable(!0)}},initialize:function(e){this.model=e.model||null,this.scopeInfo=null,this.targetUserId=e.parentView.model.id,this._shouldRender=!1,Np({url:`token/scopes`}).done(e=>{this.scopeInfo=e,this._shouldRender&&(this._shouldRender=!1,this.render())})},render:function(){if(!this.scopeInfo){this._shouldRender=!0;return}let e=this.scopeInfo.custom;Xp().get(`admin`)&&(e=e.concat(this.scopeInfo.adminCustom));var t=this.$el.html(BO({apiKey:this.model,tokenScopes:e})).girderModal(this).on(`shown.bs.modal`,()=>{this.$(`#g-api-key-name`).trigger(`focus`)}).on(`ready.girder.modal`,()=>{this.model&&(this.$(`#g-api-key-name`).val(this.model.get(`name`)),this.$(`#g-api-key-token-duration`).val(this.model.get(`tokenDuration`)||``),this.model.get(`scope`)&&(this.$(`#g-scope-mode-custom`).attr(`checked`,`checked`).trigger(`change`),this.$(`.g-custom-scope-checkbox`).girderEnable(!0),H.each(this.model.get(`scope`),function(e){this.$(`.g-custom-scope-checkbox[value="`+e+`"]`).attr(`checked`,`checked`)},this)))});return t.trigger(U.default.Event(`ready.girder.modal`,{relatedTarget:t})),this.$(`#g-api-key-name`).trigger(`focus`),this},saveModel:function(e,t){e||=new am,e.set(t),e.once(`g:saved`,function(){this.$el.modal(`hide`),this.trigger(`g:saved`,e)},this).off(`g:error`,null,this).on(`g:error`,function(e){this.$(`.g-validation-failed-message`).text(e.responseJSON.message),this.$(`button.g-save-api-key`).girderEnable(!0)},this).save()},_getSelectedScopeMode:function(){return this.$(`.g-scope-selection-container .radio input:checked`).attr(`value`)}});function HO(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=UO(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function UO(e){var t=``+e,n=WO.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var WO=/["&<>]/;function GO(e){var t=``,n=e||{};return(function(e,n){e.length===0?t+=`<div class="g-api-keys-empty-message">You have no existing API keys. Click the button below to create one.</div>`:(t+=`<div class="g-api-key-list-header">Your API keys</div><table class="g-api-key-table"><thead><tr><th col="name">Name</th><th col="key">Key</th><th col="scope">Scope</th><th col="active">Active</th><th col="tokenDuration">Token duration</th><th col="lastUse">Last used</th><th col="actions">Actions</th></tr></thead><tbody>`,(function(){var r=e;if(typeof r.length==`number`)for(var i=0,a=r.length;i<a;i++){var o=r[i];if(t=t+`<tr`+(` class="g-api-key-container"`+HO(`api-key-id`,o.id,!0,!1)+HO(`cid`,o.cid,!0,!1))+`><td col="name">`+UO(o.get(`name`)??``)+`</td><td col="key"><a`+(` class="g-show-api-key" data-toggle="popover"`+HO(`data-content`,o.get(`key`),!0,!1))+`>show</a></td><td col="scope">`,o.get(`scope`)?t+=`<span>Custom scopes</span>`:t+=`<span>Full access</span>`,t=t+`</td><td col="active">`+UO(o.get(`active`)?`Yes`:`No`)+`</td><td col="tokenDuration">`,o.get(`tokenDuration`)?t=t+`<span>`+UO(o.get(`tokenDuration`)??``)+` days</span>`:t+=`<span>Default</span>`,t+=`</td><td col="lastUse">`,o.get(`lastUse`)){var s=n(o.get(`lastUse`));t=t+`<span`+HO(`title`,s,!0,!1)+`>`+UO(s.fromNow()??``)+`</span>`}else t+=`<span>Never</span>`;t+=`</td><td col="actions"><button class="btn btn-sm btn-primary g-api-key-edit" title="Edit"><i class="icon-edit"></i></button>`,o.get(`active`)?t+=`<button class="btn btn-sm btn-warning g-api-key-toggle-active" title="Deactivate"><i class="icon-minus-circled"></i></button>`:t+=`<button class="btn btn-sm btn-success g-api-key-toggle-active" title="Activate"><i class="icon-plus-circled"></i></button>`,t+=`<button class="btn btn-sm btn-danger g-api-key-delete" title="Delete key"><i class="icon-cancel"></i></button></td></tr>`}else{var a=0;for(var i in r){a++;var o=r[i];if(t=t+`<tr`+(` class="g-api-key-container"`+HO(`api-key-id`,o.id,!0,!1)+HO(`cid`,o.cid,!0,!1))+`><td col="name">`+UO(o.get(`name`)??``)+`</td><td col="key"><a`+(` class="g-show-api-key" data-toggle="popover"`+HO(`data-content`,o.get(`key`),!0,!1))+`>show</a></td><td col="scope">`,o.get(`scope`)?t+=`<span>Custom scopes</span>`:t+=`<span>Full access</span>`,t=t+`</td><td col="active">`+UO(o.get(`active`)?`Yes`:`No`)+`</td><td col="tokenDuration">`,o.get(`tokenDuration`)?t=t+`<span>`+UO(o.get(`tokenDuration`)??``)+` days</span>`:t+=`<span>Default</span>`,t+=`</td><td col="lastUse">`,o.get(`lastUse`)){var s=n(o.get(`lastUse`));t=t+`<span`+HO(`title`,s,!0,!1)+`>`+UO(s.fromNow()??``)+`</span>`}else t+=`<span>Never</span>`;t+=`</td><td col="actions"><button class="btn btn-sm btn-primary g-api-key-edit" title="Edit"><i class="icon-edit"></i></button>`,o.get(`active`)?t+=`<button class="btn btn-sm btn-warning g-api-key-toggle-active" title="Deactivate"><i class="icon-minus-circled"></i></button>`:t+=`<button class="btn btn-sm btn-success g-api-key-toggle-active" title="Activate"><i class="icon-plus-circled"></i></button>`,t+=`<button class="btn btn-sm btn-danger g-api-key-delete" title="Delete key"><i class="icon-cancel"></i></button></td></tr>`}}}).call(this),t+=`</tbody></table>`),t+=`<div class="g-paginate-container"></div><div class="g-api-key-list-bottom-buttons"><button class="btn btn-default g-api-key-new">Create new key</button></div>`}).call(this,`apiKeys`in n?n.apiKeys:typeof apiKeys<`u`?apiKeys:void 0,`moment`in n?n.moment:typeof moment<`u`?moment:void 0),t}var KO=Y.extend({events:{"click .g-api-key-toggle-active":function(e){var t=this._getModelFromEvent(e),n=()=>{t.once(`g:setActive`,function(){this.render()},this).setActive(!t.get(`active`))};t.get(`active`)?Ov({text:`Deactivating this API key will delete any existing tokens created with it, and will not be usable until it is activated again. Are you sure you want to deactivate it?`,yesText:`Yes`,yesClass:`btn-warning`,escapedHtml:!0,confirmCallback:n}):n()},"click .g-api-key-new":function(){this._renderEditWidget()},"click .g-api-key-edit":function(e){var t=this._getModelFromEvent(e);this._renderEditWidget(t)},"click .g-api-key-delete":function(e){var t=this._getModelFromEvent(e);Ov({text:`Are you sure you want to delete the API key <b>`+t.escape(`name`)+`</b>? Any client applications using this key will no longer be able to authenticate.`,yesText:`Delete`,escapedHtml:!0,confirmCallback:()=>{t.on(`g:deleted`,function(){q.trigger(`g:alert`,{icon:`ok`,text:`API key deleted.`,type:`success`,timeout:3e3}),this.render()},this).destroy()}})}},initialize:function(e){this.model=e.user,this.fetched=!1,this.collection=new $_,this.collection.on(`g:changed`,function(){this.fetched=!0,this.render(),this.trigger(`g:changed`)},this).fetch({userId:this.model.id}),this.paginateWidget=new BE({collection:this.collection,parentView:this})},render:function(){if(this.fetched)return this.$el.html(GO({apiKeys:this.collection.toArray(),moment:W})),this.$(`.g-show-api-key`).popover({container:this.$(`.g-api-key-table`),placement:`top`}),this.paginateWidget.setElement(this.$(`.g-paginate-container`)).render(),this},_getModelFromEvent:function(e){var t=(0,U.default)(e.currentTarget).parents(`.g-api-key-container`).attr(`cid`);return this.collection.get(t)},_renderEditWidget:function(e){this.editApiKeyWidget||=new VO({el:(0,U.default)(`#g-dialog-container`),parentView:this}).on(`g:saved`,function(e){this.collection.get(e.cid)||this.collection.add(e),this.render()},this),this.editApiKeyWidget.model=e||null,this.editApiKeyWidget.render()}}),qO=s(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),JO=s((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),YO=s((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),XO=s(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),ZO=s(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),QO=s((e=>{var t=JO().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),$O=s((e=>{var t=JO().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),ek=s((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),tk=s((e=>{var t=YO(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),nk=s((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),rk=s((e=>{var t=nk();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),ik=s(((e,t)=>{var n=rk();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),ak=s((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),ok=s((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
|
|
2638
2638
|
]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^[0-9]+$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),sk=s((e=>{var t=ak(),n=ok();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),ck=s((e=>{var t=JO(),n=tk(),r=YO(),i=sk(),a=ak(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),lk=s((e=>{var t=JO(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),uk=s(((e,t)=>{var n=sk();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),dk=s(((e,t)=>{var n=sk(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),fk=s(((e,t)=>{var n=sk();function r(e){this.mode=n.BYTE,this.data=typeof e==`string`?new TextEncoder().encode(e):new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),pk=s(((e,t)=>{var n=sk(),r=JO();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
|
|
2639
2639
|
Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),mk=s(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),hk=s((e=>{var t=sk(),n=uk(),r=dk(),i=fk(),a=pk(),o=ok(),s=JO(),c=mk();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
|
|
2640
2640
|
Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=h(m(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),gk=s((e=>{var t=JO(),n=YO(),r=XO(),i=ZO(),a=QO(),o=$O(),s=ek(),c=tk(),l=ik(),u=ck(),d=lk(),f=sk(),p=hk();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function g(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function v(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function y(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function b(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function x(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return S(a,e,n)}function S(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),v=Array(o),y=0,b=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=b.slice(h,h+t),v[e]=m.encode(g[e]),h+=t,y=Math.max(y,t)}let x=new Uint8Array(i),S=0,C,w;for(C=0;C<y;C++)for(w=0;w<o;w++)C<g[w].length&&(x[S++]=g[w][C]);for(C=0;C<p;C++)for(w=0;w<o;w++)x[S++]=v[w][C];return x}function C(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`
|
|
@@ -2656,4 +2656,4 @@ tokens created with a given key will last before expiration. If you do not speci
|
|
|
2656
2656
|
the default expiration for user login sessions will be used.
|
|
2657
2657
|
</div><div class="g-api-keys-list-container"></div></div></div><div class="tab-pane" id="g-account-tab-otp"><div class="g-user-settings-container"><div class="g-account-otp-info-text">Two-factor authentication adds another level of authentication to your account log-in.
|
|
2658
2658
|
</div><div class="g-account-otp-container"></div></div></div></div>`}).call(this,`getCurrentUser`in n?n.getCurrentUser:typeof getCurrentUser<`u`?getCurrentUser:void 0,`isCurrentUser`in n?n.isCurrentUser:typeof isCurrentUser<`u`?isCurrentUser:void 0,`temporaryToken`in n?n.temporaryToken:typeof temporaryToken<`u`?temporaryToken:void 0,`user`in n?n.user:typeof user<`u`?user:void 0),t}ho();var OA=Y.extend({events:{"submit #g-user-info-form":function(e){e.preventDefault(),this.$(`#g-user-info-error-msg`).empty();var t={email:this.$(`#g-email`).val(),firstName:this.$(`#g-firstName`).val(),lastName:this.$(`#g-lastName`).val()};this.$(`#g-admin`).length>0&&(t.admin=this.$(`#g-admin`).is(`:checked`)),this.user.set(t),this.user.off(`g:error`).on(`g:error`,function(e){var t=e.responseJSON.message;this.$(`#g-`+e.responseJSON.field).trigger(`focus`),this.$(`#g-user-info-error-msg`).text(t)},this).off(`g:saved`).on(`g:saved`,function(){q.trigger(`g:alert`,{icon:`ok`,text:`Info saved.`,type:`success`,timeout:4e3})},this).save()},"submit #g-password-change-form":function(e){if(e.preventDefault(),this.$(`#g-password-change-error-msg`).empty(),this.$(`#g-password-new`).val()!==this.$(`#g-password-retype`).val()){this.$(`#g-password-change-error-msg`).text(`Passwords do not match, try again.`),this.$(`#g-password-retype,#g-password-new`).val(``),this.$(`#g-password-new`).trigger(`focus`);return}this.user.off(`g:error`).on(`g:error`,function(e){var t=e.responseJSON.message;this.$(`#g-password-change-error-msg`).text(t)},this).off(`g:passwordChanged`).on(`g:passwordChanged`,function(){q.trigger(`g:alert`,{icon:`ok`,text:`Password changed.`,type:`success`,timeout:4e3}),this.$(`#g-password-old,#g-password-new,#g-password-retype`).val(``)},this),this.isCurrentUser?this.user.changePassword(this.$(`#g-password-old`).val(),this.$(`#g-password-new`).val()):this.user.adminChangePassword(this.$(`#g-password-new`).val())}},initialize:function(e){if(this.tab=e.tab||`info`,this.user=e.user||Xp(),this.isCurrentUser=Xp()&&e.user.id===Xp().id,this.model=this.user,this.temporary=e.temporary,!this.user||this.user.getAccessLevel()<cm.WRITE){J.navigate(``,{trigger:!0});return}Lp(`fetch`),this.apiKeyListWidget=new KO({user:this.user,parentView:this}),this.userOtpManagementWidget=new CA({user:this.user,parentView:this}),this.render()},render:function(){if(Xp()===null){J.navigate(``,{trigger:!0});return}return this.$el.html(DA({user:this.model,isCurrentUser:this.isCurrentUser,getCurrentUser:Xp,temporaryToken:this.temporary})),H.each((0,U.default)(`.g-account-tabs>li>a`),function(e){var t=(0,U.default)(e);t.tab().on(`shown.bs.tab`,e=>{this.tab=(0,U.default)(e.currentTarget).attr(`name`),J.navigate(`useraccount/`+this.model.id+`/`+this.tab),this.tab===`apikeys`?this.apiKeyListWidget.setElement(this.$(`.g-api-keys-list-container`)).render():this.tab===`otp`&&this.userOtpManagementWidget.setElement(this.$(`.g-account-otp-container`)).render()}),t.attr(`name`)===this.tab&&t.tab(`show`)},this),this}},{fetchAndInit:function(e,t){var n=new Kp;n.set({_id:e}).on(`g:fetched`,function(){q.trigger(`g:navigateTo`,OA,{user:n,tab:t})},this).on(`g:error`,function(){J.navigate(``,{trigger:!0})},this).fetch()}});ho();var kA=Y.extend({events:{"click .g-page-next:not(.disabled)":function(){this._updateHasNextPage(!0)},"click .g-page-prev:not(.disabled)":function(){this._updateHasPreviousPage(!0)}},initialize:function(e){this._type=e.type,this._query=e.query,this._mode=e.mode,this._limit=e.limit,this._offset=0,this._currentPage=0,this._hasNextPage=!1,this._hasPreviousPage=!1,this.results=null,this._updateHasNextPage()},render:function(){return this.$el.html(zE({collection:this})),this.$(`.g-page-next`).girderEnable(this._hasNextPage),this.$(`.g-page-prev`).girderEnable(this._hasPreviousPage),!this._hasNextPage&&!this._hasPreviousPage?this.$el.hide():this.$el.show(),this},pageNum:function(){return this._currentPage},_updateHasPreviousPage:function(e=!1){return this._currentPage&&e?this._fetchPreviousPage(e).done(()=>this._fetchPreviousPage()):this._fetchPreviousPage()},_updateHasNextPage:function(e=!1){return e?this._fetchNextPage(e).done(()=>this._fetchNextPage()):this._fetchNextPage()},_fetchPreviousPage:function(e=!1){var t=this._limit*(this._currentPage-1);if(t<0)this._hasPreviousPage=!1,this.render();else return this._fetch(t).done(t=>{var n=t[this._type];n.length?(this._hasPreviousPage=!0,e&&(this.results=n,this.trigger(`g:changed`),this._currentPage--,this._updateHasNextPage())):this._hasPreviousPage=!1,this.render()})},_fetchNextPage:function(e=!1){var t=this._limit*(this._currentPage+1);return this._fetch(t).done(t=>{var n=t[this._type];n.length?(this._hasNextPage=!0,e&&(this.results=n,this.trigger(`g:changed`),this._currentPage++,this._updateHasPreviousPage())):this._hasNextPage=!1,this.render()})},_fetch:function(e){return Np({url:`resource/search`,data:{q:this._query,mode:this._mode,types:JSON.stringify(H.intersection([this._type],Sy.getModeTypes(this._mode))),limit:this._limit,offset:e}})}});function AA(e){var t=``+e,n=jA.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var jA=/["&<>]/;function MA(e){var t=``,n=e||{};return(function(e){t=t+`<div class="g-search-results-header-container"><div class="g-search-results-title-container"><i class="g-search-results-title-element icon-search"></i><span class="g-search-results-title g-search-results-title-element">Results : `+AA(e??``)+`</span></div><div class="g-search-results-header"><div class="g-search-results-advance-search"></div></div></div><div class="g-search-results-container"></div><div class="g-search-pending"><i class="icon-spin4 animate-spin"></i></div><div class="g-search-no-results" style="display: none;"><i class="icon-block"></i> No results found</div>`}).call(this,`query`in n?n.query:typeof query<`u`?query:void 0),t}function NA(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=LA(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function PA(e,t){return Array.isArray(e)?FA(e,t):e&&typeof e==`object`?IA(e):e||``}function FA(e,t){for(var n,r=``,i=``,a=Array.isArray(t),o=0;o<e.length;o++)(n=PA(e[o]))&&(a&&t[o]&&(n=LA(n)),r=r+i+n,i=` `);return r}function IA(e){var t=``,n=``;for(var r in e)r&&e[r]&&RA.call(e,r)&&(t=t+n+r,n=` `);return t}function LA(e){var t=``+e,n=zA.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var RA=Object.prototype.hasOwnProperty,zA=/["&<>]/;function BA(e){var t=``,n=e||{};return(function(e,n,r,i){t=t+`<div class="g-search-result-type-header-container"><i`+NA(`class`,PA([`g-search-result-type-header`,`g-search-result-type-icon`,`icon-${n}`],[!1,!1,!0]),!1,!1)+`></i><div class="g-search-result-type-header g-search-results-type-title">`+LA(e??``)+`</div></div><ul class="g-search-results-type">`,(function(){var e=r;if(typeof e.length==`number`)for(var n=0,a=e.length;n<a;n++){var o=e[n];t=t+`<li class="g-search-result"><a`+NA(`href`,`#${i}/${o._id}`,!0,!1)+`>`,i===`user`?t=t+LA(o.firstName??``)+` `+LA(o.lastName??``)+` (`+LA(o.login??``)+`)`:t+=LA(o.name??``),t+=`</a></li>`}else{var a=0;for(var n in e){a++;var o=e[n];t=t+`<li class="g-search-result"><a`+NA(`href`,`#${i}/${o._id}`,!0,!1)+`>`,i===`user`?t=t+LA(o.firstName??``)+` `+LA(o.lastName??``)+` (`+LA(o.login??``)+`)`:t+=LA(o.name??``),t+=`</a></li>`}}}).call(this),t=t+`</ul><div`+(` class="g-search-results-paginate"`+NA(`id`,`${i}Paginate`,!0,!1))+`></div>`}).call(this,`collectionName`in n?n.collectionName:typeof collectionName<`u`?collectionName:void 0,`icon`in n?n.icon:typeof icon<`u`?icon:void 0,`results`in n?n.results:typeof results<`u`?results:void 0,`type`in n?n.type:typeof type<`u`?type:void 0),t}ho();var VA=Y.extend({initialize:function(e){this._query=e.query||``,this._mode=e.mode||`text`,this._sizeOneElement=28,this.pageLimit=10,this._request=Np({url:`resource/search`,data:{q:this._query,mode:this._mode,types:JSON.stringify(Sy.getModeTypes(this._mode)),limit:this.pageLimit}}),this.render()},_getTypeOrdering:function(e){let t=[`collection`,`folder`,`item`,`group`,`user`],n=H.intersection(t,e),r=H.difference(e,t).sort();return n.concat(r)},render:function(){return this.$el.html(MA({query:this._query})),this._subviews={},this._request.done(e=>{this.$(`.g-search-pending`).hide();let t=H.keys(e),n=this._getTypeOrdering(t);H.each(n,t=>{e[t].length&&(this._subviews[t]=new HA({parentView:this,query:this._query,mode:this._mode,type:t,limit:this.pageLimit,initResults:e[t],sizeOneElement:this._sizeOneElement}).render(),this._subviews[t].$el.appendTo(this.$(`.g-search-results-container`)))}),H.isEmpty(this._subviews)&&this.$(`.g-search-no-results`).show()}),this}}),HA=Y.extend({className:`g-search-results-type-container`,initialize:function(e){this._query=e.query,this._mode=e.mode,this._type=e.type,this._initResults=e.initResults||[],this._pageLimit=e.limit||10,this._sizeOneElement=e.sizeOneElement||30,this._paginateWidget=new kA({parentView:this,type:this._type,query:this._query,mode:this._mode,limit:this._pageLimit}).on(`g:changed`,()=>{this._results=this._paginateWidget.results,this.render()}),this._results=this._initResults},_getTypeName:function(e){return{collection:`Collections`,group:`Groups`,user:`Users`,folder:`Folders`,item:`Items`}[e]||e},_getTypeIcon:function(e){return{user:`user`,group:`users`,collection:`sitemap`,folder:`folder`,item:`doc-text-inv`}[e]||`icon-attention-alt`},render:function(){return this.$el.html(BA({results:this._results,collectionName:this._getTypeName(this._type),type:this._type,icon:this._getTypeIcon(this._type)})),this.$(`.g-search-results-type`).css(`min-height`,`${this._initResults.length*this._sizeOneElement}px`),this._paginateWidget.setElement(this.$(`#${this._type}Paginate`)).render(),this}});J.route(`admin`,`admin`,function(){q.trigger(`g:navigateTo`,sb)}),J.route(`assetstores`,`assetstores`,function(e){q.trigger(`g:navigateTo`,IE,{assetstoreEdit:e.dialog===`assetstoreedit`&&e.dialogid})}),J.route(`assetstore/:id/import`,`assetstoreImport`,function(e){IE.import(e)}),J.route(`collections`,`collections`,function(e){q.trigger(`g:navigateTo`,GE,e||{}),q.trigger(`g:highlightItem`,`CollectionsView`)}),J.route(`collection/:id`,`collectionAccess`,function(e,t){XE.fetchAndInit(e,{access:t.dialog===`access`,edit:t.dialog===`edit`,folderCreate:t.dialog===`foldercreate`,dialog:t.dialog})}),J.route(`collection/:id/folder/:id`,`collectionFolder`,function(e,t,n){XE.fetchAndInit(e,{folderId:t,upload:n.dialog===`upload`,access:n.dialog===`access`,edit:n.dialog===`edit`,folderAccess:n.dialog===`folderaccess`,folderCreate:n.dialog===`foldercreate`,folderEdit:n.dialog===`folderedit`,itemCreate:n.dialog===`itemcreate`})}),J.route(`folder/:id`,`folder`,function(e,t){ZE.fetchAndInit(e,{upload:t.dialog===`upload`,folderAccess:t.dialog===`folderaccess`,folderCreate:t.dialog===`foldercreate`,folderEdit:t.dialog===`folderedit`,itemCreate:t.dialog===`itemcreate`})}),J.route(``,`index`,function(){q.trigger(`g:navigateTo`,nD)}),J.route(`groups`,`groups`,function(e){q.trigger(`g:navigateTo`,fD,e||{}),q.trigger(`g:highlightItem`,`GroupsView`)}),J.route(`group/:id`,`groupView`,function(e,t){tO.fetchAndInit(e,{edit:t.dialog===`edit`})}),J.route(`group/:id/:tab`,`groupView`,function(e,t,n){tO.fetchAndInit(e,{edit:n.dialog===`edit`,tab:t})}),J.route(`item/:id`,`item`,function(e,t){TO.fetchAndInit(e,{edit:t.dialog===`itemedit`,fileEdit:t.dialog===`fileedit`&&t.dialogid,upload:t.dialog===`upload`&&t.dialogid})}),J.route(`plugins`,`plugins`,function(){q.trigger(`g:navigateTo`,AO)}),J.route(`settings`,`settings`,function(){q.trigger(`g:navigateTo`,IO)}),J.route(`useraccount/:id/:tab`,`accountTab`,function(e,t){OA.fetchAndInit(e,t)}),J.route(`useraccount/:id/token/:token`,`accountToken`,function(e,t){Kp.fromTemporaryToken(e,t).done(()=>{q.trigger(`g:navigateTo`,OA,{user:Xp(),tab:`password`,temporary:t})}).fail(()=>{J.navigate(``,{trigger:!0})})}),J.route(`useraccount/:id/verification/:token`,`accountVerify`,function(e,t){Np({url:`user/${e}/verification`,method:`PUT`,data:{token:t},error:null}).done(e=>{e.authToken&&(e.user.token=e.authToken.token,Gp.close(),Zp(new Kp(e.user)),Gp.open(),q.trigger(`g:login-changed`)),q.trigger(`g:navigateTo`,nD),q.trigger(`g:alert`,{icon:`ok`,text:`Email verified.`,type:`success`,timeout:4e3})}).fail(()=>{q.trigger(`g:navigateTo`,nD),q.trigger(`g:alert`,{icon:`cancel`,text:`Could not verify email.`,type:`danger`,timeout:4e3})})}),J.route(`users`,`users`,function(e){q.trigger(`g:navigateTo`,SD,e||{}),q.trigger(`g:highlightItem`,`UsersView`)}),J.route(`user/:id`,`user`,function(e,t){ED.fetchAndInit(e,{folderCreate:t.dialog===`foldercreate`,dialog:t.dialog})}),J.route(`user/:id/folder/:id`,`userFolder`,function(e,t,n){ED.fetchAndInit(e,{folderId:t,upload:n.dialog===`upload`,folderAccess:n.dialog===`folderaccess`,folderCreate:n.dialog===`foldercreate`,folderEdit:n.dialog===`folderedit`,itemCreate:n.dialog===`itemcreate`})}),J.route(`search/results`,`SearchResults`,function(e){q.trigger(`g:navigateTo`,VA,{query:e.query,mode:e.mode})}),ho();var UA=Y.extend({initialize:function(e){this._started=!1,e||={},this.contactEmail=e.contactEmail||null,this.privacyNoticeHref=e.privacyNoticeHref||null,this.brandName=e.brandName||null,this.bannerColor=e.bannerColor||null,this.registrationPolicy=e.registrationPolicy||null,this.enablePasswordLogin=!H.has(e,`enablePasswordLogin`)||e.enablePasswordLogin,(e.start===void 0||e.start)&&this.start()},start:function(e){var t=new U.default.Deferred().resolve(null).promise();if(this._started)return t;e=H.defaults(e||{},{fetch:!0,render:!0,history:!0});var n=t=>{this._createLayout(),t&&(Zp(new Kp(t)),Gp.open()),this._started=!0,e.render&&this.render(),e.history&&(_o.default.history.stop(),_o.default.history.start({pushState:!1}))};return e.fetch?t=em().done(n):n(null),this.bindGirderEvents(),t},bindGirderEvents:function(){q.off(null,null,this),q.on(`g:navigateTo`,this.navigateTo,this),q.on(`g:loginUi`,this.loginDialog,this),q.on(`g:registerUi`,this.registerDialog,this),q.on(`g:resetPasswordUi`,this.resetPasswordDialog,this),q.on(`g:alert`,this.alert,this),q.on(`g:login`,this.login,this)},_createLayout:function(){this.headerView=new ky({parentView:this,brandName:this.brandName,bannerColor:this.bannerColor,registrationPolicy:this.registrationPolicy}),this.globalNavView=new Zv({parentView:this}),this.footerView=new Hv({parentView:this,contactEmail:this.contactEmail,privacyNoticeHref:this.privacyNoticeHref}),this.progressListView=new Wy({eventStream:Gp,parentView:this}),this.layoutRenderMap={},this.layoutRenderMap[um.DEFAULT]=this._defaultLayout,this.layoutRenderMap[um.EMPTY]=this._emptyLayout},_layout:`default`,_defaultLayout:{show:function(){this.$(`#g-app-header-container,#g-global-nav-container,#g-app-footer-container`).show(),this.$(`#g-app-body-container`).addClass(`g-default-layout`)},hide:function(){this.$(`#g-app-header-container,#g-global-nav-container,#g-app-footer-container`).hide(),this.$(`#g-app-body-container`).removeClass(`g-default-layout`)}},_emptyLayout:{show:function(){this.$(`#g-app-body-container`).addClass(`g-empty-layout`)},hide:function(){this.$(`#g-app-body-container`).removeClass(`g-empty-layout`)}},render:function(){if(this._started)return this.$el.html(ab()),this.globalNavView.setElement(this.$(`#g-global-nav-container`)).render(),this.headerView.setElement(this.$(`#g-app-header-container`)).render(),this.footerView.setElement(this.$(`#g-app-footer-container`)).render(),this.progressListView.setElement(this.$(`#g-app-progress-container`)).render(),this},navigateTo:function(e,t,n){return this.globalNavView.deactivateAll(),t||={},n||={},n.layout?this._layout!==n.layout&&(H.has(this.layoutRenderMap,n.layout)?(this.layoutRenderMap[this._layout].hide.call(this,n),this._layout=n.layout,this.layoutRenderMap[this._layout].show.call(this,n)):console.error(`Attempting to set unknown layout type: `+n.layout)):this._layout!==um.DEFAULT&&(this.layoutRenderMap[this._layout].hide.call(this,n),this._layout=um.DEFAULT,this.layoutRenderMap[this._layout].show.call(this,n)),e?(this.bodyView&&this.bodyView.destroy(),t=H.extend(t,{el:this.$(`#g-app-body-container`),parentView:this,brandName:this.brandName}),this.bodyView=new e(t),n.renderNow&&this.bodyView.render()):console.error(`Undefined page.`),this},closeDialogIfUser:function(){return Xp()?((0,U.default)(`.modal`).girderModal(`close`),!0):!1},loginDialog:function(){this.closeDialogIfUser()||(this.loginView||=new jy({el:this.$(`#g-dialog-container`),parentView:this,registrationPolicy:this.registrationPolicy,enablePasswordLogin:this.enablePasswordLogin}),this.loginView.render())},registerDialog:function(){this.closeDialogIfUser()||(this.registerView||=new Jy({el:this.$(`#g-dialog-container`),parentView:this}),this.registerView.render())},resetPasswordDialog:function(){this.closeDialogIfUser()||(this.resetPasswordView||=new Xy({el:this.$(`#g-dialog-container`),parentView:this,registrationPolicy:this.registrationPolicy}),this.resetPasswordView.render())},alert:function(e){var t=(0,U.default)(ib({text:e.text,type:e.type||`info`,icon:e.icon}));(0,U.default)(`#g-alerts-container`).append(t),t.fadeIn(500),e.timeout===void 0&&(e.timeout=6e3),e.timeout>0&&window.setTimeout(function(){t.fadeOut(750,function(){(0,U.default)(this).remove()})},e.timeout)},login:function(){var e=X_(_o.default.history.fragment).base;_o.default.history.fragment=null,Gp.close(),Xp()?(Gp.open(),J.navigate(e,{trigger:!0})):J.navigate(`/`,{trigger:!0})}}),WA=c({AdminView:()=>sb,AssetstoresView:()=>IE,CollectionView:()=>XE,CollectionsView:()=>GE,FilesystemImportView:()=>AE,FolderView:()=>ZE,FrontPageView:()=>nD,GroupView:()=>tO,GroupsView:()=>fD,ItemView:()=>TO,PluginsView:()=>AO,S3ImportView:()=>PE,SearchResultsView:()=>VA,SystemConfigurationView:()=>IO,UserAccountView:()=>OA,UserView:()=>ED,UsersView:()=>SD,assetstoreImportViewMap:()=>FE}),GA=c({FooterView:()=>Hv,GlobalNavView:()=>Zv,HeaderUserView:()=>ny,HeaderView:()=>ky,LoginView:()=>jy,ProgressListView:()=>Wy,RegisterView:()=>Jy,ResetPasswordView:()=>Xy});function KA(e){var t=``+e,n=qA.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var qA=/["&<>]/;function JA(e){var t=``,n=e||{};return(function(e,n,r){t=t+`<div class="form-group"><label class="control-label">`+KA(e??``)+`</label>`,t+=n?`<div class="input-group date g-datetime-widget-from"><input class="input-sm form-control" type="text"/><div class="input-group-addon"><span class="icon-calendar"></span></div></div>`:`<div class="input-group date"><input class="input-sm form-control g-datetime-widget-from" type="text"/></div>`,t=t+`</div><div class="form-group"><label class="control-label">`+KA(r??``)+`</label>`,t+=n?`<div class="input-group date g-datetime-widget-to"><input class="input-sm form-control" type="text"/><div class="input-group-addon"><span class="icon-calendar"></span></div></div>`:`<div class="input-group date"><input class="input-sm form-control g-datetime-widget-to" type="text"/></div>`,t+=`</div>`}).call(this,`fromLabel`in n?n.fromLabel:typeof fromLabel<`u`?fromLabel:void 0,`showIcon`in n?n.showIcon:typeof showIcon<`u`?showIcon:void 0,`toLabel`in n?n.toLabel:typeof toLabel<`u`?toLabel:void 0),t}ho();var YA=Y.extend({initialize:function(e){this.defaultFromDate=e.defaultFromDate||!1,this.defaultToDate=e.defaultToDate||!1,this.showIcon=!H.has(e,`showIcon`)||e.showIcon,this.fromLabel=e.fromLabel||`Start date`,this.toLabel=e.toLabel||`End date`},render:function(){this.$el.html(JA({showIcon:this.showIcon,fromLabel:this.fromLabel,toLabel:this.toLabel}));var e={showClear:!0,showTodayButton:!0,icons:{time:`icon-clock`,date:`icon-calendar`,up:`icon-up-open`,down:`icon-down-open`,previous:`icon-left-open`,next:`icon-right-open`,clear:`icon-trash`,close:`icon-cancel`,today:`icon-target`}};return e.useCurrent=`day`,e.defaultDate=this.defaultFromDate,this.$(`.g-datetime-widget-from`).datetimepicker(e),e.useCurrent=!1,e.defaultDate=this.defaultToDate,this.$(`.g-datetime-widget-to`).datetimepicker(e),this.$(`.g-datetime-widget-from`).on(`dp.change`,e=>{this._picker(`.g-datetime-widget-to`).minDate(e.date)}),this.$(`.g-datetime-widget-to`).on(`dp.change`,e=>{this._picker(`.g-datetime-widget-from`).maxDate(e.date)}),this},setFromDate:function(e){this._setDate(`.g-datetime-widget-from`,e)},setToDate:function(e){this._setDate(`.g-datetime-widget-to`,e)},_setDate:function(e,t){var n=this._picker(e);if(H.isEmpty(t))n.clear();else if(H.isString(t)){var r=W.utc(t).local();n.date(r)}else n.date(t)},fromDate:function(){return this._date(`.g-datetime-widget-from`)},toDate:function(){return this._date(`.g-datetime-widget-to`)},fromDateString:function(){return this._dateString(`.g-datetime-widget-from`)},toDateString:function(){return this._dateString(`.g-datetime-widget-to`)},_picker:function(e){return this.$(e).data(`DateTimePicker`)},_date:function(e){var t=this._picker(e).date();return t!==null&&(t=W(t),t.utc()),t},_dateString:function(e){var t=this._date(e);return t===null?``:t.format()}});function XA(e){var t=``,n=e||{};return(function(e){t+=e?`<div class="input-group date g-datetime-widget"><input class="input-sm form-control" type="text"/><span class="input-group-addon"><span class="icon-calendar"></span></span></div>`:`<div class="input-group"><input class="input-sm form-control g-datetime-widget" type="text"/></div>`}).call(this,`showIcon`in n?n.showIcon:typeof showIcon<`u`?showIcon:void 0),t}ho();var ZA=Y.extend({initialize:function(e){this.defaultDate=e.defaultDate||!1,this.showIcon=!H.has(e,`showIcon`)||e.showIcon},render:function(){return this.$el.html(XA({showIcon:this.showIcon})),this.$(`.g-datetime-widget`).datetimepicker({showClear:!0,showTodayButton:!0,useCurrent:`day`,icons:{time:`icon-clock`,date:`icon-calendar`,up:`icon-up-open`,down:`icon-down-open`,previous:`icon-left-open`,next:`icon-right-open`,clear:`icon-trash`,close:`icon-cancel`,today:`icon-target`},defaultDate:this.defaultDate}),this},setDate:function(e){var t=this._picker();if(H.isEmpty(e))t.clear();else if(H.isString(e)){var n=W.utc(e).local();t.date(n)}else t.date(e)},date:function(){var e=this._picker().date();return e!==null&&(e=W(e),e.utc()),e},dateString:function(){var e=this.date();return e===null?``:e.format()},_picker:function(){return this.$(`.g-datetime-widget`).data(`DateTimePicker`)}});function QA(e){var t=``+e,n=$A.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var $A=/["&<>]/;function ej(e){var t=``,n=e||{};return(function(e){t=t+`<div class="g-plugin-config-breadcrumbs"><ol class="breadcrumb"><li><a class="g-admin-console-link"><i class="icon-wrench"></i>Admin console</a></li><li><a class="g-plugins-link"><i class="icon-puzzle"></i>Plugins</a></li><li class="active"><i class="icon-cog"></i>`+QA(e??``)+`</li></ol></div>`}).call(this,`pluginName`in n?n.pluginName:typeof pluginName<`u`?pluginName:void 0),t}var tj=Y.extend({events:{"click a.g-admin-console-link":function(){J.navigate(`admin`,{trigger:!0})},"click a.g-plugins-link":function(){J.navigate(`plugins`,{trigger:!0})}},initialize:function(e){this.pluginName=e.pluginName},render:function(){return this.$el.html(ej({pluginName:this.pluginName})),this}});function nj(e,t,n,r){if(!1===t||t==null||!t&&(e===`class`||e===`style`))return``;if(!0===t)return` `+(r?e:e+`="`+e+`"`);var i=typeof t;return i!==`object`&&i!==`function`||typeof t.toJSON!=`function`||(t=t.toJSON()),typeof t==`string`||(t=JSON.stringify(t),n||t.indexOf(`"`)===-1)?(n&&(t=oj(t)),` `+e+`="`+t+`"`):` `+e+`='`+t.replace(/'/g,`'`)+`'`}function rj(e,t){return Array.isArray(e)?ij(e,t):e&&typeof e==`object`?aj(e):e||``}function ij(e,t){for(var n,r=``,i=``,a=Array.isArray(t),o=0;o<e.length;o++)(n=rj(e[o]))&&(a&&t[o]&&(n=oj(n)),r=r+i+n,i=` `);return r}function aj(e){var t=``,n=``;for(var r in e)r&&e[r]&&sj.call(e,r)&&(t=t+n+r,n=` `);return t}function oj(e){var t=``+e,n=cj.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`"`;break;case 38:a=`&`;break;case 60:a=`<`;break;case 62:a=`>`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var sj=Object.prototype.hasOwnProperty,cj=/["&<>]/;function lj(e){if(!e)return``;if(typeof e==`object`){var t=``;for(var n in e)sj.call(e,n)&&(t=t+n+`:`+e[n]+`;`);return t}return e+``}function uj(e){var t=``,n=e||{};return(function(e,n,r,i){t+=`<div class="g-timeline-widget-wrapper"><div class="g-timeline-container">`,(function(){var e=r;if(typeof e.length==`number`)for(var n=0,i=e.length;n<i;n++){var a=e[n];t=t+`<div`+(nj(`class`,rj([`g-timeline-segment`,a.class],[!1,!0]),!1,!1)+nj(`title`,a.tooltip,!0,!1)+nj(`style`,lj(`left: ${a.left}; width: ${a.width}; ${a.color}`),!0,!1))+`></div>`}else{var i=0;for(var n in e){i++;var a=e[n];t=t+`<div`+(nj(`class`,rj([`g-timeline-segment`,a.class],[!1,!0]),!1,!1)+nj(`title`,a.tooltip,!0,!1)+nj(`style`,lj(`left: ${a.left}; width: ${a.width}; ${a.color}`),!0,!1))+`></div>`}}}).call(this),(function(){var e=n;if(typeof e.length==`number`)for(var r=0,i=e.length;r<i;r++){var a=e[r];t=t+`<div`+(nj(`class`,rj([`g-timeline-point`,a.class],[!1,!0]),!1,!1)+nj(`title`,a.tooltip,!0,!1)+nj(`style`,lj(`left: calc(${a.left} - 10px); ${a.color}`),!0,!1))+`></div>`}else{var i=0;for(var r in e){i++;var a=e[r];t=t+`<div`+(nj(`class`,rj([`g-timeline-point`,a.class],[!1,!0]),!1,!1)+nj(`title`,a.tooltip,!0,!1)+nj(`style`,lj(`left: calc(${a.left} - 10px); ${a.color}`),!0,!1))+`></div>`}}}).call(this),t+=`</div>`,(i!==void 0||e!==void 0)&&(t+=`<div class="g-timeline-labels-container">`,i!==void 0&&(t=t+`<div class="g-timeline-start-label">`+oj(i??``)+`</div>`),e!==void 0&&(t=t+`<div class="g-timeline-end-label">`+oj(e??``)+`</div>`),t+=`</div>`),t+=`</div>`}).call(this,`endLabel`in n?n.endLabel:typeof endLabel<`u`?endLabel:void 0,`points`in n?n.points:typeof points<`u`?points:void 0,`segments`in n?n.segments:typeof segments<`u`?segments:void 0,`startLabel`in n?n.startLabel:typeof startLabel<`u`?startLabel:void 0),t}ho();var dj=Y.extend({initialize:function(e){this.startTime=e.startTime,this.endTime=e.endTime,this.segments=e.segments||[],this.points=e.points||[],this.numeric=!!e.numeric,this.startLabel=e.startLabel,this.endLabel=e.endLabel,this.defaultSegmentClass=e.defaultSegmentClass||`g-segment-default`,this.defaultPointClass=e.defaultPointClass||`g-point-default`,this._processData()},_processData:function(){if(this.numeric||(this.startTime=new Date(this.startTime),this.endTime=new Date(this.endTime)),this.endTime<=this.startTime){console.error(`Timeline widget: end time must be after start time.`),this._processedSegments=[],this._processedPoints=[];return}var e=this.endTime-this.startTime;this._processedSegments=H.map(this.segments,function(t){var n=this.numeric?t.start:new Date(t.start),r=this.numeric?t.end:new Date(t.end),i=t.class?[t.class]:[this.defaultSegmentClass],a=t.color?`background-color: ${t.color}`:``;return{class:i.join(` `),left:(100*(n-this.startTime)/e).toFixed(1)+`%`,width:(100*(r-n)/e).toFixed(1)+`%`,tooltip:this._segmentTooltip(t,{range:this.numeric?r-n:(r-n)/1e3}),color:a}},this),this._processedPoints=H.map(this.points,function(t){var n=this.numeric?t.time:new Date(t.time),r=t.class?[t.class]:[this.defaultPointClass],i=t.color?`background-color: ${t.color}`:``;return{class:r.join(` `),left:(100*(n-this.startTime)/e).toFixed(1)+`%`,tooltip:this._pointTooltip(t,{time:n}),color:i}},this)},_segmentTooltip:function(e,t){return e.tooltip?e.tooltip.replace(`%r`,t.range):null},_pointTooltip:function(e,t){return e.tooltip?this.numeric?e.tooltip.replace(`%t`,t.time):e.tooltip.replace(`%t`,t.time.toISOString()):null},render:function(){return this.$el.html(uj({segments:this._processedSegments,points:this._processedPoints,startLabel:this.startLabel,endLabel:this.endLabel})),this}}),fj=c({AccessWidget:()=>Rw,ApiKeyListWidget:()=>KO,BrowserWidget:()=>EE,CheckedMenuWidget:()=>Hw,CollectionInfoWidget:()=>qw,DateTimeRangeWidget:()=>YA,DateTimeWidget:()=>ZA,EditApiKeyWidget:()=>VO,EditAssetstoreWidget:()=>lb,EditCollectionWidget:()=>eT,EditFileWidget:()=>oO,EditFolderWidget:()=>nT,EditGroupWidget:()=>sD,EditItemWidget:()=>iT,FileInfoWidget:()=>uO,FileListWidget:()=>hO,FolderInfoWidget:()=>lT,FolderListWidget:()=>mT,GroupAdminsWidget:()=>jD,GroupInvitesWidget:()=>ID,GroupMembersWidget:()=>GD,GroupModsWidget:()=>XD,HierarchyWidget:()=>gE,ItemBreadcrumbWidget:()=>bO,ItemListWidget:()=>CT,LoadingAnimation:()=>Lw,MarkdownWidget:()=>Qw,MetadataWidget:()=>GT,NewAssetstoreWidget:()=>fb,PaginateWidget:()=>BE,PluginConfigBreadcrumbWidget:()=>tj,RootSelectorWidget:()=>xE,SearchFieldWidget:()=>Sy,SearchPaginateWidget:()=>kA,SortCollectionWidget:()=>_D,TaskProgressWidget:()=>Hy,TimelineWidget:()=>dj,UploadWidget:()=>eE,UserOtpManagementWidget:()=>CA}),pj=c({App:()=>UA,View:()=>Y,body:()=>WA,layout:()=>GA,widgets:()=>fj});ho();var mj={$:U.default,_:H,Backbone:_o.default,moment:W,initializeDefaultApp:async(e,t=`body`)=>new Promise((n,r)=>{(0,U.default)(()=>{Ap(e),q.trigger(`g:appload.before`),Np({url:`system/public_settings`,method:`GET`}).done(e=>{Mp(e);let r=new UA({el:t,parentView:null,contactEmail:e[`core.contact_email_address`],privacyNoticeHref:e[`core.privacy_notice`],brandName:e[`core.brand_name`],bannerColor:e[`core.banner_color`],registrationPolicy:e[`core.registration_policy`],enablePasswordLogin:e[`core.enable_password_login`]});r.render(),document.title=e[`core.brand_name`],q.trigger(`g:appload.after`,r),n(r)}).fail(e=>{q.trigger(`g:error`,e),r(Error(`Could not retrieve public settings from server.`))})})}),auth:qp,collections:gv,constants:om,dialog:Tv,events:q,misc:z_,models:kv,plugins:{},pluginUtils:Av,rest:wp,router:J,utilities:Lv,version:null,views:pj};window.girder=mj;var hj=void 0;(async()=>{if(!hj){let e=document.getElementById(`app`);hj=e&&e.getAttribute(`root`)||``,hj+=(hj.endsWith(`/`)?``:`/`)+`api/v1`,!hj.startsWith(`/`)&&hj.indexOf(`:`)<0&&(hj=`/`+hj)}let e=await(await fetch(`${hj}/system/plugin_static_files`)).json(),t=hj.indexOf(`:`)>=0?hj.replace(/\/api\/v1\/?$/,`/`):window.location.origin+hj.replace(/\/api\/v1\/?$/,`/`);e.css.forEach(e=>{let n=document.createElement(`link`);n.rel=`stylesheet`,n.type=`text/css`,n.href=new URL(e,t).href,document.head.appendChild(n)});for(let n of e.js)await new Promise(e=>{let r=document.createElement(`script`);r.type=`text/javascript`,r.src=new URL(n,t).href,document.head.appendChild(r),r.addEventListener(`load`,function(){e()})});await mj.initializeDefaultApp(hj)})();
|
|
2659
|
-
//# sourceMappingURL=index-
|
|
2659
|
+
//# sourceMappingURL=index-DI4hxiKL.js.map
|