├── .gitignore ├── Dockerfile ├── README.md ├── api ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-311.pyc │ ├── admin.cpython-311.pyc │ ├── apps.cpython-311.pyc │ ├── models.cpython-311.pyc │ ├── serializers.cpython-311.pyc │ ├── urls.cpython-311.pyc │ └── views.cpython-311.pyc ├── admin.py ├── apps.py ├── migrations │ ├── 0001_initial.py │ ├── __init__.py │ └── __pycache__ │ │ ├── 0001_initial.cpython-311.pyc │ │ └── __init__.cpython-311.pyc ├── models.py ├── serializers.py ├── tests.py ├── urls.py └── views.py ├── db.sqlite3 ├── manage.py ├── mynotes ├── .gitignore ├── Dockerfile ├── build │ ├── asset-manifest.json │ ├── favicon.ico │ ├── index.html │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ ├── robots.txt │ └── static │ │ ├── css │ │ ├── main.e7772a38.css │ │ └── main.e7772a38.css.map │ │ ├── js │ │ ├── main.08442c14.js │ │ ├── main.08442c14.js.LICENSE.txt │ │ └── main.08442c14.js.map │ │ └── media │ │ ├── add.ebf598626c6f9b2211b0578a435aaa6b.svg │ │ └── arrow-left.b553318e4fdaed1113efb091889b7f47.svg ├── db.json ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ ├── index.html │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── robots.txt └── src │ ├── App.css │ ├── App.js │ ├── assets │ ├── add.svg │ ├── arrow-left.svg │ ├── data.js │ └── db.json │ ├── components │ ├── AddButton.js │ ├── ListItem.js │ └── header.js │ ├── index.js │ └── pages │ ├── NotePage.js │ └── NotesListPage.js ├── notesapp ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-311.pyc │ ├── settings.cpython-311.pyc │ ├── urls.cpython-311.pyc │ └── wsgi.cpython-311.pyc ├── asgi.py ├── settings.py ├── urls.py └── wsgi.py ├── procfile ├── requirements.txt └── staticfiles ├── admin ├── css │ ├── autocomplete.css │ ├── base.css │ ├── changelists.css │ ├── dark_mode.css │ ├── dashboard.css │ ├── fonts.css │ ├── forms.css │ ├── login.css │ ├── nav_sidebar.css │ ├── responsive.css │ ├── responsive_rtl.css │ ├── rtl.css │ ├── vendor │ │ └── select2 │ │ │ ├── LICENSE-SELECT2.md │ │ │ ├── select2.css │ │ │ └── select2.min.css │ └── widgets.css ├── fonts │ ├── LICENSE.txt │ ├── README.txt │ ├── Roboto-Bold-webfont.woff │ ├── Roboto-Light-webfont.woff │ └── Roboto-Regular-webfont.woff ├── img │ ├── LICENSE │ ├── README.txt │ ├── calendar-icons.svg │ ├── gis │ │ ├── move_vertex_off.svg │ │ └── move_vertex_on.svg │ ├── icon-addlink.svg │ ├── icon-alert.svg │ ├── icon-calendar.svg │ ├── icon-changelink.svg │ ├── icon-clock.svg │ ├── icon-deletelink.svg │ ├── icon-no.svg │ ├── icon-unknown-alt.svg │ ├── icon-unknown.svg │ ├── icon-viewlink.svg │ ├── icon-yes.svg │ ├── inline-delete.svg │ ├── search.svg │ ├── selector-icons.svg │ ├── sorting-icons.svg │ ├── tooltag-add.svg │ └── tooltag-arrowright.svg └── js │ ├── SelectBox.js │ ├── SelectFilter2.js │ ├── actions.js │ ├── admin │ ├── DateTimeShortcuts.js │ └── RelatedObjectLookups.js │ ├── autocomplete.js │ ├── calendar.js │ ├── cancel.js │ ├── change_form.js │ ├── collapse.js │ ├── core.js │ ├── filters.js │ ├── inlines.js │ ├── jquery.init.js │ ├── nav_sidebar.js │ ├── popup_response.js │ ├── prepopulate.js │ ├── prepopulate_init.js │ ├── urlify.js │ └── vendor │ ├── jquery │ ├── LICENSE.txt │ ├── jquery.js │ └── jquery.min.js │ ├── select2 │ ├── LICENSE.md │ ├── i18n │ │ ├── af.js │ │ ├── ar.js │ │ ├── az.js │ │ ├── bg.js │ │ ├── bn.js │ │ ├── bs.js │ │ ├── ca.js │ │ ├── cs.js │ │ ├── da.js │ │ ├── de.js │ │ ├── dsb.js │ │ ├── el.js │ │ ├── en.js │ │ ├── es.js │ │ ├── et.js │ │ ├── eu.js │ │ ├── fa.js │ │ ├── fi.js │ │ ├── fr.js │ │ ├── gl.js │ │ ├── he.js │ │ ├── hi.js │ │ ├── hr.js │ │ ├── hsb.js │ │ ├── hu.js │ │ ├── hy.js │ │ ├── id.js │ │ ├── is.js │ │ ├── it.js │ │ ├── ja.js │ │ ├── ka.js │ │ ├── km.js │ │ ├── ko.js │ │ ├── lt.js │ │ ├── lv.js │ │ ├── mk.js │ │ ├── ms.js │ │ ├── nb.js │ │ ├── ne.js │ │ ├── nl.js │ │ ├── pl.js │ │ ├── ps.js │ │ ├── pt-BR.js │ │ ├── pt.js │ │ ├── ro.js │ │ ├── ru.js │ │ ├── sk.js │ │ ├── sl.js │ │ ├── sq.js │ │ ├── sr-Cyrl.js │ │ ├── sr.js │ │ ├── sv.js │ │ ├── th.js │ │ ├── tk.js │ │ ├── tr.js │ │ ├── uk.js │ │ ├── vi.js │ │ ├── zh-CN.js │ │ └── zh-TW.js │ ├── select2.full.js │ └── select2.full.min.js │ └── xregexp │ ├── LICENSE.txt │ ├── xregexp.js │ └── xregexp.min.js ├── css ├── main.e7772a38.css └── main.e7772a38.css.map ├── js ├── main.d825d148.js ├── main.d825d148.js.LICENSE.txt └── main.d825d148.js.map ├── media ├── add.ebf598626c6f9b2211b0578a435aaa6b.svg └── arrow-left.b553318e4fdaed1113efb091889b7f47.svg └── rest_framework ├── css ├── bootstrap-theme.min.css ├── bootstrap-theme.min.css.map ├── bootstrap-tweaks.css ├── bootstrap.min.css ├── bootstrap.min.css.map ├── default.css ├── font-awesome-4.0.3.css └── prettify.css ├── docs ├── css │ ├── base.css │ ├── highlight.css │ └── jquery.json-view.min.css ├── img │ ├── favicon.ico │ └── grid.png └── js │ ├── api.js │ ├── highlight.pack.js │ └── jquery.json-view.min.js ├── fonts ├── fontawesome-webfont.eot ├── fontawesome-webfont.svg ├── fontawesome-webfont.ttf ├── fontawesome-webfont.woff ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── glyphicons-halflings-regular.woff2 ├── img ├── glyphicons-halflings-white.png ├── glyphicons-halflings.png └── grid.png └── js ├── ajax-form.js ├── bootstrap.min.js ├── coreapi-0.1.1.js ├── csrf.js ├── default.js ├── jquery-3.5.1.min.js └── prettify-min.js /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # ignore .vscode folder 4 | .vscode 5 | 6 | # dependencies 7 | /node_modules 8 | /.pnp 9 | .pnp.js 10 | 11 | # testing 12 | /coverage 13 | 14 | # production 15 | /build 16 | 17 | # misc 18 | .DS_Store 19 | .env.local 20 | .env.development.local 21 | .env.test.local 22 | .env.production.local 23 | 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.9 2 | 3 | WORKDIR /app/backend 4 | 5 | COPY requirements.txt /app/backend 6 | RUN pip install -r requirements.txt 7 | 8 | COPY . /app/backend 9 | 10 | EXPOSE 8000 11 | 12 | CMD python /app/backend/manage.py runserver 0.0.0.0:8000 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Simple Notes App 2 | This is a simple notes app built with React and Django. 3 | 4 | ## Requirements 5 | 1. Python 3.9 6 | 2. Node.js 7 | 3. React 8 | 9 | ## Installation 10 | 1. Clone the repository 11 | ``` 12 | git clone https://github.com/LondheShubham153/django-notes-app.git 13 | ``` 14 | 15 | 2. Build the app 16 | ``` 17 | docker build -t notes-app . 18 | ``` 19 | 20 | 3. Run the app 21 | ``` 22 | docker run -d -p 8000:8000 notes-app:latest 23 | ``` 24 | 25 | ## Nginx 26 | 27 | Install Nginx reverse proxy to make this application available 28 | 29 | `sudo apt-get update` 30 | `sudo apt install nginx` -------------------------------------------------------------------------------- /api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/__init__.py -------------------------------------------------------------------------------- /api/__pycache__/__init__.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/__pycache__/__init__.cpython-311.pyc -------------------------------------------------------------------------------- /api/__pycache__/admin.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/__pycache__/admin.cpython-311.pyc -------------------------------------------------------------------------------- /api/__pycache__/apps.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/__pycache__/apps.cpython-311.pyc -------------------------------------------------------------------------------- /api/__pycache__/models.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/__pycache__/models.cpython-311.pyc -------------------------------------------------------------------------------- /api/__pycache__/serializers.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/__pycache__/serializers.cpython-311.pyc -------------------------------------------------------------------------------- /api/__pycache__/urls.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/__pycache__/urls.cpython-311.pyc -------------------------------------------------------------------------------- /api/__pycache__/views.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/__pycache__/views.cpython-311.pyc -------------------------------------------------------------------------------- /api/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import Note 3 | 4 | # Register your models here. 5 | admin.site.register(Note) -------------------------------------------------------------------------------- /api/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class ApiConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'api' 7 | -------------------------------------------------------------------------------- /api/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.5 on 2023-01-20 07:38 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | initial = True 9 | 10 | dependencies = [ 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='Note', 16 | fields=[ 17 | ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 18 | ('body', models.TextField(blank=True, null=True)), 19 | ('updated', models.DateTimeField(auto_now=True)), 20 | ('created', models.DateTimeField(auto_now_add=True)), 21 | ], 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /api/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/migrations/__init__.py -------------------------------------------------------------------------------- /api/migrations/__pycache__/0001_initial.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/migrations/__pycache__/0001_initial.cpython-311.pyc -------------------------------------------------------------------------------- /api/migrations/__pycache__/__init__.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/api/migrations/__pycache__/__init__.cpython-311.pyc -------------------------------------------------------------------------------- /api/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | 5 | class Note(models.Model): 6 | body = models.TextField(null=True, blank=True) 7 | updated = models.DateTimeField(auto_now=True) 8 | created = models.DateTimeField(auto_now_add=True) 9 | def __str__(self): 10 | return self.body[0:69] -------------------------------------------------------------------------------- /api/serializers.py: -------------------------------------------------------------------------------- 1 | from rest_framework.serializers import ModelSerializer 2 | from .models import Note 3 | 4 | class NoteSerializer(ModelSerializer): 5 | class Meta: 6 | model = Note 7 | fields = '__all__' -------------------------------------------------------------------------------- /api/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /api/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from .views import * 3 | 4 | urlpatterns = [ 5 | path('', getRoutes, name="routes"), 6 | path('notes/', getNotes, name="notes"), 7 | path('notes//update/', updateNote, name="update-note"), 8 | path('notes//delete/', deleteNote, name="delete-note"), 9 | path('notes/create/', createNote, name="create-note"), 10 | path('notes//', getNote, name="note"), 11 | ] -------------------------------------------------------------------------------- /api/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | from rest_framework.decorators import api_view 3 | from rest_framework.response import Response 4 | from .serializers import NoteSerializer 5 | from .models import Note 6 | 7 | # Create your views here. 8 | 9 | @api_view(['GET']) 10 | def getRoutes(request): 11 | routes = [ 12 | { 13 | 'Endpoint': '/notes/', 14 | 'method': 'GET', 15 | 'body': None, 16 | 'description': 'Returns an array of notes' 17 | }, 18 | { 19 | 'Endpoint': '/notes/id', 20 | 'method': 'GET', 21 | 'body': None, 22 | 'description': 'Returns a single note object' 23 | }, 24 | { 25 | 'Endpoint': '/notes/create/', 26 | 'method': 'POST', 27 | 'body': {'body': ""}, 28 | 'description': 'Creates new note with data sent in post request' 29 | }, 30 | { 31 | 'Endpoint': '/notes/id/update/', 32 | 'method': 'PUT', 33 | 'body': {'body': ""}, 34 | 'description': 'Creates an existing note with data sent in post request' 35 | }, 36 | { 37 | 'Endpoint': '/notes/id/delete/', 38 | 'method': 'DELETE', 39 | 'body': None, 40 | 'description': 'Deletes and exiting note' 41 | }, 42 | ] 43 | return Response(routes) 44 | 45 | @api_view(['GET']) 46 | def getNotes(request): 47 | notes = Note.objects.all().order_by('-created') 48 | serializer = NoteSerializer(notes, many=True) 49 | return Response(serializer.data) 50 | 51 | @api_view(['GET']) 52 | def getNote(request, pk): 53 | note = Note.objects.get(id=pk) 54 | serializer = NoteSerializer(note, many=False) 55 | return Response(serializer.data) 56 | 57 | @api_view(['PUT']) 58 | def updateNote(request, pk): 59 | note = Note.objects.get(id=pk) 60 | serializer = NoteSerializer(instance=note, data=request.data) 61 | if serializer.is_valid(): 62 | serializer.save() 63 | return Response(serializer.data) 64 | 65 | @api_view(['DELETE']) 66 | def deleteNote(request, pk): 67 | note = Note.objects.get(id=pk) 68 | note.delete() 69 | return Response('Note was deleted!') 70 | 71 | @api_view(['POST']) 72 | def createNote(request): 73 | data = request.data 74 | note = Note.objects.create( 75 | body=data['body'] 76 | ) 77 | serializer = NoteSerializer(note, many=False) 78 | return Response(serializer.data) -------------------------------------------------------------------------------- /db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/db.sqlite3 -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | """Run administrative tasks.""" 9 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'notesapp.settings') 10 | try: 11 | from django.core.management import execute_from_command_line 12 | except ImportError as exc: 13 | raise ImportError( 14 | "Couldn't import Django. Are you sure it's installed and " 15 | "available on your PYTHONPATH environment variable? Did you " 16 | "forget to activate a virtual environment?" 17 | ) from exc 18 | execute_from_command_line(sys.argv) 19 | 20 | 21 | if __name__ == '__main__': 22 | main() 23 | -------------------------------------------------------------------------------- /mynotes/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /mynotes/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:8 2 | 3 | WORKDIR /app/ 4 | COPY . /app/ 5 | 6 | RUN npm install 7 | 8 | EXPOSE 3000 9 | 10 | CMD ["npm","start"] 11 | -------------------------------------------------------------------------------- /mynotes/build/asset-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": { 3 | "main.css": "/static/css/main.e7772a38.css", 4 | "main.js": "/static/js/main.08442c14.js", 5 | "index.html": "/index.html", 6 | "static/media/add.svg": "/static/media/add.ebf598626c6f9b2211b0578a435aaa6b.svg", 7 | "static/media/arrow-left.svg": "/static/media/arrow-left.b553318e4fdaed1113efb091889b7f47.svg", 8 | "main.e7772a38.css.map": "/static/css/main.e7772a38.css.map", 9 | "main.08442c14.js.map": "/static/js/main.08442c14.js.map" 10 | }, 11 | "entrypoints": [ 12 | "static/css/main.e7772a38.css", 13 | "static/js/main.08442c14.js" 14 | ] 15 | } -------------------------------------------------------------------------------- /mynotes/build/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/mynotes/build/favicon.ico -------------------------------------------------------------------------------- /mynotes/build/index.html: -------------------------------------------------------------------------------- 1 | React App
-------------------------------------------------------------------------------- /mynotes/build/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/mynotes/build/logo192.png -------------------------------------------------------------------------------- /mynotes/build/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/mynotes/build/logo512.png -------------------------------------------------------------------------------- /mynotes/build/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /mynotes/build/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /mynotes/build/static/css/main.e7772a38.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css2?family=Lexend:wght@400;600;700&display=swap);:root{--color-main:#f68657;--color-text:#383a3f;--color-dark:#1f2124;--color-gray:#677;--color-bg:#f3f6f9;--color-light:#acb4bd;--color-lighter:#f9f9f9;--color-white:#fff;--color-border:#e0e3e6}.dark{--color-main:#f68657;--color-text:#d6d1d1;--color-dark:#f5f6f7;--color-gray:#999;--color-bg:#1f2124;--color-lighter:#292a2c;--color-white:#2e3235;--color-border:#252629}*{box-sizing:border-box;color:inherit;font-family:Lexend,sans-serif;font-size:inherit;margin:0;padding:0;scroll-behavior:smooth}body{font-size:16px;font-weight:400;line-height:1.8em}a{text-decoration:none}.container{align-items:center;background-color:#f3f6f9;background-color:var(--color-bg);color:#383a3f;color:var(--color-text);display:flex;height:100vh;width:100%}.app{background-color:#fff;background-color:var(--color-white);box-shadow:1px 1px 6px rgba(0,0,0,.05);height:88vh;margin:0 auto;max-width:480px;position:relative;width:100%}.app-header{align-items:center;background-color:#f9f9f9;background-color:var(--color-lighter);box-shadow:0 1px 3px rgba(0,0,0,.1);display:flex;justify-content:space-between;padding:16px}.app-header h1{color:#1f2124;color:var(--color-dark);font-size:30px;font-weight:800;text-align:center}.app-header button{background:transparent;border:0;cursor:pointer}.app-header button>svg{fill:#1f2124;fill:var(--color-dark);height:25px;object-fit:cover;width:25px}.app-body{padding:16px}.notes-header{align-items:center;display:flex;justify-content:space-between;padding:10px 16px}.notes-count,.notes-title{color:#f68657;color:var(--color-main);font-size:24px;font-weight:600}.notes-count{color:#677;color:var(--color-gray);font-size:18px}.notes-list{height:70vh;margin:16px 0;overflow-y:auto;padding:0;scrollbar-width:none}.notes-list::-webkit-scrollbar{display:none}.notes-list-item{border-bottom:1px solid #e0e3e6;border-bottom:1px solid var(--color-border);margin-bottom:12px;padding:8px 16px;transition:all .2s ease-in-out}.notes-list-item:hover{background-color:#f3f6f9;background-color:var(--color-bg);cursor:pointer}.notes-list-item h3,.notes-list-item p span{font-weight:600}.notes-list-item p span{color:#677;color:var(--color-gray);display:inline-block;margin-right:8px}.notes-list-item p{color:#acb4bd;color:var(--color-light);font-size:14px}.floating-button{align-items:center;background:#f68657;background:var(--color-main);border:none;border-radius:50%;bottom:24px;box-shadow:1px 1px 10px rgba(0,0,0,.2);cursor:pointer;display:flex;font-size:48px;height:60px;justify-content:center;position:absolute;right:16px;width:60px}.floating-button>svg{fill:#f3f6f9;fill:var(--color-bg)}.note-header{color:#f68657;color:var(--color-main);justify-content:space-between;padding:10px}.note-header,.note-header h3{align-items:center;display:flex}.note-header h3{cursor:pointer;font-size:24px}.note-header h3 svg{fill:#f68657;fill:var(--color-main);margin-right:8px;width:20px}.note-header button{background-color:initial;border:none;cursor:pointer;font-size:18px;font-weight:600;outline:none}.note textarea{background-color:#fff;background-color:var(--color-white);border:none;height:70vh;padding:16px 12px;resize:none;scrollbar-width:none;width:100%}.note textarea:active,.note textarea:focus{border:none;outline:none}.note textarea::-webkit-scrollbar{display:none} 2 | /*# sourceMappingURL=main.e7772a38.css.map*/ -------------------------------------------------------------------------------- /mynotes/build/static/css/main.e7772a38.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"static/css/main.e7772a38.css","mappings":"2FAIA,MACE,oBAAqB,CACrB,oBAAqB,CACrB,oBAAqB,CACrB,iBAAkB,CAClB,kBAAmB,CACnB,qBAAsB,CACtB,uBAAwB,CACxB,kBAAmB,CACnB,sBACF,CAEA,MACE,oBAAqB,CACrB,oBAAqB,CACrB,oBAAqB,CACrB,iBAAkB,CAClB,kBAAmB,CACnB,uBAAwB,CACxB,qBAAsB,CACtB,sBACF,CAKA,EAGE,qBAAsB,CAEtB,aAAc,CADd,6BAAiC,CAEjC,iBAAkB,CALlB,QAAS,CACT,SAAU,CAKV,sBACF,CAGA,KAGE,cAAe,CADf,eAAgB,CADhB,iBAGF,CAEA,EACE,oBACF,CAKA,WAME,kBAAmB,CAFnB,wBAAiC,CAAjC,gCAAiC,CADjC,aAAwB,CAAxB,uBAAwB,CAExB,YAAa,CAHb,YAAa,CADb,UAMF,CAGA,KAKE,qBAAoC,CAApC,mCAAoC,CACpC,sCAA2C,CAH3C,WAAY,CACZ,aAAc,CAFd,eAAgB,CAKhB,iBAAkB,CANlB,UAOF,CAGA,YAEE,kBAAmB,CAGnB,wBAAsC,CAAtC,qCAAsC,CACtC,mCAA0C,CAL1C,YAAa,CAGb,6BAA8B,CAD9B,YAIF,CAEA,eAEE,aAAwB,CAAxB,uBAAwB,CADxB,cAAe,CAEf,eAAgB,CAChB,iBACF,CAEA,mBAEE,sBAAuB,CADvB,QAAS,CAET,cACF,CAEA,uBACE,YAAuB,CAAvB,sBAAuB,CACvB,WAAY,CAEZ,gBAAiB,CADjB,UAEF,CAEA,UACE,YACF,CAKA,cAEE,kBAAmB,CADnB,YAAa,CAEb,6BAA8B,CAC9B,iBACF,CAEA,0BAEE,aAAwB,CAAxB,uBAAwB,CACxB,cAAe,CACf,eACF,CAEA,aAEE,UAAwB,CAAxB,uBAAwB,CADxB,cAEF,CAGA,YAGE,WAAY,CADZ,aAAc,CAEd,eAAgB,CAHhB,SAAU,CAIV,oBACF,CAEA,+BACE,YACF,CAEA,iBACE,+BAA6C,CAA7C,2CAA6C,CAC7C,kBAAmB,CACnB,gBAAiB,CACjB,8BACF,CAEA,uBACE,wBAAiC,CAAjC,gCAAiC,CACjC,cACF,CAEA,4CAEE,eACF,CAGA,wBACE,UAAwB,CAAxB,uBAAwB,CACxB,oBAAqB,CACrB,gBACF,CAEA,mBAEE,aAAyB,CAAzB,wBAAyB,CADzB,cAEF,CAEA,iBAWE,kBAAmB,CANnB,kBAA6B,CAA7B,4BAA6B,CAC7B,WAAY,CAGZ,iBAAkB,CANlB,WAAY,CAWZ,sCAA2C,CAD3C,cAAe,CAHf,YAAa,CATb,cAAe,CAOf,WAAY,CAIZ,sBAAuB,CAVvB,iBAAkB,CAElB,UAAW,CAGX,UAQF,CAGA,qBACE,YAAqB,CAArB,oBACF,CAQA,aAIE,aAAwB,CAAxB,uBAAwB,CADxB,6BAA8B,CAE9B,YACF,CAEA,6BANE,kBAAmB,CADnB,YAYF,CALA,gBAIE,cAAe,CADf,cAEF,CAEA,oBACE,YAAuB,CAAvB,sBAAuB,CAEvB,gBAAiB,CADjB,UAEF,CAEA,oBAIE,wBAA6B,CAH7B,WAAY,CAKZ,cAAe,CADf,cAAe,CAFf,eAAgB,CADhB,YAKF,CAEA,eACE,qBAAoC,CAApC,mCAAoC,CACpC,WAAY,CAGZ,WAAY,CAFZ,iBAAkB,CAGlB,WAAY,CACZ,oBAAqB,CAHrB,UAIF,CAEA,2CAGE,WAAY,CADZ,YAEF,CAEA,kCACE,YACF","sources":["App.css"],"sourcesContent":["@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@400;600;700&display=swap');\n\n\n\n:root {\n --color-main: #f68657;\n --color-text: #383a3f;\n --color-dark: #1f2124;\n --color-gray: #677;\n --color-bg: #f3f6f9;\n --color-light: #acb4bd;\n --color-lighter: #f9f9f9;\n --color-white: #fff;\n --color-border:#e0e3e6;\n}\n\n.dark {\n --color-main: #f68657;\n --color-text: #d6d1d1;\n --color-dark: #f5f6f7;\n --color-gray: #999;\n --color-bg: #1f2124;\n --color-lighter: #292a2c;\n --color-white: #2e3235;\n --color-border:#252629;\n}\n\n/* BASE STYLES */\n\n\n*{\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-family: 'Lexend', sans-serif;\n color: inherit;\n font-size: inherit;\n scroll-behavior: smooth;\n}\n\n\nbody{\n line-height: 1.8em;\n font-weight: 400;\n font-size: 16px;\n}\n\na {\n text-decoration: none;\n}\n\n/* APP STYLES */\n\n\n.container {\n width: 100%;\n height: 100vh;\n color: var(--color-text);\n background-color: var(--color-bg);\n display: flex;\n align-items: center;\n}\n\n\n.app {\n width: 100%;\n max-width: 480px;\n height: 88vh;\n margin: 0 auto;\n background-color: var(--color-white);\n box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.05);\n position: relative;\n}\n\n\n.app-header {\n display: flex;\n align-items: center;\n padding: 16px;\n justify-content: space-between;\n background-color: var(--color-lighter);\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.app-header h1 {\n font-size: 30px;\n color: var(--color-dark);\n font-weight: 800;\n text-align: center;\n}\n\n.app-header button {\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.app-header button > svg {\n fill: var(--color-dark);\n height: 25px;\n width: 25px;\n object-fit: cover;\n}\n\n.app-body {\n padding: 16px;\n}\n\n\n/* NOTES STYLES */\n\n.notes-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n}\n\n.notes-title,\n.notes-count {\n color: var(--color-main);\n font-size: 24px;\n font-weight: 600;\n}\n\n.notes-count {\n font-size: 18px;\n color: var(--color-gray);\n}\n\n\n.notes-list {\n padding: 0;\n margin: 16px 0;\n height: 70vh;\n overflow-y: auto;\n scrollbar-width: none; /* Firefox */\n}\n\n.notes-list::-webkit-scrollbar {\n display: none;\n}\n\n.notes-list-item {\n border-bottom: 1px solid var(--color-border);\n margin-bottom: 12px;\n padding: 8px 16px;\n transition: all 0.2s ease-in-out;\n}\n\n.notes-list-item:hover {\n background-color: var(--color-bg);\n cursor: pointer;\n}\n\n.notes-list-item h3,\n.notes-list-item p span {\n font-weight: 600;\n}\n\n\n.notes-list-item p span {\n color: var(--color-gray);\n display: inline-block;\n margin-right: 8px;\n}\n\n.notes-list-item p {\n font-size: 14px;\n color: var(--color-light);\n}\n\n.floating-button {\n font-size: 48px;\n position: absolute;\n bottom: 24px;\n right: 16px;\n background: var(--color-main);\n border: none;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.2);\n}\n\n\n.floating-button > svg {\n fill: var(--color-bg);\n}\n\n\n\n/*==============================\n=> Note Styles\n================================*/\n\n.note-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--color-main);\n padding: 10px;\n}\n\n.note-header h3 {\n display: flex;\n align-items: center;\n font-size: 24px;\n cursor: pointer;\n}\n\n.note-header h3 svg {\n fill: var(--color-main);\n width: 20px;\n margin-right: 8px;\n}\n\n.note-header button {\n border: none;\n outline: none;\n font-weight: 600;\n background-color: transparent;\n font-size: 18px;\n cursor: pointer;\n}\n\n.note textarea {\n background-color: var(--color-white);\n border: none;\n padding: 16px 12px;\n width: 100%;\n height: 70vh;\n resize: none;\n scrollbar-width: none; /* Firefox */\n}\n\n.note textarea:active,\n.note textarea:focus {\n outline: none;\n border: none;\n}\n\n.note textarea::-webkit-scrollbar {\n display: none;\n}"],"names":[],"sourceRoot":""} -------------------------------------------------------------------------------- /mynotes/build/static/js/main.08442c14.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ 2 | 3 | /** 4 | * @license React 5 | * react-dom.production.min.js 6 | * 7 | * Copyright (c) Facebook, Inc. and its affiliates. 8 | * 9 | * This source code is licensed under the MIT license found in the 10 | * LICENSE file in the root directory of this source tree. 11 | */ 12 | 13 | /** 14 | * @license React 15 | * react-jsx-runtime.production.min.js 16 | * 17 | * Copyright (c) Facebook, Inc. and its affiliates. 18 | * 19 | * This source code is licensed under the MIT license found in the 20 | * LICENSE file in the root directory of this source tree. 21 | */ 22 | 23 | /** 24 | * @license React 25 | * react.production.min.js 26 | * 27 | * Copyright (c) Facebook, Inc. and its affiliates. 28 | * 29 | * This source code is licensed under the MIT license found in the 30 | * LICENSE file in the root directory of this source tree. 31 | */ 32 | 33 | /** 34 | * @license React 35 | * scheduler.production.min.js 36 | * 37 | * Copyright (c) Facebook, Inc. and its affiliates. 38 | * 39 | * This source code is licensed under the MIT license found in the 40 | * LICENSE file in the root directory of this source tree. 41 | */ 42 | 43 | /** 44 | * @remix-run/router v1.3.0 45 | * 46 | * Copyright (c) Remix Software Inc. 47 | * 48 | * This source code is licensed under the MIT license found in the 49 | * LICENSE.md file in the root directory of this source tree. 50 | * 51 | * @license MIT 52 | */ 53 | 54 | /** 55 | * React Router DOM v6.7.0 56 | * 57 | * Copyright (c) Remix Software Inc. 58 | * 59 | * This source code is licensed under the MIT license found in the 60 | * LICENSE.md file in the root directory of this source tree. 61 | * 62 | * @license MIT 63 | */ 64 | 65 | /** 66 | * React Router v6.7.0 67 | * 68 | * Copyright (c) Remix Software Inc. 69 | * 70 | * This source code is licensed under the MIT license found in the 71 | * LICENSE.md file in the root directory of this source tree. 72 | * 73 | * @license MIT 74 | */ 75 | -------------------------------------------------------------------------------- /mynotes/build/static/media/add.ebf598626c6f9b2211b0578a435aaa6b.svg: -------------------------------------------------------------------------------- 1 | 2 | add 3 | 4 | 5 | -------------------------------------------------------------------------------- /mynotes/build/static/media/arrow-left.b553318e4fdaed1113efb091889b7f47.svg: -------------------------------------------------------------------------------- 1 | 2 | chevron-left 3 | 4 | 5 | -------------------------------------------------------------------------------- /mynotes/db.json: -------------------------------------------------------------------------------- 1 | { 2 | "notes": [ 3 | { 4 | "body": "hello there this is a super long title cause this is not actually a title\n\nthis is actually the body\nthis is the body tho RIP\nthis is a new line ", 5 | "updated": "2023-01-20T06:47:31.575Z", 6 | "id": 1 7 | } 8 | ] 9 | } -------------------------------------------------------------------------------- /mynotes/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mynotes", 3 | "proxy": "http://127.0.0.1:8000", 4 | "version": "0.1.0", 5 | "private": true, 6 | "dependencies": { 7 | "@testing-library/jest-dom": "^5.16.5", 8 | "@testing-library/react": "^13.4.0", 9 | "@testing-library/user-event": "^13.5.0", 10 | "react": "^18.2.0", 11 | "react-dom": "^18.2.0", 12 | "react-router-dom": "^6.7.0", 13 | "react-scripts": "5.0.1", 14 | "web-vitals": "^2.1.4" 15 | }, 16 | "scripts": { 17 | "start": "react-scripts start", 18 | "build": "react-scripts build", 19 | "test": "react-scripts test", 20 | "eject": "react-scripts eject", 21 | "server": "json-server --watch db.json --port 8000" 22 | }, 23 | "eslintConfig": { 24 | "extends": [ 25 | "react-app", 26 | "react-app/jest" 27 | ] 28 | }, 29 | "browserslist": { 30 | "production": [ 31 | ">0.2%", 32 | "not dead", 33 | "not op_mini all" 34 | ], 35 | "development": [ 36 | "last 1 chrome version", 37 | "last 1 firefox version", 38 | "last 1 safari version" 39 | ] 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /mynotes/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/mynotes/public/favicon.ico -------------------------------------------------------------------------------- /mynotes/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | React App 19 | 20 | 21 | 22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /mynotes/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/mynotes/public/logo192.png -------------------------------------------------------------------------------- /mynotes/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/mynotes/public/logo512.png -------------------------------------------------------------------------------- /mynotes/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /mynotes/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /mynotes/src/App.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Lexend:wght@400;600;700&display=swap'); 2 | 3 | 4 | 5 | :root { 6 | --color-main: #f68657; 7 | --color-text: #383a3f; 8 | --color-dark: #1f2124; 9 | --color-gray: #677; 10 | --color-bg: #f3f6f9; 11 | --color-light: #acb4bd; 12 | --color-lighter: #f9f9f9; 13 | --color-white: #fff; 14 | --color-border:#e0e3e6; 15 | } 16 | 17 | .dark { 18 | --color-main: #f68657; 19 | --color-text: #d6d1d1; 20 | --color-dark: #f5f6f7; 21 | --color-gray: #999; 22 | --color-bg: #1f2124; 23 | --color-lighter: #292a2c; 24 | --color-white: #2e3235; 25 | --color-border:#252629; 26 | } 27 | 28 | /* BASE STYLES */ 29 | 30 | 31 | *{ 32 | margin: 0; 33 | padding: 0; 34 | box-sizing: border-box; 35 | font-family: 'Lexend', sans-serif; 36 | color: inherit; 37 | font-size: inherit; 38 | scroll-behavior: smooth; 39 | } 40 | 41 | 42 | body{ 43 | line-height: 1.8em; 44 | font-weight: 400; 45 | font-size: 16px; 46 | } 47 | 48 | a { 49 | text-decoration: none; 50 | } 51 | 52 | /* APP STYLES */ 53 | 54 | 55 | .container { 56 | width: 100%; 57 | height: 100vh; 58 | color: var(--color-text); 59 | background-color: var(--color-bg); 60 | display: flex; 61 | align-items: center; 62 | } 63 | 64 | 65 | .app { 66 | width: 100%; 67 | max-width: 480px; 68 | height: 88vh; 69 | margin: 0 auto; 70 | background-color: var(--color-white); 71 | box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.05); 72 | position: relative; 73 | } 74 | 75 | 76 | .app-header { 77 | display: flex; 78 | align-items: center; 79 | padding: 16px; 80 | justify-content: space-between; 81 | background-color: var(--color-lighter); 82 | box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 83 | } 84 | 85 | .app-header h1 { 86 | font-size: 30px; 87 | color: var(--color-dark); 88 | font-weight: 800; 89 | text-align: center; 90 | } 91 | 92 | .app-header button { 93 | border: 0; 94 | background: transparent; 95 | cursor: pointer; 96 | } 97 | 98 | .app-header button > svg { 99 | fill: var(--color-dark); 100 | height: 25px; 101 | width: 25px; 102 | object-fit: cover; 103 | } 104 | 105 | .app-body { 106 | padding: 16px; 107 | } 108 | 109 | 110 | /* NOTES STYLES */ 111 | 112 | .notes-header { 113 | display: flex; 114 | align-items: center; 115 | justify-content: space-between; 116 | padding: 10px 16px; 117 | } 118 | 119 | .notes-title, 120 | .notes-count { 121 | color: var(--color-main); 122 | font-size: 24px; 123 | font-weight: 600; 124 | } 125 | 126 | .notes-count { 127 | font-size: 18px; 128 | color: var(--color-gray); 129 | } 130 | 131 | 132 | .notes-list { 133 | padding: 0; 134 | margin: 16px 0; 135 | height: 70vh; 136 | overflow-y: auto; 137 | scrollbar-width: none; /* Firefox */ 138 | } 139 | 140 | .notes-list::-webkit-scrollbar { 141 | display: none; 142 | } 143 | 144 | .notes-list-item { 145 | border-bottom: 1px solid var(--color-border); 146 | margin-bottom: 12px; 147 | padding: 8px 16px; 148 | transition: all 0.2s ease-in-out; 149 | } 150 | 151 | .notes-list-item:hover { 152 | background-color: var(--color-bg); 153 | cursor: pointer; 154 | } 155 | 156 | .notes-list-item h3, 157 | .notes-list-item p span { 158 | font-weight: 600; 159 | } 160 | 161 | 162 | .notes-list-item p span { 163 | color: var(--color-gray); 164 | display: inline-block; 165 | margin-right: 8px; 166 | } 167 | 168 | .notes-list-item p { 169 | font-size: 14px; 170 | color: var(--color-light); 171 | } 172 | 173 | .floating-button { 174 | font-size: 48px; 175 | position: absolute; 176 | bottom: 24px; 177 | right: 16px; 178 | background: var(--color-main); 179 | border: none; 180 | width: 60px; 181 | height: 60px; 182 | border-radius: 50%; 183 | display: flex; 184 | align-items: center; 185 | justify-content: center; 186 | cursor: pointer; 187 | box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.2); 188 | } 189 | 190 | 191 | .floating-button > svg { 192 | fill: var(--color-bg); 193 | } 194 | 195 | 196 | 197 | /*============================== 198 | => Note Styles 199 | ================================*/ 200 | 201 | .note-header { 202 | display: flex; 203 | align-items: center; 204 | justify-content: space-between; 205 | color: var(--color-main); 206 | padding: 10px; 207 | } 208 | 209 | .note-header h3 { 210 | display: flex; 211 | align-items: center; 212 | font-size: 24px; 213 | cursor: pointer; 214 | } 215 | 216 | .note-header h3 svg { 217 | fill: var(--color-main); 218 | width: 20px; 219 | margin-right: 8px; 220 | } 221 | 222 | .note-header button { 223 | border: none; 224 | outline: none; 225 | font-weight: 600; 226 | background-color: transparent; 227 | font-size: 18px; 228 | cursor: pointer; 229 | } 230 | 231 | .note textarea { 232 | background-color: var(--color-white); 233 | border: none; 234 | padding: 16px 12px; 235 | width: 100%; 236 | height: 70vh; 237 | resize: none; 238 | scrollbar-width: none; /* Firefox */ 239 | } 240 | 241 | .note textarea:active, 242 | .note textarea:focus { 243 | outline: none; 244 | border: none; 245 | } 246 | 247 | .note textarea::-webkit-scrollbar { 248 | display: none; 249 | } -------------------------------------------------------------------------------- /mynotes/src/App.js: -------------------------------------------------------------------------------- 1 | import { 2 | HashRouter as Router, 3 | Routes, 4 | Route, 5 | } from "react-router-dom"; 6 | 7 | import './App.css'; 8 | import Header from './components/header'; 9 | import NotesListPage from './pages/NotesListPage'; 10 | import NotePage from './pages/NotePage'; 11 | 12 | function App() { 13 | return ( 14 | 15 |
16 |
17 |
18 | 19 | } /> 20 | } /> 21 | 22 |
23 |
24 |
25 | ); 26 | } 27 | 28 | export default App; 29 | -------------------------------------------------------------------------------- /mynotes/src/assets/add.svg: -------------------------------------------------------------------------------- 1 | 2 | add 3 | 4 | 5 | -------------------------------------------------------------------------------- /mynotes/src/assets/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | chevron-left 3 | 4 | 5 | -------------------------------------------------------------------------------- /mynotes/src/assets/data.js: -------------------------------------------------------------------------------- 1 | let notes = [ 2 | { 3 | "id": 1, 4 | "body": "Todays Agenda\n\n- Walk Dog\n- Feed fish\n- Play basketball\n- Eat a salad", 5 | "updated": "2021-07-14T13:49:02.078653Z", 6 | }, 7 | { 8 | "id": 2, 9 | "body": "Bob from bar down the \n\n- Take out trash\n- Eat food", 10 | "updated": "2021-07-13T20:43:18.550058Z", 11 | }, 12 | { 13 | "id": 3, 14 | "body": "Wash car", 15 | "updated": "2021-07-13T19:46:12.187306Z", 16 | } 17 | ] 18 | 19 | export default notes; -------------------------------------------------------------------------------- /mynotes/src/assets/db.json: -------------------------------------------------------------------------------- 1 | { 2 | "notes": [ 3 | { 4 | "body": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to\n\n make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum", 5 | "updated": "2021-08-30T20:33:47.404Z", 6 | "id": 2 7 | }, 8 | { 9 | "body": "Why do we use it?\n\nIt is a long established fact that a reader will be distracted by the readable \n\ncontent of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of\n\n letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web pa", 10 | "updated": "2021-08-30T20:33:46.119Z", 11 | "id": 3 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /mynotes/src/components/AddButton.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Link } from 'react-router-dom' 3 | import { ReactComponent as Addicon } from '../assets/add.svg' 4 | 5 | const AddButton = () => { 6 | return ( 7 |
8 | 9 | 10 | 11 |
12 | ) 13 | } 14 | 15 | export default AddButton -------------------------------------------------------------------------------- /mynotes/src/components/ListItem.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Link } from "react-router-dom"; 3 | 4 | let getTitle = (note) => { 5 | let title = note.body.split('\n')[0] 6 | if (title.length > 25) { 7 | title = title.slice(0, 25) + '...' 8 | } 9 | return title 10 | } 11 | let getDate = (note) => { 12 | return new Date(note.updated).toLocaleDateString() 13 | } 14 | let getContent = (note) => { 15 | let title = note.body.split('\n')[0] 16 | let content = note.body.replace(title, "") 17 | if (content.length > 69) { 18 | return content.slice(0, 69) + '...' 19 | } 20 | return content 21 | } 22 | 23 | const ListItem = ({note}) => { 24 | return ( 25 |
26 | 27 |

{getTitle(note)}

28 |

{getContent(note)}

29 |

{getDate(note)}

30 | 31 |
32 | ) 33 | } 34 | 35 | export default ListItem -------------------------------------------------------------------------------- /mynotes/src/components/header.js: -------------------------------------------------------------------------------- 1 | const Header = () => { 2 | return ( 3 |
4 |

My Notes

5 |
6 | ) 7 | } 8 | 9 | export default Header -------------------------------------------------------------------------------- /mynotes/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | const root = ReactDOM.createRoot(document.getElementById('root')); 6 | root.render( 7 | 8 | 9 | 10 | ); 11 | 12 | // If you want to start measuring performance in your app, pass a function 13 | // to log results (for example: reportWebVitals(console.log)) 14 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 15 | -------------------------------------------------------------------------------- /mynotes/src/pages/NotePage.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react' 2 | import { useParams,useNavigate,Link } from 'react-router-dom' 3 | // import notes from '../assets/data.js' 4 | import { ReactComponent as ArrowLeft } from '../assets/arrow-left.svg' 5 | 6 | const NotePage = () => { 7 | let { id } = useParams(); 8 | let navigate = useNavigate() 9 | let [note, setNote] = useState({}) 10 | useEffect(() => { 11 | let getNote = async () => { 12 | if (id === 'new') return 13 | let response = await fetch(`/api/notes/${id}`) 14 | let data = await response.json() 15 | console.log(data) 16 | setNote(data) 17 | } 18 | getNote() 19 | }, [id]) 20 | 21 | let createNote = async () => { 22 | await fetch(`/api/notes/create/`, { 23 | method: 'POST', 24 | headers: { 25 | 'Content-Type': 'application/json' 26 | }, 27 | body: JSON.stringify({...note, 'updated': new Date()}) 28 | }) 29 | } 30 | 31 | let updateNote = async () => { 32 | await fetch(`/api/notes/${id}/update/`, { 33 | method: 'PUT', 34 | headers: { 35 | 'Content-Type': 'application/json' 36 | }, 37 | body: JSON.stringify({...note, 'updated': new Date()}) 38 | }) 39 | } 40 | 41 | let deleteNote = async () => { 42 | await fetch(`/api/notes/${id}/delete/`, { 43 | method: 'DELETE' 44 | }) 45 | navigate('/') 46 | } 47 | 48 | let handleSubmit = () => { 49 | if (id !== 'new' && !note.body) { 50 | deleteNote() 51 | } else if (id !== 'new') { 52 | updateNote() 53 | } else if (id ==='new' && note !== null) { 54 | createNote() 55 | } 56 | navigate('/') 57 | } 58 | 59 | return ( 60 |
61 |
62 |

63 | 64 | 65 | 66 |

67 | {id !== 'new' ? ( 68 | 69 | ):( 70 | 71 | )} 72 |
73 |
74 | 76 |
77 |
78 | ) 79 | } 80 | 81 | export default NotePage -------------------------------------------------------------------------------- /mynotes/src/pages/NotesListPage.js: -------------------------------------------------------------------------------- 1 | import React, { useState,useEffect } from 'react' 2 | // import notes from '../assets/data.js' 3 | import ListItem from '../components/ListItem.js' 4 | import AddButton from '../components/AddButton.js' 5 | 6 | const NotesListPage = () => { 7 | let [notes, setNote] = useState([]) 8 | 9 | useEffect(() => { 10 | getNotes() 11 | }, []) // fires once when the component is mounted 12 | 13 | let getNotes = async () => { 14 | let response = await fetch('/api/notes/') 15 | let data = await response.json() 16 | console.log(data) 17 | setNote(data) 18 | } 19 | 20 | return ( 21 |
22 |
23 |

24 | ☶ Notes 25 |

26 |

{notes.length}

27 |
28 |
29 | {notes.map((note,index) => { 30 | return ( 31 |
32 | 33 |
34 | ) 35 | })} 36 |
37 | 38 |
39 | ) 40 | } 41 | 42 | export default NotesListPage -------------------------------------------------------------------------------- /notesapp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/notesapp/__init__.py -------------------------------------------------------------------------------- /notesapp/__pycache__/__init__.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/notesapp/__pycache__/__init__.cpython-311.pyc -------------------------------------------------------------------------------- /notesapp/__pycache__/settings.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/notesapp/__pycache__/settings.cpython-311.pyc -------------------------------------------------------------------------------- /notesapp/__pycache__/urls.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/notesapp/__pycache__/urls.cpython-311.pyc -------------------------------------------------------------------------------- /notesapp/__pycache__/wsgi.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/notesapp/__pycache__/wsgi.cpython-311.pyc -------------------------------------------------------------------------------- /notesapp/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for notesapp project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.1/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'notesapp.settings') 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /notesapp/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for notesapp project. 3 | 4 | Generated by 'django-admin startproject' using Django 4.1.5. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.1/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/4.1/ref/settings/ 11 | """ 12 | 13 | import os 14 | from pathlib import Path 15 | 16 | # Build paths inside the project like this: BASE_DIR / 'subdir'. 17 | BASE_DIR = Path(__file__).resolve().parent.parent 18 | 19 | 20 | # Quick-start development settings - unsuitable for production 21 | # See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/ 22 | 23 | # SECURITY WARNING: keep the secret key used in production secret! 24 | SECRET_KEY = 'django-insecure-&dzi#zsb(hz6p(s#anunt&#-a%ohr2hld71*i72*^exvw-yq$y' 25 | 26 | # SECURITY WARNING: don't run with debug turned on in production! 27 | DEBUG = True 28 | 29 | ALLOWED_HOSTS = ['*'] 30 | 31 | 32 | # Application definition 33 | 34 | INSTALLED_APPS = [ 35 | 'django.contrib.admin', 36 | 'django.contrib.auth', 37 | 'django.contrib.contenttypes', 38 | 'django.contrib.sessions', 39 | 'django.contrib.messages', 40 | 'django.contrib.staticfiles', 41 | 'api.apps.ApiConfig', 42 | 'rest_framework', 43 | 'corsheaders' 44 | ] 45 | 46 | MIDDLEWARE = [ 47 | 'django.middleware.security.SecurityMiddleware', 48 | 'corsheaders.middleware.CorsMiddleware', 49 | "whitenoise.middleware.WhiteNoiseMiddleware", 50 | 'django.contrib.sessions.middleware.SessionMiddleware', 51 | 'django.middleware.common.CommonMiddleware', 52 | #'django.middleware.csrf.CsrfViewMiddleware', 53 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 54 | 'django.contrib.messages.middleware.MessageMiddleware', 55 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 56 | ] 57 | 58 | ROOT_URLCONF = 'notesapp.urls' 59 | 60 | TEMPLATES = [ 61 | { 62 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 63 | 'DIRS': [ 64 | BASE_DIR / 'mynotes/build' 65 | ], 66 | 'APP_DIRS': True, 67 | 'OPTIONS': { 68 | 'context_processors': [ 69 | 'django.template.context_processors.debug', 70 | 'django.template.context_processors.request', 71 | 'django.contrib.auth.context_processors.auth', 72 | 'django.contrib.messages.context_processors.messages', 73 | ], 74 | }, 75 | }, 76 | ] 77 | 78 | REST_FRAMEWORK = { 79 | 'DEFAULT_AUTHENTICATION_CLASSES': ( 80 | 'rest_framework.authentication.TokenAuthentication', 81 | ) 82 | } 83 | 84 | WSGI_APPLICATION = 'notesapp.wsgi.application' 85 | 86 | 87 | # Database 88 | # https://docs.djangoproject.com/en/4.1/ref/settings/#databases 89 | 90 | DATABASES = { 91 | 'default': { 92 | 'ENGINE': 'django.db.backends.sqlite3', 93 | 'NAME': BASE_DIR / 'db.sqlite3', 94 | } 95 | } 96 | 97 | 98 | # Password validation 99 | # https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators 100 | 101 | AUTH_PASSWORD_VALIDATORS = [ 102 | { 103 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 104 | }, 105 | { 106 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 107 | }, 108 | { 109 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 110 | }, 111 | { 112 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 113 | }, 114 | ] 115 | 116 | 117 | # Internationalization 118 | # https://docs.djangoproject.com/en/4.1/topics/i18n/ 119 | 120 | LANGUAGE_CODE = 'en-us' 121 | 122 | TIME_ZONE = 'UTC' 123 | 124 | USE_I18N = True 125 | 126 | USE_TZ = True 127 | 128 | 129 | # Static files (CSS, JavaScript, Images) 130 | # https://docs.djangoproject.com/en/4.1/howto/static-files/ 131 | 132 | STATIC_URL = 'static/' 133 | 134 | # STATICFILES_DIRS = [ 135 | # BASE_DIR / 'mynotes/build/static' 136 | # ] 137 | 138 | STATICFILES_DIRS = [os.path.join(BASE_DIR, 'mynotes/build/static')] 139 | 140 | STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 141 | 142 | # Default primary key field type 143 | # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field 144 | 145 | DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' 146 | 147 | CORS_ORIGIN_ALLOW_ALL = True -------------------------------------------------------------------------------- /notesapp/urls.py: -------------------------------------------------------------------------------- 1 | """notesapp URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/4.1/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: path('', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Import the include() function: from django.urls import include, path 14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15 | """ 16 | from django.contrib import admin 17 | from django.urls import path, include 18 | from django.views.generic import TemplateView 19 | 20 | urlpatterns = [ 21 | path('admin/', admin.site.urls), 22 | path('api/', include('api.urls')), 23 | path('', TemplateView.as_view(template_name='index.html')), 24 | ] 25 | -------------------------------------------------------------------------------- /notesapp/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for notesapp project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.1/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'notesapp.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn 'notesapp.wsgi' -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | asgiref==3.6.0 2 | Django==4.1.5 3 | django-cors-headers==3.13.0 4 | djangorestframework==3.14.0 5 | gunicorn==20.1.0 6 | pytz==2022.7.1 7 | sqlparse==0.4.3 8 | tzdata==2022.7 9 | whitenoise==6.3.0 10 | -------------------------------------------------------------------------------- /staticfiles/admin/css/dark_mode.css: -------------------------------------------------------------------------------- 1 | @media (prefers-color-scheme: dark) { 2 | :root { 3 | --primary: #264b5d; 4 | --primary-fg: #f7f7f7; 5 | 6 | --body-fg: #eeeeee; 7 | --body-bg: #121212; 8 | --body-quiet-color: #e0e0e0; 9 | --body-loud-color: #ffffff; 10 | 11 | --breadcrumbs-link-fg: #e0e0e0; 12 | --breadcrumbs-bg: var(--primary); 13 | 14 | --link-fg: #81d4fa; 15 | --link-hover-color: #4ac1f7; 16 | --link-selected-fg: #6f94c6; 17 | 18 | --hairline-color: #272727; 19 | --border-color: #353535; 20 | 21 | --error-fg: #e35f5f; 22 | --message-success-bg: #006b1b; 23 | --message-warning-bg: #583305; 24 | --message-error-bg: #570808; 25 | 26 | --darkened-bg: #212121; 27 | --selected-bg: #1b1b1b; 28 | --selected-row: #00363a; 29 | 30 | --close-button-bg: #333333; 31 | --close-button-hover-bg: #666666; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /staticfiles/admin/css/dashboard.css: -------------------------------------------------------------------------------- 1 | /* DASHBOARD */ 2 | 3 | .dashboard .module table th { 4 | width: 100%; 5 | } 6 | 7 | .dashboard .module table td { 8 | white-space: nowrap; 9 | } 10 | 11 | .dashboard .module table td a { 12 | display: block; 13 | padding-right: .6em; 14 | } 15 | 16 | /* RECENT ACTIONS MODULE */ 17 | 18 | .module ul.actionlist { 19 | margin-left: 0; 20 | } 21 | 22 | ul.actionlist li { 23 | list-style-type: none; 24 | overflow: hidden; 25 | text-overflow: ellipsis; 26 | } 27 | -------------------------------------------------------------------------------- /staticfiles/admin/css/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto'; 3 | src: url('../fonts/Roboto-Bold-webfont.woff'); 4 | font-weight: 700; 5 | font-style: normal; 6 | } 7 | 8 | @font-face { 9 | font-family: 'Roboto'; 10 | src: url('../fonts/Roboto-Regular-webfont.woff'); 11 | font-weight: 400; 12 | font-style: normal; 13 | } 14 | 15 | @font-face { 16 | font-family: 'Roboto'; 17 | src: url('../fonts/Roboto-Light-webfont.woff'); 18 | font-weight: 300; 19 | font-style: normal; 20 | } 21 | -------------------------------------------------------------------------------- /staticfiles/admin/css/login.css: -------------------------------------------------------------------------------- 1 | /* LOGIN FORM */ 2 | 3 | .login { 4 | background: var(--darkened-bg); 5 | height: auto; 6 | } 7 | 8 | .login #header { 9 | height: auto; 10 | padding: 15px 16px; 11 | justify-content: center; 12 | } 13 | 14 | .login #header h1 { 15 | font-size: 1.125rem; 16 | margin: 0; 17 | } 18 | 19 | .login #header h1 a { 20 | color: var(--header-link-color); 21 | } 22 | 23 | .login #content { 24 | padding: 20px 20px 0; 25 | } 26 | 27 | .login #container { 28 | background: var(--body-bg); 29 | border: 1px solid var(--hairline-color); 30 | border-radius: 4px; 31 | overflow: hidden; 32 | width: 28em; 33 | min-width: 300px; 34 | margin: 100px auto; 35 | height: auto; 36 | } 37 | 38 | .login .form-row { 39 | padding: 4px 0; 40 | } 41 | 42 | .login .form-row label { 43 | display: block; 44 | line-height: 2em; 45 | } 46 | 47 | .login .form-row #id_username, .login .form-row #id_password { 48 | padding: 8px; 49 | width: 100%; 50 | box-sizing: border-box; 51 | } 52 | 53 | .login .submit-row { 54 | padding: 1em 0 0 0; 55 | margin: 0; 56 | text-align: center; 57 | } 58 | 59 | .login .password-reset-link { 60 | text-align: center; 61 | } 62 | -------------------------------------------------------------------------------- /staticfiles/admin/css/nav_sidebar.css: -------------------------------------------------------------------------------- 1 | .sticky { 2 | position: sticky; 3 | top: 0; 4 | max-height: 100vh; 5 | } 6 | 7 | .toggle-nav-sidebar { 8 | z-index: 20; 9 | left: 0; 10 | display: flex; 11 | align-items: center; 12 | justify-content: center; 13 | flex: 0 0 23px; 14 | width: 23px; 15 | border: 0; 16 | border-right: 1px solid var(--hairline-color); 17 | background-color: var(--body-bg); 18 | cursor: pointer; 19 | font-size: 1.25rem; 20 | color: var(--link-fg); 21 | padding: 0; 22 | } 23 | 24 | [dir="rtl"] .toggle-nav-sidebar { 25 | border-left: 1px solid var(--hairline-color); 26 | border-right: 0; 27 | } 28 | 29 | .toggle-nav-sidebar:hover, 30 | .toggle-nav-sidebar:focus { 31 | background-color: var(--darkened-bg); 32 | } 33 | 34 | #nav-sidebar { 35 | z-index: 15; 36 | flex: 0 0 275px; 37 | left: -276px; 38 | margin-left: -276px; 39 | border-top: 1px solid transparent; 40 | border-right: 1px solid var(--hairline-color); 41 | background-color: var(--body-bg); 42 | overflow: auto; 43 | } 44 | 45 | [dir="rtl"] #nav-sidebar { 46 | border-left: 1px solid var(--hairline-color); 47 | border-right: 0; 48 | left: 0; 49 | margin-left: 0; 50 | right: -276px; 51 | margin-right: -276px; 52 | } 53 | 54 | .toggle-nav-sidebar::before { 55 | content: '\00BB'; 56 | } 57 | 58 | .main.shifted .toggle-nav-sidebar::before { 59 | content: '\00AB'; 60 | } 61 | 62 | .main.shifted > #nav-sidebar { 63 | margin-left: 0; 64 | } 65 | 66 | [dir="rtl"] .main.shifted > #nav-sidebar { 67 | margin-right: 0; 68 | } 69 | 70 | #nav-sidebar .module th { 71 | width: 100%; 72 | overflow-wrap: anywhere; 73 | } 74 | 75 | #nav-sidebar .module th, 76 | #nav-sidebar .module caption { 77 | padding-left: 16px; 78 | } 79 | 80 | #nav-sidebar .module td { 81 | white-space: nowrap; 82 | } 83 | 84 | [dir="rtl"] #nav-sidebar .module th, 85 | [dir="rtl"] #nav-sidebar .module caption { 86 | padding-left: 8px; 87 | padding-right: 16px; 88 | } 89 | 90 | #nav-sidebar .current-app .section:link, 91 | #nav-sidebar .current-app .section:visited { 92 | color: var(--header-color); 93 | font-weight: bold; 94 | } 95 | 96 | #nav-sidebar .current-model { 97 | background: var(--selected-row); 98 | } 99 | 100 | .main > #nav-sidebar + .content { 101 | max-width: calc(100% - 23px); 102 | } 103 | 104 | .main.shifted > #nav-sidebar + .content { 105 | max-width: calc(100% - 299px); 106 | } 107 | 108 | @media (max-width: 767px) { 109 | #nav-sidebar, #toggle-nav-sidebar { 110 | display: none; 111 | } 112 | 113 | .main > #nav-sidebar + .content, 114 | .main.shifted > #nav-sidebar + .content { 115 | max-width: 100%; 116 | } 117 | } 118 | 119 | #nav-filter { 120 | width: 100%; 121 | box-sizing: border-box; 122 | padding: 2px 5px; 123 | margin: 5px 0; 124 | border: 1px solid var(--border-color); 125 | background-color: var(--darkened-bg); 126 | color: var(--body-fg); 127 | } 128 | 129 | #nav-filter:focus { 130 | border-color: var(--body-quiet-color); 131 | } 132 | 133 | #nav-filter.no-results { 134 | background: var(--message-error-bg); 135 | } 136 | 137 | #nav-sidebar table { 138 | width: 100%; 139 | } 140 | -------------------------------------------------------------------------------- /staticfiles/admin/css/responsive_rtl.css: -------------------------------------------------------------------------------- 1 | /* TABLETS */ 2 | 3 | @media (max-width: 1024px) { 4 | [dir="rtl"] .colMS { 5 | margin-right: 0; 6 | } 7 | 8 | [dir="rtl"] #user-tools { 9 | text-align: right; 10 | } 11 | 12 | [dir="rtl"] #changelist .actions label { 13 | padding-left: 10px; 14 | padding-right: 0; 15 | } 16 | 17 | [dir="rtl"] #changelist .actions select { 18 | margin-left: 0; 19 | margin-right: 15px; 20 | } 21 | 22 | [dir="rtl"] .change-list .filtered .results, 23 | [dir="rtl"] .change-list .filtered .paginator, 24 | [dir="rtl"] .filtered #toolbar, 25 | [dir="rtl"] .filtered div.xfull, 26 | [dir="rtl"] .filtered .actions, 27 | [dir="rtl"] #changelist-filter { 28 | margin-left: 0; 29 | } 30 | 31 | [dir="rtl"] .inline-group ul.tools a.add, 32 | [dir="rtl"] .inline-group div.add-row a, 33 | [dir="rtl"] .inline-group .tabular tr.add-row td a { 34 | padding: 8px 26px 8px 10px; 35 | background-position: calc(100% - 8px) 9px; 36 | } 37 | 38 | [dir="rtl"] .related-widget-wrapper-link + .selector { 39 | margin-right: 0; 40 | margin-left: 15px; 41 | } 42 | 43 | [dir="rtl"] .selector .selector-filter label { 44 | margin-right: 0; 45 | margin-left: 8px; 46 | } 47 | 48 | [dir="rtl"] .object-tools li { 49 | float: right; 50 | } 51 | 52 | [dir="rtl"] .object-tools li + li { 53 | margin-left: 0; 54 | margin-right: 15px; 55 | } 56 | 57 | [dir="rtl"] .dashboard .module table td a { 58 | padding-left: 0; 59 | padding-right: 16px; 60 | } 61 | } 62 | 63 | /* MOBILE */ 64 | 65 | @media (max-width: 767px) { 66 | [dir="rtl"] .aligned .related-lookup, 67 | [dir="rtl"] .aligned .datetimeshortcuts { 68 | margin-left: 0; 69 | margin-right: 15px; 70 | } 71 | 72 | [dir="rtl"] .aligned ul { 73 | margin-right: 0; 74 | } 75 | 76 | [dir="rtl"] #changelist-filter { 77 | margin-left: 0; 78 | margin-right: 0; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /staticfiles/admin/css/rtl.css: -------------------------------------------------------------------------------- 1 | /* GLOBAL */ 2 | 3 | th { 4 | text-align: right; 5 | } 6 | 7 | .module h2, .module caption { 8 | text-align: right; 9 | } 10 | 11 | .module ul, .module ol { 12 | margin-left: 0; 13 | margin-right: 1.5em; 14 | } 15 | 16 | .viewlink, .addlink, .changelink { 17 | padding-left: 0; 18 | padding-right: 16px; 19 | background-position: 100% 1px; 20 | } 21 | 22 | .deletelink { 23 | padding-left: 0; 24 | padding-right: 16px; 25 | background-position: 100% 1px; 26 | } 27 | 28 | .object-tools { 29 | float: left; 30 | } 31 | 32 | thead th:first-child, 33 | tfoot td:first-child { 34 | border-left: none; 35 | } 36 | 37 | /* LAYOUT */ 38 | 39 | #user-tools { 40 | right: auto; 41 | left: 0; 42 | text-align: left; 43 | } 44 | 45 | div.breadcrumbs { 46 | text-align: right; 47 | } 48 | 49 | #content-main { 50 | float: right; 51 | } 52 | 53 | #content-related { 54 | float: left; 55 | margin-left: -300px; 56 | margin-right: auto; 57 | } 58 | 59 | .colMS { 60 | margin-left: 300px; 61 | margin-right: 0; 62 | } 63 | 64 | /* SORTABLE TABLES */ 65 | 66 | table thead th.sorted .sortoptions { 67 | float: left; 68 | } 69 | 70 | thead th.sorted .text { 71 | padding-right: 0; 72 | padding-left: 42px; 73 | } 74 | 75 | /* dashboard styles */ 76 | 77 | .dashboard .module table td a { 78 | padding-left: .6em; 79 | padding-right: 16px; 80 | } 81 | 82 | /* changelists styles */ 83 | 84 | .change-list .filtered table { 85 | border-left: none; 86 | border-right: 0px none; 87 | } 88 | 89 | #changelist-filter { 90 | border-left: none; 91 | border-right: none; 92 | margin-left: 0; 93 | margin-right: 30px; 94 | } 95 | 96 | #changelist-filter li.selected { 97 | border-left: none; 98 | padding-left: 10px; 99 | margin-left: 0; 100 | border-right: 5px solid var(--hairline-color); 101 | padding-right: 10px; 102 | margin-right: -15px; 103 | } 104 | 105 | #changelist table tbody td:first-child, #changelist table tbody th:first-child { 106 | border-right: none; 107 | border-left: none; 108 | } 109 | 110 | /* FORMS */ 111 | 112 | .aligned label { 113 | padding: 0 0 3px 1em; 114 | float: right; 115 | } 116 | 117 | .submit-row { 118 | text-align: left 119 | } 120 | 121 | .submit-row p.deletelink-box { 122 | float: right; 123 | } 124 | 125 | .submit-row input.default { 126 | margin-left: 0; 127 | } 128 | 129 | .vDateField, .vTimeField { 130 | margin-left: 2px; 131 | } 132 | 133 | .aligned .form-row input { 134 | margin-left: 5px; 135 | } 136 | 137 | form .aligned p.help, form .aligned div.help { 138 | clear: right; 139 | } 140 | 141 | form .aligned ul { 142 | margin-right: 163px; 143 | margin-left: 0; 144 | } 145 | 146 | form ul.inline li { 147 | float: right; 148 | padding-right: 0; 149 | padding-left: 7px; 150 | } 151 | 152 | input[type=submit].default, .submit-row input.default { 153 | float: left; 154 | } 155 | 156 | fieldset .fieldBox { 157 | float: right; 158 | margin-left: 20px; 159 | margin-right: 0; 160 | } 161 | 162 | .errorlist li { 163 | background-position: 100% 12px; 164 | padding: 0; 165 | } 166 | 167 | .errornote { 168 | background-position: 100% 12px; 169 | padding: 10px 12px; 170 | } 171 | 172 | /* WIDGETS */ 173 | 174 | .calendarnav-previous { 175 | top: 0; 176 | left: auto; 177 | right: 10px; 178 | background: url(../img/calendar-icons.svg) 0 -30px no-repeat; 179 | } 180 | 181 | .calendarbox .calendarnav-previous:focus, 182 | .calendarbox .calendarnav-previous:hover { 183 | background-position: 0 -45px; 184 | } 185 | 186 | .calendarnav-next { 187 | top: 0; 188 | right: auto; 189 | left: 10px; 190 | background: url(../img/calendar-icons.svg) 0 0 no-repeat; 191 | } 192 | 193 | .calendarbox .calendarnav-next:focus, 194 | .calendarbox .calendarnav-next:hover { 195 | background-position: 0 -15px; 196 | } 197 | 198 | .calendar caption, .calendarbox h2 { 199 | text-align: center; 200 | } 201 | 202 | .selector { 203 | float: right; 204 | } 205 | 206 | .selector .selector-filter { 207 | text-align: right; 208 | } 209 | 210 | .inline-deletelink { 211 | float: left; 212 | } 213 | 214 | form .form-row p.datetime { 215 | overflow: hidden; 216 | } 217 | 218 | .related-widget-wrapper { 219 | float: right; 220 | } 221 | 222 | /* MISC */ 223 | 224 | .inline-related h2, .inline-group h2 { 225 | text-align: right 226 | } 227 | 228 | .inline-related h3 span.delete { 229 | padding-right: 20px; 230 | padding-left: inherit; 231 | left: 10px; 232 | right: inherit; 233 | float:left; 234 | } 235 | 236 | .inline-related h3 span.delete label { 237 | margin-left: inherit; 238 | margin-right: 2px; 239 | } 240 | -------------------------------------------------------------------------------- /staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /staticfiles/admin/fonts/README.txt: -------------------------------------------------------------------------------- 1 | Roboto webfont source: https://www.google.com/fonts/specimen/Roboto 2 | WOFF files extracted using https://github.com/majodev/google-webfonts-helper 3 | Weights used in this project: Light (300), Regular (400), Bold (700) 4 | -------------------------------------------------------------------------------- /staticfiles/admin/fonts/Roboto-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/staticfiles/admin/fonts/Roboto-Bold-webfont.woff -------------------------------------------------------------------------------- /staticfiles/admin/fonts/Roboto-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/staticfiles/admin/fonts/Roboto-Light-webfont.woff -------------------------------------------------------------------------------- /staticfiles/admin/fonts/Roboto-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/staticfiles/admin/fonts/Roboto-Regular-webfont.woff -------------------------------------------------------------------------------- /staticfiles/admin/img/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Code Charm Ltd 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /staticfiles/admin/img/README.txt: -------------------------------------------------------------------------------- 1 | All icons are taken from Font Awesome (http://fontawesome.io/) project. 2 | The Font Awesome font is licensed under the SIL OFL 1.1: 3 | - https://scripts.sil.org/OFL 4 | 5 | SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG 6 | Font-Awesome-SVG-PNG is licensed under the MIT license (see file license 7 | in current folder). 8 | -------------------------------------------------------------------------------- /staticfiles/admin/img/calendar-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /staticfiles/admin/img/gis/move_vertex_off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /staticfiles/admin/img/gis/move_vertex_on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-addlink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-alert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-changelink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-deletelink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-unknown-alt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-unknown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-viewlink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/icon-yes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/inline-delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/selector-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /staticfiles/admin/img/sorting-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /staticfiles/admin/img/tooltag-add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/img/tooltag-arrowright.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /staticfiles/admin/js/SelectBox.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | { 3 | const SelectBox = { 4 | cache: {}, 5 | init: function(id) { 6 | const box = document.getElementById(id); 7 | SelectBox.cache[id] = []; 8 | const cache = SelectBox.cache[id]; 9 | for (const node of box.options) { 10 | cache.push({value: node.value, text: node.text, displayed: 1}); 11 | } 12 | }, 13 | redisplay: function(id) { 14 | // Repopulate HTML select box from cache 15 | const box = document.getElementById(id); 16 | const scroll_value_from_top = box.scrollTop; 17 | box.innerHTML = ''; 18 | for (const node of SelectBox.cache[id]) { 19 | if (node.displayed) { 20 | const new_option = new Option(node.text, node.value, false, false); 21 | // Shows a tooltip when hovering over the option 22 | new_option.title = node.text; 23 | box.appendChild(new_option); 24 | } 25 | } 26 | box.scrollTop = scroll_value_from_top; 27 | }, 28 | filter: function(id, text) { 29 | // Redisplay the HTML select box, displaying only the choices containing ALL 30 | // the words in text. (It's an AND search.) 31 | const tokens = text.toLowerCase().split(/\s+/); 32 | for (const node of SelectBox.cache[id]) { 33 | node.displayed = 1; 34 | const node_text = node.text.toLowerCase(); 35 | for (const token of tokens) { 36 | if (!node_text.includes(token)) { 37 | node.displayed = 0; 38 | break; // Once the first token isn't found we're done 39 | } 40 | } 41 | } 42 | SelectBox.redisplay(id); 43 | }, 44 | delete_from_cache: function(id, value) { 45 | let delete_index = null; 46 | const cache = SelectBox.cache[id]; 47 | for (const [i, node] of cache.entries()) { 48 | if (node.value === value) { 49 | delete_index = i; 50 | break; 51 | } 52 | } 53 | cache.splice(delete_index, 1); 54 | }, 55 | add_to_cache: function(id, option) { 56 | SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); 57 | }, 58 | cache_contains: function(id, value) { 59 | // Check if an item is contained in the cache 60 | for (const node of SelectBox.cache[id]) { 61 | if (node.value === value) { 62 | return true; 63 | } 64 | } 65 | return false; 66 | }, 67 | move: function(from, to) { 68 | const from_box = document.getElementById(from); 69 | for (const option of from_box.options) { 70 | const option_value = option.value; 71 | if (option.selected && SelectBox.cache_contains(from, option_value)) { 72 | SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); 73 | SelectBox.delete_from_cache(from, option_value); 74 | } 75 | } 76 | SelectBox.redisplay(from); 77 | SelectBox.redisplay(to); 78 | }, 79 | move_all: function(from, to) { 80 | const from_box = document.getElementById(from); 81 | for (const option of from_box.options) { 82 | const option_value = option.value; 83 | if (SelectBox.cache_contains(from, option_value)) { 84 | SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); 85 | SelectBox.delete_from_cache(from, option_value); 86 | } 87 | } 88 | SelectBox.redisplay(from); 89 | SelectBox.redisplay(to); 90 | }, 91 | sort: function(id) { 92 | SelectBox.cache[id].sort(function(a, b) { 93 | a = a.text.toLowerCase(); 94 | b = b.text.toLowerCase(); 95 | if (a > b) { 96 | return 1; 97 | } 98 | if (a < b) { 99 | return -1; 100 | } 101 | return 0; 102 | } ); 103 | }, 104 | select_all: function(id) { 105 | const box = document.getElementById(id); 106 | for (const option of box.options) { 107 | option.selected = true; 108 | } 109 | } 110 | }; 111 | window.SelectBox = SelectBox; 112 | } 113 | -------------------------------------------------------------------------------- /staticfiles/admin/js/autocomplete.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | { 3 | const $ = django.jQuery; 4 | 5 | $.fn.djangoAdminSelect2 = function() { 6 | $.each(this, function(i, element) { 7 | $(element).select2({ 8 | ajax: { 9 | data: (params) => { 10 | return { 11 | term: params.term, 12 | page: params.page, 13 | app_label: element.dataset.appLabel, 14 | model_name: element.dataset.modelName, 15 | field_name: element.dataset.fieldName 16 | }; 17 | } 18 | } 19 | }); 20 | }); 21 | return this; 22 | }; 23 | 24 | $(function() { 25 | // Initialize all autocomplete widgets except the one in the template 26 | // form used when a new formset is added. 27 | $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2(); 28 | }); 29 | 30 | document.addEventListener('formset:added', (event) => { 31 | $(event.target).find('.admin-autocomplete').djangoAdminSelect2(); 32 | }); 33 | } 34 | -------------------------------------------------------------------------------- /staticfiles/admin/js/cancel.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | { 3 | // Call function fn when the DOM is loaded and ready. If it is already 4 | // loaded, call the function now. 5 | // http://youmightnotneedjquery.com/#ready 6 | function ready(fn) { 7 | if (document.readyState !== 'loading') { 8 | fn(); 9 | } else { 10 | document.addEventListener('DOMContentLoaded', fn); 11 | } 12 | } 13 | 14 | ready(function() { 15 | function handleClick(event) { 16 | event.preventDefault(); 17 | const params = new URLSearchParams(window.location.search); 18 | if (params.has('_popup')) { 19 | window.close(); // Close the popup. 20 | } else { 21 | window.history.back(); // Otherwise, go back. 22 | } 23 | } 24 | 25 | document.querySelectorAll('.cancel-link').forEach(function(el) { 26 | el.addEventListener('click', handleClick); 27 | }); 28 | }); 29 | } 30 | -------------------------------------------------------------------------------- /staticfiles/admin/js/change_form.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | { 3 | const inputTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']; 4 | const modelName = document.getElementById('django-admin-form-add-constants').dataset.modelName; 5 | if (modelName) { 6 | const form = document.getElementById(modelName + '_form'); 7 | for (const element of form.elements) { 8 | // HTMLElement.offsetParent returns null when the element is not 9 | // rendered. 10 | if (inputTags.includes(element.tagName) && !element.disabled && element.offsetParent) { 11 | element.focus(); 12 | break; 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /staticfiles/admin/js/collapse.js: -------------------------------------------------------------------------------- 1 | /*global gettext*/ 2 | 'use strict'; 3 | { 4 | window.addEventListener('load', function() { 5 | // Add anchor tag for Show/Hide link 6 | const fieldsets = document.querySelectorAll('fieldset.collapse'); 7 | for (const [i, elem] of fieldsets.entries()) { 8 | // Don't hide if fields in this fieldset have errors 9 | if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) { 10 | elem.classList.add('collapsed'); 11 | const h2 = elem.querySelector('h2'); 12 | const link = document.createElement('a'); 13 | link.id = 'fieldsetcollapser' + i; 14 | link.className = 'collapse-toggle'; 15 | link.href = '#'; 16 | link.textContent = gettext('Show'); 17 | h2.appendChild(document.createTextNode(' (')); 18 | h2.appendChild(link); 19 | h2.appendChild(document.createTextNode(')')); 20 | } 21 | } 22 | // Add toggle to hide/show anchor tag 23 | const toggleFunc = function(ev) { 24 | if (ev.target.matches('.collapse-toggle')) { 25 | ev.preventDefault(); 26 | ev.stopPropagation(); 27 | const fieldset = ev.target.closest('fieldset'); 28 | if (fieldset.classList.contains('collapsed')) { 29 | // Show 30 | ev.target.textContent = gettext('Hide'); 31 | fieldset.classList.remove('collapsed'); 32 | } else { 33 | // Hide 34 | ev.target.textContent = gettext('Show'); 35 | fieldset.classList.add('collapsed'); 36 | } 37 | } 38 | }; 39 | document.querySelectorAll('fieldset.module').forEach(function(el) { 40 | el.addEventListener('click', toggleFunc); 41 | }); 42 | }); 43 | } 44 | -------------------------------------------------------------------------------- /staticfiles/admin/js/core.js: -------------------------------------------------------------------------------- 1 | // Core JavaScript helper functions 2 | 'use strict'; 3 | 4 | // quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]); 5 | function quickElement() { 6 | const obj = document.createElement(arguments[0]); 7 | if (arguments[2]) { 8 | const textNode = document.createTextNode(arguments[2]); 9 | obj.appendChild(textNode); 10 | } 11 | const len = arguments.length; 12 | for (let i = 3; i < len; i += 2) { 13 | obj.setAttribute(arguments[i], arguments[i + 1]); 14 | } 15 | arguments[1].appendChild(obj); 16 | return obj; 17 | } 18 | 19 | // "a" is reference to an object 20 | function removeChildren(a) { 21 | while (a.hasChildNodes()) { 22 | a.removeChild(a.lastChild); 23 | } 24 | } 25 | 26 | // ---------------------------------------------------------------------------- 27 | // Find-position functions by PPK 28 | // See https://www.quirksmode.org/js/findpos.html 29 | // ---------------------------------------------------------------------------- 30 | function findPosX(obj) { 31 | let curleft = 0; 32 | if (obj.offsetParent) { 33 | while (obj.offsetParent) { 34 | curleft += obj.offsetLeft - obj.scrollLeft; 35 | obj = obj.offsetParent; 36 | } 37 | } else if (obj.x) { 38 | curleft += obj.x; 39 | } 40 | return curleft; 41 | } 42 | 43 | function findPosY(obj) { 44 | let curtop = 0; 45 | if (obj.offsetParent) { 46 | while (obj.offsetParent) { 47 | curtop += obj.offsetTop - obj.scrollTop; 48 | obj = obj.offsetParent; 49 | } 50 | } else if (obj.y) { 51 | curtop += obj.y; 52 | } 53 | return curtop; 54 | } 55 | 56 | //----------------------------------------------------------------------------- 57 | // Date object extensions 58 | // ---------------------------------------------------------------------------- 59 | { 60 | Date.prototype.getTwelveHours = function() { 61 | return this.getHours() % 12 || 12; 62 | }; 63 | 64 | Date.prototype.getTwoDigitMonth = function() { 65 | return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1); 66 | }; 67 | 68 | Date.prototype.getTwoDigitDate = function() { 69 | return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); 70 | }; 71 | 72 | Date.prototype.getTwoDigitTwelveHour = function() { 73 | return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); 74 | }; 75 | 76 | Date.prototype.getTwoDigitHour = function() { 77 | return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); 78 | }; 79 | 80 | Date.prototype.getTwoDigitMinute = function() { 81 | return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); 82 | }; 83 | 84 | Date.prototype.getTwoDigitSecond = function() { 85 | return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); 86 | }; 87 | 88 | Date.prototype.getAbbrevMonthName = function() { 89 | return typeof window.CalendarNamespace === "undefined" 90 | ? this.getTwoDigitMonth() 91 | : window.CalendarNamespace.monthsOfYearAbbrev[this.getMonth()]; 92 | }; 93 | 94 | Date.prototype.getFullMonthName = function() { 95 | return typeof window.CalendarNamespace === "undefined" 96 | ? this.getTwoDigitMonth() 97 | : window.CalendarNamespace.monthsOfYear[this.getMonth()]; 98 | }; 99 | 100 | Date.prototype.strftime = function(format) { 101 | const fields = { 102 | b: this.getAbbrevMonthName(), 103 | B: this.getFullMonthName(), 104 | c: this.toString(), 105 | d: this.getTwoDigitDate(), 106 | H: this.getTwoDigitHour(), 107 | I: this.getTwoDigitTwelveHour(), 108 | m: this.getTwoDigitMonth(), 109 | M: this.getTwoDigitMinute(), 110 | p: (this.getHours() >= 12) ? 'PM' : 'AM', 111 | S: this.getTwoDigitSecond(), 112 | w: '0' + this.getDay(), 113 | x: this.toLocaleDateString(), 114 | X: this.toLocaleTimeString(), 115 | y: ('' + this.getFullYear()).substr(2, 4), 116 | Y: '' + this.getFullYear(), 117 | '%': '%' 118 | }; 119 | let result = '', i = 0; 120 | while (i < format.length) { 121 | if (format.charAt(i) === '%') { 122 | result = result + fields[format.charAt(i + 1)]; 123 | ++i; 124 | } 125 | else { 126 | result = result + format.charAt(i); 127 | } 128 | ++i; 129 | } 130 | return result; 131 | }; 132 | 133 | // ---------------------------------------------------------------------------- 134 | // String object extensions 135 | // ---------------------------------------------------------------------------- 136 | String.prototype.strptime = function(format) { 137 | const split_format = format.split(/[.\-/]/); 138 | const date = this.split(/[.\-/]/); 139 | let i = 0; 140 | let day, month, year; 141 | while (i < split_format.length) { 142 | switch (split_format[i]) { 143 | case "%d": 144 | day = date[i]; 145 | break; 146 | case "%m": 147 | month = date[i] - 1; 148 | break; 149 | case "%Y": 150 | year = date[i]; 151 | break; 152 | case "%y": 153 | // A %y value in the range of [00, 68] is in the current 154 | // century, while [69, 99] is in the previous century, 155 | // according to the Open Group Specification. 156 | if (parseInt(date[i], 10) >= 69) { 157 | year = date[i]; 158 | } else { 159 | year = (new Date(Date.UTC(date[i], 0))).getUTCFullYear() + 100; 160 | } 161 | break; 162 | } 163 | ++i; 164 | } 165 | // Create Date object from UTC since the parsed value is supposed to be 166 | // in UTC, not local time. Also, the calendar uses UTC functions for 167 | // date extraction. 168 | return new Date(Date.UTC(year, month, day)); 169 | }; 170 | } 171 | -------------------------------------------------------------------------------- /staticfiles/admin/js/filters.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Persist changelist filters state (collapsed/expanded). 3 | */ 4 | 'use strict'; 5 | { 6 | // Init filters. 7 | let filters = JSON.parse(sessionStorage.getItem('django.admin.filtersState')); 8 | 9 | if (!filters) { 10 | filters = {}; 11 | } 12 | 13 | Object.entries(filters).forEach(([key, value]) => { 14 | const detailElement = document.querySelector(`[data-filter-title='${key}']`); 15 | 16 | // Check if the filter is present, it could be from other view. 17 | if (detailElement) { 18 | value ? detailElement.setAttribute('open', '') : detailElement.removeAttribute('open'); 19 | } 20 | }); 21 | 22 | // Save filter state when clicks. 23 | const details = document.querySelectorAll('details'); 24 | details.forEach(detail => { 25 | detail.addEventListener('toggle', event => { 26 | filters[`${event.target.dataset.filterTitle}`] = detail.open; 27 | sessionStorage.setItem('django.admin.filtersState', JSON.stringify(filters)); 28 | }); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /staticfiles/admin/js/jquery.init.js: -------------------------------------------------------------------------------- 1 | /*global jQuery:false*/ 2 | 'use strict'; 3 | /* Puts the included jQuery into our own namespace using noConflict and passing 4 | * it 'true'. This ensures that the included jQuery doesn't pollute the global 5 | * namespace (i.e. this preserves pre-existing values for both window.$ and 6 | * window.jQuery). 7 | */ 8 | window.django = {jQuery: jQuery.noConflict(true)}; 9 | -------------------------------------------------------------------------------- /staticfiles/admin/js/nav_sidebar.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | { 3 | const toggleNavSidebar = document.getElementById('toggle-nav-sidebar'); 4 | if (toggleNavSidebar !== null) { 5 | const navLinks = document.querySelectorAll('#nav-sidebar a'); 6 | function disableNavLinkTabbing() { 7 | for (const navLink of navLinks) { 8 | navLink.tabIndex = -1; 9 | } 10 | } 11 | function enableNavLinkTabbing() { 12 | for (const navLink of navLinks) { 13 | navLink.tabIndex = 0; 14 | } 15 | } 16 | function disableNavFilterTabbing() { 17 | document.getElementById('nav-filter').tabIndex = -1; 18 | } 19 | function enableNavFilterTabbing() { 20 | document.getElementById('nav-filter').tabIndex = 0; 21 | } 22 | 23 | const main = document.getElementById('main'); 24 | let navSidebarIsOpen = localStorage.getItem('django.admin.navSidebarIsOpen'); 25 | if (navSidebarIsOpen === null) { 26 | navSidebarIsOpen = 'true'; 27 | } 28 | if (navSidebarIsOpen === 'false') { 29 | disableNavLinkTabbing(); 30 | disableNavFilterTabbing(); 31 | } 32 | main.classList.toggle('shifted', navSidebarIsOpen === 'true'); 33 | 34 | toggleNavSidebar.addEventListener('click', function() { 35 | if (navSidebarIsOpen === 'true') { 36 | navSidebarIsOpen = 'false'; 37 | disableNavLinkTabbing(); 38 | disableNavFilterTabbing(); 39 | } else { 40 | navSidebarIsOpen = 'true'; 41 | enableNavLinkTabbing(); 42 | enableNavFilterTabbing(); 43 | } 44 | localStorage.setItem('django.admin.navSidebarIsOpen', navSidebarIsOpen); 45 | main.classList.toggle('shifted'); 46 | }); 47 | } 48 | 49 | function initSidebarQuickFilter() { 50 | const options = []; 51 | const navSidebar = document.getElementById('nav-sidebar'); 52 | if (!navSidebar) { 53 | return; 54 | } 55 | navSidebar.querySelectorAll('th[scope=row] a').forEach((container) => { 56 | options.push({title: container.innerHTML, node: container}); 57 | }); 58 | 59 | function checkValue(event) { 60 | let filterValue = event.target.value; 61 | if (filterValue) { 62 | filterValue = filterValue.toLowerCase(); 63 | } 64 | if (event.key === 'Escape') { 65 | filterValue = ''; 66 | event.target.value = ''; // clear input 67 | } 68 | let matches = false; 69 | for (const o of options) { 70 | let displayValue = ''; 71 | if (filterValue) { 72 | if (o.title.toLowerCase().indexOf(filterValue) === -1) { 73 | displayValue = 'none'; 74 | } else { 75 | matches = true; 76 | } 77 | } 78 | // show/hide parent 79 | o.node.parentNode.parentNode.style.display = displayValue; 80 | } 81 | if (!filterValue || matches) { 82 | event.target.classList.remove('no-results'); 83 | } else { 84 | event.target.classList.add('no-results'); 85 | } 86 | sessionStorage.setItem('django.admin.navSidebarFilterValue', filterValue); 87 | } 88 | 89 | const nav = document.getElementById('nav-filter'); 90 | nav.addEventListener('change', checkValue, false); 91 | nav.addEventListener('input', checkValue, false); 92 | nav.addEventListener('keyup', checkValue, false); 93 | 94 | const storedValue = sessionStorage.getItem('django.admin.navSidebarFilterValue'); 95 | if (storedValue) { 96 | nav.value = storedValue; 97 | checkValue({target: nav, key: ''}); 98 | } 99 | } 100 | window.initSidebarQuickFilter = initSidebarQuickFilter; 101 | initSidebarQuickFilter(); 102 | } 103 | -------------------------------------------------------------------------------- /staticfiles/admin/js/popup_response.js: -------------------------------------------------------------------------------- 1 | /*global opener */ 2 | 'use strict'; 3 | { 4 | const initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); 5 | switch(initData.action) { 6 | case 'change': 7 | opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value); 8 | break; 9 | case 'delete': 10 | opener.dismissDeleteRelatedObjectPopup(window, initData.value); 11 | break; 12 | default: 13 | opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); 14 | break; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /staticfiles/admin/js/prepopulate.js: -------------------------------------------------------------------------------- 1 | /*global URLify*/ 2 | 'use strict'; 3 | { 4 | const $ = django.jQuery; 5 | $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { 6 | /* 7 | Depends on urlify.js 8 | Populates a selected field with the values of the dependent fields, 9 | URLifies and shortens the string. 10 | dependencies - array of dependent fields ids 11 | maxLength - maximum length of the URLify'd string 12 | allowUnicode - Unicode support of the URLify'd string 13 | */ 14 | return this.each(function() { 15 | const prepopulatedField = $(this); 16 | 17 | const populate = function() { 18 | // Bail if the field's value has been changed by the user 19 | if (prepopulatedField.data('_changed')) { 20 | return; 21 | } 22 | 23 | const values = []; 24 | $.each(dependencies, function(i, field) { 25 | field = $(field); 26 | if (field.val().length > 0) { 27 | values.push(field.val()); 28 | } 29 | }); 30 | prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); 31 | }; 32 | 33 | prepopulatedField.data('_changed', false); 34 | prepopulatedField.on('change', function() { 35 | prepopulatedField.data('_changed', true); 36 | }); 37 | 38 | if (!prepopulatedField.val()) { 39 | $(dependencies.join(',')).on('keyup change focus', populate); 40 | } 41 | }); 42 | }; 43 | } 44 | -------------------------------------------------------------------------------- /staticfiles/admin/js/prepopulate_init.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | { 3 | const $ = django.jQuery; 4 | const fields = $('#django-admin-prepopulated-fields-constants').data('prepopulatedFields'); 5 | $.each(fields, function(index, field) { 6 | $( 7 | '.empty-form .form-row .field-' + field.name + 8 | ', .empty-form.form-row .field-' + field.name + 9 | ', .empty-form .form-row.field-' + field.name 10 | ).addClass('prepopulated_field'); 11 | $(field.id).data('dependency_list', field.dependency_list).prepopulate( 12 | field.dependency_ids, field.maxLength, field.allowUnicode 13 | ); 14 | }); 15 | } 16 | -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/jquery/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright OpenJS Foundation and other contributors, https://openjsf.org/ 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/af.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Verwyders asseblief "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Voer asseblief "+(e.minimum-e.input.length)+" of meer karakters"},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var n="Kies asseblief net "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"},removeAllItems:function(){return"Verwyder alle items"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ar.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(n){return"الرجاء حذف "+(n.input.length-n.maximum)+" عناصر"},inputTooShort:function(n){return"الرجاء إضافة "+(n.minimum-n.input.length)+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(n){return"تستطيع إختيار "+n.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"},removeAllItems:function(){return"قم بإزالة كل العناصر"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/az.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/az",[],function(){return{inputTooLong:function(n){return n.input.length-n.maximum+" simvol silin"},inputTooShort:function(n){return n.minimum-n.input.length+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(n){return"Sadəcə "+n.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"},removeAllItems:function(){return"Bütün elementləri sil"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/bg.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bg",[],function(){return{inputTooLong:function(n){var e=n.input.length-n.maximum,u="Моля въведете с "+e+" по-малко символ";return e>1&&(u+="a"),u},inputTooShort:function(n){var e=n.minimum-n.input.length,u="Моля въведете още "+e+" символ";return e>1&&(u+="a"),u},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(n){var e="Можете да направите до "+n.maximum+" ";return n.maximum>1?e+="избора":e+="избор",e},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"},removeAllItems:function(){return"Премахнете всички елементи"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/bn.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।";return 1!=e&&(u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।"),u},inputTooShort:function(n){return n.minimum-n.input.length+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।"},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(n){var e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return 1!=n.maximum&&(e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।"),e},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/bs.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/bs",[],function(){function e(e,n,r,t){return e%10==1&&e%100!=11?n:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?r:t}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(n){var r=n.input.length-n.maximum,t="Obrišite "+r+" simbol";return t+=e(r,"","a","a")},inputTooShort:function(n){var r=n.minimum-n.input.length,t="Ukucajte bar još "+r+" simbol";return t+=e(r,"","a","a")},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(n){var r="Možete izabrati samo "+n.maximum+" stavk";return r+=e(n.maximum,"u","e","i")},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Uklonite sve stavke"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ca.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Si us plau, elimina "+n+" car";return r+=1==n?"àcter":"àcters"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Si us plau, introdueix "+n+" car";return r+=1==n?"àcter":"àcters"},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var n="Només es pot seleccionar "+e.maximum+" element";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/cs.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/cs",[],function(){function e(e,n){switch(e){case 2:return n?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?"Prosím, zadejte o jeden znak méně.":t<=4?"Prosím, zadejte o "+e(t,!0)+" znaky méně.":"Prosím, zadejte o "+t+" znaků méně."},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?"Prosím, zadejte ještě jeden znak.":t<=4?"Prosím, zadejte ještě další "+e(t,!0)+" znaky.":"Prosím, zadejte ještě dalších "+t+" znaků."},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(n){var t=n.maximum;return 1==t?"Můžete zvolit jen jednu položku.":t<=4?"Můžete zvolit maximálně "+e(t,!1)+" položky.":"Můžete zvolit maximálně "+t+" položek."},noResults:function(){return"Nenalezeny žádné položky."},searching:function(){return"Vyhledávání…"},removeAllItems:function(){return"Odstraňte všechny položky"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/da.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){return"Angiv venligst "+(e.input.length-e.maximum)+" tegn mindre"},inputTooShort:function(e){return"Angiv venligst "+(e.minimum-e.input.length)+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var n="Du kan kun vælge "+e.maximum+" emne";return 1!=e.maximum&&(n+="r"),n},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/de.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){return"Bitte "+(e.input.length-e.maximum)+" Zeichen weniger eingeben"},inputTooShort:function(e){return"Bitte "+(e.minimum-e.input.length)+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var n="Sie können nur "+e.maximum+" Element";return 1!=e.maximum&&(n+="e"),n+=" auswählen"},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Elemente"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/dsb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/dsb",[],function(){var n=["znamuško","znamušce","znamuška","znamuškow"],e=["zapisk","zapiska","zapiski","zapiskow"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return"Wuslědki njejsu se dali zacytaś."},inputTooLong:function(e){var a=e.input.length-e.maximum;return"Pšosym lašuj "+a+" "+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return"Pšosym zapódaj nanejmjenjej "+a+" "+u(a,n)},loadingMore:function(){return"Dalšne wuslědki se zacytaju…"},maximumSelected:function(n){return"Móžoš jano "+n.maximum+" "+u(n.maximum,e)+"wubraś."},noResults:function(){return"Žedne wuslědki namakane"},searching:function(){return"Pyta se…"},removeAllItems:function(){return"Remove all items"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/el.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(n){var e=n.input.length-n.maximum,u="Παρακαλώ διαγράψτε "+e+" χαρακτήρ";return 1==e&&(u+="α"),1!=e&&(u+="ες"),u},inputTooShort:function(n){return"Παρακαλώ συμπληρώστε "+(n.minimum-n.input.length)+" ή περισσότερους χαρακτήρες"},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(n){var e="Μπορείτε να επιλέξετε μόνο "+n.maximum+" επιλογ";return 1==n.maximum&&(e+="ή"),1!=n.maximum&&(e+="ές"),e},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"},removeAllItems:function(){return"Καταργήστε όλα τα στοιχεία"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/en.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Please delete "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var n="You can only select "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/es.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Por favor, elimine "+n+" car";return r+=1==n?"ácter":"acteres"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Por favor, introduzca "+n+" car";return r+=1==n?"ácter":"acteres"},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var n="Sólo puede seleccionar "+e.maximum+" elemento";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Eliminar todos los elementos"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/et.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" vähem"},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" rohkem"},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var n="Saad vaid "+e.maximum+" tulemus";return 1==e.maximum?n+="e":n+="t",n+=" valida"},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"},removeAllItems:function(){return"Eemalda kõik esemed"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/eu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gutxiago"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gehiago"},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return 1===e.maximum?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"},removeAllItems:function(){return"Kendu elementu guztiak"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/fa.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(n){return"لطفاً "+(n.input.length-n.maximum)+" کاراکتر را حذف نمایید"},inputTooShort:function(n){return"لطفاً تعداد "+(n.minimum-n.input.length)+" کاراکتر یا بیشتر وارد نمایید"},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(n){return"شما تنها می‌توانید "+n.maximum+" آیتم را انتخاب نمایید"},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."},removeAllItems:function(){return"همه موارد را حذف کنید"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/fi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(n){return"Ole hyvä ja anna "+(n.input.length-n.maximum)+" merkkiä vähemmän"},inputTooShort:function(n){return"Ole hyvä ja anna "+(n.minimum-n.input.length)+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(n){return"Voit valita ainoastaan "+n.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"},removeAllItems:function(){return"Poista kaikki kohteet"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/fr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var n=e.input.length-e.maximum;return"Supprimez "+n+" caractère"+(n>1?"s":"")},inputTooShort:function(e){var n=e.minimum-e.input.length;return"Saisissez au moins "+n+" caractère"+(n>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les éléments"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/gl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var n=e.input.length-e.maximum;return 1===n?"Elimine un carácter":"Elimine "+n+" caracteres"},inputTooShort:function(e){var n=e.minimum-e.input.length;return 1===n?"Engada un carácter":"Engada "+n+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return 1===e.maximum?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Elimina todos os elementos"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/he.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="נא למחוק ";return r+=1===e?"תו אחד":e+" תווים"},inputTooShort:function(n){var e=n.minimum-n.input.length,r="נא להכניס ";return r+=1===e?"תו אחד":e+" תווים",r+=" או יותר"},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(n){var e="באפשרותך לבחור עד ";return 1===n.maximum?e+="פריט אחד":e+=n.maximum+" פריטים",e},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"},removeAllItems:function(){return"הסר את כל הפריטים"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/hi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=e+" अक्षर को हटा दें";return e>1&&(r=e+" अक्षरों को हटा दें "),r},inputTooShort:function(n){return"कृपया "+(n.minimum-n.input.length)+" या अधिक अक्षर दर्ज करें"},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(n){return"आप केवल "+n.maximum+" आइटम का चयन कर सकते हैं"},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."},removeAllItems:function(){return"सभी वस्तुओं को हटा दें"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/hr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hr",[],function(){function n(n){var e=" "+n+" znak";return n%10<5&&n%10>0&&(n%100<5||n%100>19)?n%10>1&&(e+="a"):e+="ova",e}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(e){return"Unesite "+n(e.input.length-e.maximum)},inputTooShort:function(e){return"Unesite još "+n(e.minimum-e.input.length)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(n){return"Maksimalan broj odabranih stavki je "+n.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Ukloni sve stavke"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/hsb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hsb",[],function(){var n=["znamješko","znamješce","znamješka","znamješkow"],e=["zapisk","zapiskaj","zapiski","zapiskow"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return"Wuslědki njedachu so začitać."},inputTooLong:function(e){var a=e.input.length-e.maximum;return"Prošu zhašej "+a+" "+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return"Prošu zapodaj znajmjeńša "+a+" "+u(a,n)},loadingMore:function(){return"Dalše wuslědki so začitaja…"},maximumSelected:function(n){return"Móžeš jenož "+n.maximum+" "+u(n.maximum,e)+"wubrać"},noResults:function(){return"Žane wuslědki namakane"},searching:function(){return"Pyta so…"},removeAllItems:function(){return"Remove all items"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/hu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){return"Túl hosszú. "+(e.input.length-e.maximum)+" karakterrel több, mint kellene."},inputTooShort:function(e){return"Túl rövid. Még "+(e.minimum-e.input.length)+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"},removeAllItems:function(){return"Távolítson el minden elemet"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/hy.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(n){return"Խնդրում ենք հեռացնել "+(n.input.length-n.maximum)+" նշան"},inputTooShort:function(n){return"Խնդրում ենք մուտքագրել "+(n.minimum-n.input.length)+" կամ ավել նշաններ"},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(n){return"Դուք կարող եք ընտրել առավելագույնը "+n.maximum+" կետ"},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"},removeAllItems:function(){return"Հեռացնել բոլոր տարրերը"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/id.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(n){return"Hapuskan "+(n.input.length-n.maximum)+" huruf"},inputTooShort:function(n){return"Masukkan "+(n.minimum-n.input.length)+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(n){return"Anda hanya dapat memilih "+n.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Hapus semua item"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/is.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/is",[],function(){return{inputTooLong:function(n){var t=n.input.length-n.maximum,e="Vinsamlegast styttið texta um "+t+" staf";return t<=1?e:e+"i"},inputTooShort:function(n){var t=n.minimum-n.input.length,e="Vinsamlegast skrifið "+t+" staf";return t>1&&(e+="i"),e+=" í viðbót"},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(n){return"Þú getur aðeins valið "+n.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"},removeAllItems:function(){return"Fjarlægðu öll atriði"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/it.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Per favore cancella "+n+" caratter";return t+=1!==n?"i":"e"},inputTooShort:function(e){return"Per favore inserisci "+(e.minimum-e.input.length)+" o più caratteri"},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var n="Puoi selezionare solo "+e.maximum+" element";return 1!==e.maximum?n+="i":n+="o",n},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"},removeAllItems:function(){return"Rimuovi tutti gli oggetti"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ja.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(n){return n.input.length-n.maximum+" 文字を削除してください"},inputTooShort:function(n){return"少なくとも "+(n.minimum-n.input.length)+" 文字を入力してください"},loadingMore:function(){return"読み込み中…"},maximumSelected:function(n){return n.maximum+" 件しか選択できません"},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"},removeAllItems:function(){return"すべてのアイテムを削除"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ka.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ka",[],function(){return{errorLoading:function(){return"მონაცემების ჩატვირთვა შეუძლებელია."},inputTooLong:function(n){return"გთხოვთ აკრიფეთ "+(n.input.length-n.maximum)+" სიმბოლოთი ნაკლები"},inputTooShort:function(n){return"გთხოვთ აკრიფეთ "+(n.minimum-n.input.length)+" სიმბოლო ან მეტი"},loadingMore:function(){return"მონაცემების ჩატვირთვა…"},maximumSelected:function(n){return"თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს "+n.maximum+" ელემენტი"},noResults:function(){return"რეზულტატი არ მოიძებნა"},searching:function(){return"ძიება…"},removeAllItems:function(){return"ამოიღე ყველა ელემენტი"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/km.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(n){return"សូមលុបចេញ "+(n.input.length-n.maximum)+" អក្សរ"},inputTooShort:function(n){return"សូមបញ្ចូល"+(n.minimum-n.input.length)+" អក្សរ រឺ ច្រើនជាងនេះ"},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(n){return"អ្នកអាចជ្រើសរើសបានតែ "+n.maximum+" ជម្រើសប៉ុណ្ណោះ"},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."},removeAllItems:function(){return"លុបធាតុទាំងអស់"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ko.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(n){return"너무 깁니다. "+(n.input.length-n.maximum)+" 글자 지워주세요."},inputTooShort:function(n){return"너무 짧습니다. "+(n.minimum-n.input.length)+" 글자 더 입력해주세요."},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(n){return"최대 "+n.maximum+"개까지만 선택 가능합니다."},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"},removeAllItems:function(){return"모든 항목 삭제"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/lt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/lt",[],function(){function n(n,e,i,t){return n%10==1&&(n%100<11||n%100>19)?e:n%10>=2&&n%10<=9&&(n%100<11||n%100>19)?i:t}return{inputTooLong:function(e){var i=e.input.length-e.maximum,t="Pašalinkite "+i+" simbol";return t+=n(i,"į","ius","ių")},inputTooShort:function(e){var i=e.minimum-e.input.length,t="Įrašykite dar "+i+" simbol";return t+=n(i,"į","ius","ių")},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(e){var i="Jūs galite pasirinkti tik "+e.maximum+" element";return i+=n(e.maximum,"ą","us","ų")},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"},removeAllItems:function(){return"Pašalinti visus elementus"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/lv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/lv",[],function(){function e(e,n,u,i){return 11===e?n:e%10==1?u:i}return{inputTooLong:function(n){var u=n.input.length-n.maximum,i="Lūdzu ievadiet par "+u;return(i+=" simbol"+e(u,"iem","u","iem"))+" mazāk"},inputTooShort:function(n){var u=n.minimum-n.input.length,i="Lūdzu ievadiet vēl "+u;return i+=" simbol"+e(u,"us","u","us")},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(n){var u="Jūs varat izvēlēties ne vairāk kā "+n.maximum;return u+=" element"+e(n.maximum,"us","u","us")},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"},removeAllItems:function(){return"Noņemt visus vienumus"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/mk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/mk",[],function(){return{inputTooLong:function(n){var e=(n.input.length,n.maximum,"Ве молиме внесете "+n.maximum+" помалку карактер");return 1!==n.maximum&&(e+="и"),e},inputTooShort:function(n){var e=(n.minimum,n.input.length,"Ве молиме внесете уште "+n.maximum+" карактер");return 1!==n.maximum&&(e+="и"),e},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(n){var e="Можете да изберете само "+n.maximum+" ставк";return 1===n.maximum?e+="а":e+="и",e},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"},removeAllItems:function(){return"Отстрани ги сите предмети"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ms.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(n){return"Sila hapuskan "+(n.input.length-n.maximum)+" aksara"},inputTooShort:function(n){return"Sila masukkan "+(n.minimum-n.input.length)+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(n){return"Anda hanya boleh memilih "+n.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Keluarkan semua item"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/nb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){return"Vennligst fjern "+(e.input.length-e.maximum)+" tegn"},inputTooShort:function(e){return"Vennligst skriv inn "+(e.minimum-e.input.length)+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ne.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ne",[],function(){return{errorLoading:function(){return"नतिजाहरु देखाउन सकिएन।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="कृपया "+e+" अक्षर मेटाउनुहोस्।";return 1!=e&&(u+="कृपया "+e+" अक्षरहरु मेटाउनुहोस्।"),u},inputTooShort:function(n){return"कृपया बाँकी रहेका "+(n.minimum-n.input.length)+" वा अरु धेरै अक्षरहरु भर्नुहोस्।"},loadingMore:function(){return"अरु नतिजाहरु भरिँदैछन् …"},maximumSelected:function(n){var e="तँपाई "+n.maximum+" वस्तु मात्र छान्न पाउँनुहुन्छ।";return 1!=n.maximum&&(e="तँपाई "+n.maximum+" वस्तुहरु मात्र छान्न पाउँनुहुन्छ।"),e},noResults:function(){return"कुनै पनि नतिजा भेटिएन।"},searching:function(){return"खोजि हुँदैछ…"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/nl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){return"Gelieve "+(e.input.length-e.maximum)+" karakters te verwijderen"},inputTooShort:function(e){return"Gelieve "+(e.minimum-e.input.length)+" of meer karakters in te voeren"},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var n=1==e.maximum?"kan":"kunnen",r="Er "+n+" maar "+e.maximum+" item";return 1!=e.maximum&&(r+="s"),r+=" worden geselecteerd"},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/pl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/pl",[],function(){var n=["znak","znaki","znaków"],e=["element","elementy","elementów"],r=function(n,e){return 1===n?e[0]:n>1&&n<=4?e[1]:n>=5?e[2]:void 0};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Usuń "+t+" "+r(t,n)},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Podaj przynajmniej "+t+" "+r(t,n)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(n){return"Możesz zaznaczyć tylko "+n.maximum+" "+r(n.maximum,e)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"},removeAllItems:function(){return"Usuń wszystkie przedmioty"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ps.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ps",[],function(){return{errorLoading:function(){return"پايلي نه سي ترلاسه کېدای"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="د مهربانۍ لمخي "+e+" توری ړنګ کړئ";return 1!=e&&(r=r.replace("توری","توري")),r},inputTooShort:function(n){return"لږ تر لږه "+(n.minimum-n.input.length)+" يا ډېر توري وليکئ"},loadingMore:function(){return"نوري پايلي ترلاسه کيږي..."},maximumSelected:function(n){var e="تاسو يوازي "+n.maximum+" قلم په نښه کولای سی";return 1!=n.maximum&&(e=e.replace("قلم","قلمونه")),e},noResults:function(){return"پايلي و نه موندل سوې"},searching:function(){return"لټول کيږي..."},removeAllItems:function(){return"ټول توکي لرې کړئ"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/pt-BR.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Apague "+n+" caracter";return 1!=n&&(r+="es"),r},inputTooShort:function(e){return"Digite "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var n="Você só pode selecionar "+e.maximum+" ite";return 1==e.maximum?n+="m":n+="ns",n},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/pt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var r=e.input.length-e.maximum,n="Por favor apague "+r+" ";return n+=1!=r?"caracteres":"caractere"},inputTooShort:function(e){return"Introduza "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var r="Apenas pode seleccionar "+e.maximum+" ";return r+=1!=e.maximum?"itens":"item"},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ro.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return 1!==t&&(n+="e"),n},inputTooShort:function(e){return"Vă rugăm să introduceți "+(e.minimum-e.input.length)+" sau mai multe caractere"},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",1!==e.maximum&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"},removeAllItems:function(){return"Eliminați toate elementele"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/ru.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ru",[],function(){function n(n,e,r,u){return n%10<5&&n%10>0&&n%100<5||n%100>20?n%10>1?r:e:u}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(e){var r=e.input.length-e.maximum,u="Пожалуйста, введите на "+r+" символ";return u+=n(r,"","a","ов"),u+=" меньше"},inputTooShort:function(e){var r=e.minimum-e.input.length,u="Пожалуйста, введите ещё хотя бы "+r+" символ";return u+=n(r,"","a","ов")},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(e){var r="Вы можете выбрать не более "+e.maximum+" элемент";return r+=n(e.maximum,"","a","ов")},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"},removeAllItems:function(){return"Удалить все элементы"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/sk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{errorLoading:function(){return"Výsledky sa nepodarilo načítať."},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?"Prosím, zadajte o jeden znak menej":t>=2&&t<=4?"Prosím, zadajte o "+e[t](!0)+" znaky menej":"Prosím, zadajte o "+t+" znakov menej"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?"Prosím, zadajte ešte jeden znak":t<=4?"Prosím, zadajte ešte ďalšie "+e[t](!0)+" znaky":"Prosím, zadajte ešte ďalších "+t+" znakov"},loadingMore:function(){return"Načítanie ďalších výsledkov…"},maximumSelected:function(n){return 1==n.maximum?"Môžete zvoliť len jednu položku":n.maximum>=2&&n.maximum<=4?"Môžete zvoliť najviac "+e[n.maximum](!1)+" položky":"Môžete zvoliť najviac "+n.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"},removeAllItems:function(){return"Odstráňte všetky položky"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/sl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Prosim zbrišite "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Prosim vpišite še "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var n="Označite lahko največ "+e.maximum+" predmet";return 2==e.maximum?n+="a":1!=e.maximum&&(n+="e"),n},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"},removeAllItems:function(){return"Odstranite vse elemente"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/sq.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sq",[],function(){return{errorLoading:function(){return"Rezultatet nuk mund të ngarkoheshin."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Të lutem fshi "+n+" karakter";return 1!=n&&(t+="e"),t},inputTooShort:function(e){return"Të lutem shkruaj "+(e.minimum-e.input.length)+" ose më shumë karaktere"},loadingMore:function(){return"Duke ngarkuar më shumë rezultate…"},maximumSelected:function(e){var n="Mund të zgjedhësh vetëm "+e.maximum+" element";return 1!=e.maximum&&(n+="e"),n},noResults:function(){return"Nuk u gjet asnjë rezultat"},searching:function(){return"Duke kërkuar…"},removeAllItems:function(){return"Hiq të gjitha sendet"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sr-Cyrl",[],function(){function n(n,e,r,u){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:u}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(e){var r=e.input.length-e.maximum,u="Обришите "+r+" симбол";return u+=n(r,"","а","а")},inputTooShort:function(e){var r=e.minimum-e.input.length,u="Укуцајте бар још "+r+" симбол";return u+=n(r,"","а","а")},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(e){var r="Можете изабрати само "+e.maximum+" ставк";return r+=n(e.maximum,"у","е","и")},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"},removeAllItems:function(){return"Уклоните све ставке"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/sr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sr",[],function(){function n(n,e,r,t){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:t}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(e){var r=e.input.length-e.maximum,t="Obrišite "+r+" simbol";return t+=n(r,"","a","a")},inputTooShort:function(e){var r=e.minimum-e.input.length,t="Ukucajte bar još "+r+" simbol";return t+=n(r,"","a","a")},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(e){var r="Možete izabrati samo "+e.maximum+" stavk";return r+=n(e.maximum,"u","e","i")},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Уклоните све ставке"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/sv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(n){return"Vänligen sudda ut "+(n.input.length-n.maximum)+" tecken"},inputTooShort:function(n){return"Vänligen skriv in "+(n.minimum-n.input.length)+" eller fler tecken"},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(n){return"Du kan max välja "+n.maximum+" element"},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"},removeAllItems:function(){return"Ta bort alla objekt"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/th.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(n){return"โปรดลบออก "+(n.input.length-n.maximum)+" ตัวอักษร"},inputTooShort:function(n){return"โปรดพิมพ์เพิ่มอีก "+(n.minimum-n.input.length)+" ตัวอักษร"},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(n){return"คุณสามารถเลือกได้ไม่เกิน "+n.maximum+" รายการ"},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"},removeAllItems:function(){return"ลบรายการทั้งหมด"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/tk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){return e.input.length-e.maximum+" harp bozuň."},inputTooShort:function(e){return"Ýene-de iň az "+(e.minimum-e.input.length)+" harp ýazyň."},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){return"Diňe "+e.maximum+" sanysyny saýlaň."},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/tr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(n){return n.input.length-n.maximum+" karakter daha girmelisiniz"},inputTooShort:function(n){return"En az "+(n.minimum-n.input.length)+" karakter daha girmelisiniz"},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(n){return"Sadece "+n.maximum+" seçim yapabilirsiniz"},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"},removeAllItems:function(){return"Tüm öğeleri kaldır"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/uk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/uk",[],function(){function n(n,e,u,r){return n%100>10&&n%100<15?r:n%10==1?e:n%10>1&&n%10<5?u:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(e){return"Будь ласка, видаліть "+(e.input.length-e.maximum)+" "+n(e.maximum,"літеру","літери","літер")},inputTooShort:function(n){return"Будь ласка, введіть "+(n.minimum-n.input.length)+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(e){return"Ви можете вибрати лише "+e.maximum+" "+n(e.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"},removeAllItems:function(){return"Видалити всі елементи"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/vi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/vi",[],function(){return{inputTooLong:function(n){return"Vui lòng xóa bớt "+(n.input.length-n.maximum)+" ký tự"},inputTooShort:function(n){return"Vui lòng nhập thêm từ "+(n.minimum-n.input.length)+" ký tự trở lên"},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(n){return"Chỉ có thể chọn được "+n.maximum+" lựa chọn"},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"},removeAllItems:function(){return"Xóa tất cả các mục"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/zh-CN.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(n){return"请删除"+(n.input.length-n.maximum)+"个字符"},inputTooShort:function(n){return"请再输入至少"+(n.minimum-n.input.length)+"个字符"},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(n){return"最多只能选择"+n.maximum+"个项目"},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"},removeAllItems:function(){return"删除所有项目"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/select2/i18n/zh-TW.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(n){return"請刪掉"+(n.input.length-n.maximum)+"個字元"},inputTooShort:function(n){return"請再輸入"+(n.minimum-n.input.length)+"個字元"},loadingMore:function(){return"載入中…"},maximumSelected:function(n){return"你只能選擇最多"+n.maximum+"項"},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"},removeAllItems:function(){return"刪除所有項目"}}}),n.define,n.require}(); -------------------------------------------------------------------------------- /staticfiles/admin/js/vendor/xregexp/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2007-2017 Steven Levithan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /staticfiles/css/main.e7772a38.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css2?family=Lexend:wght@400;600;700&display=swap);:root{--color-main:#f68657;--color-text:#383a3f;--color-dark:#1f2124;--color-gray:#677;--color-bg:#f3f6f9;--color-light:#acb4bd;--color-lighter:#f9f9f9;--color-white:#fff;--color-border:#e0e3e6}.dark{--color-main:#f68657;--color-text:#d6d1d1;--color-dark:#f5f6f7;--color-gray:#999;--color-bg:#1f2124;--color-lighter:#292a2c;--color-white:#2e3235;--color-border:#252629}*{box-sizing:border-box;color:inherit;font-family:Lexend,sans-serif;font-size:inherit;margin:0;padding:0;scroll-behavior:smooth}body{font-size:16px;font-weight:400;line-height:1.8em}a{text-decoration:none}.container{align-items:center;background-color:#f3f6f9;background-color:var(--color-bg);color:#383a3f;color:var(--color-text);display:flex;height:100vh;width:100%}.app{background-color:#fff;background-color:var(--color-white);box-shadow:1px 1px 6px rgba(0,0,0,.05);height:88vh;margin:0 auto;max-width:480px;position:relative;width:100%}.app-header{align-items:center;background-color:#f9f9f9;background-color:var(--color-lighter);box-shadow:0 1px 3px rgba(0,0,0,.1);display:flex;justify-content:space-between;padding:16px}.app-header h1{color:#1f2124;color:var(--color-dark);font-size:30px;font-weight:800;text-align:center}.app-header button{background:transparent;border:0;cursor:pointer}.app-header button>svg{fill:#1f2124;fill:var(--color-dark);height:25px;object-fit:cover;width:25px}.app-body{padding:16px}.notes-header{align-items:center;display:flex;justify-content:space-between;padding:10px 16px}.notes-count,.notes-title{color:#f68657;color:var(--color-main);font-size:24px;font-weight:600}.notes-count{color:#677;color:var(--color-gray);font-size:18px}.notes-list{height:70vh;margin:16px 0;overflow-y:auto;padding:0;scrollbar-width:none}.notes-list::-webkit-scrollbar{display:none}.notes-list-item{border-bottom:1px solid #e0e3e6;border-bottom:1px solid var(--color-border);margin-bottom:12px;padding:8px 16px;transition:all .2s ease-in-out}.notes-list-item:hover{background-color:#f3f6f9;background-color:var(--color-bg);cursor:pointer}.notes-list-item h3,.notes-list-item p span{font-weight:600}.notes-list-item p span{color:#677;color:var(--color-gray);display:inline-block;margin-right:8px}.notes-list-item p{color:#acb4bd;color:var(--color-light);font-size:14px}.floating-button{align-items:center;background:#f68657;background:var(--color-main);border:none;border-radius:50%;bottom:24px;box-shadow:1px 1px 10px rgba(0,0,0,.2);cursor:pointer;display:flex;font-size:48px;height:60px;justify-content:center;position:absolute;right:16px;width:60px}.floating-button>svg{fill:#f3f6f9;fill:var(--color-bg)}.note-header{color:#f68657;color:var(--color-main);justify-content:space-between;padding:10px}.note-header,.note-header h3{align-items:center;display:flex}.note-header h3{cursor:pointer;font-size:24px}.note-header h3 svg{fill:#f68657;fill:var(--color-main);margin-right:8px;width:20px}.note-header button{background-color:initial;border:none;cursor:pointer;font-size:18px;font-weight:600;outline:none}.note textarea{background-color:#fff;background-color:var(--color-white);border:none;height:70vh;padding:16px 12px;resize:none;scrollbar-width:none;width:100%}.note textarea:active,.note textarea:focus{border:none;outline:none}.note textarea::-webkit-scrollbar{display:none} 2 | /*# sourceMappingURL=main.e7772a38.css.map*/ -------------------------------------------------------------------------------- /staticfiles/css/main.e7772a38.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"static/css/main.e7772a38.css","mappings":"2FAIA,MACE,oBAAqB,CACrB,oBAAqB,CACrB,oBAAqB,CACrB,iBAAkB,CAClB,kBAAmB,CACnB,qBAAsB,CACtB,uBAAwB,CACxB,kBAAmB,CACnB,sBACF,CAEA,MACE,oBAAqB,CACrB,oBAAqB,CACrB,oBAAqB,CACrB,iBAAkB,CAClB,kBAAmB,CACnB,uBAAwB,CACxB,qBAAsB,CACtB,sBACF,CAKA,EAGE,qBAAsB,CAEtB,aAAc,CADd,6BAAiC,CAEjC,iBAAkB,CALlB,QAAS,CACT,SAAU,CAKV,sBACF,CAGA,KAGE,cAAe,CADf,eAAgB,CADhB,iBAGF,CAEA,EACE,oBACF,CAKA,WAME,kBAAmB,CAFnB,wBAAiC,CAAjC,gCAAiC,CADjC,aAAwB,CAAxB,uBAAwB,CAExB,YAAa,CAHb,YAAa,CADb,UAMF,CAGA,KAKE,qBAAoC,CAApC,mCAAoC,CACpC,sCAA2C,CAH3C,WAAY,CACZ,aAAc,CAFd,eAAgB,CAKhB,iBAAkB,CANlB,UAOF,CAGA,YAEE,kBAAmB,CAGnB,wBAAsC,CAAtC,qCAAsC,CACtC,mCAA0C,CAL1C,YAAa,CAGb,6BAA8B,CAD9B,YAIF,CAEA,eAEE,aAAwB,CAAxB,uBAAwB,CADxB,cAAe,CAEf,eAAgB,CAChB,iBACF,CAEA,mBAEE,sBAAuB,CADvB,QAAS,CAET,cACF,CAEA,uBACE,YAAuB,CAAvB,sBAAuB,CACvB,WAAY,CAEZ,gBAAiB,CADjB,UAEF,CAEA,UACE,YACF,CAKA,cAEE,kBAAmB,CADnB,YAAa,CAEb,6BAA8B,CAC9B,iBACF,CAEA,0BAEE,aAAwB,CAAxB,uBAAwB,CACxB,cAAe,CACf,eACF,CAEA,aAEE,UAAwB,CAAxB,uBAAwB,CADxB,cAEF,CAGA,YAGE,WAAY,CADZ,aAAc,CAEd,eAAgB,CAHhB,SAAU,CAIV,oBACF,CAEA,+BACE,YACF,CAEA,iBACE,+BAA6C,CAA7C,2CAA6C,CAC7C,kBAAmB,CACnB,gBAAiB,CACjB,8BACF,CAEA,uBACE,wBAAiC,CAAjC,gCAAiC,CACjC,cACF,CAEA,4CAEE,eACF,CAGA,wBACE,UAAwB,CAAxB,uBAAwB,CACxB,oBAAqB,CACrB,gBACF,CAEA,mBAEE,aAAyB,CAAzB,wBAAyB,CADzB,cAEF,CAEA,iBAWE,kBAAmB,CANnB,kBAA6B,CAA7B,4BAA6B,CAC7B,WAAY,CAGZ,iBAAkB,CANlB,WAAY,CAWZ,sCAA2C,CAD3C,cAAe,CAHf,YAAa,CATb,cAAe,CAOf,WAAY,CAIZ,sBAAuB,CAVvB,iBAAkB,CAElB,UAAW,CAGX,UAQF,CAGA,qBACE,YAAqB,CAArB,oBACF,CAQA,aAIE,aAAwB,CAAxB,uBAAwB,CADxB,6BAA8B,CAE9B,YACF,CAEA,6BANE,kBAAmB,CADnB,YAYF,CALA,gBAIE,cAAe,CADf,cAEF,CAEA,oBACE,YAAuB,CAAvB,sBAAuB,CAEvB,gBAAiB,CADjB,UAEF,CAEA,oBAIE,wBAA6B,CAH7B,WAAY,CAKZ,cAAe,CADf,cAAe,CAFf,eAAgB,CADhB,YAKF,CAEA,eACE,qBAAoC,CAApC,mCAAoC,CACpC,WAAY,CAGZ,WAAY,CAFZ,iBAAkB,CAGlB,WAAY,CACZ,oBAAqB,CAHrB,UAIF,CAEA,2CAGE,WAAY,CADZ,YAEF,CAEA,kCACE,YACF","sources":["App.css"],"sourcesContent":["@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@400;600;700&display=swap');\n\n\n\n:root {\n --color-main: #f68657;\n --color-text: #383a3f;\n --color-dark: #1f2124;\n --color-gray: #677;\n --color-bg: #f3f6f9;\n --color-light: #acb4bd;\n --color-lighter: #f9f9f9;\n --color-white: #fff;\n --color-border:#e0e3e6;\n}\n\n.dark {\n --color-main: #f68657;\n --color-text: #d6d1d1;\n --color-dark: #f5f6f7;\n --color-gray: #999;\n --color-bg: #1f2124;\n --color-lighter: #292a2c;\n --color-white: #2e3235;\n --color-border:#252629;\n}\n\n/* BASE STYLES */\n\n\n*{\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-family: 'Lexend', sans-serif;\n color: inherit;\n font-size: inherit;\n scroll-behavior: smooth;\n}\n\n\nbody{\n line-height: 1.8em;\n font-weight: 400;\n font-size: 16px;\n}\n\na {\n text-decoration: none;\n}\n\n/* APP STYLES */\n\n\n.container {\n width: 100%;\n height: 100vh;\n color: var(--color-text);\n background-color: var(--color-bg);\n display: flex;\n align-items: center;\n}\n\n\n.app {\n width: 100%;\n max-width: 480px;\n height: 88vh;\n margin: 0 auto;\n background-color: var(--color-white);\n box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.05);\n position: relative;\n}\n\n\n.app-header {\n display: flex;\n align-items: center;\n padding: 16px;\n justify-content: space-between;\n background-color: var(--color-lighter);\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.app-header h1 {\n font-size: 30px;\n color: var(--color-dark);\n font-weight: 800;\n text-align: center;\n}\n\n.app-header button {\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.app-header button > svg {\n fill: var(--color-dark);\n height: 25px;\n width: 25px;\n object-fit: cover;\n}\n\n.app-body {\n padding: 16px;\n}\n\n\n/* NOTES STYLES */\n\n.notes-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n}\n\n.notes-title,\n.notes-count {\n color: var(--color-main);\n font-size: 24px;\n font-weight: 600;\n}\n\n.notes-count {\n font-size: 18px;\n color: var(--color-gray);\n}\n\n\n.notes-list {\n padding: 0;\n margin: 16px 0;\n height: 70vh;\n overflow-y: auto;\n scrollbar-width: none; /* Firefox */\n}\n\n.notes-list::-webkit-scrollbar {\n display: none;\n}\n\n.notes-list-item {\n border-bottom: 1px solid var(--color-border);\n margin-bottom: 12px;\n padding: 8px 16px;\n transition: all 0.2s ease-in-out;\n}\n\n.notes-list-item:hover {\n background-color: var(--color-bg);\n cursor: pointer;\n}\n\n.notes-list-item h3,\n.notes-list-item p span {\n font-weight: 600;\n}\n\n\n.notes-list-item p span {\n color: var(--color-gray);\n display: inline-block;\n margin-right: 8px;\n}\n\n.notes-list-item p {\n font-size: 14px;\n color: var(--color-light);\n}\n\n.floating-button {\n font-size: 48px;\n position: absolute;\n bottom: 24px;\n right: 16px;\n background: var(--color-main);\n border: none;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.2);\n}\n\n\n.floating-button > svg {\n fill: var(--color-bg);\n}\n\n\n\n/*==============================\n=> Note Styles\n================================*/\n\n.note-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--color-main);\n padding: 10px;\n}\n\n.note-header h3 {\n display: flex;\n align-items: center;\n font-size: 24px;\n cursor: pointer;\n}\n\n.note-header h3 svg {\n fill: var(--color-main);\n width: 20px;\n margin-right: 8px;\n}\n\n.note-header button {\n border: none;\n outline: none;\n font-weight: 600;\n background-color: transparent;\n font-size: 18px;\n cursor: pointer;\n}\n\n.note textarea {\n background-color: var(--color-white);\n border: none;\n padding: 16px 12px;\n width: 100%;\n height: 70vh;\n resize: none;\n scrollbar-width: none; /* Firefox */\n}\n\n.note textarea:active,\n.note textarea:focus {\n outline: none;\n border: none;\n}\n\n.note textarea::-webkit-scrollbar {\n display: none;\n}"],"names":[],"sourceRoot":""} -------------------------------------------------------------------------------- /staticfiles/js/main.d825d148.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ 2 | 3 | /** 4 | * @license React 5 | * react-dom.production.min.js 6 | * 7 | * Copyright (c) Facebook, Inc. and its affiliates. 8 | * 9 | * This source code is licensed under the MIT license found in the 10 | * LICENSE file in the root directory of this source tree. 11 | */ 12 | 13 | /** 14 | * @license React 15 | * react-jsx-runtime.production.min.js 16 | * 17 | * Copyright (c) Facebook, Inc. and its affiliates. 18 | * 19 | * This source code is licensed under the MIT license found in the 20 | * LICENSE file in the root directory of this source tree. 21 | */ 22 | 23 | /** 24 | * @license React 25 | * react.production.min.js 26 | * 27 | * Copyright (c) Facebook, Inc. and its affiliates. 28 | * 29 | * This source code is licensed under the MIT license found in the 30 | * LICENSE file in the root directory of this source tree. 31 | */ 32 | 33 | /** 34 | * @license React 35 | * scheduler.production.min.js 36 | * 37 | * Copyright (c) Facebook, Inc. and its affiliates. 38 | * 39 | * This source code is licensed under the MIT license found in the 40 | * LICENSE file in the root directory of this source tree. 41 | */ 42 | 43 | /** 44 | * @remix-run/router v1.3.0 45 | * 46 | * Copyright (c) Remix Software Inc. 47 | * 48 | * This source code is licensed under the MIT license found in the 49 | * LICENSE.md file in the root directory of this source tree. 50 | * 51 | * @license MIT 52 | */ 53 | 54 | /** 55 | * React Router DOM v6.7.0 56 | * 57 | * Copyright (c) Remix Software Inc. 58 | * 59 | * This source code is licensed under the MIT license found in the 60 | * LICENSE.md file in the root directory of this source tree. 61 | * 62 | * @license MIT 63 | */ 64 | 65 | /** 66 | * React Router v6.7.0 67 | * 68 | * Copyright (c) Remix Software Inc. 69 | * 70 | * This source code is licensed under the MIT license found in the 71 | * LICENSE.md file in the root directory of this source tree. 72 | * 73 | * @license MIT 74 | */ 75 | -------------------------------------------------------------------------------- /staticfiles/media/add.ebf598626c6f9b2211b0578a435aaa6b.svg: -------------------------------------------------------------------------------- 1 | 2 | add 3 | 4 | 5 | -------------------------------------------------------------------------------- /staticfiles/media/arrow-left.b553318e4fdaed1113efb091889b7f47.svg: -------------------------------------------------------------------------------- 1 | 2 | chevron-left 3 | 4 | 5 | -------------------------------------------------------------------------------- /staticfiles/rest_framework/css/bootstrap-tweaks.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | This CSS file contains some tweaks specific to the included Bootstrap theme. 4 | It's separate from `style.css` so that it can be easily overridden by replacing 5 | a single block in the template. 6 | 7 | */ 8 | 9 | .form-actions { 10 | background: transparent; 11 | border-top-color: transparent; 12 | padding-top: 0; 13 | text-align: right; 14 | } 15 | 16 | #generic-content-form textarea { 17 | font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace; 18 | font-size: 80%; 19 | } 20 | 21 | .navbar-inverse .brand a { 22 | color: #999999; 23 | } 24 | .navbar-inverse .brand:hover a { 25 | color: white; 26 | text-decoration: none; 27 | } 28 | 29 | /* custom navigation styles */ 30 | .navbar { 31 | width: 100%; 32 | position: fixed; 33 | left: 0; 34 | top: 0; 35 | } 36 | 37 | .navbar { 38 | background: #2C2C2C; 39 | color: white; 40 | border: none; 41 | border-top: 5px solid #A30000; 42 | border-radius: 0px; 43 | } 44 | 45 | .navbar .nav li, .navbar .nav li a, .navbar .brand:hover { 46 | color: white; 47 | } 48 | 49 | .nav-list > .active > a, .nav-list > .active > a:hover { 50 | background: #2C2C2C; 51 | } 52 | 53 | .navbar .dropdown-menu li a, .navbar .dropdown-menu li { 54 | color: #A30000; 55 | } 56 | 57 | .navbar .dropdown-menu li a:hover { 58 | background: #EEEEEE; 59 | color: #C20000; 60 | } 61 | 62 | ul.breadcrumb { 63 | margin: 70px 0 0 0; 64 | } 65 | 66 | .breadcrumb li.active a { 67 | color: #777; 68 | } 69 | 70 | .pagination>.disabled>a, 71 | .pagination>.disabled>a:hover, 72 | .pagination>.disabled>a:focus { 73 | cursor: not-allowed; 74 | pointer-events: none; 75 | } 76 | 77 | .pager>.disabled>a, 78 | .pager>.disabled>a:hover, 79 | .pager>.disabled>a:focus { 80 | pointer-events: none; 81 | } 82 | 83 | .pager .next { 84 | margin-left: 10px; 85 | } 86 | 87 | /*=== dabapps bootstrap styles ====*/ 88 | 89 | html { 90 | width:100%; 91 | background: none; 92 | } 93 | 94 | /*body, .navbar .container-fluid { 95 | max-width: 1150px; 96 | margin: 0 auto; 97 | }*/ 98 | 99 | body { 100 | background: url("../img/grid.png") repeat-x; 101 | background-attachment: fixed; 102 | } 103 | 104 | #content { 105 | margin: 0; 106 | padding-bottom: 60px; 107 | } 108 | 109 | /* sticky footer and footer */ 110 | html, body { 111 | height: 100%; 112 | } 113 | 114 | .wrapper { 115 | position: relative; 116 | top: 0; 117 | left: 0; 118 | padding-top: 60px; 119 | margin: -60px 0; 120 | min-height: 100%; 121 | } 122 | 123 | .form-switcher { 124 | margin-bottom: 0; 125 | } 126 | 127 | .well { 128 | -webkit-box-shadow: none; 129 | -moz-box-shadow: none; 130 | box-shadow: none; 131 | } 132 | 133 | .well .form-actions { 134 | padding-bottom: 0; 135 | margin-bottom: 0; 136 | } 137 | 138 | .well form { 139 | margin-bottom: 0; 140 | } 141 | 142 | .nav-tabs { 143 | border: 0; 144 | } 145 | 146 | .nav-tabs > li { 147 | float: right; 148 | } 149 | 150 | .nav-tabs li a { 151 | margin-right: 0; 152 | } 153 | 154 | .nav-tabs > .active > a { 155 | background: #F5F5F5; 156 | } 157 | 158 | .nav-tabs > .active > a:hover { 159 | background: #F5F5F5; 160 | } 161 | 162 | .tabbable.first-tab-active .tab-content { 163 | border-top-right-radius: 0; 164 | } 165 | 166 | footer { 167 | position: absolute; 168 | bottom: 0; 169 | left: 0; 170 | clear: both; 171 | z-index: 10; 172 | height: 60px; 173 | width: 95%; 174 | margin: 0 2.5%; 175 | } 176 | 177 | footer p { 178 | text-align: center; 179 | color: gray; 180 | border-top: 1px solid #DDDDDD; 181 | padding-top: 10px; 182 | } 183 | 184 | footer a { 185 | color: gray !important; 186 | font-weight: bold; 187 | } 188 | 189 | footer a:hover { 190 | color: gray; 191 | } 192 | 193 | .page-header { 194 | border-bottom: none; 195 | padding-bottom: 0px; 196 | margin: 0; 197 | } 198 | 199 | /* custom general page styles */ 200 | .hero-unit h1, .hero-unit h2 { 201 | color: #A30000; 202 | } 203 | 204 | body a { 205 | color: #A30000; 206 | } 207 | 208 | body a:hover { 209 | color: #c20000; 210 | } 211 | 212 | .request-info { 213 | clear:both; 214 | } 215 | 216 | .horizontal-checkbox label { 217 | padding-top: 0; 218 | } 219 | 220 | .horizontal-checkbox label { 221 | padding-top: 0 !important; 222 | } 223 | 224 | .horizontal-checkbox input { 225 | float: left; 226 | width: 20px; 227 | margin-top: 3px; 228 | } 229 | 230 | .modal-footer form { 231 | margin-left: 5px; 232 | margin-right: 5px; 233 | } 234 | -------------------------------------------------------------------------------- /staticfiles/rest_framework/css/default.css: -------------------------------------------------------------------------------- 1 | /* The navbar is fixed at >= 980px wide, so add padding to the body to prevent 2 | content running up underneath it. */ 3 | 4 | h1 { 5 | font-weight: 300; 6 | } 7 | 8 | h2, h3 { 9 | font-weight: 300; 10 | } 11 | 12 | .resource-description, .response-info { 13 | margin-bottom: 2em; 14 | } 15 | 16 | .version:before { 17 | content: "v"; 18 | opacity: 0.6; 19 | padding-right: 0.25em; 20 | } 21 | 22 | .version { 23 | font-size: 70%; 24 | } 25 | 26 | .format-option { 27 | font-family: Menlo, Consolas, "Andale Mono", "Lucida Console", monospace; 28 | } 29 | 30 | .button-form { 31 | float: right; 32 | margin-right: 1em; 33 | } 34 | 35 | td.nested { 36 | padding: 0 !important; 37 | } 38 | 39 | td.nested > table { 40 | margin: 0; 41 | } 42 | 43 | form select, form input:not([type=checkbox]), form textarea { 44 | width: 90%; 45 | } 46 | 47 | form select[multiple] { 48 | height: 150px; 49 | } 50 | 51 | /* To allow tooltips to work on disabled elements */ 52 | .disabled-tooltip-shield { 53 | position: absolute; 54 | top: 0; 55 | right: 0; 56 | bottom: 0; 57 | left: 0; 58 | } 59 | 60 | .errorlist { 61 | margin-top: 0.5em; 62 | } 63 | 64 | pre { 65 | overflow: auto; 66 | word-wrap: normal; 67 | white-space: pre; 68 | font-size: 12px; 69 | } 70 | 71 | .page-header { 72 | border-bottom: none; 73 | padding-bottom: 0px; 74 | } 75 | 76 | #filtersModal form input[type=submit] { 77 | width: auto; 78 | } 79 | 80 | #filtersModal .modal-body h2 { 81 | margin-top: 0 82 | } 83 | -------------------------------------------------------------------------------- /staticfiles/rest_framework/css/prettify.css: -------------------------------------------------------------------------------- 1 | .com { color: #93a1a1; } 2 | .lit { color: #195f91; } 3 | .pun, .opn, .clo { color: #93a1a1; } 4 | .fun { color: #dc322f; } 5 | .str, .atv { color: #D14; } 6 | .kwd, .prettyprint .tag { color: #1e347b; } 7 | .typ, .atn, .dec, .var { color: teal; } 8 | .pln { color: #48484c; } 9 | 10 | .prettyprint { 11 | padding: 8px; 12 | background-color: #f7f7f9; 13 | border: 1px solid #e1e1e8; 14 | } 15 | .prettyprint.linenums { 16 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 17 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 18 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 19 | } 20 | 21 | /* Specify class=linenums on a pre to get line numbering */ 22 | ol.linenums { 23 | margin: 0 0 0 33px; /* IE indents via margin-left */ 24 | } 25 | ol.linenums li { 26 | padding-left: 12px; 27 | color: #bebec5; 28 | line-height: 20px; 29 | text-shadow: 0 1px 0 #fff; 30 | } -------------------------------------------------------------------------------- /staticfiles/rest_framework/docs/css/base.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | font-size: 45px; 3 | } 4 | 5 | .intro-code { 6 | margin-top: 20px; 7 | } 8 | 9 | pre.highlight code * { 10 | white-space: nowrap; /* this sets all children inside to nowrap */ 11 | } 12 | 13 | pre.highlight { 14 | overflow-x: auto; /* this sets the scrolling in x */ 15 | } 16 | 17 | pre.highlight code { 18 | white-space: pre; /* forces to respect
 formatting */
 19 | }
 20 | 
 21 | .main-container {
 22 |   padding-left: 30px;
 23 |   padding-right: 30px;
 24 | }
 25 | 
 26 | .btn:focus,
 27 | .btn:focus:active {
 28 |   outline: none;
 29 | }
 30 | 
 31 | .sidebar {
 32 |   overflow: auto;
 33 |   font-family: verdana, sans-serif;
 34 |   font-size: 12px;
 35 |   font-weight: 200;
 36 |   background-color: #2e353d;
 37 |   position: fixed;
 38 |   top: 0px;
 39 |   width: 225px;
 40 |   height: 100%;
 41 |   color: #FFF;
 42 | }
 43 | 
 44 | .sidebar .brand {
 45 |     background-color: #23282e;
 46 |     display: block;
 47 |     text-align: center;
 48 |     padding: 25px 0;
 49 |     margin-top: 0;
 50 |     margin-bottom: 0;
 51 | }
 52 | 
 53 | .sidebar .brand a {
 54 |     color: #FFF;
 55 | }
 56 | 
 57 | .sidebar .brand a:hover,
 58 | .sidebar .brand a:active,
 59 | .sidebar .brand a:focus {
 60 |   text-decoration: none;
 61 | }
 62 | 
 63 | .sidebar .toggle-btn {
 64 |   display: none;
 65 | }
 66 | 
 67 | .sidebar .menu-list {
 68 |   width: inherit;
 69 | }
 70 | 
 71 | .sidebar .menu-list ul,
 72 | .sidebar .menu-list li {
 73 |   background: #2e353d;
 74 |   list-style: none;
 75 |   padding: 0px;
 76 |   margin: 0px;
 77 |   line-height: 35px;
 78 |   cursor: pointer;
 79 | }
 80 | 
 81 | .sidebar .menu-list ul :not(collapsed) .arrow:before,
 82 | .sidebar .menu-list li :not(collapsed) .arrow:before {
 83 |   font-family: FontAwesome;
 84 |   content: "\f078";
 85 |   display: inline-block;
 86 |   padding-left: 10px;
 87 |   padding-right: 10px;
 88 |   vertical-align: middle;
 89 |   float: right;
 90 | }
 91 | 
 92 | .sidebar .menu-list ul .active,
 93 | .sidebar .menu-list li .active {
 94 |   border-left: 3px solid #d19b3d;
 95 |   background-color: #4f5b69;
 96 | }
 97 | 
 98 | .sidebar .menu-list ul .sub-menu li.active,
 99 | .sidebar .menu-list li .sub-menu li.active {
100 |   color: #d19b3d;
101 | }
102 | 
103 | .sidebar .menu-list ul .sub-menu li.active a,
104 | .sidebar .menu-list li .sub-menu li.active a {
105 |   color: #d19b3d;
106 | }
107 | 
108 | .sidebar .menu-list ul .sub-menu li,
109 | .sidebar .menu-list li .sub-menu li {
110 |   background-color: #181c20;
111 |   border: none;
112 |   border-bottom: 1px solid #23282e;
113 |   margin-left: 0px;
114 |   line-height: 1.4;
115 |   padding-top: 10px;
116 |   padding-bottom: 10px;
117 |   padding-right: 10px;
118 |   padding-left: 25px;
119 | }
120 | 
121 | .sidebar .menu-list ul .sub-menu li:hover,
122 | .sidebar .menu-list li .sub-menu li:hover {
123 |   background-color: #020203;
124 | }
125 | 
126 | 
127 | .sidebar .menu-list ul .sub-menu li a,
128 | .sidebar .menu-list li .sub-menu li a {
129 |   display: block;
130 | }
131 | 
132 | .sidebar .menu-list ul .sub-menu li a:before,
133 | .sidebar .menu-list li .sub-menu li a:before {
134 |   font-family: FontAwesome;
135 |   font-size: 14px;
136 |   font-weight: bold;
137 |   content: "\f105";
138 |   display: inline;
139 |   vertical-align: middle;
140 |   padding-left: 0;
141 |   padding-right: 7px;
142 |   margin-left: -12px;
143 | }
144 | 
145 | .sidebar .menu-list li {
146 |   padding-left: 0px;
147 |   border-left: 3px solid #2e353d;
148 |   border-bottom: 1px solid #23282e;
149 | }
150 | 
151 | .sidebar .menu-list li a {
152 |   text-decoration: none;
153 |   color: white;
154 | }
155 | 
156 | .sidebar .menu-list li a i {
157 |   padding-left: 10px;
158 |   width: 20px;
159 |   padding-right: 20px;
160 | }
161 | 
162 | .sidebar .menu-list li:hover {
163 |   border-left: 3px solid #d19b3d;
164 |   background-color: #4f5b69;
165 |   -webkit-transition: all 1s ease;
166 |   -moz-transition: all 1s ease;
167 |   -o-transition: all 1s ease;
168 |   -ms-transition: all 1s ease;
169 |   transition: all 1s ease;
170 | }
171 | 
172 | .sidebar #menu-content {
173 |   padding-bottom: 70px;
174 | }
175 | 
176 | body {
177 |   margin: 0px;
178 |   padding: 0px;
179 | }
180 | 
181 | .coredocs-section-title {
182 |     margin-top: 20px;
183 |     padding-bottom: 10px;
184 |     border-bottom: 1px solid lightgrey;
185 | }
186 | 
187 | .coredocs-link-title a,
188 | .coredocs-section-title a {
189 |   display: none;
190 | }
191 | 
192 | .coredocs-link-title a,
193 | .coredocs-section-title a {
194 |   text-decoration: none;
195 | }
196 | 
197 | .coredocs-link-title:hover a,
198 | .coredocs-section-title:hover a {
199 |   display: inline;
200 |   font-size: 20px;
201 | }
202 | 
203 | .coredocs-section-title:last-child {
204 |     margin-top: 0;
205 | }
206 | 
207 | 
208 | /* @group Language Switcher */
209 | 
210 | .sidebar .menu-list.menu-list-bottom {
211 |     margin-bottom: 0;
212 |     position: fixed;
213 |     width: inherit;
214 |     bottom: 0;
215 |     left: 0;
216 |     right: 0;
217 |     border-top: 1px solid #23282e;
218 | }
219 | 
220 | .sidebar .menu-list-bottom li span {
221 |   float: right;
222 |   margin-right: 20px;
223 |   color: #d19b3d;
224 | }
225 | 
226 | /* @end Language Switcher */
227 | 
228 | 
229 | /* @group Docs Content */
230 | 
231 | .docs-content .meta .label {
232 |     vertical-align: middle;
233 |     font-size: 14px;
234 |     font-weight: normal;
235 | }
236 | 
237 | .docs-content .meta code {
238 |     vertical-align: middle;
239 |     padding: .2em .6em .3em;
240 |     font-size: 14px;
241 | }
242 | 
243 | .docs-content .btn {
244 |   font-size: inherit;
245 | }
246 | 
247 | .code-samples pre {
248 |   margin-top: 20px;
249 | }
250 | 
251 | /* @end Docs Content */
252 | 
253 | 
254 | @media (max-width: 767px) {
255 |   .main-container {
256 |     padding-left: 15px;
257 |     padding-right: 15px;
258 |   }
259 | 
260 |   .sidebar {
261 |     position: relative;
262 |     width: 100%;
263 |     margin-bottom: 10px;
264 |     overflow: visible;
265 |   }
266 | 
267 |   .sidebar .toggle-btn {
268 |     display: block;
269 |     cursor: pointer;
270 |     position: absolute;
271 |     right: 10px;
272 |     top: 10px;
273 |     z-index: 10 !important;
274 |     padding: 3px;
275 |     width: 40px;
276 |     text-align: center;
277 |   }
278 | 
279 |   .sidebar .menu-list.menu-list-bottom {
280 |     position: static;
281 |   }
282 | 
283 |   .sidebar .brand {
284 |     margin-top: 0;
285 |     margin-bottom: 0;
286 | 
287 |     text-align: left !important;
288 |     font-size: 22px;
289 |     padding: 0;
290 |     padding-left: 20px;
291 |     line-height: 50px !important;
292 |   }
293 | }
294 | 
295 | @media (min-width: 767px) {
296 |   .sidebar .menu-list .menu-content {
297 |     display: block;
298 |   }
299 |   #main {
300 |     width:calc(100% - 225px);
301 |     float: right;
302 |   }
303 | }
304 | 
305 | @media (min-width: 992px) {
306 |   .modal-lg {
307 |       width: 980px;
308 |   }
309 | }
310 | 
311 | .api-modal .modal-title .fa {
312 |   color: #93c54b;
313 | }
314 | 
315 | .api-modal .modal-body .request-awaiting {
316 |   padding: 35px 10px;
317 |   color: #7F8177;
318 |   text-align: center;
319 | }
320 | 
321 | .api-modal .modal-body .meta {
322 |   margin-bottom: 20px;
323 | }
324 | 
325 | .api-modal .modal-body .meta .label {
326 |     vertical-align: middle;
327 |     font-size: 14px;
328 |     font-weight: normal;
329 | }
330 | 
331 | .api-modal .modal-body .meta code {
332 |     vertical-align: middle;
333 |     padding: .2em .6em .3em;
334 |     font-size: 14px;
335 | }
336 | 
337 | .api-modal .modal-content .toggle-view {
338 |   text-align: right;
339 |   float: right;
340 | }
341 | 
342 | .api-modal .modal-content .response .well {
343 |   margin: 0;
344 |   max-height: 550px;
345 | }
346 | 
347 | .highlight {
348 |     background-color: #f7f7f9
349 | }
350 | 
351 | .checkbox label.control-label {
352 |     font-weight: bold
353 | }
354 | 
355 | @media (min-width: 768px) {
356 |     .navbar-nav.navbar-right:last-child {
357 |         margin-right: 0 !important;
358 |     }
359 | }
360 | 


--------------------------------------------------------------------------------
/staticfiles/rest_framework/docs/css/highlight.css:
--------------------------------------------------------------------------------
  1 | /*
  2 | This is the GitHub theme for highlight.js
  3 | 
  4 | github.com style (c) Vasily Polovnyov 
  5 | 
  6 | */
  7 | 
  8 | .hljs {
  9 |   display: block;
 10 |   overflow-x: auto;
 11 |   padding: 0.5em;
 12 |   color: #333;
 13 |   -webkit-text-size-adjust: none;
 14 | }
 15 | 
 16 | .hljs-comment,
 17 | .diff .hljs-header,
 18 | .hljs-javadoc {
 19 |   color: #998;
 20 |   font-style: italic;
 21 | }
 22 | 
 23 | .hljs-keyword,
 24 | .css .rule .hljs-keyword,
 25 | .hljs-winutils,
 26 | .nginx .hljs-title,
 27 | .hljs-subst,
 28 | .hljs-request,
 29 | .hljs-status {
 30 |   color: #333;
 31 |   font-weight: bold;
 32 | }
 33 | 
 34 | .hljs-number,
 35 | .hljs-hexcolor,
 36 | .ruby .hljs-constant {
 37 |   color: #008080;
 38 | }
 39 | 
 40 | .hljs-string,
 41 | .hljs-tag .hljs-value,
 42 | .hljs-phpdoc,
 43 | .hljs-dartdoc,
 44 | .tex .hljs-formula {
 45 |   color: #d14;
 46 | }
 47 | 
 48 | .hljs-title,
 49 | .hljs-id,
 50 | .scss .hljs-preprocessor {
 51 |   color: #900;
 52 |   font-weight: bold;
 53 | }
 54 | 
 55 | .hljs-list .hljs-keyword,
 56 | .hljs-subst {
 57 |   font-weight: normal;
 58 | }
 59 | 
 60 | .hljs-class .hljs-title,
 61 | .hljs-type,
 62 | .vhdl .hljs-literal,
 63 | .tex .hljs-command {
 64 |   color: #458;
 65 |   font-weight: bold;
 66 | }
 67 | 
 68 | .hljs-tag,
 69 | .hljs-tag .hljs-title,
 70 | .hljs-rule .hljs-property,
 71 | .django .hljs-tag .hljs-keyword {
 72 |   color: #000080;
 73 |   font-weight: normal;
 74 | }
 75 | 
 76 | .hljs-attribute,
 77 | .hljs-variable,
 78 | .lisp .hljs-body,
 79 | .hljs-name {
 80 |   color: #008080;
 81 | }
 82 | 
 83 | .hljs-regexp {
 84 |   color: #009926;
 85 | }
 86 | 
 87 | .hljs-symbol,
 88 | .ruby .hljs-symbol .hljs-string,
 89 | .lisp .hljs-keyword,
 90 | .clojure .hljs-keyword,
 91 | .scheme .hljs-keyword,
 92 | .tex .hljs-special,
 93 | .hljs-prompt {
 94 |   color: #990073;
 95 | }
 96 | 
 97 | .hljs-built_in {
 98 |   color: #0086b3;
 99 | }
100 | 
101 | .hljs-preprocessor,
102 | .hljs-pragma,
103 | .hljs-pi,
104 | .hljs-doctype,
105 | .hljs-shebang,
106 | .hljs-cdata {
107 |   color: #999;
108 |   font-weight: bold;
109 | }
110 | 
111 | .hljs-deletion {
112 |   background: #fdd;
113 | }
114 | 
115 | .hljs-addition {
116 |   background: #dfd;
117 | }
118 | 
119 | .diff .hljs-change {
120 |   background: #0086b3;
121 | }
122 | 
123 | .hljs-chunk {
124 |   color: #aaa;
125 | }
126 | 


--------------------------------------------------------------------------------
/staticfiles/rest_framework/docs/css/jquery.json-view.min.css:
--------------------------------------------------------------------------------
 1 | .json-view{position:relative}
 2 | .json-view .collapser{width:20px;height:18px;display:block;position:absolute;left:-1.7em;top:-.2em;z-index:5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYGBgOADE%2F3Hgw0DM4IRHgSsDFOzFInmMAQnY49ONzZRjDFiADT7dMLALiE8y4AGW6LoBAgwAuIkf%2F%2FB7O9sAAAAASUVORK5CYII%3D);background-repeat:no-repeat;background-position:center center;opacity:.5;cursor:pointer}
 3 | .json-view .collapsed{-ms-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-khtml-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}
 4 | .json-view .bl{display:block;padding-left:20px;margin-left:-20px;position:relative}
 5 | .json-view{font-family:monospace}
 6 | .json-view ul{list-style-type:none;padding-left:2em;border-left:1px dotted;margin:.3em}
 7 | .json-view ul li{position:relative}
 8 | .json-view .comments,.json-view .dots{display:none;-moz-user-select:none;-ms-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}
 9 | .json-view .comments{padding-left:.8em;font-style:italic;color:#888}
10 | .json-view .bool,.json-view .null,.json-view .num,.json-view .undef{font-weight:700;color:#1A01CC}
11 | .json-view .str{color:#800}


--------------------------------------------------------------------------------
/staticfiles/rest_framework/docs/img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/staticfiles/rest_framework/docs/img/favicon.ico


--------------------------------------------------------------------------------
/staticfiles/rest_framework/docs/img/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rajani103/django-notes-app/da41dd905e3d868fd1ff19412fd747ce9894c30c/staticfiles/rest_framework/docs/img/grid.png


--------------------------------------------------------------------------------
/staticfiles/rest_framework/docs/js/jquery.json-view.min.js:
--------------------------------------------------------------------------------
1 | /**
2 |  * jquery.json-view - jQuery collapsible JSON plugin
3 |  * @version v1.0.0
4 |  * @link http://github.com/bazh/jquery.json-view
5 |  * @license MIT
6 |  */
7 | !function(e){"use strict";var n=function(n){var a=e("",{"class":"collapser",on:{click:function(){var n=e(this);n.toggleClass("collapsed");var a=n.parent().children(".block"),p=a.children("ul");n.hasClass("collapsed")?(p.hide(),a.children(".dots, .comments").show()):(p.show(),a.children(".dots, .comments").hide())}}});return n&&a.addClass("collapsed"),a},a=function(a,p){var t=e.extend({},{nl2br:!0},p),r=function(e){return e.toString()?e.toString().replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},s=function(n,a){return e("",{"class":a,html:r(n)})},l=function(a,p){switch(e.type(a)){case"object":p||(p=0);var c=e("",{"class":"block"}),d=Object.keys(a).length;if(!d)return c.append(s("{","b")).append(" ").append(s("}","b"));c.append(s("{","b"));var i=e("